viskvortsov / 1C-developer

Репозиторий курса "Программист 1С"
Apache License 2.0
6 stars 5 forks source link

Код #147

Open viskvortsov opened 6 years ago

viskvortsov commented 6 years ago

Функция СведенияОВнешнейОбработке() Экспорт

ОбъектыНазначенияФормы = Новый Массив;
ОбъектыНазначенияФормы.Добавить("Документ.ЗаказКлиента");
ПараметрыРегистрации = ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы);
ПараметрыРегистрации.Вставить("Наименование", "Договор на поставку");
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ТаблицаКоманд = ПолучитьТаблицуКоманд();

ДобавитьКоманду(ТаблицаКоманд,
"Договор на поставку",
"ДоговорНаПоставку",
"ВызовСерверногоМетода",
Истина,
"ПечатьMXL");

ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;

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

Функция ПолучитьПараметрыРегистрации(ОбъектыНазначенияФормы = Неопределено, НаименованиеОбработки = "", Информация = "", Версия = "1.0")

Если ТипЗнч(ОбъектыНазначенияФормы) = Тип("Строка") Тогда
    ОбъектНазначенияФормы = ОбъектыНазначенияФормы;
    ОбъектыНазначенияФормы = Новый Массив;
    ОбъектыНазначенияФормы.Добавить(ОбъектНазначенияФормы);
КонецЕсли; 

ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Назначение", ОбъектыНазначенияФормы);

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

Если Не ЗначениеЗаполнено(Информация) Тогда
    Информация = ЭтотОбъект.Метаданные().Комментарий;
КонецЕсли; 
ПараметрыРегистрации.Вставить("Информация", Информация);

ПараметрыРегистрации.Вставить("Версия", Версия);

Возврат ПараметрыРегистрации;

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

Функция ПолучитьТаблицуКоманд()

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

Возврат Команды;

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

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ВызовСерверногоМетода", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

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

//

Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт

Если ТипЗнч(МассивОбъектовНазначения) = Тип("СписокЗначений") Тогда
    МассивОбъектовНазначения = МассивОбъектовНазначения.ВыгрузитьЗначения();
КонецЕсли;

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ДоговорНаПоставку") Тогда

    УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
    КоллекцияПечатныхФорм,
    "ДоговорНаПоставку",
    "Договор на поставку",
    СформироватьПечатнуюФормуДоговорНаПоставку(МассивОбъектовНазначения));

КонецЕсли;

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