1C шаблоны и готовые решения

Октябрь 13, 2017

Шаблон внешней обработки для ЗУП 3.1 КОРП. Подключение внешней обработки в нетиповой документ конфигурации 1С ЗУП 3.1 КОРП.

Filed under: — admin @ 6:40 дп

Данный шаблон проверен на ЗУП 3.1. КОРП версия 3.1.3.253.
Создаем новую обработку. В модуле обработки добавляем ниже приведенные функции и процедуры:

// Функция СведенияОВнешнейОбработке создает и заполняет структуру с информацией о внешней обработке
// Возвращаемое значение:
//                 Структура, возвращаются ПараметрыРегистрации.
Функция СведенияОВнешнейОбработке() Экспорт
	
	Назначения = Новый Массив;
	//тип объектов для регистрации обработки
	Назначения.Добавить("Документ.ВашДокумент");
	
	ПараметрыРегистрации = Новый Структура;
	//Вид - Строковое представление из Перечисление.ВидыДополнительныхОтчетовИОбработок
	//ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов, ШаблонСообщения
	ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
	//Назначение - типы объектов метаданных (справочники/документы)
	ПараметрыРегистрации.Вставить("Назначение",Назначения);
	//Наименование обработки для заполнения поля в справочнике ДополнительныеОтчетыИОбработки
	ПараметрыРегистрации.Вставить("Наименование","Дополнительные обработки по заполнению документа");
	//Версия обработки
	ПараметрыРегистрации.Вставить("Версия","1.0");
	//Информация для заполнения поля в справочнике ДополнительныеОтчетыИОбработки
	ПараметрыРегистрации.Вставить("Информация","Дополнительные обработки по заполнению документа");
	//БезопасныйРежим для заполнения поля в справочнике ДополнительныеОтчетыИОбработки
	//В безопасном режиме:
	//игнорируется привилегированный режим;
	//запрещены внешние по отношению к платформе 1С:Предприятия действия: 
	//COM; загрузка внешних компонентов; 
	//запуск внешних приложений и команд операционной системы; 
	//доступ к файловой системе, кроме временных файлов; доступ к Интернету.
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
	
	Команды = СформироватьТаблицуКоманд();
	ДобавитьКоманду(Команды, 
	"Заполнить табличнную часть 'Операции'",
	"ЗаполнитьТабличннуюЧастьОперации",
	"ВызовКлиентскогоМетода", 
	Ложь, );
	
	ДобавитьКоманду(Команды, 
	"Заполнить табличнную часть 'Исполнители'",
	"ЗаполнитьТабличннуюЧастьИсполнители",
	"ВызовКлиентскогоМетода", 
	Ложь, );
	
	ПараметрыРегистрации.Вставить("Команды",Команды);
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

// Функция СформироватьТаблицуКоманд создает и возвращает таблицу команд внешней обоработки
// Возвращаемое значение:
//                 ТаблицаЗначений, возвращаются ТаблицаКоманд.
Функция СформироватьТаблицуКоманд()
	ТаблицаКоманд = Новый ТаблицаЗначений;
	//Представление - строковое описание обработки для пользователя в элементе справочника ДополнительныеОтчетыИОбработки 
	ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
	//Идентификатор - строковый идентификатор команды
	ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
	//Строковое представление из Перечисление.СпособыВызоваДополнительныхОбработок
	//ВызовКлиентскогоМетода, ВызовСерверногоМетода, ЗаполнениеФормы, ОткрытиеФормы, СценарийВБезопасномРежиме, ЗагрузкаДанныхИзФайла
	ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
	//Выводит оповещение перед запуском команды.
	ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	//Для печатных форм "ПечатьMXL"
	ТаблицаКоманд.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
	Возврат ТаблицаКоманд;
КонецФункции	

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

Далее добавляем новую форму с командой ‘ВыполнитьКоманду’ и добавляем в модуль формы следующий код:

// Процедура ВыполнитьКоманду выполняет команды внешней обработки на клиенте 
// с использованием вызова 'ВызовКлиентскогоМетода'
// Параметры:
//			ИдентификаторКоманды - строковый идентификатор команды
//			ОбъектыНазначенияМассив - массив ссылок на объекты(документы/справочники), к которым назначена внешняя обработка
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	
	Сообщить("Идет выполнение команды... " + ИдентификаторКоманды);
	
	Если ИдентификаторКоманды = "ЗаполнитьТабличннуюЧастьОперации" Тогда
		//Код по заполнению табличной части операции через ВладелецФормы.Объект.Операции 
		//или ПараметрыВызоваСервера.ОбъектыНазначения[0].Операции
	ИначеЕсли ИдентификаторКоманды = "ЗаполнитьТабличннуюЧастьИсполнители" Тогда
		//Код по заполнению табличной части исполнители через ВладелецФормы.Объект.Исполнители 
		//или ПараметрыВызоваСервера.ОбъектыНазначения[0].Исполнители
	КонецЕсли;		
			
КонецПроцедуры

После регистрации обработки в справочнике ‘ДополнительныеОтчетыИОбработки’
получаем следующий вид на форме документа:
Guid1C

Чтобы подключить заполнение из внешних обработок в нетиповой документ, необходимо сделать следующие модификации кода:
В модуле нетипового документа добавить следующие строки:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// Обработчик подсистемы "Дополнительные отчеты и обработки".
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);	
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

Далее в конфигурации, в определяемом типе ‘ОбъектСДополнительнымиКомандами’ необходимо включить в состав наш нетиповой документ.

Powered by WordPress

Яндекс.Метрика nikol_dn@list.ru