Имя: Пароль:
1C
1С v8
Изменение ВариантаОбеспечения в строчке заказа клиента. УТ 3.1.1.122
0 Casper211
 
15.11.16
15:27
1С:Предприятие 8.3 (8.3.7.2008)
Создаем заказы клинта. Вариант обеспечения ("Действие") в строках в табличной части "К обеспечению".Теперь дополнительно выделим все строки заказа (Ctrl+A) и выполним команду над табличной частью «Заполнить обеспечение».Так как нам нужно зарезервировать имеющиеся остатки, зарезервировать ожидаемый товар и обеспечить товар, которого нет в наличии, то установим три флажка:
«Резервировать на складе»,
«Резервировать к дате отгрузки» и
«К обеспечению».
Нажмем кнопку Заполнить.
Скриншоти - http://xn----1-bedvffifm4g.xn--p1ai/ut11/65-cases/case71/
Программа немного изменит имеющиеся строки. Для товара, который есть в наличии, будет установлен вариант обеспечения «Резервировать на складе» и дата отгрузки как текущая. Ожидаемый товар останется без изменений с вариантом обеспечения «Резервировать к дате отгрузки» и датой отгрузки – дата ожидаемого поступления товара от поставщика.

А теперь мне необходимо сделать все то же самое, но с внешней обработки для нескольких документов программно.
Вот команда, которая выполняется при нажатии кнопки "ЗаполнитьОбеспечение"


#Область Обеспечение
&НаКлиенте
Процедура ЗаполнитьОбеспечение(Команда)

    ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения();

    Если ОбеспечениеКлиентСервер.ПроверитьЗаполнение(
        Объект, Объект.Товары, Элементы.Товары.ВыделенныеСтроки, ПараметрыПроверки, Неопределено, Объект.Склад) Тогда

        ПараметрыФормы = Новый Структура("Тип", ТипЗнч("Объект.Ссылка"));
        ОткрытьФорму("Перечисление.ВариантыОбеспечения.Форма.ИсполнениеЗаказа", ПараметрыФормы,
            ЭтаФорма, УникальныйИдентификатор);

    КонецЕсли;

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



Она вызывает "Перечисление.ВариантыОбеспечения.Форма.ИсполнениеЗаказа"
и после выбора Вариантов Обеспечения нажимаем "Выполнить" и выполняется вот такой код:


#Область КомандыФормы
&НаКлиенте
Процедура Заполнить(Команда)

    ПереченьВариантов = Новый Массив();
    Если Отгрузить Тогда
        

        Если Параметры.СписокВыбора = Неопределено
            Или Параметры.СписокВыбора.НайтиПоЗначению(
                ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить")) <> Неопределено Тогда

            ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Отгрузить"));

        КонецЕсли;

        Если Параметры.СписокВыбора = Неопределено
            Или Параметры.СписокВыбора.НайтиПоЗначению(
                ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ОтгрузитьОбособленно")) <> Неопределено Тогда

            ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ОтгрузитьОбособленно"));

        КонецЕсли;

    КонецЕсли;

    Если Резервировать Тогда
        ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.СоСклада"));
    КонецЕсли;

    Если РезервироватьКСроку Тогда
        ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ИзЗаказов"));
    КонецЕсли;

    Если Обособленно Тогда
        ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Обособленно"));
    КонецЕсли;

    Если Требуется Тогда
        ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.Требуется"));
    КонецЕсли;

    Если НеТребуется Тогда
        ПереченьВариантов.Добавить(ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.НеТребуется"));
    КонецЕсли;

    Если ПереченьВариантов.Количество() = 0 Тогда
        Текст = НСтр("ru='Для заполнения необходимо установить хотя бы одну отметку';uk='Для заповнення необхідно встановити хоча б одну позначку'");
        ПоказатьПредупреждение(, Текст);
    Иначе
        ОповеститьОВыборе(ПереченьВариантов);
    КонецЕсли;

КонецПроцедуры
#КонецОбласти


И она извещает кого об этом действии, но кто это и где оно находится я не знаю. В форме объекта, модуле объекта и менеджера нет обработчика оповещения для этого варианта. Я читал что где-то на форме с реквизитами присоединяют, но найти этого не могу.

Главная задача - перевыбор "ВариантаОбеспечения" в нескольких заказов
Кнопка "ЗаполнитьОбеспечение" - но с внешней обработки  для нескольких заказов. Возможно кто-то сталкивался с такой проблемой. Буду рад любимой помощи. СПАСИБО!
1 Casper211
 
15.11.16
16:20
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

    Если ИсточникВыбора.ИмяФормы = "Перечисление.ВариантыОбеспечения.Форма.ИсполнениеЗаказа" Тогда

        Детали = ЗаполнитьОбеспечениеВУстановленномПорядке(ВыбранноеЗначение);
        Если Детали.Ошибки <> Неопределено Тогда
            ОчиститьСообщения();
            ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Детали.Ошибки);
        КонецЕсли;
        ПоказатьОповещениеПользователя(ОбеспечениеКлиентСервер.ТекстЗаполнениеОбеспечения(), , Детали.Оповещение);

        СкидкиНаценкиКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
        НДСИсходящийКлиент.СброситьПроверитьФлагПерерасчетПроизведен(ЭтаФорма);