Новости экономики и финансов. Курсы валют, ситуация на биржах, акции, котировки, аналитика: 💫 💫 💫 💫 💫 читайте на сайте

Вывести Область в Области Макета 1C • Основные методы

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

1С:Эксперт по технологическим вопросам
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Теперь необходимо слегка подрихтовать скопированный текст, так как он писался для печати документа из самого документа, а мы собираемся из внешней обработки. 1С масштаб по ширине страницы программно — ПК Знаток Обращайтесь в форму связи

1С:Бухгалтерия 8.Тонкая настройка: создаем внешние печатные формы

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

Давайте познакомимся с механизмом изменения печатных форм в 1С:Бухгалтерии 8 без изменения конфигурации.

Ну что, какова задача? Кажется слишком сложной? Ну что ж, чем она сложнее, тем интереснее, и тем больше ее хочется решить. Тогда за работу.

Важно! Имя обработки не должно содержать пробелов, так как же, как и имена переменных.

1С: Бухгалтерия 8. Тонкая настройка: создаем внешние печатные формы

  1. Нужно создать реквизит в обработке «СсылкаНаОбъект» с типом «ЛюбаяСсылка»
  2. Нужно создать в модуле обработки процедуру «Печать() Экспорт» без параметров и обязательно указать ключевое слово «Экспорт«

Что такое «макет»

Ячейка может содержать значение одного из трех видов:

  1. текст – значение такого вида будет выведено на печать в том же виде;
  2. параметр – ячейка такого вида содержит имя переменной, значение которой будет выведено на печать.
  3. шаблон – ячейки такого вида являются комбинацией первого и второго варианта. Ячейка может содержать текст и переменные. Чтобы программа могла отличить текст от переменной, переменные нужно заключать в квадратные скобки: «Сегодня [Дата]».

Важно! Значение ячеек второго и третьего вида табличный редактор отображает в треугольных скобках. На рисунке 2 ячейка с текстом «Покупатель» — имеет вид текст, а правее ячейки «ПредставлениеПокупателя» — параметр.

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

Промокоды на Займер на скидки

Займы для физических лиц под низкий процент

  • 💲Сумма: от 2 000 до 30 000 рублей
  • 🕑Срок: от 7 до 30 дней
  • 👍Первый заём для новых клиентов — 0%, повторный — скидка 500 руб

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

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

1С:Эксперт по технологическим вопросам
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Ниже рассмотрим более подробно свойства и методы табличного документа, которые имеют отношение к настройкам печати В приведенном примере ТабличныйДок это объект типа Табличный документ. 1c8 Мини FAQ по построителю отчета | Обращайтесь в форму связи

Лабораторная работа №6 Редактирование Макета и Формы документа в среде «1с Предприятие 8.1»

Откроем конфигуратор, раскроем дерево документа ОказаниеУслуги и дважды щелкнем на макете Печать. Как видите, макет документа состоит из именованных областей, которые в определенном порядке выводятся на печать.

Добавим новую область для вывода итоговой суммы документа (рисунок 6.1). Выделим мышью две пустые строки и выполним команду Таблица  Имена  Назначить имя…

Рисунок 6.1 – Выделим мышью две строки и зададим имя области

Назовем область Всего. В созданной области, в колонке Цена, напишем Всего, а в колонке Сумма напишем ВсегоПоДокументу.

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

Рисунок 6.2 — Укажем, что в ячейке должен находиться не текст, а параметр…

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

Текст, содержащийся в ячейке, будет показан на экране.

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

Шаблон представляет собой текстовую строку, в определенные места которой будут вставлены значения параметров.

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

Теперь откроем модуль формы документа ОказаниеУслуги — ФормаДокумента. Найдем в нем процедуру Печать и после цикла Для Каждого ТекСтрокатчНоменклатура Из тчНоменклатура Цикл добавим в нее следующие строки (листинг 6.1):

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

А теперь, для того чтобы наш документ ОказаниеУслуги, выглядел вполне законченным, добавим итоговую сумму по документу и на экранную форму, чтобы пользователь мог видеть ее в процессе заполнения табличной части документа.

Откроем в конфигураторе форму документа ОказаниеУслуги – ФормаДокумента. Откроем палитру свойств для табличного поля, расположенного в форме, и установим свойство Подвал, которое определяет наличие подвала у элемента управления Табличное поле (рисунок 6.3).

Затем откроем свойства колонки Цена и установим Текст подвала – Всего:, Горизональноеположение в подвале – Прижать вправо и в шрифте подвала изменим начертание на Жирный.

После этого откроем свойства колонки Сумма, установим Горизонтальное положение в подвале – Прижать вправо, установим флаг Показывать итог в подвале и в шрифте подвала тоже изменим начертание на Жирный.

Запустим 1С:Предприятие в режиме отладки и посмотрим, как теперь выглядит форма документа Оказание услуги №1 (рисисунок 6.4):

Вывести Область в Области Макета 1C
2-ой вариант: значения группировок (при расшифровке ячейки будет открываться значение группировки, выведенное в ней).

Как получить макет внешней обработки в 1С

Для тех кто не в курсе как печатаются ценники на примере УТ11 выводятся фиксированные блоки поочередно присоединяя их, пока они по размеру входят в выводимую область.

1С:Эксперт по технологическим вопросам
Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Чтобы создать отчет, необходимо открыть 1С в режиме конфигуратора, для этого в окошке запуска 1С выбираете нужную базу в списке и нажимаете кнопку Конфигуратор. 1с вывести макет в табличное поле — Все о Windows 10 Обращайтесь в форму связи

Решение

  1. Создаем «подставной» табличный документ
  2. Получаем из макета области для формирования мини-прайса (в примере Шапка, строка, подвал)
  3. В цикле по сгруппированным данным (по данным шапки)
    1. Очищаем подставной макет
    2. Выводим в него шапку
    3. Выводим все строки (цикл по строкам)
    4. Выводим подвал
    5. Получаем область из подставной табличной части, в которую вывели данные.
    6. Далее работаем с этой областью так же, как как если бы мы получили ее из макета целиком (проверяем на вывод и выводим)

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

    PS: Возможно, данная реализация не самая красивая и есть еще варианты. Предлагаю обсудить в комментах.

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

    ТабличныйДокумент = Новый ТабличныйДокумент ;
    ВременнаяОбласть = Новый ТабличныйДокумент ;

    ФиксОбласть = Макет . ПолучитьОбласть ( «ФиксХ|У» );
    ФиксОбласть . Параметры . Текст = ТекстФиксированногоМакета ;

    Х_Шапка = Макет . ПолучитьОбласть ( «Х_Шапка|У» );
    Х_Строка = Макет . ПолучитьОбласть ( «Х_Строка|У» );
    Х_Подвал = Макет . ПолучитьОбласть ( «Х_Подвал|У» );

    ПерваяКолонка = Истина;
    Если ВыводитьФиксированнуюОбласть Тогда
    Область = ФиксОбласть ;
    ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );
    КонецЕсли;
    Для х = 1 по СтрокиТаблицы . Количество () Цикл

    ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );

    Если ВыводитьФиксированнуюОбласть Тогда
    Область = ФиксОбласть ;
    ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка );
    КонецЕсли;

    1С присоединить область справа
    //укажем параметры области
    Область. Параметры .НомерДокумента = Номер;
    Область.Параметры.От = Дата;
    Область.Параметры.Кому = Контрагент;

    Вывести Область в Области Макета 1C

    Как присоединить области с разным количеством строк? Способ формирования печатной формы под тип ценников, но с различными по высоте областями.

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

    Вывести в печатную форму, на подобии печати ценников, мини-прайсы. Т.е. некий набор номенклатуры с ценами.

    Для тех кто не в курсе как печатаются ценники (на примере УТ11) выводятся фиксированные блоки поочередно присоединяя их, пока они по размеру входят в выводимую область. Как только присоединение не возможно, данные выводятся на «новой строке» Таблицы. Проверка осуществляется ч/з проверить присоединение и проверить вывод

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

    Решение, приведенное выше, конечно, рабочее и может применяться (даже применяется) на практике. Но к моему глубокому сожалению, для меня не приемлемо по моим внутренним убеждениям (люблю, чтоб код был простым и красивым). Поэтому у меня придумался другой подход.

    💥Принимайте участие в опросе и получайте бесплатную консультацию

Related posts