Упаковка по умолчанию в УТ 11.5

Клиент хотел простого — чтобы при добавлении товара подбиралась упаковка по умолчанию.

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

Но подставляется всегда единица штуки, т.е. по сути пустая единица:

Единицу приходится выбирать вручную. Лишняя работа для оператора.

В процедуре менеджера упаковок есть функция Справочники.УпаковкиЕдиницыИзмерения.ПолучитьДанныеВыбора(ПараметрыВыбораУпаковки):

Ориентировался на нее.

В итоге написал небольшой код. Клиент завел себе в номенклатуре доп. поле Б_СтандартнаяУпаковкаЕдиниц (сначала это был доп.реквизит), где хранит кратность упаковки.

Сделал расширение в ОбработкаТабличнойЧастиСервер:

&Вместо("ОбработатьСтрокуТЧ")
Процедура дор_ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения)
	ПродолжитьВызов(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
	Если СтруктураДействий.Свойство("ПроверитьЗаполнитьУпаковкуПоВладельцу")
		ИЛИ СтруктураДействий.Свойство("ПриИзмененииТипаНоменклатуры")
		Тогда
		Если Не ЗначениеЗаполнено(ТекущаяСтрока.Упаковка) Тогда   
			//Из номенклатура - модуль менеджера - ХарактеристикаИУпаковкаПринадлежатВладельцу
			Номенклатура = ТекущаяСтрока.Номенклатура;
			ПараметрыВыбораУпаковки = Новый Структура();
			ПараметрыВыбораУпаковки.Вставить("Номенклатура", Номенклатура);
			ДанныеВыбораУпаковок = Справочники.УпаковкиЕдиницыИзмерения.ПолучитьДанныеВыбора(ПараметрыВыбораУпаковки);
			
			Для Каждого ЭлементСпискаЗначений Из ДанныеВыбораУпаковок Цикл
				Если ТипЗнч(ЭлементСпискаЗначений.Значение) = Тип("Структура") 
					И ТипЗнч(ЭлементСпискаЗначений.Значение.Значение) = Тип("СправочникСсылка.УпаковкиЕдиницыИзмерения")
					И Номенклатура.Б_СтандартнаяУпаковкаЕдиниц <> 0
					И (ЭлементСпискаЗначений.Значение.Значение.Числитель = Номенклатура.Б_СтандартнаяУпаковкаЕдиниц 
					ИЛИ ЭлементСпискаЗначений.Значение.Значение.Вес = Номенклатура.Б_СтандартнаяУпаковкаЕдиниц) 
					Тогда
					ТекущаяСтрока.Упаковка = ЭлементСпискаЗначений.Значение.Значение;                                      
					//Пересчитываем количество в базовых единицах
					ТекущаяСтрока.Количество = ТекущаяСтрока.КоличествоУпаковок * Номенклатура.Б_СтандартнаяУпаковкаЕдиниц;
					Прервать;
				КонецЕсли;
			КонецЦикла;   
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Вот тут не знаю, может быть можно было как-то и без программирования решить проблему, все же это УТ, где должны быть широкие возможности выбора единиц, но пришлось запрограммировать.

Среда: УТ 11.5.20.75 Объем: 1.2 час

fixin

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

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

комментария 3

  1. rzd:

    В процедуре менеджера упаковок есть функция Справочники.УпаковкиЕдиницыИзмерения.ПолучитьДанныеВыбора

    Ты когда тыришь код, хоть проверяй иногда

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

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