Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 03:43

Вызов команды и обработка формы программно

Автор Codenewman, 17 авг 2015, 10:02

0 Пользователей и 1 гость просматривают эту тему.

Codenewman

Доброго времени суток друзья!

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



Суть сводится к ОбработкаВыбора:


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

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

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

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

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

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


Функция ЗаполнитьОбеспечениеВУстановленномПорядке(ВыбранноеЗначение) работает с элементами формы документа на сервере. Но так как перекинуть с клиента на сервер форму нельзя, то думал, что можно получить форму документа и вызвать процедуру ОбработкаВыбора:


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



Но выпадает на ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ЗаказКлиента")) пишет неверный тип параметра.
Вопрос: как вызвать ОбработкаВыбора у не открытого документа?

vitasw

По-моему вы сейчас занимаетесь глобальным извратом.
Гораздо больше гемороя заполнить уже открытый документ, чем работать с объектами.
Если совсем уж лень писать свое, - выдерните запрос из типовой и выполняйте его для каждого документа выборки (не могу поверить, что советую писать запрос в цикле...:()

Codenewman

задачу закрыта, сделал так, работает:


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

Форма.Элементы.Товары.ВыделенныеСтроки.Добавить(0);
Форма.ОбработкаВыбора(ПереченьВариантов, Источник);
//Форма.Закрыть();

cska-fanat-kz

не совсем методически правильно...
но раз работает :zebzdr:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги: 8.3 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск