Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вызов команды и обработка формы программно
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
IvanovIvan
Доброго времени суток друзья!

Получил задачу написать внешнюю обработку, которая перебирает документы и выполняет команду над каждым из них. А именно команду как на скриншоте



Напомню что у нас клиент-сервер. В целом суть команды приведена ниже:

&НаСервере
Функция ЗаполнитьОбеспечениеВУстановленномПорядке(ПереченьВариантов) Экспорт

    //Описание особенностей формы - дату отгрузки работ необходимо брать из поля "Дата отгрузки".
    ПутиКДанным = Новый Соответствие();
    ПутиКДанным.Вставить("ДатаОтгрузкиРабот", "ДатаОтгрузки");

    ПараметрыЗаполнения = Новый Структура("СтатусКВыполнению, ГруппаСкладов, МенеджерРегистра",
        Объект.Статус <> Перечисления.СтатусыЗаказовКлиентов.НеСогласован, Объект.Склад, РегистрыНакопления.ЗаказыКлиентов);

    Таблица = ОбеспечениеСервер.ТаблицаЗаполнениеОбеспечения(
        Элементы.Товары.ВыделенныеСтроки,
        Объект,
        Объект.Товары,
        ПутиКДанным,
        ПереченьВариантов,
        ПараметрыЗаполнения);

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

    РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
    СтруктураИтогов = Новый Структура("РазличныеСклады, ЕстьИзЗаказов, ТолькоНеТребуется");
    ОбойтиТаблицуОбновитьЗависимыеРеквизиты(СтруктураИтогов);

    Возврат Новый Структура("Ошибки, Оповещение", Неопределено, ТекстОповещения);

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


Разумеется открывать каждый документ и выполнять команду не варик и передавать управляемую форму на сервер тоже нельзя.

Необходимо отработать команду, которая изменяет данные шапки и таб части. Но передавать на сервер управляемую формы нельзя. Как решить проблему?

Заранее спасибо!
Vofka
Нужно посмотреть зачем в определенные процедуры передается форма. После этого переделать их. Точнее написать свои аналогичные, которые бы работали не с формой.
IvanovIvan
Цитата(Vofka @ 17.08.15, 9:45) необходимо зарегистрироваться для просмотра ссылки
Нужно посмотреть зачем в определенные процедуры передается форма. После этого переделать их. Точнее написать свои аналогичные, которые бы работали не с формой.


Такая мысля есть, но там одна за одну цепляются и выстраивается огромное дерево. Думал может еще какие варианты есть.

А есть ли такой вариант. Я получаю форму документа по ссылке. И не открывая его вызываю

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

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

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

        СкидкиНаценкиКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);

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

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


вызываю ОбработкаВыбора программно передав параметры (ВыбранноеЗначение, ИсточникВыбора). Такое возможно? Правда не понимаю как вызывать эту процедуру из обработки


этот вариант не работает, жалуется на ДанныеФормыВЗначение (неверный тип параметра)
    _Объект = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ЗаказКлиента"));
    _Объект.ОбработкаВыбора(ПереченьВариантов, "Перечисление.ВариантыОбеспечения.Форма.ИсполнениеЗаказа");
Vofka
Теперь не понятно как между собой связаны функция ЗаполнитьОбеспечениеВУстановленномПорядке и процедура ОбработкаВыбора.

Цитата(IvanovIvan @ 17.08.15, 9:51) необходимо зарегистрироваться для просмотра ссылки
Такая мысля есть, но там одна за одну цепляются и выстраивается огромное дерево.

В процедурах, куда передается ЭтаФорма, именно ЭтаФорма передается куда-то дальше?

Цитата(IvanovIvan @ 17.08.15, 9:51) необходимо зарегистрироваться для просмотра ссылки
этот вариант не работает, жалуется на ДанныеФормыВЗначение (неверный тип параметра)

Что находися в ДанныеФормы? Скорее всего у вас там не то, что можно перевести в Объект. И _Объект.ОбработкаВыбора скорее всего не заработает. Зачем вы её вообще вызываете?
IvanovIvan
задачу закрыта, сделал так, работает:

    Форма = ПолучитьФорму("Документ.ЗаказКлиента.ФормаОбъекта", Новый Структура("Ключ", СсылкаНаДок));
    Форма.Открыть();
    
    Форма.Элементы.Товары.ВыделенныеСтроки.Добавить(0);    
    Форма.ОбработкаВыбора(ПереченьВариантов, Источник);
    //Форма.Закрыть();
IvanovIvan

тема закрыта


тема закрыта
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.