Именованная область «ЗаполнениеСоставаКарты» описывает правила заполнения данными многострочной части документа. Назовем ее таблицей заполнения состава карты.
При формировании документа перебираются записи из источника данных и, на основании таблицы заполнения состава карты, формируется многострочная часть формы.
Каждая строка таблицы предназначена для формирования одной или нескольких строк в многострочной части документа. Назовем их шаблонами строк. Они должны иметь одинаковое количество ячеек, совпадающее с количеством ячеек в именованных областях «СоставКарты1» и «СоставКарты2».
Элементы шаблона строки оформляются так, как они должны выглядеть в формируемом документе: шрифт, выравнивание, границы, вид. Для всех элементов рекомендуется использовать формат «Текстовый», за исключением элементов, в которые записывается формула MS Excel, такие элементы должны иметь формат «Общий».
В элемент записывается правило формирования его значения:
· Номер поля источника данных, из которого необходимо брать данные. Номера полей начинаются с нуля.
· Символ «#» + номер поля дополнительного источника данных, из которого необходимо брать данные. Номера полей начинаются с нуля. Дополнительный источник данных для шаблона строки указывается в третьем служебном поле (см. ниже). Если дополнительный источник данных не определен или пуст, то элемент получит пустое текстовое значение.
· Текст SQL запроса. Правило записи текста запроса описано в разделе 15.10.9.
· Вызов функции. Правило вызова функции описано в разделе 15.10.10.
· Произвольный текст. Под произвольным текстом подразумевается любой набор символов не совпадающий в точности со служебным словом. Текст, состоящий только из цифр, считается номером поля из источника данных.
· Служебное слово.
· Формула. Записывается с использованием ячеек только из текущего шаблона строки.
При формировании строки:
· вместо номера поля в элемент записывается значение данного поля из источника данных,
· вместо текста SQL запроса записывается полученное значение, если запрос не смог выполниться, то элемент получит пустое значение,
· произвольный текст остается неизменным,
· вместо служебного слова записывается соответствующее ему значение,
· вместо формулы записывается вычисленное значение.
Служебные слова в элементе
шаблона строки
· «НомерСтрокиНаЛисте»
· «НомерСтроки»
· «НомерПозиции»
· «АбсПозИД»
· «АбсПозДИД»
Вместо «НомерСтрокиНаЛисте» подставляется порядковый номер сформированной строки на листе. Нумерация строк начинается с единицы, если не указан другой начальный номер в областях управления: «НумероватьСтроки1» для первого листа и «НумероватьСтроки2» для последующих листов.
Вместо «НомерСтроки» подставляется порядковый номер сформированной строки относительно начала документа с учетом всех сформированных листов. Нумерация строк начинается с единицы.
Вместо «НомерПозиции» подставляется порядковый номер сформированной позиции относительно начала документа с учетом всех сформированных листов. Отличается от «НомерСтроки» тем, что не учитываются пустые строки, формирование которых задается областью управления «ПустыеСтроки».
Вместо «АбсПозИД» подставляется номер текущей записи основного источника данных.
Вместо «АбсПозДИД» подставляется номер текущей записи дополнительного источника данных.
Перечисленные служебные слова могут использоваться совместно с произвольным текстом. При этом служебное слово и текст записывается через символ «&».
При формировании строки вместо символа «&» и служебного слова подставится соответствующее ему значение. Например, если номер строки на листе будет равен 12, то в элемент запишется «М12».
Служебные поля шаблона строки
После каждого шаблона строки десять подряд идущих ячеек являются служебными. Вместо одной ячейки может выступать несколько ячеек, объединенных в одну. Назовем их служебными полями шаблона строки.
ПЕРВОЕ служебное поле определяет, для каких записей из источника данных будет формироваться текущая строка на основе данного шаблона строки. Может иметь следующие значения:
· Пустое значение. Строка будет формироваться для всех записей источника данных.
· Текст SQL запроса. Правило записи текста запроса описано в разделе 15.10.9. Запрос должен возвращать логическое значение.
· Вызов функции. Правило вызова функции описано в разделе 15.10.10. Функция должна возвращать в качестве истинного значения «-1», а в качестве ложного значения «0».
· Обозначение класса. Строка будет формироваться для тех записей источника данных, в которых будет присутствовать такое обозначение класса. Указательная область «Класс» либо значение в поле Class в служебной таблице REFERENCE определяют номер столбца в источнике данных, содержащий обозначения классов.
· Тип класса. Строка будет формироваться для тех записей источника данных, в которых будет присутствовать такой тип класса. Указательная область «ТипКласса» либо значение в поле ClassType в служебной таблице REFERENCE определяют номер столбца в источнике данных, содержащий типы классов.
Типы классов:
1 - операция
2 - переход
3 - материал
4 - вспомогательный материал
5 - инструмент
6 - пользовательский
7 - документация
8 - оборудование
9 - расцеховка
10 - типовой ТП
11 - конструкторский материал
12 - комментарий
· Служебное слово «ПустаяСтрока». Такой шаблон строки предназначен для формирования пустых строк, количество которых указывается в управляющей области «ПустыеСтроки» (см. раздел 15.10.5.4).
· Служебное слово «СменаГруппы» или «СменаГруппы1» или «СменаГруппы2» и т.д. Строка будет формироваться при смене группы записей в источнике данных в соответствующей группировке.
· Служебное слово «НачалоГруппы» или «НачалоГруппы1» или «НачалоГруппы2» и т.д. Строка будет формироваться в начале каждой группы записей в источнике данных в соответствующей группировке.
· Служебное слово «КонецГруппы» или «КонецГруппы1» или «КонецГруппы2» и т.д. Строка будет формироваться в конце каждой группы записей в источнике данных в соответствующей группировке.
· Служебное слово «КонецОтчета». Строка будет формироваться последней после обработки всех записей в источнике данных.
· Символ «&» + номер шаблона строки. Если для нескольких шаблонов строк нужно записать одно и тоже условие формирования, то его достаточно указать только для одного шаблона, а для всех остальных в первом служебном поле записать символ «&» плюс номер шаблона строки, в котором это условие записано. Например, «&2». Номер должен быть меньше номера текущего шаблона строки. Под номером шаблона строки понимается его порядковый номер в таблице заполнения состава карты. Под условием формирования понимается условие, указанное и в первом и во втором служебных полях.
· Служебное слово «ИтогоПоСтранице». Такой шаблон строки предназначен для формирования итоговой строки на листе. В бланке такой шаблон строки может быть только один. Для данного шаблона действуют следующие правила:
- используются только первое и второе служебные поля;
- итоговая строка формируется всегда, если присутствует такой шаблон строки, за исключением следующих случаев:
1. данный шаблон не содержит формируемых элементов
2. область управления «УстанавливатьВысотуСтрок» имеет значение «Да»
3. область «ВидШаблона» имеет значение «КартаЭскиза»
4. на листе не сформировалась ни одна строка
- если присутствуют шаблоны строк со служебным словом «КонецОтчета», то итоговая строка на листе будет сформирована перед ними;
- если значение элемента строки не вмещается по ширине, то переносы не делаются;
- для элементов шаблона строки поддерживаются только следующие правила формирования его значения (более полное описание правил см. выше):
1. номер поля источника данных
2. текст SQL запроса
3. вызов функции
4. формула
5. служебное слово: «НомерСтрокиНаЛисте», «НомерСтроки», «АбсПозИД»
6. произвольный текст
- при формировании текущего листа, исходя из указанного условия во втором служебном поле данного шаблона строки для его элементов с правилом формирования 1, 2 и 3 накапливаются суммы полученных значений и затем используются для формирования итоговой строки на листе.
Служебные слова «СменаГруппы», «НачалоГруппы» и «КонецГруппы» обрабатываются в том случае, если существует указательная область «ИдентификаторГС», которая определяет группы записей в источнике данных (см. раздел 15.10.6.4).
Служебные слова «СменаГруппы1», «НачалоГруппы1» и «КонецГруппы1» обрабатываются в том случае, если существует указательная область «ИдентификаторГС1». И т.д.
ВТОРОЕ служебное поле предназначено для указания дополнительного условия формирования строки. Может иметь следующие значения:
· Пустое значение. Дополнительное условие отсутствует.
· Текст SQL запроса. Правило записи текста запроса описано в разделе 15.10.9. Запрос должен возвращать логическое значение.
· Вызов функции. Правило вызова функции описано в разделе 15.10.10. Функция должна возвращать в качестве истинного значения «-1», а в качестве ложного значения «0».
· Обозначение класса текущей операции. Имеется ввиду обозначение класса операции, к которой относится текущая запись источника данных. Обрабатывается только для документов с видом «МаршрутнаяКарта» и «ОперационнаяКарта» и только для шаблонов строк, которые в первом служебном поле не содержать служебные слова.
ТРЕТЬЕ служебное поле предназначено для определения дополнительного источника данных для шаблона строки (см. раздел 15.10.12). Если дополнительный источник данных будет иметь более одной записи, то на основании данного шаблона строки будет сформировано столько строк, сколько записей в дополнительном источнике данных.
ЧЕТВЕРТОЕ, ПЯТОЕ и ШЕСТОЕ служебные поля позволяют определить условие формирования строк с совпадающими значениями элементов.
ЧЕТВЕРТОЕ и ПЯТОЕ служебные поля определяют с какого и по какой элемент нужно отслеживать совпадающие значения элементов при формировании таких строк. В поля записываются номера элементов относительно начала строки таблицы. Совпадением считается, если каждый элемент из указанного диапазона в следующей сформированной строке (на основе данного шаблона строки, сформированные строки на основе других шаблонов строк не учитываются) имеет такое же значение, как и в предыдущей.
ШЕСТОЕ служебное поле может иметь следующие значения:
· Служебное слово «Одна». Из группы подряд идущих сформированных строк с одинаковыми значениями элементов в выходной документ будет вставлена только первая.
· Служебное слово «Все». Вставлены будут все строки, но при этом элементы с совпадающими значениями будут отображены только в первой строке группы, во всех остальных строках группы они будут иметь пустое значение.
СЕДЬМОЕ служебное поле. При формировании строк выходного документа на основе шаблонов строк действуют следующие правила по умолчанию:
· строки, предназначенные для формирования при смене группы (КонецГруппы, СменаГруппы, НачалоГруппы) и в конце отчета (КонецОтчета), формируется всегда;
· остальные строки: если все элементы строки, которые должны были получить значение, получили пустое значение или нулевое, то строка не формируется.
СЕДЬМОЕ служебное поле позволяет изменить данные правила по умолчанию и предназначено для указания признака, управляющего отображением строки, у которой все элементы получили пустое или нулевое значение.
Может иметь следующие значения:
· Служебное слово «ВклПустые». Всегда формировать строку.
· Служебное слово «НеВклПустые». Не формировать строку с пустыми значениями элементов.
· Пустое значение. Действуют правила по умолчанию.
· Любой текст отличный от ВклПустые и НеВклПустые приравнивается к пустому значению.
ВОСЬМОЕ и ДЕВЯТОЕ служебные поля у шаблона строки предназначены для указания номера последней возможной строки многострочной части документа куда может формироваться строка на основе данного шаблона. Восьмое поле предназначено для области «Карта1», девятое поле предназначено для области «Карта2» (cм. раздел 15.10.3.2). Если при формировании выходного документа номер текущей строки многострочной части будет больше номера указанного в служебном поле, то формирование текущего листа будет закончено и строка будет сформирована на новом листе. В качестве примера использования можно рассмотреть формирование конструкторской спецификации, где в некоторых отраслевых стандартах рекомендуется не разносить наименование раздела и состав раздела на разные листы. Поэтому для шаблона строки, который будет формировать наименование раздела, нужно указать для первого и последующих листов номера строк многострочной части до которых можно формировать строку с наименованием раздела так, чтобы после нее сформировалась хотя бы одна строка из состава раздела.
ДЕСЯТОЕ служебное поле. Если на основе текущей записи источника данных формируются строки на основе нескольких шаблонов строк, то между ними пустые строки не формируются (количество пустых строк указывается в области управления «ПустыеСтроки» см. раздел 15.10.5.4). ДЕСЯТОЕ служебное поле позволяет изменить данное правило по умолчанию. Если в ДЕСЯТОЕ поле записать служебное слово «ВставлятьПустыеПосле», то после строки, сформированной на основе данного шаблона, пустые строки будут формироваться всегда (если в области «ПустыеСтроки» указано ненулевое значение).
Формирование пустых строк
Для формирования пустых строк в бланке в таблице заполнения состава карты оформляется специальный шаблон строки со служебным словом «ПустаяСтрока» в ПЕРВОМ служебном поле. Остальные служебные поля не используются. Элементы такой строки могут иметь:
· пустое значение
· произвольный текст
· служебное слово «НомерСтрокиНаЛисте»
· служебное слово «НомерСтроки»
· Текст SQL запроса. Правило записи текста запроса описано в разделе 15.10.9.
При формировании пустой строки переносы не осуществляются.
Если такого шаблона строки в таблице нет, то пустые строки формируются на основании строк именованной области «СоставКарты» (см. раздел 15.10.3.3).
Осуществление переносов
При формировании строк программный модуль рассчитывает количество символов, входящих в элемент строки по длине. Если количество символов значения элемента превышает количество входящих символов, то происходит перенос на следующую строку. Перенос производится в местах нахождения следующих символов: " ", "/", "\", ";", ":", "-" (данные символы можно переопределить областью управления «СимволыПереноса» см. раздел 15.10.5.17). Если такие символы отсутствуют, то перенос делается по количеству входящих в элемент символов.
Перенос так же осуществляется, если в тексте значения элемента встречается символ с числовым кодом 10 (символ переноса строки) или два символа подряд: символ с числовым кодом 13 плюс символ с числовым кодом 10.
Переносы осуществляются только для
элементов имеющих формат «Текстовый» и у которых не стоит признак «автоподбор
ширины».
При переносах для формирования следующей строки используется текущий шаблон строки. Строки будут формироваться до тех пор, пока не закончатся все переносы значений элементов. При этом если в элементах шаблона строки используются служебные слова «НомерСтрокиНаЛисте» и «НомерСтроки», то значения таких элементов будут формироваться для каждой новой строки с очередными значениями, соответствующими служебным словам.
! См. также: