Каталог решений - Программное заполнение вариантов обеспечения (отгрузка) в документе Заказ клиента на сервере

Программное заполнение вариантов обеспечения (отгрузка) в документе Заказ клиента на сервере

Программное заполнение вариантов обеспечения (отгрузка) в документе Заказ клиента на сервере

В наличии

В работе часто встает задача автоматического заполнения вариантов обеспечения заказов в соответствии с выбранными вариантами. Например, то, что есть на остатках, отгрузить, то, чего нет, резервировать по мере поступления. Как просят пользователи — «чтобы заказ сам отгружался», например, по расписанию, или сразу при создании или проведении.

Категория:

Описание

Процедура полностью для сервера, при этом повторяет поведение такое же, как в форме самого заказа — автоматически подбирает доступное обеспечение из заданных, разбивает строки заказа, при необходимости (когда часть товара есть на складе и отгружается, а части нет и она резервируется при поступлении, или просто обеспечивается (ничего не происходит)). Код можно использовать в модуле объекта или в общем модуле.

Перечень вариантов обеспечения можно менять в массиве под нужные. Порядок имеет значение — именно в этом порядке 1С будет подбирать доступный вариант обеспечения.

Уже давно сделал шпаргалку. Код протестирован на УТ 11.4.13.57:

&НаСервере
Процедура ЗаполнитьОбеспечениеОтгрузить(ЗаказСсылка)

	Заказ = ЗаказСсылка.ПолучитьОбъект();

	ИндексыСтрок = Новый Массив;
	Для Каждого Строка Из Заказ.Товары Цикл
		
		ИндексыСтрок.Добавить(Заказ.Товары.Индекс(Строка));
	КонецЦикла;
	
	ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Заказ, Документы.ЗаказКлиента));
	
	Пути = ОбеспечениеСервер.ПутиКДаннымПоУмолчанию();
	ПутиКДанным = Новый Структура(Пути);
	
	ПутиКДанным = Новый Соответствие; //Описание особенностей формы
	ПутиКДанным.Вставить("ДатаОтгрузкиРабот", "ДатаОтгрузки"); // дату отгрузки работ необходимо брать из поля "Дата отгрузки".
	
	ПараметрыЗаказа = Новый Структура;
	ПараметрыЗаказа.Вставить("ИмяТабличнойЧасти", 	"Товары");
	ПараметрыЗаказа.Вставить("СтатусКВыполнению", 	Истина);
	ПараметрыЗаказа.Вставить("ГруппаСкладов", 		Заказ.Склад);
	ПараметрыЗаказа.Вставить("МенеджерРегистра", 	РегистрыНакопления.ЗаказыКлиентов);
	ПараметрыЗаказа.Вставить("ПутиКДанным", 		ПутиКДанным);
	
	ПереченьВариантов = Новый Массив;
	ПереченьВариантов.Добавить(Перечисления.ВариантыОбеспечения.Отгрузить);
	ПереченьВариантов.Добавить(Перечисления.ВариантыОбеспечения.ОтгрузитьОбособленно);
	ПереченьВариантов.Добавить(Перечисления.ВариантыОбеспечения.Требуется);
	
	Таблица = ОбеспечениеСервер.ТаблицаЗаполнениеОбеспеченияДокумента(
		Заказ,
		ПереченьВариантов,
		ПараметрыЗаказа,
		ИндексыСтрок);
	
	// Перенос результатов в документ.
	ТекстОповещения = Документы.ЗаказКлиента.ЗаполнитьВариантОбеспечения(
		Заказ, Неопределено, "ИндексыСтрок", Таблица, ПараметрыУказанияСерий, Неопределено);

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

 

has been added to your cart:
Оформление заказа