Заполнение Перемещения по остаткам отправителя УТ 11

Заполняет в таблице товаров количество по остаткам склада отправителя

Модуль обработки

Функция СведенияОВнешнейОбработке() Экспорт

    Назначения = Новый Массив ;
    Назначения.Добавить("Документ.ПеремещениеТоваров");

    ПараметрыРегистрации = Новый Структура ;
    ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
    ПараметрыРегистрации.Вставить("Назначение", Назначения);
    ПараметрыРегистрации.Вставить("Наименование", "Заполнить по остаткам");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка табличной части");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);

    Команды = Новый ТаблицаЗначений ;
    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")) ;
    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")) ;
    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")) ;
    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")) ;
    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")) ;

    НоваяКоманда = Команды.Добавить() ;
    НоваяКоманда.Представление = "Заполнить по остаткам";
    НоваяКоманда.Идентификатор = "ЗаполнитьДокумент";
    НоваяКоманда.Использование = "ОткрытиеФормы"; //"ВызовКлиентскогоМетода"
    НоваяКоманда.ПоказыватьОповещение = Ложь;
    НоваяКоманда.Модификатор = "";

    ПараметрыРегистрации.Вставить("Команды",Команды) ;

    Возврат ПараметрыРегистрации;

КонецФункции

Модуль формы

&НаКлиенте
Процедура ПриОткрытии(Отказ)

    Отказ = Истина;

    Для Каждого Стр Из ВладелецФормы.Объект.Товары Цикл ЗаполнитьЗначенияСвойств(Объект.Товары.Добавить(), Стр);
    КонецЦикла;

    ПриОткрытииНаСервере(ВладелецФормы.Объект.СкладОтправитель);

    Для Каждого Стр Из Объект.Товары Цикл

        Парам = Новый Структура;
        Парам.Вставить("Номенклатура", Стр.Номенклатура);
        Парам.Вставить("Характеристика", Стр.Характеристика);

        Строки = ВладелецФормы.Объект.Товары.НайтиСтроки(Парам);
        СтрТовар = Строки[0];
        СтрТовар.Количество = Стр.Количество;
        СтрТовар.КоличествоУпаковок = Стр.Количество;

    КонецЦикла;

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

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

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

    Выборка = Запрос.Выполнить().Выгрузить();

    Объект.Товары.Очистить();
    Объект.Товары.Загрузить(Выборка);

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

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