Модуль внешней обработки:
Функция СформироватьПечатнуюФормуКО1(МассивОбъектов, ОбъектыПечати) Экспорт
ТабличныйДокумент = Новый ТабличныйДокумент();
СинонимДокумента = НСтр("ru='Приходный кассовый ордер'");
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриходныйКассовыйОрдер_ПФ_MXL_КО1";
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| Ссылка КАК Ссылка,
| КорреспондирующийСчет КАК КорреспондирующийСчет
|ИЗ
| КорСчета
|;
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПриходныйКассовыйОрдер.Номер КАК Номер,
| ПриходныйКассовыйОрдер.Дата КАК ДатаДокумента,
| ПриходныйКассовыйОрдер.Ссылка КАК Ссылка,
| ПриходныйКассовыйОрдер.Организация КАК Организация,
| ПриходныйКассовыйОрдер.Организация КАК ЮрФизЛицо,
| ПриходныйКассовыйОрдер.Организация КАК Руководители,
| ПриходныйКассовыйОрдер.Организация.Префикс КАК Префикс,
| ПриходныйКассовыйОрдер.СуммаДокумента КАК Сумма,
| ПриходныйКассовыйОрдер.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ПриходныйКассовыйОрдер.Контрагент КАК Контрагент,
| ПриходныйКассовыйОрдер.Контрагент.Представление КАК ФИОПолучателя,
| ПриходныйКассовыйОрдер.Приложение КАК Приложение,
| ПриходныйКассовыйОрдер.ПоДокументу КАК ПоДокументу,
| ПриходныйКассовыйОрдер.Основание КАК Основание,
| ПриходныйКассовыйОрдер.Контрагент.НаименованиеПолное КАК НаименованиеПолное,
| ПриходныйКассовыйОрдер.Контрагент.Наименование КАК Наименование,
| ПриходныйКассовыйОрдер.ПринятоОт КАК ПринятоОт,
| ПриходныйКассовыйОрдер.ДокументОснование КАК ДокументОснование,
| ПриходныйКассовыйОрдер.ВТомЧислеНДС КАК ВТомЧислеНДС,
| ПриходныйКассовыйОрдер.Ответственный.ФизЛицо КАК Кассир,
| ""50.01"" КАК КодДебета
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| ПриходныйКассовыйОрдер.Ссылка
|";
Запрос.МенеджерВременныхТаблиц = ДенежныеСредстваСервер.ПолучитьМенеджерТаблицыКорСчетов(Документы.ПриходныйКассовыйОрдер.ПустаяСсылка(), МассивОбъектов);
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
МассивРезультатов = Запрос.ВыполнитьПакет();
ТаблицаКорСчетаДебет = МассивРезультатов[0].Выгрузить();
ДанныеПечати = МассивРезультатов[1].Выбрать();
ПервыйДокумент = Истина;
Макет = УправлениеПечатью.ПолучитьМакет("ОбщийМакет.ПФ_MXL_КО1");
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
Пока ДанныеПечати.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ЕстьРасчетыСКонтрагентами = ДенежныеСредстваСервер.ЕстьРасчетыСКонтрагентами(ДанныеПечати.ХозяйственнаяОперация);
СведенияОбОрганизации = ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.ДатаДокумента);
// Шапка накладной
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,");
ОбластьМакета.Параметры.СуммаРубКоп = ФормированиеПечатныхФормСервер.СуммаРубКоп(ДанныеПечати.Сумма);
ОбластьМакета.Параметры.Сумма = Формат(ДанныеПечати.Сумма, "ЧЦ=15; ЧДЦ=2");
ОбластьМакета.Параметры.СуммаПрописью = ФормированиеПечатныхФормСервер.СформироватьСуммуПрописью(ДанныеПечати.Сумма);
ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОбОрганизации.КодПоОКПО;
ОбластьМакета.Параметры.ДатаДокумента = ДанныеПечати.ДатаДокумента;
ОбластьМакета.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДанныеПечати.Номер, ПустаяСтрока(ПолучитьФункциональнуюОпцию("ПрефиксИнформационнойБазы")), Истина);
Если Найти(ОбластьМакета.Параметры.ПредставлениеОрганизации, "КАРИГУЗ") > 0 Тогда
//-Выделим НДС т.к. в основной конфигурации не выделяется
СуммаНДС = ОбластьМакета.Параметры.Сумма/118*18;
РублиНДС = Цел(СуммаНДС);
КопейкиНДС = Окр(100 * (СуммаНДС - РублиНДС), 0, 1);
СуммаРубКопНДС = ""
+ Формат(РублиНДС, "ЧДЦ=0; ЧГ=0")
+ " руб. "
+ Цел(КопейкиНДС /10)
+ (КопейкиНДС - 10 * Цел(КопейкиНДС / 10))
+" коп.";
ОбластьМакета.Параметры.ВТомЧисле = "НДС(18%) " + СуммаРубКопНДС;
Иначе
ОбластьМакета.Параметры.ВТомЧисле = ДанныеПечати.ВТомЧислеНДС + ?(ДанныеПечати.ВТомЧислеНДС = "Без налога (НДС)", "", " руб.");
КонецЕсли;
МассивКорСчетов = ТаблицаКорСчетаДебет.НайтиСтроки(Новый Структура("Ссылка", ДанныеПечати.Ссылка));
КодыСчетДебет = "";
Для каждого СтрокаКорСчета Из МассивКорСчетов Цикл
КодыСчетДебет = КодыСчетДебет + "," + СтрокаКорСчета.КорреспондирующийСчет;
КонецЦикла;
ОбластьМакета.Параметры.СубСчет = Сред(КодыСчетДебет, 2);
Руководители = ФормированиеПечатныхФормСервер.ОтветственныеЛицаОрганизаций(ДанныеПечати.Руководители, КонецДня(ДанныеПечати.ДатаДокумента));
Бухгалтер = Руководители.ГлавныйБухгалтер;
ОбластьМакета.Параметры.ФИОГлавногоБухгалтера = Бухгалтер;
ОбластьМакета.Параметры.ФИОКассира = ФормированиеПечатныхФормСервер.ФамилияИнициалыФизЛица(ДанныеПечати.Кассир);
ОбластьМакета.Параметры.ПринятоОт = ДанныеПечати.ПринятоОт;
ОбластьМакета.Параметры.Основание = ДанныеПечати.Основание;
ОбластьМакета.Параметры.Приложение = ДанныеПечати.Приложение;
ТабличныйДокумент.Вывести(ОбластьМакета);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
// Интерфейс для регистрации обработки.
// Вызывается при добавлении обработки в справочник "ВнешниеОбработки"
//
// Возвращаемое значение:
// Структура:
// Вид - строка - возможные значения: "ДополнительнаяОбработка"
// "ДополнительныйОтчет"
// "ЗаполнениеОбъекта"
// "Отчет"
// "ПечатнаяФорма"
// "СозданиеСвязанныхОбъектов"
//
// Назначение - массив строк имен объектов метаданных в формате:
// <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>]
// Например, "Документ.СчетЗаказ" или "Справочник.*"
// Прим. параметр имеет смысл только для назначаемых обработок
//
// Наименование - строка - наименование обработки, которым будет заполнено
// наименование справочника по умолчанию - краткая строка для
// идентификации обработки администратором
//
// Версия - строка - версия обработки в формате <старший номер>.<младший номер>
// используется при загрузке обработок в информационную базу
// БезопасныйРежим – Булево – Если истина, обработка будет запущена в безопасном режиме.
// Более подбробная информация в справке.
//
// Информация - Строка- краткая информация по обработке, описание обработки
//
// Команды - ТаблицаЗначений - команды, поставляемые обработкой, одная строка таблицы соотвествует
// одной команде
// колонки:
// - Представление - строка - представление команды конечному пользователю
// - Идентификатор - строка - идентефикатор команды. В случае печатных форм
// перечисление через запятую списка макетов
// - Использование - строка - варианты запуска обработки:
// "ОткрытиеФормы" - открыть форму обработки
// "ВызовКлиентскогоМетода" - вызов клиентского экспортного метода из формы обработки
// "ВызовСерверногоМетода" - вызов серверного экспортного метода из модуля объекта обработки
// - ПоказыватьОповещение – Булево – если Истина, требуется оказывать оповещение при начале
// и при окончании запуска обработки. Прим. Имеет смысл только
// при запуске обработки без открытия формы.
// - Модификатор – строка - для печатных форм MXL, которые требуется
// отображать в форме ПечатьДокументов подсистемы Печать
// требуется установить как "ПечатьMXL"
//
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазначениеОбработки());
ПараметрыРегистрации.Вставить("Наименование", НСтр("ru = 'Печатная форма: ПКО'"));
ПараметрыРегистрации.Вставить("Версия", "2.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", НСтр("ru = 'ПКО'")
);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,НСтр("ru = 'ПКО'"),"ПриходныйКассовыйОрдер","ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
// Интерфейс для запуска логики обработки
//
// Параметры
// МассивОбъектов - Массив - массив ссылок на объекты печати
// КоллекцияПечатныхФорм - ТаблицаЗначений - таблица содержащая информацию по печатным формам
// ОбъектыПечати - СписокЗначений - ссылки на объекты печати
// ПараметрыВывода - Структура - дополнительные параметры вывода (печать покомплектно и др.)
//
Процедура Печать(МассивОбъектов,КоллекцияПечатныхФорм,ОбъектыПечати,ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПриходныйКассовыйОрдер") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"ПриходныйКассовыйОрдер", "ПКО",СформироватьПечатнуюФормуКО1(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Функция ПолучитьНазначениеОбработки()
Назначение = Новый Массив;
Назначение.Добавить("Документ.ПриходныйКассовыйОрдер");
//Назначение.Добавить("Документ.ЧекККМ");
Возврат Назначение;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Модуль формы:
&НаКлиенте
Процедура Печать_(Команда)
ТабДок = Печ();
Если не ТабДок = Неопределено Тогда
ТабДок.Показать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция Печ()
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(Объект.СсылкаНаОбъект);
ОбъектыПечати = Новый СписокЗначений;
ОбъектыПечати.Добавить(Объект.СсылкаНаОбъект);
Документ = РеквизитФормыВЗначение("Объект");
Возврат Документ.СформироватьПечатнуюФормуКО1(МассивОбъектов,ОбъектыПечати);
//ЗначениеВРеквизитФормы(Документ, "Объект");
КонецФункции
Функция СформироватьПечатнуюФормуКО1(МассивОбъектов, ОбъектыПечати) Экспорт
ТабличныйДокумент = Новый ТабличныйДокумент();
СинонимДокумента = НСтр("ru='Приходный кассовый ордер'");
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриходныйКассовыйОрдер_ПФ_MXL_КО1";
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| Ссылка КАК Ссылка,
| КорреспондирующийСчет КАК КорреспондирующийСчет
|ИЗ
| КорСчета
|;
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПриходныйКассовыйОрдер.Номер КАК Номер,
| ПриходныйКассовыйОрдер.Дата КАК ДатаДокумента,
| ПриходныйКассовыйОрдер.Ссылка КАК Ссылка,
| ПриходныйКассовыйОрдер.Организация КАК Организация,
| ПриходныйКассовыйОрдер.Организация КАК ЮрФизЛицо,
| ПриходныйКассовыйОрдер.Организация КАК Руководители,
| ПриходныйКассовыйОрдер.Организация.Префикс КАК Префикс,
| ПриходныйКассовыйОрдер.СуммаДокумента КАК Сумма,
| ПриходныйКассовыйОрдер.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ПриходныйКассовыйОрдер.Контрагент КАК Контрагент,
| ПриходныйКассовыйОрдер.Контрагент.Представление КАК ФИОПолучателя,
| ПриходныйКассовыйОрдер.Приложение КАК Приложение,
| ПриходныйКассовыйОрдер.ПоДокументу КАК ПоДокументу,
| ПриходныйКассовыйОрдер.Основание КАК Основание,
| ПриходныйКассовыйОрдер.Контрагент.НаименованиеПолное КАК НаименованиеПолное,
| ПриходныйКассовыйОрдер.Контрагент.Наименование КАК Наименование,
| ПриходныйКассовыйОрдер.ПринятоОт КАК ПринятоОт,
| ПриходныйКассовыйОрдер.ДокументОснование КАК ДокументОснование,
| ПриходныйКассовыйОрдер.ВТомЧислеНДС КАК ВТомЧислеНДС,
| ПриходныйКассовыйОрдер.Ответственный.ФизЛицо КАК Кассир,
| ""50.01"" КАК КодДебета
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| ПриходныйКассовыйОрдер.Ссылка
|";
Запрос.МенеджерВременныхТаблиц = ДенежныеСредстваСервер.ПолучитьМенеджерТаблицыКорСчетов(Документы.ПриходныйКассовыйОрдер.ПустаяСсылка(), МассивОбъектов);
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
МассивРезультатов = Запрос.ВыполнитьПакет();
ТаблицаКорСчетаДебет = МассивРезультатов[0].Выгрузить();
ДанныеПечати = МассивРезультатов[1].Выбрать();
ПервыйДокумент = Истина;
Макет = УправлениеПечатью.ПолучитьМакет("ОбщийМакет.ПФ_MXL_КО1");
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
Пока ДанныеПечати.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ЕстьРасчетыСКонтрагентами = ДенежныеСредстваСервер.ЕстьРасчетыСКонтрагентами(ДанныеПечати.ХозяйственнаяОперация);
СведенияОбОрганизации = ФормированиеПечатныхФормСервер.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.ДатаДокумента);
// Шапка накладной
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,");
ОбластьМакета.Параметры.СуммаРубКоп = ФормированиеПечатныхФормСервер.СуммаРубКоп(ДанныеПечати.Сумма);
ОбластьМакета.Параметры.Сумма = Формат(ДанныеПечати.Сумма, "ЧЦ=15; ЧДЦ=2");
ОбластьМакета.Параметры.СуммаПрописью = ФормированиеПечатныхФормСервер.СформироватьСуммуПрописью(ДанныеПечати.Сумма);
ОбластьМакета.Параметры.ОрганизацияПоОКПО = СведенияОбОрганизации.КодПоОКПО;
ОбластьМакета.Параметры.ДатаДокумента = ДанныеПечати.ДатаДокумента;
ОбластьМакета.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ДанныеПечати.Номер, ПустаяСтрока(ПолучитьФункциональнуюОпцию("ПрефиксИнформационнойБазы")), Истина);
Если Найти(ОбластьМакета.Параметры.ПредставлениеОрганизации, "КАРИГУЗ") > 0 Тогда
//-Выделим НДС т.к. в основной конфигурации не выделяется
СуммаНДС = ОбластьМакета.Параметры.Сумма/118*18;
РублиНДС = Цел(СуммаНДС);
КопейкиНДС = Окр(100 * (СуммаНДС - РублиНДС), 0, 1);
СуммаРубКопНДС = ""
+ Формат(РублиНДС, "ЧДЦ=0; ЧГ=0")
+ " руб. "
+ Цел(КопейкиНДС /10)
+ (КопейкиНДС - 10 * Цел(КопейкиНДС / 10))
+" коп.";
ОбластьМакета.Параметры.ВТомЧисле = "НДС(18%) " + СуммаРубКопНДС;
Иначе
ОбластьМакета.Параметры.ВТомЧисле = ДанныеПечати.ВТомЧислеНДС + ?(ДанныеПечати.ВТомЧислеНДС = "Без налога (НДС)", "", " руб.");
КонецЕсли;
МассивКорСчетов = ТаблицаКорСчетаДебет.НайтиСтроки(Новый Структура("Ссылка", ДанныеПечати.Ссылка));
КодыСчетДебет = "";
Для каждого СтрокаКорСчета Из МассивКорСчетов Цикл
КодыСчетДебет = КодыСчетДебет + "," + СтрокаКорСчета.КорреспондирующийСчет;
КонецЦикла;
ОбластьМакета.Параметры.СубСчет = Сред(КодыСчетДебет, 2);
Руководители = ФормированиеПечатныхФормСервер.ОтветственныеЛицаОрганизаций(ДанныеПечати.Руководители, КонецДня(ДанныеПечати.ДатаДокумента));
Бухгалтер = Руководители.ГлавныйБухгалтер;
ОбластьМакета.Параметры.ФИОГлавногоБухгалтера = Бухгалтер;
ОбластьМакета.Параметры.ФИОКассира = ФормированиеПечатныхФормСервер.ФамилияИнициалыФизЛица(ДанныеПечати.Кассир);
ОбластьМакета.Параметры.ПринятоОт = ДанныеПечати.ПринятоОт;
ОбластьМакета.Параметры.Основание = ДанныеПечати.Основание;
ОбластьМакета.Параметры.Приложение = ДанныеПечати.Приложение;
ТабличныйДокумент.Вывести(ОбластьМакета);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
// Интерфейс для регистрации обработки.
// Вызывается при добавлении обработки в справочник "ВнешниеОбработки"
//
// Возвращаемое значение:
// Структура:
// Вид - строка - возможные значения: "ДополнительнаяОбработка"
// "ДополнительныйОтчет"
// "ЗаполнениеОбъекта"
// "Отчет"
// "ПечатнаяФорма"
// "СозданиеСвязанныхОбъектов"
//
// Назначение - массив строк имен объектов метаданных в формате:
// <ИмяКлассаОбъектаМетаданного>.[ * | <ИмяОбъектаМетаданных>]
// Например, "Документ.СчетЗаказ" или "Справочник.*"
// Прим. параметр имеет смысл только для назначаемых обработок
//
// Наименование - строка - наименование обработки, которым будет заполнено
// наименование справочника по умолчанию - краткая строка для
// идентификации обработки администратором
//
// Версия - строка - версия обработки в формате <старший номер>.<младший номер>
// используется при загрузке обработок в информационную базу
// БезопасныйРежим – Булево – Если истина, обработка будет запущена в безопасном режиме.
// Более подбробная информация в справке.
//
// Информация - Строка- краткая информация по обработке, описание обработки
//
// Команды - ТаблицаЗначений - команды, поставляемые обработкой, одная строка таблицы соотвествует
// одной команде
// колонки:
// - Представление - строка - представление команды конечному пользователю
// - Идентификатор - строка - идентефикатор команды. В случае печатных форм
// перечисление через запятую списка макетов
// - Использование - строка - варианты запуска обработки:
// "ОткрытиеФормы" - открыть форму обработки
// "ВызовКлиентскогоМетода" - вызов клиентского экспортного метода из формы обработки
// "ВызовСерверногоМетода" - вызов серверного экспортного метода из модуля объекта обработки
// - ПоказыватьОповещение – Булево – если Истина, требуется оказывать оповещение при начале
// и при окончании запуска обработки. Прим. Имеет смысл только
// при запуске обработки без открытия формы.
// - Модификатор – строка - для печатных форм MXL, которые требуется
// отображать в форме ПечатьДокументов подсистемы Печать
// требуется установить как "ПечатьMXL"
//
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазначениеОбработки());
ПараметрыРегистрации.Вставить("Наименование", НСтр("ru = 'Печатная форма: ПКО'"));
ПараметрыРегистрации.Вставить("Версия", "2.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", НСтр("ru = 'ПКО'")
);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,НСтр("ru = 'ПКО'"),"ПриходныйКассовыйОрдер","ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
// Интерфейс для запуска логики обработки
//
// Параметры
// МассивОбъектов - Массив - массив ссылок на объекты печати
// КоллекцияПечатныхФорм - ТаблицаЗначений - таблица содержащая информацию по печатным формам
// ОбъектыПечати - СписокЗначений - ссылки на объекты печати
// ПараметрыВывода - Структура - дополнительные параметры вывода (печать покомплектно и др.)
//
Процедура Печать(МассивОбъектов,КоллекцияПечатныхФорм,ОбъектыПечати,ПараметрыВывода) Экспорт
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПриходныйКассовыйОрдер") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,"ПриходныйКассовыйОрдер", "ПКО",СформироватьПечатнуюФормуКО1(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Функция ПолучитьНазначениеОбработки()
Назначение = Новый Массив;
Назначение.Добавить("Документ.ПриходныйКассовыйОрдер");
//Назначение.Добавить("Документ.ЧекККМ");
Возврат Назначение;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Модуль формы:
&НаКлиенте
Процедура Печать_(Команда)
ТабДок = Печ();
Если не ТабДок = Неопределено Тогда
ТабДок.Показать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция Печ()
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(Объект.СсылкаНаОбъект);
ОбъектыПечати = Новый СписокЗначений;
ОбъектыПечати.Добавить(Объект.СсылкаНаОбъект);
Документ = РеквизитФормыВЗначение("Объект");
Возврат Документ.СформироватьПечатнуюФормуКО1(МассивОбъектов,ОбъектыПечати);
//ЗначениеВРеквизитФормы(Документ, "Объект");
КонецФункции