0
Morozov Roman
27.02.23
✎
10:43
|
Здравствуйте, кто знает как написать обработку по перемещению всего товара с одного склада на другой? Запрос, создание док, заполнение ТЧ все это сделал, есть лишь один нюанс, не знаю как обойти, в форме док перемещение, есть подбор по сериям, нажимаешь на него открывается окно там выходят доступные остатки по срокам и оттуда указываешь в документ сколько тебе надо, как можно прописать в коде механизм подбора или как правильно обойти этот момент? Вручную тысячи товаров перемещать не вариант, помогите пжлста!
Пока черновой код обработки:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура.Наименование КАК НоменклатураНаименование,
| ТоварыНаСкладахОстатки.Номенклатура.Код КАК НоменклатураКод,
| ТоварыНаСкладахОстатки.Номенклатура.ЕдиницаДляОтчетов КАК НоменклатураЕдиницаДляОтчетов,
| ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
| ТоварыНаСкладахОстатки.Серия КАК Серия,
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
| ТоварыНаСкладахОстатки.Номенклатура.ВидНоменклатуры КАК ВидНоменклатурыВЭлементе,
| ТоварыНаСкладахОстатки.Серия.ВидНоменклатуры КАК ВидНоменклатурыВСерии,
| ТоварыНаСкладахОстатки.Серия.ВидНоменклатуры.СкладскаяГруппа КАК СерияВидНоменклатурыСкладскаяГруппа
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Склад = &Склад
| И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоНаименованию("Основной склад"));
Запрос.УстановитьПараметр("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("00-00001362"));
ТЗОстатки = Запрос.Выполнить().Выгрузить();
ДокПеремещение = Документы.ПеремещениеТоваров.СоздатьДокумент();
ДокПеремещение.Дата = ТекущаяДата();
ДокПеремещение.СкладОтправитель = Справочники.Склады.НайтиПоНаименованию("Основной склад");
ДокПеремещение.СкладПолучатель = Справочники.Склады.НайтиПоНаименованию("Безорденый склад");
ДокПеремещение.Организация = Справочники.Организации.НайтиПоНаименованию("PRODMARKET.KZ");
ДокПеремещение.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.НеРазделенаПоЗаказамИНакладным;
ДокПеремещение.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Себестоимость");
ДокПеремещение.СпособДоставки = Перечисления.СпособыДоставки.Самовывоз;
ДокПеремещение.Ответственный = ПараметрыСеанса.ТекущийПользователь;
Индекс = 0;
Для каждого СтрокаТЗ из ТЗОстатки Цикл
НоваяСтрока = ДокПеремещение.Товары.Добавить();
НоваяСтрока.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(ТЗОстатки[Индекс].НоменклатураНаименование);
//ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(ТЗОстатки[Индекс].ВидНоменклатурыВЭлементе);
НоваяСтрока.Количество = ТЗОстатки[Индекс].ВНаличииОстаток;
НоваяСтрока.КоличествоУпаковок = ТЗОстатки[Индекс].ВНаличииОстаток;
Индекс = Индекс + 1;
КонецЦикла;
Попытка
ДокПеремещение.Записать();
Исключение
Сообщить(ОписаниеОшибки());
Отказ = Истина;
КонецПопытки;
|
|