1с как найти внешнюю печатную форму

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

Внешняя печатная форма — это обычная внешняя обработка, соответствующая определенным требованиям. Такую обработку можно подключить к какой-либо типовой конфигурации и тем самым добавить новую печатную форму и/или заменить существующую.

Кроме этого, нужно отметить, что создание внешних печатных форм различается для обычного приложения (Бухгалтерия 2.0.*, ЗиУП 2.5.*, УТ 10.3.*) и управляемого приложения (Бухгалтерия 3.0.*, ЗиУП 3.*, УТ 11.*). В статье будут рассмотрены оба варианта.

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

Содержание

  1. Внешняя печатная форма в управляемом приложении
  2. Создание
  3. Подключение
  4. Внешняя печатная форма в обычном приложении
  5. Создание
  6. Подключение

Внешняя печатная форма в управляемом приложении

Начнем с того, что в настоящее время встречается чаще — с управляемого приложения. В тексте ниже будет приведен пример создания и подключения внешней печатной формы для документа «Приходный кассовый ордер» (Бухгалтерия предприятия, редакция 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».

Вкратце повторю основные этапы:

  1. Открываем вкладку «Администрирование» и переходим в раздел «Печатные формы, отчеты и обработки»;
  2. Устанавливаем галку «Дополнительные отчеты и обработки» и переходим в раздел «Дополнительные отчеты и обработки»;
  3. Жмем кнопку «Добавить из файла» и выбираем файл печатной формы;
  4. (Необязательно) Меняем наименование, комментарии, настраиваем видимость, изменяем размещение;
  5. Жмем кнопку «Записать и закрыть».

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

Теперь рассмотрим создание внешней печатной формы в обычном приложении — создадим печатную форму для  документа «Приходный кассовый ордер» (Бухгалтерия предприятия, редакция 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».

Основные этапы:

  1. Открываем справочник внешних печатных форм (Сервис->Дополнительные отчеты и обработки->Дополнительные внешние печатные формы);
  2. Добавляем новый элемент справочника и указываем файл печатной формы;
  3. Записываем элемент.
  4. (Необязательно) Меняем имеющиеся настройки — представления, отборы, дополнительные параметры и прочее.

На этом все, надеюсь, что эта статья была Вам полезна.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Загрузка…

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

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

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

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

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

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

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

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

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

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

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

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С

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

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

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

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

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

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

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

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

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

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

  • доработку программы под ваши нужды;
  • поддержку продуктов 1С;
  • интеграцию программы с сайтом;
  • внедрение других продуктов 1С;
  • сопровождение бухгалтерского и налогового учета.

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

  1. Всем добрый день.

    Возникла в конторе такая ситуация: требуется на счете-фактуре на услуги указать Грузоотправителя.
    1с его не пишет и делает все правильно т.к. если счет выдается на услуги по Грузоотправитель не указывается. Но до нашего начальства это видать не доходит и всеравно требуют вписать.
    Грузоотправитель всегда будет один и тот же.

    Решил разобраться сам.
    Как я понял нужно открыть в конфигураторе внешнюю печатную форму (.epf) и уже потом ее менять
    но перерыв весь компьютер я не нашел вообще ни одного файла .epf
    Где же хранится это форма ведь 1С на печать ее выводит?

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

    Установлена 1С:Предприятие 8.1 (8.1.8.76) Конфигурация: Бухгалтерия предприятия, редакция 1.6 (1.6.5.4)


  2. Mark768

    Offline

    Mark768
    Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29

    Если Ваша счет-фактура действительно внешняя, то ее можно вытащить по [Сервис] — [Дополнительные отчеты и обработки] — [Дополнительные внешние печатные формы] . Только не в конфигураторе, а в режиме Предприятия. У Вас довольно старая версия, так что путь может немного отличаться. Из этой формы внешних печатных форм можно сохранить обработку на диск для последующего редактирования в конфигкраторе.

    Скачанная обработка скорее всего предназначена для платформы 8.0. Нужно открыть ее конфигуратором для конвертирования.

  3. В дополнительных печатных формах пусто.
    А скачанная обработка действительно для платформы 8.0. Как ее можно конвертировать?


  4. GY!BE

    Offline

    GY!BE

    Регистрация:
    25 янв 2009
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1

    Собственно, с чего вы ищите ее как будто она внешняя?
    В конфигураторе смотрите Общие макеты, там находится макет Счет-фактуры. Помоему вам его нужно изменить..


  5. Mark768

    Offline

    Mark768
    Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29

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

    Обработку или отчет от платформы 8.0 можно конвертировать в 8.1 путем открытие ее в конфигураторе 8.1.

  6. Встроенный макет печатной формы нашел, но он открывается только на чтение.
    Как открыть модуль документа?


  7. Mark768

    Offline

    Mark768
    Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    158
    Симпатии:
    1
    Баллы:
    29

    В конфигураторе на документе правая клавиша мыши — Открыть модуль объекта

  8. В конфигураторе с правами администратора зашел:
    Конфигурация>Документы>СчетФактураВыданный>Открыть модуль объекта
    Открывается только для чтения.
    По ходу дела там все открывается только для чтения. (Обьект поставщика не редактируется)
    Можно както снять это ограничение?

  9. А разобрался!
    Снял с поддержки и редактирование разрешено.

  10. т.к грузоотправитель всегда будет один то переделал в модуле документа так:

    ИначеЕсли (Найти(ТекПараметр, «Грузоотправитель и его адрес:») <> 0)
    и (СокрЛП(ТекПараметр) = «Грузоотправитель и его адрес:») Тогда
    ОбластьМакета.Параметры.Установить(т, «Грузоотправитель и его адрес: Моя контора»);


  11. parasenok

    Offline

    parasenok

    Регистрация:
    3 мар 2009
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1

    Вдруг все же грузоотправитель поменяется? (т, «Грузоотправитель и его адрес: Моя контора») можно заменить на (т, «Грузоотправитель и его адрес: «+Переменная), где в переменной любая строка из документа/справочника/регистра…

  12. Да это конечно правильнее.
    Переменную для грузоотправителя и его адреса найти не смог.
    Зато здесь на форуме нашел такой совет:

    закомментировать вот этот кусок:

    //Если Не ЕстьТовары Тогда
    // ДанныеДляПечати.Грузоотправитель = «»;
    // ДанныеДляПечати.Грузополучатель = «»;
    //КонецЕсли;


  13. BabySG

    Offline

    BabySG
    Администраторы
    Команда форума
    Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    18
    Баллы:
    29

    Если есть только услуги — зря комментировали читайте письмо МинФина… Тема обсосана до нельзя.

  14. да я и сам знаю что зря
    письмо показывал своему начальству а они уперлись. Вот надо им этого отправителя и все.


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

29.05.2020

Откройте программу 1С и перейдите в меню “Администрирование” (в некоторых программах он называется “НСИ и администрирование” или “Компания – Администрирование”) и перейдите в пункт меню “Печатные формы, отчеты и обработки”

Администрирование Печатные формы 1с

Проверьте, что установлена галочку “Дополнительные отчеты и обработки”, и перейдите в раздел “Дополнительные отчеты и обработки”

Галочка дополнительные отчеты и обработки

Если вы хотите добавить новую печатную форму, то нажмите кнопку “Добавить из файла…” (если же нужно установить обновление печатной формы, то установите курсор на строчку с этой печатной формой и нажмите кнопку “Обновить из файла…”)

Добавить из файла

Если появится окно “Предупреждение безопасности” нажмите продолжить:

Предупреждение безопасности

Выберите файл печатной формы, который вы скачали

Выбрать файл

Печатная форма загрузит нужные данные. В поле “Размещение” будет информация о том, для каких документов подходит эта внешняя печатная форма. Нажмите кнопку “Записать и закрыть” – установка на этом завершена.

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

Проверка работы внешней печатной формы

Теперь можно перейти в документ, для которого была подключена печатная форма и нажав на кнопку “Печать” должны увидеть новый пункт меню. В нашем случае это “Товарный чек | v8PRO.ru”

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

Если после установки внешней печатной формы, вы захотите скрыть аналогичную встроенную печатную форму или удалить из списка формы, которые не используете, то это можно сделать даже без программиста. Подробнее читайте в нашей инструкции “Как отключить лишние печатные формы“.

Канал про 1С появился в telegram

Следите за выходом отчетов и расширений для 1С на новом Telegram-канале здесь. Нас уже более 700 человек!

Канал про 1С в Telegram (1c в Телеграм)

Где найти печатные формы

Я
   NEGROkot

29.12.14 — 07:41

Добрый день.

Необходимо немного подкорректировать печатную форму документа «Заказ покупателя» а именно «Заказ покупателя (с учетом корректировок)» не могу найти эту печатную форму, в макетах нету в внешних печатных формах тоже, подскажите плз куда искать? где они вообще могут быть.

конфигурация 1C-Рарус: Автоматизация 1С:Франчайзи, редакция 2.1

   1976vas

1 — 29.12.14 — 07:43

В конфигураторе задай глобальный поиск по Свойству и введи как твоя печатная форма называется.

   Godofsin

2 — 29.12.14 — 07:46

(0) Общие макеты тоже посмотрел?

   NEGROkot

3 — 29.12.14 — 07:48

вот всё что он нашел

СтруктураПечатныхФорм = Новый Структура(«Заказ,ЗаказКорректировка,Счет,СчетКорректировка,Бланк,КоммерческоеПредложение»,

                                            «Заказ покупателя»,

                                            «Заказ покупателя (с учетом корректировок)»,

                                            «Счет на оплату»,

                                            «Счет на оплату (с учетом корректировок)»,

                                            «Бланк товарного наполнения»,

                                            «Коммерческое предложение»);

(2) Смотрел нету

   1976vas

4 — 29.12.14 — 07:50

Не в модулях а в свойствах ищи

   Godofsin

5 — 29.12.14 — 07:50

(3) Ну и проследи отладчиком в модуле Заказа куда он прыгает при выводе на печать твоей формы.

   1976vas

6 — 29.12.14 — 07:50

А может в принципе и не найдет

   anatoly

7 — 29.12.14 — 07:50

(3) лезь в саму Печать() и смотри откуда там макет берется.

   Случайный прохожий

8 — 29.12.14 — 07:58

Ищи слово «ЗаказКорректировка» в модулях и свойствах :)

   NEGROkot

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

Покопайся в общей форме «ФормаВыбораПечатныхФорм» :)

   ИС-2

13 — 29.12.14 — 08:44

(0) если не знаешь, где делай перед запуском на печать в конфигураторе Отладка-Оставить, в Предприятии нажимай Печать и далее все F11, пока не найдешь вызов своей печати

   PaulBC

14 — 29.12.14 — 08:59

(3) В этом же модуле разве нет

Функция ПечатьСчетаЗаказаКорректировки(Тип) ?

   1976vas

15 — 29.12.14 — 09:03

(14) Да он уже забил на все давно

   NEGROkot

16 — 29.12.14 — 09:29

(13) Посмотрел кучу всего, обращений к печатной форме не было. %-)

   Krolik Bezobraznik

17 — 29.12.14 — 09:31

А не пробовал поставить точку останова в процедуре, которая вызывается при нажатии на кнопку Печать и пройтись отладчиком?

   PaulBC

18 — 29.12.14 — 09:35

«1С-Рарус: Автоматизация 1С:Франчайзи» разработана на платформе «1С:Предприятие 8» на основе типовой конфигурации «Управление торговлей», а там это макет СчетЗаказ и Функция ПечатьСчетаЗаказаКорректировки(Тип)

  

NEGROkot

19 — 29.12.14 — 09:47

(18) Спасибо, всё понял. Бедою была как всегда ограниченность в знаниях конфигуратора.

Понравилась статья? Поделить с друзьями:
  • Как легко найти работу в москве
  • Как найти процент выполнения плана по объему
  • Как найти мой ip адрес телефона
  • Как составить организационную структуру предприятия по бухгалтерии
  • Shell как найти файл