Заполняет в таблице товаров количество по остаткам склада отправителя
Модуль обработки
Функция СведенияОВнешнейОбработке() Экспорт
Назначения = Новый Массив ;
Назначения.Добавить("Документ.ПеремещениеТоваров");
ПараметрыРегистрации = Новый Структура ;
ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Назначение", Назначения);
ПараметрыРегистрации.Вставить("Наименование", "Заполнить по остаткам");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка табличной части");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
Команды = Новый ТаблицаЗначений ;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")) ;
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")) ;
НоваяКоманда = Команды.Добавить() ;
НоваяКоманда.Представление = "Заполнить по остаткам";
НоваяКоманда.Идентификатор = "ЗаполнитьДокумент";
НоваяКоманда.Использование = "ОткрытиеФормы"; //"ВызовКлиентскогоМетода"
НоваяКоманда.ПоказыватьОповещение = Ложь;
НоваяКоманда.Модификатор = "";
ПараметрыРегистрации.Вставить("Команды",Команды) ;
Возврат ПараметрыРегистрации;
КонецФункции
Модуль формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Отказ = Истина;
Для Каждого Стр Из ВладелецФормы.Объект.Товары Цикл ЗаполнитьЗначенияСвойств(Объект.Товары.Добавить(), Стр);
КонецЦикла;
ПриОткрытииНаСервере(ВладелецФормы.Объект.СкладОтправитель);
Для Каждого Стр Из Объект.Товары Цикл
Парам = Новый Структура;
Парам.Вставить("Номенклатура", Стр.Номенклатура);
Парам.Вставить("Характеристика", Стр.Характеристика);
Строки = ВладелецФормы.Объект.Товары.НайтиСтроки(Парам);
СтрТовар = Строки[0];
СтрТовар.Количество = Стр.Количество;
СтрТовар.КоличествоУпаковок = Стр.Количество;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПриОткрытииНаСервере(Знач СкладОтправитель)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Товары", Объект.Товары.Выгрузить());
Запрос.УстановитьПараметр("Склад", СкладОтправитель);
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Характеристика
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Характеристика,
| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Количество
|ИЗ
| Товары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
| ПО Товары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
| И Товары.Характеристика = ТоварыНаСкладахОстатки.Характеристика";
Выборка = Запрос.Выполнить().Выгрузить();
Объект.Товары.Очистить();
Объект.Товары.Загрузить(Выборка);
КонецПроцедуры
