Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 июн 2021, 00:37

Печать документа. Какой макет печатается?

Автор riff666, 28 июн 2016, 19:54

0 Пользователей и 1 гость просматривают эту тему.

riff666

Доброго времени суток. Прошу помочь в следующем. Пришлось заняться администрированием 1С 8.2. Начинаю потихоньку вникать, но пока заданий больше чем знаний. Задача в следующем. Имеется документ, в нем есть макет "Договор". Если нажать на кнопку "Договор+РКО" то происходит печать макета "Договор". Но если нажать на меню "Печать" появляется подменю и вот если в подменю  нажать на "Договор займа" то происходит печать договора но не из макета "Договор" как понять какой макет выводится на печать. В модуле формы документа нашел код, как я понял он формирует подменю, но откуда идет заполнение подменю?
// Процедура устанавливает подменю "Печать" и кнопку "Печать по умолчанию" при необходимости
//
Процедура УстановитьКнопкиПечати()

мДеревоМакетов = УниверсальныеМеханизмы.ПолучитьДеревоМакетовПечати(
Ссылка, ПолучитьСтруктуруПечатныхФорм(),
Новый Действие("ОсновныеДействияФормыПечать"),
Новый Действие("ОсновныеДействияФормыУстановитьПечатьПоУмолчанию"));

УниверсальныеМеханизмы.УстановитьПодменюПечати(
мПодменюПечати, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов.Строки.Количество() > 0);

УниверсальныеМеханизмы.УстановитьПечатьПоУмолчанию(
мПечатьПоУмолчанию, ЭлементыФормы.ОсновныеДействияФормы, мДеревоМакетов, Метаданные().Имя,
Новый Действие("ОсновныеДействияФормыПечатьПоУмолчанию"));

Если Не мПодменюПечати = Неопределено Тогда
УниверсальныеМеханизмы.СформироватьПодменю(мДеревоМакетов, мПодменюПечати,Истина,Истина);
КонецЕсли;

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


riff666

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

В итоге все равно не доходит откуда берутся макеты?

vitasw

Сервис->дополнительные отчеты и обработки->дополнительные внешние печатные формы.
А что за конфигурация?

riff666

Цитата: vitasw от 29 июн 2016, 08:13
Сервис->дополнительные отчеты и обработки->дополнительные внешние печатные формы.
А что за конфигурация?
Такого меню к сожалению не нашел. Толи я дурак толи лыжи не едут. Конфигурация как я понял "Бухгалтерия предприятия, редакция 2.0", но допиленная под свои нужды.
Путем все того же отладчика через "Вычислить выражение" дошел до процедуры
Функция НапечататьВнешнююФорму(Ссылка, ИсточникМакета) Экспорт
Перем ДополнительныеПараметры;
ДвоичныеДанные = ИсточникМакета.СсылкаНаВнешнююОбработку.Принадлежность[ИсточникМакета.НомерСтроки - 1].ХранилищеВнешнейОбработки.Получить();
// Получить дополнительные параметры внешней обработки
ИсточникМакета.Свойство("ДополнительныеПараметрыОбработки", ДополнительныеПараметры);
Если ДвоичныеДанные = Неопределено Тогда
ДвоичныеДанные = ИсточникМакета.СсылкаНаВнешнююОбработку.ХранилищеВнешнейОбработки.Получить();
КонецЕсли;
Если ДвоичныеДанные = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
ТабДокумент = Неопределено;
ИмяФайла = ПолучитьИмяВременногоФайла("epf");
Попытка
ДвоичныеДанные.Записать(ИмяФайла);
Обработка = ВнешниеОбработки.Создать(ИмяФайла);
Обработка.СсылкаНаОбъект = Ссылка;
// Передать внешней обработке дополнительные параметры
Если ДополнительныеПараметры <> Неопределено Тогда
// Если у внешней обработки есть реквизит для дополнительных параметров, присвоить ему значение
Если НЕ Обработка.Метаданные().Реквизиты.Найти("ДополнительныеПараметры") = Неопределено Тогда
Обработка.ДополнительныеПараметры = ДополнительныеПараметры;
КонецЕсли;
КонецЕсли;
ТабДокумент = Обработка.Печать();
УдалитьФайлы(ИмяФайла);
Исключение
ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(),, "Не удалось сформировать внешнюю печатную форму!");
КонецПопытки;
Возврат ТабДокумент;
КонецФункции

Посмотрев имя файла в отладчике, нашел файл "C:\Users\Администратор\AppData\Local\Temp\3\v8_E7EB_42.epf". Осталось разобраться как и откуда происходит его создание.

vitasw

Цитата: riff666 от 29 июн 2016, 09:38Такого меню к сожалению не нашел.

тогда открывайте через операции справочник "Внешние Обработки".
Добавлено: 29 июн 2016, 09:42


Цитата: riff666 от 29 июн 2016, 09:38Конфигурация как я понял "Бухгалтерия предприятия, редакция 2.0"

Справка->о программе.

riff666

Цитата: vitasw от 29 июн 2016, 09:42
тогда открывайте через операции справочник "Внешние Обработки".
Добавлено: 29 июн 2016, 09:42


Справка->о программе.
В справке о конфигурации то что написал выше, если подробнее то "Бухгалтерия предприятия, редакция 2.0 (2.0.39.5) (http://v8.1c.ru/buhv8/) Copyright (С) ООО "1C", 2009 - 2012. Все права защищены (http://www.1c.ru)"
Скопировал раздел конфигурация.
Спасибо огромное за подсказку про справочник внешние обработки! Я малость не так редактировал договор. Я через конфигуратор открыл файл "Договор" отредактировал. А надо было еще открыть его через справочник "Внешние обработки" чтоб сохранить его в базу. Будем дальше изучать и курить мануалы)) Был системным администратором, хочу поменять специализацию.
vitasw Кнопочку спасибо нажал))

vitasw

Цитата: riff666 от 29 июн 2016, 10:05Я через конфигуратор открыл файл "Договор" отредактировал. А надо было еще открыть его через справочник "Внешние обработки" чтоб сохранить его в базу.

Не совсем так. В конфигураторе есть код, который печатает макет опять же из конфигуратора. Разработчики добавили отдельный механизм присоединения внешних печатный форм, который по большому счету никак не зависит от того, что уже есть какая-то печать в конфигураторе. При открытии формы любого ссылочного объекта система формирует динамически список из печатный форм: то что есть в конфигураторе + то что есть в доп. обработках. При этом при подключении ВПФ (внешней печатной формы) можно настроить так, чтобы в ВПФ "была главнее". Сложно объяснить - проще чтобы вы сами ручками что-то поподключали и почитали.

riff666

Цитата: vitasw от 29 июн 2016, 11:02проще чтобы вы сами ручками что-то поподключали и почитали.

Само собой поподключаю и почитаю.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск