Выполнить клиентский метод обработки. Выполняет клиентский метод обработки.
// Выполняет клиентский метод обработки.
Процедура ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, Форма, ОбъектыНазначения) Экспорт
ПоказатьОповещениеПриВыполненииКоманды(ВыполняемаяКоманда);
ПараметрыОбработки = Новый Структура("ИдентификаторКоманды, ДополнительнаяОбработкаСсылка, ИмяФормы");
ПараметрыОбработки.ИдентификаторКоманды = ВыполняемаяКоманда.Идентификатор;
ПараметрыОбработки.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.Ссылка;
ПараметрыОбработки.ИмяФормы = ?(Форма = Неопределено, Неопределено, Форма.ИмяФормы);;
Если ТипЗнч(ОбъектыНазначения) = Тип("Массив") Тогда
ПараметрыОбработки.Вставить("ОбъектыНазначения", ОбъектыНазначения);
КонецЕсли;
#Если ТолстыйКлиентОбычноеПриложение Тогда
ВнешняяОбработка = ДополнительныеОтчетыИОбработкиВызовСервера.ОбъектВнешнейОбработки(ВыполняемаяКоманда.Ссылка);
ФормаОбработки = ВнешняяОбработка.ПолучитьФорму(, Форма);
Если ФормаОбработки = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для отчета или обработки ""%1"" не назначена основная форма,
|или основная форма не предназначена для запуска в обычном приложении.
|Команда ""%2"" не может быть выполнена.'"),
Строка(ВыполняемаяКоманда.Ссылка),
ВыполняемаяКоманда.Представление);
КонецЕсли;
#Иначе
ИмяОбработки = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВыполняемаяКоманда.Ссылка);
Если ВыполняемаяКоманда.ЭтоОтчет Тогда
ФормаОбработки = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", ПараметрыОбработки, Форма);
Иначе
ФормаОбработки = ПолучитьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОбработки, Форма);
КонецЕсли;
#КонецЕсли
Если ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка")
Или ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет") Тогда
ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор);
ИначеЕсли ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.СозданиеСвязанныхОбъектов") Тогда
СозданныеОбъекты = Новый Массив;
ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения, СозданныеОбъекты);
ТипыСозданныхОбъектов = Новый Массив;
Для Каждого СозданныйОбъект Из СозданныеОбъекты Цикл
Тип = ТипЗнч(СозданныйОбъект);
Если ТипыСозданныхОбъектов.Найти(Тип) = Неопределено Тогда
ТипыСозданныхОбъектов.Добавить(Тип);
КонецЕсли;
КонецЦикла;
Для Каждого Тип Из ТипыСозданныхОбъектов Цикл
ОповеститьОбИзменении(Тип);
КонецЦикла;
ИначеЕсли ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма") Тогда
ФормаОбработки.Печать(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);
ИначеЕсли ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта") Тогда
ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);
ТипыИзмененныхОбъектов = Новый Массив;
Для Каждого ИзмененныйОбъект Из ОбъектыНазначения Цикл
Тип = ТипЗнч(ИзмененныйОбъект);
Если ТипыИзмененныхОбъектов.Найти(Тип) = Неопределено Тогда
ТипыИзмененныхОбъектов.Добавить(Тип);
КонецЕсли;
КонецЦикла;
Для Каждого Тип Из ТипыИзмененныхОбъектов Цикл
ОповеститьОбИзменении(Тип);
КонецЦикла;
ИначеЕсли ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.Отчет") Тогда
ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения);
КонецЕсли;
ФормаОбработки = Неопределено;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ВыполнитьМетодКриптосервиса (БСП)
ВыполнитьМетодКонфигурации (БСП)
ТипКомандыВызовКлиентскогоМетода (БСП)
ОбработкаПолученияПредставленияБизнесПроцесса (БСП)
ПередНачаломРаботыСистемы (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)