Как открыть модуль макета 1с
Перейти к содержимому

Как открыть модуль макета 1с

  • автор:

Макет печатной формы документа

Откроем в конфигураторе окно редактирования объекта конфигурации Документ «ПриходнаяНакладная». Перейдем на закладку «Макеты», нажмем кнопку «Конструкторы» и запустим конструктор печати.

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

На втором шаге определим реквизиты документа, которые будет содержать шапка печатной формы:

На третьем шаге определим, что все реквизиты табличной части будут отображены в печатной форме:

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

Здесь ничего не меняем, тем самым согласимся с тем, что команда для вызова процедуры формирования печатной формы будет помещена в командную панель формы, в раздел «Важное».

Нажмем OK. В конфигураторе откроется модуль команды «Печать», модуль менеджера документа «ПриходнаяНакладная» и макет этого документа.

Модуль команды Печать

&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ТабДок = Новый ТабличныйДокумент; Печать(ТабДок, ПараметрКоманды); ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Ложь; ТабДок.ТолькоПросмотр = Ложь; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); КонецПроцедуры &НаСервере Процедура Печать(ТабДок, ПараметрКоманды) Документы.ПриходнаяНакладная.Печать(ТабДок, ПараметрКоманды); КонецПроцедуры

Модуль менеджера документа

Процедура Печать(ТабДок, Ссылка) Экспорт Макет = Документы.ПриходнаяНакладная.ПолучитьМакет("Печать"); Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладная.Дата, | ПриходнаяНакладная.Номер, | ПриходнаяНакладная.Склад, | ПриходнаяНакладная.Материалы.( | НомерСтроки, | Материал, | Количество, | Цена, | Сумма | ) |ИЗ | Документ.ПриходнаяНакладная КАК ПриходнаяНакладная |ГДЕ | ПриходнаяНакладная.Ссылка В (&Ссылка)"; Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка"); ОбластьМатериалыШапка = Макет.ПолучитьОбласть("МатериалыШапка"); ОбластьМатериалы = Макет.ПолучитьОбласть("Материалы"); ТабДок.Очистить(); ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДок.Вывести(ОбластьЗаголовок); Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьМатериалыШапка); ВыборкаМатериалы = Выборка.Материалы.Выбрать(); Пока ВыборкаМатериалы.Следующий() Цикл ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы); ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень()); КонецЦикла; ВставлятьРазделительСтраниц = Истина; КонецЦикла; КонецПроцедуры

Редактирование макета

Добавим новую область для вывода итоговой суммы документа. Выделим мышью две пустые строки под табличной частью документа и выполним пункт главного меню Таблица > Имена > Назначить имя. Назовем область Всего , нажмем ОК.

В созданной области, в колонке Цена , напишем ВСЕГО , а в колонке Сумма напишем ВсегоПоДокументу :

Вызвав палитру свойств для последней заполненной нами ячейки, в свойстве Заполнение укажем, что в этой ячейке будет находиться не текст, а параметр.

Откроем модуль менеджера документа «ПриходнаяНакладная», найдем в нем процедуру Печать и отредактируем ее следующим образом

Процедура Печать(ТабДок, Ссылка) Экспорт Макет = Документы.ПриходнаяНакладная.ПолучитьМакет("Печать"); Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ | ПриходнаяНакладная.Дата, | ПриходнаяНакладная.Номер, | ПриходнаяНакладная.Склад, | ПриходнаяНакладная.Материалы.( | НомерСтроки, | Материал, | Количество, | Цена, | Сумма | ) |ИЗ | Документ.ПриходнаяНакладная КАК ПриходнаяНакладная |ГДЕ | ПриходнаяНакладная.Ссылка В (&Ссылка)"; Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка"); ОбластьМатериалыШапка = Макет.ПолучитьОбласть("МатериалыШапка"); ОбластьМатериалы = Макет.ПолучитьОбласть("Материалы"); // получаем область макета «Всего» ОбластьВсего = Макет.ПолучитьОбласть("Всего"); ТабДок.Очистить(); ВставлятьРазделительСтраниц = Ложь; // цикл по документам (на случай печати списка) Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ТабДок.Вывести(ОбластьЗаголовок); Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка, Выборка.Уровень()); ТабДок.Вывести(ОбластьМатериалыШапка); ВыборкаМатериалы = Выборка.Материалы.Выбрать(); // сумма табличной части документа СуммаИтог = 0; Пока ВыборкаМатериалы.Следующий() Цикл ОбластьМатериалы.Параметры.Заполнить(ВыборкаМатериалы); ТабДок.Вывести(ОбластьМатериалы, ВыборкаМатериалы.Уровень()); // увеличиваем сумму на каждой итерации СуммаИтог = СуммаИтог + ВыборкаМатериалы.Сумма; КонецЦикла; // устанавливаем значение параметра области ОбластьВсего.Параметры.ВсегоПоДокументу = СуммаИтог; // выводим область макета «Всего» ТабДок.Вывести(ОбластьВсего); ВставлятьРазделительСтраниц = Истина; КонецЦикла; КонецПроцедуры
  • Как создать документ и открыть его форму?
  • Заполнение реквизитов нового документа
  • Передача данных между управляемыми формами
  • Проведение документов
  • События при записи и проведении документа

Шаблон и параметры макета печатной формы в программах 1C

В качестве примера рассмотрим редактирование в программе Бухгалтерия предприятия 3.0 документа «Накладная» как другой макет. Для этого перейдем в раздел «Администрирование» — «Печатные формы, отчеты и обработки» — «Макеты печатных форм». Помимо текста, ячейки макета содержат имена параметров, которые заключены в скобки <>. Благодаря параметрам макета в нужную ячейку можно вводить необходимые данные, но не стоит забывать, что в модуле программы должно быть указаны значение параметра.

1.png

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

2.png

На экране появится окно, в котором будет видно, что значение ячейки — это параметр.

3.png

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

4.png
Для этого нужно в значении ячейки товара отметить, что это шаблон, а при выборе значения шаблона в поле «Текст» при указании параметра использовать квадратные скобки.
5.png
После сохранения макета, рядом появляется карандаш, который говорит о том, что макет изменялся. В случае, если нужно будет вернуться к исходному макету, нужно будет нажать на одну из кнопок в верхней части подраздела «Макеты печатных форм»: «Использовать стандартный макет», «Удалить измененный макет»
6.png
При печати документа, использующего нужную печатную форму, нужные изменения будут отображаться.
7.png
В макете печатной формы таким же образом можно добавить текст с форматированием. Оформление применяется для всей ячейки, следовательно, нельзя, используя шаблон, в одной ячейке применить сразу несколько вариантов форматирования.

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

Если у Вас остались или же появились вопросы, можете обратиться на линию консультаций нашей компании (тел. 66-88-79), и квалифицированные специалисты обязательно Вам помогут.

Это может быть вам интересно:

1С, открыть форму списка из печатной формы (табличного документа)

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

Сделать это можно только в том случае, если табличный документ выведен в форму (в нашем примере форма обработки).

Порядок действий:

  • Добавим следующий программный код в процедуру «ПриСозданииНаСервере» формы нашей обработки:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Макет = Обработки.ВставитьСсылкуВТабличныйДокумент.ПолучитьМакет("Макет"); ОбластьМакета = Макет.ПолучитьОбласть("Детали"); ОбластьМакета.Параметры.Представление = "Заказы покупателей"; ТабДок.Вывести(ОбластьМакета); ОбластьМакета.Параметры.Представление = "Расходные накладные"; ТабДок.Вывести(ОбластьМакета); ТабДок.ТолькоПросмотр = Истина; КонецПроцедуры 
  • Создадим обработчик выбора табличного документа;

  • Программный код процедуры обработки выбора:
&НаКлиенте Процедура ТабДокВыбор(Элемент, Область, СтандартнаяОбработка) Если Элемент.ТекущаяОбласть.Текст = "Заказы покупателей" Тогда ОткрытьФорму("Документ.ЗаказПокупателя.ФормаСписка"); ИначеЕсли Элемент.ТекущаяОбласть.Текст = "Расходные накладные" Тогда ОткрытьФорму("Документ.РасходнаяНакладная.ФормаСписка"); КонецЕсли; КонецПроцедуры 

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

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

Добрый день! В этой статье мы рассмотрим создание внешней печатной формы «Авансовый отчёт» на основании имеющейся «Авансовый отчёт (АО-1)» с помощью одной интересной и полезной функции 1С, «Замера производительности». Она позволяет, в том числе, отследить, какие блоки кода скомпилировались в ходе работы той или иной функции или процедуры. Преимущество внешних печатных форм заключается в том, что их можно настраивать или дорабатывать, изменять для конкретных нужд, в отличие от неизменяемой стандартной печатной формы. Для начала, поскольку мы, всё-таки, создаём внешнюю печатную форму, потребуется создание внешней обработки. В левом верхнем углу ищем «Файл», далее «Новый» и жмём «Внешняя обработка» (рис. 1). Описанные ниже действия стандартны для создания внешней обработки.
Рисунок 1 Создание внешней обработки
Назначим нашей обработке имя и синоним и перейдём в модуль внешней обработки. Для этого снизу в меню процедуры нажмём на кнопку «Действия → Открыть модуль объекта» (рис. 2).
Рисунок 2 Открытие модуля объекта при создании внешней обработки
Затем в модуле объекта пропишем ряд типовых для всех внешних обработок функций и процедур (рис. 3-4).
Рисунок 3 Код в модуле объекта при создании внешней обработки

Рисунок 4 Пример кода в модуле объекта при создании внешней обработки
Сохраним полученную процедуру (нажмём сочетание клавиш Ctrl + S или перейдём в «Файл → Сохранить»).

Рисунок 5 Сохранение при создании внешней обработки
Выбираем нужную локацию и сохраняем. Далее начинается самое интересное. Вернёмся к нашему модулю объекта. Поставим точку останова (нажав F9) около любой строки кода в модуле объекта и начинаем отладку (нажав F5 или через «Отладка → Начать отладку») (рис. 6).
Рисунок 6 Запуск отладки – первый шаг при создании внешней печатной формы
После этого открываем нужный нам объект, для которого мы создаём данную обработку. В нашем случае это документ «Авансовые отчёты».

2. Использование Замера производительности

При всё также запущенной программе 1С:Предприятие 8 переключаемся в режим Конфигуратора. Всё в том же меню «Отладка» жмём «Замер производительности» (рис. 7).
Рисунок 7 Запуск Замера производительности Затем переходим обратно на уже запущенный режим версии 1С:Предприятия 8, жмём пункт «Печать» и выбираем ту стандартную обработку, на основе которой будет создаваться наша. В нашем случае это «Авансовый отчёт АО-1» (рис. 8). Жмём на неё.
Рисунок 8 Стандартная обработка Авансового отчета АО-1
Открылась стандартная (встроенная) печатная форма (рис. 9).
Рисунок 9 Печатная форма Авансового отчета АО-1
Снова, не закрывая режим конфигурации 1С:Предприятия 8, переходим в режим Конфигуратора. Также как включали режим Замера производительности (рисунок 7), выключаем его. Откроется таблица со всеми выполненными процедурами и функциями (рис. 10).
Рисунок 10 Результат замера производительности
Отсортируем результаты запроса по модулю – кликнем по любой строке и откроем модуль Менеджера нашего документа. Именно здесь, в основном, и формируются все необходимые процедуры и функции. Найдём здесь процедуру, содержащую код запроса (обычно именно через код запроса формируется то, что будет на печатной форме). В данном случае она называется «ПечатьАвансовогоОтчета» (рис. 11). Откомпилированные процедуры и функции помечаются серым значком слева.
Рисунок 11 Функция ПечатьАвансовогоОтчета в программе 1С:Предприятие 8
Копируем её в нашу обработку (рис. 12), кроме последних строк. В данном случае они нам не пригодятся (рис. 13).

Рисунок 12 Функция ПечатьАвансовогоОтчета в программе 1С:Предприятие 8 в нашей обработке

Рисунок 13 Строки кода из ПечатьАвансовогоОтчета не для копирования
Теперь всё в том же модуле менеджера найдём процедуру, ответственную за непосредственно вывод на печать (рис. 14). Здесь нас интересует блок печати авансового отчёта М4.

Рисунок 14 Печать Авансового отчета АО-1
Копируем и вставляем в нашу обработку эту процедуру, убрав из передаваемых значений ПараметрыПечати (это важно!), оставляем только блок авансового отчёта (рис. 15)

Рисунок 15 Блок АвансовыйОтчет в программе 1С:Предприятие 8
Далее заменим имя макета «Аванс_Отчет» на то имя макета, который прописали в своей обработке. Ищем функцию «СведенияОВнешнейОбработке», в ней – пункт «ДобавитьКоманды» и наш идентификатор. Это прописанная слитно, с заглавными буквами фраза (рис. 16).

Рисунок 16 Задаем имя макета в программе 1С:Предприятие 8
Оттуда же берём синоним макета (фраза с пробелами, скобками) (рис. 17), которым мы заменяем фразу «Авансовый отчет» в процедуре «Печать».

Рисунок 17 В данном случае синонимом макета является фраза «Авансовый отчёт (внешняя обработка)»
Вот так наш изменённый блок кода выглядит в процедуре «Печать» теперь (рис. 18).

Рисунок 18 Текущий код в процедуре печать в программе 1С:Предприятие 8
Как мы видим, процедура «Печать» также обращается к некоему макету «ПФ.MXL_АвансовыйОтчет». Найдём его в нашем конфигураторе в макетах документа АвансовыйОтчет (рис. 19).

Рисунок 19 Макет «ПФ.MXL_АвансовыйОтчет» у документа «АвансовыйОтчет»
Теперь просто скопируем (перетащим) макет с документа в нашу обработку (рис. 20).

Рисунок 20 Перенесённый макет документа при создании внешней печатной формы в 1С
Затем «отсоединим» в нашей обработке (рис. 21) макет от документа, сделав его независимым (в противном случае наша обработка будет всегда обращаться только к макету в конфигурации, игнорируя наш, измененные / добавленные поля там и проч). Для этого в процедуре «Печать» просто убираем фразу «Документ.АвансовыйОтчет» (рис. 22).

Рисунок 21 Неизменная процедура при создании внешней печатной формы в 1С

Рисунок 22 Итоговая процедура при создании внешней печатной формы
Сохраняем обработку (Ctrl+S). Как мы видим, сохраниться не даёт ошибка (рис. 23) о том, что не хватает процедуры «ПолучитьДанныеДокументов».

Рисунок 23 Ошибка об отсутствии процедуры или функции при создании внешней печатной формы
Найдём её в модуле менеджера документа «Авансовый отчёт» (рис. 24) и скопируем в нашу обработку. Сохраняем обработку (Ctrl+S).

Рисунок 24 Функция ПолучитьДанныеДокумента в программе 1С:Предприятие 8
Теперь нам нужно добавить в обработку реквизит (в нашем случае он называется «СсылкаНаОткрываемыйДокумент»). Важно, чтобы его длина не была неограниченной – ставим 30 символов. Тип – «ДокументСсылка». Далее требуется добавить форму и вывести созданный реквизит на форму, далее – создать команду (у нас это «Открыть документ») и также вынести её на форму. Зачем это нужно? В дальнейшем это позволит открывать созданную процедуру в программе 1С:Предприятие 8 через «Файл → Открыть», что гораздо быстрее, чем регистрировать её в разделе «Администрирование» после каждого внесённого изменения. В итоге у нас получилась форма с реквизитом и кнопкой-командой (рис. 25).

Рисунок 25 Итог создания печатных форм
Создадим действие команды (на клиенте и процедуру на сервере) (рис. 26).

Рисунок 26 Создание команд при создании печатных форм в 1С
Перейдём в модуль формы, где пропишем следующий код:

Рисунок 27 Код в модуле при создании печатной формы в 1С
Теперь для создания внешней печатной формы в 1С 8.3 остаётся добавить ссылку на формируемый массив объектов. За это ответственна функция «ПечатьАвансовогоОтчета», которую нам нужно будет немного подправить. Уберём «ОбъектыПечати» (иначе обработка будет ругаться на слишком большое количество передаваемых элементов), а также сделаем функцию экспортной (чтобы код из модуля объекта мог обращаться к ней).

Рисунок 28 Изменения в функции при создании внешних печатных форм
И допишем наш код из рисунка 27 (рис. 29).

Рисунок 29 Итоговый код при создании внешних печатных форм в 1С 8.3
Сохраняем процедуру (Ctrl+S), снимаем точки останова в модуле объекта, которые мы ставили ранее (рис. 30).

Рисунок 30 Удаление точек останова при создании внешних печатных форм
В запущенном режиме программы 1С:Предприятия 8 откроем нашу процедуру, притом не долгим путём (через регистрацию в Администрировании), а через «Файл → Открыть» (рис27). Открываем обработку из той локации, где мы её сохранили.
Рисунок 31 Открытие созданной обработки в программе 1С:Предприятие 8
Игнорируем предупреждение безопасности, жмём «Да» (рис. 32).
Рисунок 32 Предупреждение безопасности в программе 1С:Предприятие 8
Выберем нужный документ (рис. 33), жмём кнопку «Открыть документ».
Рисунок 33 Выбор нужного документа в программе 1С:Предприятие 8

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

Вуаля! Наша обработка полностью повторяет стандартную (рис. 34), однако стандартную мы менять не можем, а созданную нами – можем.
Рисунок 34 Документ выведенный на печать в программе 1С:Предприятие 8
После всех изменений и создание внешней печатной формы в 8.3, которые будут внесены в код обработки, изменений макета и прочих действий, нужных при решении конкретных задач, обработку можно будет «встроить» в 1С. Сначала, в главном меню обработки, отключим форму обработки, нажав на крестик справа (рис. 35-36).
Рисунок 35 Отключение формы обработки в программе 1С:Предприятие 8
Рисунок 36 Отключение формы обработки
После этого в меню слева спускаемся вниз до вкладки «Администрирование». В меню «Настройки программы» ищем пункт «Печатные формы, отчёты и обработки» (рис. 37).
Рисунок 37 Печатные формы, отчеты и обработки
Потом переходим на вкладку «Дополнительные отчёты и обработки» (рис. 38).
Рисунок 38 Дополнительные отчеты и обработки в программе 1С:Предприятие 8
Здесь сохранены все имеющиеся внешние обработки. Загрузим нашу обработку, нажав «Добавить из файла» (рис. 39).
Рисунок 39 Загрузка файла в программе 1С:Предприятие 8
Игнорируем предупреждние безопасности (рис 40) и заходим в локацию, где мы сохранили нашу обработку, дважды кликаем по ней.
Рисунок 40 Предупреждение о безопасности в 1С:Предприятие, редакция 3.0
Жмём «Записать и закрыть» (рис. 41).
Рисунок 41 Обработка перед записью в программе 1С:Предприятие 8
Далее её можно будет вызвать из меню «Печать» у документа (в нашем случае «Авансового отчёта») (рис. 42).
Рисунок 42 Вызываем обработку после создания внешней печатной формы в 1С 8.3
Рисунок 43 Итоговая обработка после создания внешней печатной формы в 1С
Специалист компании «Кодерлайн» Тимур Тютеньков

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *