1с получить общий макет
Маленькие хитрости работы с макетами печатных форм в конфигурациях, где БСП позволяет пользователю использовать изменённые макеты. Получение всех параметров общих макетов или макетов из файла mxl Написано на платформе 8.3.6.2363 в конфигурации БП 3.0.42.54 (привязки к БП 3.0 нет, просто текст примера передачи параметров из ПКО БП 3.0) 07.11.2015 - Версия 1.2 исправлена ошибка (не цеплялись параметры в последней ячейке макета), в таблице выделены строки с областями. 21.09.2021 - Версия 1.3 natalika1601 (спасибо за ошибку. ) заметила, что не работает, это исправленная версия
Маленькие хитрости передачи параметров в макеты печатных форм.
Без претензий на изобретение – тут ничего нового, просто накопилось, потому и решил написать эту заметку.
В БСП давно уже появился механизм замены макетов на пользовательские. В результате использования этого механизма периодически возникают клиенты, у которых (ну как водится - после обновления) перестал печататься приходный кассовый ордер (или что–то ещё, вспоминайте сами)…
Первый звонок от клиента на базовой БП вызвал лёгкое недоумение – ежели бы ошибка была в релизе, то шквал звонков был бы практически обеспечен, а тут тишина, только один, но …подключился, посмотрел – действительно, сваливается по ошибке:
В голове сразу мысля - «что за бред, не может быть и т. д. и т.п.»…но оказывается - может. Пользователи (они же юзвери), они ж такие затейники…вот кто их просил лезть в макеты и удалять там параметры, дабы заменить на свой, просто эксклюзивный текст, сохранить всё это безобразие, а потом гордо заявить, что опосля обновления (опять же, когда же ещё?) перестал печататься ПКО?
Первый раз непонятка полная, решается через сим-салабим отладчик (как вернуть стандартный макет - тема не этого романа), но возникает мысль: «А если не пользователю, а мне приспичит заменить стандартный параметр своим текстом, а параметр не нужен ни разу? Что делать?».
Решение – маленькая хитрость, параметр должен остаться в макете, но в печатную форму выводиться не должен. Путей решения увиделось два:
- первый: Спрятать параметр в ОЧЕНЬ узенькое поле макета (совсем не нравится, потом не сразу найдешь эту ячейку, коли понадобится);
- второй: вообще застраховать себя от подобных недоразумений, включив в ячейку ВСЕ возможные параметры, что встречаются в макете, где в свойстве «Заполнение» указать , что это шаблон. Причем ячейку можно не сужать до невозможности, а просто «накрыть» непрозрачной прямоугольной областью (в свойстве «Размещение» не забыть указать «Обрезать»):
Результат – можно писать любой текст, где захочется, главное, чтобы параметр остался в макете:
Дальше возникают всякие «вредные» мысли: если существует вероятность того, что макет может каким-либо «волшебным» образом измениться, зачем заставлять людей мучиться вытворением хитростей, типа описанной выше?
Если рисуем свою печатную форму и знаем, что с макетом может произойти всё, что угодно, то не стоит использовать конструкции вывода параметров типа:
Лучше собрать возможные параметры в структуру и заполнить параметры макета не несколько строк, как выше, а как то так:
Так гораздо проще, тем более, что главное - наличие или отсутствие параметров в макете не вызовет вылет программы по ошибке
Теперь, чтобы быстро использовать эти варианты с заполнением ячейки всеми параметрами формы или создания структуры, родилась идея использовать обработку, которая составит строку для шаблона ячейки параметров, или строку для создания фиксированной структуры для модуля печатной формы.
Параметры шаблона нужны для случаев, когда заполнением параметров напрямую (через структуру) управлять нельзя, например, конфигурация на поддержке, снимать нельзя в силу каких-то вполне объективных причин, а пользователю зачем-то нужно периодически менять макет.
Может быть ещё вариант – есть какой-то макет, в котором туча параметров, пропустить которые по недогляду вполне возможно, но очень не хотелось бы.
По итогам получилась обработка, в которую можно вывести все параметры общего маета, или макета из файла с итоговыми строками параметров и строки, для копипаста в текст конструктора структуры:
Может быть и другая ситуация – есть макет, там туча параметров, и не хочется пропустить какой-нибудь.
10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц Посмотреть все результаты поиска похожих
Еще в этой же категории
Как в excel сохраненный из 1С вставить новый лист? 15
Я думаю, все сталкивались с однолистовым excel файлом из 1С, у которого на первый взгляд, нет возможности добавить листы. Все не так страшно - их просто скрыли или, что чаще всего - даже не отображали (обусловлено созданием файла из стороннего прил Пример работы с MS EXCEL (листы, поиск на листе) 1
ДокументExcel = ПолучитьCOMОбъект(ИмяФайла); //Листы : СписокЛистов = Новый СписокЗначений; Для каждого Лист Из ДокументExcel.Sheets Цикл СписокЛистов.Добавить(Лист.Inde Конвертация экселя в картику 0
На листе екселя есть картинки, надписи в произвольной форме. Как это чудище с конвертировать в картинку. Нашел процедуру ФайлПрограммы = НовыйФайл("C: Program Files Bullzip PDF Printer gs gswin32c.exe"); Если Не ФайлПрограммы.Существует() Тогда Посмотреть все в категории Работа с Microsoft Office и OpenOffice
Печатная форма, получаемая в результате работы СКД в общем случае, не требует разработки, большинство группировок, полей и заголовков генерируются автоматически в зависимости от установленных условий оформлений. Но есть ряд задач, когда нужно для полей, группировок задать собственное оформлений. Для этого служит закладка «Макеты», где определяются секции табличного документа, которые будут выводиться в отчет.
На закладке присутствуют, список оформляемых полей/группировок/ресурсов, табличный документ с областями-секциями оформляемых полей/группировок, список параметров определенных в макете.
Для оформления доступны несколько видов макетов – макет поля, макет группировки, макет заго-ловка группировки, макет ресурсов.
Макет поля – области табличного документа, определяемые для полей. Если указать имя поля и область в табличном документе, то все результирующий отчет поле будет выведено с оформлением указанным в табличном документе.
В окне «Параметры макета» будут перечислены все параметры, которые определены в секции табличного документа, параметры можно определять для ячеек с видом заполнения «Параметр». В списке параметров можно указать выражение, которое отвечает за вывод поля в ячейку, по-умолчанию это «Представление(…)», возможно указать различные поля и реквизиты полей определенных в наборах данных.
Следующим видом оформления является оформления группировок. Если выбрать пункт «Добавить макет группировки» - откроется окно редактирования:
В диалоге можно указать имя группировки или набор полей, которые составляют группировку, т.е. оформление будут применено именно к этому составу полей. Перед этим группировки должны быть определены в настройках СКД, на закладке «Настройки». Далее указывается тип макета, доступны такие типы «Заголовок», «Подвал», «Заголовок иерархии», «Подвал иерархии», «Общий итог заголовок», «Общий итог подвал». После указания параметров группировки и типа макета, нужно указать адрес или имя области.
Именем области может служить как адрес в макете, пример – «R1C1:R10C10» или наименование области указанное в свойствах Имя для группы ячеек:
Аналогично добавляется макет для заголовков группировок.
Для оформления ресурсов используется другой специальный диалог:
Макет для вывода ресурсов можно определить по имени группировки, в которой выводятся ресурсы или же по набору полей, которые формируют данную группировку. Перед этим группировки должны быть определены в настройках СКД, на закладке «Настройки». Тип определяемых макетов такой же как и для группировок. При этом можно указать две группировки, на пересечении которых в отчете со строками и столбцами будет выводиться макет ресурсов.
Нужно заметить, что наиболее быстрый способ сформировать макет отчета воспользоваться специальным конструктором макетов для СКД.
Вызвать его можно из диалога редактирования отчета, при добавлении нового отчета:
После этого откроется окно с доступными элементами оформления:
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора QR код в 1С 20
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог В чем разница между ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ в языке запросов 1С 10
Цитата из справки 1С: " По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные РАЗНЫМИ запросами, заменяются одной . Если требуется, чтобы были оставлены разные строки, необходимо указать ключевое Посмотреть все результаты поиска похожих
Еще в этой же категории
Программный вывод отчета СКД 36
Несмотря на то, изучающие СКД встречаются с этим на первый или второй день, это должно быть в разделе FAQ. Простой пример программного вывода отчета на компоновке, использующий настройки по умолчанию. //Получаем схему из макета СхемаКомпоновкиДанны Как сформировать отчет СКД без проверки прав (в привилегированном режиме)? 21
Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав! Особенно если настроен RLS Есть несколько способов как это сделать: 1. Установить привилегированный режим в модул Конструктор схемы компоновки данных - Закладка Связи наборов данных 17
На этой закладке можно указать, какие осуществляются связи между двумя и более наборами дан-ных, по каким параметрам и условиям. https://helpf.pro/uploads/img/sukpd038.jpg 1. «Источник связи» - указывается первый набор данных, от которого осуще Как программно сформировать отчет СКД указав параметры и на выходе получить таблице значений? 12
В одном документе для расчета потребовалось получать данные из отчета на СКД, реализовал следующим образом: //Програмное формирование отчета СКД СхемаОст = Отчеты.ТоннажПоЭкспедиторам.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); КомпоновщикН Реализация расшифровки в Системе Компоновки Данных. 11
Продолжая свой цикл заметок про СКД, сегодня я хотел бы поподробнее остановиться на расшифровке. В СКД расшифровка представляет собой всплывающее меню (по двойному клику на ячейке), содержащие доступные пользователю действия, такие как открытие ссыл Посмотреть все в категории Схема Компоновки Данных
Ключевые слова и Изображения
Слова упорядочены по частоте использования в тексте
Изображения
В процессе разработки печатных форм или отчетов на обычных формах разработчики 1С часто использовали команду «ПолучитьМакет» на стороне клиента. В управляемых же формах платформы 1С 8.3 эта команда доступна только на сервере или толстом клиенте. Так как подавляющее большинство пользователей работают в режиме тонкого, программистам придется изменить процесс, чтобы получить макет внешней обработки 1С.
Как получить макет на клиенте?
В этом нам поможет отдельная функция, работающая на стороне сервера. С помощью функции «РеквизитФормыВЗначение()» мы передадим объект в виде нашей внешней обработки в серверную функцию и там получим макет. В качестве реквизита формы выступает основной реквизит, выделенный на самой форме жирным шрифтом. Подробный код функции содержит следующие строки:
Передача объекта с клиентской формы на сервер;
Получение макета по наименованию. Наименование задается при добавлении макета во внешнюю обработку;
Возвращаем полученный макет на клиент;
Это изменение призвано оптимизировать работу тонкого клиента и перенести «тяжелые» операции на сервер. Подобные разграничения пропагандирует компания 1С, стараясь оставить на стороне клиента лишь работы по прорисовке интерфейса. Чуть больше строк кода даст нам прирост производительности и более стандартизированный код. Если придерживаться единых стандартов 1С при разработке, то будет намного удобнее и понятнее поддерживать сложные конфигурации.
Общий макет 1С — объект конфигурации 1С, предназначенный для формирования печатных форм электронных документов, и доступный из любого места конфигурации (разных программных модулей).
Общие макеты печатных форм располагаются в ветви «Общие» дерева конфигурации, в отличие от печатных форм объектов конфигурации (справочников, документов, журналов документов, планов счетов, планов видов характеристик, планов видов расчетов, регистров, отчетов и обработок и др.), которые располагаются в подчиненных объектах «Макеты», а также во внешних файлах (в этом случае должно быть установлено свойство табличного документа Макет ).
Макет объекта конфигурации «Справочники»:
Таким образом, «Общие макеты» (шаблоны печатных форм) не принадлежат конкретному объекту конфигурации, и могут используются из разных программных модулей.
Типы макетов 1С:
- Табличный документ – использование стандартной технологии создания и использования макетов: подготовка макета производится с помощью табличного редактора.
- Текстовый документ – использование текстового документа в качестве макета: подготовка текстового макета производится с помощью редактора текстовых макетов.
- Двоичные данные – используются двоичные данные.
- ActiveDocument – использование технологии OLE Active document (документы Microsoft Office OpenXML не могут быть использованы в качестве макета ActiveDocument).
- HTML-документ – использование редактора HTML-документа.
- Географическая схема – использование в качестве макета географической схемы, подготовленной в редакторе географических схем.
- Графическая схема – использование подготовленной в редакторе графической схемы.
- Схема компоновки данных – использование схемы компоновки данных, подготовленной в конструкторе.
- Макет оформления компоновки данных – предполагает использование макета оформления системы компоновки данных.
- Внешняя компонента – хранение внешних компонент, используемых в мобильном или обычном прикладном решении.
Внешняя компонента — это механизм интеграции, сторонняя программа, которая используется для решения задач, недоступных встроенному языку 1С:Предприятия (например, для настройки низкоуровневого взаимодействия с операционной системой или подключаемым оборудованием).
Внешняя компонента поставляется в виде dll-библиотеки, и расширяет встроенный язык новыми методами.
При работе с внешней компонентой после программной загрузки объекты внешней компоненты подключаются к «1С:Предприятию 8».
Отличия от 1С:Предприятие
Поддерживаются макеты только нижеследующих типов: Текстовый документ, Двоичные данные и HTML документ.
Для типа ОболочкаHTMLДокумента, возвращаемого при получении макета типа HTML документ, реализована только одна функция – ПолучитьТекст.
Общие макеты
Представляют собой файлы, которые хранятся в определенной папке на диске, и имеют следующую схему именования:
ИмяМакета.Расширение
Где ИмяМакета – это имя макета, которое используется для доступа из внутреннего языка.
Расширение – принимает значения: txt — для макетов типа Текстовый документ, bin – для макетов типа Двоичные данные и html – для макетов типа HTML документ.
Для доступа к общим макетам, реализована функция глобального контекста ПолучитьОбщийМакет(ИмяМакета), которая возвращает объект соответствующего типа данных, в зависимости от типа макета.
Макеты обработок
Представляют собой файлы, которые хранятся в папке обработок, совместно с модулями, которые имеют следующую схему именования:
ИмяОбработки.Макет.ИмяМакета.Расширение
Где ИмяОбработки – это имя обработки на внутреннем языке, Макет – признак того, что файл является макетом, ИмяМакета – имя макета, которое используется для доступа из внутреннего языка.
Расширение – принимает значения: txt — для макетов типа Текстовый документ, bin – для макетов типа Двоичные данные и html – для макетов типа HTML документ.
Следует отметить, что для обработок, написанных по технологии внешних компонент OneScript, реализация функции ПолучитьМакет, а также место хранения макетов и их формат, полностью на совести разработчика.
Установка осуществляется копированием файлов dll в папку Bin веб-приложения. Затем, необходимо внести нижеследующие изменения в секцию , файла web.config:
Надеюсь, что настоящая библиотека позволит вам использовать преимущества стандартных механизмов 1С:Предприятие в ваших web-приложениях OneScript.
Практически для каждого отчета или печатной формы 1С не обойтись без метода «ПолучитьМакет()». Метод ПолучитьМакет() нельзя вызвать на сервере в модуле формы управляемого приложения. Как верно использовать его, я рассмотрю ниже.
В управляемой форме 1C для этого этого необходимо использовать следующую конструкцию в процедуре «&НаСервере»:
Связано это с тем, что на управляемой форме форме не доступны методы объекта. Получая объект и обращаясь методом «ПолучитьМакет()», система позволит нам получить нужные данные.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
В процессе разработки печатных форм или отчетов на обычных формах разработчики 1С часто использовали команду «ПолучитьМакет» на стороне клиента. В управляемых же формах платформы 1С 8.3 эта команда доступна только на сервере или толстом клиенте. Так как подавляющее большинство пользователей работают в режиме тонкого, программистам придется изменить процесс, чтобы получить макет внешней обработки 1С.
Как получить макет на клиенте?
В этом нам поможет отдельная функция, работающая на стороне сервера. С помощью функции «РеквизитФормыВЗначение()» мы передадим объект в виде нашей внешней обработки в серверную функцию и там получим макет. В качестве реквизита формы выступает основной реквизит, выделенный на самой форме жирным шрифтом. Подробный код функции содержит следующие строки:
Передача объекта с клиентской формы на сервер;
Получение макета по наименованию. Наименование задается при добавлении макета во внешнюю обработку;
Возвращаем полученный макет на клиент;
Это изменение призвано оптимизировать работу тонкого клиента и перенести «тяжелые» операции на сервер. Подобные разграничения пропагандирует компания 1С, стараясь оставить на стороне клиента лишь работы по прорисовке интерфейса. Чуть больше строк кода даст нам прирост производительности и более стандартизированный код. Если придерживаться единых стандартов 1С при разработке, то будет намного удобнее и понятнее поддерживать сложные конфигурации.
Создание печатной формы 1С 8 пошаговая инструкция
В этой статье подробно будет рассказано, как новичку, плохо знающему 1С 8 создать печатную форму. Для примера возьмем одну из самых распространенных конфигураций 1С 8 — Бухгалтерию 2.0. Создание печатной формы 1С этапы написания: Создание файла внешней печатной формы; Создание макета печатной формы; Написание программного кода для вывода данных печатной
Задать в макете 1с параметр расшифровки
Если в ячейке макета у вас уже задан параметр, но вам необходимо создать для нее еще и параметр расшифровки. То нажмите на ячейку правой кнопкой мыши, в контекстном меню найдите пункт Свойства. В открывшихся свойствах ячейки зайдите на вкладку Макет и внесите в поле ПараметрРасшифровки имя вашего параметра. На рисунке
Вывод в цикле области табличного документа
Часто требуется выводить область макета в Табличный документ не один раз, а несколько (например при печати табличных частей документа). В случаях когда неизвестно сколько раз необходимо будет выводить область, используется цикл. Пример: Запрос = Новый Запрос; //Ваш запрос Макет = ПолучитьМакет(«Макет»); Область = Макет.ПолучитьОбласть(«Данные»); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Для Каждого ЭлементРезультата
Включение автовысоты в макете 1с
Для того, что бы включить автовысоту строки в макете следует выделить нужную строку, нажатием правой кнопки мыши вызвать контекстное меню, далее Высота строк -> флаг Автовысота строки.
1с макеты печатных форм, получение
Для того, что бы получить макет вашей печатной формы или отчета следует использовать функцию глобального контекста ПолучитьМакет( ). Таким способом можно получить макет документа, справочника или внешней печатной формы / обработки / отчета, но только непосредственно из их модулей. Пример: Макет = ПолучитьМакет(«МакетПФ»); Если нужный вам макет находится в Общих макетах,
Объединить ячейки в макете 1с
Для объединения ячеек выделите их и: Нажмите сочетание клавиш Ctrl + M. Кликните правой кнопкой мыши по выделенным ячейкам и выберите пункт Объединить. Кликните на панели Табличный документ (расположена внизу) кнопку Объединить.
Разбить ячейки в макете 1с
Для того чтобы разбить ячейку в макете кликните по ней правой кнопкой мыши и в появившемся контекстном меню нажмите Разбить ячейку, после чего выберите метод разбития (По вертикали или По горизонтали). Прим. Если ячейка до этого была объединена кнопкой Объединить, то разбить ее на прежние составляющие можно при помощи этой
1с параметры макета, создание
Для того что бы создать параметр в ячейке макета, следует щелкнуть по ней правой кнопкой мыши и выбрать пункт Свойства. В открывшихся свойствах ячейки перейти на закладку Макет и в поле Заполнение выбрать значение Параметр. После чего в поле Параметр задать его имя.
Получение области макета 1с
Для получения области макета необходимо использовать метод макета *ПолучитьОбласть( ). Пример: Макет = ПолучитьМакет(«Макет»); Область = Макет.ПолучитьОбласть(«Шапка»);
Создать область макета 1с
Создать область макета в 1с 8 можно двумя способами: 1) Выделите строки, которые нужно объединить в область и нажмите Меню -> Таблица -> Имена -> Назначить имя… 2) Выделите строки, которые нужно объединить в область и нажмите сочетание клавиш Ctrl + Shift + N. После чего назначьте имя области.
Читайте также: