Что такое шапка документа в 1с
Пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки таблицы (или таблиц, если их несколько).
В данной статье будет приведен пример рекурсивной функции, при помощи которой в табличный документ можно выводить верхний или нижний колонтитулы с произвольным содержимым, а также делать повтор шапки произвольной таблицы в документе (или таблиц, если в документе их несколько).
Сразу уточню, что функция не тестировалась на очень объемных документах, поэтому, если кто-то проведет такое испытание, пожалуйста, напишите результаты в комментариях.
Задача состояла в следующем:
1) выводить не очень большой табличный документ (до 30 листов) с несколькими таблицами,
2) на каждой странице в колонтитуле добавлять нумерацию (если страниц больше одной) и картинку (QR-код) (в том числе корректно выводить нижний колонтитул на последней странице),
3) если какие-либо из таблиц переносились на следующую страницу, необходимо было производить повтор шапки переносимой таблицы, при этом не допустить, чтобы на предыдущей странице осталась только шапка без хотя бы одной строки данных в ней,
4) предусмотреть возможность вывода произвольного верхнего колонтитула (изначально макетом заложен не был).
В частности, это была печатная форма электронной зачетной книжки студента с разбивкой по курсам и семестрам.
Статей на данную тему с примерами вывода колонтитулов и повторов шапки таблицы в интернете, в том числе и здесь на Инфостарте довольно много. Однако, когда возникла описанная выше задача, готового варианта реализации всех названных условий не нашлось (лишь фрагментарно), поэтому был написан некий свой универсальный вариант.
Основным источником идеи для алгоритма был этот пост на Инфостарте от Игоря (за что ему большое спасибо!) под названием "Что делать если в табличный документ нужно выводить колонтитулы с картинками".
Привожу код получившейся основной рекурсивной функции вывода в табличный документ колонтитулов и повторения шапки таблицы:
Как использовать данную функцию
Что понадобится задать в макете для использования функции:
1) область пустой строки,
2) область верхнего колонтитула с произвольным содержимым,
3) область нижнего колонтитула с произвольным содержимым,
4) области шапок таблиц.
В коде их соответственно зачитываем:
Заполняем колонтитулы значениями параметров, если они присутствуют, например:
При создании табличного документа необходимо задать размер и параметры страницы, чтобы корректно вычислялись страницы при переносе:
Теперь можно формировать табличный документ, обращаясь к функции при построчном выводе данных в ТабДок.
Пример вывода какой-либо области:
Пример вывода таблицы:
Параметр ЗапретВисячихШапокТаблицы в функции задан безусловно в Истина, но при использовании данной функции Вы можете вынести параметр за ее пределы и сделать настраиваемым, главное, что есть такая возможность.
Пример повтора шапки таблицы:
Почему в задаче был упомянут корректный вывод нижнего колонтитула на последней странице? Потому что при тех способах, что советовали в других статьях (например, просто добавить область нижнего колонтитула к последней выводимой области в документе) получалось, что колонтитул отображался не в самом низу страницы, а там, где закончился документ (например, где-нибудь посередине, а бывало и в вверху). В указанной функции для этого используется область пустой строки (т.е. последняя страница "дополняется" до самого низа пустыми строками и только в самом конце выводится нижний колонтитул).
Вот пример вывода последней страницы:
Поэтому, после вывода всех данных в табличный документ делаем завершающий вызов функции, если нужно корректно завершить страницу с нижним колонтитулом:
В этой статье я покажу, как работать с ячейками табличного документа. Мы создадим табличный документ и заполним его какими-нибудь данными, не обращаясь при этом к макету табличного документа, как мы это делали раньше, а получая напрямую доступ к ячейкам табличного документа.
Также, как и во всех предыдущих статьях, для демонстрации создадим обработку и основную форму обработки, на которую поместим команду.
Создадим обработчик команды в клиентском контексте, и функцию тоже в клиентском контексте, в которой создадим табличный документ, и этот табличный документ функция вернет. А в обработчике команды покажем возвращаемый функцией табличный документ.
В дальнейшем весь код будет из метода ВозвратТабличногоДокумента(). В этом коде мы будем обращаться к ячейкам табличного документа по их наименованию. А для удобства работы с именами ячеек табличного документа создадим пустой макет табличного документа. Он нам нужен только как вспомогательный инструмент. Для вывода табличного документ этот макет не требуется.
Если необходимо узнать имя ячейки или группы ячеек (области), следует выделить ячейку, открыть палитру свойств этой ячейки, и в этой палитре свойств интересует одно свойство Имя.
Зная имя ячейки или области ячеек, мы можем получить эту область из уже созданного документа при помощи метода Область().
В коде выше мы получили область ячеек табличного документа по имени, которое определили при помощи пустого макета табличного документа (он и нужен только для выяснения названий ячеек). Потом, мы объединили область ячеек в одну ячейку, указали текст ячейки, примечание, и отцентрировали текст в объединенной ячейке.
Если мы попробуем выполнить команду обработки, то как результат будет показан табличный документ.
Пойдем дальше. Создадим таблицу в нашем табличном документе. Сначала сделаем шапку таблицы из ячеек, которые идут после области, из которой сделали шапку отчета. У нас будет две колонки у шапки таблицы.
Ячейки первой колонки.
Получим область для этих ячеек, объединим ячейки этой области, напишем какой-нибудь текст и обведем эту область, используя метод Обвести табличного документа.
Точно также получим область для соседней колонки.
Первым делом узнаем имя ячеек. Ячейки второй колонки.
А потом получим область, и выполним над ней те же самые манипуляции, что и над соседней областью.
А дальше, для вывода таблицы сделаем цикл от 0 до 9, в котором в каждой итерации цикла будем обращаться к областям табличного документа, но в этот раз мы будем использовать не имена областей, а номера ячеек.
На этом мы закончим изменять табличный документ. Полная версия кода в функции ВозвратТабличногоДокумента будет следующей:
Проверим, что у нас выведет табличный документ.
Таким образом, обращаясь напрямую к областям (ячейкам) табличного документа, мы можем изменять этот табличный документ без использования макета.
Другие статьи про табличные документы в 1С:
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
● Организация. Организация, в которой числятся основные средства, указанные в табличной части.
● Подразделение организации. Подразделение организации, за которым числятся основные средства, указанные в табличной части.
● Ответственный. Пользователь, ответственный за ввод информации в документ.
● Комментарий. Текстовое примечание к документу.
Заполнение табличной части документа:
Подбор данных в табличную часть может быть выполнен несколькими способами, такими как ручной ввод строки, заполнение при помощи механизма подбора, автоматическое заполнение.
Для подбора данных в табличную часть используется кнопка «Подбор». При ее нажатии открывается диалоговое окно со списком основных средств, имеющихся в справочнике.
Существует возможность автоматически заполнить табличную часть объектами основных средств, относящимися к определенной группе учета основных средств (здания, сооружения и др.). Для этого следует нажать на кнопку «Заполнить» в командной панели табличной части. При выборе в выпадающем меню пункта «По группе ОС» предоставляется возможность указать группу учета основных средств. Объекты, относящиеся к этой группе, будут автоматически добавлены в табличную часть. Если на момент заполнения в табличной части документа уже имеются некоторые строки, пользователю будет предложено выбрать: удалить существующие строки или же добавить к ним новые.
Для быстрого заполнения табличной части однотипными объектами основных средств, имеющими одинаковые наименования, нужно ввести в табличную часть хотя бы один такой объект. Затем следует воспользоваться кнопкой «Заполнить» в командной панели табличной части. При выборе в выпадающем меню пункта «По наименованию» табличная часть будет заполнена объектами основных средств, имеющими такое же наименование, как у введенного первоначально.
Для каждого объекта основных средств заполнению подлежат только те реквизиты (колонки), которые имеют к нему отношение. С порядком заполнения всех реквизитов табличной часть можно познакомиться, нажав кнопку.
панели инструментов окна документа.
Печать табличной части документа:
Для вывода на печать данных табличной части документа предназначена кнопка «Печать». На печать выводятся только те колонки табличной части, видимость которых включена на момент формирования печатной формы документа кнопкой.
На закладке «Итоги» выводятся данные об итогах по некоторым колонкам табличной части «Основные средства».
При проведении документа кроме записей в различных регистрах формируются следующие проводки:
● Д «Счет учета (БУ)» – К 000 – на сумму, равную значению реквизита «Текущая стоимость (БУ)»
● Д 000 – К «Счет амортизации (БУ)» – на сумму, равную значению реквизита «Накопленная амортизация (БУ)»
● Д «Счет учета (НУ) без указания корр. счета – на сумму, равную значению реквизита „Текущая стоимость (НУ)“
● К «Счет амортизации (НУ)» без указания корр. счета – на сумму, равную значению реквизита «Накопленная амортизация (НУ)»
Что такое реквизиты 1С?
Мы с Вами недавно обсуждали справочники 1С и документы 1С. Работа пользователя со справочниками и документами в 1С состоит из заполнения полей на форме.
Реквизиты 1С – это поля справочника и документа, которые отображаются на форме, чтобы пользователь их заполнил.
Рассмотрим подробно тему реквизитов в 1С.
Что такое Реквизиты 1С
Каждый справочник и документ 1С состоит из набора полей. Такие поля называются реквизиты 1С (для программиста 1С).
В конфигураторе, в дереве конфигурации 1С, раскройте любой справочник или документ и Вы увидите ветку Реквизиты. Это список реквизитов (полей) справочника.
Поглядите как те же реквизиты 1С выглядят на форме справочника 1С.
Каждый реквизит 1С имеет свойства, в которых указано какой вид значения хранится в реквизите (строка, число и т.п.) и как с ним будет работать пользователь.
Нажмите правой кнопкой на любой реквизит 1С и нажмите Свойства. В окне справа откроется список свойств выбранного реквизита.
Основные свойства реквизитов 1С:
- Имя – наименование реквизита 1С в языке 1С (внимание – в имени реквизитов не должно быть пробелов и знаков препинания)
- Синоним – наименование реквизита каким его увидит пользователь в режиме Предприятие
- Тип – указывает какие данные можно будет хранить в реквизите 1С, нажмите на кнопку «…», чтобы изменить тип; основные типы:
o Число — используется для цифр, а также для радиопереключателя
o Строка — может быть ограничена по длине, дело в том, что не везде возможно использование неограниченной длины
o Дата
o Булево — для того, чтобы на форме была галочка (значения Истина/Ложь или Да/Нет)
o СправочникСсылка или ДокументСсылка – выбор значения справочника или документа.
Вы можете поставить галочку Составной тип данных и тогда 1С позволит Вам выбрать несколько типов данных одновременно. В этом случае пользователю будет отображаться кнопка Т, при нажатии на которых он выберет какие данные он хотел бы ввести.
Стандартные реквизиты 1С
Как Вы заметили, на форме справочника есть реквизиты 1С, которые отсутствуют в списке в конфигураторе: группа, наименование, БИК.
В форме списка справочника тоже есть реквизиты 1С, которых нет в списке: пометка удаления.
Это – стандартные реквизиты 1С. Что это такое? У каждого объекта 1С есть набор реквизитов 1С по умолчанию. У справочников это, например – код и наименование. У документов это – дата и номер.
Стандартные реквизиты 1С можно посмотреть следующим образом:
Общие реквизиты 1С
Начиная с версии 1С 8.2.14 в 1С появился новый Объект 1С – Общие реквизиты 1С. С помощью него можно добавить реквизит (поле), который будет присутствовать сразу во множестве справочников и документов.
Свойства общего реквизита 1С:
- Автоиспользование – добавляет общий реквизит 1С сразу во все справочники и документы
- Состав – позволяет добавить общий реквизит 1С только в нужные справочники и документы (автоиспользование тогда в значение Не использовать).
Как добавить реквизит 1С
Нажмем правой кнопкой на ветку Реквизиты 1С нужного справочника и выберем Добавить.
Введем нужно Имя реквизита 1С, например «АдресОфиса» и синоним «Адрес офиса». Тип оставим по умолчанию Строка, но поставим галочку Неограниченная длина.
Добавим еще один реквизит 1С точно так же, только выберем тип Булево, назовем его «РаботаетПоВыходным».
Как вывести реквизит на форму 1С (толстый клиент 1С)
Раскроем ветку Формы того же справочника. Чтобы открыть форму — выберем форму элемента и нажмем на нее два раза мышкой.
Потяните мышкой за край формы и растяните ее (необязательный пункт).
В панели конфигуратора нажмите кнопку «Размещение данных». Также можно использовать меню Форма / Размещение данных.
Вы видите – наши реквизиты на форму не выведены. Установите на них галочку. А также галочки Вставить надписи и Разместить автоматически.
Как вывести реквизит на форму 1С (тонкий клиент 1С)
Раскроем ветку Формы того же справочника. Выберем форму элемента и нажмем на нее два раза мышкой.
На закладке Реквизиты раскройте строку Объект. Вы увидите список реквизитов, добавленных ранее в справочник.
Теперь просто перетяните из правого окна в левую нужный реквизит и он появится на форме.
Реквизиты формы 1С
В толстом клиенте у формы есть свои собственные реквизиты. Они находятся на закладке Реквизиты.
Эти реквизиты не сохраняются в базе данных, однако их можно использовать на форме для полей, которые нужны для работы с формой.
Например, Вы добавили на форму галочку. При ее нажатии на форме что-то происходит. Значение галочки для Вас неважно (записывать его не нужно) – она используется только для переключения формы при работе с ней. В этом случае в качестве данных Вы используете не реквизит справочника, а реквизит формы.
Периодические реквизиты 1С
В 1С версии 7.7 были периодические реквизиты. Их смысл таков: значение у реквизита разное в разные даты. Например, значение на 1 сентября – одно, а на 1 октября – другое. У одного и того же реквизита.
В 1С 8 периодических реквизитов нет. Это реализуется следующим образом:
-
Добавляем регистр сведений и делаете его периодическим. Период может быть – секунда, день, месяц, квартал, год.
Кроме основных полей могут выгружаться и дополнительные поля шапки, если такие имеются. Например, КонтрольКолва, ПоЯчейкам, Contractor, Currency и т. д.
Такие поля, также как и основные, могут быть заполнены при выгрузке (заполнены частично). Заполнение этих полей может происходить в процессе работы на терминале. Если в поле указывается шаблон для вычислимой колонки, значение такой колонки для объекта не проставляется пользователем и не выгружается из вне. При каждом запросе она вычисляется согласно шаблону.
Добавить дополнительные поля шапки документа можно в панели управления. В конфигурации раскройте узел, соответствующий нужному типу документа, правой кнопкой мыши нажмите на «дополнительные поля шапки» и нажмите кнопку «Добавить поле».
Теперь введите имя поля, выберите его тип и при необходимости введите шаблон (для вычислимой колонки).
Настройка выгрузки поля из 1С
После того как создано дополнительное поле, настраиваются правила выгрузки документа 1С в документ Mobile SMARTS.
«Реквизиты шапки» позволяет настроить сопоставление полей для выгрузки реквизитов документа 1С в шапку формируемого документа Mobile SMARTS.
«Поле Mobile SMARTS» определяет в какое поле результирующего документа на ТСД будет происходить выгрузка информации из 1С. Выбираем наше дополнительное поле, которое мы создали.
Отображение поля в списке документов
Для отображения поля в списке документов в строке текста в верхней части окна добавить в шаблон отображение этого поля и списка документов .
Отображение поля в главном меню документа
Для отображения поля в главном меню документа необходимо в строке текста в верхней части окна добавить шаблон отображения этого поля .
Читайте также: