Re: Версия 2004.1
Пользователь: Бродовский (IP-адрес скрыт)
Дата: 06, May, 2004 11:40
В версии 2004.1
Включены новые форматные выходы (&unifor(...) в языке форматирования:
1. &unifor('7...) - реализация реляционности, т.е. реализация отношений "от одного к многим" - позволяет при расформатировании текущего документа осуществить расформатирование группы связаннызх документов из другой БД (фундаментальная по своей важности функция).
Конструкция передаваемых данных:
7<имя_БД>,</termin/>,<@имя_формата|формат>
имя_БД - имя базы данных, из которой будут браться связанные документы; по умолчанию, т.е. если имя БД "пустое", используется текущая БД.
/termin/ - ключевой термин, на основе которого отбираются (ищутся) связанные документы; термин заключается в уникальные ограничители (например. /), в качестве которых используется символ, не входящий (гарантированно) в термин.
@имя_формата|формат - имя формата или формат в явном виде, в соответствии с которым будут расформатироваться связанные документы. Если задается имя формата, то он берется из директории БД, заданной параметром <имя_БД>.
Есть аналогичный форматный выход - &unifor('D...) - который реализует связь "от одного к одному", т.е. из связанных документов берется только первый.
Пример:
...&unifor('7TEST,',"/T="v200^a"/",',v903"\par "')....
2. &unifor('+1....) - работа с глобальными строковыми переменными. Имеются три подфункции:
+1RNNN - чтение переменной с номером NNN
+1WNNN#AAA - запись в переменную с номером NNN значения AAA
+1 - опустошение всех глобальных переменных.
Глобальность переменных заключается в том, что перед началом очередного расформатирования они НЕ опустошаются, т.е. через глобальные переменные можно передавать данные из одного расформатирования в другое. Количество переменных не ограничено.
Пример:
...&unifor('+1W100#0')...(.....&unifor(|+1W100#|d999,F(val(&unifor(|+1R100|d999))+val(v999),0,0)).....).....&unifor('+1R100')....
3. &unifor('3...') - выдача данных, связанных с ДАТОЙ и ВРЕМЕНЕМ
Имеются следующие подфункции:
3 - выдать текущую дату в виде ГГГГММДД
30 - выдать теекущий год в виде ГГГГ
31 - выдать текущий месяц в виде ММ (с лидирующим нулем)
32 - выдать текущий день в виде ДД (с лидирующим нулем)
33 - выдать текущий год в виде ГГ
34 - выдать текущий месяц в виде М (без лидирующего нуля)
35 - выдать текущий день в виде Д (без лидирующего нуля)
36MM - выдать по заданному номеру месяца его название на русском языке в именительном падеже
37MM - выдать по заданному номеру месяца его название на русском языке в родительном падеже
38MM - выдать по заданному номеру месяца его название на английском языке
39 - выдать текущее время
3А - выдать номер текущего дня от начала года
Пример:
....&unifor('36',&unifor('34'))....
4. &unifor('!') - команда постредактуры: очистить результат расформатирования от двойных разделителей (двойных точек или двойных конструкций <. - >). Имеет смысл использовать один раз в любом месте формата.
5. &unifor('+F') - команда постредактуры: очистить результат расформатирования от RTF-конструкций. Имеет смысл использовать один раз в любом месте формата.