Построчное редактирование документа установки цен УТ 11.5

1С не перестает нас удивлять резкими шараханьями в стороны, от которых пользователи «седеют».

Внезапно в УТ 11.5 убрали возможность вручную добавлять в документ установки цен характеристики. При выборе номенклатуры в документ добавляются сразу все характеристики, даже если их сотни и некоторые уже давно не продаются.

Слава богу, если документ создан программно, то УТ 11.5 не добавляет другие характеристики.

Но все же пользователям не удобно.

Пришлось опять засучить рукава и убрать все новые художества 1С в документе установки цен. Все расширения делаю в форму документа «Установка цен номенклатуры».

В УТ заблокировано удаление строки с характеристикой, но если разблокировать, можно удалять ненужные строки характеристик:


&НаКлиенте
&Вместо("ДеревоЦенПередУдалением")
Процедура дор_ДеревоЦенПередУдалением(Элемент, Отказ)
	
	//Для характеристик (индекс картинки 2) разрешаем удаление
	Если Элемент.ТекущиеДанные <> Неопределено
	И Элемент.ТекущиеДанные.ИндексКартинки = 2 Тогда
		Возврат;
	КонецЕсли;

	ПродолжитьВызов(Элемент, Отказ);
КонецПроцедуры

Для добавления характеристик пришлось добавить кнопку «Доб. хар-ку»:

&НаСервере
Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	ИмяКоманды = "дор_ДобавитьХарактеристику";
	КомандаФормы = ЭтаФорма.Команды.Добавить(ИмяКоманды);
	КомандаФормы.Действие = "дор_ДобавитьХарактеристику";
	КомандаФормы.Заголовок = "Доб. хар-ку";
	КомандаФормы.ИзменяетСохраняемыеДанные = Ложь;
	КомандаФормы.Отображение = ОтображениеКнопки.КартинкаИТекст;
	
	Привязка = Элементы.ГруппаДобавитьСтроки;
	НовыйЭлемент = ЭтаФорма.Элементы.Добавить("дор_ДобавитьХарактеристику", Тип("КнопкаФормы"), Привязка);
	НовыйЭлемент.ИмяКоманды = ИмяКоманды;
	
КонецПроцедуры

&НаКлиенте
Процедура дор_ДобавитьХарактеристику(Команда) Экспорт
	ТекущиеДанные = Элементы.ДеревоЦен.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ТекНоменклатура = ТекущиеДанные.Номенклатура;
	Если НЕ ЗначениеЗаполнено(ТекНоменклатура) Тогда
		Возврат;
	КонецЕсли;
	
	Если ТекущиеДанные.ИндексКартинки = 2 Тогда
		ТекРодитель = ТекущиеДанные.ПолучитьРодителя();
	Иначе
		ТекРодитель = ТекущиеДанные;
	КонецЕсли;
	
	ТекСтрока = ТекРодитель.ПолучитьЭлементы().Добавить();
	//Позиционируем на эту строку
	Элементы.ДеревоЦен.ТекущаяСтрока = ТекСтрока.ПолучитьИдентификатор();
	ТекСтрока.Номенклатура = ТекНоменклатура;
	Отбор = Новый Структура("Владелец", ТекНоменклатура);
	П = Новый Структура("Отбор", Отбор);
	ОО = Новый ОписаниеОповещения("дор_ХарактеристикаОбработкаВыбора", ЭтаФорма);
	ОткрытьФорму("Справочник.ХарактеристикиНоменклатуры.Форма.ФормаВыбора",П, Элементы.ДеревоЦен,,,,ОО,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	


КонецПроцедуры

Добавлять характеристику можно и тогда, когда текущая строка на номенклатуре (если вообще ни одной характеристики не добавлено) или когда текущая строка на характеристике.

Мне хотелось, чтобы при нажатии кнопки добавления характеристики сразу вызывалось окно выбора характеристики и при выборе она подставлялась в характеристику:

&НаКлиенте
Процедура дор_ХарактеристикаОбработкаВыбора(Результат, ДополнительныеПараметры) Экспорт
	Если ТипЗнч(Результат) = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
		ТекущиеДанные = Элементы.ДеревоЦен.ТекущиеДанные;
		Если ТекущиеДанные <> Неопределено Тогда
			ТекущиеДанные.Характеристика = Результат; 
			ТекущиеДанные.ИндексКартинки = 2;
			ТекущиеДанные.ХарактеристикиИспользуются = истина;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Выбирать характеристику в строке характеристики почему-то 1С не перекрыла, странная логика, можно выбрать две одинаковые характеристики, например.

В принципе, можно убрать заполнение всех характеристик при добавлении номенклатуры, но не стал делать. Все же там 5-12 характеристик, лишние можно удалить. Клиент чаще добавляет в программно созданные документы отдельные позиции.

Среда: 11.5.7.402 Объем: 2 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *