Как соединить 2 макета 1с
Основы формирования табличного документа на основе макета
Обычно табличный документ формируется на основе макета как из строительных блоков. Макет представляет собой шаблон для формирования печатной формы. Построение макета производится в конфигураторе в специальном табличном редакторе. Разработчик может создавать области, изменять высоту строк и ширину колонок, задавать форматирование ячеек и всего табличного документа, включать в макет рисунки, диаграммы и сводные таблицы.
Области макета предназначены для однократного или многократного вывода, например, ниже представлен макет для печати расходной накладной:
Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7.7, в ячейку нельзя вписать выражение. В версии 8.0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию "Параметры" объекта "ТабличныйДокумент".
Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.7).
Общая схема
Общая схема формирования печатной формы на основе макета:
- Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
- Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
- Получение макета в переменную (метод ПолучитьМакет).
- Получение областей макета (метод ПолучитьОбласть).
- Заполнение параметров области (свойство Параметры).
- Вывод области в табличный документ (методы Вывести и Присоединить).
- Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
- Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).
Пример вывода табличного документа
Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:
Процедура Печать(ТабДок) Экспорт
//создание нового табличного документа
ТабДок = Новый ТабличныйДокумент ;//получение макета для печати расходной накладной
Макет = Документы.РасходнаяНакладная. ПолучитьМакет ("Основной");//получим область "Заголовок" как новый табличный документ (!)
Область = Макет. ПолучитьОбласть ("Заголовок");//укажем параметры области
Область. Параметры .НомерДокумента = Номер;
Область.Параметры.От = Дата;
Область.Параметры.Кому = Контрагент;//выведем заполненную область "Заголовок" в табличный документ
ТабДок. Вывести (Область);//выведем область "Шапка" в табличный документ
ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));//получение области "Строка"
//обратите внимание, что это можно сделать до цикла по строкам
Область = Макет.ПолучитьОбласть("Строка");//вывод строк документа в печатную форму
Для Каждого СтрСостава Из Состав Цикл
//заполнение параметров области из строки табличной части
Область.Параметры. Заполнить (СтрСостава);
//вывод сформированной области в табличный документ
ТабДок.Вывести(Область);
КонецЦикла;
//вывод области "Подвал"
Область = Макет.ПолучитьОбласть("Подвал");
Область.Параметры.ИтогоКоличество = Состав.Итог("Количество");
Область.Параметры.ИтогоСумма = Состав.Итог("Сумма");
ТабДок.Вывести(Область);
//установим параметры отображения табличного документа
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Истина;
ТабДок.ОтображатьСетку = Ложь;
//покажем табличный документ на экране
ТабДок. Показать ();
Алгоритм решения задачи следующий (все модули в моём случае прописываются в расширении к конфигурации БП 3.0). Внесённые изменения в стандартные процедуры обозначены через «скобки»: //дельта стало теперь НАЧАЛО и //дельта стало теперь КОНЕЦ. Это может пригодиться для понимания того, какие были внесены изменения в стандартные процедуры.
1. В модуле менеджера соответствующего документа (в примере это документ «Реализация (акты, накладные)») в процедуру «Печать» добавляем текст, касающийся второй измененной пользователем печатной формы. Ниже приведена часть данной процедуры:
2. В модуле менеджера соответствующего документа (в примере это «Реализация (акты, накладные)») в процедуру «ДобавитьКомандыПечати» добавляем текст, касающийся второй печатной формы. Ниже приведен весь текст данной процедуры:
3. В общем модуле «ПечатьТорговыхДокументов» изменяем процедуру печати необходимой печатной формы (в случае примера это процедура «ПечатьАктаОбОказанииУслуг»). Ниже приведена часть данной процедуры:
4. В общем модуле «ПечатьТорговыхДокументов» добавляем свою процедуру печати необходимой печатной формы (в случае примера это процедура «д_МакетПечатнойФормы»). Ниже приведен весь текст данной процедуры:
После выполнения всех этих действий у вас в соответствующем документе станет доступным печать обоих макетов одной печатной формы. Расширение подключается к конфигурации «1С:Бухгалтерия 3.0» и после перезапуска базы в соответствующем документе появляется возможность печати обоих вариантов макета одной печатной формы. Подключается расширение в меню «Администрирование → Печатные формы, отчеты и обработки → Расширения», после этого надо перезапустить базу. Разработка и тестирование осуществлялись на типовом релизе «1С:Бухгалтерия предприятия, редакция 3.0» 3.0.70.50 и платформе 1С 8.3.14.1779.
Примечания:
- предложенный механизм использования того или иного макета работает только в процессе формирования печатной формы через кнопку «Печать» и не отрабатывает событие, если печатные формы формируются как вложения в электронное письмо при нажатии кнопку отправки электронного письма на форме документа.
Собственно, проблема, которая может возникнуть при присоединении одного табличного документа к другому в том, что строки документов изначально могут иметь один формат строк, но при этом разную ширину колонок. При присоединении одного такого документа к другому мы получим одну и туже ширину колонок табличного документа, т.е. документ будет выглядеть не так как вы ожидаете.
Рис.1. Ширина колонок изменилась и логотип сместился вправо.
При каких сценариях это происходит:
- При объединении нескольких печатных форм в один табличный документ;
- При дополнении отчета на СКД областью из своего макета.
Суть решения
Все просто - в момент присоединения одного табличного документа к другому мы создаем для него новый формат строк. По сути тоже самое, что происходит при интерактивном редактировании макета, когда вы выделяете строки и изменяете для них ширину столбца.
Рис.2. Табличный документ из двух частей. Создан новый формат строк.
Рис. 3. Вопрос в редакторе табличного документа при изменении ширины столбцов.
В качестве бонуса отчет на СКД с логотипом.
Тестировалось на платформе 8.3.13.1513
Отчет на СКД с логотипом. Объединение табличных документовСпециальные предложения
Коллеги доброго времени суток, есть функция которая получает сформированные Печатные формы(далее ПФ) у каждого табдока есть параметр "ШиринаТаблицы" для всех сформированных ПФ разный(зависит от макета) и объединяет их в большойТАбДОк.
При попытке вывести на печать наш большойТАбДОк (при условии что для него АвтоМасштаб = Истина) получается что та ПФ которая с меньшим параметром "ШиринаТаблицы" становится нечитаемым(скрин прилагается) . Хотелось узнать можно ли как то решить эту проблему не унифицируя все макеты ПФ?
ПЫСЫ: параметр ШиринаТаблицы недоступен для записи.
(5) Пробовал использовать процедурку описанную в топике , не помогло.)Мб кто сталкивался?
Просмотры 21607
Загрузки 11
Рейтинг 42
Создание 17.11.18 22:36
Обновление 17.11.18 22:36
№ Публикации 944987
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
K-SOFT. Эмулятор для работы с ККТ. Обычные формы. (Ревизия 3002)См. также
Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула Промо
Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.
Два дива в одну строку, расположенные в третьем диве
Здравствуйте. Есть див фиксированной ширины в 800px. В нем два других дива каждый по 400px. Первый.
Две Не разделенные области на HDD как объединить в одну Acronis
Произошло на Ноутбуке G500 Lenovo 2 ядра 4 ГБ Оперативы Жосткий диск HDD 500 ГБ - ночью Две Не.
Заданы две строки. Построить новую строку, состоящую из символов, которые входят как в одну, так и в другую строку
Необходимо вывести с 2-ух строк одинаковые символы, но необходимо только русские символы. С англ.
Заданы две строки. Построить новую строку, состоящую из символов, которые входят как в одну, так и в другую строку
Прошу помощи!
Только теперь ставится разрыв страницы после этого. И все что ниже переносится на вторую страницу а этого не нужно.
Добавлено через 47 секунд
volodya334455,
Добавлено через 1 минуту
Это на выбор или параметр такой?
Добавлено через 11 минут
Соответственно вертикальная черта это указывает что ты берещь не всю строку а только облать на пересечение этих областей
volodya334455, Только у Меня эта область по центру макета над ней другие области
эта область у меня также по центру, но я ее могу получить. или ты не задавал вопроса?
Если необходимо получить область, которая находится на пересечении двух именованных областей, следует использовать следующий синтаксис:
Копировать в буфер обмена
ОсновнойЗаголовок = Макет.ПолучитьОбласть("Заголовок|Основной");
Две формы в одну строку?
Друзья, подскажите как сделать, чтобы две формы: <form>. </form><form>. </form> выводились в.
Нарисовать две концентрические окружности. Записать решение в одну строку
Нарисовать две концентрические окружности. Записать решение в одну строку
Как ввести в одну строку две переменных(число и строка)
решаю задачу в котором надо считать две переменных, при этом первая переменная это число, а вторая.
Правильно разделить области в макете
Всем добрый день! Делала когда-то отчёт, теперь хотят, чтобы сотрудники разделялись полосочками.
Преобразовать числа в две строки, объединить их в одну строку и вывести на экран результат
ввести 2 целых числа.преобразовать числа в две строки,объединить их в одну строку и вывести на.
Как записать две строки поля одной таблицы в одну строку другой?
Есть такой запрос к БД и результат этого запроса две строки ROH и KOR поля FIL С 6 строки.
Читайте также: