Офисные документы

Модуль "Офисные документы"

Модуль предназначен для формирования печатных форм/отчетов, их экспорта в другие форматы (MS Word, MS Excel, JPEG, HTML)

Объекты и типы

    ОфисныйДокумент

Типы модуля "Офисные документы"

ОфисныйДокумент

описание:
Автоматически, тип ОфисныйДокумент появляется в списке параметров программы заполнения шаблона в печатных формах документов или в программе отчета, если вместо модулей "Просмотр документов", "Печать документов", "Групповые отчеты" выбрать "Офисные документы". В список параметров программы в этом случае вместо параметра Шаблон: Шаблон или Шаблон: ГрупповойОтчет добавляется параметр Шаблон: ОфисныйДокумент. Переменную Шаблон типа ОфисныйДокумент необходимо дополнительно инициализировать командой: Шаблон.СоздатьПакетОтчета(ИмяПакета, Комментарий); здесь ИмяПакета - строковая переменная или константа, значение которой произвольный идентификатор (последовательность букв, цифр, знаков подчеркивание); Комментарий - строковая переменная или константа с произвольным содержимым, возможно пустая. После этого можно загружать собственно шаблоны печатных форм, добавлять таблицы и данные к ним, добавлять переменные. Вне контекста отчетов и печатных форм документов работать с Офисными Документами нельзя.

функции объекта:

  ДобавитьЗаписьВТаблицу
  ДобавитьПеременнуюДата
  ДобавитьПеременнуюСтрока
  ДобавитьПеременнуюЦелое
  ДобавитьПолеВремя
  ДобавитьПолеДата
  ДобавитьПолеДатаВремя
  ДобавитьПолеДвоичное
  ДобавитьПолеДеньги
  ДобавитьПолеДробное
  ДобавитьПолеКартинка
  ДобавитьПолеЛогическое
  ДобавитьПолеМемо
  ДобавитьПолеСтрока
  ДобавитьПолеЦелое
  Заголовок
  ЗагрузитьИзКонфигурацииШаблоны
  ПоказатьОтчет
  СоздатьПакетОтчета
  СоздатьТаблицуДанных
  СохранитьСтруктуруВФайл
  ДобавитьЗапись
  ДобавитьЗаписьВТаблицуРасш
  ДобавитьПеременную
  ЗагрузитьИзКонфШаблоныРасш
  ЗагрузитьСкрипт
  ПолучитьПеременныеВсе
  ПолучитьПеременныеШаблона
  ПолучитьПоляТаблиц
  ПолучитьПутиКШаблонам
  ПолучитьПутьКШаблону
  РедактироватьЗапись
  РедактироватьИзКонфигурацииШабло
  СохранитьЗапись
  СохранитьСкрипт

ДобавитьЗаписьВТаблицу

Формат вызова:
ОфисныйДокумент.ДобавитьЗаписьВТаблицу(ИмяШаблона, ИмяТаблицы, Поля...: строка; Значения ...: БезТипа); /*только чтение*/

описание:
Добавление значение в указанную таблицу

пример использования:

для Шаблон делать
начало
  .ДобавитьЗаписьВТаблицу(
  "ПриказОПриеме"                                            - алиас шаблона
  "Сотрудники",                                              - имя таблицы
  "ТабельныйНомер;Фамилия",                                  - имена полей
        ЦелоеВСтроку(Приказ.Сотрудники(А).ТабНомер),         - значения полей
        Приказ.Сотрудники(А).Фамилия
                );
конец;


ДобавитьПеременнуюДата

Формат вызова:
ОфисныйДокумент.ДобавитьПеременнуюДата(Отчет, Категория, ИмяПеременной, ЗначениеПеременной: строка): строка; /*только чтение*/

описание:
Добавление переменной в шаблон печатной формы/отчета, тип "Дата", указывается алиас шаблона, категория переменных, имя переменной, ее значение.

пример использования:

Шаблон.ДобавитьПеременнуюДата("ПриказОПриемеТ1тех", "Предприятие", "ПриказДата", Приказ.Дата);
// Первый параметр - алиас шаблона, если шаблон находится "Конфигурация\Шаблоны\Кадровый учет\Приказы\ПриказОПриеме", то 
// алиас этого шаблона - "ПриказОПриеме". Алиас как и идентификатор может содержать только буквы, цифры и знак подчеркивание.


ДобавитьПеременнуюСтрока

Формат вызова:
ОфисныйДокумент.ДобавитьПеременнуюСтрока(Отчет, Категория, ИмяПеременной, ЗначениеПеременной: строка): строка; /*только чтение*/

описание:
Добавление переменной в шаблон печатной формы/отчета, тип "Строка", указывается алиас шаблона, категория переменных, имя переменной, ее значение.

пример использования:

Шаблон.ДобавитьПеременнуюСтрока("ПриказОПриемеТ1тех", "Предприятие", "Наименование", ОрганизацияИмя);


ДобавитьПеременнуюЦелое

Формат вызова:
ОфисныйДокумент.ДобавитьПеременнуюЦелое(Отчет, Категория, ИмяПеременной, ЗначениеПеременной: строка): строка; /*только чтение*/

описание:
Добавление переменной в шаблон печатной формы/отчета, тип "Целое число", указывается алиас шаблона, категория переменных, имя переменной, ее значение.

пример использования:

Шаблон.ДобавитьПеременнуюЦелое("ПриказОПриемеТ1тех", "Предприятие", "Наименование", ОрганизацияКод);


ДобавитьПолеВремя

Формат вызова:
ОфисныйДокумент.ДобавитьПолеВремя(ИмяТаблицы, ИмяПоля: строка);

описание:
Добавление поля в таблицу данных в формате "Время" - 13:37:25

пример использования:

Шаблон.ДобавитьПолеВремя("Сотрудники", "Время");


ДобавитьПолеДата

Формат вызова:
ОфисныйДокумент.ДобавитьПолеДата(ИмяТаблицы, ИмяПоля: строка);

описание:
Добавление поля в таблицу данных в формате "Дата" - 28/10/2002

пример использования:

Шаблон.ДобавитьПолеДата("Сотрудники", "ПериодОт");


ДобавитьПолеДатаВремя

Формат вызова:
ОфисныйДокумент.ДобавитьПолеДатаВремя(ИмяТаблицы, ИмяПоля: строка);

описание:
Добавление поля в таблицу данных в формате "Дата и время" - 09/02/2002 12:00:00

пример использования:

Шаблон.ДобавитьПолеДатаВремя("Сотрудники", "ПериодОт");


ДобавитьПолеДвоичное

Формат вызова:
ОфисныйДокумент.ДобавитьПолеДвоичное(ИмяТаблицы, ИмяПоля: строка);

описание:
Добавление поля в таблицу данных в формате "Бинарная последовательность" - произвольные символы


ДобавитьПолеДеньги

Формат вызова:
ОфисныйДокумент.ДобавитьПолеДеньги(ИмяТаблицы, ИмяПоля: строка): дробное;

описание:
Добавление поля в таблицу данных в формате "Число с целой и дробной частями" - 1234567890.12

пример использования:

Шаблон.ДобавитьПолеДеньги("Сотрудники", "Сумма");


ДобавитьПолеДробное

Формат вызова:
ОфисныйДокумент.ДобавитьПолеДробное(ИмяТаблицы, ИмяПоля: строка): дробное;

описание:
Добавление поля в таблицу данных в формате "Число с целой и дробной частями" - 1234567890.12

пример использования:

Шаблон.ДобавитьПолеДробное("Сотрудники", "Сумма");


ДобавитьПолеКартинка

Формат вызова:
ОфисныйДокумент.ДобавитьПолеКартинка(ИмяТаблицы, ИмяПоля: строка);

описание:
Добавление поля в таблицу данных в формате "Бинарная последовательность" - произвольные символы, для хранения изображений


ДобавитьПолеЛогическое

Формат вызова:
ОфисныйДокумент.ДобавитьПолеЛогическое(ИмяТаблицы, ИмяПоля: строка);

описание:
Добавление поля в таблицу данных в формате "Да, нет"

пример использования:

Шаблон.ДобавитьПолеДата("Сотрудники", "Признак");


ДобавитьПолеМемо

Формат вызова:
ОфисныйДокумент.ДобавитьПолеМемо(ИмяТаблицы, ИмяПоля, РазмерПоля: строка): строка;

описание:
Добавление поля в таблицу данных в формате "Символы" - "текст". Используется в случае известной длины текста. Нет ограничение на длины строки

пример использования:

Шаблон.ДобавитьПолеМемо("Сотрудники", "АдресПоПрописке");                                    


ДобавитьПолеСтрока

Формат вызова:
ОфисныйДокумент.ДобавитьПолеСтрока(ИмяТаблицы, ИмяПоля, РазмерПоля: строка): строка;

описание:
Добавление поля в таблицу данных в формате "Символы" - "текст". Используется в случае известной длины текста. Ограничение длины 250 символов

пример использования:

Шаблон.ДобавитьПолеСтрока("Сотрудники", "Условие", "100"); 


ДобавитьПолеЦелое

Формат вызова:
ОфисныйДокумент.ДобавитьПолеЦелое(ИмяТаблицы, ИмяПоля: строка): целое;

описание:
Добавление поля в таблицу данных в формате "Число с целой частью" - 1234567890


Заголовок

Формат вызова:
ОфисныйДокумент.Заголовок: строка;

описание:
Не используется

пример использования:

нет


ЗагрузитьИзКонфигурацииШаблоны

Формат вызова:
ОфисныйДокумент.ЗагрузитьИзКонфигурацииШаблоны(ПутиКШаблонам...: БезТипа);

описание:
Загрузка одного шаблона или нескольких шаблонов из конфигурации. Для добавление таблиц и переменных в шаблон используется алиас шаблона. Алиас это не содержащая пробелов строка совпадающая с именем шаблона (без пути) из конфигурации. Например, если полное имя шаблона имеет вид : "Конфигурация\Шаблоны\Кадровые документы\Приказы\ПриказОПриеме", то алиас шаблона - "ПриказОПриеме".

пример использования:

Шаблон.ЗагрузитьИзКонфигурацииШаблоны(РесурсПоУмолчанию, "Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Приказы\СтраницаСогласования");

Шаблон.ЗагрузитьИзКонфигурацииШаблоны("Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Приказы\ПриказОПриемеТ1тех",  "Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Приказы\СтраницаСогласования");


ПоказатьОтчет

Формат вызова:
ОфисныйДокумент.ПоказатьОтчет;

описание:
Визуализация сформированного отчета.

пример использования:

Шаблон.ПоказатьОтчет;


СоздатьПакетОтчета

Формат вызова:
ОфисныйДокумент.СоздатьПакетОтчета(ИмяПакета, Комментарий: строка): строка;

описание:
Функция создаёт объект Офисный документ с именем ИмяПакета для последующего его заполнения шаблонами печатных форм и данными. Вызов этой функции предваряет все остальные операции с офисным документом, как то: загрузку шаблонов печатных форм, добавление таблиц данных и заполнение их данными, добавление переменных, визуализацию печатной формы. Первый аргумент - ИмяПакета - произвольный идентификатор, второй аргумент - Комментарий - произвольная, возможно пустая, строка символов.

пример использования:

Шаблон.СоздатьПакетОтчета("ПриказОПриемеТ1тех", "Шаблон для создания отчета Приказ Т-1");


СоздатьТаблицуДанных

Формат вызова:
ОфисныйДокумент.СоздатьТаблицуДанных(ИмяШаблона, ИмяТаблицы, ИмяСвязьТаблицы, МастерПоле, ДетальПоле, ИндексПоле: строка): строка;

описание:
Создание таблицы данных, которые необходимо отразить в печатной форме/отчете. Как правило вызывается с добавлением полей

пример использования:

для Шаблон делать
начало
  .СоздатьТаблицуДанных("ПриказОПриеме", "Сотрудники", "", "", "", "");
конец;

для Шаблон делать
  начало
    .СоздатьТаблицуДанных("ПриказОбщий", "Сотрудники", "", "", "", ""); // В списке параметров первый - алиас шаблона, затем имя таблицы...
    .ДобавитьПолеСтрока("Сотрудники", "ТабельныйНомер", "30");      
    .ДобавитьПолеСтрока("Сотрудники", "Фамилия", "30");
    .ДобавитьПолеСтрока("Сотрудники", "Имя", "30");
    .ДобавитьПолеСтрока("Сотрудники", "РегламентНомер", "15");
    .ДобавитьПолеДата("Сотрудники", "РегламентДата");      
  конец;


СохранитьСтруктуруВФайл

Формат вызова:
ОфисныйДокумент.СохранитьСтруктуруВФайл(ИмяУзла, Имя файла: строка): строка; /*только чтение*/

описание:
Не используется

пример использования:

нет


ДобавитьЗапись

Формат вызова:
ОфисныйДокумент.ДобавитьЗапись(ИмяШаблона, ИмяТаблицы: строка); /*только чтение*/

описание:
Не реализована.


ДобавитьЗаписьВТаблицуРасш

Формат вызова:
ОфисныйДокумент.ДобавитьЗаписьВТаблицуРасш(ИмяШаблона, ИмяТаблицы, Поля...: строка; Значения ...: БезТипа); /*только чтение*/

описание:
Добавляет в таблицу запись, в которой указанные поля инициализированы значениями, не указанные поля - пустыми строками.


ДобавитьПеременную

Формат вызова:
ОфисныйДокумент.ДобавитьПеременную(Отчет, Категория, ИменаПеременных ...: строка; ЗначенияПеременных: БезТипа; ТипПоля: строка); /*только чтение*/

описание:
Не реализовано.


ЗагрузитьИзКонфШаблоныРасш

Формат вызова:
ОфисныйДокумент.ЗагрузитьИзКонфШаблоныРасш(ПутиКШаблонам...: БезТипа; ИмяШаблона...: строка);

описание:
Новый, расширенный, вариант загрузки шаблонов печатных документов/отчетов, позволяющий связать шаблон с ИменемШаблона отличным от алиаса шаблона. ИмяШаблона - второй обязательный параметр. Помимо этого расширенный способ загрузки шаблонов разрешает использовать ряд дополнительных функций для работы с обектом ОфисныйДокумент: ДобавитьЗаписьВТаблицуРасш, ЗагрузитьСкрипт, ПолучитьПеременныеВсе, ПолучитьПеременныеШаблона, ПолучитьПоляТаблиц, ПолучитьПутиКШаблонам, ПолучитьПутьКШаблону.

пример использования:

  Шаблон.ЗагрузитьИзКонфигурацииШаблоныРасш("Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Договора-Контракты\СлужебныйКонтракт", "Тест");
  Шаблон.ЗагрузитьИзКонфигурацииШаблоныРасш("Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Договора-Контракты\СлужебныйКонтракт", "Тест1");
  Шаблон.ЗагрузитьИзКонфигурацииШаблоныРасш("Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Договора-Контракты\СлужебныйКонтракт", "Тест2");
  Шаблон.ЗагрузитьИзКонфигурацииШаблоныРасш("Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Договора-Контракты\СлужебныйКонтракт", "Тест3");

  Шаблон.ДобавитьПеременнуюСтрока("Тест", "Предприятие", "НомерДоговора", "12/234");
  Шаблон.ДобавитьПеременнуюСтрока("Тест1", "Предприятие", "Сторона1РуководительДолжность", "Председатель комитета");
  Шаблон.ДобавитьПеременнуюСтрока("Тест2", "Предприятие", "Сторона1РуководительДолжность_РПод", "Председателя комитета");


ЗагрузитьСкрипт

Формат вызова:
ОфисныйДокумент.ЗагрузитьСкрипт(ИмяШаблона: строка): строка; /*только чтение*/

описание:
Позволяет получить в виде xml-структуры текст помещённый в раздел офисного шаблона "Скрипт", если он размещён в комментарии между словом "ABLScriptBegin" и словом "ABLScriptEnd".

пример использования:

Допустим у нас имеются два шаблона ТестДанных.fr3 и ТестДанных1.fr3, разделы скриптов имеют вид:
{
ABLScriptBegin
  Код := 99;
  Маска := 111;
  Положение := 'Нормальное положение';
ABLScriptEnd
}
begin

end.
и
{
ABLScriptBegin
  Код := 99;
  Маска := 111;
  Положение := 'Нормальное положение';
  функция Факт(n: целое): целое; начало если n = 0 тогда результат := 1 иначе результат := n * Факт(n - 1); конец;                                                                                                                                                                                                                                                                                                              
ABLScriptEnd
}
begin

end.
тогда, после выполнения фрагмента:
  ОД.СоздатьПакетОтчета("Тест", "");
  ОД.ЗагрузитьИзКонфШаблоныРасш("Конфигурация\Шаблоны\Анкетные данные\ТестДанных", "Тест1");
  ОД.ЗагрузитьИзКонфШаблоныРасш("Конфигурация\Шаблоны\Анкетные данные\ТестДанных1", "Тест2");
  Script := СоздатьСтруктурныйСписок;
  Script.XMLТекст := ОД.ЗагрузитьСкрипт("Тест1"); 
  ВывестиТекст(Script.XMLТекст);
будет получен следующий результат:
<?xml version="1.0" encoding="utf-8" standalone="yes">
  <ABLScripts>
    <ABLScripts>
      <Тест1>
        <ABLScript скрипт="ABLScriptBegin"/>
        <ABLScript скрипт="  Код := 99;"/>
        <ABLScript скрипт="  Маска := 111;"/>
        <ABLScript скрипт="  Положение := 'Нормальное положение';"/>
        <ABLScript скрипт="ABLScriptEnd"/>
      </Тест1>
      <Тест2>
        <ABLScript скрипт="ABLScriptBegin"/>
        <ABLScript скрипт="  Код := 99;"/>
        <ABLScript скрипт="  Маска := 111;"/>
        <ABLScript скрипт="  Положение := 'Нормальное положение';"/>
        <ABLScript скрипт="  функция Факт(n: целое): целое; начало если n = 0 тогда результат := 1 иначе результат := n * Факт(n - 1); конец;"/>
        <ABLScript скрипт="ABLScriptEnd"/>
      </Тест2>
    </ABLScripts>
  </ABLScripts>
</?xml>


ПолучитьПеременныеВсе

Формат вызова:
ОфисныйДокумент.ПолучитьПеременныеВсе; /*только чтение*/

описание:
Позволяет получить все переменные добавленные в шаблоны офисного документа.

пример использования:

  сс := СоздатьСтруктурныйСписок;
  попытка
    сс.XMLТекст := Шаблон.ПолучитьПеременныеВсе;   ВывестиТекст(сс.XMLТекст);
  обязательно
    УдалитьОбъект(СС);
  конец;

результат:

<ПеременныеШаблонов>
      <Переменные>
            <Тест>
                   <ДатаЗаключенияМесяцПрописью/>
                   <НомерДоговора/>
                   <Сторона1РуководительДолжность_РПод/>
                   <Сторона1РуководительФИО_РПод/>
            </Тест>
            <Тест1>
                   <ДатаЗаключенияМесяцПрописью/>
                   <НомерДоговора/>
                   <Сторона1РуководительДолжность_РПод/>
                   <Сторона1РуководительФИО_РПод/>
                   <Сторона1РуководительОснованиеПолномочий_РПод/>
                   <Сторона2ПолноеИмя/>
                   <Сторона2РуководительДолжность_РПод/>
                   <Сторона2РуководительФИО_РПод/>
             </Тест1>
      </Переменные>
</ПеременныеШаблонов>


ПолучитьПеременныеШаблона

Формат вызова:
ОфисныйДокумент.ПолучитьПеременныеШаблона(ИмяШаблона: строка); /*только чтение*/

описание:
Не реализована.


ПолучитьПоляТаблиц

Формат вызова:
ОфисныйДокумент.ПолучитьПоляТаблиц; /*только чтение*/

описание:
Возвращает таблицы, используемые в шаблоне, и их поля в виде xml-структуры.

пример использования:

          Шаблон.СоздатьПакетОтчета("Движение", "");
          Шаблон.ЗагрузитьИзКонфШаблоныРасш("Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Служебные отчеты\ДвижениеПерсонала", "Change");      
          s1 := СоздатьСтруктурныйСписок;
          s1.XMLТекст := Шаблон.ПолучитьПоляТаблиц; ВывестиТекст(s1.XMLТекст);
 
Результат:

<?xml version="1.0" encoding="utf-8" standalone="yes">
  <TableFields>
    <ПоляТаблицы>
      <Change>
        <Сотрудники.Подразделение/>
        <Сотрудники.Принятые/>
        <Сотрудники.Переведенные/>
        <Сотрудники.Уволенные/>
      </Change>
    </ПоляТаблицы>
  </TableFields>
</?xml>


ПолучитьПутиКШаблонам

Формат вызова:
ОфисныйДокумент.ПолучитьПутиКШаблонам; /*только чтение*/

описание:
Позволяет в ABL-скрипте получить полные пути к шаблонам в виде xml-структуры.

пример использования:

        Шаблон.СоздатьПакетОтчета("Движение", "");
          Шаблон.ЗагрузитьИзКонфШаблоныРасш("Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Служебные отчеты\ДвижениеПерсонала", "Change");
          s := СоздатьСтруктурныйСписок;
          s.XMLТекст := Шаблон.ПолучитьПутиКШаблонам; ВывестиТекст(s.XMLТекст); 
   
Результат:
<?xml version="1.0" encoding="utf-8" standalone="yes">
  <ПутиШаблонов>
    <ПутиКШаблонам>
      <Change путь="Конфигурация\Шаблоны\Кадровый учет\Документы МЭФ МО\Служебные отчеты"/>
    </ПутиКШаблонам>
  </ПутиШаблонов>
</?xml>


ПолучитьПутьКШаблону

Формат вызова:
ОфисныйДокумент.ПолучитьПутьКШаблону(ИмяШаблона: строка); /*только чтение*/

описание:
Не реализована.


РедактироватьЗапись

Формат вызова:
ОфисныйДокумент.РедактироватьЗапись(ИмяШаблона, ИмяТаблицы, Поля...: строка; Значения ...: БезТипа); /*только чтение*/

описание:
Не реализована.


РедактироватьИзКонфигурацииШабло

Формат вызова:
ОфисныйДокумент.РедактироватьИзКонфигурацииШабло(СодержаниеШаблона: строка);

описание:
Не реализовано.


СохранитьЗапись

Формат вызова:
ОфисныйДокумент.СохранитьЗапись(ИмяШаблона, ИмяТаблицы: строка); /*только чтение*/

описание:
Не реализована.


СохранитьСкрипт

Формат вызова:
ОфисныйДокумент.СохранитьСкрипт(ИмяШаблона: строка): строка; /*только чтение*/

описание:
Не реализована.