Вход | Регистрация

1С:Предприятие ::

Метки: 

Как обратиться к документу в внешней печатной форме (ЗУП 3.1)

Я
   Vasiliy2018
 
29.01.18 - 10:03
ЗУП 3.1.4.120


Возникла необходимость перенести печатные формы с 2.5.

Соответственно была создана новая внешняя обработка с реквизитом «СсылкаНаОбъект» с  типом ДокументСсылка.НужныйДокумент.

Перенесет макет.

Оформлена процедура «СведенияОВнешнейОбработке» и все сопутствующее.

Но возникла проблема, обработка не видит «СсылкаНаОбъект», соответственно отрисовывает голый макет без параметров.

Как обратиться к документу?
 
 
   Darych
 
1 - 29.01.18 - 10:04
БСП не той системы
   Vasiliy2018
 
2 - 29.01.18 - 10:11
(1) Вероятно, но должен же быть реквизит через который можно обратиться к документу вместо "СсылкаНаОбъект", какой-ни будь ТекущийОбъект или что то такое.
   SleepyHead
 
3 - 29.01.18 - 10:15
(2) Есть такой реквизит, передается в экспортную процедуру Печать() модуля обработки как МассивОбъектов.
   SleepyHead
 
4 - 29.01.18 - 10:35
Вот скелет модуля внешней обработки, выцепил из одной из своих.

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

Функция ПолучитьНазначения() Экспорт
Перем Имена, МассивИмен, МассивТипов,Имя;

    Имена = "Отпуск,Увольнение,УвольнениеСписком,Командировка";
    МассивИмен = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Имена,",");
    МассивТипов = Новый Массив;
    Для Каждого Имя из МассивИмен Цикл
        Если МетаДанные.Документы.Найти(Имя)=Неопределено Тогда
            Продолжить
        КонецЕсли;
        МассивТипов.Добавить(Тип("ДокументСсылка."+Имя));
    КонецЦикла;
    Возврат МассивТипов;
КонецФункции

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

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

/////////////////////////////////////////////////////////////////////////////

// реализация печати

Функция ПолучитьИдентификатор() Экспорт
    Возврат "ПечатьСреднегоОбщийПоСтатьям"
КонецФункции

Функция ПолучитьНаименование() Экспорт
    Возврат "Расчет среднего по статьям финансирования"
КонецФункции

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

// печать формы Т-53 для ООО Магистр

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


   Vasiliy2018
 
5 - 29.01.18 - 11:03
(3) Спасибо, все оказалось действительно очень просто.


Список тем форума
Рекламное место пустует Рекламное место пустует
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует