Изменение встроенных в типовые конфигурации печатных форм — это, вероятно, одна из наиболее распространенных доработок типовых конфигураций. Чтобы каждый раз не изменять саму конфигурацию, компания «1С» создала механизм внешних печатных форм.
Внешняя печатная форма — это обычная внешняя обработка, соответствующая определенным требованиям. Такую обработку можно подключить к какой-либо типовой конфигурации и тем самым добавить новую печатную форму и/или заменить существующую.
Кроме этого, нужно отметить, что создание внешних печатных форм различается для обычного приложения (Бухгалтерия 2.0.*, ЗиУП 2.5.*, УТ 10.3.*) и управляемого приложения (Бухгалтерия 3.0.*, ЗиУП 3.*, УТ 11.*). В статье будут рассмотрены оба варианта.
Также нужно сказать, что вопросы отладки внешних печатных форм и для управляемого и для обычного приложения рассматриваются в отдельной статье.
Содержание
- Внешняя печатная форма в управляемом приложении
- Создание
- Подключение
- Внешняя печатная форма в обычном приложении
- Создание
- Подключение
Внешняя печатная форма в управляемом приложении
Начнем с того, что в настоящее время встречается чаще — с управляемого приложения. В тексте ниже будет приведен пример создания и подключения внешней печатной формы для документа «Приходный кассовый ордер» (Бухгалтерия предприятия, редакция 3.0).
Создание
Как уже было сказано выше, внешняя печатная форма — это просто-напросто внешняя обработка соответствующая некоторым требованиям. Первым требованием является реализация в модуле печатной формы экспортной функции СведенияОВнешнейОбработке().
Итак, создаем новую внешнюю обработку и в модуле объекта этой обработки размещаем примерно такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; //указываем сведения о внешней печатной форме ПараметрыРегистрации.Вставить(«Вид», «ПечатнаяФорма»); ПараметрыРегистрации.Вставить(«Версия», «1.2»); ПараметрыРегистрации.Вставить(«ВерсияБСП», «3.0.1.287»); ПараметрыРегистрации.Вставить(«Наименование», «Печатная форма для ПКО»); ПараметрыРегистрации.Вставить(«Информация», «Внешняя печатная форма для документов»); //используем безопасный режим, это накладывает некоторые ограничения ПараметрыРегистрации.Вставить(«БезопасныйРежим», Истина); //определим документы и/или справочники //в которых будет использоваться эта печатная форма ПараметрыРегистрации.Вставить(«Назначение», Новый Массив); ПараметрыРегистрации.Назначение.Добавить(«Документ.ПриходныйКассовыйОрдер»); //используется для дополнительных отчетов //подключенных к подсистеме «Варианты отчетов» ПараметрыРегистрации.Вставить(«ОпределитьНастройкиФормы», Ложь); //если требуются исключения из безопасного режима, их можно запросить ПараметрыРегистрации.Вставить(«Разрешения», Новый Массив); ПараметрыРегистрации.Разрешения.Добавить(РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса(«https»,»yandex.ru»,80,»очень надо»)); //определяем таблицу команд ПараметрыРегистрации.Вставить(«Команды», ПолучитьТаблицуКоманд()); //добавляем команду Команда = ПараметрыРегистрации.Команды.Добавить(); Команда.Представление = «Печатная форма для ПКО (внешняя)»; Команда.Идентификатор = «ПечатнаяФормаДляПКО»; Команда.Использование = «ВызовСерверногоМетода»; Команда.ПоказыватьОповещение = Истина; Команда.Модификатор = «ПечатьMXL»; Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить(«Представление», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«Идентификатор», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«Использование», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«ПоказыватьОповещение», Новый ОписаниеТипов(«Булево»)); Команды.Колонки.Добавить(«Модификатор», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«ЗаменяемыеКоманды», Новый ОписаниеТипов(«Строка»)); Возврат Команды; КонецФункции |
Код в основном прокомментирован, но некоторые моменты нужно обговорить отдельно. Функция СведенияОВнешнейОбработке() является общей для всех внешних объектов. Вид внешнего объекта указывается в параметре «Вид» (у нас указана «ПечатнаяФорма»).
Большинство параметров не являются обязательными для заполнения. В нашем случае обязательно указать параметры «Вид», «Версия» и «Команды» — это обязательные параметры для всех видов внешних объектов («Команды» необязательны для отчетов). Кроме этого будет полезно указать параметры «Назначение». Но вообще, желательно указывать как можно больше информации — это поможет не запутаться как Вашим клиентам так и Вам самим.
Параметр «БезопасныйРежим» со значением «Истина» накладывает следующие ограничения:
- игнорируется привилегированный режим;
- запрещена работа с COM;
- запрещена загрузка внешних компонент;
- запрещен запуск внешних приложений и команд ОС;
- запрещен доступ к файловой системе (кроме временных файлов);
- запрещен доступ к интернету.
Параметру «БезопасныйРежим» рекомендуется присваивать значение «Истина». Если необходима какая-либо функциональность, запрещаемая безопасным режимом, то можно получить дополнительное разрешения на эту функциональность (как в примере выше).
Кроме функции СведенияОВнешнейОбработке() необходимо реализовать еще одну экспортную функцию — Печать(). Эта функция должна иметь следующие параметры:
- МассивОбъектов — массив ссылок на объекты, для которых требуется сформировать табличные документы;
- КоллекцияПечатныхФорм — служебная таблица значений, через нее передаются имена макетов для которых могут быть сформированы табличные документы, а также возвращаются синонимы (представления) макетов, сформированные табличные документы и другая информация;
- ОбъектыПечати — список значений, к котором устанавливается соответствие между объектами и именами областей печати табличного документа (нужно для возможности печати комплектов документов);
- ПараметрыВывода — структура с предопределенными ключами, через которую можно вернуть некоторые параметры.
Пример реализации функции Печать():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, «ПечатнаяФормаДляПКО»); Если ПечатнаяФорма <> Неопределено Тогда ПечатнаяФорма.ТабличныйДокумент = СформироватьТабличныйДокумент(МассивОбъектов, ОбъектыПечати); ПечатнаяФорма.СинонимМакета = «Печатная форма для ПКО»; КонецЕсли; КонецПроцедуры Функция СформироватьТабличныйДокумент(МассивОбъектов, ОбъектыПечати) ТабДок = Новый ТабличныйДокумент; Макет = ЭтотОбъект.ПолучитьМакет(«Макет»); ОбластьСтрока = Макет.ПолучитьОбласть(«Строка»); ПервыйДокумент = Истина; Для Каждого ОбъектСсылка Из МассивОбъектов Цикл Если Не ПервыйДокумент Тогда //выводим документы на разных страницах ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабДок.ВысотаТаблицы + 1; ОбластьСтрока.Параметры.Документ = ОбъектСсылка; ТабДок.Вывести(ОбластьСтрока); //зададим область печати объекта в табличном документе УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДок, НомерСтрокиНачало, ОбъектыПечати, ОбъектСсылка); КонецЦикла; Возврат ТабДок; КонецФункции |
В коде выше мы находим нашу печатную форму по идентификатору и формируем для нее табличный документ.
Подключение
Подключение нашей внешней печатной формы на примере «Бухгалтерии предприятия, редакция 3.0».
Вкратце повторю основные этапы:
- Открываем вкладку «Администрирование» и переходим в раздел «Печатные формы, отчеты и обработки»;
- Устанавливаем галку «Дополнительные отчеты и обработки» и переходим в раздел «Дополнительные отчеты и обработки»;
- Жмем кнопку «Добавить из файла» и выбираем файл печатной формы;
- (Необязательно) Меняем наименование, комментарии, настраиваем видимость, изменяем размещение;
- Жмем кнопку «Записать и закрыть».
Внешняя печатная форма в обычном приложении
Теперь рассмотрим создание внешней печатной формы в обычном приложении — создадим печатную форму для документа «Приходный кассовый ордер» (Бухгалтерия предприятия, редакция 2.0). Несмотря на то, что задача та же, решается она по другому.
Создание
Внешняя печатная форма в обычном приложении — это внешняя обработка, в которой имеется реквизит «СсылкаНаОбъект» произвольного типа, в который будет передана ссылка на объект, для которого требуется выполнить печать, и экспортной функции Печать() в модуле объекта, которая вызывается без параметров и возвращает табличный документ.
Кроме этого может присутствовать реквизит «ДополнительныеПараметры» произвольного типа, через который, в виде структуры, будут передаваться дополнительные параметры примитивного типа.
Также во внешней печатной форме может присутствовать макет с названием «Параметры_Авторегистрации» в первой колонке которого можно перечислить объекты метаданных, к которым принадлежит печатная форма. Используется этот макет для автоматического заполнения принадлежности печатной формы.
Такой же макет (но с указанием табличной части) используется во внешних обработках табличных частей, о которых имеется отдельная статья.
Пример реализации функции Печать():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Функция Печать() Экспорт ТабДок = Новый ТабличныйДокумент; Макет = ЭтотОбъект.ПолучитьМакет(«Макет»); ОбластьСтрока = Макет.ПолучитьОбласть(«Строка»); ОбластьСтрока.Параметры.Документ = СсылкаНаОбъект; ТабДок.Вывести(ОбластьСтрока); //обращение к дополнительным параметрам рекомендуется снабдить //соответствующими проверками Если ЗначениеЗаполнено(ДополнительныеПараметры) Тогда Если ДополнительныеПараметры.Свойство(«ТестПараметр») Тогда ОбластьСтрока.Параметры.Документ = ДополнительныеПараметры.ТестПараметр; ТабДок.Вывести(ОбластьСтрока); КонецЕсли; КонецЕсли; Возврат ТабДок; КонецФункции |
Подключение
Подключим нашу внешнюю печатную форму на примере «Бухгалтерии предприятия, редакция 2.0».
Основные этапы:
- Открываем справочник внешних печатных форм (Сервис->Дополнительные отчеты и обработки->Дополнительные внешние печатные формы);
- Добавляем новый элемент справочника и указываем файл печатной формы;
- Записываем элемент.
- (Необязательно) Меняем имеющиеся настройки — представления, отборы, дополнительные параметры и прочее.
На этом все, надеюсь, что эта статья была Вам полезна.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Загрузка…
В случае, если необходимо добавить какую-либо печатную форму в систему, то отличным вариантом это сделать является создание дополнительной печатной формы. При использовании дополнительной печатной формы нет никакой необходимости вносить изменения в конфигурацию.
Часто пользователям необходимо внести небольшие изменения в печатную форму, уже существующую. В этом случае также лучше использовать дополнительную форму, а не вносить поправки в стандартную, т.к. при последующих обновлениях системы могут возникнуть серьёзные проблемы.
Для примера возьмём печатную форму «Унифицированная форма №Т-61» или по-другому «Записка-расчет при прекращении (расторжении) трудового договора с работником (увольнении)». Будем использовать конфигурацию 1С Управление производственным предприятием.
Пользователи попросили добавить в документ «Увольнение из организаций» данную печатную форму. Рассмотрим процесс создания печатной формы, заполнение её макета и подключения печатной формы.
Для создания новой обработки в 1С необходимо запустить 1С в режиме «Конфигуратор».
В Конфигураторе в меню «Файл» необходимо выбрать пункт «Новый», так же можно воспользоваться комбинацией клавиш Ctrl+N или кнопкой на панели быстрого доступа.
По сути внешняя печатная форма – это внешняя обработка, предназначенная для формирования печатной формы, поэтому в появившемся окне выбираем вариант «Внешняя обработка» и нажимаем «ОК».
В открывшемся окне новой обработки необходимо задать ей имя. Назовём нашу обработку «УвольнениеТ61», автоматически формируется синоним, который будет виден пользователям.
Добавим реквизит «СсылкаНаОбъект» и укажем тип «ДокументСсылка.УвольнениеИзОрганизаций» т.к. мы собираемся подключать обработку именно к данному документу.
Теперь необходимо создать форму для нашей обработки. Выбираем в списке «Формы» и нажимаем «Добавить».
В появившемся окне формы выбираем параметры для формы нашей обработки. Тип формы установим «Форма обработки», проконтролируем флаг «Назначить форму основной». Можно задать форме имя, но мы оставим стандартное. В данном примере оно не играет никакой роли. Нажимаем «Далее».
На данной вкладке установим флаг у реквизита «СсылкаНаОбъект» для того, чтобы он появился на форме, затем нажимаем «Готово».
Нажимаем правой кнопкой мыши на кнопку «Выполнить» и выбираем пункт «КнопкаВыполнитьНажатие».
В процедуру выполнить нажатие добавим следующий код:
Так же нам понадобятся две переменные «ВалютаРегламентированногоУчета» и «ВалютаУправленческогоУчёта».
В модуле формы больше никакого кода писать не нужно. Следующим шагом создадим макет печатной формы. Выберем «Макет» и нажмём кнопку «Добавить»
В появившемся окне необходимо установить имя макета. Назовём макет «Т_61» и установим тип макета «Табличный документ».
Перед нами откроется окно пустого табличного документа, которое необходимо заполнить в соответствии с внешним видом «Унифицированной формы №Т-61». Опустим шаги по заполнению макета, покажем только конечный результат.
Заполнение макета печатной формы
Код для заполнения макета необходимо расположить в «Модуле объекта». Для этого нажмём на кнопку «Действия» нашей обработки и выберем пункт «Открыть модуль объекта».
Процесс написания кода аналогичен процессу заполнения обычного табличного документа, поэтому приведём готовый листинг кода, разобраться в котором начинающим программистам не составит никакого труда.
Перем мДлинаСуток;
// Механизм исправлений
Перем мВосстанавливатьДвижения;
Перем мСоответствиеДвижений;
Перем мИсправляемыйДокумент;
Функция СформироватьЗапросДляПечати(Режим)
Запрос = Новый Запрос;
// Установим параметры запроса
Запрос.УстановитьПараметр(«ДокументСсылка», СсылкаНаОбъект.Ссылка);
Запрос.УстановитьПараметр(«ДатаДокумента», СсылкаНаОбъект.Дата);
Запрос.УстановитьПараметр(«Организация», СсылкаНаОбъект.Организация);
Если Режим = «ПоРеквизитамДокумента» Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр(«СтруктурнаяЕдиница»,СсылкаНаОбъект.Организация);
Запрос.Текст = ФормированиеПечатныхФормЗК.ПолучитьТекстЗапросаПоОтветственнымЛицам(
«ДатаДокумента»,
«ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)
|И СтруктурнаяЕдиница = &Организация»);
Запрос.Выполнить();
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| УвольнениеИзОрганизаций.Номер КАК НомерДок,
| УвольнениеИзОрганизаций.Дата КАК ДатаДок,
| УвольнениеИзОрганизаций.Организация.НаименованиеПолное КАК НазваниеОрганизации,
| УвольнениеИзОрганизаций.Организация.КодПоОКПО КАК КодПоОКПО,
| ОтветственныеЛицаОрганизаций.Должность КАК ДолжностьРуководителя,
| ОтветственныеЛицаОрганизаций.НаименованиеОтветственногоЛица КАК ФИОРуководителя,
| УвольнениеИзОрганизаций.Организация.Префикс
|ИЗ
| Документ.УвольнениеИзОрганизаций КАК УвольнениеИзОрганизаций
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбОтветственномЛице КАК ОтветственныеЛицаОрганизаций
| ПО УвольнениеИзОрганизаций.Организация = ОтветственныеЛицаОрганизаций.СтруктурнаяЕдиница
|ГДЕ
| УвольнениеИзОрганизаций.Ссылка = &ДокументСсылка»;
ИначеЕсли Режим = «ПоТабличнойЧастиДокумента» Тогда
Запрос.УстановитьПараметр(«ГоловнаяОрганизация», ОбщегоНазначенияЗК.ГоловнаяОрганизация(СсылкаНаОбъект.Организация));
Запрос.УстановитьПараметр(«ПустаяОрганизация» , Справочники.Организации.ПустаяСсылка());
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(ФИОФизЛицСрезПоследних.Фамилия + «» «» + ФИОФизЛицСрезПоследних.Имя + «» «» + ФИОФизЛицСрезПоследних.Отчество, УвольнениеИзОрганизацииРаботники.Сотрудник.Наименование) КАК Работник,
| УвольнениеИзОрганизацииРаботники.Физлицо.Пол,
| УвольнениеИзОрганизацииРаботники.Сотрудник.ДатаДоговора КАК ТрудовойДоговорДата,
| УвольнениеИзОрганизацииРаботники.Сотрудник.НомерДоговора КАК ТрудовойДоговорНомер,
| УвольнениеИзОрганизацииРаботники.НомерСтроки КАК НомерСтроки,
| УвольнениеИзОрганизацииРаботники.ДатаУвольнения,
| УвольнениеИзОрганизацииРаботники.СтатьяТКРФ.Наименование КАК СтатьяТКРФ,
| УвольнениеИзОрганизацииРаботники.СтатьяТКРФ.ТекстОснования,
| УвольнениеИзОрганизацииРаботники.ОснованиеУвольнения КАК ОснованиеУвольнения,
| ВЫБОР
| КОГДА Работники.ПериодЗавершения <= УвольнениеИзОрганизацииРаботники.ДатаУвольнения
| И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА Работники.ПодразделениеОрганизацииЗавершения
| ИНАЧЕ Работники.ПодразделениеОрганизации
| КОНЕЦ КАК Подразделение,
| ВЫБОР
| КОГДА Работники.ПериодЗавершения <= УвольнениеИзОрганизацииРаботники.ДатаУвольнения
| И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА Работники.ОЦРВ_ПодразделениеОрганизацииЗавершения
| ИНАЧЕ Работники.ОЦРВ_ПодразделениеОрганизации
| КОНЕЦ КАК ОЦРВ_Подразделение,
| ВЫБОР
| КОГДА Работники.ПериодЗавершения <= УвольнениеИзОрганизацииРаботники.ДатаУвольнения
| И Работники.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| ТОГДА Работники.ДолжностьЗавершения
| ИНАЧЕ Работники.Должность
| КОНЕЦ КАК Должность,
| УвольнениеИзОрганизацииРаботники.Сотрудник.Код КАК ТабельныйНомер,
| УвольнениеИзОрганизацииРаботники.РабочийГодС,
| УвольнениеИзОрганизацииРаботники.РабочийГодПо,
| УвольнениеИзОрганизацииРаботники.ДнейЧасовКомпенсацииУдержанияОтпуска КАК Компенс,
| УвольнениеИзОрганизацииРаботники.ПризнакКомпенсацииОтпуска
|ИЗ
| Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК УвольнениеИзОрганизацииРаботники
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СписокДат.Сотрудник КАК Сотрудник,
| РаботникиОрганизации.ПодразделениеОрганизации.Наименование КАК ПодразделениеОрганизации,
| РаботникиОрганизации.Должность.Наименование КАК Должность,
| РаботникиОрганизации.ПодразделениеОрганизацииЗавершения.Наименование КАК ПодразделениеОрганизацииЗавершения,
| РаботникиОрганизации.ОЦРВ_ПодразделениеОрганизации.Наименование КАК ОЦРВ_ПодразделениеОрганизации,
| РаботникиОрганизации.ОЦРВ_ПодразделениеОрганизацииЗавершения.Наименование КАК ОЦРВ_ПодразделениеОрганизацииЗавершения,
| РаботникиОрганизации.ДолжностьЗавершения.Наименование КАК ДолжностьЗавершения,
| РаботникиОрганизации.ПериодЗавершения КАК ПериодЗавершения
| ИЗ
| (ВЫБРАТЬ
| РаботникиВнутри.Сотрудник КАК Сотрудник,
| МАКСИМУМ(РаботникиВнутри.Период) КАК ДатаПоследнегоИзменения
| ИЗ
| РегистрСведений.РаботникиОрганизаций КАК РаботникиВнутри
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК Док
| ПО РаботникиВнутри.Период <= Док.ДатаУвольнения
| И РаботникиВнутри.Сотрудник = Док.Сотрудник
| ГДЕ
| Док.Ссылка = &ДокументСсылка
| И НЕ Док.Сторно
|
| СГРУППИРОВАТЬ ПО
| РаботникиВнутри.Сотрудник) КАК СписокДат
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизации
| ПО СписокДат.ДатаПоследнегоИзменения = РаботникиОрганизации.Период
| И СписокДат.Сотрудник = РаботникиОрганизации.Сотрудник) КАК Работники
| ПО УвольнениеИзОрганизацииРаботники.Сотрудник = Работники.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
| &ДатаДокумента,
| Физлицо В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| УвольнениеИзОрганизацииРаботники.Сотрудник.Физлицо
| ИЗ
| Документ.УвольнениеИзОрганизаций.РаботникиОрганизации КАК УвольнениеИзОрганизацииРаботники
| ГДЕ
| УвольнениеИзОрганизацииРаботники.Ссылка = &ДокументСсылка)) КАК ФИОФизЛицСрезПоследних
| ПО УвольнениеИзОрганизацииРаботники.Сотрудник.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо
|ГДЕ
| УвольнениеИзОрганизацииРаботники.Ссылка = &ДокументСсылка
| И НЕ УвольнениеИзОрганизацииРаботники.Сторно
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки»;
Иначе
Возврат Неопределено;
КонецЕсли;
Возврат Запрос.Выполнить();
КонецФункции
Функция ПечатьТ61() Экспорт
ТабДокумент = Новый ТабличныйДокумент;
// получаем данные для печати
ВыборкаДляШапки = СформироватьЗапросДляПечати(«ПоРеквизитамДокумента»).Выбрать();
ВыборкаРаботники = СформироватьЗапросДляПечати(«ПоТабличнойЧастиДокумента»).Выбрать();
// Начинаем формировать выходной документ
Пока ВыборкаРаботники.Следующий() Цикл
Макет = ПолучитьМакет(«Т_61»);
ТабДокумент.ПолеСверху = 0;
ТабДокумент.ПолеСлева = 0;
ТабДокумент.ПолеСнизу = 0;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
//Получаем области макета
СекцияРасчетСреднего = Макет.ПолучитьОбласть(«РасчетСреднего»);
СекцияДополнительнаяСтрокаЗаработка = Макет.ПолучитьОбласть(«ДополнительнаяСтрокаЗаработка»);
СекцияЛицеваяСторона = Макет.ПолучитьОбласть(«ЛицеваяСторона»);
СекцияРасчетСреднегоИтого = Макет.ПолучитьОбласть(«РасчетСреднегоИтого»);
СекцияПодвал = Макет.ПолучитьОбласть(«Подвал»);
// выводим данные о руководителях организации
Если ВыборкаДляШапки.Следующий() Тогда
СекцияЛицеваяСторона.Параметры.Заполнить(ВыборкаДляШапки); // Шапка документа.
СекцияЛицеваяСторона.Параметры.НазваниеОрганизации = СокрЛП(СекцияЛицеваяСторона.Параметры.НазваниеОрганизации);
СекцияПодвал.Параметры.Заполнить(ВыборкаДляШапки); // Для подвала.
НомерДокДляПечати = ВыборкаДляШапки.НомерДок;
СекцияЛицеваяСторона.Параметры.НомерДокумента = НомерДокДляПечати;
СекцияЛицеваяСторона.Параметры.ДатаДокумента = ВыборкаДляШапки.ДатаДок;
ВыводитьДатуОзнакомленияСПриказом = ПроцедурыУправленияПерсоналом.ЗначениеУчетнойПолитикиПоПерсоналуОрганизации(глЗначениеПеременной(«глУчетнаяПолитикаПоПерсоналуОрганизации»), СсылкаНаОбъект.Организация, «ПроставлятьАвтоматическиДатуОзнакомленияВКадровыхПриказах»);
КонецЕсли;
// Каждый приказ на отдельной странице.
Если ТабДокумент.ВысотаТаблицы > 0 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПредставлениеДатыДоговора = Формат(ВыборкаРаботники.ТрудовойДоговорДата, «ДЛФ=DD»);
ПредставлениеДатыУвольнения = Формат(ВыборкаРаботники.ДатаУвольнения, «ДЛФ=DD»);
СекцияЛицеваяСторона.Параметры.ДатаУвольнения = ?(ЗначениеЗаполнено(ВыборкаРаботники.ДатаУвольнения), ПредставлениеДатыУвольнения, » «);
СекцияЛицеваяСторона.Параметры.ОснованиеУвольнения = ?(ВыборкаРаботники.СтатьяТКРФ = NULL, «», ВыборкаРаботники.СтатьяТКРФ) + «. » + ВыборкаРаботники.СтатьяТКРФТекстОснования;
СекцияЛицеваяСторона.Параметры.ТабельныйНомер = ВыборкаРаботники.ТабельныйНомер;
СекцияЛицеваяСторона.Параметры.ФИО = ВыборкаРаботники.Работник;
СекцияЛицеваяСторона.Параметры.Подразделение = ВыборкаРаботники.Подразделение;
СекцияЛицеваяСторона.Параметры.Должность = ВыборкаРаботники.Должность;
СекцияЛицеваяСторона.Параметры.РабочийГодС = ВыборкаРаботники.РабочийГодС;
СекцияЛицеваяСторона.Параметры.РабочийГодПо = ВыборкаРаботники.РабочийГодПо;
Если ВыборкаРаботники.ПризнакКомпенсацииОтпуска = Истина Тогда
СекцияЛицеваяСторона.Параметры.ДнейКомпенсации = ВыборкаРаботники.Компенс;
Иначе
СекцияЛицеваяСторона.Параметры.ДнейУдержания = ВыборкаРаботники.Компенс;
КонецЕсли;
ТабДокумент.Вывести(СекцияЛицеваяСторона);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(СекцияРасчетСреднего);
ТабДокумент.Вывести(СекцияДополнительнаяСтрокаЗаработка);
ТабДокумент.Вывести(СекцияПодвал);
КонецЦикла;
Возврат ТабДокумент;
КонецФункции // ПечатьТ61()
Функция Печать(КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
ТабДокумент = ПечатьТ61();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, , );
КонецФункции
// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
мДлинаСуток = 86400; // в секундах
мСведенияОВидахРасчета = Новый Соответствие;
мУдержаниеЗаОтпускУменьшаетНалоги = Неопределено;
Сохраняем нашу готовую печатную форму на диск и запускаем 1С в режиме «Предприятие».
Подключение внешней печатной формы к документу
Подключение внешней печатной формы производится аналогично подключению внешней обработки.
В меню «Операции» выберем пункт «Справочник».
В открывшемся окне выберем справочник «Внешние обработки».
В данном справочнике хранятся все внешние обработки, внешние отчеты и внешние печатные формы, добавленные в систему. Нажмём кнопку добавить на панели справочника.
В появившемся окне нового элемента справочника необходимо указать вид элемента. Выбираем значение «Печатная форма».
Выбираем файл нашей печатной формы
Имя печатной формы в 1С заполнилось автоматически. Теперь необходимо указать «Принадлежность печатной формы». Нажимаем кнопку «Добавить».
Выбираем документ «Увольнение из организаций» и нажимаем «ОК».
Сохраняем нашу внешнюю печатную форму и открываем документ «Увольнение из организаций». В кнопке «Печать» добавился новый пункт с нашей печатной формой «Форма Т-61 (внешняя печатная форма)».
Как оптимизировать работу с программой?
Кроме установки и настройки программы, существует также необходимость обновления 1С, подключение программы к периферическим устройствам и много других задач, отнимающих время ваших сотрудников и замедляющих рабочие процессы.
Даже если у вас есть программисты 1С, мы предлагаем оставить за ними важные стратегические задачи, а за сопровождением 1С к профессионалам, в компанию «ПРОГРАММЫ 93».
Почему нас выбирают?
ООО «ПРОГРАММЫ 93» — это компания с большим штатом сотрудников, в который входят не только специалисты 1С, но и бухгалтера, кадровики, юристы и другие эксперты. Вы больше не зависите от одного сотрудника, вам не нужно тратить деньги на приглашенных специалистов для решения каждой задачи и переживать насчет того, что у вас не хватает компетенции для проверки работы сотрудника. Для вас работает целая команда, любая задача дополнительно проверяется, а заболевший специалист тут же заменяется другим незаметно для вас.
Мы рады предложить вам:
- доработку программы под ваши нужды;
- поддержку продуктов 1С;
- интеграцию программы с сайтом;
- внедрение других продуктов 1С;
- сопровождение бухгалтерского и налогового учета.
Позвоните по номеру телефона, указанному на сайте, или заполните форму обратной связи, чтобы мы могли ответить на все возникающие вопросы и рассказать о том, как начать сотрудничество!
-
Всем добрый день.
Возникла в конторе такая ситуация: требуется на счете-фактуре на услуги указать Грузоотправителя.
1с его не пишет и делает все правильно т.к. если счет выдается на услуги по Грузоотправитель не указывается. Но до нашего начальства это видать не доходит и всеравно требуют вписать.
Грузоотправитель всегда будет один и тот же.Решил разобраться сам.
Как я понял нужно открыть в конфигураторе внешнюю печатную форму (.epf) и уже потом ее менять
но перерыв весь компьютер я не нашел вообще ни одного файла .epf
Где же хранится это форма ведь 1С на печать ее выводит?Скачивал готовую счет-фактуру но 1С при регистрации новой печатной формы выругалась что «Выбранный файл не является внешней обработкой. Либо, данная обработка не предназначена для запуска в этой конфигурации»
Установлена 1С:Предприятие 8.1 (8.1.8.76) Конфигурация: Бухгалтерия предприятия, редакция 1.6 (1.6.5.4)
-
Offline
Mark768
Опытный в 1С- Регистрация:
- 18 май 2007
- Сообщения:
- 158
- Симпатии:
- 1
- Баллы:
- 29
Если Ваша счет-фактура действительно внешняя, то ее можно вытащить по [Сервис] — [Дополнительные отчеты и обработки] — [Дополнительные внешние печатные формы] . Только не в конфигураторе, а в режиме Предприятия. У Вас довольно старая версия, так что путь может немного отличаться. Из этой формы внешних печатных форм можно сохранить обработку на диск для последующего редактирования в конфигкраторе.
Скачанная обработка скорее всего предназначена для платформы 8.0. Нужно открыть ее конфигуратором для конвертирования.
-
В дополнительных печатных формах пусто.
А скачанная обработка действительно для платформы 8.0. Как ее можно конвертировать? -
Offline
GY!BE
- Регистрация:
- 25 янв 2009
- Сообщения:
- 10
- Симпатии:
- 0
- Баллы:
- 1
Собственно, с чего вы ищите ее как будто она внешняя?
В конфигураторе смотрите Общие макеты, там находится макет Счет-фактуры. Помоему вам его нужно изменить.. -
Offline
Mark768
Опытный в 1С- Регистрация:
- 18 май 2007
- Сообщения:
- 158
- Симпатии:
- 1
- Баллы:
- 29
Встроенный макет печатной формы можно найти либо в макетах того документа, из которого форма вызывается, либо в [Общие] — [Общие макеты]. А еще лучше, в модуле документа найти функцию, по которой обрабатывается печаь и в ней будет понятно откуда ноги растут. Как я понял, Вам макет и не нужен вовсе, а нужна именно функция обработки печати.
Обработку или отчет от платформы 8.0 можно конвертировать в 8.1 путем открытие ее в конфигураторе 8.1.
-
Встроенный макет печатной формы нашел, но он открывается только на чтение.
Как открыть модуль документа? -
Offline
Mark768
Опытный в 1С- Регистрация:
- 18 май 2007
- Сообщения:
- 158
- Симпатии:
- 1
- Баллы:
- 29
В конфигураторе на документе правая клавиша мыши — Открыть модуль объекта
-
В конфигураторе с правами администратора зашел:
Конфигурация>Документы>СчетФактураВыданный>Открыть модуль объекта
Открывается только для чтения.
По ходу дела там все открывается только для чтения. (Обьект поставщика не редактируется)
Можно както снять это ограничение? -
А разобрался!
Снял с поддержки и редактирование разрешено. -
т.к грузоотправитель всегда будет один то переделал в модуле документа так:
ИначеЕсли (Найти(ТекПараметр, «Грузоотправитель и его адрес:») <> 0)
и (СокрЛП(ТекПараметр) = «Грузоотправитель и его адрес:») Тогда
ОбластьМакета.Параметры.Установить(т, «Грузоотправитель и его адрес: Моя контора»); -
Offline
parasenok
- Регистрация:
- 3 мар 2009
- Сообщения:
- 25
- Симпатии:
- 0
- Баллы:
- 1
Вдруг все же грузоотправитель поменяется? (т, «Грузоотправитель и его адрес: Моя контора») можно заменить на (т, «Грузоотправитель и его адрес: «+Переменная), где в переменной любая строка из документа/справочника/регистра…
-
Да это конечно правильнее.
Переменную для грузоотправителя и его адреса найти не смог.
Зато здесь на форуме нашел такой совет:закомментировать вот этот кусок:
//Если Не ЕстьТовары Тогда
// ДанныеДляПечати.Грузоотправитель = «»;
// ДанныеДляПечати.Грузополучатель = «»;
//КонецЕсли; -
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Если есть только услуги — зря комментировали читайте письмо МинФина… Тема обсосана до нельзя.
-
да я и сам знаю что зря
письмо показывал своему начальству а они уперлись. Вот надо им этого отправителя и все.
29.05.2020
Откройте программу 1С и перейдите в меню “Администрирование” (в некоторых программах он называется “НСИ и администрирование” или “Компания – Администрирование”) и перейдите в пункт меню “Печатные формы, отчеты и обработки”
Проверьте, что установлена галочку “Дополнительные отчеты и обработки”, и перейдите в раздел “Дополнительные отчеты и обработки”
Если вы хотите добавить новую печатную форму, то нажмите кнопку “Добавить из файла…” (если же нужно установить обновление печатной формы, то установите курсор на строчку с этой печатной формой и нажмите кнопку “Обновить из файла…”)
Если появится окно “Предупреждение безопасности” нажмите продолжить:
Выберите файл печатной формы, который вы скачали
Печатная форма загрузит нужные данные. В поле “Размещение” будет информация о том, для каких документов подходит эта внешняя печатная форма. Нажмите кнопку “Записать и закрыть” – установка на этом завершена.
Проверка работы внешней печатной формы
Теперь можно перейти в документ, для которого была подключена печатная форма и нажав на кнопку “Печать” должны увидеть новый пункт меню. В нашем случае это “Товарный чек | v8PRO.ru”
Если после установки внешней печатной формы, вы захотите скрыть аналогичную встроенную печатную форму или удалить из списка формы, которые не используете, то это можно сделать даже без программиста. Подробнее читайте в нашей инструкции “Как отключить лишние печатные формы“.
Канал про 1С появился в telegram
Следите за выходом отчетов и расширений для 1С на новом Telegram-канале здесь. Нас уже более 700 человек!
Где найти печатные формы |
Я |
29.12.14 — 07:41
Добрый день.
Необходимо немного подкорректировать печатную форму документа «Заказ покупателя» а именно «Заказ покупателя (с учетом корректировок)» не могу найти эту печатную форму, в макетах нету в внешних печатных формах тоже, подскажите плз куда искать? где они вообще могут быть.
конфигурация 1C-Рарус: Автоматизация 1С:Франчайзи, редакция 2.1
1 — 29.12.14 — 07:43
В конфигураторе задай глобальный поиск по Свойству и введи как твоя печатная форма называется.
2 — 29.12.14 — 07:46
(0) Общие макеты тоже посмотрел?
3 — 29.12.14 — 07:48
вот всё что он нашел
СтруктураПечатныхФорм = Новый Структура(«Заказ,ЗаказКорректировка,Счет,СчетКорректировка,Бланк,КоммерческоеПредложение»,
«Заказ покупателя»,
«Заказ покупателя (с учетом корректировок)»,
«Счет на оплату»,
«Счет на оплату (с учетом корректировок)»,
«Бланк товарного наполнения»,
«Коммерческое предложение»);
(2) Смотрел нету
4 — 29.12.14 — 07:50
Не в модулях а в свойствах ищи
5 — 29.12.14 — 07:50
(3) Ну и проследи отладчиком в модуле Заказа куда он прыгает при выводе на печать твоей формы.
6 — 29.12.14 — 07:50
А может в принципе и не найдет
7 — 29.12.14 — 07:50
(3) лезь в саму Печать() и смотри откуда там макет берется.
8 — 29.12.14 — 07:58
Ищи слово «ЗаказКорректировка» в модулях и свойствах
9 — 29.12.14 — 07:58
Процедура ОсновныеДействияФормыПечать(Кнопка)
УниверсальныеМеханизмы.ОткрытьФормуВыбораПечатныхФормОбъекта(ЭтотОбъект, ЭтаФорма);
КонецПроцедуры // ОсновныеДействияФормыПечать()
и потом
Процедура ОткрытьФормуВыбораПечатныхФормОбъекта(Объект, ФормаВладелец) Экспорт
// Открыть форму выбора печатных форм
Форма = ПолучитьОбщуюФорму(«ФормаВыбораПечатныхФорм», ФормаВладелец, Объект);
Если Форма.ОткрытьМодально() <> Истина Тогда
Возврат;
КонецЕсли;
// Печать макета объекта
Для каждого СтрокаКнопки Из Форма.ЭлементыФормы.ДеревоМакетовПечати.ВыделенныеСтроки Цикл
Расшифровка = СтрокаКнопки.Расшифровка;
Если ТипЗнч(Расшифровка) = Тип(«Структура») и Расшифровка.ВидПечатнойФормы = Перечисления.ВидыДополнительныхВнешнихОбработок.ПечатнаяФорма Тогда
//+CRM проверяем, была ли записан объект
Если Не РаботаСДиалогами.ПроверитьМодифицированность(Объект) Тогда
Возврат;
КонецЕсли;
//-CRM
ТабДокумент = НапечататьВнешнююФорму(Объект.Ссылка, Расшифровка);
ЭтоДокумент = Метаданные.Документы.Содержит(Объект.Метаданные());
НапечататьДокумент(ТабДокумент, 0, Форма.НаПринтер, ?(ЭтоДокумент, ОбщегоНазначения.СформироватьЗаголовокДокумента(Объект), Строка(Объект)), Объект.Ссылка, Расшифровка);
Иначе
Объект.Печать(Расшифровка, 0, Форма.НаПринтер);
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ОткрытьФормуВыбораПечатныхФормОбъекта()
10 — 29.12.14 — 08:02
(0)Если ты не можешь найти макет, то тебе туда и не надо:-)
Пригласи специалиста.
11 — 29.12.14 — 08:04
(9) Ну и что говорит отладчик? Пошли в Объект.Печать() или НапечататьДокумент()?
12 — 29.12.14 — 08:06
Покопайся в общей форме «ФормаВыбораПечатныхФорм»
13 — 29.12.14 — 08:44
(0) если не знаешь, где делай перед запуском на печать в конфигураторе Отладка-Оставить, в Предприятии нажимай Печать и далее все F11, пока не найдешь вызов своей печати
14 — 29.12.14 — 08:59
(3) В этом же модуле разве нет
Функция ПечатьСчетаЗаказаКорректировки(Тип) ?
15 — 29.12.14 — 09:03
(14) Да он уже забил на все давно
16 — 29.12.14 — 09:29
(13) Посмотрел кучу всего, обращений к печатной форме не было. %-)
17 — 29.12.14 — 09:31
А не пробовал поставить точку останова в процедуре, которая вызывается при нажатии на кнопку Печать и пройтись отладчиком?
18 — 29.12.14 — 09:35
«1С-Рарус: Автоматизация 1С:Франчайзи» разработана на платформе «1С:Предприятие 8» на основе типовой конфигурации «Управление торговлей», а там это макет СчетЗаказ и Функция ПечатьСчетаЗаказаКорректировки(Тип)
NEGROkot
19 — 29.12.14 — 09:47
(18) Спасибо, всё понял. Бедою была как всегда ограниченность в знаниях конфигуратора.