Главная Блог Внешние печатные формы в 1С
Внешние печатные формы в 1С
В случае если необходимо добавить какую-либо печатную форму в систему, то отличным вариантом это сделать является создание дополнительной печатной формы. При использовании дополнительной печатной формы нет никакой необходимости вносить изменения в конфигурацию.

В случае, если необходимо добавить какую-либо печатную форму в систему, то отличным вариантом это сделать является создание дополнительной печатной формы. При использовании дополнительной печатной формы нет никакой необходимости вносить изменения в конфигурацию.

Часто пользователям необходимо внести небольшие изменения в печатную форму, уже существующую. В этом случае также лучше использовать дополнительную форму, а не вносить поправки в стандартную, т.к. при последующих обновлениях системы могут возникнуть серьёзные проблемы.

Для примера возьмём печатную форму «Унифицированная форма №Т-61» или по-другому «Записка-расчет при прекращении (расторжении) трудового договора с работником (увольнении)». Будем использовать конфигурацию 1С Управление производственным предприятием.

Пользователи попросили добавить в документ «Увольнение из организаций» данную печатную форму. Рассмотрим процесс создания печатной формы, заполнение её макета и подключения печатной формы.

Создание и настройка печатной формы в 1С

Для создания новой обработки в 1С необходимо запустить 1С в режиме «Конфигуратор».

1с внешняя печатная форма

В Конфигураторе в меню «Файл» необходимо выбрать пункт «Новый», так же можно воспользоваться комбинацией клавиш Ctrl+N или кнопкой на панели быстрого доступа.

печатная форма 1с

По сути внешняя печатная форма – это внешняя обработка, предназначенная для формирования печатной формы, поэтому в появившемся окне выбираем вариант «Внешняя обработка» и нажимаем «ОК».

внешняя печатная форма

В открывшемся окне новой обработки необходимо задать ей имя. Назовём нашу обработку «УвольнениеТ61», автоматически формируется синоним, который будет виден пользователям.

1с создание внешней печатной формы

Добавим реквизит «СсылкаНаОбъект» и укажем тип «ДокументСсылка.УвольнениеИзОрганизаций» т.к. мы собираемся подключать обработку именно к данному документу.

1с редактирование печатной формы

Теперь необходимо создать форму для нашей обработки. Выбираем в списке «Формы» и нажимаем «Добавить».

редактирование печатных форм

В появившемся окне формы выбираем параметры для формы нашей обработки. Тип формы установим «Форма обработки», проконтролируем флаг «Назначить форму основной». Можно задать форме имя, но мы оставим стандартное. В данном примере оно не играет никакой роли. Нажимаем «Далее».

настройка печатных форм

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

1с печатные формы изменение

Нажимаем правой кнопкой мыши на кнопку «Выполнить» и выбираем пункт «КнопкаВыполнитьНажатие».

настройка печатной формы 1с

В процедуру выполнить нажатие добавим следующий код:

печатная форма

Нужна помощь с настройкой или внедрением 1С? Свяжитесь с нами!
Если у вас остались вопросы, вы можете оставить номер телефона и мы с вами свяжемся

 

Так же нам понадобятся две переменные «ВалютаРегламентированногоУчета» и «ВалютаУправленческогоУчёта».

заполнение печатной формы

В модуле формы больше никакого кода писать не нужно. Следующим шагом создадим макет печатной формы. Выберем «Макет» и нажмём кнопку «Добавить»

внешние формы 1С

В появившемся окне необходимо установить имя макета. Назовём макет «Т_61» и установим тип макета «Табличный документ».

внешняя печатная форма 1С

Перед нами откроется окно пустого табличного документа, которое необходимо заполнить в соответствии с внешним видом «Унифицированной формы №Т-61». Опустим шаги по заполнению макета, покажем только конечный результат.

Создание и настройка печатных форм в 1С

Создание внешних печатных форм 1С

Заполнение макета печатной формы

Код для заполнения макета необходимо расположить в «Модуле объекта». Для этого нажмём на кнопку «Действия» нашей обработки и выберем пункт «Открыть модуль объекта».

Создание внешней печатной формы в 1С 8.3

Процесс написания кода аналогичен процессу заполнения обычного табличного документа, поэтому приведём готовый листинг кода, разобраться в котором начинающим программистам не составит никакого труда.

Перем мДлинаСуток;

// Механизм исправлений

Перем мВосстанавливатьДвижения;

Перем мСоответствиеДвижений;

Перем мИсправляемыйДокумент;

Функция СформироватьЗапросДляПечати(Режим)

Запрос = Новый Запрос;

// Установим параметры запроса

Запрос.УстановитьПараметр(«ДокументСсылка»,            СсылкаНаОбъект.Ссылка);

Запрос.УстановитьПараметр(«ДатаДокумента»,              СсылкаНаОбъект.Дата);

Запрос.УстановитьПараметр(«Организация»,     СсылкаНаОбъект.Организация);

Если Режим = «ПоРеквизитамДокумента» Тогда

Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;

Запрос.УстановитьПараметр(«СтруктурнаяЕдиница»,СсылкаНаОбъект.Организация);

Запрос.Текст = ФормированиеПечатныхФормЗК.ПолучитьТекстЗапросаПоОтветственнымЛицам(

«ДатаДокумента»,

«ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)

|И СтруктурнаяЕдиница = &Организация»);

Запрос.Выполнить();

Запрос.Текст =

«ВЫБРАТЬ РАЗРЕШЕННЫЕ

|              УвольнениеИзОрганизаций.Номер КАК НомерДок,

|              УвольнениеИзОрганизаций.Дата КАК ДатаДок,

|              УвольнениеИзОрганизаций.Организация.НаименованиеПолное КАК НазваниеОрганизации,

|              УвольнениеИзОрганизаций.Организация.КодПоОКПО КАК КодПоОКПО,

|              ОтветственныеЛицаОрганизаций.Должность КАК ДолжностьРуководителя,

|              ОтветственныеЛицаОрганизаций.НаименованиеОтветственногоЛица КАК ФИОРуководителя,

|              УвольнениеИзОрганизаций.Организация.Префикс

|ИЗ

|              Документ.УвольнениеИзОрганизаций КАК УвольнениеИзОрганизаций

|                              ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеОбОтветственномЛице КАК ОтветственныеЛицаОрганизаций

|                              ПО УвольнениеИзОрганизаций.Организация = ОтветственныеЛицаОрганизаций.СтруктурнаяЕдиница

|ГДЕ

|              УвольнениеИзОрганизаций.Ссылка = &ДокументСсылка»;

ИначеЕсли Режим = «ПоТабличнойЧастиДокумента» Тогда

Запрос.УстановитьПараметр(«ГоловнаяОрганизация», ОбщегоНазначенияЗК.ГоловнаяОрганизация(СсылкаНаОбъект.Организация));

Запрос.УстановитьПараметр(«ПустаяОрганизация» , Справочники.Организации.ПустаяСсылка());

Запрос.Текст =

«ВЫБРАТЬ РАЗРЕШЕННЫЕ

|              ЕСТЬ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С? Свяжитесь с нами!
Если у вас остались вопросы, вы можете оставить номер телефона и мы с вами свяжемся

 

Подключение внешней печатной формы к документу

Подключение внешней печатной формы производится аналогично подключению внешней обработки.

В меню «Операции» выберем пункт «Справочник».

подключение внешней формы 1С

В открывшемся окне выберем справочник «Внешние обработки».

Печатные формы 1С

В данном справочнике хранятся все внешние обработки, внешние отчеты и внешние печатные формы, добавленные в систему. Нажмём кнопку добавить на панели справочника.

внешние формы 1С

В появившемся окне нового элемента справочника необходимо указать вид элемента. Выбираем значение «Печатная форма».

регистрация внешней печатной формы

Выбираем файл нашей печатной формы

создание внешней печатной формы

Имя печатной формы в 1С заполнилось автоматически. Теперь необходимо указать «Принадлежность печатной формы». Нажимаем кнопку «Добавить».

принадлежность печатной формы 1С

Выбираем документ «Увольнение из организаций» и нажимаем «ОК».

принадлежность печатной формы

Сохраняем нашу внешнюю печатную форму и открываем документ «Увольнение из организаций». В кнопке «Печать» добавился новый пункт с нашей печатной формой «Форма Т-61 (внешняя печатная форма)».

сохранение внешней печатной формы 1с

Как оптимизировать работу с программой?

Кроме установки и настройки программы, существует также необходимость обновления 1С, подключение программы к периферическим устройствам и много других задач, отнимающих время ваших сотрудников и замедляющих рабочие процессы.

Даже если у вас есть программисты 1С, мы предлагаем оставить за ними важные стратегические задачи, а за сопровождением 1С к профессионалам, в компанию «ПРОГРАММЫ 93».

Почему нас выбирают?

ООО «ПРОГРАММЫ 93» — это компания с большим штатом сотрудников, в который входят не только специалисты 1С, но и бухгалтера, кадровики, юристы и другие эксперты. Вы больше не зависите от одного сотрудника, вам не нужно тратить деньги на приглашенных специалистов для решения каждой задачи и переживать насчет того, что у вас не хватает компетенции для проверки работы сотрудника. Для вас работает целая команда, любая задача дополнительно проверяется, а заболевший специалист тут же заменяется другим незаметно для вас.

Мы рады предложить вам:

Позвоните по номеру телефона, указанному на сайте, или заполните форму обратной связи, чтобы мы могли ответить на все возникающие вопросы и рассказать о том, как начать сотрудничество!

Мы с радостью свяжемся с вами!
Если у вас остались вопросы, вы можете оставить номер телефона и мы с вами свяжемся

Полезно знать

Все новости
1 мая 2019
Чтение xml 1с — рассматриваем на примере
XML – это расширяемый язык разметки, широко применяющийся в 1С для обмена данными между конфигурациями и между другими внешними источниками данных. Предлагаем рассмотреть два варианта работы с xml 1С -  средствами внутреннего языка и средствами внутреннего языка с использованием XDTO пакетов.
27 декабря 2018
Виды программ 1С
Вы подбираете подходящий продукт для своей компании? Еще не пользовались 1С или возникла необходимость в смене версии? Мы расскажем о том, какие бывают программы 1С, чем они отличаются друг от друга и в каких случаях, какие продукты подойдут лучше всего.
9 февраля 2019
Печать штрихкодов в 1С: инструкция
Как в 1С вывести на печать штрихкод? Что необходимо установить и настроить для этого? Предлагаем нашим читателям подробную инструкцию по установке компоненты, добавлению штрихкода в ценник, созданию макета и вывода его на печать.
23 декабря 2018
Подключение онлайн касс к 1С
Подключение онлайн кассы к 1С удобно не только с точки зрения отчетности и оптимизации работ, но и для дополнительной аналитики, которая может реально помочь вашему бизнесу. Сегодня мы расскажем, как в 1С подключить ККС онлайн самостоятельно и что можно сделать, чтобы решать подобные задачи наиболее эффективно и в короткие сроки.
Мы с радостью свяжемся с вами!
Если у вас остались вопросы, вы можете оставить номер телефона и мы с вами свяжемся