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