ERP Компас
Руководство пользователя

Оглавление

Введение 7

1 безопасность и Управление правами доступа 9

1.1 Безопасность данных 9

1.2 Назначение прав доступа пользователей 10

1.2.1 Выбор варианта (модели) назначения прав доступа 10

1.2.2 Порядок назначения прав доступа пользователей без возможности использования ролей 11

1.2.3 Порядок назначения прав доступа пользователей с использованием ролевой модели 11

1.3 Менеджер ролей 12

1.4 Список пользователей 13

1.4.1 Формирование списка пользователей ERP-системы "КОМПАС" 16

1.4.2 Добавление новой учетной записи пользователя ERP-системы "КОМПАС" 17

1.4.3 Назначение ролей пользователям 19

1.4.4 Взаимодействие прав доступа, определенных для пользователя 20

1.5 Настройка прав доступа пользователей и ролей 20

1.5.1 Настройка прав доступа пользователей без возможности использования ролей (режим по умолчанию) 20

1.5.2 Настройка прав доступа пользователей и ролей (при использовании ролевой модели) 23

1.6 Администратор меню 26

1.7 Менеджер типов таблиц 30

1.8 Администратор базы данных 34

1.9 Резервные базы данных 36

1.9.1 Настройка резервных баз данных 37

1.9.2 Порядок выбора базы данных для работы 40

1.9.3 Переход к работе с резервной базой данных 41

1.10 Утилита xmoderncore 41

2 Мастера 41

2.1 Мастер таблиц 42

2.1.1 Закладка «Общие сведения» 45

2.1.2 Закладка «Поля таблицы» 47

2.1.3 Закладка «Индексы» 62

2.1.4 Закладка Триггеры 64

2.1.5 Закладка «Спец. настройка» 65

2.1.6 Заполнение таблицы данными 69

2.1.7 Изменение структуры таблицы 71

2.2 Мастер табличных форм 72

2.2.1 Закладка «Общие сведения» 75

2.2.2 Закладка «Колонки» 79

2.2.3 Закладка «Фильтр/поиск» 90

2.2.4 Закладка «Сортировки» 92

2.2.5 Закладка «Итоги» 94

2.2.6 Закладка «Инструменты» 96

2.2.7 Закладка «Дерево групп» 98

2.2.8 Форматирование представления данных 100

2.3 Мастер экранных форм 103

2.3.1 Панель инструментов 106

2.3.2 Контекстное меню параметров экранной формы 110

2.3.3 Контекстное меню для элементов формы 112

2.3.4 Контекстное меню для элемента «Страницы» 113

2.3.5 Главное меню: пункт «Форма» 114

2.3.6 Изменение размера элементов 116

2.3.7 Изменение выравнивания 117

2.3.8 Изменение свойств элементов экранной формы 118

2.4 Мастер печатных форм 126

2.4.1 Правила редактирования шаблонов Word 129

2.5 Мастер запросов 135

2.5.1 Окно редактирования запроса 137

2.5.2 Конструктор запросов 143

2.5.3 Использование хранимых процедур 146

2.5.4 Некоторые особенности редактируемых наборов данных 147

2.6 Мастер отчетов 149

2.6.1 Закладка «Общие сведения» 151

2.6.2 Закладка «Шапка/подвал» 154

2.6.3 Закладка «Структура заголовка» 156

2.6.4 Закладка «Итоги/субитоги» 161

2.6.5 Окно редактирования параметров построения диаграммы 167

2.6.6 Использование дизайнера Free Report для построения и редактирования отчетов 168

2.7 Мастер бизнес - процедур 171

2.7.1 Назначение мастера бизнес-процедур 174

2.7.2 Как добавить новую бизнес-процедуру 174

2.7.3 Редактирование бизнес-процедуры 174

2.7.4 Классы объектов 212

2.8 Пример работы с Мастерами 237

2.9 Примеры запросов 239

2.9.1 Модуль КОМПАС: Складской учет. Справочник НОМЕНКЛАТУРА 239

2.9.2 Модуль КОМПАС: Кадровый учет. Печать Графика отпусков (форма Т-7) 240

2.10 Примеры бизнес-процедур 240

2.10.1 Модуль КОМПАС: Управление трудовыми ресурсами. Процедура выбора из справочника в ТФ BANK_PRIZ (BANK_PRIZ_VYB) 240

2.10.2 Модуль КОМПАС: Управление затратами. Процедура выбора статьи затрат для договора (Статьи.DOG_S_S_VYB) 242

2.10.3 Модуль КОМПАС: Управление трудовыми ресурсами. Фрагмент процедуры формирования сведений об остатках по видам отпусков (PRIKAZ_OTP_INFO) 243

2.10.4 Модуль КОМПАС: Упрощенная система налогообложения. [Расчет раздела 3 Декларации по НДС (НДС.R3_CALC_BTN) 243

2.10.5 Пример использования функции GetFieldList 244

3 ЯФПК и таблица транслятора 244

3.1 Примеры формул ЯФПК 246

3.1.1 Выбор расшифровки подписи в печатной форме акта AKT_A 246

3.1.2 Выбор расшифровки подписи бухгалтера в печатной форме счета Schet_4 246

4 Настройка импорта из Excel 246

4.1 Закладка «Общие данные» 248

4.2 Закладка «Конвертация» 250

5 Утилиты управления данными 252

5.1 Метаданные 252

5.1.1 Хранение метаданных 252

5.1.2 Многослойная структура хранения метаданных 253

5.1.3 Настройка путей к DAT-файлам 257

5.2 Распечатка описаний таблиц 259

5.3 Упаковка и переиндексация 259

5.3.1 Упаковка и переиндексация в программе обновления UPGRMAN 262

6 протоколирование системных событий 262

6.1 Настройка протоколирования 263

6.2 Системные сообщения 263

7 Редактирование эталонного массива общих мест 263

8 Заключение 266

ERP - система «КОМПАС»

Руководство
системного администратора


Введение

ERP-система «КОМПАС» предназначена для создания единой информационной среды предприятия. Система позволяет резко повысить производительность и качество работы управляющего персонала в таких сферах деятельности, как бухгалтерский учет (от создания первичных документов до выпуска баланса), документооборот (регистрация, хранение, быстрый поиск и корректировка всей деловой документации), управление персоналом и расчет заработной платы (с выдачей необходимых справок по составу работников, их доходам и т.д.), управление закупками, запасами и продажами, управление производственным процессом, бюджетирование, а также во многих других смежных областях.

В состав ERP-системы «КОМПАС» входят следующие подсистемы и модули:

ПОДСИСТЕМА «УПРАВЛЕНИЕ ФИНАНСАМИ»

ПОДСИСТЕМА «УПРАВЛЕНИЕ ПЕРСОНАЛОМ»

ПОДСИСТЕМА «Складской учет»

ПОДСИСТЕМА «УПРАВЛЕНИЕ АКТИВАМИ»

ПОДСИСТЕМА «УПРАВЛЕНИЕ ПРОИЗВОДСТВОМ»

ПОДСИСТЕМА «УПРАВЛЕНИЕ СТРОИТЕЛЬСТВОМ»

ПОДСИСТЕМА «ДОКУМЕНТООБОРОТ»

CRM-СИСТЕМА

ИНСТРУМЕНТ

Важной особенностью ERP-системы «КОМПАС» является возможность ее индивидуальной настройки под задачи, решаемые конкретным предприятием. В системе применяется трехуровневая система настройки комплекса: «параметризация / визуальные мастера / мастера для программиста». Наличие этих инструментов позволяет без участия фирмы–разработчика сравнительно быстро адаптировать систему под нужды конкретного предприятия и даже самостоятельно создавать специализированные отраслевые решения.

Первый уровень настройки вполне понятен. Классическая параметризация служит для того, чтобы быстро менять какие-либо учетные принципы. На практике необходимо лишь «переключить» систему с одного программно предусмотренного алгоритма на другой.

В каждом модуле имеется пункт меню Конфигурация, позволяющий менять параметры либо указанием конкретных значений, либо выбором одной из предлагаемых опций.

Визуальные мастера включают в себя:

Третий уровень настройки системы - это Мастера для программиста, базирующиеся на использовании специализированных языков.

С помощью «МАСТЕРОВ КОМПАСА» – специализированного инструментария, включенного в ERP-систему, - каждый пользователь может подготовить для себя собственный вариант и технологию использования системы, внешне совершенно не похожий на то, что он видит, впервые установив программу на свой компьютер. По этой же причине достаточно часто меняется стандартная поставка системы, особенно это касается вида экранных и печатных форм, а также отчетов, которые могут быть крайне быстро (буквально за один день) адаптированы к текущему законодательству.

Количество «МАСТЕРОВ КОМПАСА», которые Вы увидите в своем меню (а значит, и гибкость использования системы), зависит от того, какую версию Вы прибрели. В самую простую версию входит только лишь один МАСТЕР печатных форм. Впрочем, если у Вас есть потребность в полнофункциональной настройке информационной системы, можно приобрести (заменить) существующую у Вас версию на более гибкую, обладающую всеми настроечными элементами. Ранее накопленные данные при таком изменении сохраняются.

безопасность и Управление правами доступа

В этом разделе рассказывается о тех возможностях ERP-системы «КОМПАС», которые позволяют обеспечить безопасность и конфиденциальность работы с данными при использовании программного комплекса.

Безопасность данных

Защита данных обеспечивается подсистемой безопасности ERP-системы «КОМПАС», которая включает в себя ряд средств и методов для предотвращения возможного несанкционированного доступа к данным. Частью мер безопасности являются1:

В этом разделе мы более подробно остановимся на том, как настраивать и использовать возможности безопасности системы.

Возможности системы по защите данных от несанкционированного доступа используются непосредственно при настройке прав доступа пользователей.

Назначение прав доступа пользователей

Учетная запись пользователя является единой для входа во все модули ERP-системы «КОМПАС», и хранится в базе данных. Пароль шифруется и не доступен для просмотра. Список пользователей настраивается один раз в любом из имеющихся модулей системы.

Права доступа пользователей к модулям комплекса и функциональным возможностям (пунктам меню) модулей хранятся в общесистемном dat-файле USERACCS.dat. При старте модуля сначала проверяется наличие учетной записи пользователя и правильности введенного им пароля (предварительно введенный пароль шифруется) в базе данных, а затем права доступа этого пользователя к модулю и его функциональным возможностям в файле USERACCS.dat. В соответствии с информацией из этого dat-файла пользователю выдаются права на сеанс работы с системой.

Выбор варианта (модели) назначения прав доступа

attention Внимание!

Вам предоставляется возможность выбора одного из двух вариантов настройки прав доступа:

1. Без возможности использования ролей - назначения прав доступа к пунктам меню для роли (группы пользователей). Этот вариант установлен в стандартной поставке системы по умолчанию.

2. С использованием ролевой модели назначения прав доступа. Этот вариант позволяет настроить права доступа и для ролей, и для отдельных пользователей одновременно.

При выборе варианта настройки прав доступа учтите следующее:

  • Если Вы устанавливаете ERP-систему "КОМПАС" впервые, решение о том, какой из двух вариантов назначения прав доступа Вы будете использовать, Вам необходимо принять ДО заполнения списка пользователей.

  • Если Вы уже работаете с ERP-системой "КОМПАС" и используетет вариант 1 (без возможности использования ролей) обратите внимание на то, что при переходе с варианта 1 к варианту 2 (ролевая модель) все настройки прав доступа пользователей будет необходимо конфигурировать заново. Если совершен переход к работе по варианту 2, а затем – возврат к варианту 1, прежние настройки не возвращаются (то есть их тоже придется конфигурировать заново).

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

Порядок назначения прав доступа пользователей без возможности использования ролей

Определение прав доступа для пользователей при варианте работы без использования возможности ролевого доступа производится следующим образом:

  1. Настраивается список пользователей (см.п.1.4.);

  2. Определяются права доступа к функциональным возможностям системы для каждого пользователя в каждом установленном модуле системы (см.п.1.5.1).

Порядок назначения прав доступа пользователей с использованием ролевой модели

Определение прав доступа пользователей при варианте работы с использованием ролевой модели производится следующим образом:

  1. Определяются роли пользователей в системе и описываются в менеджере ролей (см.п.1.3);

  2. Определяются права доступа к функциональным возможностям системы для каждой роли в каждом установленном модуле (п.1.5.2);

  3. Настраивается список пользователей (п.1.4.);

  4. Каждому пользователю назначается роль (роли), которые он будет исполнять в системе (п.1.4.3.);

  5. При необходимости права доступа, определенные ролью (ролями) корректируются правами доступа пользователя персонально (п.1.5.2).

Примечание: пункты 2 и 3 можно поменять местами.

Менеджер ролей

attention Внимание!
Описывать роли следует только в том случае, если при назначении прав доступа Вы используете ролевую модель (см.п.1.2).

Описание ролей пользователей в программе может производиться в любом модуле подсистемы, в форме, вызываемой пунктом меню Настройка / Менеджер ролей.

В форме Менеджер ролей задаются:

1

Кроме того, в правой части формы расположены кнопки:

Описанные в этой форме роли действуют во всех модулях ERP-системы «КОМПАС» (при соблюдении условия, описанного в п.1.).

2

Список пользователей

Данные обо всех пользователях системы представлены в форме Список пользователей. Указанная здесь информация одинакова для всех модулей системы. Пароли пользователей не отображаются. На закладке Настройки можно определить для всего списка пользователей: минимальную длину пароля и срок его действия, по истечении действия которого вход в программу становится невозможным, и предлагается задать новый пароль (примечание: при установленной связи с AD эти возможности не используются).

Список пользователей

Администратор системы КОМПАС имеет возможность:

Справа внизу расположена группа переключателей Признак пользователя. В зависимости от положения переключателя, пользователь может быть отнесен к одной из трех категорий:

Пользователь. Такой пользователь не может работать с системными пунктами меню. Доступ к другим пунктам меню определяется настройками, сделанными администратором.

Демо-режим. Пользователю разрешено работать с программой в демонстрационном режиме, с рядом существенных ограничений функциональных возможностей системы.

Каждому пользователю можно присвоить одну или несколько ролей, исполняемых им в подсистеме. Роли пользователя отображаются в нижней части формы. Пользователю можно назначить любое количество ролей. Если назначено несколько ролей с различными правами доступа к одним и тем же объектам (пунктам меню), права пользователя определяются по правилам, описанным в п.1.4.4. данной инструкции.

Список пользователей ERP-системы "КОМПАС" может быть сформирован (см.п.1.4.1):

Новая учетная запись также может быть сформирована (п.1.4.2) либо импортом учетной записи AD, либо вводом данных непосредственно в список пользователей. При этом режим ввода новой учетной записи не зависит от того, каким образом был изначально сформирован список: часть записей может быть импортирована, а часть создана "вручную".

attention Внимание!
Порядок аутентификации пользователей, чьи учетные записи созданы импортом из AD, отличается от порядка аутентификации пользователей, чьи записи внесены в список пользователей непосредственно. Основное различие заключается в том, что, если запись импортирована из AD, с модулями может работать только пользователь, который аутентифицирован в установленной на компьютере операционной системе.

Кнопка По модулям позволяет посмотреть и настроить права выбранного пользователя в списке для всех модулей системы Компас. Для этого нужно выбрать пользователя в списке и нажать на кнопку (см. рисунок ниже).

Настройка прав доступа пользователя по модулям

Формирование списка пользователей ERP-системы "КОМПАС"

Формирование списка пользователей импортом группы AD

Учетные записи пользователей в ERP-системе "КОМПАС" системе могут быть созданы автоматически на основе импорта в список пользователей учетных записей из Active Directory (AD) - по наличию в определенной группе AD.

Список пользователей в стандартной поставке ERP-системы "КОМПАС" вызывается на экран пунктом меню Настройка / Список пользователей.

Список пользователей

Нажмите на кнопку в Списке пользователей, и на экран будет выведена форма для выбора группы AD:

Для отображения полного списка групп нажмите кнопку . Если Вы знаете имя группы, учетные записи которой необходимо импортировать, Вы можете ввести его с клавиатуры. После выбора учетные записи пользователей, отнесенные в AD к этой группе, будут импортированы в список пользователей ERP-системы "КОМПАС". По умолчанию все импортированные учетные записи имеют признак "Пользователь".

  • Уточнение

  1. Все визуальные списки строятся только для той организационной единицы, в которой находится текущий пользователь Windows, в т.ч. и при проведении процедуры импорта учетных записей.

  2. Если необходимо изменить организационную единицу, то необходимо в файл kompas.ini в секцию User прописать переменную BaseOrganizationalUnut.

---- пример ----

[User]

BaseOrganizationalUnit = OU=SUB_OU,OU=ORG_UNIT,DC=DOMAIN_NAME,DC=ru

---------------------

Это можно делать, не перезапуская модуль;

  1. При аутентификации в Active Directory организационной единицей является только домен. Поэтому логин пользователя должен быть уникальным для всего домена в целом.

Формирование списка пользователей вводом данных в форму

При "ручном" формировании списка пользователей производится последовательное добавление новых учетных записей пользователей системы (см.п.1.4.2.). Перед добавлением новых учетных записей Вы можете уточник длину и срок действия задаваемых паролей на закладке Настройки.

Добавление новой учетной записи пользователя ERP-системы "КОМПАС"

Добавление новой учетной записи импортом из AD

Добавление новой учетной записи пользователя ERP-системы "КОМПАС" импортом из Active Directory производится следующим образом:

  1. В списке пользователей нажмите кнопку Добавить;

  2. На экран будет выведена форма Ввод нового пользователя:

В этой форме, не заполняя никаких полей, нажмите кнопку в поле Идентификатор в Active Directory.

На экран будет выведена форма для выбора пользователя AD:

Нажмите кнопку в поле Имя пользователя. На экран будет выведен полный список пользователей домена. Выберите в этом списке нужную строку и нажмите ОК.

В форме Ввод нового пользователя автоматически заполнятся все поля:

Нажмите кнопку Сохранить. Подтвердите свое решение.

  1. Уточните Признак по умолчанию (Администратор, Пользователь, Доступ закрыт, Демо режим) вновь созданной учетной записи (с использованием одноименной группы переключателей). По умолчанию всем вновь созданным записям присваивается признак Пользователь.

Добавление новой учетной записи вводом данных в форму

Для добавления новой учетной записи последовательно введите информацию в Список пользователей:

Назначение ролей пользователям

attention Внимание!
Назначать пользователю роли имеет смысл только в том случае, если Вы используете ролевую модель настройки прав доступа.

Каждому пользователю можно присвоить одну или несколько ролей, исполняемых им в подсистеме:

Таким же образом можно назначить пользователю любое количество ролей. Если назначено несколько ролей с различными правами доступа к одним и тем же объектам (пунктам меню), права пользователя определяются по правилам, описанным в п.1.4.4. данной инструкции.

Взаимодействие прав доступа, определенных для пользователя

Как упоминалось выше, пользователь может исполнять несколько ролей в системе. При этом возможна ситуация, когда для работы с одним и тем же объектом (пунктом меню) для одного и того же пользователя установлены разные права (непосредственно или через роли). Такая ситуация разрешается следующим образом:

В части конкретизации прав доступа (полный доступ, только просмотр данных или запрет и т.п.) к функциональным возможностям (пунктам меню) модуля, реальные права доступа пользователя, исходя из его собственных прав и прав его ролей, определяются по следующим правилам:

Настройка прав доступа пользователей и ролей

Настройка прав доступа пользователей (ролей) производится в Администраторе меню. Доступ к функциональным возможностям системы разграничивается за счет определения прав доступа пользователя (роли) к конкретному пункту меню.

Настройка прав доступа не является единственной функцией Администратора меню, но в этом разделе мы рассмотрим порядок решения именно этой задачи. Остальные возможности, которые предоставляет Администратор меню, описаны в п.1.6.

attention Внимание!
Порядок настройки доступа пользователей зависит от того, какой из вариантов разграничения прав доступа Вы используете: без возможности использования ролей или ролевую модель.

Настройка прав доступа пользователей без возможности использования ролей (режим по умолчанию)

После того, как Вы добавили пользователя в список, задали его имя, пароль и права, Вам может потребоваться запретить (или наоборот, разрешить) ему доступ к некоторым пунктам горизонтального меню программы или к пунктам выпадающих подменю. Это можно сделать, выбрав пункт Сервис / Администратор меню. В появившемся окне выделите нужный пункт, нажмите кнопку Разграничение доступа и произведите необходимые настройки.

Описанную процедуру следует повторить для каждого пун­кта меню, к которому Вы хотите запретить (разрешить) доступ какого-либо пользователя.

3

Форма настройки прав доступа (вариант, принятый по умолчанию)

Разграничение доступа осуществляется следующим образом. С помощью формы Права доступа к пункту меню, вызываемой, как уже говорилось выше, из Администратора меню, можно управлять доступом пользователей к пункту, название которого отображено в графе Пункт меню.

Настройка прав доступа производится по-разному, в зависимости от того, к какому из трех типов отнесен пункт меню с помощью переключателя тип пункта:

Идентификаторы всех пользователей могут быть представлены либо в списке Пользователи раздела, либо в соседнем списке, заголовок которого меняется в зависимости от типа пункта меню.

Кнопками RRIGHT Направо и RLEFT Налево осуществляется перенос идентификатора пользователя из одного списка в другой и обратно. Если пункт имеет тип Системный, то обычному пользователю не может быть дано право доступа к этому пункту. Поэтому в правом списке автоматически указываются идентификаторы всех администраторов, а в левом списке - всех остальных пользователей. Кнопки переноса при этом не работают.

С помощью кнопки Права пользователя под правым списком на экран выводится дополнительное окно, в котором можно уточнить режим доступа пользователя к пункту меню. В этом же окне может быть разрешен или запрещен доступ администратора к пункту меню системного типа.

Обратите внимание, что для выпадающего меню кнопка с надписью Разграничение доступа дает дополнительные возможности по сравнению с такой же кнопкой в меню горизонтальном, а именно:

Следует также обратить внимание, что установленное в Главном меню разграничение доступа к табличным формам распространяется на все случаи использования данных табличных форм со следующими исключениями:

В некоторых случаях экранные формы открываются без показа табличных форм, к которым они подключены. При этом, однако, разграничение доступа к табличной форме учитывается, и экранная форма выведена не будет, если доступ к табличной форме закрыт, или, в условиях авторизации, предпринимается попытка просмотреть чужую запись. Если доступ к табличной форме ограничен просмотром, то и экранная форма будет выведена только на просмотр.

Следует заметить, что если пункт меню с табличной формой входит в подменю, которое полностью закрыто к доступу, либо если доступ закрыт ко всему выпадающему меню, то считается, что доступ к табличной форме закрыт.

Также, в системе Компас предусмотрена настроечная таблица CFG_OPERACCS, с помощью которой можно настроить, какие пользователи или роли могут выполнять те или иные операции.

Настройка прав доступа пользователей и ролей (при использовании ролевой модели)

Как уже упоминалось, права доступа пользователей к работе с модулями ERP-системы «КОМПАС» и пунктами меню каждого модуля могут быть установлены как для каждого пользователя индивидуально, так и для групп пользователей (напоминаем – для подключения этого режима работы необходимо произвести настройку конфигурационной переменной, см.п.1.2.3). В том случае, если пользователи имеют одинаковые права на использование функциональных возможностей программы, может быть использован механизм ролей. Таким образом, права использования функциональных возможностей программы для каждого пользователя ERP-системы «КОМПАС» могут быть назначены:

Формирование списка пользователей и описание ролей может быть проведено в любом модуле ERP-системы «КОМПАС» по описанным ниже правилам. Список пользователей, как уже упоминалось, хранится в базе данных, и является единым для всех модулей комплекса. Список ролей хранится в файле ROLES.DAT, который является общесистемным dat-файлом, поэтому, если пути к dat-файлам прописаны верно, список ролей также будет общим для всех модулей.

Доступ к работе с пунктами меню может быть разрешен или запрещен. По умолчанию, до проведения настроечных работ, доступ не разрешен – работа с пунктами меню невозможна.

Порядок настройки доступа пользователей

Напоминаем, что определение прав доступа для групп пользователей (создание и определение доступа, в т.ч. и по ролям) производится следующим образом:

  1. Определяются роли пользователей в системе и описываются в менеджере ролей (см.п. 1.3.);

  2. Определяются права доступа для каждой роли (см.п.1.5.2);

  3. В систему вводится информация о пользователях, см.п. 1.4;

  4. Для каждого пользователя определяются права доступа (определяются права работы с модулями в целом, назначаются роли, определяется доступ к пунктам меню модуля индивидуально) – см.п.1.5.2.

Описанный порядок действия может быть изменен – пп.2 и 3 можно поменять местами.

Администратор меню

Настройка прав доступа производится следующим образом:

4

Назначение прав доступа к пункту меню пользователям и ролям

Для того, чтобы разрешить доступ к пункту меню необходимо:

Запрет на доступ производится аналогичным образом, только нажимается кнопка RRIGHT, расположенная ниже, и наименование роли перемещается в список Запрет.

Кнопки RLEFT позволяют перенести описание роли из списков в правой части формы (разрешенные или запрещенных) в общий список ролей и пользователей с не определенными правами доступа (напоминаем, что объекты с не определенными правами доступа для работы недоступны).

Для пунктов меню, доступ к которым пользователю или роли разрешен, можно конкретизировать эти права, нажав кнопку Права пользователя, и установить или полный режим доступа, или только просмотр данных без возможности внесения изменений («только чтение»), или закрыть. Также можно задать необходимость авторизации пользователя (или пользователей, если права определяются для роли) при открытии пункта меню (табличной формы).

Признак пользователя (Администратор, Пользователь...) в таблице CFG_USERACCS_M.

Администратор меню

Возможность предназначена для создания конфигураций рабочих мест – настройки главного меню программы. Настройки позволяют добавлять и удалять пункты меню, изменять порядок их следования, а также разграничить доступ (см.п. 1.2. ) к пунктам меню в зависимости от того, какой оператор вошел в систему. Пожалуй, это самая простая из всех имеющихся настроечных процедур.

Рис.1.1. Форма настройки главного меню

После входа в пункт Администратор меню или нажатия кнопки MAINMENU Вы можете увидеть две группы: группу Горизонтальное меню и группу Выпадающее подменю (рис.1.1.).

В группе Горизонтальное меню содержится список, в котором отображены все имеющиеся на момент редактирования пункты, расположенные в горизонтальной линейке. Кнопками Добавить пункт и Удалить, расположенными под списком, производится добавление новых и удаление ненужных Вам элементов. Естественно, что перед удалением необходимо левой клавишей мыши щелкнуть по тому пункту меню, который Вы собрались ликвидировать. Удаление пункта горизонтального меню автоматически приведет к удалению пунктов выпадающего подменю, связанных с ним.

Кнопки со стрелками UP Вверх (влево) и DOWN Вниз (вправо) позволяют задать выделенному элементу списка желаемую позицию в горизонтальном меню, перемещая его в списке ровно на одну позицию за один щелчок мыши. Отметим, что понятие «ниже» в списке в данном случае означает «правее» для окончательного положения элемента в горизонтальном меню.

После создания пункта меню необходимо задать его название. Это можно сделать, заполнив поле Заголовок на закладке Описание пункта.

Особый статус имеет пункт меню, для которого в качестве заголовка указан одиночный символ «—» (минус): этот пункт в готовом меню будет отсутствовать. Таким образом, после входа в пункт Администратор меню или нажатия кнопки MAINMENU Вы можно быстро исключить целое выпадающее меню из работы. Для того, чтобы вернуть раздел в меню, надо открыть Администратор меню (нажать кнопку MAINMENU) и вместо знака «—» ввести правильное наименование. Понятно, что в этом же поле можно и переименовать пункт меню.

Для быстрого вызова пункта меню можно назначить сочетание Alt+буква. Для этого достаточно перед соответствующей буквой в названии пункта меню поставить амперсант (&). Например, запись О&кно приведет к тому, что в процессе работы буква «к» в этом слове будет подчеркнута (Окно), а нажатие сочетания ALT+русская буква «к» на клавиатуре приведет к переходу в этот пункт.

Особый статус имеет флажок подменю mdi-okoh. При выборе в процессе работы того пункта горизонтального меню, в котором этот флажок установлен (в стандартной поставке он называется Окно), в выпадающем меню разворачивается перечень всех открытых Вами в процессе работы табличных форм, давая Вам, таким образом, возможность быстро перемещаться по ним. В принципе, имеется возможность «подцеплять» MDI-окна к любому пункту горизонтального меню. Естественно, что такой флажок должен быть установлен только у одного пункта горизонтального меню.

На закладке Спец. настройка можно увидеть индивидуальное внутреннее имя пункта, которое будет использоваться программой. Честно говоря, эта возможность избыточна, т.к. Администратор меню прекрасно умеет самостоятельно выдавать уникальные имена, а большего от этого поля и не требуется. Кроме того, на этой же закладке можно выставить флажок запрет на удаление пункта, который подстрахует Вас от случайного нажатия кнопки удаления, из-за которого придется начать всю работу заново. На этой закладке также есть флажок скрывать, с помощью которого любой пункт меню можно скрыть. При этом, все скрытые таким образом пункты меню можно увидеть, если установить флажок Показывать «скрытые» пункты меню, расположенного в левом нижнем углу формы на Рис.1.1.

Кнопка с надписью Разграничение доступа вызывает форму, управляющую доступом пользователей к пункту меню, название которого отображено в графе Пункт меню. Для дополнительной информации по администрированию см. пп. 1.2. - 1.5. Настройка прав доступа пользователей.

После того, как создан пункт горизонтального меню, для него надо заполнить Выпадающее подменю. Пункты Выпадающего подменю отображены в соответствующем окне, содержимое которого меняется по мере выбора новых пунктов в «горизонтальном» окне. Отображение ведется в виде списка, имеющего иерархическую («древовидную») структуру.

Работа с настройкой Выпадающего подменю очень похожа на то, что было описано чуть выше. Добавление и удаление пунктов списка производится кнопками Добавить пункт и Удалить, расположенными под списком пунктов. Те же функции выполняют и кнопки UP и DOWN, так что имеет смысл сказать только об отличиях.

Во-первых, название, состоящее из символа «—» (минус) не приводит к сокрытию пункта во время работы. Вместо этого появляется разграничительная линия, исключительно в целях более удобного зрительного восприятия. В окне Администратора меню этот пункт так и обозначается - <ЛИНИЯ>.

Во-вторых, для любого пункта, кроме вышеозначенной <ЛИНИИ>, возможно описание подменю (вот для чего нужна именно древовидная структура). Для этого достаточно щелкнуть левой клавишей мыши по пункту, к которому Вы хотели бы добавить подпункты, и нажать кнопку Создать подменю, и далее, в обычном порядке описать его свойства.

В-третьих, для создания быстрого доступа к пункту, Вы можете не только использовать амперсант (&) для выделения какой-нибудь буквы названия, но и назначить сочетание клавиш (Shortcut), заполнив поле Акселератор на закладке Описание пункта. Туда можно включать названия функциональных клавиш или латинских букв в сочетании с дополнениями Ctrl, Shift или Alt, отделенными знаком «плюс». Например, Ctrl+F8 или Shift+T. Не рекомендуется в этих целях использовать стандартные клавиши ERP- системы "КОМПАС".

В-четвертых, и это самое главное, для каждого из «конечных» (не вызывающих подменю) пунктов необходимо определить вызываемый ими объект - нужно указать, что должна делать программа после того, как пользователь выберет этот пункт меню. Для этого необходимо назначить вызываемый объект, выбрав с помощью переключателя один из семи вариантов, отображенных на экране:

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

Кроме того, служебная информация о номере версии, начиная с которой действует или прекращает действовать какая-либо настройка, является, конечно же, не обязательной, но иногда очень полезной.

Менеджер типов таблиц

Данный менеджер включен только в версии высокого настроечного уровня. Для того чтобы можно было описать какие-нибудь дополнительные кнопки и связанные с ними бизнес — процедуры, общие для работы со многими таблицами данных, в ERP- системе «КОМПАС» введено понятие типа таблицы, а для управления этими типами в меню Сервис выведен Менеджер типов таблиц. Использование данного менеджера требует знания особенностей функционирования Windows и предназначено исключительно для высококвалифицированных пользователей.

Все существующие типы таблиц (в настоящее время в стандартной поставке их восемь - реестр, перечень, справочник, журнал хозяйственных операций, конфигурация, временные таблицы ОС, тип для ОС, Кадры и зарплата) отображены в списке. Список состоит из двух колонок: Имя типа и Описание (рис. 1.8). Имя типа — это то обозначение, с которым работает программа: все настройки делаются с его помощью. Имя должно быть уникальным. Описание типа таблицы — это поясняющий комментарий, который может включать в себя любые символы. Список типов таблиц хранится в специальном файле с именем tbltypes.dat.

4

Рис.1.8. Менеджер типов таблиц

В окне менеджера типов таблиц расположен набор управляющих кнопок:

70

Рис. 1.9. Форма для выбора файла с описанием типов таблиц

5

Рис.1.11. Форма для редактирования реквизитов типов таблиц

В существующей версии программы Вы можете заполнить или изменить такие реквизиты типа таблицы как Название типа и Описание на закладке Общие сведения. Реквизиты на закладке Шаблоны документов имеют служебное назначение и редактированию не подлежат. А вот на закладке Инструменты как раз и можно Добавить новые или Удалить имеющиеся дополнительные кнопки. Полный перечень дополнительных кнопок, установленных для данного типа, появляется в левом окне закладки. Как можно увидеть, редактирование очень похоже на настройку Главного меню рабочего места (см.п. 1.1 Администратор меню). Даже упорядочивание кнопок в палитре инструментов, где вся группа располагается сразу после обязательного комплекта, производится с помощью знакомых значков UP и DOWN.

В правой части закладки можно задать Текст подсказки для выбранной кнопки и Идентификатор, т.е. уникальную последовательность символов, по которой с кнопкой работают программы пакета, определить ее Изображение (нажмите Загрузить и выберите файл с расширением bmp или воспользуйтесь кнопкой Вставить для получения изображения из буфера обмена Windows), а также привязать к этой кнопке, введя вручную или (что гораздо удобнее) выбрав из выпадающего списка, предварительно подготовленную (см. 2.7. Мастер бизнес—процедур) бизнес—процедуру, которая будет вызываться после ее нажатия. Кроме того, установив флажок не показывать, Вы можете временно отключить кнопку, не удаляя ее описания из перечня. Кнопка Копировать позволяет забрать изображение в буфер обмена. Вы также можете вынести кнопку в меню и определить сочетание клавиш, нажатие которых приведет к выполнению предопределенных кнопкой действий.

Существует теоретическая возможность использования разных изображений кнопки для активного и неактивного состояния. Количество используемых изображений определяется элементом ввода NumGlyphs. Но так как нигде в стандартной версии системы эта возможность (Numglyphs всегда равно 1) не используется, мы не будем заострять внимание на этом сложном моменте.

В настоящее время в ERP-системе «КОМПАС» используются следующие стандартные типы таблиц:

1. Реестр — используется для реестров документов (аналогов «бумажных» журналов регистрации документов). В такой таблице обязательно должны быть поля с типом (числовое поле), номером (текстовое поле) и датой документа, причем в табличных формах для таких таблиц, как правило, должно быть предусмотрено ограничение по ключу (см. 2.2. Мастер табличных форм), обеспечивающее работу в каждой табличной форме только с одним типом документов. При этом в Справочнике типов документов могут быть установлены специальные режимы работы с табличной формой. Например, может быть установлен режим, при котором перед вызовом полноэкранной формы для новой строки таблицы на экран предварительно выводится окно с предложением выбрать для нового документа образец или источник реквизитов. Так как источником реквизитов может быть документ другого типа, хранимый в другом реестре, для правильного заполнения полей нового документа во всех таблицах типа Реестр должна быть заполнена таблица соответствия Массив общих мест (см. п.1.2. Базовые термины раздела «Общие правила работы».).

Для чисто бухгалтерских документов может быть предусмотрена возможность проводки документа в Журнале хозяйственных операций и отмены ранее сделанной проводки. Кроме того, может быть предусмотрена печать документов по шаблонам, подготовленным с помощью Мастера печатных форм (см. 2.4). Короче говоря, реестр - специальная форма таблицы, предназначенная для хранения данных, описанных в справочнике типов документов.

2. Перечень — используется для всевозможных списков, например, для анкет, регистрационных карточек и т.п. От обычной таблицы отличается тем, что здесь предусмотрена печать отдельных позиций перечня по шаблонам, подготовленным с помощью Мастера печатных форм.

3. Справочник — используется для таблиц, содержащих сравнительно редко изменяемую информацию, использующуюся для подготовки первичных документов, проводок, расчетов и т.п. Для некоторых справочников может быть предусмотрен полноэкранный шаблон. Печать отдельного элемента справочника в виде документа не предусмотрена. При описании таблицы справочника следует учитывать, что первое по порядку поле трактуется как уникальный код элемента в справочнике и для него предусматривается автоматическое наращивание номера. Если для некоторого справочника автоматическое наращивание номера не требуется, нет никаких оснований относить такую таблицу к типу Справочник.

4. Кадры и зарплата - таблицы этого типа допускается корректировать только в задачах Кадры и Зарплата, тогда как в других задачах могут быть использованы только для выбора из справочника.

5. Конфигурация - используется для таблиц, предназначенных для хранения конфигурационных параметров задач.

6. Журнал хозяйственных операций - используется для рублевого и валютного журнала хозяйственных операций, а также для архива хозяйственных операций.

7. Тип для ОС – аналогичен типу Справочник, используется подсистемой «Основные фонды»

8. Временные таблицы ОС - используется, как видно из названия, для временных таблиц подсистемы «Основные фонды».

Внимание!!! Категорически не рекомендуется удалять стандартные типы таблиц, имеющиеся в первичной поставке, или изменять их название: это приведет к отключению некоторых функций программных модулей.

Администратор базы данных

Управление подключением базы данных осуществляется в форме, вызываемой пунктом меню Настройка / Администратор БД. Большинство задач ERP-системы «КОМПАС» могут работать с различными псевдонимами BDE (см. Приложение к данному руководству). Управление псевдонимами осуществляется в форме, вызываемой пунктом Администратор БД меню Настройка (рис.1.12.).

Рис. 1.12. Администратор базы данных

Окно настройки имеет три закладки, с помощью которых Вы можете выполнить следующие установки:

На закладке Для всех операторов обратите внимание на флажок Округление всегда проводить по правилам ФНС: при установке этого флажка при округлении денежным сумм до копеек, 0.5 копейки всегда округляются до полной копейки. До сих пор эти правила округления применялись только в отчетности по ЕСН и страховым взносам задач "Управление персоналом" и "Выгрузка в ПФ и ФНС". Настройка производится в форме Администратор БД, в разделе Параметры. На закладке Для всех операторов необходимо проставить флажок Округление всегда проводить по правилам ФНС (по умолчанию этот флажок не установлен);

На закладке Для текущего оператора можно задать режим автоматического обновления таблиц при одновременной работе в сети нескольких рабочих станций. Для того, чтобы автоматическое обновление было включено, надо проставить флажок. Кроме того, можно указать частоту обновления в секундах. Автоматическое обновление предусмотрено только для тех таблиц, которые расположены в MDI-окнах. Следует также обратить внимание, что автоматическое обновление не производится для тех таблиц, которые находятся в режиме корректировки или добавления записи или под транзакцией. Заданный режим автоматического обновления сохраняется в конфигурации индивидуально для каждого оператора.

Два флажка Форсировать стандартный формат даты и Специальный режим для учета региональных настроек предназначены для настройки работы программы при использовании нестандартных региональных настроек Windows.

Резервные базы данных

Режим авторизации пользователя, реализованный в ERP-системе «КОМПАС», позволяет выбрать базу данных для работы непосредственно при запуске программы. В этом случае сначала производится авторизация пользователя ERP-системы «КОМПАС» в программе и выбор базы данных для подключения, а затем – подключение к выбранной БД.

Обратите внимание! При переключении между резервными базами данных должен использоваться один и тот же набор dat-файлов (если используются отдельно хранящиеся dat-файлы, а не метаданные, сохраненные в БД).

При соединении с базами данных программой используется внутренний псевдоним БД ERP-системы «КОМПАС». Для базы данных, с которой ведется работа («открытой» при запуске модуля) этот псевдоним всегда KOMPAS.

Для пополнения списка доступных для работы баз данных необходимо проделать предварительные настройки, описанные в п.1.6.1.

Настройка резервных баз данных

Настройка резервных баз данных ERP-системы «КОМПАС» производится в два этапа:

Настройка псевдонимов резервных баз данных ERP-системы «КОМПАС»

Настройку псевдонимов резервных баз данных ERP-системы «КОМПАС» следует производить в следующем порядке:

5

Рис.1.13. Форма описания псевдонимов БД ERP-системы «КОМПАС»

Псевдонимов для резервных баз данных можно создать несколько – описанную процедуру надо провести необходимое количество раз.

Обратите внимание! Введите этот список псевдонимы для ВСЕХ баз данных, с которыми Вы работаете, в том числе и той, с которой Вы соединены в момент настройки соответствия между псевдонимами БД ERP-системы «КОМПАС» и псевдонимами BDE – то есть, в список Псевдонимы БД должны быть внесены ВСЕ псевдонимы баз данных. (отличные от псевдонима KOMPAS, который, напоминаем, используется для любой открытой БД и в список для выбора псевдонима БД при открытии модуля не попадет). Для каждой из баз данных, между которыми планируется переключаться при работе, должно быть указано значение Используется как резервная БД, в т.ч. и для той, которая фактически является основной. Значение этого параметра определяет, попадет ли псевдоним в раскрывающийся список для выбора базы данных для подключения в форме авторизации пользователя при входе в модуль (см.рис.1.16).

Установка соответствия псевдонимов баз данных ERP-системы «КОМПАС» и псевдонимов BDE

Соответствие между псевдонимами баз данных ERP-системы «КОМПАС» и псевдонимами BDE можно установить следующим образом (см.рис.1.14):

Рис.1.14. Администратор базы данных, установка соответствия псевдонимов БД КОМПАС и BDE

Для того, чтобы избежать при открытии пользователем модуля ввода логина и пароля для подключения к базе данных (см.п.2, рис.1.17), можно прописать их для этой БД на закладке Пользователь БД (рис.1.15):

Рис.1.15. Администратор БД, настройка подключения в базе данных

Обратите внимание, что флажок Запрашивать учетные данные при старте должен быть в этом случае снят.

При необходимости произвести процедуру установки соответствия необходимое количество раз.

Порядок выбора базы данных для работы

При открытии модуля сначала производится запрос имени и пароля пользователя ERP-системы «КОМПАС», здесь же можно указать базу данных, с которой планируется производить работу, выбрав соответствующий псевдоним из раскрывающегося списка (обратите внимание, это псевдоним ERP-системы «КОМПАС», созданный по правилам, описанным в п.Настройка псевдонимов резервных баз данных ERP-системы «КОМПАС»).

1

Рис.1.16. Форма регистрации пользователя при старте программы с возможностью выбора базы данных

После указания базы данных и нажатия кнопки Применить на экран выводится форма для ввода логина и пароля сервера БД (кроме тех случаев, когда эти сведения прописаны для соединения в выбранной базой при установке соответствия псевдонимов ERP-системы «КОМПАС» и BDE (см. рис.1.15).

2

Рис.1.17. Форма регистрации пользователя на сервере БД

По нажатии кнопки ОК производится проверка правильности ввода как имени пользователя и пароля ERP-системы «КОМПАС», так и имени пользователя и пароля подключения к выбранной базе данных.

Если все данные были введены правильно, модуль открывается для работы.

Если была совершена ошибка при вводе имени или пароля пользователя ERP-системы «КОМПАС» (см.рис.1.16), на экран выводится следующее сообщение:

3

Рис.1.17. Сообщение о невозможности регистрации при ошибочном вводе имени или пароля пользователя ERP-системы «КОМПАС»

Если неправильно введено имя пользователя или пароль для подключения к базе данных (см.рис.1.17), сервер выдаст следующее сообщение:

4

Рис.1.18. Сообщение о невозможности установить связь с БД при ошибочной регистрации пользователя на сервере

Обратите внимание! В этом сообщении будет указан псевдоним BDE.

Переход к работе с резервной базой данных

Для того, чтобы перейти к работе с другой базой данных, необходимо завершить работу модуля, а затем запустить его заново, указав в процессе авторизации псевдоним той базы данных, с которую необходимо подключить.

Утилита xmoderncore

  1. Начиная с версии 12.86.03 в поставке появилась новая папка xmoderncore. Эту папку надо расположить на том же уровне, что и папки модулей.

  2. В этой папке находятся библиотека xmoderncore.dll последней версии и ряд утилит, необходимых для работы новых доработок. Например, возможность построения Графиков из ТФ (кнопка Построить график).

Мастера

Данный раздел посвящен самым важным возможностям ERP-системы «КОМПАС» с точки зрения тех, кто хочет построить индивидуальную корпоративную информационную систему. Здесь будет рассказано о том, как создать новую таблицу или изменить структуру старой, как создать новое визуальное (экранное) представление таблицы или ее строки (записи), как подготовить новый отчет или бланк первичного документа, а то и вообще изменить алгоритм работы раздела системы. В этом разделе рассказывается о тех возможностях ERP-системы «КОМПАС», которые позволяют превратить стандартную поставку в индивидуальную корпоративную информационную систему, предназначенную для использования именно на Вашем предприятии. Часть из этих возможностей вполне доступна обычному пользователю, часть из них требует квалификации программиста. Но, в общем и целом, авторы системы считают, что все описанные здесь действия относятся к компетенции администратора базы данных (системного администратора) и должны быть закрыты от рядового оператора корпоративной системы. В стандартной поставке все эти подпрограммы находятся в выпадающем меню Сервис или Настройка.

Мастера позволяют превратить стандартную поставку в индивидуальную корпоративную информационную систему, предназначенную для использования именно на Вашем предприятии. Часть из этих возможностей вполне доступна обычному пользователю, часть из них требует квалификации программиста. Но, в общем и целом, авторы системы считают, что все описанные здесь действия относятся к компетенции администратора базы данных (системного администратора) и должны быть закрыты от рядового оператора корпоративной системы. В стандартной поставке все эти подпрограммы находятся в выпадающем меню Сервис или Настройка.

Мастер таблиц

Данный мастер включен только в версии с полным набором настроечных инструментов. Он вызывается из одноименного пункта меню Сервис или нажатием кнопки на панели инструментов TBLMAN и служит для создания, редактирования и удаления описаний (иначе говоря, шаблонов) таблиц, в которых и хранится вся информация. Шаблон таблицы состоит из псевдонима, собственно описания таблицы и других настроек. Дополнительными функциями Мастера таблиц является физическое создание таблиц и индексов, обновление структуры и перенос данных из одной таблицы в другую.

Все существующие шаблоны таблиц отображены в списке. Список состоит из трех колонок: Псевдоним, Описание и Тип (рис.2.1.). Псевдоним таблицы — это наименование, с которым работает программа и которое состоит из латинских букв, цифр и специальных символов. Псевдоним может не совпадать с названием файла, содержащего таблицу. Псевдоним таблицы должен быть уникальным. Описание таблицы — это комментарий, поясняющий назначение таблицы. Он может включать в себя любые символы. Вместо типа таблицы в третью колонку можно вывести названия баз данных или обозначения драйверов базы данных для каждой из таблиц. Для того, чтобы изменить содержание третьей колонки, используйте контекстное меню (открывается щелчком правой клавиши мыши или специальной клавиши на расширенной клавиатуре) в перечне таблиц. Все шаблоны таблиц находятся в специальном файле с расширением dat. Такой файл для мастера таблиц в стандартной поставке имеет имя tblman.dat. Весь список можно отсортировать в алфавитном порядке либо по описанию, либо по псевдониму, либо по типу (как кому удобно). Для этого достаточно щелкнуть левой клавишей мыши на заголовке соответствующей колонки.

Рис. 2.1. Мастер таблиц, описание таблиц баз данных

В форме мастера таблиц расположены кнопки:

Большинство подсистем ERP-системы «КОМПАС» могут работать с различными псевдонимами BDE в зависимости от настройки (эта настройка осуществляется в Администраторе базы данных). Как правило, настройка на базу данных осуществляется для основных псевдонимов:

При необходимости, Вы можете расширить этот перечень. В перечень можно добавить новый псевдоним базы данных, изменить существующий или удалить псевдоним, который уже не нужен. Не допускается удалять один из перечисленных выше стандартных псевдонимов, а изменить в их описании можно только словесный комментарий. Для других псевдонимов можно дополнительно изменять сам псевдоним, а также признак того, в каких вариантах системы этот псевдоним используется.

Закладка «Общие сведения»

Данная закладка содержит следующие элементы (рис. 2.2.):

Рис. 2.2. Мастер таблиц, закладка Общие сведения

9

Рис. 2.3. Форма выбора таблицы из базы данных

При выборе переключателя Добавить новые к уже имеющимся, происходит автоматическое описание тех полей выбранной таблицы, которые еще до сих пор не были включены в шаблон.

При выборе переключателя Добавить новые, а старые удалить, происходит экспорт полей выбранной таблицы в текущую с одновременным удалением всех старых описаний полей таблицы.

Закладка «Поля таблицы»

Свойства каждого поля таблицы редактируются по отдельности.

Все настройки полей можно провести на закладке Поля таблицы, на котором расположены (рис.2.4.):

Рис. 2.4. Мастер таблиц, закладка Поля таблицы, определение поля

Мнемоническое обозначение элемента массива общих мест, заданное для текущего поля, отображается рядом с этой кнопкой.

Группа Список полей содержит перечень уже описанных полей, кнопку Новое поле, позволяющую создать новое поле в таблице, кнопку Удалить, позволяющую убрать поле из таблицы, и кнопки со стрелками UP и DOWN, задающие выделенному полю желаемую позицию в записи таблицы в режиме «одно нажатие кнопки – перемещение на одну позицию вверх или вниз» соответственно. Физически порядок полей в базе данных меняется при создании таблицы, или после изменения ее структуры (см. ниже). Если же просто изменить порядок полей в описании уже существующей таблицы, но не провести преобразование структуры, то никаких сообщений о несоот­ветствии при работе с таблицей выдаваться не будет (но так поступать не рекомендуется).

Поле ввода Найти поле, а также кнопки FINDB и FINDNXTB предназначены для поиска поля таблицы по его описанию (наименованию). В поле ввода вводится текст, и, по нажатии кнопки FINDB, производится поиск описания поля, включающего этот текст. Найденное описание выделяется в Списке полей. Продолжить поиск описаний полей без изменения текста для поиска можно, нажав на кнопку FINDNXTB.

Все настройки, расположенные на закладках Определение поля, Контроль валидности, Связь со справочником и Спец. настройка, относятся только к одному (редактируемому) полю, выбранному щелчком левой клавиши мыши.

Самые общие настройки можно произвести на закладке Определение поля. На ней расположены элементы:

Следует обратить внимание, что пустое значение по умолчанию можно задавать только для полей, допускающих пустые значения, и только в том случае, если значение заполняется при любом изменении. Для новой записи все поля по умолчанию пусты, так что никакая специальная настройка не требуется. Также следует учитывать, что значения по умолчанию учитываются только при внесении изменений в таблицу через табличную форму. Если изменения вносятся SQL-запросами, эти настройки не действуют. Стоит также обратить внимание, что если для поля предусмотрено значение, заполняемое при любом изменении, то изменить значение в поле на другое средствами табличной формы нельзя: при любом изменении оно автоматически будет заменено на то, которое указано в описании таблицы. Установить другое значение в таком поле можно только SQL-запросом;

На закладке Контроль валидности расположены элементы, которые позволят вам контролировать правильность значения поля. Вы можете, в частности, проверять, попадает ли значение поля в некоторый диапазон, а также контролировать уникальность значения.

Настройку контроля валидности Вы можете сделать здесь, или в Мастере табличных форм (см. 2.2.2. Закладка «Колонки»). Если настройки чем-либо различаются, то контроль будет осуществляться согласно настройке, сделанной в мастере табличных форм, то есть он имеет более высокий приоритет.

Открыв данную закладку, Вы увидите следующие элементы (рис.2.5.):

Рис. 2.5. Мастер таблиц, закладка Поля таблицы, контроль валидности

Если переключатель установлен в положение Не задан, в таблице может существовать несколько записей с одинаковыми значениями редактируемого поля.

Если переключатель установлен в положение Строгий контроль, при обнаружении нескольких одинаковых значений редактируемого поля, на экране появляется сообщение об ошибке, а введенное значение отвергается.

Если переключатель установлен в положение На уровне предупреждения, при обнаружении двух или более одинаковых значений текущего поля, на экране появляется сообщение о нарушении уникальности. При таком положении переключателя сообщение может быть игнорировано.

Если контроль значений производится, то, при установке соответствующего флажка, можно сравнивать значения без учета пробелов.

Здесь же Вы можете уточнить, какое сообщение будет выдаваться при нарушении уникальности.

На закладке Связь со справочником расположены элементы, которые позволят Вам связать поле с данными из другой таблицы. В качестве такой справочной таблицы может использоваться табличная форма, реестр документов или запросная форма.

Справочник — это таблица, из которой можно подбирать значения в редактируемое поле и по которой можно проверять уже введенные величины. Для того, чтобы использовать некую таблицу как справочник, надо предварительно описать ее в данном Мастере и произвести настройки соответствующей табличной формы (см. 2.2. Мастер табличных форм). Выбор по справочнику можно ограничивать ключом или фильтром.

Настройку связи со справочником Вы можете сделать в Мастере таблиц или в Мастере табличных форм (см. 2.2.2. Закладка «Колонки»). Если настройки чем-либо различаются, связь со справочником будет осуществляться в соответствии с настройкой, сделанной в Мастере табличных форм, то есть этот мастер имеет более высокий приоритет. Это и понятно — если с данной таблицей для разных целей связано много разных форм представления, то, как правило, в большинстве из них нужны абсолютно одинаковые связи, и только в одной присутствуют некоторые «странности». Тогда только для нее и придется делать отдельное описание.

На данной закладке содержатся элементы (рис. 2.6.):

Рис. 2.6. Мастер таблиц, закладка Поля таблицы, связь со справочником

Если выбран режим допустим подбор по справочнику, контроль с возможностью игнорировать или строгий контроль, то для такого поля можно подбирать значения по справочнику.

Если выбран режим контроль с возможностью игнорировать, то при отсутствии в справочнике введенного в поле значения об этом будет выдаваться предупреждение.

Если выбран режим строгий контроль, то при отсутствии в справочнике введенного значения выдается сообщение об ошибке. При этом возможность игнорировать контроль закрыта, и пользователь может либо откорректировать справочник, либо отказаться от введенного значения.

Режим забор значения из справочника описан ниже.

Все поля, заполняемые одновременно, должны иметь соответствующие настройки на закладке Связь со справочником и одинаковый номер группы. Для тех полей, которые должны только заполняться из справочника совместно с другими, но для них самих не нужен ни подбор из справочника, ни проверка по справочнику, должен быть выбран режим забор значения из справочника и все тот же номер группы. Пример использования такого «группового забора»? Пожалуйста! Когда Вы вводите номенклатурный номер товара при его отпуске, Вы можете захотеть тут же получить в поле цена отпуска рекомендуемое значение из прайс-листа. Тогда при описании каждого из этих полей Вы поставите имя одной и той же таблицы-справочника номенклатуры, разные имена полей в этой таблице (для кода отпускаемого товара — номенклатурный номер, а для цены отпуска — цену по прайс-листу) и один и тот же номер группы. Однако для номенклатурного номера Вы выберете режим строгого контроля по справочнику (уж тут-то никаких сомнений нет), а для цены — всего лишь режим забора, ибо для чего ее подсказывать — пусть просто вводится сразу же после выбора номенклатуры.

Кнопка LAMPB рядом с полем ввода служит для облегчения заполнения номера группы. При нажатии на кнопку будет выведен список всех групп, уже использованных в описании таблицы, с указанием, какая табличная или запросная форма используется для группы, и какое поле таблицы является ведущим в этой группе: то есть, для него предусмотрен не просто забор значения из справочника, но подбор либо проверка по справочнику. Следует обратить внимание, что в описании таблицы может быть несколько групп, связанных с одним справочником. Именно поэтому для правильного выбора группы важно знать не только псевдоним табличной или запросной формы, но и ведущее поле в группе. Также следует учитывать, что для объединения полей в одну группу необходимо не только совпадение номера группы, но и совпадение табличной или запросной формы. Если в описании таблицы некоторый номер группы использован в сочетании с разными формами справочника, эти группы считаются разными, и в списке групп будут представлены отдельными строчками. При выборе одной из строк списка будет автоматически установлен не только номер группы, но и псевдоним табличной или запросной формы, так что выбор группы можно осуществлять без предварительного выбора псевдонима формы. Последним в списке групп представлен номер, еще не использованный в описании таблицы: его можно выбрать для формирования новой группы.

Если в табличной форме справочника не предусмотрено ключевое поле, но имеется дерево групп, то эта настройка интерпретируется несколько иначе: вычисленное по формуле значение используется как код той группы, которая будет выделена в дереве в момент вывода на экран табличной формы справочника.

Если значение в справочнике не найдено, возможны следующие режимы работы:

1) записать в поле значение, полученное в режиме "забор значения из справочника";

2) записать в поле значение и очистить зависимые поля, входящие в его собственную группу;

3) не записывать в поле такое значение, оставив в поле старое значение;

4) очистить поле и все зависимые поля, входящие в его собственную группу.

Предусматривается выбор одного из этих вариантов прямо в настройке связи со справочником в режиме "забор значения".

Обратите внимание! Возможность каскадного заполнения полей не следует использовать для уже существующих основных таблиц ERP-системы «КОМПАС» - возможность каскадного заполнения полей для них уже реализована программно. В основном эта доработка предназначена для использования при создании и описании новых таблиц и табличных форм.

----------------------------------------------------------------------------------------------------------------------------------------

Пример настройки связи поля таблицы (табличной формы) со справочником в двух режимах (основная связь и забор из справочника).

В качестве примера возьмем табличную форму _TEST, сформированную с помощью мастера табличных форм по одноименной таблице и содержащую следующие поля: ID (идентификационный номер записи),SKLAD (номер склада), MOL (табельный номер материально-ответственного лица), NAME (Ф.И.О. материально-ответственного лица).

Предположим, что в этой табличной формы мы хотим заполнять:

- номер склада (SKLAD), выбирая его из справочника подразделений;

- табельный номер (MOL) и Ф.И.О. (NAME) материально-ответственного лица - автоматически, из того же справочника подразделений, если они там указаны, но с обязательным контролем по кадровой картотеке. Если же в справочнике подразделений табельный номер и Ф.И.О. МОЛ не указаны, или при необходимости указать другие значения, мы хотим иметь возможность выбора этих данных из кадровой картотеки.

Для установки такой связи со справочником надо произвести описанные ниже настройки связи со справочником.

Настраиваем основную связь со справочников для поля SKLAD, как это показано на рисунке справа. Обратите внимание на назначение номера группы колонок: нажав на кнопку LAMPB, в появившейся форме выбираем строку, в которой № группы и поля1, табличная или запросная форма справочника[новая группа]. После сохранения формы выбора группы запись будет выглядеть так: № группы и поля1 SKLAD, табличная или запросная форма справочникаOTDEL [Справочник подразделений].

На закладке Забор значения никаких настроек не делаем.

Настройка основной связи со справочником для поля MOL: номер группы колонок выбирается 2 – [новая группа]. После сохранения формы выбора группы запись будет выглядеть так: № группы и поля2 MOL, табличная или запросная форма справочникаKADRY [Кадровая картотека].

Настройка второй связи со справочником – забора значения – для поля MOL.

По умолчанию список вариантов пуст. Для установки источника выбора значений надо нажать кнопку Добавить, а затем указать выбрать номер группы колонок – в данном случае это 1 OTDEL. После выбора поле Табличная форма справочника заполнится автоматически. Далее надо указать Поле связи в справочнике. По нажатию кнопки LAMPB на экран выводится список полей таблицы OTDEL (таблицы, указанной в качестве табличной формы справочника). В этом списке и выбирается поле связи в справочнике.

Флажок Учитывать собственную (основную) связь со справочником должен быть установлен.

Далее из раскрывающегося списка выбирается один из вариантов поведения программы в том случае, если значение в справочнике отсутствует.

Настройка связи со справочником для поля NAME показана на рисунке справа.

В результате проведения настроек, показанных в этом примере, заполнение табличной формы будет производиться следующим образом. После выбора склада (SKLAD) из справочника подразделений автоматически будут заполнены поля с табельным номером (MOL) и Ф.И.О. (NAME) материально-ответственного лица – забором значений из того же справочника подразделений, если они там указаны. При этом будет произведена проверка на наличие такого табельного номера в кадровой картотеке. Если этот номер обнаружен не будет, программа поступит так, как было определено на закладке Забор значения для поля с «двойной» связью (MOL). Если в справочнике подразделений никакой информации о материально-ответственном лице не оказалось (поля MOL и NAME не заполнились), или в том случае, если автоматически забранные из справочника подразделений значения Вас не устраивают, выбор табельного номера и Ф.И.О. материально-ответственного лица можно произвести из кадровой картотеки непосредственно (нажав кнопку LAMPB в поле MOL).

-----------------------------------------------------------------------------------------------------------------------------------------

На закладке Спец. настройка расположены три флажка, установка которых предохраняет пользователя от случайного изменения типа или длины поля, а также от его удаления из описания таблицы. Как правило, эти флажки выставляются для тех полей, которые, безусловно, необходимы для правильного функционирования алгоритмов, жестко прописанных в текстах программ ERP-системы «КОМПАС». Например, номенклатурные номера, поля количества и цен в документах складского движения, поля остатков в складских карточках и т.п. Также в этой форме имеется флажок может не присутствовать в табличной форме.

Массив общих мест таблицы (см. раздел «Общие правила работы»), который можно редактировать после нажатия соответствующей кнопки, представляет собой иерархическую («древовидную») структуру. Массив предназначен, в основном, для обмена данными между документами из различных реестров и создания расчетных формул.

Соответствие между полями таблицы и элементами массива устанавливается с помощью Конструктора массива общих мест (рис. 2.7.).

Работа с конструктором осуществляется с помощью двух структур: массива эталона и массива редактируемой таблицы.

Вы можете заполнять массив общих мест редактируемой таблицы «перетаскиванием» элемента массива эталона в левое окно. Заметим, что если Вы пытаетесь перетащить элемент, а он никак не перетаскивается, то значит - это группа («групповой» перенос не разрешен), пусть даже уже пустая, т. к. все ее элементы уже были перенесены в левое окно до того.

12

Рис. 2.7. Конструктор массива общих мест

При переносе появляется окно с просьбой ввести имя поля, предварительно заполненное эталонным именем для данного элемента массива общих мест. Нажав на расположенную в этом окне кнопку DOTS (Справка), Вы вызовете на экран список полей текущей таблицы и сможете осуществить из него выбор. Следует помнить, что если имя, указанное для переносимого элемента массива, не является полем текущей таблицы, то при переносе оно не будет связано ни с одним полем таблицы. Не вдаваясь в подробности, заметим, что на уровне освоения системы, для которого предназначено данное руководство, не следует пользоваться никакими другими возможностями, кроме выбора, хотя Мастер таблиц этого и не запрещает.

После переноса элемента в массив таблицы элемент исчезает из эталонного окна.

Удаление элемента из массива таблицы производится выбором соответствующего пункта контекстного меню, вызываемого щелчком правой клавиши мыши (помимо этого там можно провести редактирование описания элемента по правилам п.6. Редактирование эталонного массива общих мест), или нажатием клавиши Del. В отличие от эталонного, в массиве таблицы можно удалять группу целиком. Удаленные элементы тут же возвращаются в правое окно и вновь доступны для «перетаскивания».

При необходимости, Вы можете откорректировать и сам эталонный массив, описание которого хранится в файле с именем masob.dat. Для этого надо щелкнуть правой клавишей мыши по эталонному массиву. На экран будет выведено меню, с помощью которого можно создать новый эталонный элемент (место) массива, откорректировать или удалить старый, создать новую группу элементов или перенести элемент в другую группу. При создании нового элемента его тип выбирается из нескольких предопределенных вариантов. Подробнее об этом см. п. 6. Редактирование эталонного массива общих мест.

Закладка «Индексы»

Для того, чтобы создать новый индекс, или изменить его описание, откройте закладку Индексы в окне описания таблицы (рис. 2.8.).

Внимание!!! Авторы рекомендуют в каждый индекс включать поле с уникальным значением, если таковое в таблице имеется (в конец списка полей). Естественно, совершенно необязательно вставлять его на самое первое место, ибо именно по первому полю в дальнейшем будет осуществляться сортировка (см. 2.2.4. Закладка «Сортировки»).

Рис. 2.8. Мастер таблиц, закладка Индексы

  • Уточнение

Для повышения надежности многопользовательской работы в ERP-системе Компас проводится доработка инструмента и отдельных подсистем, обеспечивающая автоматическое обновление отображаемой строки табличной формы перед выполнением значимых операций: корректировка строки, удаление строки, вызов экранной формы и др. Это обновление уже действует в реестрах документов. Производятся работы по реализации настройки, с помощью которой можно будет включить аналогичный режим для любой табличной формы, в том числе – разработанной самостоятельно.

Для того, чтобы новые возможности могли быть использованы в полной мере, при проектировании новых таблиц и табличных форм следует придерживаться определенных правил, изложенных ниже.

  1. Все таблицы должны иметь первичный индекс, однозначно идентифицирующий запись в таблице.

  2. Настоятельно рекомендуется включать в первичный индекс одно ключевое поле, имеющее уникальное значение для каждой записи.

  3. Ключевое поле не должно быть подвержено изменению в процессе редактирования записи. В связи с этим настоятельно рекомендуется использовать в качестве ключевых полей чисто служебные поля, не несущие учетного смысла.

  4. Рекомендуемый тип ключевого поля: «Автоинкремент» или «АвтоинкрементID». Для реестров может использоваться тип «Длинный целый», который благодаря программной поддержке реестров эквивалентен типу «АвтоинкрементID».

  5. Если для целей учета в таблице необходимо иметь уникальный код, имеющий учетный смысл, он может быть использован в качестве первичного ключа при условии, что он никогда не будет меняться в процессе редактирования записей. Если это условие не может быть выполнено, настоятельно рекомендуется иметь в такой таблице два ключевых поля: служебное ключевое поле, входящее в первичный индекс, и учетное ключевое поле, которое может входить в другой уникальный (не первичный) индекс. Примером таблицы с двумя ключевыми полями может служить таблица PLAN_CH.

  6. Если таблица с двумя ключевыми полями имеет тип SPR и необходимо, чтобы при добавлении записи учетное ключевое поле автоматически заполнялось следующим по порядку значением, следует в описании таблицы учетное ключевое поле располагать первым. Физический порядок полей в таблице при этом не имеет значения

Обратите внимание, что для таблиц Paradox поля, составляющие ключ первичного индекса, должны располагаться в начале таблицы в том же порядке, что и в выражении, задающем ключ. При необходимости этот порядок должен быть скорректирован на закладке Поля таблицы (см. п.2.1.2) стрелками Вверх и Вниз. После корректировки порядка полей вам надо изменить структуру таблицы в соответствии с описанными изменениям. Изменить структуру таблицы можно нажатием кнопки Изменение таблицы на закладке Общие сведения (см. п.2.1.1). Не следует для обеспечения желаемого порядка следования полей в существующей таблице пользоваться кнопкой Создать таблицу (см. п. 2.1.1), так как в этом случае произойдет полная потеря всех содержащихся в ней данных.

В нижнем правом углу страницы расположены два флажка, которые регулируют порядок автоматического создания индексов в случае, если при открытии таблицы выяснится, что индекса нет или он не соответствует описанию. Флажок Создавать индексы при открытии таблицы, должен быть сброшен при использовании SQL-серверов, но рекомендуется устанавливать для таблиц в формате Paradox и dBase.Обычно; флажок Создавать индексы при создании таблицы должен быть установлен.

Закладка Спец. настройка не предназначена для пользователей и потому не описывается.

Закладка Триггеры

На этой закладке представлен список триггеров, подключенных к таблице. К моменту подключения к таблице сам триггер должен быть уже описан - в специальной форме Триггеры (см.п.2.8). Пользователю предоставляется возможность Добавить триггер в список, удалить из списка, заменить или просмотреть выделенный в списке триггер. Также можно создать или удалить объект (или все сразу), для этого предназначены кнопки в нижней части формы. Установленный флажок Создавать при создании таблицы определяет автоматическое создание триггера (при создании таблицы).

Закладка «Спец. настройка»

В группе Создание таблицы расположен флажок, установив который Вы заставите программу создавать таблицу SQL-запросом.

Внимание!!! Это единственный способ создания таблицы, хранящейся на SQL-сервере, в этом случае он обязательно должен быть установлен. Программа автоматически генерирует текст запроса, содержащий название таблицы, имена и характеристики полей. При желании Вы можете изменить текст, нажав расположенную рядом кнопку FINDB. При этом не рекомендуется изменять тип и наименование полей - данная возможность планировалась для корректировки SQL предложения CREATE TABLE с указанием различных параметров, характерных для конкретного SQL-сервера.

Флажок Создавать таблицу в автоматическом режиме включает или исключает таблицу в список для массового создания (см. пункт 5.3. Упаковка и переиндексация).

Флажок Поставляется предварительно заполненной означает именно то, что следует из его названия.

Кроме того, здесь же можно настроить возможность сохранения истории изменений таблицы. Хранение истории таблицы БД подразумевает сохранение тех строк, данные в которых были изменены, в специально созданной для этого таблице. Таким образом, в той таблице, которая используется в рабочем процессе, хранятся актуальные данные, а в таблице для хранения истории – данные, которые были изменены.

Для каждого поля таблицы можно установить признак, учитывается или нет его изменение для сохранения строки в таблице истории. Кроме того, можно указать, с какой периодичностью будут сохраняться данные в таблице истории: при каждом изменении или раз в день.

Настройка хранения истории таблицы производится в Мастере таблиц.

Порядок настройки следующий:

Рис.2.8.1. Установка признака Не учитывать при ведении истории

Эта настройка производится в разделе Поля таблицы на закладке Спец.настройка установкой флажка Не учитывать при ведении истории. По умолчанию флажок не установлен, следовательно, изменение значения любого поля таблицы повлечет за собой сохранение измененной строки в таблице истории (после того, как указана эта таблица и сделаны настройки, описанные ниже);

Рис.2.8.2. Настройка параметров сохранения истории таблицы

Для просмотра на основании данных таблицы для хранения истории изменений можно создать табличную форму.

Примечание.

Если в рабочей таблице отсутствует поле для хранения сведений об авторе изменений, а эту информацию необходимо видеть в таблице истории, на этапе анализа «рабочей» таблицы и добавления поля для хранения даты записи истории, можно добавить в таблицу-источник поле для хранения данных об авторе и сделать настройки, показанные на рисунке ниже. В поле будет сохраняться имя пользователя, который работает с таблицей.

Рис.2.8.3. Настройка поля для хранения данных об авторе внесения изменений

Заполнение таблицы данными

Новую или уже существующую таблицу можно заполнить данными из другой таблицы, возможно, даже имеющей совсем другую структуру. Для этого после входа в режим редактирования описания таблицы достаточно нажать кнопку Загрузить данные на закладке Общие сведения, после чего на экране появится новое окно (рис. 2.9.).

Таблицу - источник можно выбрать в этом окне на закладке Источник данных, сначала указав псевдоним базы данных, а потом выбрав таблицу в этой базе из раскрывающегося списка (рис. 2.9.). Если при выборе базы данных в ней будет обнаружена таблица с тем же именем, что и заполняемая таблица, то имя таблицы будет выбрано автоматически, однако при необходимости, Вы можете выбрать и другую таблицу.

14

Рис. 2.9. Форма настройки заполнения таблицы данными

После этого на закладке Соответствие полей расположатся списки Заполняемая таблица и Таблица-источник, в которых будут отображены поля вышеуказанных таблиц. Для того чтобы установить соответствие между полем в заполняемой таблице и полем в источнике необходимо:

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

При установленном соответствии у левого края выделенного поля и у левого края соответствующего поля таблицы-источника отображаются красные метки. Если поле в данный момент не выбрано для редактирования, а соответствие уже было установлено, то у правого края соответствующего поля источника отображаются синие метки.

После нажатия на кнопку Выполнить будет запущена процедура переноса данных. Информация из полей источника будет перенесена в связанные с ними поля целевой таблицы. Результаты работы процедуры будут отображены на экране. Вы получите информацию о количестве скопированных записей и о количестве нарушений уникальности первичного ключа.

С помощью кнопки Отменить Вы можете отказаться от переноса данных.

Изменение структуры таблицы

После нажатия кнопки Изменить структуру на (см. 2.1.1. Закладка «Общие сведения») на экране появится новое окно, которое так и называется - Изменение структуры таблицы. В выпадающем меню Старое имя можно выбрать таблицу-источник данных. Список полей источника данных при этом отображается в окне Старая структура закладки Соответствие полей (рис. 2.10.)

Если в поле Новое имя задано новое имя таблицы (подсказанное из текущего описания), производится ее создание с использованием текущих настроек.

Каждому полю новой структуры Вы можете поставить в соответствие поле старой структуры.

Для простейших случаев такое соответствие устанавливается автоматически. В более сложных случаях это необходимо сделать вручную.

Установка соответствия абсолютно аналогична процедуре, описанной в 2.1.4. Заполнение таблицы данными.

15

Рис. 2.10. Форма настройки изменения структуры таблицы

Если флажок Перенести данные в новую структуру установлен, то новая таблица заполняется данными из старой таблицы, если же флажок не установлен, то таблица с новой структурой остается пустой.

После нажатия на кнопку Выполнить будет запущена процедура изменения структуры таблицы. Результаты работы процедуры будут отображены на экране. Вы получите информацию о количестве скопированных записей и о количестве нарушений уникальности первичного ключа.

С помощью кнопки Отменить Вы можете отказаться от изменения структуры.

Если структура таблицы не будет изменена явно с помощью мастера таблиц, то при первом же открытии таблицы Вы получите сообщение о несоответствии структуры ее описанию. При этом Вы сможете либо изменить структуру «на ходу» (с помощью того же диалога), либо отказаться от использования таблицы.

Мастер табличных форм

Этот мастер служит для создания, редактирования и удаления табличных форм, с помощью которых производится такое отображение данных, когда на экране мы видим одновременно много записей (одна строка — одна запись). Помимо этого, именно в данном мастере можно установить критерии фильтрации данных, их поиска, подсчета контрольных сумм, описать эти контрольные суммы, установить сортировки для удобного просмотра информации.

Первое, что Вы видите, войдя в соответствующий пункт меню Сервис или нажав кнопку TFMAN на панели инструментов, это список всех тех форм, которые на данный момент уже можно использовать в работе. Список состоит из трех колонок: Псевдоним, Описание и Таблица (рис.2.11.). Достаточно щелкнуть левой клавишей мыши по заголовку любой из колонок, чтобы все ее строки отсортировались в алфавитном порядке, т.е. Вы можете осуществлять поиск в списке и по псевдонимам, и по описаниям, и по именам таблиц.

16

Рис. 2.11. Мастер табличных форм

Псевдоним табличной формы — это обозначение, с которым работает программа. Он не обязан совпадать с названием отображаемой таблицы - с одной таблицей может быть связано множество табличных форм. Например, одним пользователям нужно видеть только три колонки данных, а другим абсолютно все. В этом случае создаются две разных табличных формы, и вызываются они разными пунктами меню (см. 1.1. Администратор меню) или на разных рабочих местах. Псевдоним каждой табличной формы должен быть уникальным. Описание формы не несет служебной информации и используется для пояснения ее функций. Псевдоним табличной формы, ее описание и настройки составляют шаблон. Все шаблоны табличных форм находятся в специальном файле с расширением dat. Такой файл для мастера табличных форм чаще всего имеет имя tfman.dat.

В форме мастера табличных форм расположены кнопки:

Теперь мы рассмотрим те настройки, которые можно осуществить в окне редактирования табличной формы, вызываемом к жизни нажатием кнопок Новая форма или Редактировать.

Нажав на кнопку Новая форма, Вы создадите новую пустую табличную форму. Все реквизиты табличной формы следует указать в открывающемся при нажатии кнопки окне Табличная форма.

Нажав на кнопку Новая из текущей, Вы создадите табличную форму по образцу текущей. После этого в нее можно внести необходимые изменения в окне Табличная форма, которое выводится на экран при нажатии кнопки.

Общие настройки табличной формы определяют ее псевдоним, описание и некоторые другие характеристики. Общие настройки дополняются описаниями колонок, которые расположены на соответствующей закладке. Вся прочая информация расположена на нескольких закладках, которые мы поочередно опишем.

Закладка «Общие сведения»

На закладке Общие сведения расположены следующие объекты (рис. 2.12.).

Рис.2.12. Мастер табличных форм, закладка Общие сведения

С другой стороны, режим действует всегда (вне зависимости от настройки в описании табличной формы) для лицевых счетов и базы ЕСН, кроме случаев, когда эти ТФ визуализируют данные по одному работнику или по одному получателю алиментов.

Помимо ключевых полей и их значений здесь же можно указать, надо ли выводить на экран колонки с полями, образующими ключ. Кроме того, если установлен флажок Проверка по префиксу, то указанное для последнего в перечне поля значение используется только как префикс, и отбираться будут все те записи, в которых хранящаяся в нем информация начинается с указанной последовательности символов. Если же флажок не установлен, то программа при отборе будет требовать точного соответствия всех ключевых полей заданным значениям. Из всего сказанного следует, что использование флажка Проверка по префиксу имеет смысл только для символьных полей.

Следует обратить внимание, что для отбора части таблицы по ключевым полям необходимо наличие совместимой сортировки в табличной форме (см. 2.2.4. Закладка «Сортировки»). Кроме того, следует отметить, что поля, по которым осуществляется отбор, должны обязательно присутствовать в перечне колонок (см. 2.2.2. Закладка «Колонки»). Если Вы не хотите их видеть, то следует установить располагающийся ниже флажок Не выводить колонки с ключевыми полями.

Разграничение доступа пользователей к кнопкам экспорта данных в табличных формах

Нажатие на кнопку Права на выгрузку выводит на экран диалоговую форму выбора вида экспорта.

attentionВнимание!
Настройки разграничения доступа для каждого вида экспорта данных из табличной формы (XLS, DBF или CSV) производятся отдельно.

После выбора вида экспорта на экран выводится форма настройки разграничения доступа к возможности экспорта данных в выбранном формате для выбранной табличной формы.

  • Уточнение

Порядок работы по настройке разграничения доступа к возможности экспорта данных табличных и запросных форм одинаковый.

Рис.2.12.1. Настройка разграничения доступа к возможностям выгрузки данных табличных и запросных форм в форматы XLS, DBF и CSV

Права доступа могут быть настроены в одном из двух режимов: черный список (принят по умолчанию) и белый список.

В левой части формы представлен общий список пользователей модуля.

Если выбран режим черный список, то пользователям, перемещенным в список доступа, доступ к возможности выгрузки данных будет закрыт (на рисунке выше – это Пользователь 4, Пользователь 5, Пользователь 6 и Пользователь 7), то есть по умолчанию, до переноса записей в список доступа, всем пользователям будет разрешено экспортировать данные. Добавленные после настройки прав доступа пользователи также по умолчанию будут иметь возможность экспорта данных.

Если выбран режим белый список, то возможность экспорта будет доступна только пользователям, помещенным в список доступа. При такой настройке добавленные после проведения настройки прав доступа пользователи по умолчанию не будут иметь возможности экспорта данных.

  • Уточнение

1) Настройка прав доступа к использованию возможности экспорта данных хранится в описании табличной или запросной формы. При создании новой табличной или запросной формы на основании текущей права доступа заимствуются из текущей табличной или запросной формы;

2) настройка прав доступа хранится в виде списка пользователей, входящих в черный или белый список. Если сохранен черный список, то все пользователи, входящие в него, не имеют возможности экспорта данных, всем остальным пользователям эта возможность доступна. Если сохранен белый список, то возможностью экспорта могут воспользоваться только перечисленные в нем пользователи, для всех остальных эта возможность закрыта. В случае заимствования формы в другой модуль эти же правила действуют для тех пользователей, которые отсутствуют в модуле, с помощью которого производилась настройка.

Закладка «Колонки»

Колонки — это, по смыслу, те же поля таблицы. Но, во-первых, как уже писалось выше, далеко не все поля надо выводить на экран в данной конкретной табличной форме. А во-вторых, колонку можно описать как некое «временное» поле с данными, которые реально не хранятся в таблице, а вычисляются в момент визуализации. Естественно, что редактировать данные в таких колонках нельзя.

Этим объясняется наличие разных терминов: «поле» и «колонка». А теперь приступим непосредственно к описанию настроек.

Свойства каждой колонки редактируются индивидуально.

Рис.2.13. Мастер табличных форм, закладка Колонки

Все настройки колонок расположены на закладке Колонки, на которой, в свою очередь, имеются (рис. 2.13.):

Группа Список колонок содержит собственно список колонок, кнопку Новая, позволяющую добавить в табличную форму новую колонку, кнопку Удалить, которая позволяет убрать колонку из формы, а также кнопки Добавить все и Удалить все, нажав на которые можно соответственно создать колонки для всех полей таблицы или полностью очистить перечень. Группа также содержит кнопки со стрелками UP Вверх и DOWN Вниз, задающие выделенному полю желаемую позицию (считая от левого края формы) при визуализации. В поле Фиксированные колонки задается количество колонок, остающихся неподвижными при прокрутке таблицы вправо и влево. Это очень удобно, например, при просмотре перечня личных карточек. При перемещении по одной строке таблицы информация на экране меняется, но всегда видны табельный номер и фамилия сотрудника. Таким образом, не надо запоминать, чьи данные просматриваются.

Еще раз напомним, что в списке колонок обязательно должны присутствовать ссылки на поля, описанные на закладке Общие сведения (см. 2.2.1) в качестве ограничителей выводимых записей по ключу. Самые общие свойства колонок можно настроить на закладке Описание колонки. На этой закладке расположены элементы:

Если переключатель Тип поля находится в положении Поле таблицы, то отображается группа Для поля таблицы. В группу входят: раскрывающийся список, задающий имя отображаемого поля, и флажок, устанавливающий запрет на редактирование колонки поля.

Если переключатель Тип поля находится в положении Вычисляемое поле, то отображается группа Формула для вычисляемого значения. В группу входят: поле для ввода формулы, раскрывающийся список с допустимыми типами результата и ограничитель по длине результата, активный, только если результат имеет символьный тип. В этой же группе расположена кнопка LAMPB для вызова Конструктора формул (см. п.8), который позволяет легко и удобно создавать выражения с любым типом результата, и кнопка MARK проверки правильности введенной формулы. Хотя, теоретически, для вычисляемых полей можно использовать все переменные, пока­занные Конструктором формул, на самом деле эффект от их применения может зависеть от точки вызова табличной формы в системе. На практике рекомендуем при описании формулы использовать поля текущей таблицы (в случае подбора с помощью Конструктора они находятся в группе с именем таблицы, по которой строится табличная форма) и любые действия и функции, которые обозначены в Конструкторе кнопками. Этого вполне достаточно для нормальной работы. Если Вы хотите подводить итоги (см. 2.2.5. Закладка «Итоги») по вычисляемому полю, то не забудьте задать ему какое-нибудь имя на закладке Спец. настройка (см. ниже).

Если переключатель Тип поля находится в положении Поле, вычисляемое по таблице, то отображается группа Вычисление по справочной таблице. В соответствующих полях можно задать имя справочной таблицы, поле результата и ключевые поля текущей и справочной таблицы. Программа работает следующим образом. Берутся значения ключевых полей текущей таблицы (если их несколько, то они перечисляются через «;» — точка с запятой, кстати, при описании этого перечня удобно использовать правую клавишу мыши, после щелчка которой можно выбрать название поля из появившегося на экране списка всех полей текущей таблицы). В справочной таблице ищется запись, в которой все эти значения прописаны в соответствующие ключевые поля (и здесь можно использовать «;», а также правую клавишу мыши для выбора из перечня полей справочника). Когда мы говорим «соответствующие поля», то имеется в виду соответствие в порядке описания перечня. Т. е. в том случае, когда в строке Ключевые поля в текущей таблице записано TAB_N; COD1_PL, а в строке Ключевые поля в справочной таблице записано AGENT; COD1, то значение из поля TAB N ищется в поле AGENT, а значение из поля COD1_PL — в поле COD1. Из сказанного нетрудно делать вывод, что количество полей в обоих перечнях должно совпадать. Кроме того, должны совпадать и типы соответствующих полей. Если программа такую запись в справочной таблице нашла, то в колонке будет показано значение из поля, имя которого вводится из выпадающего списка поле результата в справочной таблице. Если нужная запись не найдена, то в данной колонке на экране мы увидим пустоту. Если подходящих записей несколько, то для визуализации будет взята первая попавшаяся, и, значит, Вам нужно продумать последовательность ключевых полей, обеспечиваю­щую уникальный комплект значений в справочнике.

Эта возможность очень удобна во многих случаях. Например, у Вас в таблице, описывающей какой-либо первичный документ, хранится табельный номер сотрудника, а хотелось бы видеть и расшифровку, кто же это на самом деле. Для этого организуем колонку «ФИО», вычисляемую по таблице. В качестве справочника укажем таблицу KADRY. В обоих перечнях ключевых полей поставим единственное поле TAB_N. В качестве поля результата выберем FAMALIO. Готово!!!

Необходимо учитывать, что использование большого количества полей, вычисляемых по таблицам, может привести к существенному снижению скорости работы с табличной формой.

Если переключатель Тип поля находится в положении Расшифровка значения поля, то отображается группа Для поля расшифровки значения. Здесь можно задать имя поля, расшифровку которого требуется вывести в колонку, а также отметить флажок Подбор допустимого значения, если в этой колонке должна обеспечиваться возможность выбора значения из перечня. При осуществлении выбора реально в таблицу записывается ключевое значение, тогда как расшифровка в колонке при этом меняется автоматически.

Еще раз напомним, что колонки с вычисляемыми полями и с полями, вычисляемыми по таблице редактированию не подлежат.

Выбрав закладку Вид на экране, можно придать колонке удобный для пользователя вид (рис. 2.14.). В закладку Вид на экране входят:

Рис. 2.14. Мастер табличных форм закладка Колонки, вид на экране

Для того, чтобы установить контроль за содержанием колонки (на практике это имеет смысл только для колонок, базирующихся на реальных полях таблицы - источника данных, см. 2.2.1. Закладка «Общие сведения»), используется закладка Контроль валидности. На ней содержатся следующие элементы (рис. 2.15.):

Рис. 2.15. Мастер табличных форм, закладка Колонки, Контроль валидности

Если переключатель установлен в положение Не задан, в таблице может существовать несколько записей с одинаковыми значениями редактируемого поля.

Если переключатель установлен в положение Строгий контроль, при обнаружении нескольких одинаковых значений редактируемого поля, на экране появляется сообщение об ошибке, а введенное значение отвергается.

Если переключатель установлен в положение На уровне предупреждения, при обнаружении двух или более одинаковых значений текущего поля, на экране появляется сообщение о нарушении уникальности. При таком положении переключателя сообщение может быть игнорировано.

Здесь же Вы можете уточнить, какое сообщение будет выдаваться при нарушении уникальности.

Очень важная закладка Связь со справочником позволяет описать подбор и проверку значений по специальной (справочной) таблице в процессе редактирования данных. В качестве такой справочной таблицы может использоваться табличная форма, реестр документов или запросная форма. Для того, чтобы использовать некую таблицу как справочник, надо произвести настройки соответствующей табличной формы (см. 2.2.1. Закладка «Общие сведения»), либо подготовить соответствующую запросную форму. Выбор из табличной формы можно ограничивать ключом или фильтром. Запросная форма регулируется параметрами и макропараметрами запроса. Процесс настройки табличной формы на этой закладке абсолютно аналогичен тому, что было описано в 2.1.2. Закладка «Поля таблицы». Тем не менее, коротко повторим основные сведения еще раз. На закладке содержатся следующие элементы (рис. 2.16.):

Рис. 2.16. Мастер табличных форм, Колонки, связь со справочником

Если выбрано любое значение, кроме связь отсутствует (в том числе и допустим подбор по справочнику), то для такой колонки можно подбирать значения по справочнику. Вы, наверно, уже догадались, что в случае выбора варианта связь отсутствует программа сначала заглянет в описание данного поля таблицы (см. 2.1.2. Закладка «Поля таблицы») и примет окончательное решение о форме связи на основании введенных туда данных.

Если выбрано положение контроль с возможностью игнорировать, то, помимо возможности подбора, при отсутствии в справочнике введенного в колонку значения об этом будет выдаваться предупреждение. Ваша воля - принимать его во внимание или нет.

Если выбрано положение строгий контроль, то при отсутствии в справочнике введенного значения выдается сообщение об ошибке. При этом возможность игнорировать закрыта, и пользователь может либо откорректировать справочник, либо отказаться от введенного значения.

Режим забор значения из справочника описан чуть ниже.

Следует обратить внимание, что для вычисляемых колонок и колонок с расшифровками связь со справочником назначать нельзя. Для колонок, вычисляемых по справочной таблице, можно назначать связь только в режиме Допустим подбор по справочнику. При этом в качестве справочной таблицы может выступать только табличная форма той таблицы, по которой вычисляется значение в колонке.

Внимание!!! При использовании «ключевого» соответствия обеспечьте правильные сортировки в табличной форме справочника. Исключите из перечня ее сортировок (см. 2.2.4. Закладка «Сортировки») все индексы, которые начинаются с несовместимых ключевых полей.

Если значение в справочнике не найдено, возможны следующие режимы работы:

1) записать в поле значение, полученное в режиме "забор значения из справочника";

2) записать в поле значение и очистить зависимые поля, входящие в его собственную группу;

3) не записывать в поле такое значение, оставив в поле старое значение;

4) очистить поле и все зависимые поля, входящие в его собственную группу.

Предусматривается выбор одного из этих вариантов прямо в настройке связи со справочником в режиме "забор значения".

Пример настройки такой связи со справочниками приведен в соответствующем разделе описания Мастера таблиц (п.2.1.2).

Закладка Спец. настройка предназначена, в основном, для авторов системы, поэтому обойдемся без излишних подробностей. Скажем только, что здесь можно (но не рекомендуется!) отменить описанные выше установки (проверка значения, введенного в колонку, способ связи со справочником и т. д.) в том случае, когда авторы программы считают необходимым применить при обработ­ке колонки более сложный алгоритм. Например, при изменении количества оприходованного товара нужно одновременно менять остаток на складской карточке.

Осуществляется это следующим образом. Программист включает в состав системы специальную функцию обработки одной или нескольких исключительных ситуаций (в зависимости от количества установленных флажков), а на данной закладке требует проигнорировать те или иные настройки пользователя.

Единственно важным полем для системного администратора является поле Имя для вычисляемого поля. Его необходимо задать, если Вы собираетесь подсчитывать по нему ито­ги (см. 2.2.5. Закладка «Итоги») или использовать в различных формулах.

Закладка «Фильтр/поиск»

И фильтры, и поиск используются для выбора записей по некоторым условиям. Это необходимо, чтобы облегчить пользователю восприятие информации. Разница работы фильтра и поиска в следующем: использование фильтра приводит к тому, что в табличной форме остаются только записи, удовлетворяющие заданному условию. Использование поиска приводит к позиционированию табличной формы на нужной записи. При первом вызове поиск начинает работу с начала таблицы, но после того, как найдена подходящая запись, поиск можно продолжить с элемента, следующего за найденным (нажав кнопку FINDNXTB на панели инструментов). Критерии фильтра и поиска используются также при подсчете итогов (см. 2.2.5. Закладка «Итоги») и могут использоваться при раскраске строк таблицы.

На закладке Фильтр/поиск Вы можете видеть следующие элементы настройки (рис. 2.17.):

Рис. 2.17. Мастер табличных форм, закладка Фильтр/Поиск

Закладка «Сортировки»

Сортировки позволяют располагать записи табличной формы в нужном пользователю порядке. Они осуществляются только на основе поддерживающихся физических индексов (см. 2.1.3. Закладка «Индексы») реальной таблицы. На данной закладке расположены элементы (рис. 2.18.):

Рис. 2.18. Мастер табличных форм, закладка Сортировки

Напомним, что, если Вы хотите использовать ограничение по ключу при отборе записей в табличную форму (см. 2.1.1. Закладка «Общие сведения»), то Вы обязательно должны включить в перечень только те сортировки (а перед этим описать соответствующим образом используемые для них индексы), в которых задействованы все ограничивающие поля. Причем задействованы именно так (в том порядке), как это было описано на закладке Общие сведения. А уж после ограничивающих полей в индексном выражении могут идти любые.

Нарушение этих условий приводит к появлению непонятного многим сообщения «Ошибка ограничения по ключу: нет совместимых сортировок» при попытке входа в табличную форму. Чтобы проверить, все ли Вы сделали правильно, обязательно сразу же после редактирования используйте кнопку Тест.

Закладка «Итоги»

Итог — это некоторое значение, вычисляемое по таблице или ее части. Возможность быстрого подсчета различного рода итогов в процессе работы широко используется операторами ERP-системы «КОМПАС» для получения оперативных сведений и поиска ошибок во введенных данных. Формула, записанная на данной закладке в поле Вычисляемое выражение, вычисляется для каждой (или отобранных пользователем) записи таблицы, после чего результаты суммируются, и итоговое значение выводится на экран.

На закладке Итоги Вы можете видеть (рис. 2.19.):

Рис. 2.19. Мастер табличных форм, закладка Итоги

Здесь же с помощью переключателя Вычисление итогов можно выбрать способ расчета итоговых сумм: посредством SQL-запроса или организованным в программе последовательным проходом всех записей таблицы («цикл по записям»). В большинстве случаев рекомендуется первый вариант. Второй вариант следует использовать только для сравнения и в тех случаях, когда, в связи со сложными условиями отбора части таблицы, подсчет итогов через SQL-запрос не дает желаемого результата. Если на закладке Общие сведения установлен флажок При открытии запрашивать условия фильтрации для серверного фильтра, действует настройка «через SQL-запрос», и она не может быть изменена.

Внимание!!! Если в формулах подсчета итогов у Вас используются вычисляемые поля (см. 2.2.2. Закладка «Колонки»), то можно выбирать только вариант цикл по записям таблицы.

Кнопка CHECKB позволяет оперативно проверить правильность записанного выражения, но только если в формуле нет имен вычисляемых полей. В противном случае проверка даст всегда отрицательный результат, что не соответствует действительности.

Напомним, что в нижней части закладки можно задать Шаблоны для форматирования, (вывода итогов), которые будут использоваться при выводе результатов подсчета итогов на экран. Логика использования данных шаблонов абсолютно аналогична логике использования шаблонов для просмотра (см. 2.2.2. Закладка «Колонки»). Если вариант для отрицательных или нулевых значений не заполнен, форматирование таких значений производится с помощью основного шаблона. Если не задан ни один, форматирование будет проводиться стандартным образом. Подробно с символами, которые разрешено использовать при описании шаблонов, можно познакомиться в 2.2.8. Форматирование представления данных.

Закладка «Инструменты»

В группе Список кнопок расположены элементы, связанные с возможностью добавить дополнительные (в придачу к основным, описанным в п. Стандартные кнопки и клавиши раздела «Общие правила работы») кнопки на панель инструментов. Расположение элементов на закладке и процедура настройки совпадают с теми, что были описаны в 1.4. Менеджер типов таблиц. Отличие заключается в том, что описанные здесь дополнительные кнопки будут видны пользователю только после вызова редактируемой табличной формы из какого-нибудь пункта меню (см. 1.1. Администратор меню). Тем не менее, повторим пояснения еще раз.

Полный перечень дополнительных кнопок, установленных для данного типа, появляется в левом окне закладки. Упорядочивание кнопок в палитре инструментов, где вся группа располагается сразу после обязательного комплекта, производится с помощью знакомых значков UP и DOWN.

В правой части закладки можно задать Текст подсказки для выбранной кнопки и Идентификатор, т. е. уникальную последовательность символов, по которой кнопку идентифицируют программы системы, определить ее Изображение (нажмите Загрузить и выберите файл с расширением bmp или воспользуйтесь кнопкой Вставить для получения изображения из буфера обмена Windows), а также привязать к этой кнопке бизнес-процедуру (см. 2.7. Мастер бизнес – процедур), которая либо выбирается из соответствующего списка (вариант псевдоним), либо записывается прямо в описании табличной формы (вариант текст). Если бизнес-процедура не задана, то для того, чтобы кнопка производила какое-то действие, необходимо для нее использовать вполне определенный идентификатор.

Некоторые из таких идентификаторов применимы для любой табличной формы, у которой таблица относится к определенному типу. В этом случае такую кнопку имеет смысл включить прямо в описание типа таблицы. Другие идентификаторы могут применяться только для табличных форм с вполне определенным псевдонимом. Как правило, все такие кнопки уже включены в описания типов таблиц и табличных форм, содержащиеся в стандартной поставке.

Вместе с тем, есть несколько идентификаторов, которые могут применяться в любой табличной форме, если она удовлетворяет определенным требованиям. Такой идентификатор вместе с подсказкой и изображением можно выбрать из списка, который вызывается кнопкой LAMPB рядом с полем ввода для идентификатора:

MEMO (Многострочный текст) - предназначена для открытия дополнительного окна редактирования многострочного текста. Назначать эту кнопку следует только для тех табличных форм, таблица которых имеет поля с многострочным текстом;

XFILE (Файл…) – предназначена для вызова формы, с помощью которой можно управлять файлами различного формата, сохраненными в базе данных KOMPAS. Кнопку можно назначать для тех табличных форм, таблица которых имеет поля, предназначенные для хранения файла (пути к файлу);

MOVE_TO (В другую группу) - предназначена для переноса текущей строки табличной формы в другую группу. Назначать эту кнопку следует только для табличных форм с деревом групп;

FORMAT_INP_EXP (Импорт-экспорт) - используется для экспорта и импорта произвольных данных в форматах dbf и txt.

COND_DRAW (Раскраска строк) - предназначена для вызова диалога, с помощью которого могут быть описаны условия раскрашивания строк табличной формы. Так как раскрашивание опирается на набор условий поиска/фильтра, то назначать эту кнопку следует только для тех табличных форм, у которых имеются условия поиска/фильтра;

VIEW_DOKS (Просмотр документа) - предназначена для просмотра регистрационной карточки одного из документов, упомянутых в текущей строке. Назначать эту кнопку следует для табличных форм, таблица которых имеет в своей структуре поля с реквизитами документа-основания или другого связанного документа (должны быть назначены соответствующие элементы массива общих мест);

VIEW_TEXTDOC (Текст документа) - предназначена для просмотра текста документа или иного файла, упомянутого в текущей строке. Назначать эту кнопку следует для табличных форм, таблица которых имеет в своей структуре поле с именем файла (должен быть назначен соответствующий элемент массива общих мест);

EDIT_TEXTDOC (Редактирование текста) - аналогична предыдущей, однако при наличии файла сразу открывает его на редактирование без предварительного диалога, предусмотренного предыдущей кнопкой.

Кроме того, установив флажок не показывать, Вы можете временно отключить кнопку, не удаляя ее описания из перечня. Кнопка Скопировать позволяет забрать изображение в буфер обмена.

С кнопкой можно сопоставить пункт контекстного меню табличной формы. Для этого на закладке Пункт меню надо установить флажок Локальное меню. С пунктом контекстного меню можно связать Горячую клавишу. Для этого надо активировать поля ввода для горячей клавиши и нажать требуемую клавишу или сочетание клавиш. Мнемоническое изображение клавиши или сочетания клавиш появится в поле ввода.

Существует теоретическая возможность использовать разные изображения кнопки для активного и неактивного состоя­ния. Количество используемых изображений определяется элементом ввода NumGlyphs. Но так как нигде в стандартной версии пакета сия возможность не используется (Numglyphs всегда равно 1), мы не будем заострять внимание на этом сложном моменте.

Рис. 2.19. 1 Мастер табличных форм, закладка Инструменты

Закладка «Дерево групп»

Табличная форма может быть выведена на экран в специальном виде, включающем дерево групп слева и часть таблицы, отвечающей выбранной группе, справа от дерева. Для того, чтобы придать табличной форме такой вид, используются настройки, расположенные на закладке Дерево групп описания табличной формы.

В левом верхнем углу закладки расположен переключатель, позволяющий задать режим дерева. По умолчанию, он установлен в положение нет дерева. Один из двух других вариантов используется для включения в табличную форму дерева. Если сама таблица, для которой описывается табличная форма, содержит иерархические данные, то следует выбрать пункт содержит группы в себе. Если же для группировки данных в таблице используется другая таблица, следует выбрать пункт группы в отдельной таблице. Дальнейшие настройки дерева зависят от того, какой вариант дерева используется.

В обоих режимах (кроме нет дерева) в верхней части страницы Вы можете указать, как будет осуществляться отбор части таблицы при перемещении по дереву: фильтрацией или ограничением по ключу. Ограничение по ключу работает быстрее, но требует наличия соответствующего индекса в таблице и ограничивает возможные сортировки таблицы индексами, совместимыми с ограничением по ключу.

Здесь же Вы можете задать дополнительное условие отбора записей таблицы (основной или дополнительной таблицы групп), используемых для формирования дерева. Условие должно быть записано на языке SQL.

В режиме содержит группы в себе Вы должны указать (или выбрать из списка) псевдонимы полей таблицы:

Дополнительно Вы можете указать код верхней группы, который должен автоматически проставляться во все записи таблицы, которые не входят ни в одну группу. По умолчанию это цифра 0.

Ниже Вы можете уточнить, какие сообщения будут выводиться при попытке добавления в таблицу второй записи с одним и тем же кодом, а также при попытке удалить или изменить код записи, на который ссылаются, как на группу, другие записи. Требуется ввести лишь переменные части сообщений, которые будут вставляться в образец сообщения вместо многоточия.

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

В обоих режимах Вы можете указать также несколько дополнительных параметров:

Форматирование представления данных

Настало время привести перечень символов, используемых для форматирования отображения данных на экране (см. 2.2.2. Закладка «Колонки» и 2.2.5. Закладка «Итоги). Условная запись правил, которыми регулируется отображение числа, строки или даты на экране, называется шаблоном или маской, а отдельный элемент записи - символом маски. Символы, используемые для создания масок отображения и ввода, очень похожи. Тем не менее, нам представляется целесообразным для большей легкости получения справочной информации описать их отдельно. Перед чтением конкретных описаний следует понять, что использование некоторых шаблонов однозначно определяет размер вводимых или отображаемых данных. Поэтому, когда речь будет идти о соответствующей символу маски позиции, это значит, что данный символ определяет формат вводимого байта информации, отстоящего от левого края поля ввода настолько же, насколько данный символ маски отстоит от левого края шаблона.

Для полей ввода допускается использование следующих символов:

> Если символ « > » встречается в маске, все символы, следующие за ним, пишутся заглавными буквами до конца маски или пока не встретится символ « < ».
< Если символ « < » встречается в маске, все символы, следующие за ним, пишутся строчными буквами до конца маски или пока не встретится символ « > ».
< > Если эти два символа встречаются в маске рядом, проверка вводимых данных на регистр («заглавность» и «строчность») не производится. Данные вводятся ровно так, как их наберет пользователь.
\ Символы, следующие за символом « \ », буквально воспроизводятся в значении поля. Отображение производится программно. Пользователь не должен будет набирать их на клавиатуре.
L Символ «L» требует на соответствующей позиции ввода символа русского или латинского алфавита. Ничего другого пользователю ввести не удастся.
l Символ «I» допускает символы русского или латинского алфавита на соответствующей позиции, но не требует их.
A Символ «А» требует на соответствующей позиции символ русского или латинского алфавита или цифру.
a Символ «а» допускает на соответствующей позиции символ русского или латинского алфавита или цифру, но не требует их.
C и c Символы «С» и «с» допускают на соответствующей позиции произвольный символ, но символ «с» не требует его.
0 Символ «0» (ноль) требует цифру на соответствующей позиции.
9 Символ «9» допускает на соответствующей позиции циф­ру, но не требует ее.
# Символ «#» допускает на соответствующей позиции циф­ру, а также знаки «+» и «-», но не требует их.
: Символ «:» используется для разделения часов, минут и секунд в поле типа Время. Если символ, использующийся для разделения часов, минут и секунд, установленный в Панели управления вашего компьютера, отличен от « : », то этот сим­вол используется вместо « : ».
/ Символ «/» используется для разделения месяцев, дней и лет в поле типа Дата. Если символ, использующийся для разделения месяцев, дней и лет, установленный в Панели управления вашего компьютера, отличен от «/», то этот символ используется вместо «/».
_ В текст вместо символа «_» автоматически вставляется пробел. Когда пользователь будет вводить символы в поле, курсор автоматически пропускает позиции, занятые в маске символами «_».

В шаблонах для отображения информации допускается использование следующих символов:

0 Используется для числовых данных. Соответствует цифре. Если форматируемое значение имеет цифру на месте, где в шаблоне просмотра расположен «0», то эта цифра в любом случае копируется в выводимую строку. Иначе на том же месте в выводимой строке показывается «0». Таким образом, данная возможность используется для отображения числа с ведущими нулями.
# Используется для числовых данных. Соответствует цифре. Если форматируемое значение имеет цифру на месте, где в шаблоне просмотра расположен «#», то эта цифра копируется в выводимую строку. В противном случае на том же месте в выводимой строке показывается пробел. Таким образом, данная возможность предназначена для отображения числа без ведущих нулей, а нулевые значения просто-напросто заменяются пробелами.
. Десятичная точка. Используется для числовых данных. Первый символ «.» в шаблоне просмотра определяет расположение десятичного разделителя в форматируемом значении. Любой следующий символ «.» игнорируется.
, Разделитель тысяч. Используется для числовых данных. Если шаблон просмотра содержит один или более символов «,», в выводимой на экран строке разделитель тысяч вставляется между всеми группами из трех цифр (триадами).
Е+ Любая из строк «Е+», «Е-», «е+» или «е-» используется только для вывода числовых данных и означает экспоненциальное представление числа. Для управленческих и бухгалтерских задач практической ценности не имеет.
«хх»/«хх» Символы, заключенные в одинарных или двойных кавычках, выводятся как они есть и не подвергаются форматированию.

Несколько замечаний по поводу сочетания разных символов в масках числовых данных.

  1. Местоположение самого левого «0» перед десятичной точкой в шаблоне просмотра и самого правого «0» после десятичной точки в шаблоне просмотра определяют предельное количество цифр, которые всегда отображаются в выводимой строке.

  2. Форматируемое значение всегда округляется до стольких десятичных разрядов, сколько символов, соответствующих цифрам («0», «#»), содержится справа от символа «.» в шаблоне отображения. Если форматируемое значение не содержит десятичной точки, оно округляется до ближайшего целого.

  3. Если форматируемое значение велико и содержит слева от десятичной точки больше цифр, чем имеется символов «0» или «#» слева от символа «.» в маске отображения, то лишние цифры все равно выводятся в левой части числа.

  4. если для колонки типа "дата" шаблон ввода в описании табличной формы не указан, используется формат ##.##.## или ##.##.####, в зависимости от ShortDateFormat, то есть, по тем же правилам, что и в экранной форме. Это действует в отношении колонок табличной формы, а также в отношении формы поиска/фильтра/итогов.

  5. В обработчиках событий табличной формы можно выяснить видимость колонок с помощью свойства ColumnVisibility.

Мастер экранных форм

Экранная форма представляет собой наиболее подробное описание одной записи таблицы.

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

После входа в окно мастера экранных форм Вы увидите, что все формы, которые на данный момент можно использовать в программе, отображены в списке. Список состоит из двух колонок: Псевдоним и Описание (рис. 2.20).

Рис. 2.20. Мастер экранных форм

Псевдоним экранной формы — это наименование, с которым работает программа. В общем случае он может не совпадать с названием табличной формы (см. 2.2. Мастер табличных форм), с которой связана экранная (понятна подчиненность этих двух понятий – ведь экранная форма визуализирует только одну из множества записей (строк), отображаемых табличной). С одной таблицей может быть связано несколько экранных форм, однако из каждой табличной формы можно вызывать только одну из них. Псевдоним каждой экранной формы должен быть уникальным. Описание (заголовок) не несет служебной информации. Оно необходимо пользователю для пояснения роли формы. Псевдоним экранной формы, ее описание и настройки составляют ее шаблон. Все шаблоны экранных форм находятся в специальном файле с расширением dat. Такой файл чаще всего имеет имя forms.dat

На окне мастера экранных форм расположены кнопки:

Рис.2.21. Реквизиты новой экранной формы

В первую очередь, надо выбрать из раскрывающегося списка таблицу, запись которой будет визуализироваться с помощью нового шаблона. Затем можно указать табличную форму, с которой данная экранная будет связана (следующий раскрывающийся список покажет Вам все варианты табличных форм для указанной выше таблицы). Вслед за этим Вы укажете упомянутые выше псевдоним и заголовок формы, после чего на экран будет выведена стандартная заготовка для «рисования» (окно редактора формы), на которой уже будут присутствовать три самых «популярных» в экранных шаблонах элемента: кнопки ОК, Сохранить и Отмена. Далее, с помощью инструментов редактора, производится «наполнение» формы элементами отображения данных.

Окно редактора форм состоит из панели инструментов и рабочей области, с расположенной на ней редактируемой формой (рис. 2.22.).

26

Рис. 2.22. Мастер экранных форм, редактор

Единственным способом завершить редактирование экранной формы является нажатие «крестика» в правом верхнем углу окна мастера, после чего программа спросит Вас: сохранить все, что Вы проделали со времени последнего нажатия кнопки Сохранить на панели инструментов (см. п.2.3.1), или аннулировать эти изменения?

Панель инструментов

Панель инструментов включает в себя элементы:

str – Отмена выбора элемента

TFEDIT – Поле ввода

TFLABEL – Метка

TFBUTTON – Кнопка

TFZAKL – Страницы

TFGROUP – Группа

TFFLAG – Флажок

TFSWITCH – Переключатели

TFLIST – Выпадающий список

tab – Таблица

TFBEVL – Рамка

OTPUSKB – Изображение

TFTEST – Тест формы

FILESAVE – Сохранить

Все кнопки панели инструментов, кроме первой и двух последних дают Вам возможность указать мастеру, какой элемент управления Вы будете сейчас размещать на рабочем поле. Выбрав нужный элемент панели левой клавишей мыши, а затем, щелкнув по редактируемой форме, Вы создадите в ней новый элемент выбранного типа со стандартным для него размером. Если в момент нажатия на клавишу мыши провести указателем по редактируемой форме, новый элемент будет иметь соответствующий размер: от левого верхнего угла до правого нижнего. Таким образом, в момент нажатия на левую клавишу мыши Вы отмечаете левый верхний угол границы элемента, а в момент отпускания клавиши — правый нижний. Естественно, что после этого Вы можете перемещать созданный элемент по рабочему полю или менять его размеры, следуя обычным правилам Windows. То есть, если Вы выберете элемент формы нажатием левой клавиши мыши (сразу же после этого программа очертит Вам несколькими жирными точками его границы), а затем, не отпуская эту клавишу, будете перемещаться с помощью мыши по рабочему полю, элемент изменит свое местоположение. Если же после выбора элемента Вы отпустите клавишу, а потом подведете указатель к одной из ограничивающих его точек, то он тут же приобретет всем хорошо знакомую форму, говорящую о том, что можно изменять границы окна. Меняйте!

Кроме того, можно перетаскивать сразу несколько элементов, сохраняя их взаимное расположение относительно друг друга. Вы можете отметить некоторое подмножество элементов формы, если, нажав и удерживая левую клавишу мыши, обведете его появившейся рамкой.

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

Кнопка Тест формы позволяет отобразить на экран измененную форму, даже если она еще не была сохранена в dat-файле. Это очень удобно для того, чтобы оперативно получить представление о том, что же Вы создали.

Кнопка Сохранить приводит к записи описания шаблона в dat-файл.

Теперь поясним подробнее суть упомянутых выше элементов управления и скажем пару слов о том, для чего мы советуем применять тот или иной элемент.

Поле ввода, как явствует из его названия, предназначено для организации ввода данных. Впрочем, есть у него и второе назначение - визуализация информации, хранящейся в таблице, даже если она не подлежит редактированию. Ваша задача установить удобный размер «бокса» для ввода. Если размер данных будет превышать предусмотренную Вами ширину поля, то программа автоматически организует «прокрутку». Тем не менее, для числовых данных советуем предусмотреть достаточный размер, ибо число всегда лучше видеть целиком. Естественно, чтобы данные, занесенные в поле ввода, запоминались в таблице, его надо связать с каким-нибудь ее полем. Впрочем, об этом мы поговорим чуть подробнее в 2.3.8. Изменение свойств элементов экранной формы.

Под Меткой понимается какой-нибудь поясняющий текст. К примеру, если Вы разместите на экранной форме поле ввода и больше ничего, пользователю будет довольно трудно догадаться, а что собственно он должен туда вводить. Поместив рядом с ним метку с поясняющим текстом, Вы разрешите все его сомнения.

Кнопка — это действительно кнопка, нажатие на которую заставляет программу выполнять какие-то действия. Какие действия приписываются конкретной созданной Вами кнопке и как это сделать? Это Вы узнаете в п.2.3.8. Изменение свойств элементов экранной формы.

Далеко не всегда размер экрана оказывается достаточным для того, чтобы вместить всю информацию, которую Вы хотите видеть в экранной форме документа или даже в одной записи объемного справочника, например, справочника внешних партнеров или личных карточек сотрудников предприятия. Да и ни к чему совершенно видеть всю информацию одновременно! Специально для таких случаев создан элемент Страницы, который позволяет создать систему привычных Windows-пользователю закладок. Нажав на первую закладку, пользователь увидит один набор данных. Перейдя к следующей — другой. Получается, что элемент Страница состоит как бы из двух частей: верхней, где Вы можете создать столько закладок, сколько считаете нужным, и нижней, где Вы по мере перехода от одной закладки к другой сможете изменять визуализированные данные. Из всего вышесказанного однозначно следует, что в этой нижней части Вы во время дальнейшего редактирования экранной формы сможете в свою очередь разместить какие-то элементы всех типов, в том числе и этого же самого типа - Страницы. Таким образом можно создавать иерархическую систему закладок.

Элемент Группа позволяет Вам объединить несколько элементов в некую общность. Собственно, сам элемент состоит из углубленной рамки, в которую вписано обобщающее название. Впрочем, эта надпись может и отсутствовать, если в свойствах группы (см.п. 2.3.8. Изменение свойств элементов экранной формы) Вы укажете название, которое не содержит ни одного символа. Группа была бы чисто визуальным компонентом, облегчающим пользователю восприятие информации, подобно описанной ниже Рамке, если бы не еще одно ее полезное свойство. Если Вы разместите внутри группы несколько других элементов, то при дальнейшем редактировании экранной формы Вы сможете перемещать их все вместе, перетаскивая группу. Неприятная особенность заключается в том, что, единожды включив элемент в группу, Вы не можете переместить его за ее пределы. Это равносильно удалению элемента из формы. Мы настоятельно рекомендуем администраторам как можно шире пользоваться группами, так как, помимо всех прочих преимуществ, это позволяет безболезненно использовать одни и те же текстовые метки для сходных по смыслу, но, тем не менее, разных полей ввода. Хорошим примером являются группы Плательщик и Получатель в шаблоне платежного поручения. В каждой из них есть код партнера, наименование, ИНН и т. д., а воспринимается информация очень легко, и сразу понятно, какой код к чему относится.

Элемент Флажок - это флажок двоичного выбора, в котором можно поставить или снять галочку. Это тоже своего рода поле для ввода данных, но исключительно способом «выбор одного из двух значений». Важнейшими характеристиками Флажка (подробнее см. 2.3.8. Изменение свойств элементов экранной формы) являются связанный с ним поясняющий текст и те значения, которые заносятся в поле базы по состояниям флажок установлен и флажок снят.

Аналогичные функции выполняет элемент Переключатели. Это тоже поле ввода выбором, но не одного из двух, а одного из многих значений. Весьма удобная штука, когда надо быть уверенным, что пользователь не занесет в связанное с элементом поле базы данных ничего Вами непредусмотренного. Элемент Переключатели ограничивается на экране рамкой с вписанным в нее названием, данным Вами при редактировании формы этому конкретному элементу.

Выпадающий (раскрывающийся) список предназначен абсолютно для того же, что и Переключатели, но имеет несколько иной вид. Перечень возможных вариантов выбора не «висит» постоянно на экране, а появляется только после нажатия на данный элемент при работе с экранной формой. На практике Переключатели используются для небольшого числа возможных вариантов выбора с кратким поясняющим текстом, а выпадающий список - для более значительных (как по числу альтернатив, так и по содержанию каждой из них) объемов информации. Впрочем, и Флажок, и Переключатели, и Выпадающий список прекрасно знакомы всем пользователям Windows, т. к. являются стандартными компонентами интерфейса многих программ.

Несмотря на то, что мы говорили о подчиненности экранной формы по отношению к форме табличной, здесь, как и во многих местах ERP-системы «КОМПАС», возможна многоступенчатая иерархия. Это означает, что экранная форма может, в свою очередь, включать табличную в качестве своего элемента. Наглядным примером такой ситуации (и необходимости использования данного свойства) является визуализация реестра счетов. Из пункта меню вызывается табличная форма, которая разворачивает перед нами полный перечень документов, хранящихся в данном реестре. В любой момент можно нажать на клавишу F9 или кнопку SFORMB и вызвать экранную форму, разворачивающую перед нами заголовок счета. Но ведь заголовок-то явно неединственное (и даже не основное), что нас интересует в документах данного типа. Поэтому элементом экранной формы является «товарный раздел» счета, который в свою очередь является формой табличной с ограничением по ключу (см. п. 2.2.1. Закладка «Общие сведения»). При этом ограничивающим ключом являются код типа документа «Счет» и идентификационный номер конкретного счета, в результате чего табличная форма отбирает только строки товарного раздела данного документа, не смешивая их с множеством остальных, хранящихся в реестре, счетов. Вы уже догадались, что эта чудесная возможность реализована с помощью элемента экранной формы Таблица, настройку которого мы подробнее рассмотрим в 2.3.8. Изменение свойств элементов экранной формы.

Элемент Рамка является чисто декоративным. Как и Группа, он призван отделять одну смысловую часть экранной формы от другой, но, в отличие от нее, не имеет заголовка и не определяет совместного перемещения всех элементов, помещенных внутрь Рамки.

Наконец, последний элемент мастера экранных форм, Изображение. Этот элемент позволяет определить место на экранной форме, куда при работе с экранной формой можно загрузить любое изображение в формате bmp.

Контекстное меню параметров экранной формы

Если щелкнуть правой клавишей мыши по пустому месту поля редактирования, то на экране появится контекстное меню, включающее всего два обязательных пункта. Пункт Свойства формы (рис. 2.23.) позволяет изменить заголовок (описание) и псевдоним формы, ее размеры, задать или отменить вывод экранной формы по центру экрана или в его произвольном месте, а также связать экранную форму с одной из таблиц и относящихся к этой таблице табличных форм. Табличную форму можно не задавать, но если Вы это сделаете, то Вам будет предоставлена возможность выбора для полей ввода (в том числе флажков, переключателей и раскрывающихся списков) не только поля таблицы, но и вычисляемые колонки табличной формы.

Если установить флаг По центру экрана, то возможно только изменение размеров формы путем указания ее ширины и высоты в пикселях (иначе говоря, в точках - минимальных единицах, на которые разбивается экран). Если же флаг снят, то можно более точно регулировать визуализацию формы в процессе работы, задавая не только ее размеры, но и отступы левого верхнего угла формы от левой и верхней кромок экрана.

28

Рис. 2.23. Мастер экранных форм. Свойства формы

Пункт Порядок перехода по Tab (рис.2.24.) позволяет указать, в каком порядке будут перебираться поля ввода и элементы управления при нажатии на клавишу Tab в процессе работы. Это очень существенная возможность, с помощью которой можно отрегулировать оптимальный режим заполнения документов, без использования мыши. Особенно это важно сделать на тех рабочих местах, где идет массовый ввод. Мы рекомендуем отрегулировать все формы ввода отдельно для каждого рабочего места, подобрав оптимальный режим с учетом личных особенностей конкретного оператора.

29

Рис. 2.24. Мастер экранных форм. Определение перемещений по экранной форме

В списке, появляющемся после выбора этого пункта меню, представлены все активные элементы (неактивными являются рамки и метки), имеющиеся в экранной форме, кроме тех, которые размещены внутри групп или страниц. Дело в том, что здесь размечается переход по форме в целом, а «регулировка движения» внутри каждой группы и на каждой странице осуществляется после выбора соответствующего пункта контекстного меню в момент редактирования этого элемента (см.п. 2.3.3 Контекстное меню для элементов формы). Т.е. поддерживается идеология: сначала попади на элемент верхнего уровня иерархии, а потом уже разбирайся с более мелкими различиями.

Изменение порядка следования активных элементов осуществляется в уже знакомом нам интерфейсе (см. п.п.1.1. Администратор меню, 2.2.2. Мастер табличных форм, закладка «Колонки» и др.) с помощью кнопок UP Вверх и DOWN Вниз.

Важно отметить, что перемещение в процессе работы между разными закладками одного и того же элемента Страницы осуществляется не клавишей Tab, а стрелками вправо и влево .

Кроме этих обязательных пунктов в тех случаях, когда в буфере обмена мастера экранных форм хранится хотя бы один элемент, в меню включается пункт Вставить, позволяющий создать в поле редактирования копию содержимого буфера.

Контекстное меню для элементов формы

Щелчок правой клавишей мыши на уже размещенном в поле экранной формы элементе или отмеченном (см. ниже) подмножестве элементов вызовет контекстное меню. Меню одинаково для всех элементов, кроме Страниц. В него входят следующие пункты:

В этом пункте описывается и связь полей ввода с полями таблицы или табличной формы, и значения для переключателей, и многое другое.

Обратим Ваше внимание на то, что в каком бы месте поля редактирования экранной формы Вы ни выбрали этот пункт контекстного меню, копии элементов всегда появля­ются со смещением вправо и вниз на один узел координат­ной сетки по отношению к своим «родителям». Исключением является случай, когда буфер обмена был заполнен с помощью команды Вырезать. Тогда происходит точный возврат на то место, откуда заполнялся буфер. Это сделано для того, чтобы, с одной стороны, операция удаления элемента была обратимой (а вдруг Вы ошиблись), а, с другой стороны, не возникло слишком большой неразберихи с накладывающимися на маленьком поле формы элементами. После появления копии никто не мешает Вам переместить ее обычным способом (см. 2.3.1. Панель инструментов).

Вы можете выбрать несколько элементов одновременно, если, нажав и удерживая левую клавишу мыши, обведете их появившейся рамкой. Эту возможность рекомендуется применять при операциях массового копирования, удаления и выравнивания. Впрочем, иногда бывает удобно и редактировать свойства нескольких элементов, быстро «перескакивая» с закладки на закладку (а именно так будет выглядеть редактирование свойств отмеченного множества - совокупность закладок, каждая из которых соответствует одному элементу формы). Отмена такого группового выбора производится щелчком левой клавиши мыши вне границ отмеченного множества элементов. Вдобавок к основному способу, Вы можете выбрать несколько разрозненных элементов формы, если, удерживая кнопку Shift, будете щелкать левой кнопкой мыши на выбираемых элементах.

Кнопка Тест формы позволяет отобразить на экран измененную форму, даже если она еще не была сохранена в DAT-файле.

Контекстное меню для элемента «Страницы»

В придачу к описанным в разделе 2.3.3. Контекстное меню для элементов формы, для элемента Страницы добавляются следующие пункты контекстного меню, вызываемого нажати­ем правой клавиши мыши (часть их в зависимости от количе­ства страниц может быть не видна). Все они связаны с тем, что естественное для любого пользователя Windows желание щелкнуть мышью по закладке, чтобы перейти к редактированию ее элементов, здесь неосуществимо. Ведь закладка (или стра­ница) для мастера экранных форм - всего лишь еще один эле­мент рисунка. Поэтому приходится осуществлять настройку отдельных закладок другими средствами.

Главное меню: пункт «Форма»

При работе с мастером экранных форм, в горизонтальную линейку главного меню программы автоматически добавляется пункт Форма. В выпадающее подменю этого пункта входят следующие элементы (часть из них для удобства пользователя дублирует описанные ранее возможности контекстных меню или панели инструментов):

31

Рис. 2.25. Пункт меню Форма / Данные

Если при перетаскивании дер­жать кнопку Shift, то заголовок создан не будет. Таким образом, пункт Данные позволяет наиболее оперативным образом размещать в экранной форме поля ввода.

32

Рис.2.26. Мастер экранных форм, список элементов (главное меню)

33

Рис.2.27. Мастер экранных форм, главное меню, Форма / Предпочтения

В этом окне вы можете делать следующие настройки:

В группе Координатная сетка:

Если флажок Показывать сетку не установлен, координатная сетка отображаться в форме не будет.

Установив флажок Выравнивать по сетке, Вы укажете на необходимость выравнивания всех элементов, расположенных на редактируемой форме, по узлам координатной сетки. Программа просто не даст Вам установить угол элемента в межкоординатное пространство.

В полях Размер Х и Размер Y Вы можете задавать в пикселях расстояние между узлами координатной сетки соот­ветственно по горизонтали и по вертикали.

В группе Значения по умолчанию для новых элементов:

Нажав на кнопку Шрифт для метки. Вы вызовете стандартное окно Шрифт, в котором можно задать параметры шрифта, используемые по умолчанию для элемента Метка. К этим параметрам относится наименование шрифта, его подвид (всегда выбирайте вариант «кириллица»), размер, начертание (наклон­ный, полужирный и т. п.), а также атрибуты зачеркивания и под­черкивания текста (одновременное их применение дает весьма забавный эффект). Впрочем, впоследствии для каждой метки Вы сможете установить свой шрифт, здесь указывается лишь наиболее часто употребляющийся вариант.

Установив флажок Кнопки ОК и Отмена в поле ввода, Вы укажете на необходимость присутствия кнопок ОК (утвердить ввод) и Отмена (вернуть старое значение) в каждом элементе типа Поле ввода. Эти кнопки весьма удобны в реальной работе, но занимают на экране много места. Впрочем, для каждого поля ввода их можно будет впоследствии отменить (см. 2.3.8. Изменение свойств элементов экранной формы).

Изменение размера элементов

Это пункт контекстного меню для элементов экранной формы (см. 2.3.3). Его имеет смысл использовать, если выделено одновременно несколько элементов формы, у которых нужно точно согласовать размеры, т. е. сделать их одинаковыми. Режим изменения размеров задается отдельно по ширине и по высоте (рис. 2.28).

Изменение размера может быть:

Кроме того, можно прямо задать ширину и высоту выделенных объектов, заполнив поля Ширина и Высота.

34

Рис. 2.28. Мастер экранных форм, изменение размеров

Изменение выравнивания

Как и описанный в предыдущем разделе, этот пункт контекстного меню для элементов формы (см.п. 2.3.3) имеет смысл использовать только для нескольких одновременно выделенных элементов, чтобы упорядочить их изображения друг относительно друга. Выравнивание осуществляется отдельно по горизонтали и по вертикали (рис. 2.29).

35

Рис. 2.29. Мастер экранных форм, выравнивание элементов

Выравнивание может производиться:

Изменение свойств элементов экранной формы

Это самый важный пункт контекстного меню для элементов формы (см. 2.3.3). Окно настройки каждого элемента состоит из двух закладок. Выбрав первую из них, которая называется Макет, Вы, независимо от типа элемента, можете редактировать такие наиболее общие его свойства, как уникальное имя элемента, по которому с ним работает программа, текст внутри него (для рамки, страниц и таблицы этот параметр не имеет смысла, для поля ввода текст осмыслен только для удобства визуализации в процесс редактирования формы, для кнопок, флажков и меток - это собственно надпись, которую видит пользователь, для групп и переключателей - пояснение в ограничивающей рамке), размещение объекта на экране, его размеры (здесь впрямую задаются координаты в пикселях относительно левого верхнего угла экранной формы). Будьте внимательны с указанием координат: если Вы «разместите» элемент вне границ поля редактирования, то единственным способом вернуть его в поле Вашего зрения окажется временное увеличение размеров самой формы (см. 2.3.2. Контекстное меню параметров экранной формы). Кроме того, отметим, что при групповом редактировании свойств (см. 2.3.3. Контекстное меню для элементов экранной формы) имя и текст к редактированию, естественно, недоступны.

Гораздо большее разнообразие параметров настройки Вы увидите, перейдя на вторую закладку, которая носит имя редактируемого элемента. Поэтому рассмотрим ее подробнее.

Для элемента Поле ввода (рис. 2.30.) имеются две внутренних закладки. На закладке Основное можно связать с полем элемент массива общих мест, в который поступают данные из какого-либо поля таблицы, или же непосредственно имя поля. Это можно сделать, нажав кнопку Выбрать. Сразу после этого Вам откроется окно с древовидным перечнем всех доступных переменных. Поля таблицы, не имеющие своего места в массиве, сосредоточены в группе Свободные поля. После выбора нужного элемента Вы увидите кодовое имя связи, которое состоит из имени группы, знака @ («собаки») и имени поля или места массива, например POL@FIO. Для свободных полей таблицы используется псевдоним _FIELDS. Отменить выбор источника можно с помощью кнопки Очистить. Только для числовых полей и дат здесь можно описать шаблон визуализации значения в поле ввода (см. 2.2.8. Форматирование представления данных).

На закладке Прочее имеется возможность задать формулу, по которой будет вычисляться выражение внутри поля, вызвав Конструктор формул (см. 8). Эта возможность используется для поддержания зависимости между данным полем ввода и другими полями формы. Например, зададим в поле Суммы налога с помощью Конструктора формулу SUM.СУММА*0.2 (т.е. 20% от Суммы без НДС). Как только Вы введете в поле Сумма без НДС (но не раньше – все вычисления производятся только после ввода нового значения в любой из элементов формы) число 100, так сразу же в поле Сумма налога появится число 20. Нужно отметить, что данная возможность не может поддерживать вычисления по строкам включенной в экранную форму таблицы (только по полям ввода). Эта возможность задается в свойствах самого элемента типа Таблица (см. ниже).

37

Рис. 2.30. Мастер экранных форм, свойства элемента

Здесь же добавлена возможность переноса слов внутри поля, т. е., когда текст внутри поля станет слишком длинным, новое слово будет начинаться с новой строчки. Кроме того, можно включить в поле ввода кнопки ОК и Отмена, а также формат вывода значения в поле ввода: основной шаблон и шаблоны для отрицательного и нулевого значения. Наконец, некоторые поля Вы можете включить в экранную форму в режиме только для чтения. Следует учесть, что для тех элементов массива общих мест из группы Свободные поля таблицы, которые соответствуют вычисляемым колонкам табличной формы, поля ввода всегда имеют режим только для чтения, вне зависимости от установки флажка в свойствах элемента (см. 2.3.5. Главное меню: пункт «Форма).

OK – сохранение изменений (если они были) и выход из экранной формы.

Сохранить — сохранение изменений без выхода из формы. Если изменений не было, то эта кнопка погашена.

Отмена — выход без сохранения изменений. Если изменения имели место, то от Вас потребуется подтвердить, что их сохранять не надо.

Произвольная Команда (если позволяет редактируемая форма), например, команда вызова контекстной помощи (для любой экранной формы), переход к следующей или предыдущей строке таблицы (только для справочников). Конкретная команда выбирается на закладке Кнопка в группе Источник данных из элементов Массива общих мест, имеющих тип Команда. Так как такие элементы, заранее подготовленные авторами пакета, не увязываются ни с какими полями базы данных, для всех экранных форм формально разрешено выбирать любую из команд. В реальности, однако, следует использовать такую команду, которая действительно может быть связана именно с этой экранной формой.

39

Рис. 2.31. Мастер экранных форм. Свойства элемента Кнопка

Процедура позволяет приписать нажатию на кнопку выполнение произвольной программы на встроенном языке Basic (см. 2.7. Мастер бизнес - процедур). Вы можете выбрать имя подготовленной в мастере процедуры из выпадающего списка и даже тут же изменить этот текст, нажав кнопку Редактировать.

Нажатие в процессе работы на кнопку Печать заставит программу инициировать стандартную процедуру печати, но только в том случае, если с вызывающей данную экранную форму табличной формой была связана хотя бы одна печат­ная (см. 2.2.1 Закладка «Общие сведения»). Нам кажется, что эта длинная цепочка понятий вообще-то вполне доступ­на. С каждой таблицей, в которой хранятся данные, нужно связать как минимум одно описание ее визуализации в виде «много записей одновременно», полноэкранное представле­ние одной записи и способ ее распечатки в виде документа.

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

На той же закладке в группе Тип кнопки мож­но отметить, должен ли данный элемент активи­зироваться при нажатии на клавиши Enter и/или Esc. Для кнопки, кроме текста, можно предусмотреть изображение, а также подсказку, которая будет высвечиваться при подводе курсора к кнопке. Возможен вариант, при котором текст на кнопке отсутствует, а имеется только изображение и подсказка.

Добавлена возможность использовать объект UsedObject в обработчиках кнопок в экранной форме.

40

Рис. 2.32. Мастер экранных форм, свойства элемента Флажок

На закладке Основное в поле ввода Тип отображается тип поля – источника данных. Тип может быть одним из двух: Текст или Число. Он однозначно определяется ти­пом приписанного переключателю источника (см. выше Поле ввода). В таблице значений, расположенной ниже, отображены все пункты редактируемого переключателя. С помощью кнопок Добавить и Удалить, Вы можете, соответственно, добавить и удалить пункт переключателя, приписывая каж­дой его позиции поясняющий текст и значение, которое будет вводиться в поле при выборе данной позиции. С помощью кнопки Правка можно назначить пункту новое имя и значе­ние. Кнопки со стрелками UP Вверх и DOWN Вниз позволяют задать выделенной позиции желаемое положение в переклю­чателе.

41

Рис. 2.33. Мастер экранных форм, свойства элемента Переключатель

Вычисление может производить­ся одним из способов, кото­рый выбирается в переключателе Тип источника данных:

42

Рис. 2.34. Мастер экранных форм, свойства элемента Таблица

Мастер печатных форм

Мастер печатных форм, который вызывается с помощью кнопки на панели инструментов или соответствующего пункта меню Сервис, служит для создания, редактирования и удаления печатных форм, иначе говоря, шаблонов или блан­ков печатных документов. Из перечисления синонимов навер­но уже ясно, что печатная форма, по сути, представляет собой заготовку для формирования текста документа на бумажном носителе, некий бланк первичного документа, дополнитель­ной формы к балансу и т. п., в котором на специальном ус­ловном языке описано, в каком месте листа и какие данные нужно в него впечатывать при использовании в процессе ра­боты. Понятно, что вид печатной формы зависит от того, для каких конкретно первичных документов он предназначен. Поэтому в ERP-системе «КОМПАС» принято связывать печатную форму с конкретной Табличной формой (см. 2.2.1. За­кладка «Общие сведения»). Ведь именно вид табличной (и соответствующей ей экранной) формы определяет те данные, которые Вы помещаете в базу данных при описании того или иного типа документов.

Следует отличать печатную форму от отчета (см. 2.6. Мас­тер отчетов). Под отчетом мы будем понимать ведомость с результатами работы программы. Ведомость собирается по неопределенному количеству записей, позволяет распечаты­вать их перечень в произвольной форме, подсчитывать различ­ного вида итоги и субитоги. Печатная же форма предназначена для создания твердой копии одного документа, карточки одно­го сотрудника и т.п. В крайнем случае, для подсчета итоговых сумм по базе и размещения их в заранее предусмотренных полях листа документа (дополнительные формы к балансу). С одной стороны, мастер печатных форм обладает более узким набором возможностей, а с другой стороны, дает возможность сделать документ более читабельным, удобным и красивым, или соответствующим требованиям различных организаций, принимающих документ, что в отчетах не требуется, а для документов зачастую необходимо.

Рис. 2.35. Мастер печатных форм

После старта мастера все формы, которые уже можно ис­пользовать в задаче, отображаются в списке, состоящем из двух колонок: Псевдоним и Описание (рис. 2.35). Псевдоним печатной формы — это наименование, с которым работает программа. Он может не совпадать с названием Табличной формы, с которой она связана. С одной табличной формой может быть связано несколько печатных форм (см. 2.2.1. За­кладка «Общие сведения»). Выбор конкретной формы производится непосредственно в процессе работы перед печатью. Псевдоним каждой печатной формы должен быть уникальным. Опи­сание (иначе - заголовок) формы не несет служебной информа­ции и нужен пользователю для пояснения ее роли в жизни. Псевдоним печатной формы, ее описание и настройки состав­ляют шаблон. Все шаблоны печатных форм находятся в специ­альном файле с расширением dat. Такой файл в стандартной поставке имеет имя tmpls.dat.

Вы можете видеть, что часть из псевдонимов помечена латинской буквой WORDBLDB. Это печатные формы, которые подготов­лены специально для использования совместно с текстовым редактором Microsoft Office Word или OpenOffice Writer. Мы считаем, что на сегодняшний день - это основной способ создания новых бланков документов, т. к. он соответствует современным принципам использования программного обеспечения, которые требуют интеграции с офисными пакетами. Дальнейшее совершенствование инструментария подготовки печатных форм будет связано именно с ним. Все псевдонимы, не помеченные буквой W, относятся к внутренним шаблонам ERP-системы «КОМПАС» и обрабатываются при печати документов непосред­ственно данным мастером. Кнопка с аналогичной картинкой W под списком форм позволяет проверить наличие шаблонов в формате Microsoft Office Word или OpenOffice Writer. Если для каких-то форм шаблон не будет найден, это получить отражение в протоколе проверки.

Специальной пометкой WORDSTPB в списке отмечены те формы, которые основаны на шаблоне в формате MS Word версии старшей, чем та, которая установлена на компьютере (приводится для информации над списком форм). Корректировка и использование таких форм не допускается.

В окне мастера печатных форм расположены кнопки:

Правила редактирования шаблонов Word

Основное окно редактирования шаблона Word представлено на рис. 2.36. Для того, чтобы возможности ERP-системы «КОМПАС» функционировали в полном объеме, Вам необходимо иметь в папке STARTUP или АВТОЗАГРУЗКА (в зависимости от того, англоязычная или русскоязычная версия операционной системы установлена на Вашем компьютере) один из следующих файлов: kmp_sql7.dot, kmp_sql8.dot или kmp_sql9.dot (в зависимости от версии MS Office).

44

Рис. 2.36. Мастер печатных форм, окно редактирования шаблона

В принципе, программа копирует эти файлы в нужную пап­ку автоматически. В любой из задач пакета в пункте Кон­фигурация меню Настройка есть закладка Печать документов, а на ней кнопка Поддержка печати через Word. Если Вы зайдете в Конфигурацию и установите переключатель в положение Включить, то программа попытается определить версию Word, размещение его системных файлов и произвести копи­рование. Однако, в случае сложных конфигураций системы возможны неудачи. Поэтому неплохо знать, что образцы вышеупомянутых файлов находятся в стандартной поставке в папке SHABL, на тот случай, если Вам придется копиро­вать их самостоятельно. Необходимыми условиями успешной автоматической установки связи являются: полноценная ин­сталляция Word или MS Office в целом, без последующего перемещения простым копированием и исправлением ярлыка, а также правильная регистрация в процессе инсталляции Word.

Впрочем, будем считать, что установка уже прошла нор­мально, и вернемся к теме подготовки шаблонов.

В вертикальную панель инструментов входят:

Формула

Таблица

Рисование

Изображение

Параметры документа

Формулы документа

Сохранить

Для добавления в шаблон документа формулы установите курсор в документе на нужном месте и нажмите кнопку Формула . При этом будет выведен Конструк­тор формул (см. соответствующую главу раздела «Общие правила работы»), с помощью которого составляется формула. Если нужно откорректировать уже существующую формулу, установите на нее курсор и нажмите ту же кнопку. В этом случае сначала раскроется экран, представленный на рисунке 2.37. Текст форму­лы записывается или непосредственно в поле ввода, или опять же с помощью Конструк­тора формул, который можно вызвать кнопкой Конструктор, расположенной в конце поля ввода формулы. Для полей, расположенных внутри тела таблицы, в формулах могут использоваться поля этой таблицы или запроса. В конструкторе формул они будут размещаться в отдельной группе параметров, название которой совпадает с названием таблицы или запроса. Кроме текста формулы, Вы можете с помощью кнопки Опции указать дополнительные характеристики данного элемента печати. Остановимся на этом важном моменте поподробнее.

Выбор опций расположен на трех закладках (рис. 2.37.).

45

Рис. 2.37. Мастер печатных форм, редактирование формулы

Пер­вая из них (Для всех) относится к данным любого типа. С ее помощью можно определить необходимость начинать поле с заглавной буквы (даже если подставляемая информация начи­нается с буквы строчной), заканчивать ее точкой (даже если точки в подстановке нет), заменять ли имеющуюся внутри тек­ста точку на любой другой символ. Обратите внимание, что последняя установка относится и к десятичной точке в числах, но гаранти­рованно работает, только когда в качестве разделителя дробной и целой части числа в Панели управления Windows (Языки и стандарты / Числа) задана именно точка! Наконец, можно включить флаг подчеркивания. В этом случае, пустое (и толь­ко пустое) значение поля ввода при формировании документа будет заменяться символами подстрочного подчеркивания. Ну не указали Вы фамилию директора предприятия — партнера, значит, в окончательном тексте письма на этом месте создастся эффект пустой графы. Сколько символов подчеркивания должна ставить программа, можно указать в соседнем поле.

На закладке Число можно установить переключатель печа­ти сумм цифрами или прописью. Пропись может быть определена в рублях или в валюте, и то, и другое — по-русски или по-английски. Для числа прописью можно задать печать слова ровно (в английском варианте only) в том случае, когда оно не содержит дробной части (т. е. число 34.45 при такой установке будет напечатано как тридцать четыре рубля 45 копеек, а 34.00 как тридцать четыре рубля ровно). Кроме того, можно выставить флаг Округлить до целого (заметьте, эта установка относится именно к округлению самого печатае­мого числа, а не к формату его печати) и указать, сколько знаков после десятичной точки надо печатать (только если число печатается не прописью). Заметим, что значение Авто, устанавливаемое в этом параметре по умолчанию, приводит к непропечатыванию всех концевых нулей после десятичной точ­ки, т. е. 1001.40 Вы увидите в документе как 1001.4, а 1001.00 как 1001. Поэтому будьте внимательны, и в тех полях, где Вы хотите видеть копейки, всегда указывайте точность печати 2. Кроме того, установкой еще трех флагов можно задать разбие­ние чисел на триады (берется символ из Панели управления Windows), замену нулевого числа на пустоту или любой другой текст и нулевых копеек на знак равенства (такое требуют некоторые банки при печати платежных поручений).

На закладке Дата можно по аналогии с числом выбрать написание прописью или цифрами. По умолчанию дата пишется пропи­сью, например, 14 июля 99, тем не менее, с помощью трех флажков можно установить написание года с четырьмя цифрами (14 июля 1999 года), заменить слово «года» на «г.», на пусто или вовсе написание года отменить (14 июля). Часть этих установок действует и на запись даты числом. Никаких букв в нее не добавляется, но можно задать написание с двумя циф­рами года, с четырьмя цифрами и вовсе без года. С другой стороны, дату прописью можно напечатать на английском языке.

Ранее введенную формулу и все ее настройки можно отредактировать средствами MS Word. Для этого надо двойным щелчком на формуле вызвать меню, показанное на рисунке 2.38. В этом случае, однако, никакой подсказки ни по формуле, ни по настройкам Вы не получите.

46

Рис. 2.38. Форма Параметры тестового поля (представлен вид формы в случае установленной англоязычной версии MS Word)

Кнопка предназначена для работы с таблицами. Для ввода табли­цы достаточно выбрать позицию на экране и нажать соответствующую кнопку на панели инструментов. Тут же появится настроечное окно (рис. 2.39.), в котором вам нужно указать источник данных:

Во всех трех случаях вы получите полный перечень полей таблицы или запроса, и надо только расставить флажки, показывающие, какие поля включить в новообразованную таблицу, а какие - нет, а также по каким числовым полям Вам нужны итоги. Кроме того, с помощью специального флажка Вы можете добавить в таблицу колонку с порядковым номером строки. Самое главное, что создается именно таблица в терминах Word, а значит с ней можно работать всеми средствами, предоставленными текстовым процессором. Даже кнопка Автоформат, которую Вы видите на Рис. 2.39, является сугубо Word-овским элемен­том, с помощью которого Вы можете подобрать оформление данной таблицы. Вы можете удалять и копировать таблицу, менять ее размеры, переставлять колонки и добавлять но­вые все теми же стандартными приемами, которыми Вы пользуетесь при создании любых текстовых документов. Не­обходимо только помнить, что количество колонок таблицы, которые можно вставить в шаблон, ограничено: для Microsoft Word из Microsoft Office 95 установлен максимум 31 колонки, для Microsoft Word из Microsoft Office 97и выше — 63 колонки. Кроме того, нельзя вставить одну таблицу внутрь другой.

47

Рис. 2.39. Мастер печатных форм, окно настройки свойств таблицы

После нажатия кнопки ОК таблица будет вставлена в документ. По умолчанию, она состоит из трех строк: заголовка, самой таблицы и итоговой строки. Вам может понадобиться иметь в таблице заголовок, состоящий более чем из 1 строки. Это можно сделать средствами Word, но после этого надо позаботиться о том, чтобы «КОМПАС» знал, какая именно строка должна размножаться при обработке таблицы или запроса. Для того, чтобы это сделать, установите курсор на идентификаторе таблицы (обычном поле ввода, расположенном непосредственно над таблицей) и снова нажмите ту же кнопку (). При этом появится окошко, позволяющее ввести номер строки, в котором расположен детальный раздел таблицы и который будет дублироваться при печати документа. Этот номер можно установить и заранее, еще перед нажатием кнопки ОК на форме, изображенной на рис.2.39.

Чтобы изменить настройки поля, в том числе и находящегося внутри таблицы, достаточно щелкнуть по нему левой клавиши мыши и нажать после этого кнопку . Вы тут же окажетесь в форме редактирования свойств поля ввода. Однако для таблицы Вам доступны дополнительные переменные, соответствующие полям этой таблицы (они выделены в отдельную группу), а также вспомогательные переменные, которые Вы можете описать еще на этапе настройки таблицы с помощью кнопки Формулы. При этом откроется окно, правила работы с которым аналогичны правилам работы с формулами документа (см. ниже). Удаление поля или целой колонки производятся стандартными для работы с MS Word действиями.

Кнопка Рисование предназначена для перехода (отмены) к режиму рисования Word.

Кнопка Изображение предназначена для вставки в документ Word изображения, которое хранится в базе данных (например, логотипа фирмы или логотипа партнера): одно из возможных изображений выбирается как элемент массива общих мест.

При нажатии на кнопку Формулы документа на экране откроется окно с кнопками Закрыть, Новая, Правка, Правка метки и Удалить. В этом окне можно создать сколько угодно строк, в каждой из которых указать текст формулы (с помо­щью все того же Конструктора формул — см. раздел «Общие правила работы»), поясняю­щее описание и ее метку. В дальнейшем эту метку можно будет многократно использовать в участках подстановки (в том числе и в качестве операндов в других формулах), не утруждая себя снова и снова набором длинного выражения. Кроме того, такое краткое имя лучше видно в узких полях шаблона, а это немаловажно при визуальном поиске ошибок. Отметим, что при работе с конструктором введенные Вами формулы будут появляться в специальной группе переменных Формулы документа. Нетрудно догадаться, что кнопки Правка и Правка метки дают Вам возможность исправить текст формулы и имя метки соответственно, а кнопка Новая... до­бавляет пустую строку, в которую надо занести очередную формулу.

Кнопка Параметры документа предназначена для вызова меню параметров документа. Когда начинается формирование документа, на экран выводится окно, в котором можно заполнить параметры документа. Параметры можно использовать в любых формулах шаблона, то есть содержание документа на печати будет зависеть от введенных перед печатью значений параметров.

Кнопка Сохранить предназначена для сохранения документа Word. Если Вы не внесли изменений и, не нажав эту кнопку, закрываете окно редактирования шаблона, будет выведено предупреждение о том, что документ не был сохранен, с возможностью сохранить его, не сохранять или вернуться к редактированию.

Мастер запросов

Данный мастер включен только в версии с полным набором МАСТЕРОВ ERP-системы «КОМПАС». Вся основная работа с занесением данных в базу, их сбо­ром и обработкой проводится в системе «КОМПАС» на основе SQL - запросов.

Эти запросы, по большей части, доступны к изменению пользователем с правами доступа системного администратора во всех подсистемах ERP-системы «КОМПАС». Тем не менее, следует помнить, что большинство стандартных алгоритмов пакета также использует редактируемые запросы, поэтому ошибочная их корректировка или удаление могут привести к нарушению работы отлаженных процедур. По замыслу авторов программы, основная функция мастера запросов, вызываемого с помощью кнопки QUERYCOM панели инструментов или пункта Запросы пользователя меню Сервис, заключается в создании новых запросов для использования в нестандартных отчетах, функциях редактирования данных и бизнес - процедурах (см. раздел 2.7. Мастер бизнес – процедур настоящего руководства). Существует даже возможность создания аналогов табличных форм (см. раздел 2.2. Мастер табличных форм настоящего руководства), работающих не с реальными таблицами, а с наборами данных (DATASET), полученными в результате выполнения запросов. Для того, чтобы не запутаться во всем этом многообразии, в данном мастере имеется специальная возможность структурирования всего множества используемых запросов и создания новых групп (см. ниже) - специально для работы пользователей. Тем не менее, мы не исключаем и оптимизации существующих текстов, особенно в случае работы с нестандартными SQL - серверами, не предусмотренными в распространяемых версиях системы. Тем не менее, в этом случае умоляем - будьте аккуратны! Кстати, для безопасности в ряде подсистем хранение запросов разделено на несколько dat-файлов, а вызов мастера разделен на отдельные пункты меню, один из которых называется Запросы пользователя. Этот же пункт дублируется с помощью кнопки QUERYCOM. Только это подмножество запросов подсказывается при определении пункта в администраторе меню (см. раздел 1.1. Администратор меню настоящего руководства).

Еще раз повторим, что редактирование запросов требует хотя бы начальных знания языка SQL (см. соответствующую документацию и учебники) и должно осуществляться только системным администратором.

Все запросы хранятся в файлах с расширениями dat. В стандартной поставке они чаще всего носят имя queries.dat. Файлы запросов разные для всех подсистем ERP-системы «КОМПАС». В некоторых подсистемах запросы разделены на несколько файлов, общей для которых является маска quer*.dat.

После входа в мастер Вы видите перечень всех доступных редактированию запросов (см. Рис. 2.40).

Рис. 2.40 Мастер запросов

Если в строке Группа запросов пусто, то Вы видите перечень всех запросов, доступных в данной подсистеме ERP-системы «КОМПАС». При желании можно облегчить себе поиск нужного варианта, просматривая перечень по группам, которые можно выбирать в верхней строке из раскрывающегося списка.

В правой части панели размещены следующие кнопки:

С помощью кнопок s3 и s1 производится перенос из общего перечня запросов (с помощью выпадающего списка можно осуществлять отбор по группам) в редактируемую группу и обратно. С помощью кнопок s4 и s2 такой же перенос осуществляется в режиме «все сразу».

49

Рис. 2.41 Мастер запросов, окно редактирования групп

Окно редактирования запроса

В окне Редактирование запросов в зависимости от конкретного текста (см. ниже), Вы можете видеть от двух до шести закладок (см. Рис. 2.42).

Укажите псевдоним табличной формы (выберите из списка имеющихся), которая При использовании запроса в качестве справочника вызывается по кнопке Правка.

Возможность установить флажки в правой нижней части окна существует только для тех запросов, которые возвращают множество значений.

Флажок Редактируемый запрос как раз и отличает те из них, которые могут использоваться в качестве табличной формы для корректировки и ввода данных (подробнее см. раздел 2.5.4. Некоторые особенности редактируемых наборов данных настоящего руководства).

Если установить следующий флажок - Кэшировать изменения, то в случае установки предыдущего флажка (в противном случае данные действия смысла не имеют) все изменения, сделанные в табличной форме запроса, будут «ложиться» на сервер после окончания редактирования. Если флажок не установлен, то изменения будут видны остальным пользователям сразу же после их ввода на любой из станций сети.

Рис.2.42 Мастер запросов

Наконец, флажок Использовать как справочник позволяет действительно использовать полученный в результате выполнения запроса набор данных в качестве справочника при редактировании других запросов или табличных форм, т. е. это полный аналог такого же флажка из Мастера табличных форм (см. раздел 2.2.1. Закладка Общие сведения настоящего руководства).

При нажатии кнопки TFLIST Параметры отображается форма, где можно задавать тип параметра (аналогично типу полей - см. раздел 2.1.2. Закладка Поля таблицы настоящего руководства), его значение и описание. Параметры, добавленные в поле Текст SQL, автоматически будут отображаться и в поле Список параметров. Не забудьте обязательно задать значение параметра по умолчанию, ибо только тогда Вы сможете оперативно тестировать запрос (см. ниже). Если Вы используете SQL-сервер, то можно добавлять и удалять параметры непосредственно кнопками Новый и Удалить. Параметры бывают входные и выходные, но выходные параметры имеют смысл лишь для хранимых процедур.

Макропараметр — это блок текста, подставляемый в запрос без изменений: точно в то место запроса, где этот макропараметр описывается. При нажатии кнопки FITINB Макропараметры отображается форма, где можно задавать порядковый номер макропараметра, подставляемый им в SQL-запрос текст по умолчанию и краткое описание. В тексте запроса место использования макропараметра из передаваемого списка формальных значений помечается символами %S. Обрабо­тав при первом обнаружении такой пары символов первое значение из передаваемого перечня, программа как бы «забывает» о нем, и при встрече со следующей парой %S будет заменять ее на следующее значение. Если же Вам нужно использовать значение повторно, то приходится использовать запись %<номер>:S, где номер — это номер в перечне. Не забывайте: нумерация всегда начинается в списке с 0. Макропараметры появляются в перечне автоматически по мере появления вышеуказанных символов %S в тексте запроса. Тем не менее, после окончания редактирования текста, надо обязательно использовать кнопку FITINB, чтобы задать описания (иначе забудете смысл) и значение по умолчанию (в противном случае не будет проходить тест).

Кнопка s1 Создать процедуру нужна для создания подготовленных хранимых процедур на SQL - сервере (см. раздел 2.5.3. Использование хранимых процедур настоящего руководства).

Кнопка s2 Конструктор позволяет вместо прямого написания текста запроса создавать его в диалоговом режиме (см. раздел 2.5.2. Конструктор запросов настоящего руководства).

Кнопка QUERYCOM Обновление активна только при установленном флажке редактируемого запроса, а значит, за описанием мы отсылаем Вас к разделу 2.5.4. Некоторые особенности редактируемых наборов данных настоящего руководства.

Нажав на кнопку TFTEST Тест запроса, можно посмотреть результаты его работы, если запрос возвращает значение или набор данных.

Завершая же описание закладки Поля, отметим, что перечень полей можно получить только из текста запроса одним из двух способов: нажав кнопку Обновить список полей на данной закладке или кнопку TFTEST Тест запроса на закладке Текст SQL. Если после нажатия кнопки Обновить Вы получили пустой список, это значит, что запрос содержит ошибку, либо не установлены значения по умолчанию для параметров и макропараметров. Чтобы узнать ее содержание, воспользуйтесь кнопкой Тест. Только в случае заполнения списка полей Вам откроются последние три закладки окна редактирования запроса, связанные с описанием табличной формы.

Рис. 2.43 Мастер запросов, закладка Поля

Рис. 2.44 Мастер запросов, закладка Форма

Можно написать запрос для создания дерева в левой части окна «вручную», а можно сгенерировать его автоматически с помощью кнопки QUERYCOM Создать запрос, предварительно сделав все необходимые установки, которые осуществляются по номерам полей в результатах запроса. В первую очередь надо указать номер поля с уникальным ключевым значением (Ключевое поле). Так как поле COD1 в созданном нами основном запросе шло на первом месте, мы указали цифру 1. Затем указывается Отображаемое поле, т. е. то, из которого берутся в изображение дерева названия групп. Это у нас поле краткого наименования PYR3, которое стоит в перечне забранных в запрос полей на третьем месте. Номер поля, в котором хранится код группы, иначе Поля группировки, это 2 - номер поля SUBCOD в перечне. Разделитель в обозначении уровней иерархии при таком описании дерева не играет роли, т. к. мы сейчас создаем его двухуровневым. Если бы мы базировали дерево на поле PATH, то стоило бы задать «-», как это показано на рис. 2.44. Наконец, два заголовка — это слова, которые пишутся для того, чтобы обозначить узел, в котором мы можем смотреть полный перечень всех записей, и узел, открыв который мы переходим к работе только с верхним уровнем иерархии, после чего и осуществляем «спуск по дереву» (см.раздел «Общие правила работы», п. Древовидные справочники).

Разграничение доступа пользователей к кнопкам экспорта данных в запросных формах

Нажатие на кнопку Права на выгрузку выводит на экран форму настройки разграничения доступа к возможности экспорта данных для выбранной запросной формы. Описание порядка настройки прав доступа приведено в разделе 1.5 настоящего руководства.

Конструктор запросов

Конструктор запросов предназначен для упрощения генерации текста SQL - запроса за счет использования диалоговых и графических средств. Можно сказать, что использование Конструктора — хороший учебник для первичного знакомства с синтаксисом языка SQL. Используя его, Вы можете изучить простейшие (и одновременно самые важные) его элементы.

Основное окно Конструктора (рис. 2.45.), появляющееся на экране после нажатия кнопки 53 Конструктор на закладке Текст SQL (см. 2.5.1. Окно редактирования запроса) можно разбить на четыре основных части.

54

Рис. 2.45. Мастер запросов, конструктор запросов

Центральная рабочая область, или поле графических операций, предназначена для размещения визуального отображения описаний включенных в запрос таблиц и их полей. О том, как это делается, мы поговорим чуть ниже. Правая часть — перечень таблиц из обрабатываемой в запросе базы данных. Если в момент включения Конструктора имя не было задано на закладке Общие сведения (см. 2.5.1. Окно редактирования запроса), то пользователя попросят предварительно его указать. В нижней части расположены три закладки, на которых отражаются дополнительные установки и результаты редактирования запроса. Наконец, на самой верхней линейке находится Панель инструментов, с описания которой мы и начнем свой рассказ.

TBLMAN Данная кнопка служит для того же самого задания имени базы данных, которое (см. выше) запрашивается на входе в Конструктор. По желанию пользователя можно впрямую указать имя (см. п.1.5. Администратор базы данных), а можно стандартными средствами Windows найти папку, где она размещается. Здесь же можно включить флаг показа системных таблиц. В противном случае они не будут доступны для выбора полей с данными.

FITINB Кнопка Новый служит для очистки всего того, что уже содержится в запросе. Информация в рабочем поле полностью очищается.

SAVEB Эта кнопка служит для того, чтобы сохранить результаты работы в виде графической модели (а не созданного на ее основе запроса). В каждом файле может храниться только одна модель. По умолчанию предлагается расширение qb.

OPENB С помощью кнопки Открыть Вы можете возобновить работу с сохраненной моделью, прочитав ее из файла (см. выше).

s1 Эта кнопка нужна только для того, чтобы расширить рабочую область за счет отключения показа нижних закладок. Естественно, повторное нажатие возвращает закладки на экран.

s1 Аналогичным образом кнопка Таблицы нужна для отключения и включения показа правого перечня таблиц.

s1 Это самая важная кнопка. Она нужна для генерации текста SQL - запроса. Пока Вы ее не нажмете, работа с Конструктором не закончена. Текст запроса появляется на одной из закладок нижней части.

TFTEST Уже знакомая кнопка Тест позволяет просмотреть на одной нижних закладок результат выполнения запроса.

s1 Наконец, данная кнопка позволяет сохранить результаты тестового запроса в виде таблицы базы данных.

Несколько слов о нижних закладках. На закладке Поля Вы сможете произвести некоторое дополнительное редактирование будущего запроса (см. ниже). Закладка SQL показывает сгенерированный по кнопке s1 текст, который тут же можно отредактировать. На последней закладке Результат запроса можно видеть то, что получилось после нажатия кнопки TFTEST Тест.

Теперь несколько слов о стандартной последовательности конструирования. Первым делом Вы производите отбор тех таблиц базы данных, поля которых послужат для Вас источником информации. Делается это с помощью стандартного «перетягивания», т. е. Вы щелкаете левой клавишей мыши на имени таблицы в правом перечне и, не отпуская клавиши, переводите курсор в рабочую область. После этого там появляется прямоугольник с полным перечнем полей, каждое из которых снабжено флажком. Щелкнув на флажке, Вы можете выбрать нужное поле в запрос или отменить выбор. Говоря в терминах языка SQL, такие операции порождают включение в запрос SELECT на выбор отмеченных полей включенных в запрос таблиц.

Удалить всю таблицу из запроса можно, используя знакомый крестик в верхней правой части соответствующего ей прямоугольника (см. рис. 2.45.).

Далеко не всегда для запроса достаточно данных из одной таблицы. Поэтому в рабочую область их можно перетащить из перечня сколько угодно. Но это бессмысленно, если все таблицы не связать между собой по полям соответствия. Такая связанная модель будет порождать SELECT на декартово произведение записей (параметр WHERE). Т.е. в результирующем наборе данных будет ровно столько строк, сколько оказалось в таблицах уникальных сочетаний записей, в которых значений полей связи равны. Чтобы задать связь, достаточно щелкнуть левой клавишей на имени поля одной таблицы, а затем, не отпуская, подвести указатель мыши к имени поля в другой. На экране сразу появится связующая нить. Очень наглядно! Интересно, что иногда бывает необходимо отобрать только те записи од­ной таблицы, в которых соблюдается равенство между значе­ниями двух полей. Конструктор позволяет сделать это за счет установления связи между разными полями одной таблицы.

Отмена всех связей таблицы производится нажатием на подстрочное подчеркивание в правом верхнем углу соответствующего ей прямоугольника (см. рис. 2.45.).

Конечно, элементарного отбора недостаточно, чтобы создать интересный запрос. Для описания разных дополнительных параметров предназначена закладка Поля из нижней части окна Конструктора. Как можно видеть на рис. 2.45, в ней сразу же появляются колонки с перечнем всех включенных в запрос полей. Под каждой из колонок и расположены несколько ячеек для задания добавочных свойств. Чтобы воспользоваться этой любезно предоставленной авторами мастера возможностью, достаточно щелкнуть на нужной ячейке правой клавишей мыши.

Первое из свойств Показывать позволяет отказаться (а повторным выбором вновь открыть) от показа в итоговом DATASET включенного в запрос поля.

Второе свойство Сортировка позволяет установить по любому полю упорядочивание по возрастанию или убыванию, либо просто отменить его. Если Вы установите сортировку по нескольким полям, то сначала будет учитываться самое левое из них, а следующее по порядку будет играть роль только при равенстве значений в предыдущем. В терминах SQL установка данного свойства приводит к появлению в запросе оператора ORDER BY с различными параметрами.

Свойство Функция позволяет не просто отобрать нужные записи, но и просчитать некие значения от выбранных полей. В зависимости от типа поля можно выбрать следующие вари­анты: Среднее (порождает функцию AVG), Количество запи­сей в базе (COUNT), Максимум значения в поле (МАХ), Минимум (MIN) или Сумма (SUM). Контроль за правильностью подбора функции для поля данного типа - на Вашей совести. Впрочем, обо всех ошибках Вы узнаете во время тестирования.

То же касается и необходимости либо задать какую-то функцию для всех выбранных полей, либо указать группировку (см. ниже) по одинаковым значениям у тех, кому никакая функ­ция не приписана.

Последнее свойство Группировать, порождающее оператор GROUP BY, как раз и задает группировку по одинаковым зна­чениям поля, т. е. в результирующем наборе будет столько строк, сколько найдется уникальных сочетаний данных в полях, по которым делается группировка. Стоит повторить еще раз, что группировку придется установить по всем включенным в запрос полям, для которых не установлено никакой функции, если функция установлена хотя бы для одного поля запроса.

В заключение этого небольшого, но содержательного раз­дела напомним, что хотя нажатие кнопки ОК приводит к автоматической генерации текста запроса, лучше все-таки предва­рительно воспользоваться последовательностью s1 и TFTEST, чтобы убедиться в правильности настроек. Кроме того, следует обратить Ваше внимание на то, что выбор базы для работы с Конструктором не приводит к автоматической записи этого значения на закладку Общие сведения (см. 2.5.1. Окно редактирования запроса). А вдруг Вы просто хотели использо­вать какой-то тестовый вариант? Поэтому надо указать ее там отдельно.

Использование хранимых процедур

При работе с SQL-серверами очень часто бывает целесообразным использовать вместо формируемых на клиентском компьютере запросов заранее скомпилированные хранимые процедуры. Чтобы указать, что должна использоваться такая процедура, как это ни странно, не надо устанавливать на закладке Общие сведения (см. 2.5.1. Окно редактирования запроса) переклю­чатель Хранимая процедура, нужно выбрать вариант Простой запрос, а в качестве Текста SQL указать буквально одно слово — имя процедуры.

Спрашивается, откуда же тогда возьмется на сервере нуж­ный код? Все очень просто. В мастере Вам придется подгото­вить еще один запрос с другим псевдонимом, для которого как раз переключатель Хранимая процедура и устанавливается в долгожданное положение. После этого в специальном поле ввода указывается имя процедуры - то самое, о котором гово­рилось выше.

Понятно, что данное положение переключателя программа позволяет выбрать только, если Вы определили предварительно работу с базой данных (см. 2.5.1. Окно редактирования запроса), хранящейся на SQL - сервере.

Сам текст запроса начинается с оператора CREATE PROCEDURE <имя процедуры> AS. Далее следует собственно тело запроса. Когда запрос готов, остается только нажать на закладке Текст SQL кнопку BNKCLNTB (см. 2.5.1. Окно редактирования запроса), и процедура готова к использованию.

При установке стандартной поставки серверной версии ERP-системы «КОМПАС» компиляция всех подготовленных авторами хранимых процедур производится автоматически.

Некоторые особенности редактируемых наборов данных

Особенно подробно стоит поговорить о подготовке запро­сов для редактируемых наборов данных (см. 2.5.1. Окно ре­дактирования запроса), являющихся альтернативой стандартным табличным формам. Их особенность заключается в том, что они не только визуализируют отобранные записи таблицы, но и позволяют записать результаты сделанных изменений. Режим записи необходимо настроить.

Настройка осуществляется после нажатия кнопки QUERYCOM Обновление на закладке Текст SQL (см. 2.5.1. Окно редактиро­вания запроса), которое приводит к открытию окна Обновление запроса (рис. 2.46.) с четырьмя закладками.

Три из них: Модификация, Вставка и Удаление - доста­точно тривиальны. Здесь можно «вручную» написать текст SQL-запроса для изменения откорректированных записей, со­здания новых по результатам добавления строк в процессе редактирования и удаления, указанных пользователем соответ­ственно. Расскажем только об одном соглашении. Для исполь­зования в параметре WHERE при сравнении данных в полях по принципу «было/стало» для старых значений используются те же имена полей запроса, но с префиксом OLD_.

Гораздо интереснее первая закладка Таблицы и поля, кото­рая позволяет автоматизировать процедуру написания всех трех текстов сразу. Здесь в первую очередь необходимо выбрать основную (ведущую) таблицу для модификации. После этого два соседних окна Ключевые поля и Обновляемые поля сразу же заполняются полным перечнем всех полей запроса, причем все они выбраны к использованию, что, естественно, совер­шенно неосмысленно. Поэтому надо выбрать только те ключевые поля (по совпадению старых и новых значений в которых производится принятие решения об удалении и модификации записей), которые действительно таковыми являются. Выбор единственного поля производится щелчком по нему левой кла­виши мыши. Выбор еще одного поля (без изменения состоя­ния остальных) тем же действием, но с одновременным нажа­тием клавиши Ctrl (стандартные соглашения Windows). Аналогичным образом помечаются во втором окне только те поля, в которые действительно надо заносить значения.

55

Рис. 2.46. Мастер запросов, форма обновления запроса

Когда выбор закончен, следует нажать кнопку TFTEST Создать запросы, и после этого на соседних закладках Вы сможете увидеть все три необходимых текста. Естественно, что дей­ствительно интересные случаи полной автоматизации не под­даются. Тут-то Вам и помогут режимы корректировки автома­тически подготовленных SQL-текстов.

Если Вы хотите отложить запись изменений в базу до окон­чания редактирования всей формы запроса в целом, то на закладке Текст SQL (см. 2.5.1. Окно редактирования запроса) надо установить флаг Кэшировать измене­ния. В противном случае они сразу же после ввода в поле формы будут переписаны на сервер и доступны другим пользова­телям.

Есть еще несколько интересных особенностей, связанных с использованием не только редактируемых, но и вообще всех табличных форм на основе запросов. Но так как для режима вво­да и корректировки они особенно ценны, нельзя не упомянуть о них в этом разделе.

Так же, как и в обычных табличных формах, здесь имеется возможность использовать фильтр FILTERB и поиск FINDB. Однако в запросных формах нет такой широкой возможности регулировки условий отбора (см. 2.2.3. Закладка «Фильтр/поиск»). В перечень автоматически попадают все поля набора данных, даже те, которые не визуализированы в качестве колонок фор­мы, с теми комментариями, которыми они были снабжены на закладке Поля (см. 2.5.1. Окно редактирования запроса).

Можно также подводить итоги SUMB, но без предваритель­ного отбора записей, только по всем строкам набора данных, и в простых выражениях, т.е. выдаются просто суммы значений тех полей, для которых на закладке Поля установлен соот­ветствующий флаг (см. 2.5.1. Окно редактирования запроса).

Зато гораздо лучше обстоит дело с сортировками. Посколь­ку это набор данных, а не реальная таблица, то нет никакой необходимости иметь соответствующие индексы (см. 2.1.3. Закладка «Индексы» и 2.2.4. Закладка «Сортировки»). Поэтому можно переупорядочить DATASET по любой колонке, для чего достаточно щелкнуть левой клавишей мыши на ее заголовке.

Наконец, очень удобной оказывается автоматически под­ключаемая функция поиска набором префикса (иначе говоря, поиска по мере ввода), которая включается кнопкой PREVIEWB. После нажатия кнопки встаньте на любую колонку и начинайте наби­рать искомый в ней текст, или число, или дату на клавиатуре.

Мастер отчетов

Данный мастер включен в версии с полным набором МАСТЕРОВ ERP-системы «КОМПАС».

Мастер отчетов, который вызывается нажатием кнопки REPMAN на панели инструментов или выбором одноименного пункта меню Сервис, служит для создания, редактирования и удале­ния описаний (шаблонов) отчетов, иначе говоря, различного вида ведомостей. Шаблоны отчетов отличаются от шаблонов печатных форм (первичных документов) неопределенным ко­личеством строк данных, переменной шириной печатного до­кумента, которую необходимо делить на поперечные подстраницы (в дальнейшем мы будем называть их фрагменты) при печати на стандартный формат бумаги, неопределенным количеством итогов и субитогов и т. д. Пожалуй, автомати­ческое разбиение текста на фрагменты и иерархические итоги являются главными отличительными характеристиками Мастера отчетов.

Шаблон отчета состоит из псевдонима, краткого наимено­вания, собственно описания отчета и других настроек.

После запуска мастера все существующие шаблоны отче­тов отображены в списке. Список состоит из двух колонок: Псевдоним и Описание (см. Рис. 2.47.). Щелчок левой клавишей мыши по заголовку любой колонки приводит к переупорядо­чиванию списка по алфавиту ее содержимого. Псевдоним от­чета — это наименование, с которым работает программа. Он может не совпадать с названием таблицы или запроса, по ко­торым строится отчет. Псевдоним отчета должен быть уникальным. Описание отчета — это комментарий, поясняющий назначение отчета. Он может включать в себя любые символы. Все шаблоны отчетов находятся в специальном файле с рас­ширением dat. Такой файл для мастера отчетов в стандартной поставке имеет имя repman.dat. В стартовом окне мастера отчетов расположены следую­щие кнопки:

Рис. 2.47. Мастер отчетов

Кнопка Сервис позволяет дополнить список DAT-файлов, из которых будут браться шаблоны отчетов: в дополнение к REPMAN.DAT может быть указан один или несколько файлов. Один из этих файлов назначается файлом по умолчанию: именно в него будут записываться новые шаблоны, а в случае наличия в разных файлах нескольких отчетов с одинаковым псевдонимом для печати будет браться шаблон из файла по умолчанию.

Следует обратить внимание, что перечень DAT-файлов хранится в конфигурации, что позволяет для разных баз данных использовать разный набор шаблонов отчетов. В то же время, файл REPMAN.DAT всегда присутствует в перечне и не может быть удален.

Намерение сформировать новый отчет «с нуля» приве­дет Вас в основное окно редактирования отчета (Описание шаблона отчета), состоящее из четырех закладок (см. ниже).

Попытка сформировать новый отчет на основе текущего приведет к копированию всех данных (включая псевдоним) из выбранного мышью в перечне шаблона и к выдаче на экран основного окна редактирования (см. ниже) для коррек­тировки.

Формирование отчета на основе табличной формы (см. 2.2. Мастер табличных форм) начинается с выбора псевдо­нима формы из предлагаемого списка. После этого автоматически формируется шаблон отчета с неиерархической структурой колонок, перечень которых и источники данных полностью совпадают с выбранной табличной формой. Ника­кие итоги там не описаны. После этого получившийся шаб­лон, псевдоним которого совпадает с псевдонимом табличной формы, подается Вам на редактирование все в том же основ­ном окне (см. ниже).

Также можно построить новый отчет с использованием возможностей программы Free Report.

Закладка «Общие сведения»

Первая закладка открывающегося окна Описание шаблона отчета называется Общие сведения (рис. 2.48.) и содержит самые основные параметры отчета: уже опоминавшиеся уникальный псевдоним и текстовое описание, а главное — характеристику источника данных для отчета. В качестве источника данных могут выступать любая Таблица базы данных, SQL-запрос или он Задается программно.

Таблица является самым простым для понимания источником данных для отчета, но и самым малоинтересным, т. к. очень часто для получения действительно ценной информации нужны поля хотя бы нескольких таблиц (впрочем, в разделе 2.6.3. За­кладка «Структура заголовка» Вы увидите, что и в этом смысле кое-какие возможности имеются). Как только Вы устанавливаете эту позицию переключателя, у Вас появляется возможность выбрать нужную таблицу из раскрывающегося списка.

Расположенная рядом кнопка Описание включает основное окно редактирования Мастера таблиц (см. раздел 2.1 настоящего руководства), в котором Вы можете создать недостающий источник данных. А уж как они туда будут попадать, Вам придется решать потом с помощью мастеров табличных (см. раздел 2.2 настоящего руководства), эк­ранных ) форм (см. раздел 2.3 настоящего руководства и Администратора меню (см. раздел 1.1 настоящего руководства). Кроме того, Вы можете (для нормального отчета это просто необходимо) задать список (через точку с запятой) полей, по которым будет проводиться сортировка данных. Будьте внимательны при упорядочивании — его нужно тщательно продумать, чтобы затем сформировались красивые субитоги (см. раздел 2.6.4. Закладка «Итоги/субитоги»). С помощью кнопки LAMPB эти поля можно выбрать из полного перечня полей ука­занной выше таблицы. В следующем открывшемся поле ввода можно описать условия отбора записей таблицы в отчет. Расположенная рядом кнопка LAMPB вызовет Конструктор формул (см. раздел 8 настоящего руководства) для того, чтобы облегчить Вам со­ставление условия, которое, естественно, должно возвращать значение логического типа, а кнопка MARK позволит тут же проверить синтаксис сделанной записи.

57

Рис. 2.48 Мастер отчетов. Описание шаблона

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

Кнопка Настройка печати позволяет выбрать для отчета размер и положение страницы, а также настроить другие параметры печати.

Настройка Для табличной формы позволяет указать, из какой табличной формы предполагается печатать данный отчет. Если табличная форма указана, то подключать шаблон отчета можно будет только к этой табличной форме. Если табличная форма не указана, то шаблон отчета, основанный на таблице, можно подключать к табличным формам, построенным по этой таблице, а шаблон отчета, основанный на запросе, можно подключать к любой табличной форме. Данная настройка никак не влияет на возможность подключения отчета в качестве пункта главного меню.

Кнопка Тест позволяет построить отчет по шаблону еще до сохранения сделанных изменений с целью проверки правильности сделанных настроек.

Гораздо большее разнообразие вариантов отчетов дает ис­пользование такого источника данных, как SQL-запрос. С его помощью можно легко собирать данные из нескольких таблиц. При установке переключателя в эту позицию, открывается кнопка s1 Выбрать. Нажав на нее, Вы попадете в основное окно мастера запросов (см. раздел 2.5 настоящего руководства), в котором кнопка Выход заменена на кнопку ОК. Вы можете тут же подготовить новый запрос (понятно, что он должен возвращать множество значений — см. раздел 2.5.1 Окно редактирования запроса настоящего руководства), а можете просто выбрать уже существующий запрос из перечня с помощью соответствующей кнопки. Если запрос расположен не в файле с именем QUERIES.DAT, то имя файла должно быть указано в поле Имя DAT-файла. Так же, как и в случае табличного источ­ника (см. выше), Вы можете ограничить отбор записей в отчет с помощью условия в нижнем поле ввода. Хотя, конечно, в данном варианте эта возможность несколько избыточна, ибо в большинстве случаев отбор Вы можете производить непосред­ственно в тексте запроса. Тем не менее, иногда такие вещи могут понадобиться, поэтому к Вашим услугам по-прежнему Конструктор формул. Если у запроса имеются параметры, то в начале формирования отчета на экран будет выводиться окно, в котором им следует задать конкретные значения. На­звания параметров в этом окне будут взяты из текстового ком­ментария к параметрам запроса (см. раздел 2.5.1. Окно редактирова­ния запроса настоящего руководства). За счет этого можно, например, собирать в отчет данные за желаемый диапазон дат, не «откачивая» лишние данные с сервера. Параметризация отбора данных — еще одна возможность, выгодно отличающая отчеты, построенные на запросах, от отчетов, построенных на таблицах, где параметры тоже имеются (см. раздел 2.6.2 Закладка «Шапка/подвал» настоящего руководства), но уменьшить время формирования отчета с их помощью нельзя.

Источник данных Задается программно предназначен исключительно для авторов пакета. Они пользуются им для самых сложных случаев, когда нужно реализовать неординарный программный алгоритм. Зачем же тогда такие отчеты реализуются через мас­тер и доступны пользователям в общем перечне? Дело в том, что все-таки Вы можете влиять на печать отчета, настраивая его параметры, удаляя те или иные колонки или меняя их визуальное представление (см. раздел 2.6.3. Закладка «Структура заголовка» настоящего руководства), а также создать для него специфические подвалы и шапки (см. раздел 2.6.2. Закладка «Шапка/подвал» настоящего руководства).

Отметим также, что при модификации главного меню раз­дела (см. раздел 1.1. Администратор меню настоящего руководства) и задании отчета в качестве вызываемого объекта, Вы получаете возможность выбрать один из тех отчетов, в которых в качестве источника данных используется таблица или запрос. Отчеты с источником данных Задается программно Вам в этом случае недоступны.

Самым нижним элементом на закладке Общие сведения является кнопка REPAREB Настройки печати. Вызываемое ею окно позволяет выбрать шрифт для отчета, ориентацию и формат листа, различные виды отступов, а также указать, нужно ли печатать в «теле» текста вертикальные разделительные линии, разделители в шапке страницы и специальную полосу под шапкой, в которую вставляются номера колонок.

Закладка «Шапка/подвал»

На данной закладке (см. Рис. 2.49) можно откорректировать печатную форму отчетов за счет настройки некоторых ха­рактеристик, не относящихся к основному содержанию таблицы.

58

Рис. 2.49 Мастер отчетов, описание шаблонов, закладка Шапка / подвал

В верхней части закладки можно установить флажки, опре­деляющие, надо ли предварять отчет в целом заголовком, и должен ли этот заголовок печататься на отдельном листе. Кро­ме того, можно указать, что перед заголовком отчета заголовок страницы не печатается. Таким образом, установив все три флажка, Вы получаете нормальный титульный лист, который потом (см. ниже) можете описать.

Здесь же можно установить наличие «подвала» у отчета в целом, а также подвала и заголовка у каждой отдельно взятой страницы. В зависимости от установки двух соседних флаж­ков, страничные подвал и заголовок могут быть напечатаны на каждом фрагменте страницы или только на самом левом. Напоминаем, что термин «фрагмент» относится к той ситуации, когда страница отчета настолько широка, что не помеща­ется на стандартный лист бумаги. Поэтому «КОМПАС» «разре­зает» ее поперек на фрагменты и печатает их один за другим с тем, чтобы пользователь мог их потом склеить в один широ­кий лист. Характерными представителями этого класса явля­ются, например, бухгалтерские журналы-ордера (см. книгу «Управление финансами и документооборот»).

Для формирования заголовков и подвалов Вы можете со­брать данные из базы с использованием SQL-запроса, имя ко­торого вводится в специальном боксе. Правила работы с этим боксом в точности соответствуют правилам описания SQL-запроса для отчета в целом (см. раздел 2.6.1. Закладка «Общие све­дения» настоящего руководства), включая немедленный выход в Мастер запросов с помощью соседней кнопки s1. Отметим только две особен­ности. Во-первых, если Ваш запрос будет возвращать множе­ство строк, то для формирования заголовков и подвалов все равно будут доступны данные только из самой первой из них. Во-вторых, параметры запроса будут добавлены к параметрам запроса для отчета в целом, и будут появляться на экране перед началом формирования текста. Если же имена параметров в обоих запросах совпадут, то программа в окне ввода даст для каждого такого совпадения ровно одну строчку, а введенное значение будет использовать и там, и там.

Дополнительные возможности по заданию данных для печа­ти подвалов и заголовков открываются при нажатии кнопки Параметры отчета. Здесь Вы можете описать процедуру ввода дополнительных данных, даже если не используете SQL-за­просов ни для описания заголовков, ни для создания текста отчета в целом. Перед Вами открывается окно с перечнем пара­метров, который с помощью кнопок Новый и Удалить Вы можете пополнять новыми строками или очищать от устарев­ших. Вам надо ввести имя параметра, его тип (дата, число и т. п.), текстовое описание, которое будет выдаваться пользовате­лю, и значение по умолчанию. Если имя параметра совпадет с именем какого-нибудь параметра одного из SQL-запросов, то это не приведет к созданию новой строки в окне, появляющем­ся перед пользователем в процессе работы. Если параметры отчета совпадают по имени с параметрами запросов, использованных в отчете, то значения параметров отчета подставляются в запрос перед его выполнением. Значения параметров отчета, а также параметров запросов, которые не совпадают по имени с параметрами отчета, запрашиваются перед формированием отчета. При этом в качестве исходного значения предлагается то, которое установлено при описании параметра отчета. Вы можете исключить некоторые параметры из окна ввода параметров, если при описании параметра установите флажок Скрытый параметр. Кроме того, при печати отчетов из некоторых табличных форм параметрам отчета с предопределенными именами автоматически даются значения с использованием данных из текущей строки табличной формы, и эти параметры также объявляются скрытыми. Если скрытыми оказываются все параметры, то окно для ввода параметров перед формированием отчета не появляется. Еще одна интере­сная особенность - имена параметров можно использовать в качестве переменных условия отбора записей (см. раздел 2.6.2. За­кладка «Общие сведения» настоящего руководства). Таким образом, хотя при исполь­зовании таблиц в качестве источника данных, Вы «закачиваете» с сервера информацию в полном объеме, но количество строк на печати с помощью параметров ограничить можно.

В нижней части закладки расположена группа описания заголовков и подвалов, состоящая из четырех закладок - по числу описанных чуть выше разновидностей дополнительных участков отчета. Естественно, что открывать имеет смысл толь­ко те закладки, для которых Вы чуть выше установили флаж­ки. Остальные Вам отредактировать не удастся. Как только Вы откроете нужную закладку, откроется и соответствующее окно, в котором Вы можете впрямую набирать текст, напри­мер, целую титульную страницу, а внутрь текста вставлять целые формулы, ограниченные угловыми скобками (см. Рис. 2.49).

Как Вы уже догадались, кнопка LAMPB Вставить формулу при­зовет Вам на помощь Конструктор формул (см. соответствующую главу раздела «Общие правила работы»), причем в отдельной группе переменных Вы увидите все поля описанно­го выше запроса. Кроме того, в группе Параметры отчета Вам будут предложены такие полезные переменные, как номер страницы, название отчета и номер фрагмента, которые позволят Вам осуществить красивую нумерацию страниц текста и их частей. Кнопка OKB Проверить даст Вам возможность проконтроли­ровать синтаксис введенных формул, а кнопка s1 Редакти­ровать в окне даст Вам возможность увеличить поле редакти­рования текущей закладки, что особенно удобно, если Вы про­ектируете красивый титульный лист.

Закладка «Структура заголовка»

Редактирование основной информации, описывающей вид и заполнение «тела» отчета, производится на закладке Структу­ра заголовка (см.Рис.2.50), которая отчетливо разделена на две группы. В нижней группе представлен иерархический перечень всех колонок отчета - Дерево заголовка, в котором перечислены все колонки отчета. Некоторые колонки могут быть объединены в группы, имеющие общий вышестоящий заголовок. Такие группы, в свою очередь, могут быть объединены в более общие группы и т.д. Все группы и отдельные колонки, в конечном итоге, включаются в одну условную группу, которая называется Верхний уровень. Если Вы только приступаете к созданию нового документа, то этот перечень пуст. Подчеркнем еще раз, что очень важным является слово «иерархический», так как это означает, что можно делать объединяющие заголовки. Напри­мер, на рис.2.50 есть колонка От кого, которая делится на колонки Код и Имя, причем и эти колонки, в свою очередь, могли бы делиться на другие. И таких уровней иерархии может быть сколько угодно, причем, как видите, в каждом конкретном месте отчета число их разное - в общем, все, как в нормальной ведомости. Понятно, что данными заполня­ются только колонки самого нижнего уровня.

С помощью кнопки Добавить элемент можно ввести но­вую колонку текущего уровня иерархии. С помощью кнопки Удалить - убрать ту колонку любого уровня, которую Вы пред­варительно выделили нажатием клавиши мыши. Не надо уда­лять колонки в отчетах, описываемых программно. Если Вы не хотите их видеть, то существуют другие средства (см. ниже).

Важная кнопка Добавить в подуровень создает новый эле­мент внутри выделенного, т. е., если Вы нажмете ее, предвари­тельно выбрав щелчком левой клавиши мыши элемент первого уровня иерархии, то внутри него будет создан подчиненный ему элемент второго уровня. Если выбран элемент второго уровня, то будет создан элемент третьего и т. д.

60

Рис. 2.50 Мастер отчетов, описание шаблонов, закладка Структура заголовка

Знакомые нам кнопки UP и DOWN позволяют менять взаим­ное расположение колонок, но при этом не дают возможности вывести их за пределы подуровня, т. е. схема подчиненности остается неизменной. Вы можете менять порядок колонок у всех отчетов, даже определяемых программно. Как видите, влияние пользователя на ведомости, написанные авторами системы «КОМПАС», не так уж и мало. Нужно только отметить, что в некоторых «программных» отчетах, например, в бухгалтерском журнале-ордере, одной колонке, описанной в шаблоне, на са­мом деле соответствует неопределенное число колонок в итоговой ведомости. Сколько было корреспондирующих счетов — во столько колонок и превратится счет из шаблона журнала-ордера. Так вот, перемещая одну такую колонку шаблона, Вы перемещаете все колонки формируемой печатной формы. То же касается и всех остальных параметров колонки (см. ниже).

Для отчетов, основанных на таблицах или запросах, акти­вируется еще одна кнопка 53 Колонки по всем полям, кото­рая включает на самый верхний уровень иерархии все не включенные до сих пор в отчет поля порождающей таблицы или запроса. Заметим, что если в случае использования SQL-запроса описа­ния элементов и тексты заголовков (см. ниже) приравниваются к псевдониму поля, то при использовании таблицы они сразу принимают осмысленный характер, за счет использования ком­ментариев к полям, заданных в мастере таблиц (см. раздел 2.1.2. Закладка «Поля таблицы» настоящего руководства).

Верхняя группа закладки Структура заголовка разбита в свою очередь еще на три закладки, позволяющие описать колонку, выбранную нажатием левой клавиши мыши в описан­ном выше древовидном перечне. Сразу скажем, что закладка Спец. настройка предназначена для авторов «КОМПАС» и опи­сывать ее мы не будем.

На левой закладке (см. Рис. 2.50), которая называется Определе­ние элемента. Вы можете изменить описание элемента (то самое словосочетание, которое Вы видите в иерархическом перечне), разрисовать заголовок колонки, задать способ его выравнивания: к левой границе колонки, к правой или же по центру. Обращаем Ваше внимание, что спо­соб выравнивания относится именно к заголовку, но никак не к печатающимся данным.

Флажок Вертикальная надпись позволяет расположить текст заголовка вертикально. Если Вы хотите, чтобы заголовок элемента автоматически разбивался на несколько строк, в зависимости от ширины колонки, установите флажок Автоматическая разбивка.

Здесь же можно установить флажок Скрытый элемент, который позволяет убрать колонку из отчета, не удаляя ее из его описания. Так и только так ликвидируются лишние данные в отчетах, источником которых является программа.

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

Вторая - и самая важная - закладка Колонка отчета (см. Рис. 2.51) разбита, в свою очередь, еще на три закладки (не волнуйтесь, больше деления не предвидится), причем закладка Спец. на­стройка носит, как обычно, чисто служебный характер. За­метим, что описать можно только элементы самого нижнего уровня иерархии отчета. Колонки верхнего уровня — это всего лишь заголовки, не более.

61

Рис. 2.51 Мастер отчетов, описание шаблона, настройка Структуры заголовка

Закладка Определение имеет смысл только для отчетов по таблицам и запросам. Прежде всего, здесь указывается источник данных для колонки:

Редактирование закладки Вид имеет смысл и для про­граммно определенных отчетов. Здесь можно определить ши­рину колонки в символах (кстати, если Вы зададите для текстовой колонки маленькую ширину, то, встретив во время формирования отчета не помещающееся в отведенное место значение, программа «разнесет» его на несколько строк), спо­соб выравнивания данных (по центру, влево, вправо и по умолчанию) и шаблоны вывода (см. раздел 2.2.8. Форматирование представления данных настоящего руководства) для нормального, нулевого и отрицательного значения колонки с числовым содержимым. Заме­тим, что по умолчанию все числа выравниваются направо, даты — по центру, а символьные строки — налево. Кроме того, следует знать, что ноль в боксе ширины означает бук­вально «сколько получится», т. е. ширина колонки определя­ется размерностью поля в базе данных или запросе. Прият­ную возможность приукрасить отчет дает нам переключатель Повторяющиеся значения. При желании Вы можете заме­нить повторяющее предыдущую строку значение колонки на пустоту или на символы -//-.

Настройки на закладке Шахматка позволяют размножить текущую колонку или группу колонок в нескольких экземплярах, в зависимости от содержания отчета. Для того, чтобы размножение было возможно, для каждой такой колонки или группы колонок следует указать псевдоним SQL-запроса: выбирается из перечня с помощью соответствующей кнопки. Если запрос расположен не в файле с именем QUERIES.DAT, то имя файла должно быть указано в поле Имя DAT-файла. Количество колонок или групп колонок в отчете будет равняться числу записей, которое будет получено этим запросом. При написании запроса следует учитывать, что автоматической подстановке подлежат лишь те параметры запроса, которые совпадают по имени с параметрами отчета. Если размножаемая колонка сама входит в размножаемую группу, то запрос будет выполняться для каждого экземпляра группы. Для того, чтобы результаты запроса при этом отличались, в запросе можно использовать параметр, совпадающий по имени с ключевым полем источника данных, указанным для вышестоящей размножаемой группы.

Дополнительно при описании шахматки следует заполнить следующие настройки:

Следует учитывать, что если для шаблона отчета не указано условие объединения записей, то размножение колонок приведет к тому, что в каждой строке отчета будет заполняться только один из экземпляров колонки или группы колонок. Указав условие объединения, Вы можете получить шахматку в привычном виде: в каждой строке будут заполнены несколько колонок, для которых среди объединяемых записей источника данных нашлись подходящие данные.

Закладка «Итоги/субитоги»

Редактирование данной закладки (см. Рис. 2.52) также имеет смысл только для отчетов с источником данных таблица или SQL-запрос.

Рис. 2.52 Мастер отчетов, описание шаблона, закладка Итоги / субитоги

Для дальнейшего изложения материала нам, прежде всего, следует ввести понятие группы итогов. Под этим термином понимается некое подмножество записей отчета, объединенное одинаковыми значениями определяющих полей таблицы или запроса. Например, мы печатаем платежную ведомость по всем сотрудникам предприятия. Тогда в группу итогов по от­делу будут входить все строки отчета, в которых поле Отдел заполнено одним и тем же номером. Ярко выраженный случай — это группа итогов по отчету в целом. В нее входят все записи отчета.

Очевидно, что все группы итогов иерархически вложены друг в друга. Поэтому для наглядности итогов очень важно, как это уже говорилось в разделе 2.6.1. Закладка «Общие сведения» настоящего руководства, правильно выбрать порядок сортировки записей отчета. Если Вы хотите подводить итоги начислений по отделу, а внутри каждого отдела по табельным номерам, то на закладке Общие сведения должен быть выбран порядок сортировки «Отдел; табельный номер», иначе в том случае, когда сотрудник работает по совместительству в нескольких отделах, итоги по подразделениям окажутся неправильными. Если же Вам важнее итоги по каждому сотруднику, а уж во вторую очередь Вам хочется знать, сколько он получил в том или ином отделе, нужно выбрать сортировку «табельный номер; от­дел» и по-другому определить вложенность групп итогов.

Следующие важные термины — заголовок и подвал груп­пы. Каждая группа может быть снабжена предваряющими ее строками, в которые, как правило, заносится объединяющая все ее записи текстовая информация. Например, в приведен­ном выше случае группу итогов по отделу очень неплохо бу­дет снабдить заголовком с номером и названием отдела - пусть предваряет все записи о работающих там сотрудниках. С дру­гой стороны, необходим и подвал, именно там должны разме­щаться собственно итоги по начислениям.

В каждом заголовке и подвале может быть сколько угодно полос, иначе говоря, строк. В самом деле, иногда удобно быва­ет разместить номер все того же отдела в верхней строке, а наименование под ней. Точно так же итоги: в верхней полосе подвала группы мы размести разместим сумму начислений, а под ней текстовый комментарий или разделительную строку.

Наконец, каждая полоса может состоять из нескольких эле­ментов. Можно было бы сказать, что один элемент соответ­ствует одной колонке. В некотором роде это верно, вот только содержание элемента, может быть и не связано с конкретной колонкой (например, текст «Итого»), а располагаться он будет на «территории» сразу нескольких колонок отчета. Можно ска­зать и так: элемент - это кусочек итоговой полосы.

Окно закладки Итоги/ субитоги разбито, как это видно на Рис. 2.52, на две части. В левой из них перечень групп итогов, размещаемый по принци­пу: самые общие итоги находятся в самой верхней строчке. Кнопка Новая группа позволяет пополнить перечень, а Уда­лить — избавиться от неудачно продуманных итогов. Кнопки UP и DOWN перемещают выбранную мышью группу итогов в иерархии групп. Наконец, кнопка 53 Итоги по всем колон­кам позволяет оперативно, без долгого редактирования, опи­санного ниже, создать итоговую группу с однополосным под­валом, в который для всех числовых колонок будет включено суммирование, а поясняющий текст будет отсутствовать.

В правой части окна расположены три закладки. Закладку Спец. настройка мы рассматривать не будем, А вот на за­кладке Определение группы можно задать название и вы­ражение, определяющее группу. Если с названием все ясно, то понятие определяющего выражения стоит раскрыть поподроб­нее. Здесь задается способ вычисления того значения, при из­менении которого подводятся итоги, печатается подвал закры­ваемой и заголовок открываемой группы записей. Чаще всего в данном боксе просто набирается имя поля, при изменении которого надо печатать итоги. Для итогов по отделу из приве­денного выше примера это будет имя поля, содержащего номе­ра отдела. Для итогов по всем записям отчета принято ставить 1. Это выражение неизменно для любой записи. Как Вы уже догадались, кнопка LAMPB вызывает Конструктор формул (см. руководство Общие_правила), а кнопка CHECKB – проверку набранного выражения.

Здесь же имеется поле ввода для Условия включения итоговых полос и поле ввода для Условия включения полос заголовков. Если в этих полях записана формула, то она должна возвращать логическое выражение: итоговые полосы или полосы заголовков будут включены в отчет только в том случае, если хотя бы для одной записи, включенной в группу, формула даст значение ИСТИНА.

Еще ниже расположены флажки, которые устанавливают специальные режимы оформления группы в отчете: печатать каждую группу отдельной таблицей, начинать каждую группу с новой страницы, не подводить итоги под группой из одной строки.

На закладке Заголовок/подвал размещены два окна: одно для редактирования заголовка выбранной группы итогов, а вто­рое, соответственно, для подвала. Каждое из окон состоит из перечня полос и кнопок Новая, добавляющей еще одну поло­су и автоматически открывающей при этом окно редактирова­ния (см. ниже), Удалить, значение которой ясно из названия, Пробел, добавляющей пустую полосу, которая служит исключительно для отделения одной группы от другой, и Редактировать, открывающей окно редактирования полосы, выбранной в перечне щелчком левой клавиши мыши. Подробности можно найти в следующем разделе «Окно редактирования полосы заголовка или подвала».

Окно редактирования полосы заголовка или подвала

Окно редактирования полосы подвала группы, как уже отмечалось выше, можно открыть по кнопке Редактировать и состоит из трех закладок (см. Рис. 2.53). По уже сложившейся доброй традиции мы опустим описание закладки Спец. настройка, на которой содержится служебная информация. На странице Определение полосы расположен ряд настроечных флажков. Первая группа флажков используется как для полосы заголовка, так и для итоговой полосы. Эти флажки определяют, следует ли для данный полосы печатать разделительные линии между колонками, рамку таблицы, а также линию сверху и снизу.

Вторая группа флажков используется только для итоговой полосы:

63

Рис. 2.53 Мастер отчетов, настройка отображения итогов подвала группы

Закладка Список элементов полосы состоит из трех частей. В левом нижнем окошке виден перечень уже введенных элементов полосы. В правом нижнем расположен перечень колонок отчета и признаки их связи с элементами итогов. Между этими окнами расположен ряд кнопок, с помощью которых задается расположение элементов полосы под/над конкретны­ми колонками отчета. Кнопка Удалить позволяет убрать лиш­ний элемент. Кнопка Новый - вводит еще один. Впрочем, без нее можно обойтись. Гораздо удобнее вводить новые элементы следующим образом.

Если Вам нужно определить итог по какой-либо числовой колонке, щелкните по ней в правом окне. Сразу станут актив­ными несколько кнопок, среди которых Вы обнаружите s2 Добавить итог по колонке. Нажмите ее, и программа сгенери­рует новый элемент полосы, который будет содержать сумму по группе записей и располагаться ровно под выбранной ко­лонкой, которая тут же будет помечена красной стрелкой.

Для размещения текста под одной колонкой щелкните по кнопке s3 Вставить текстовый элемент. Вас попросят ввести размещаемый текст, и после этого будет создан новый эле­мент, содержащий простое текстовое выражение (см. ниже). Если Вам мало одной колонки для размещения этого элемента (что особенно актуально для полос заголовков, которые зача­стую размещаются посередине листа), то выберите щелчком левой клавиши мыши в левом окне его, а в правом — ту колонку, за счет которой Вы хотите расширить этому элементу поле печати. После чего нажмите кнопку s1 Присоединить. И Вы сразу увидите, как поле печати расширится. Если между уже выбранной и вновь выбираемой колонками есть свободные, то они выберутся авто­матически.

Наконец, для уничтожения связи между элементом и ко­лонкой используйте кнопку s4 Освободить.

Однако описанными выше приемами не ограничиваются возможности редактирования полос заголовка и подвала итого­вых групп. В верхней части окна редактирования расположены три закладки с описаниями свойств выбранного в левом нижнем списке элемента. Описание закладки Спец. настрой­ка мы по традиции опускаем.

На закладке Определение элемента можно не только задать его название, но и определить тип: колонка отчета или выраже­ние. Тип Колонка отчета используется для элементов - итого­вых сумм. Выражение - для элементов заголовков и поясняю­щих итоги текстов. Помимо собственно текста в кавычках в элементах типа Выражение можно использовать значения по­лей источника данных, а также другие общедоступные переменные, которые Вам подскажет вызываемый кнопкой LAMPB Конструктор формул (см. книгу «Общие правила работы»). Отметим, что текст в выраже­ние всегда включается в кавычках, а его конкатенация (соеди­нение) с другими частями формулы обозначается знаком «плюс». Например, «Отдел»+NAZN.OTD. Наконец, нижний пе­реключатель на закладке Определение элемента устанавлива­ется в положение Итоги по всем записям группы или По произвольной записи группы (используется для всех элементов полос заголовка и текстовых элементов подвала).

Вторая закладка Вид на печати позволяет определить формат выбранного элемента. А именно:

Выравнивание — влево, вправо, по центру или по умолча­нию (см. раздел 2.6.3 Закладка «Структура заголовка» настоящего руководства);

Шрифт. Хотя шрифт (и его размер) един для всего отчета и потому выбирается на закладке Общие сведения (см. раздел 2.6.1 настоящего руководства), здесь мы можем выбрать для каждого элемента полосы итогов в отдельности его жирный или курсивный вариант. Таким образом, Вы сможете регулировать вид каждого эле­мента итоговой полосы независимо от всех остальных. Напри­мер, слова «Итого» напечатать жирным шрифтом, а итоговую сумму курсивом;

Справа можно задать шаблоны для обычного, нулевого и отрицательного значе­ний итоговых элементов (см. раздел 2.2.8. Форматирование пред­ставления данных настоящего руководства).

Флажок Округлять включает режим округления числового значения в итоговом элементе. Уровень округления задается в виде целого числа. Положительные числа указывают число десятичных знаков после запятой в округленном значении, отрицательные числа позволяют округлять значения до десятков, сотен и т.д. При нулевом значении округление производится до целых.

Если элемент итоговой полосы отчета охватывает более одной колонки и для него указано выравнивание по центру, выравнивание выполняется в рамках всего диапазона колонок.

В хэш-теге внутри названия элемента итоговой полосы отчета можно использовать новый символ W (обязательно заглавная буква), который задает перенос по словам в этом элементе при выгрузке отчета в Excel. По умолчанию для элементов итоговых и заголовочных полос отчета перенос по словам при выгрузке отчета в Excel по-прежнему отключен, в отличие от строк основной части отчета. Для элементов, которые охватывают более одной колонки, перенос по словам можно использовать только в сочетании с выравниванием по центру. При других выравниваниях перенос по словам выполняется в рамках только одной колонки (первой или последней, в зависимости от выравнивания).

Окно редактирования параметров построения диаграммы

На закладке Диаграмма можно настроить параметры построения отчета в виде диаграммы, которые будут предлагаться по умолчанию каждый раз при нажатии на кнопку Диаграмма в форме, определяющей представление результатов построения отчета (рис.2.54.).

Диаграмма Ганта формируется не с ближайшего прошедшего понедельника, а с начала самой ранней работы.

Рис.2.54. Мастер отчетов, описание шаблона, настройка параметров диаграммы

Форма Параметры диаграммы имеет две закладки: Оси координат и Заголовки диаграммы.

Прежде всего нужно выбрать тип диаграммы с помощью переключателя, установив нужный, Обычная или Ганта.

Далее, на закладке Оси координат определяются:

Порядок добавления серий:

Для удаления серии необходимо выделить ее щелчком левой клавиши мыши и нажать кнопку DELB.

Если сравнение предполагается производить более чем по двум параметрам, вышеописанная процедура повторяется необходимое количество раз. Если количество серий равно единице, то можно ограничится выбором наименования параметра для колонки по оси Y из раскрывающегося списка (добавлять его в список серий не обязательно, параметр будет добавлен автоматически).

Нажав кнопку CIGARB, можно очистить весь список серий графика.

Отображение серий в графике зависит также от того, проставлены ли флажки рядом с наименованием каждой серии. Если флажок не проставлен, колонка в графике отображена не будет.

На закладке Заголовки диаграмм можно определить заголовок диаграммы, надписи в нижней части формы, а также подписи параметров справа и слева.

Использование дизайнера Free Report для построения и редактирования отчетов

Отдельные отчеты в некоторых модулях ERP-системы «КОМПАС» созданы с использованием возможностей генератора отчетов Free Report. Для того, чтобы иметь возможность редактировать эти отчеты, к Мастеру отчетов ERP-системы «КОМПАС» подключен дизайнер отчетов Free Report.

Для удобства подключения к наборам данных и более полного использования возможностей системы КОМПАС, к дизайнеру отчетов подключены дополнительные активные элементы.

Общий порядок работы с дизайнером отчетов Free Report описан авторами этой программы.

Дополнительные возможности, разработанные в рамках использования Мастера отчетов ERP-системы «КОМПАС», включают в себя:

Наборы данных отчета формируются на основе запросов. Поэтому необходимо, чтобы к моменту настройки отчета такой запрос был создан в Мастере запросов.

Форма для назначения набора (наборов) данных для формирования отчета вызывается нажатием на кнопку TBLMAN на панели инструментов.

В форме Наборы данных отчета представлен список используемых при формировании отчета наборов данных.

В форме расположены функциональные кнопки:

ADDRECB – добавить набор данных;

DELRECB – удалить набор данных;

LAMPB – редактировать набор данных.

При нажатии кнопки ADDRECB или кнопки DELRECB на экран выводится форма Свойства запроса, в которой можно выбрать или изменить:

Кнопка LAMPB в левой верхней части формы открывает Мастер запросов, где можно произвести выбор или отредактировать (создать новый) запрос.

Форма для работы с параметрами отчета вызывается нажатием кнопки REPAREB на панели инструментов.

На экран выводится форма Параметры отчета, в которой перечислены:

Добавление и редактирование параметров отчета производится в форме Редактор значений переменных (в терминологии Free Report, «Параметры отчета» являются категорией переменных, а сами параметры – переменными), которая вызывается нажатием кнопки LAMPB.

В левой части формы расположен список, в котором отображаются переменные в зависимости от выбранной из раскрывающегося списка категории. В правой части – поля выбранного из раскрывающегося списка набора данных.

Создать новую категорию или переменную можно, нажав на кнопку Переменные…

На экран выводится список категорий и переменных. Добавление новых строк в этот список, редактирование или удаление уже существующих производится с клавиатуры.

Обратите внимание! Наименования категорий вводятся сразу с начала строки, перед наименованием переменной ставится пробел.

В форме Редактор значений переменных можно соотнести параметр (переменную) и поле набора данных. Для этого в левом раскрывающемся списке выбирается категория переменных, а в правом - набор данных. Затем в левой части щелчком левой клавиши мыши отмечается параметр (цвет фона строки при этом изменяется), в правой части – поле набора данных (цвет фона строки также будет изменен). Таким образом устанавливается соответствие между параметром и значением в поле набора данных.

Обратите внимание! Если параметры в запросе и отчете совпадают, то значение параметра запроса устанавливается равным значению параметра отчета.

При формировании отчета, в том случае, если значение параметра не найдено и установлен флажок Всегда запрашивать значение, пользователю будет предложено ввести это значение в специальной форме.

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

Мастер бизнес - процедур

Данный мастер включен в версии с высокими настроечными возможностями.

Мастер бизнес-процедур, вход в который осуществляется вызовом одноименного пунк­та меню Сервис, предназначен для написания индивидуальных алгоритмов обработки и визуализации данных. С его помощью можно, например, создать пункт меню (см. описание раздела 1.6 Администратор меню настоящего руководства), в котором табличная форма будет вызываться под фильтром, можно организовать в панели инструментов кнопку, с помощью которой будет производиться массовое удаление за­писей (см. раздел 2.1.5. Закладка «Спец. Настройка» настоящего руководства), можно написать нестандартную процедуру сохранения данных в базе по окончании редактирования экранной формы (см. раздел 2.3.8. Изменение свойств экранной формы настоящего руководства)… Короче говоря, индивидуальные бизнес - процедуры, написанные на встроенном в ERP-систему «КОМПАС» языке класса Basic, приходят на помощь в тех случаях, когда все остальные средства управления данными не справляются с поставленной в процессе внедрения системы задачей. Наличие мастера бизнес-процедур делает ERP-систему «КОМПАС» абсолютно открытым пакетом.

Все подготовленные бизнес-процедуры хранятся в файле с расширением dat. В стандартной поставке это файл bp.dat.

После входа в мастер на экране разворачивается окно с перечнем имеющихся бизнес-процедур (см. Рис. 2.55), который можно просматривать целиком, а можно выбрать только одну группу из раскрывающегося списка в верхней части окна.

Рис.2.55 Мастер бизнес-процедур

В правой части окна расположены следующие кнопки:

Основное окно редактирования процедуры выглядит пре­дельно просто. (рис.2.56.).

Рис.2.56 Мастер бизнес-процедур, окно редактирования

В верхней части окна размещаются поля для ввода уникального псевдонима процедуры, ее текстового описа­ния и выбора группы, к которой она относится, из выпадаю­щего списка. Кнопка FINDB на панели инструментов окна с текстом бизнес-процедуры позволяет осуществить поиск по тексту. Если установить флажок Использовать ENTER для поиска следующего вхождения текста, то найденный в тексте бизнес-процедуры фрагмент остается подсвеченным, но фокус возвращается в форму поиска. В центральной части расположено поле для ввода текста процедуры, реализуемого на встроенном языке Basic пакета «КОМПАС». В нижней части имеется набор стандартных управляющих кнопок, среди которых выделим кнопку TFTEST Тест. С ее помощью осуществляется синтаксиче­ская проверка текста процедуры и ее контрольный запуск.

Краткое описание языка бизнес-процедур ERP-системы «КОМПАС», правила его использования, а также небольшой пример приведены в Приложении 1 к Руководству системного администратора – Админ_прил1.

Более подробная информация о работе с Матером БП приведена далее в разделах 2.7.1 Назначение мастера бизнес-процедур по 2.7.5 Классы объектов настоящего руководства.

Назначение мастера бизнес-процедур

Мастер бизнес-процедур предназначен для написания пользователем небольших подпрограмм, которые вызываются в различные моменты работы пакета и призваны дополнить функциональные возможности пакета с учетом специфики конкретного внедрения. В отличие от транслятора, который только вычисляет значение по формуле и ничего не меняет в самих данных, подпрограммы, написанные с использованием мастера бизнес-процедур могут изменять данные и поэтому этой возможностью следует пользоваться осторожно, чтобы не нарушить целостность данных.

В текущей версии программы вызов внутренних подпрограмм, оформленных с помощью мастера бизнес-процедур, предусмотрен в следующих случаях:

Как добавить новую бизнес-процедуру

Для того, чтобы добавить новую бизнес-процедуру выберите пункт Мастер бизнес-процедур в меню Сервис. На экран будет выведен список имеющихся бизнес-процедур. Для добавления новой бизнес-процедуры в список используется кнопка Новая... Другим вариантом является найти в списке процедуру, которую можно использовать в качестве образца, и нажать кнопку Новая из текущей...

В обоих случаях на экран выводится окно редактирования бизнес-процедуры. Для новой процедуры необходимо указать уникальный псевдоним и дать краткое словесное описание. Можно отнести процедуру к одной из существующих групп или включить в новую группу. Основную часть окна редактирования бизнес-процедуры занимает собственно текст процедуры. Нажав на кнопку ОК, Вы сохраните новую процедуру в списке и вернетесь к списку процедур. Сохранить процедуру без закрытия окна редактирования можно с помощью кнопки Сохранить. При нажатии на кнопку Отмена все изменения, внесенные с момента последнего сохранения, будут отменены. Кнопка Тест позволяет запустить процедуру на выполнение.

Редактирование бизнес-процедуры

В верхней части формы редактирования размещены поля для ввода уникального псевдонима бизнес-процедуры, ее текстового описания и выбора группы, к которой относится бизнес-процедура из раскрывающегося списка. Кнопка filter на панели инструментов окна с текстом бизнес-процедуры позволяет осуществить поиск по ее тексту. Если установить флажок Использовать ENTER для поиска следующего вхождения текста, то найденный в тексте бизнес-процедуры фрагмент остается подсвеченным, но фокус возвращается в форму поиска.

Язык бизнес-процедур пакета КОМПАС похож на широко распространенный язык Basic. Каждый оператор пишется на отдельной строке, то есть в качестве разделителей операторов используется перевод строки.

Общее описание языка бизнес-процедур:

Выражения см. раздел 2.7.3.1

Переменные см. раздел 2.7.3.2

Встроенные переменные см. раздел 2.7.3.3

Конструкции см. раздел 2.7.3.4

Классы объектов см. раздел 2.7.5

Операторы и функции

Ввода/Вывода см. раздел 2.7.4.2

Математические см. раздел 2.7.4.3

Строковые см. раздел 2.7.4.4

Для работы с датами см. раздел 2.7.4.5

Для работы с объектами см. раздел 2.7.4.6

Выражения

В выражении допускается использовать:

-        вычитание:        a-b

+        сложение:        a+b

*        умножение:        a*b

/        деление:        a/b

%        остаток от деления:        a%b

^        возведение в степень:        a^b

<        меньше:        a<b

<=        меньше либо равно:        a<=b

<>        не равно:        a<>b

>=        больше либо равно:        a>=b

>        больше:        a<b

=        равно:        a=b

MOD        остаток от деления:        a MOD b

NOT        логическое НЕ:        NOT a

OR        логическое ИЛИ:        a OR b

XOR        исключающее ИЛИ:        a XOR b

AND        логическое И:        a AND b

Все бинарные операции необходимо использовать с переменными одного типа.

Приоритеты операций:

1        NOT

2        ^

3        *, /, %, MOD

4        +, -

5        <, <=, <>, >=, >, =

6        AND

7        OR, XOR

Переменные

Переменная - это единица данных определенного типа. Каждая переменная имеет ИМЯ и ТИП. Имя переменной необходимо, чтобы отличать переменные друг от друга. Имя может состоять из любых символов латинского и русского алфавитов, @ и _. Имя переменной должно начинаться только с символа, _ или @.

Типы переменных:

Переменные могут быть существующими уже при запуске процедуры либо переменные могут создаваться операторами самой процедуры.

Обратите внимание! Указание объекта “m” позволяет отличить переменную от поля в процедурах-событиях на табличную форму или элемент МОМ. Если префикс “m.” есть, то это переменная, если нет - то это поле.

Номенклатура переменных, существующих при вызове, зависит от того, из какого контекста вызвана бизнес-процедура. В большинстве случаев существующими являются переменные, совпадающие с именами полей той табличной формы, из которой вызвана бизнес-процедура. При этом правила использования свойств и методов этой табличной формы аналогичны случаю, когда текущий объект Табличная форма назначается специально с помощью функции Use.

При вызове процедуры для следующих событий в экранной форме:

в виде переменных дополнительно становятся доступными элементы массива общих мест.

Например:

_FIELDS@TEST=10
_FIELDS@TEST=_FIELDS@TEST+1

Особые правила действуют для элементов массива общих мест, имеющих тип "дата". Обычно таким элементам надо присваивать другое значение типа "дата". Исключение составляет случай, когда необходимо очистить дату. В этом случае следует присвоить элементу любое пустое значение: ноль или пустую строку, например:

_FIELDS@DATE_N=""

Следует учитывать, что для того, чтобы изменения в элементе массива общих мест отразились в экранной форме, следует использовать не прямое присвоение элементу массива, а специальный метод SetValue, например:

_FIELDS@TEST.SetValue(10)
_FIELDS@TEST.SetValue(_FIELDS@TEST+1)

Следует также учитывать, что в экранной форме могут быть отображены вычисляемые колонки табличной формы, значения в которых могут изменяться по мере работы бизнес процедуры. Для того, чтобы эти изменения также отразились в экранной форме, необходимо предусмотреть в процедуре явное изменение значений соответствующих элементов массива общих мест с помощью метода SetValue.

Если процедура назначена в качестве реакции на события в табличной форме, которая может использоваться как в экранной форме, так и за пределами экранной формы, в тексте процедуры важно знать, являются ли доступными элементы массива общий мест. Для этого можно использовать функцию FindELMOM. В качестве параметра в функцию передается текст, являющийся именем элемента массива общих мест. Если элемент доступен функция возвращает значение истина. Иначе функция возвращает значение ложь. Элементы массива общих мест, являющиеся таблицами, считаются доступными только в том случае, если соответствующая таблица имеется в экранной форме и уже была инициализирована.

Следует также учитывать, что в большинстве случаев, когда табличная форма открывается в качестве подчиненной к другой табличной форме, в процедурах доступны элементы массива общих мест, представляющие родительскую табличную форму. То есть в этом случае можно использовать те же процедуры, которые написаны для случая включения табличной формы в экранную форму.

При вставке значений переменных, обрамленных символом % (процент) в тексте SQL-запроса, для чисел с дробной частью в качестве десятичного разделителя используется точка независимо от локализации.

Встроенные переменные

Помимо пользовательских переменных в системе есть встроенные переменные, предоставляющие информацию из системы.

ТЕКПОЛЕ текущая ячейка / поле
КОД_ПОЛЬЗОВАТЕЛЯ логин текущего пользователя

Конструкции

Конструкция - это последовательность операторов, управляющих порядком выполнения строк программы. У всех конструкций характерной чертой является наличие проверяемого выражения. В зависимости от его значения, выполняются те или иные действия:

...Операторы...

NEXT [varname]

Операторы, выполняются в цикле пока переменная varname не станет равна числу1 (TO), при этом переменная varname за каждый проход увеличивается на число2 (STEP).

...Операторы...

WEND

Операторы цикла будут выполняться если и пока выражение будет справедливо.

...Операторы...

LOOP WHILE выражение

Операторы цикла будут выполняться до тех пока выражение будет справедливо.

...Операторы...

LOOP UNTIL выражение

Операторы цикла будут выполняться до тех пока выражение будет не справедливо.

...Операторы...

LOOP

Операторы цикла будут выполняться если и пока выражение будет справедливо.

...Операторы...

LOOP

Операторы цикла будут выполняться если и пока выражение будет не справедливо.

THEN

Операторы находящиеся здесь будут выполняться если выражение справедливо.

[ ELSE ]

Операторы находящиеся здесь будут выполняться если выражение не справедливо.

END IF

CASE выражение1

Операторы, находящиеся здесь, выполняются, если выражение = выражение1

[CASE выражение2]

Если требуется более сложная проверка, то следует использовать слово IS, которое заменяет собой выражение, например: case IS > 10

[CASE выражениеN]

Операторы, находящиеся здесь, выполняются, если выражение = выражениеN

END SELECT

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

Операторы и функции

Стандартные функции

Встроенные функции могут использоваться в качестве команд и/или в качестве функций, возвращающих значение (в этом случае данная функция может встречаться только как часть выражения).

Параметры функции заключаются в скобки, либо идут сразу после имени функции. В последнем случае считается, что параметрами функции является всё вплоть до конца строки. Параметры отделяются друг от друга запятой или точкой с запятой. При этом в зависимости от конкретной функции данные разделители могут иметь разное назначение.

Если функция не имеет параметров, то после ее имени можно (не обязательно) указывать пару скобок ().

Имена функций нельзя использовать в качестве имен переменных.

В процедуре доступны также все функции и переменные, используемые конструкторе формул, а также дополнительные функции следующих типов:

Функции ввода/вывода

AskChoice заголовок, текст, варианты

выбор вариантов (см. также Список).

Параметры:

1. Текст: заголовок окна выбора.

2. Текст: поясняющий текст, который располагается в окне выбора над перечнем вариантов.

3. Текст: определяет перечень вариантов, разделенных переводами строки или возвратами каретки. Для вставки в перечень вариантов символа перевода каретки можно использовать функцию char

Возвращаемое значение: номер варианта, который выбрал оператор, начиная с нуля. Если оператор нажал кнопку Отмена, возвращается -1. Например:

Variants = "Вариант 1"+char(13)+"Вариант 2"

a = AskChoice("Выбор","Выберите вариант",Variants)

В этом случае будет выведено следующее окно:

Без имени-4

Примечание: в некоторых случаях могут не отображаться строчные кириллические символы (например, лидирующий строчный символ "я"). Для разрешения этой ситуации рекомендуется использовать капитализацию первой буквы (функция proper)

BatchMove получатель, набор данных [, флаг]

копирует данные в таблицу.

Параметры:

1. Текст: псевдоним таблицы, являющейся получателем данных.

2. Набор данных, являющийся источником данных.

3. Число. Может принимать значения:

1 - если таблица уже существует, она будет удалена и создана заново;

Иначе - таблица создается только, если она не существует.

Третий параметр можно не указывать, значение по умолчанию 1.

Пример:

TR = SQL("SELECT * FROM MOVIES")

BatchMove("MY_TEMP_MOVIES", TR)

TableExist таблица - проверка существования таблицы с псевдонимом, заданным текстовым параметром.

Возвращаемое значение: логическое. Например:

A = TableExists("MY_SUPER_TABLE")

IF A THEN

PRINT "Таблица уже существует!"

ELSE

T = CreateTable("MY_SUPER_TABLE").

END IF

ExecCmd программа, параметры, режим

вызывает программу операционной системы.

Параметры:

1. Текст: имя программы. Если имя задано с полным путем, то папка, в которой расположена программа, будет текущей при вызове программы.

2. Текст: передается вызываемой программе в качестве параметра (параметров) командной строки.

3. Текст: определяет режим, в котором вызывается программа. Может принимать значения:

HIDE - программа вызывается в скрытом режиме;

SHOWMAX - программа вызывается в максимизированном виде;

SHOWMIN - программа вызывается в минимизированном виде;

Иначе - программа вызывается в нормальном виде.

Все параметры являются обязательными. Вместо выполнимой программы может быть вызван любой файл, для которого в операционной системе предусмотрена обработка, например, документ или картинка.

ExecQuery запрос выполняет запрос
FormatImpExp набор данных, флаг1, конфигурация, флаг2, заголовок, признак, имя файла

используется для экспорта и импорта произвольных данных в следующих форматах:

1) *.dbf - база данных FoxPro;

2) *.txt - текстовый файл без разделителей;

3) *.txt - текстовый файл с разделителями (табуляцией).

Параметры:

1 Набор данных, из которого осуществляется экспорт или в который осуществляется импорт. В качестве набора данных в данном случае указывается табличная форма.

2. Логический: следует ли выполнять импорт (истина) или экспорт (ложь).

3. Текст: имя файла конфигурации, в котором описан формат данных. Если значение параметра не указано или пусто, будет открыт стандартный диалог выбора файла конфигурации.

4. Логический: надо ли показывать протокол после завершения операции. Допустимые значения: "истина" - показывать протокол, "ложь" - не показывать протокол.

5. Заголовок окна просмотра протокола.

6. Признак, показывающий действия в случае, если при экспорте файл уже существует. Может принимать следующие значения:

0 - переспросить у оператора (умолчание);

1 - перезаписать файл (таблицу) новыми данными;

2 - дописать в конец файла (таблицы).

7. Имя файла – если указано, то задает имя файла, из которого производится импорт или в который производится экспорт данных. В этом случае имя файла, указанное в первой строке файла конфигурации, не учитывается.

Возвращаемое значение: числовое, признак успешного (0) или неуспешного (минус 1) завершения операции. Например:

MyTable = ServerTempTable("MY_SUPER_TABLE")

IniFile = "C:\KompSQL\SKLAD\IMPORT\MyTable.ini"

i = FormatImpExp(MyTable,true,IniFile,false,"Импорт данных")

IF i = 0 THEN

MyTable.Refresh

ELSE

PRINT "Не удалось выполнить импорт!"

RETURN

END IF

Input строка, переменная ввод значения: переменной присваивается тип "строка
InputVal значение

ввод значения.

Позволяет выполнить диалог по вводу значения в формате FInpAll. Параметры: заголовок, текст на метке, собственно значение (на входе - умолчание и определяет тип значения, на выходе - результат ввода), текст на разрезе группы, текст на кнопке "ОК", название параметра (метка). Обязательными являются первые три параметра. Функция возвращает true, если была нажата кнопка ОК, и false, если была нажата кнопка "Отмена".

При использовании функции для поля (полей) ввода предусмотрен выбор и проверка значения, если в тексте меток используется фрагмент "ггггмм".

Если 6-й параметр имеет значение true, вводимый текст отображается в виде звездочек.

Mail получатель, приложение, тема, содержание посылает сообщение по электронной почте. Все параметры - текстовые. Данная функция может работать только в некоторых задачах пакета КОМПАС
MessageBox заголовок, сообщение, режим вывода сообжения

выдает сообщение. При использовании в качестве функции возвращает логическое значение, показывающее, нажал ли оператор кнопку "Да" ("Yes"). Предусмотрена возможность управления переводом строки с помощью символа '\n'

В качестве третьего параметра можно задать специальные режимы вывода сообщения:

  H - скрыть WaitBox на время сообщения;

  I - использовать иконку MB_ICONINFORMATION;

  Q - использовать иконку MB_ICONINQUESTION;

  S - использовать иконку MB_ICONINSTOP;

  W - использовать иконку MB_ICONWARNING;

  2 - по умолчанию на вторую кнопку.

Режимы Q и 2 действуют только при использвании функции в выражении, а режим S - только при использовании функции в виде оператора.

Print список

выводит список значений, разделенных символами:

, - значение выводится на следующей строке;

; - значение выводится на сразу за предыдущим

Spawn программа, параметры, признак

вызывает внешнюю программу.

Параметры:

1. Текст: имя программы. Если имя задано с полным путем, то папка, в которой расположена программа, будет текущей при вызове программы.

2. Текст: передается вызываемой программе в качестве параметра (параметров) командной строки.

3. Текст: показывает, нужно ли ждать окончания работы внешней программы. Может принимать значения:

WAIT - нужно ждать завершения;

NOWAIT - продолжать выполнение процедуры, не дожидаясь завершения внешней программы.

Возвращаемое значение: 0 в случае успешного завершения внешней программы. В противном случае ненулевое число, возвращаемое внешней программой. Например:

i=Spawn("C:\BHT\tu3.exe", "C:\BHT\referenc.dat", "WAIT")

IF i<>0 THEN

PRINT i

END IF

------

Необязательные параметры

Если при вызове функции Spawn значение 5-го параметра равно "PATH", поиск подпрограммы выполняется не только в текущей папке, но также и учетом переменной окружения PATH.

Необязательный 6-й параметр. Если код возврата равен -1, на выходе 6-й параметр будет содержать название возникшей ошибки. Обращаем внимание, что код возврата -1 получается только в том случае, если не удалось запустить программу. Если подпрограмму запустить удалось, то код возврата может быть 0 или больше нуля. Значение больше 0 устанавливается самой вызванной подпрограммой.

WaitBox [строка], строка

выводит окно ожидания, если строка не задана - скрывает.

Если второй параметр задан, окно мониторинга имеет кнопку "Отмена", при нажатии на которую выдается сообщение, текст которого задан вторым параметром. Если оператор подтвердил нажатие кнопки, устанавливается признак того, что кнопка нажата, (можно проверить с помощью функции WaitClicked). Если второй параметр пуст, подтверждение не запрашивается, а сразу устанавливается признак того, что кнопка была нажата. Обратите внимание: для того, чтобы нажатие на кнопку обработалось, необходимо время от времени обновлять вторую строку окна мониторинга с помощью функции WaitBox2 (WaitBox2 "строка" - позволяет изменить вторую строчку окна ожидания).

WaitBox2 строка позволяет изменить вторую строчку окна ожидания

Математические функции (возвращают число)

abs(число) модуль (абсолютное значение) числа.
cos(число) косинус
DecRound(число,дес) округление до ближайшего числа с числом десятичных знаков, заданных вторым параметром (аналогично функции ОКРУГ в трансляторе).
fix(число) округление вниз (отбрасывает дробную часть числа)
int(число) округление к ближайшему целому
Length(массив) размер массива
Length(строка) длина строки
Pos(строка1,строка2) позиция строки2 в строке1 (ищет подстроку в строке).
rnd(число) генерирует случайное целое число в диапазоне от нуля до параметра функции
round(число) округление вверх (к ближайшему целому, которое не меньше заданного)
sgn(число) знак (возвращает -1, если число отрицательное, 0, если число равно 0, 1, если число положительное)
sin(число) синус
StrToInt(строка) привести строку к числу

Строковые функции (возвращают текст)

Char(число) строка из одного символа по его коду
CreateGuid получение 36-символьного уникального идентификатора
Date2SQL(дата,флаг)

преобразует аргумент типа "дата" в строку, пригодную для использования в запросах. Флаг (логический) показывает, нужно ли заключать результат в кавычки. Например:

D = Date2SQL(Now, true)

CheckDateOuery = SQL("SELECT * FROM MY_TABLE WHERE DATA <= %D%")

FormatFloat ("Формат", Число) преобразует число в строку в соответствии со спецификатором формата, содержащимся в параметре Формат. Описание спецификаторов формата приведено в уточнении
Left(строка,число) заданное числом кол-во символов слева
Lower(строка) привести к нижнему регистру
Ltrim(строка) удалить пробелы слева
PARSEDELIM (строка1, строка2, число)

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

Параметры:

1. Строка: исходная строка, фрагмент из которой требуется.
2. Строка: разделитель. Должна состоять из одного символа.
3. Число: порядковый номер фрагмента. Если меньше 1 или больше общего числа фрагментов, результатом вызова функции будет пустая строка.

Результат: строка, содержащая текст фрагмента.

RandomString Строка "случайных" символов указанной длины, обязательно включающая одну цифру и один специальный символ. Может использоваться для получения пароля по умолчанию
Right(строка,число) заданное числом кол-во символов справа
Rtrim(строка) удалить пробелы справа
Str(число) привести число к строке
StrEncode кодирование строки. Параметр: кодируемая строк
StrDecode декодирование строки. Параметр: декодируемая строка
String2SQL

Приводит строку к виду, пригодному для использования в SQL-предложениях, в частности, одинарные кавычке в строке удваиваются.

Параметры:

1. текст:  исходная строка;
2. логическое:  следует ли заключать строку во внешние кавычки
Substring(строка,число1,число2) часть строки с позиции число1, длиной число2
Trim(строка) удалить пробелы справа и слева
Upper(строка)

привести к верхнему регистру

Функции для работы с датами

BP_period создает и возвращает объект класса Период времени.
DateFormat (строка,дата) изображение даты, форматированное строкой
DateSerial (день, месяц, год) сборная дата
DaysInPeriod (дата1,дата2, номер)

- позволяет получить число дней в указанном диапазоне времени.

Тип значения: число.

Параметры:

1. Дата начала периода.

2. Дата окончания периода.

3. Режим подсчета дней. Может принимать следующие значения:

5 - по 5-дневной рабочей неделе;

6 - по 6-дневной рабочей неделе;

7 - в календарных днях за вычетом праздников;

0 - просто в календарных днях.

Now текущая дата/время
PeriodPart (дата1, дата2, номер)

- получение расстояния между двумя датами в годах, месяцах и днях. Функция возвращает числовое значение, смысл которого определяется третьим параметром:

1-лет;

2-месяцев;

3-дней.

Если даты отстоят друг от друга на целое число лет (например, 15.06.2003 и 15.06.2005), в результате получится целое число лет (в данном примере - 2), 0 месяцев и 0 дней. Если даты отстоят на целое число месяцев (например, 15.06.2003 и 15.10.2005), в результате получится некоторое число лет (в данном примере - 2), целое число месяцев (в данном примере - 4) и 0 дней. Следует особо обратить внимание, что функция расшифровывает расстояние между датами, а не период времени, включающий обе даты. Если нужно получить расшифровку для периода времени, включающего обе даты, следует ко второй дате добавить единицу.

TstRgm (параметр1, параметр2, параметр3)

проверяет введенный месяц в формате ггггмм.

Параметры:

1) строка - введенный месяц (обязательный параметр);

2) логическое - должно ли значение обязательно быть заполненным. По умолчанию - да;

3) логическое - выводить ли сообщение об ошибке. По умолчанию: да.

Возвращаемое значение: логическое - показывает, является ли значение допустимым.

В  язык формул и форм добавлена функция КОНЕЦ_ПЕРИОДА (PeriodEnd), которая позв

Функции для работы с объектами

AskGod, параметры

-организует диалог по выбору года.

Параметры:

1) строка - год, с которого нужно начинать выбор (параметр не обязателен). Если параметр не указан или пуст, выбор начинается с того года, который соответствует текущему расчетному месяцу.

2) "Набор данных" - используется для позиционирования формы по отношению к полю ввода (параметр не обязателен).

Возвращаемое значение: строка - содержит номер года, если выбор сделан, или пустую строку, если выбор не сделан.

AskRgm, параметры

- организует диалог по выбору месяца в формате ггггмм.

Параметры:

1) строка - месяц, с которого нужно начинать выбор (параметр не обязателен). Если параметр не указан или пуст, выбор начинается с текущего расчетного месяца.

2) "Набор данных" - используется для позиционирования формы по отношению к полю ввода (параметр не обязателен).

Возвращаемое значение: строка - содержит месяц, если выбор сделан, или пустую строку, если выбор не сделан

BP_Config, параметры

Функция для создания объектов класса "Конфигурационный параметр"

Параметры:

  1) строка - имя конфигурационного параметра - не должно быть пустым;

  2) целый - тип конфигурационного параметра (0-целый, 1-вещественный, 2-строка, 3-дата, 4-логический). По умолчанию: 0;

  3) логическое - признак оператора. По умолчанию: false - конфигурационный параметр имеет одинаковое значение для всех операторов;

  4) значение по умолчанию - значение этого параметра преобразуется к типу, указанному вторым параметрам. Если не задано, то значение конфигурационного         параметра по умолчанию будет пустым.

Особые правила действуют, когда имя совпадает с именем конфигурационного параметра, существующего в системе. В этом случае тип, признак оператора и значение по умолчанию должны быть такими, какие заданы для конфигурационного параметра в системе. Если при создании объекта задан другой тип, признак оператора или значение по умолчанию, фиксируется ошибка. Если при создании объекта тип, признак оператора или значение по умолчанию не задано, будут использованы значения, заданные для конфигурационного параметра в системе.

Call "имя процедуры", параметры вызов другой бизнес-процедуры. В вызываемой процедуре переданные параметры доступны через массив @Arg; доступна переменная @ArgCount, содержащая количество переданных параметров
ClearIns снимает отметки со всех строк
Connect, параметр позволяет выполнить переключение на другую базу данных (псевдоним BDE задается параметром)
CreateTable псевдоним [, признак1 [, признак2]]

создает таблицу.

Параметры:

1. Текст: псевдоним таблицы.

2. Логический: нужно ли пересоздавать таблицу в случае, если она уже существует. Значение по умолчанию "истина".

3. Логический: нужно ли создавать индексы. Значение по умолчанию "истина".

Возвращаемое значение: объект класса Набор данных. Например:

T = CreateTable("MY_SUPER_TABLE")

EnumerateID (кол-во параметров – 5) позволяет заполнить в заданном наборе данных (1-й параметр) заданное поле (2-й параметр) монотонно возрастающими значениями с заданным шагом (5-й параметр). При этом значение, с которого начнется заполнение определяется как max+1 для заданного поля (4-й параметр) заданной таблицы (3-й параметр).
Evaluate создает и возвращает объект класса Транслятор формул
ExcludePathFromFileName "имя папки", "полное имя файла" Если файл расположен в указанной папке, функция возвращает имя файла без полного пути. Иначе функция возвращает без изменения имя файла, которое задано вторым параметром.

FieldByMesto (2 параметра)

 

имя поля по элементу МОМ

Параметры (все параметры обязательны):

1) строка - псевдоним таблицы;

2) строка - элемент МОМ.

Возвращает: имя поля, соответствующее указанному элементу МОМ, или пустую строку, если такого поля в таблице нет.

FileDelete “файл” удаляет указанный файл
FileExists “файл” проверяет, существует ли указанный файл
FillBPList “параметр 1” “параметр 2” заполняет список именами бизнес-процедур
FindELMOM, параметр

ищет элемент в списке доступных переменных. В качестве параметра в функцию передается текст, являющийся именем элемента массива общих мест. Если элемент доступен, функция возвращает значение истина. Иначе функция возвращает значение ложь. Элементы массива общих мест, являющиеся таблицами, считаются доступными только в том случае, если соответствующая таблица имеется в экранной форме, и уже была инициализирована.

Если в функцию в качестве параметра передать строку IsScrFormReadOnly, функция возвращает true, если экранная форма находится в состоянии только чтение. Иначе функция возвращает значение false.

GenUniqFileName "путь к файлу" по заданному в параметре пути возвращает имя файла с уникальным суффиксом
GetAbsenceList (5 параметров)

Используется в модуле "Управление персоналом". Предназначена для получения списка видов неявок, исключаемых из стажа. Параметры:

1. Строка: табельный номер;

2. Целое: код трудовых отношений;

3. Дата: дата начала рабочего периода;

4. Дата: дата окончания рабочего периода;

5. Целое: код условий труда (необязательный).

Возвращаемое значение - строка со списком видов неявок через запятую.

GetComputerName возвращает имя компьютера, на котором запущен модуль
GetDir "путь к исходной папке", "текст сообщения на форме выбора" позволяет вывести диалог по выбору папки. Оба параметра необязательны. Функция возвращает полный путь к выбранной папке или пустую строку, если оператор нажал кнопку "Отмена"
GetELMOM возвращение значения элемента МОМ по его имени
GetOtpOstAndFill (6 параметров)

Используется в модулях кадрово-зарплатного блока для расчета остатка отпуска и заполнения таблицы периодов.

Параметры:

1. Строка: табельный номер;

2. Целый: вид отпуска;

3. Дата: дата расчета остатка;

4. Целый: код трудовых отношений;

5. Целый: признак расчета;

6. Набор данных: таблица PERIOD_PARTS (необязательный).

Возвращаемое значение: вещественный - остаток отпуска.

GetUserFilter "префикс таблицы, используемый в SQL-выражении" возможность получить условие отбора в табличной форме для запроса, соответствующее фильтру установленному пользователем.
Если фильтр не установлен, функция возвращает пустую строку. Если оператор задал условие, которое не может быть преобразовано к SQL-выражению, функция возвращает строку, состоящую из одного слова "нет"
InsertToExcel

выгрузка в Excel. Параметры:

1) выгружаемый набор данных;

2) текст, помещаемый в первую строку страницы Excel.

Если параметр 2 не задан или пуст, используется заголовок табличной формы.

При использовании обеих функций набор данных должен быть табличной формой, в том числе допускается использовать элемент МОМ, соответствующий таблице в составе экранной формы.

Если в шаблоне отчета имеется параметр EXCEL_COEFF, числовое значение этого параметра используется при определении ширины колонки в зависимости от числа символов. Ранее для этой цели всегда использовалось значение 320. Не учитываются значения параметра, меньшие 100 - вместо таких значений используется стандартное значение 320.

InsCount позволяет узнать число отмеченных строк
IsFloat "строка" Возвращает логическое значение true, если строка может быть преобразована к числу с плавающей точкой. При невозможности преобразования возвращает false
IsInt  "строка" возвращает логическое значение true, если строка может быть преобразована к целому числу. При невозможности преобразования возвращает false
ListBox создает и возвращает объект класса Список
LockOpers для блокировки объектов на время монопольных операций, которые выполняются из бизнес-процедур. Какие именно объекты блокируются, зависит от настройки монопольных операций (настраивается в соответствующем пункте меню «Настройка / Операции»).
Normativ (5 параметров)

Используется в модуле "Управление персоналом". Позволяет получить значение норматива для указанного месяца, отдела, категории персонала.

Параметры:

1. Текст:  обозначение норматива;

2. Текст: месяц в формате “ггггмм”;

3. Текст: номер отдела. По умолчанию – пусто;

4. Число: код категории персонала. По умолчанию – ноль;

5. Число: режим работы. По умолчанию – ноль. При ненулевом значении этого параметра учитываются только нормативы, заданные для указанного месяца. При нулевом значении параметра норматив может быть взят из ближайшего предыдущего месяца, в котором данный норматив указан.

Обязательными являются первые два параметра. Если номер отдела не задан или пуст, используются только значения норматива, общие для всех отделов. Если код категории персонала не задан или равен нулю, используются значения норматива, общие для всех категорий персонала.

Возвращаемое значение: числовое.

OpenDialog

Отображает диалоговое окно Windows для выбора и открытия файлов. Возвращает полный путь к выбранному файлу с именем. Если пользователь отказался от выбора, возвращает пустую строку.

Параметры:

1 – Заголовок диалога;

2 – Имя файла. Пустой параметр открывает окно для выбора, иначе производится попытка открыть файл с указанным именем. При отсутствии такого файла предложит создать его.

3 – Расширение по умолчанию. Получает или задает строковое значение, которое определяет расширение, используемое по умолчанию для фильтрации списка отображаемых файлов.

4 – Директория по умолчанию, отображаемая в диалоговом окне выбора файла при его открытии. При отсутствии параметра, открывает последний открытый каталог до этого. Иначе начальным каталогом будет каталог личных файлов пользователя.

5 – Фильтр. Необходим для настройки выпадающего списка типа файлов, которые отображаются в окне. Пример: "Текстовые файлы (*.txt)|*.txt”. Несколько фильтров должны быть разделены вертикальными полосами. Пример: “Текстовые файлы (*.txt)|*.txt|XML-файлы (*.xml)|*.xml)”.

6 – режим вывода диалога. 0 – старый механизм, 1 – обновленный механизм.

PostIf “имя поля” позволяет сохранить строку набора данных в случае, если поле, имя которого задано параметром, имеет непустое значение. Если значение пустое, никаких действий не выполняется

PrintReport "псевдоним","фильтр","параметры"

[,"формат"[,"макропараметры"]]

четвертый параметр "формат" может принимать значения:

1 - стандартный формат;
2 - формат MS Excel;
полное имя файла. Имя файла должно быть нечисловым, так как числовое значение воспринимается как указание на формат В случае указания только имени файла (без полного пути) используется каталог, заданный по умолчанию для сохранения отчетов в формате Excel в Конфигурации на закладке Печать. Отчет формируется в формате Excel, сохранение производится в файл с заданным именем. Если имя файла не заканчивается символами “.xls”, эти символы автоматически добавляются к имени файла. Добавление расширения не производится, если имя файла уже имеет расширение, то есть заканчивается точкой, за которой следует не более 3-х символов. Диалог с пользователем по корректировке параметров на экран не выводится. При этом все настройки, кроме имени файла, сохраняют значения по умолчанию. Предусмотрена возможность указать имя страницы, в которую будет выгружаться отчет. Имя страницы отделяется от имени файла с помощью вертикальной черты, например: "ФайлОтчета.xls | Страница 2". Если вертикальной черты в тексте параметра нет, используется имя "Страница 1". Если файл уже существует, в него добавляется или замещается страница с указанным именем. Если файл не существует, формируется новый файл с такой страницей.

В варианте с параметрами отчета в виде объекта класса Список можно передать список макропараметров для запросов, используемых в отчете.

QForm псевдоним [,параметры] создает и возвращает объект класса Запросная форма по ее псевдониму. Значения параметрам присваиваются в порядке их описания в запросе (не по именам). Если указано меньше параметров, чем имеется в запросе, то остальные сохраняют значения, указанные в описании запросной формы. Если в запросе имеются макропараметры, в качестве первого параметра может быть указан объект типа Список. Элементы списка используются для заполнения макропараметров. Если элементов списка меньше, чем число макропараметров, оставшиеся макропараметры сохраняют значения, указанные в описании запросной формы.
QFormLive псевдоним [,параметры] создает и возвращает объект класса Запросная форма (с возможностью редактирования)  по ее псевдониму. Значения параметрам присваиваются в порядке их описания в запросе (не по именам). Если указано меньше параметров, чем имеется в запросе, то остальные сохраняют значения, указанные в описании запросной формы. Если в запросе имеются макропараметры, в качестве первого параметра может быть указан объект типа Список. Элементы списка используются для заполнения макропараметров. Если элементов списка меньше, чем число макропараметров, оставшиеся макропараметры сохраняют значения, указанные в описании запросной формы.
QFWizard вызывает Мастер запросов
Reestr "тип документа", "фильтр", "режим"

- создает и возвращает объект класса Реестр документов.Тип документа задается числовым параметром функции.
Строковый параметр "режим" может принимать следующие значения или их произвольное сочетание (например, “123”):
1 - задает режим установки фильтра (третий параметр) как серверного. Это надо учитывать при составлении текста для условия фильтрации. Во избежание двусмысленности рекомендуется поля основной таблицы снабжать префиксом MAIN. С другой стороны, в этом фильтре можно использовать сложные условия, которые применимы только в SQL, например, вложенные SELECT и т.п.;
2 - перед открытием табличной формы выводится диалог установки серверного фильтра. Если для табличной формы задан фильтр по умолчанию, он сразу же используется для фильтрации записей с помощью серверного фильтра, то есть табличная форма открывается без диалога. Следует также учитывать, что во всех случаях фильтр, заданный третьим параметром, действует одновременно с фильтром, заданным по F6;
3 - используется только для реестров и позволяет отключить режим вывода реестра, заданный в описании типа документа (помесячно, поквартально, по годам, реестр целиком). Следует учитывать, что при использовании таких режимов после выполнения функции TForm в табличной форме не будет ни одной записи, пока не будет выполнен метод Show, ShowModal или ShowLookup. Параметр “3” позволяет преодолеть эту проблему, если в бизнес-процедуре предполагается выполнять какие-либо действия с табличной формой без ее показа или еще до показа. Параметр “3” рекомендуется использовать в сочетании с тем или иным серверным фильтром, чтобы избежать открытия большой таблицы реестра целиком;

4 - учитывать фильтр по умолчанию. Если этот режим не задан, то при открытии табличной формы из бизнес-процедуры фильтр по умолчанию не учитывается, а в диалоге настройки фильтра отсутствует флажок “Использовать по умолчанию”. Если режим задан, работа с табличной формой из бизнес-процедуры в этом отношении идентична обычной работе с той же табличной формой, то есть фильтр по умолчанию учитывается и может быть установлен пользователем в процессе работы с табличной формой;
0 - используется только для табличных форм LIC_CH (Лицевые счета) и ESN_BASE (Налоговая база ЕСН и суммы налогов) и позволяет отменить предварительный диалог по установке фильтра при открытии этих табличных форм без отбора по табельному номеру или коду получателя. Параметр “0” рекомендуется использовать в сочетании с тем или иным серверным фильтром, чтобы избежать открытия большой таблицы целиком

Cледует учитывать, что не все значения параметра “режим” действуют при использовании метода ShowLookup:

2 - не действует, так как работа с фильтром по F6 в форме выбора не предусмотрена;

3 - не действует для формы выбора, но является обязательным при создании табличной формы реестра с целью последующего использования метода ShowLookup. Если режим 3 не задан, для некоторых реестров в момент использования метода ShowLookup в таблице не будет ни одной записи, что вызовет ошибку позиционирования на выбранную запись. В версии 11.85.01 при использовании метода ShowLookup в таких случаях предусмотрено сообщение об ошибке c указанием, что необходимо использовать режим 3. В более ранних версиях выводится обычное сообщение “Выбранная запись не найдена в табличной форме” либо никакого сообщения не выводится, но далее возможны самые разные ошибки при работе с этим реестром, в том числе – за пределами бизнес-процедуры;

4 - не действует, так как работа с фильтром по F6 в форме выбора не предусмотрена;

0 - не действует, так как работа с фильтром по F6 в форме выбора не предусмотрена

RefreshCache "псевдоним таблицы" используется в модуле “Управление персоналом”. Обновляет кэшированные данные, используемые для открытой расчетной ведомости. Функция имеет один параметр: псевдоним таблицы, которую необходимо обновить в кэше. При пустом параметре (подразумевается по умолчанию), обновляется кэш для всех четырех таблиц (справочник видов оплаты KODTAB, кадровая картотека KADRY, штатная расстановка NAZN, табель учета рабочего времени TABRAB). Если табличная форма расчетной ведомости не открыта, функция ничего не делает.
RefreshCtls обновляет все элементы экранной формы, которые связаны с вычисляемыми колонками. Функцию надо вызывать в тех случаях, когда из бизнес-процедуры меняются поля, по которым вычисляются колонки. Функция не имеет параметров.
Report создает и возвращает объект класса Отчет
ResrictValue “параметр” значения полей в ограничении по ключу
RestrictField “параметр” имена полей в ограничении по ключу
RunQuery псевдоним [,параметры]

аналогично RunSQL с параметрами, но имеет следующие особенности:

- псевдоним запроса или группы может содержать пробелы;

- если параметров меньше, чем предусмотрено в запросе, перед выполнением запроса выводится стандартный диалог ввода параметров запроса. Отказ от ввода параметров приводит к отказу от выполнения запроса;

- может выполняться не только одиночный запрос, но и скрипт, состоящий из нескольких последовательно выполняемых запросов.

RunSQL "Текст Sql-запроса" просто выполнение запроса (не возвращает результата).
RunSQL псевдоним [,параметры] аналогично предыдущему, но вместо текста запроса указывается псевдоним запроса, сформированного с помощью Мастера запросов. Для того, чтобы эта конструкция отличалась от предыдущей, псевдоним запроса (включая группу) не должен содержать пробелов. Значения параметрам присваиваются в порядке их описания в запросе (не по именам). Если указано меньше параметров, чем имеется в запросе, остальные параметры сохраняют значения, указанные в описании запроса. Если в запросе имеются макропараметры, в качестве первого параметра может быть указан объект типа Список. Элементы списка используются для заполнения макропараметров. Если элементов списка меньше, чем число макропараметров, оставшиеся макропараметры сохраняют значения, указанные в описании запроса.
RV_OTDEL

Используется в модуле "Управление персоналом".

Функция не имеет параметров и возвращает номер отдела, выделенного в дереве расчетной ведомости. Если расчетная ведомость не открыта или в ней выделена верхняя ветка дерева, функция возвращает пустую строку.

SaveDialog

Отображает диалоговое окно Windows для выбора и сохранения файлов. Возвращает полный путь к выбранному файлу с именем. Если пользователь отказался от выбора, возвращает пустую строку.

Параметры:

1 – Заголовок диалога;

2 – Имя файла. Пустой параметр открывает окно для выбора, иначе производится попытка пересохранить файл с указанным именем. При отсутствии такого файла предложит создать его.

3 – Расширение по умолчанию. Получает или задает строковое значение, которое определяет расширение, используемое по умолчанию для фильтрации списка отображаемых файлов.

4 – Директория по умолчанию, отображаемая в диалоговом окне выбора файла при его открытии. При отсутствии параметра, открывает последний открытый каталог до этого. Иначе начальным каталогом будет каталог личных файлов пользователя.

5 – Фильтр. Необходим для настройки выпадающего списка типа файлов, которые отображаются в окне. Пример: "Текстовые файлы (*.txt)|*.TXT”. Несколько фильтров должны быть разделены вертикальными полосами. Пример: “Текстовые файлы (*.txt)|*.TXT|C++ файлы (*.cpp)|*.CPP)”.

6 – режим вывода диалога. 0 – старый механизм, 1 – обновленный механизм.

SelectField (2 параметра)

выбор поля таблицы или табличной формы

Параметры (обязателен только первый параметр):

1) строка - псевдоним таблицы;

2) строка - ранее выбранное поле (для позиционирования формы выбора). Если не задано, форма выбора позиционируется на первом поле.

SelectPF

вызывает стандартный диалог по выбору одной из печатных форм в списке

Параметры:

1) текст - список печатных форм, разделенных символом ";" – обязательный параметр;

2) текст - имя конфигурационной переменной для хранения последней выбранной формы из этого списка. Если параметр не задан, последний выбор не запоминается.

Возвращаемое значение: псевдоним выбранной формы или пустая строка, если выбор не сделан (нажата кнопка "Отмена").

ServerTempTable псевдоним создает и возвращает объект класса Серверная временная таблица. Псевдоним таблицы задается текстовым параметром функции
SetConfigParam (2 параметра) функция предназначена для изменения значения конфигурационной переменной.
Параметры: 
1) имя конфигурационной переменной;
2) значение.
SetELMOM изменение элемента МОМ по его имени
SetNULL

Предназначена для задания полю пустого значения.

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

a=TFORM"<имя ТФ>"

a.SetNULL("DATA_D")

(DATA_D - поле таблицы)

Show форма показывает табличную или запросную форму
ShowLookup форма

отображает табличную или запросную форму в виде справочника и позволяет выбрать из него. Если заголовок формы не передан в качестве параметра, то используется заголовок, заданный свойством Caption. Возвращаемое значение - логическое: показывает, произвел ли оператор выбор. Для запросной формы в функцию может быть передан параметр, который используется в качестве заголовка формы. Пример:

QF = QForm "Справочники.DOPODR_TAB_N",POL@TAB_N

IF QF.ShowLookup("Договора подряда работника: "+POL@PYR3)

THEN

DOCUM@DOC_TYPE.SetValue(QF.TYP_D)

DOCUM@DOC_ID.SetValue(QF.ID)

DOCUM@DOC_NOM.SetValue(QF.N_DOK)

DOCUM@DOC_DATE.SetValue(QF.DATA_D)

SUM@SUM_ZPL.SetValue(QF.SUM_D)

END IF

ShowModal форма
  1. показывает табличную или запросную форму модально. Например:

ShowModal TForm "SPR_DOK"

  1. На время, пока объект класса Табличная форма выполняет метод ShowModal, скрывается окно мониторинга, которое могло быть перед началом выполнения этого метода. Окно мониторинга восстанавливается после закрытия модального окна.

Sleep "число" Позволяет выполнить задержку на заданное количество миллисекунд
SQL "Текст Sql-запроса"

возвращает объект класса Набор данных: результат выполнения запроса. В тексте запроса допустимо в качестве параметров использовать переменные Бейсика. Для этого нужно заключить имя переменной в проценты. Например:

select * from %TableName% where Field1='%Value%'

SQL псевдоним [,параметры] аналогично предыдущему, но вместо текста запроса указывается псевдоним запроса, сформированного с помощью Мастера запросов. Для того, чтобы эта конструкция отличалась от предыдущей, псевдоним запроса (включая группу) не должен содержать пробелов. Значения параметрам присваиваются в порядке их описания в запросе (не по именам). Если указано меньше параметров, чем имеется в запросе, остальные параметры сохраняют значения, указанные в описании запроса. Если в запросе имеются макропараметры, в качестве первого параметра может быть указан объект типа Список. Элементы списка используются для заполнения макропараметров. Если элементов списка меньше, чем число макропараметров, оставшиеся макропараметры сохраняют значения, указанные в описании запроса.
SQLPost сохраняет запись, находящуюся в режиме редактирования или добавления, с помощью динамически генерируемого запроса. Может применяться вместо метода Post.
SysLog "название события",  "текст сообщения с описанием события", "Дополнительная информация"

добавляет запись о событии в системный протокол.

Можно использовать третий параметр, с помощью которого заполняется новая колонка аудита "Дополнительная информация".

TableExist “таблица” проверка существования таблицы с псевдонимом, заданным текстовым параметром
TableVersion “таблица” версия ядра системы КОМПАС
TblAliasByTF (параметр)

псевдоним таблицы по табличной форме

Параметры (все параметры обязательны):

1) строка - псевдоним табличной формы.

Возвращает: псевдоним таблицы или пустую строку, если указанная табличная форма не найдена.

TForm "псевдоним ТФ", "тип документа", "фильтр", "режим"

Все параметры, кроме первого, являются необязательными.
Параметр "тип документа" учитывается только для реестров и позволяет обойти диалог по выбору типа документа для тех табличных форм, которые связаны с несколькими типами документов. При нулевом значении второго параметра табличная форма реестра открывается по общим правилам.
Строковый параметр "режим" может принимать следующие значения или их произвольное сочетание (например, “123”):
1 - задает режим установки фильтра (третий параметр) как серверного. Это надо учитывать при составлении текста для условия фильтрации. Во избежание двусмысленности рекомендуется поля основной таблицы снабжать префиксом MAIN. С другой стороны, в этом фильтре можно использовать сложные условия, которые применимы только в SQL, например, вложенные SELECT и т.п.;
2 - перед открытием табличной формы выводится диалог установки серверного фильтра. Если для табличной формы задан фильтр по умолчанию, он сразу же используется для фильтрации

записей с помощью серверного фильтра, то есть табличная форма открывается без диалога. Следует также учитывать, что во всех случаях фильтр, заданный третьим параметром, действует одновременно с фильтром, заданным по F6;
3 - используется только для реестров и позволяет отключить режим вывода реестра, заданный в описании типа документа (помесячно, поквартально, по годам, реестр целиком). Следует учитывать, что при использовании таких режимов после выполнения функции TForm в табличной форме не будет ни одной записи, пока не будет выполнен метод Show, ShowModal или ShowLookup. Параметр “3” позволяет преодолеть эту проблему, если в бизнес-процедуре предполагается выполнять какие-либо действия с табличной формой без ее показа или еще до показа. Параметр “3” рекомендуется использовать в сочетании с тем или иным серверным фильтром, чтобы избежать открытия большой таблицы реестра целиком;

4 - учитывать фильтр по умолчанию. Если этот режим не задан, то при открытии табличной формы из бизнес-процедуры фильтр по умолчанию не учитывается, а в диалоге настройки фильтра отсутствует флажок “Использовать по умолчанию”. Если режим задан, работа с табличной формой из бизнес-процедуры в этом отношении идентична обычной работе с той же табличной формой, то есть фильтр по умолчанию учитывается и может быть установлен пользователем в процессе работы с табличной формой;
0 - используется только для табличных форм LIC_CH (Лицевые счета) и ESN_BASE (Налоговая база ЕСН и суммы налогов) и позволяет отменить предварительный диалог по установке фильтра при открытии этих табличных форм без отбора по табельному номеру или коду получателя. Параметр “0” рекомендуется использовать в сочетании с тем или иным серверным фильтром, чтобы избежать открытия большой таблицы целиком.        
Возможности  функции Tform по указанию параметров фильтрации ("фильтр", "режим") неприменимы для табличных форм SHTRAS (штатное расписание); NAZN (штатная расстановка); OTPUSK (журнал неявок); TABRAB (табель учета рабочего времени); CH_70_S (расчетная ведомость); SPR_70 (свод по заработной плате); LIC_CH (лицевой счет с отбором по одному работнику). Напомнинаем, что для таких табличных форм функцию TForm вообще нельзя использовать, так как для них эта функция только открывает табличную форму в немодальном режиме, но получить доступ к табличной форме нельзя. Если необходимо использовать такую табличную форму для выбора из справочника, следует вместо функции TForm использовать функцию TLookupForm.

Если в параметре "режим" используется символ R (регистр существенен) - табличная форма выводится в режиме "Только чтение".

TFWizard вызывает Мастер табличных форм
ThrowException генерирует исключение, которое может быть обработано за пределами бизнес-процедуры
TLookupForm "псевдоним ТФ", "тип документа", "фильтр", "режим"

создает объект TForm для выбора из справочника. Если в бизнес процедуре необходимо осуществить выбор из табличной формы как из справочника, рекомендуется создавать объект класса “Табличная форма” не с помощью функции TForm, а с помощью функции TLookupForm. Объект, созданный с помощью функции TLookupForm, может использовать только для выбора из справочника с помощью метода ShowLookup, тогда как методы Show, ShowModal и ShowSF у него отсутствуют. С другой стороны, такой объект ведет себя одинаково для любых табличных форм, в том числе - для перечисленных выше в настоящей статье. Кроме того, таблица для такого объекта открывается в режиме только для чтения, что ускоряет работу программы.
Все параметры, кроме первого, являются необязательными.
Параметр "тип документа" (числовой) учитывается только для реестров и позволяет обойти диалог по выбору типа документа для тех табличных форм, которые связаны с несколькими типами документов. При нулевом значении второго параметра табличная форма реестра открывается по общим правилам.
Строковый параметр "режим" может принимать следующие значения или их произвольное сочетание (например, “123”):
1 - задает режим установки фильтра (третий параметр) как серверного. Это надо учитывать при составлении текста для условия фильтрации. Во избежание двусмысленности рекомендуется поля основной таблицы снабжать префиксом MAIN. С другой стороны, в этом фильтре можно использовать сложные условия, которые применимы только в SQL, например, вложенные SELECT и т.п.;
2 - перед открытием табличной формы выводится диалог установки серверного фильтра. Если для табличной формы задан фильтр по умолчанию, он сразу же используется для фильтрации записей с помощью серверного фильтра, то есть табличная форма открывается без диалога. Следует также учитывать, что во всех случаях фильтр, заданный третьим параметром, действует одновременно с фильтром, заданным по F6;
3 - используется только для реестров и позволяет отключить режим вывода реестра, заданный в описании типа документа (помесячно, поквартально, по годам, реестр целиком). Следует учитывать, что при использовании таких режимов после выполнения функции TForm в табличной форме не будет ни одной записи, пока не будет выполнен метод Show, ShowModal или ShowLookup. Параметр “3” позволяет преодолеть эту проблему, если в бизнес-процедуре предполагается выполнять какие-либо действия с табличной формой без ее показа или еще до показа. Параметр “3” рекомендуется использовать в сочетании с тем или иным серверным фильтром, чтобы избежать открытия большой таблицы реестра целиком;

4 - учитывать фильтр по умолчанию. Если этот режим не задан, то при открытии табличной формы из бизнес-процедуры фильтр по умолчанию не учитывается, а в диалоге настройки фильтра отсутствует флажок “Использовать по умолчанию”. Если режим задан, работа с табличной формой из бизнес-процедуры в этом отношении идентична обычной работе с той же табличной формой, то есть фильтр по умолчанию учитывается и может быть установлен пользователем в процессе работы с табличной формой;
0 - используется только для табличных форм LIC_CH (Лицевые счета) и ESN_BASE (Налоговая база ЕСН и суммы налогов) и позволяет отменить предварительный диалог по установке фильтра при открытии этих табличных форм без отбора по табельному номеру или коду получателя. Параметр “0” рекомендуется использовать в сочетании с тем или иным серверным фильтром, чтобы избежать открытия большой таблицы целиком.        

Use объект

указывает, что методы и свойства объекта будут использоваться по умолчанию. Если объектом является табличная или запросная форма, то как только выполнится этот оператор, появятся переменные через которые можно работать с полями задействованной рабочей формы. Их имена совпадают с именами полей. Например:

use TForm "SPR_DOK"

print TIP

В результате выведется значение поля TIP для первой строки таблицы. Или аналогично:

a = TForm "SPR_DOK"

print a.TIP

ViewDoks

просмотр документа.

Параметры:

1) набор данных, содержащий реквизиты документа;

2) часть сообщения о том, что нет реквизитов документа.

Если параметр 2 не задан или пуст, используется текст "таблицы".

XFile “таблица”, “ключевое поле”, “значение ключевого поля” позволяет выполнять операции с файлами, хранимыми в поле таблицы (3 параметра)
XFileEx (6 параметров)

Функция для работы с файлами.

Параметры:

1. [Псевдоним таблицы] - псевдоним таблицы с файлом;

2. [Имя ключевого поля] - имя ключевого поля таблицы с файлом (для идентификации строки);

3. [Значение ключевого поля] - значение ключевого поля таблицы с файлом (для идентификации строки);

4. [Имя поля файла] - имя поля, в котором хранится файл, если пустая строка, то определяется автоматически;

5. [Действие] - код действия (0 - Открыть файл, 1 - Сохранить в файл на диск, 2 - Сохранить файл в БД, 3 - Удалить файл из БД);

6. [Имя файла] - если выполняется действие 1, то папка для сохранения файла (например 'c:\my dir\') или пустая строка (тогда будет диалог с пользователем). Если выполняется действие 2, то путь к файлу (например 'c:\autoexec.bat'). Для других действий игнорируется.

xRefresh псевдоним выполняет обновление данных во всех табличных формах, связанных с указанной таблицей.
XML (3 параметра)

принимает три параметра:

1. путь к файлу,

2. режим работы (0 - выгрузка xml-файла, 1 - загрузка xml-файла),

3. кодировка xml-файла.

Классы объектов

Понятие класса

Переменные языка могут иметь тип: объект некоторого класса. Такая переменная создается одной из функций языка и имеет свойства (аналогичны переменным) и методы (аналогичны функциям). Доступ к отдельным свойствам и методам осуществляется с помощью имени переменной, точки и имени свойства или метода, например:

a=TForm "SPR_DOK"
a.goFirst
ShowModal a

В настоящее время в синтаксисе языка предусмотрены следующие классы:

TTfInfoНаборы данных

Объекты этого класса создаются функцией SQL.

Свойства:

Bof переменная равна 1, когда курсор стоит на первой записи
Eof переменная равна 1, когда курсор стоит на последней записи
Count количество записей
CountWithFilter отличие от свойства count заключается в том, что новая учитывает все наложенные на набор данных фильтры
Filter фильтр, доступен для чтения и для записи
ServerFilter

серверный фильтр. Обратите внимание, что использование этого свойства возможно только в том случае, если набор данных связан с какой-либо табличной формой: созданной с помощью функции TForm или полученной в качестве UsedObject при вызове бизнес-процедуры в качестве реакции на события табличной формы, либо при нажатии на кнопки табличной формы. Значением  свойства является текст, написанный по правилам языка SQL, который может быть использован в предложении WHERE запроса на выборку данных для табличной формы. Во избежание двусмысленности, рекомендуется все поля основной таблицы в тексте серверного фильтра снабжать префиксом "MAIN."

Любое изменение свойства ServerFilter приводит к перезагрузке данных в табличной форме. Если для свойства задано пустое значение, выборка данных при перезагрузке осуществляется без дополнительных условий. Иначе используется условие отбора, описанное в серверном фильтре

TableName имя таблицы, по которой построена форма. Это свойство может быть использовано только для табличных форм
State

текстовая строка, характеризующая состояние набора данных:

                 "dsInsert" - состояние добавления записи;

                 "dsEdit" - редактирование старой записи;

                 "dsBrowse" - перемещение по записям;

                 "dsUnknown" - остальные состояния.

@Temp.Value служебная переменная, связанная с данным набором данных и доступная из всех бизнес процедур, которые с этим набором данных работают. Переменная создается при создании первого объекта, ссылающегося на этот набор данных. Уничтожается при закрытии набора данных. Обычно эта переменная используется для обмена данными между процедурами, вызываемыми как реакция на события табличной формы.
Posted устанавливается значение “true”, если во временную таблицу в составе экранной формы изменения вносились запросами. Если использовался только метод SQLPost, данное свойство можно не использовать

 

Методы:

goFirst перемещение в начало
goLast перемещение в конец
goNext перемещение на следующую запись
goPrev перемещение на предыдущую запись
Insert переход в режим вставки
Delete удаление записи
Edit  перевод записи в состояние редактирования
Post сохранение изменений
Cancel отмена изменений
Refresh обновление данных
Close закрытие формы.
Данный метод имеет смысл использовать в том случае, если набор данных является табличной формой. Также следует учитывать, что метод не приводит к немедленному закрытию табличной формы, а лишь устанавливает признак того, что при уничтожении объекта форма должна быть закрыта. Объект может быть уничтожен путем присвоения переменной другого значения. Кроме того, при завершении бизнес-процедуры, все объекты уничтожаются автоматически
Find "имя поля", значение поиск
HasTable "имя элемента МОМ"

Метод используется только в выражениях.

Если набор данных является таблицей, для таблицы открыта экранная форма и на ней имеется таблица, соответствующая этому элементу МОМ, метод возвращает имя (временной) таблицы. Метод предназначен для бизнес-процедур, назначенных для событий ТФ (перед и после сохранения, удаления), если требуется получить информацию о содержании таблицы в составе экранной формы. Метод работает для справочников и для реестров.

SetMaxStr "имя поля", значение параметры: имя поля с номерами строк, максимальный номер, записанный в поле. Вызывается, если изменения во временную таблицу в составе экранной формы вносились запросами или с помощью SQLPost, а в таблице имеется поле с номерами строк
RestrictField , значение позволяет получить имя поля, которое используется для ограничения по ключу. Параметр: порядковый номер поля в ограничении (начиная с 1). Если ограничение не установлено или число полей меньше указанного, функция возвращает пустую строку
RestrictValue , значение - позволяет получить значение, которое используется для ограничения по ключу. Параметр: порядковый номер поля в ограничении (начиная с 1). Если ограничение не установлено или число полей меньше указанного, функция возвращает пустую строку. Обратите внимание: значение возвращается в том виде, в котором оно хранится в TRestrictInfo, то есть в виде изображения.
LoadBLOB, "имя поля", "имя файла" чтение из файла. Параметры: имя ля, имя файла. Этот метод следует использовать только когда  Dataset находится в режиме Edit или Insert.
SaveBLOB, "имя поля", "имя файла запись значения BLOB-поля в файл
PrintForm, "псевдоним печатной формы", "число копий при печати", "3-й параметр (необязательный)"

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

В качестве необязательного третьего параметра можно использовать список параметров печатной формы. Параметры, упомянутые в этом списке, исключаются из диалога ввода параметров. Если все параметры упомянуты в списке, диалог ввода параметров не выводится.

MakeForm, "псевдоним печатной формы", "полное имя файла", "3-й параметр (необязательный)"

формирование печатной формы и сохранение в заданном файле.По завершении процесса формирования документа окно мониторинга закрывается, файл с указанным полным именем сохраняется, выполнение процедуры продолжается

При вызове функции со вторым параметром, содержащим только имя файла без пути, учитывается индивидуальная папка, если она назначена для текущего оператора.

При использовании MS Word 2007 или выше функция MakeForm сохраняет печатную форму в формате Office Open XML, если вторым параметром передано имя файла с расширением docx.

В качестве необязательного третьего параметра можно использовать список параметров печатной формы. Параметры, упомянутые в этом списке, исключаются из диалога ввода параметров. Если все параметры упомянуты в списке, диалог ввода параметров не выводится.

GetValue, "имя поля" получение и изменение значения поля даже в том случае, если его имя совпадает с именем свойства или функции
SetValue, "имя", "значение"  изменение значения поля даже в том случае, если его имя совпадает с именем свойства или функции
GetCheckIns, " список" Метод заполняет параметр списком уникальных ключей для отмеченных строк набора данных. Метод заполняет список только в том случае, если набор данных является табличной формой на основе компонентов TTfWndForm или TTfCtl. В остальных случаях переданный список очищается.

Табличная форма

Объекты этого класса создаются функцией ТForm.

Наследует все свойства и методы класса Набор данных.

Дополнительные свойства:

 

Caption заголовок табличной формы
CheckIns проверка отметки строк: возвращает true, если строка в ТФ отмечена, и false, если строка не отмечена
SelectedField при использовании в выражении свойство равно имени поля для текущей колонки табличной формы. Если табличная форма еще не открыта, свойство пусто. При использовании свойства в левой части оператора присваивания устанавливается текущая колонка, которая соответствует полю с указанным именем. Если табличная форма еще не открыта или в ней нет такого поля, фиксируется ошибка. Если поле есть, но нет колонки для него, ошибка не фиксируется, но и текущая колонка не меняется
IsOpen возвращает true, если табличная форма открыта, и false - если закрыта
CalendarView

вид "календарь". Позволяет разместить в левой части формы элемент календарь для фильтрации записей табличной формы по датам. Может принимать значения от 0 до 4:

0 = Один день;

1 = Рабочая неделя (5 дней);

2 = Неделя;

3 = Месяц;

4 = Два календаря.;

Calendar1Date дата в первом календаре
Calendar2Date дата во втором календаре

Дополнительные методы:

 

Show отобразить не модально
ShowModal отобразить модально
ShowLookup выбрать значение
MultiLookup В отличие от метода ShowLookup  метод имеет параметр, которым должен быть объект класса "Список". При этом в диалоге выбора допускается отметка строк. Если выбор сделан, переданный в качестве параметра список содержит перечень первичных ключей отмеченных записей.
ShowSF открыть экранную форму
Order строка сортировка
Restrict "поле1=значение1" [, "поле2=значение2"]

накладывает ограничение по ключу. Наряду с именами полей можно использовать служебные имена:

HideKeyColumns        -        следует ли скрывать колонки с ключевыми полями;

KeyChkPrefix        -        следует ли для последнего из ключевых полей (обязательно символьного) включать режим отбора по префиксу.

Значениями для этих служебных имен могут "0" (ноль) - нет, или "1" - да. Любое другое значение воспринимается как "1".

Mail получатель, приложение, тема, содержание посылает сообщение по электронной почте, использующее текущую строку табличной формы. Все параметры - текстовые. Данная функция может работать только в некоторых задачах пакета КОМПАС
RefreshTree обновляет дерево в табличной форме (если дерево имеется). Обновление производится по тем же правилам, как при использовании пункта "Обновить" в локальном меню дерева.
ShowDetail идентификатор кнопки, для которой настроена связь с подчиненной табличной формой при вызове этого метода открывается подчиненная табличная форма, т.е. действие совпадает с нажатием на кнопку с переданным идентификатором. Если передан идентификатор кнопки, которая не открывает подчиненную табличную форму, выдается сообщение "Ошибка в параметрах функции"
ShowMemo псевдоним поля при вызове этого метода  для указанного в качестве параметра поля открывается многострочный редактор
ShowFilterDlg [префикс] вызывает диалог по установке условия фильтра для табличной формы, аналогичный диалогу по клавише F6. Однако, результаты данного диалога не приводят к фильтрации табличной формы, а возвращаются в качестве результата работы функции в виде текстовой строки, которую можно использовать в SQL-выражении WHERE для выборки данных из таблицы. Необязательный параметр задает префикс таблицы, используемый в SQL-выражении. Если оператор нажал кнопку Отмена, функция возвращает пустую строку. Если оператор задал условие, которое не может быть преобразовано к SQL-выражению, функция возвращает строку, состоящую из одного слова "нет
xRefresh псевдоним выполняет обновление данных в табличных формах, связанных с указанной таблицей. Текущая табличная форма при этом не обновляется, даже если она связана с той же таблицей. При необходимости обновить текущую табличную форму, следует использовать метод Refresh.

Обратите внимание

Использование класса “Табличная форма” имеет особенности для некоторых табличных форм, для которых в пакете предусмотрена специальная обработка. К таким табличным формам относятся следующие формы:

табличная форма CH_70_S (расчетная ведомость);

табличная форма FONDRAB (фонды рабочего времени);

табличная форма GRIDN (перечень назначений работника);

табличная форма GRIDOTP (перечень отпусков и неявок работника);

любые табличные формы, основанные на таблице LIC_CH (лицевой счет работника), в том числе - расчетный листок (табличная форма LIC_CH_M);

табличная форма NAZN (штатная расстановка);

табличная форма OTPUSK (журнал отпусков и других неявок);

табличная форма SHTRAS_M (штатное расписание по работникам);

табличная форма SHTRAS_W (штатное расписание по должностям);

табличная форма SPR_70 (свод по заработной плате);

табличная форма TABRAB (табель учета рабочего времени).

Хотя объект для указанных табличных форм может быть создан с помощью функции TForm, большинство методов класса “Табличная форма” для такого объекта не действуют. Допускается использование только метода Show, который, однако, никаких действий не выполняет, так как показ формы в немодальном режиме осуществляется сразу после вызова функции TForm. У такого объекта отсутствуют свойства, соответствующие полям таблицы, а использование свойств Caption, Filter и некоторых других не оказывает никакого влияния на открытую табличную форму.

Если в бизнес процедуре необходимо осуществить выбор из табличной формы как из справочника, рекомендуется создавать объект класса “Табличная форма” не с помощью функции TForm, а с помощью функции TLookupForm. Объект, созданный с помощью функции TLookupForm, может использовать только для выбора из справочника с помощью метода ShowLookup, тогда как методы Show, ShowModal и ShowSF у него отсутствуют. С другой стороны, такой объект ведет себя одинаково для любых табличных форм, в том числе - для перечисленных выше в настоящей статье. Кроме того, таблица для такого объекта открывается в режиме только для чтения, что ускоряет работу программы.

Запросная форма

Объекты этого класса создаются функцией QForm.

Наследует все свойства и методы класса Набор данных.

Дополнительные свойства:

 

Caption заголовок запросной формы

Дополнительные методы:

 

Show отобразить не модально
ShowModal отобразить модально
ShowLookup строка выбрать значение
Order строка сортировка

Запросная форма с возможностью редактирования данных

Объекты этого класса создаются функцией QFormLive.

Наследует все свойства и методы класса Запросная форма.

От базового класса QForm отличается тем, что запрос открывается с параметром RequestLive=true.

Серверная временная таблица

Объекты этого класса создаются функцией ServerTempTable.

Объект соответствует таблице, указанной при вызове функции. Таблица существует до конца выполнения бизнес процедуры.

Объект наследует все свойства и методы класса Набор данных.

Дополнительные свойства:

TableName -имя временной таблицы.
KeyField -имя поля для первичного ключа.

Пример:

Trsh = ServerTempTable("TMPRASHR")

RunSQL "INSERT INTO " + Trsh.TableName + " (PART_NO, STR_NO, NOM_NO, SKL_NO, MOL) SELECT PART_NO,STR_NO, NOM_NO,MOL FROM RASHOD"

Реестр документов

Объекты этого класса создаются функцией Reestr.

Имеет аналоги методов класса Табличная форма. В качестве свойств вместо имен полей используются элементы массива общих мест.

Дополнительные свойства:

Table псевдоним таблицы
TForm псевдоним табличной формы
Type тип документов в реестре
DocName название типа документа реестра
DocsName название типа документов во множественном числе
Filter фильтр, доступен для чтения и для записи

Дополнительные методы:

Append новый документ (прозрачный режим)
Delete удалить документ из реестра
DelOplat удалить документ из журнала взаиморасчетов
DelProv удалить проводку по документу из журнала операций
DubleDoc создание нового документа по текущему
GetNextNDok возвращает новый номер документа для реестра в соответствии с правилами, настроенными в справочнике типов документов. Перед использованием этой функции реестр должен быть открыт для нужного типа документа и курсор должен находиться на какой-то записи, потому что метод GetNextNDok отрабатывает в зависимости от даты в текущем документе

GetReestrNextNDok

[параметр1, параметр2]

функция принимает в качестве параметров тип документа и дату (оба параметра обязательны) и возвращает следующий новый номер документа по правилам, настроенным в справочнике типов документов
Index отсортировать реестр
Mail получатель, приложение, тема, содержание

посылает текущий документ по электронной почте.

Все параметры - текстовые. Данная функция может работать только в некоторых задачах пакета КОМПАС

NewDoc создание нового документа
ProvREE провести документ в журнале операций
SaveDoc сохранить документ в реестре
SetInBook включить документ в книгу покупок или продаж
SetOplat включить документ в журнал взаиморасчетов
ShowSF В связи с особенностями класса, перед вызовом метода ShowSF автоматически вызывается метод SaveDoc, то есть, перед вызовом экранной формы изменения записываются в таблицу и текущая запись сохраняется.
ViewOplat просмотреть журнал взаиморасчетов по документу

Отчет

Объекты этого класса создаются функцией Report.

Свойства:

 

колонки переменные, одноименные колонкам отчета
Title заголовок отчета
Footer подвал отчета

Методы:

 

Start начать формирование отчета. Если в качестве параметра метода Start передать строку "Excel", отчет будет формироваться в формате MS Excel. Параметр может быть задан в виде полного имени файла. Имя файла должно отличаться от "Excel", так как значение "Excel" будет воспринимается только как указание на формат отчета. Если параметр задан в виде полного имени файла, то отчет формируется в формате Excel, сохранение производится в файл с заданным именем. Если имя файла не заканчивается символами “.xls”, эти символы автоматически добавляются к имени файла. Добавление расширения не производится, если имя файла уже имеет расширение, то есть заканчивается точкой, за которой следует не более 3-х символов. Диалог с пользователем по корректировке параметров на экран не выводится. При этом все настройки, кроме имени файла, сохраняют значения по умолчанию. Предусмотрена возможность указать имя страницы, в которую будет выгружаться отчет. Имя страницы отделяется от имени файла с помощью вертикальной черты, например: "ФайлОтчета.xls | Страница 2". Если вертикальной черты в тексте параметра нет, используется имя "Страница 1". Если файл уже существует, в него добавляется или замещается страница с указанным именем. Если файл не существует, формируется новый файл с такой страницей
Next перейти к следующей записи
Stop закончить формирование отчета
Options установить опции отчета (см. ниже)
Print напечатать отчет

При помощи объектов этого класса можно создавать отчеты "руками", т.е. запись за записью.  Это избавляет разработчиков от необходимости сначала копировать данные во временную таблицу, а затем строить из нее отчет.

Пример работы:

Spr_Dok=TForm "SPR_DOK"

Rep=Report "SPR_DOK"        ' Отчет называется SPR_DOK,

Rep.Start        '  Начало заполнения отчета

DO UNTIL Spr_Dok.Eof        '  Идем по SPR_DOK'у

Rep.TIP = Spr_Dok.TIP        '  Заполняем поименованные колонки значениями из таблицы

Rep.NAME_D=Spr_Dok.Name_D

Rep.Next        '  Переходим на следующую запись отчета

Spr_Dok.goNext        '  Переходим на следующую запись таблицы

LOOP

Rep.Stop        ' Закончили возиться с отчетом

Rep.Print        ' Вывели его на печать

У объекта класса Отчет есть свойство - Options. Можно использовать следующие опции:

"Normal"        - нормальный шрифт

"Bold"        - жирный шрифт

"Italic"        - наклонный шрифт

"LineTop"        - верхняя линия

"BoldLineTop"        - двойная верхняя линия

"LineBottom"        - нижняя линия

"BoldLineBottom"        - двойная нижняя линия

Пример:

a=Report "SPR_DOK"

a.Options "Bold","BoldLineTop","BoldLineBottom"

Примечание:

Опция, будучи включена один раз действительна до тех пор, пока ее не заменит какая-нибудь другая. Например, если включить опцию “Bold” все следующие строчки отчета будут жирными до тех пор, пока не будет включена опция “Normal”.

Список

Объекты этого класса создаются функцией ListBox.

Свойства:

Count количество элементов

Методы:

Clear очистить список
CheckItems (3 параметра)

Метод может вызываться только в составе выражения.

Параметры:

1) заголовок диалоговой формы;

2) текст в верхней части диалоговой формы;

3) текст на кнопке Продолжить.

Все параметры являются необязательными.

В результате вызова метода выводится диалог, в котором можно отметить некоторые строки списка. В отмеченных строках значение (текст после знака равенства) становиться равным 1, а в неотмеченных - равным 0. Такие же значения можно использовать перед вызовом метода, чтобы некоторые строки были заранее отмечены.

Метод возвращает true, если нажата кнопка Продолжить или false, если нажата кнопка Отмена. Если параметр 3 задан и содержит слово "печать" (в любом регистре), автоматически меняется изображение на кнопке.

Load (имя файла) загружает в список строки из указанного файла
Save (имя файла) сохраняет строки из ListBox в указанный файл
Add(строка) добавляет элемент. Если строка имеет вид "name=value", левую часть можно получить из свойства Name, вторую - Value;
String(число) возвращает элемент, индекс которого задан числом. Обратите внимание: индексация элементов начинается с нуля
Name(число) левая часть элемента, индекс которого задан числом
Value(число) правая часть элемента, индекс которого задан числом
IndexOf(строка) индекс строки в списке или минус 1, если строка в списке не найдена
IndexOfName(строка) индекс элемента, левая часть которого равна данной строке, или минус 1, если такой элемент не найден
SetValue(число,строка) изменяет правую часть элемента с указанным индексом: после выполнения оператора правая часть будет равна указанной строке
Delete(число) удаляет элемент, индекс которого задан числом
ProtocolView(заголовок, параметр, ширина, дата)

выводит на экран окно с изображением текущего содержания списка. Обычно эта возможность используется для показа протокола с результатами работы процедуры. Все параметры метода являются необязательными.

Параметры:

1. Текст: заголовок, помещаемый в верхней части окна. Если не задан, то подразумевается текст "Протокол выполнения".
2. Число: определяет специальные режимы вывода окна. По умолчанию равен нулю. Для включения специальных режимов может принимать одно из следующих значений или их сумму:

1 - показывать дату в окне протокола. По умолчанию дата в окне отсутствует;

2 - использовать только шрифты с фиксированным шагом. По умолчанию могут также использоваться пропорциональные шрифты. Шрифт может быть изменен в процессе просмотра протокола, однако, если задан параметр 1, можно выбрать только шрифт с фиксированным шагом;

4 - скрыть кнопку “Отмена” и оставить только кнопку “ОК”;

8 - скрыть кнопку “ОК” и оставить только кнопку “Отмена”.

Следует обратить внимание, что если функция включена в состав выражения, она возвращает значение “истина”, если оператор нажал кнопку “ОК”. Иначе функция возвращает значение “ложь”. Если функция использована в качестве оператора, кнопка “Отмена” скрыта по умолчанию.

3. Число: первоначальная ширина окна в пикселях. Если ширина не задана или меньше 1, окно имеет стандартную ширину.
4. Текст: изображает дату, которая указывается в верхней части окна, если 2-й параметр включает значение 1. По умолчанию используется текущая календарная дата.

AskChoice(заголовок, текст,

начальная, группа, кнопка, маска)

выбор вариантов. При организации диалога каждый элемент списка является отдельным вариантом. Все параметры метода являются необязательными.

Параметры (перечень параметров должне быть заключен в скобки):

1. Текст: заголовок, помещаемый в верхней части окна выбора. Если не задан, то подразумевается текст "Выберите вариант".
2. Текст: поясняющий текст, который располагается в окне выбора над перечнем вариантов.
3. Число: номер варианта (начиная с нуля), которая устанавливается по умолчанию. Если не задан, по умолчанию устанавливается первая альтернатива.
4. Текст: располагается в разрезе перечня альтернатив. Если не задан, то подразумевается текст "Что будем делать?".
5. Текст: располагается на исполнительной кнопке ОК. Если задан текст "Печать", изображение на кнопке автоматически изменяется.
6. Число: маска для отключения альтернатив. Для первой альтернативы используется 1, для второй - 2, для третьей - 4 и т.п. Для того, чтобы отключить одновременно несколько альтернатив, надо задать сумму соответствующих значений.

Возвращаемое значение: номер варианта, который выбрал оператор, начиная с нуля. Если оператор нажал кнопку Отмена, возвращается -1.

Пример:

list = ListBox

list.Add("Первый вариант для выбора")

list.Add("Второй вариант для выбора")

list.Add("Третий вариант для выбора")

text = "Это пример выбора вариантов с помощью класса ListBox"

i = list.AskChoice("Выбор",text,1," Что будем печатать? ","Печать",4)

В этом случае будет выведено следующее окно:

Без имени-5

Примечание: в некоторых случаях могут не отображаться строчные кириллические символы (например, лидирующий строчный символ "я"). Для разрешения этой ситуации рекомендуется использовать капитализацию первой буквы (функция proper)

Транслятор формул

Объекты этого класса создаются функцией Evaluate.

Методы:

Evaluate строка вычисляет значение по формуле, указанной в качестве текстового параметра. Можно использовать для вычисления значения по формуле, хранящейся в поле таблицы. В случае использования в бизнес процедуре, вызванной функцией ПРОЦ_ЧИСЛО (bprun) или ПРОЦ_ТЕКСТ (bprun_str), данному объекту доступны все переменные, доступные в трансляторе, запустившем эти функции.

Период времени

Объекты этого класса создаются функцией BP_Period.

Свойства:

BegDate

дата начала периода

EndDate

дата окончания периода

flag

дополнительный флаг

config

конфигурационный параметр для хранения этого флага (если пусто, то конфигурация не используется)

BegMayBeEmpty

логическое, по умолчанию false.  Определяет возможность очистки соответствующей даты.

EndMayBeEmpty

логическое, по умолчанию false. Определяет возможность очистки соответствующей даты.

Дополнительно с учетом тех же свойств заполнение дат проверяется при нажатии кнопки ОК.

Методы:

Input

диалог с оператором по вводу периода и дополнительного флага

Параметры:

·заголовок диалога,

·дополнительный текст в окне диалога,

·текст в разрезе группы для ввода дат, текст на кнопке ОК (если равен "Печать", то меняется изображение на кнопке),

·текст флажка для установки свойства flag.

Метод возвращает true, если оператор нажал кнопку ОК.  Параметры не обязательны. Если не задан текст для флажка, флажок на форме отсутствует, а свойство flag после диалога имеет значение false, но в конфигурации значение не сохраняется. Конфигурационный параметр считается общим, если имя начинается с символов "kfg_". Иначе конфигурационный параметр имеет свое значение для каждого оператора.

Текстовый файл

Объекты этого класса создаются функцией BPTextFile.

Свойства:

EndOfFile конец файла

Методы:

Open "файл","параметр"* открыть файл
Write "файл" писать в конец файла
Read прочитать файл
Save "параметр"* сохранить файл
SaveAs "файл","параметр"* сохранить файл с заданными в качестве параметра именем
NextStr перейти на следующую строку
Clear очистить файл
Close закрыть файл

 *"параметр" - необязательный параметр с двумя возможными значениями: "WIN" (умолчание) и "DOS". Значения этих параметров указывают, в какой кодировке будет интерпретироваться текст (win1251, UTF-8 или cp866). Текст внутри класса всегда интерпретируется как "WIN". Поэтому следующая конструкция:

 Text = TTextFile

 Text.Open "XXXXXXXX.TXT", "DOS"

 Text.SaveAs "XXXX_DOS.TXT"

 Text.Close

загрузит файл в кодировке DOS, но сохранит в WIN.

Транзакция (Transaction)

Класс Transaction предназначен для управления транзакциями в бизнес-процедурах. При завершении работы процедуры, если транзакция остается открытой, происходит автоматический откат транзакции. Если транзакция была открыта до вызова бизнес-процедуры (внешним кодом), то работа класса никак не влияет на транзакцию.

Свойства:

Database (только чтение) - имя псевдонима BDE,

InTransaction (только чтение) - признак того, что БД находится в транзакции.

Методы:

Конструктор может принимать один параметр с именем псевдонима БД. При вызове без параметров базой данных считается "KOMPAS"

Start - начало транзакции,

Commit - завершение транзакции,

Rollback - откат транзакции.

Работа с почтой (PopMail)

Класс PopMail предназначен для работы с электронной почтой.

Свойства:

Subject "строка"  – тема сообщения,

Body "строка" – текст сообщения,

Sender "строка" – имя отправителя. Если это свойство указывается до первого вызова Next, то является условием фильтра, иначе в этом поле находится имя отправителя сообщения,

Address  "строка" – электронный адрес отправителя,

Date "дата" – дата сообщения

DateTime "дата, время" - дата и время получения письма)

Time "время" - время получения письма

DateBegin "дата" - начальная дата (фильтр),

DateEnd "дата" - конечная дата (фильтр),

Eof – возвращает true если нет сообщений для обработки. До первого вызова Next свойство всегда возвращает false.

Методы:

PopMail (Recipients, Attachments) – инициализирует сессию с MAPI, а также загружает mapi32.dll. Recipients и Attachments - объекты типа ListBox, в которые будет возвращаться список получателей и список прикреплённых файлов для сообщения. Если Attachments не передан, то при чтении сообщения не обрабатываются вложения, что приводит к значительному ускорению работы,

Next – получает следующее сообщение и возвращает true, если сообщение получено, и false в противном случае. После вызова Next сообщение доступно через свойства класса. Данный метод, при получении сообщения реагирует на значения фильтров, указываемых через поля DateBegin, DateEnd и Sender.

UnreadOnly – указывает, что необходимо получить только непрочитанные сообщения.

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

Recipients = ListBox

Attachments = ListBox

letter = PopMail(Recipients, Attachments)

letter.DateBegin = “01.11.2009”

letter.DateEnd = “05.11.2009”

‘ Цикл пока есть сообщения

while not letter.Eof

‘ Получаем сообщение

if letter.Next() then

‘ Выводим тело сообщения

print letter.Body

end if

end.

Блокировки (LockOpers)

Класс LockOpers предусмотрен для блокировки объектов на время монопольных операций, которые выполняются из бизнес-процедур. Какие именно объекты блокируются, зависит от настройки монопольных операций (настраивается в соответствующем пункте меню “Настройка / Операции”).

Переменная класса LockOpers создается с помощью функции LockOpers без параметров.

Методы

Класс имеет следующие методы:

Add – добавить монопольную операцию. Одновременно могут быть заблокированы объекты для нескольких монопольных операций.

Параметры:

1)        строковый – идентификатор монопольной операции;

2)        строковый – название монопольной операции. Можно использовать название, отличающееся от названия в справочнике операций, если нужно конкретизировать особенности выполнения операции. Используется только в тексте сообщения о невозможности блокировать объекты;

3)        список – должен содержать значения параметров операции в формате:

<код параметра> =  <значение параметра>

Обязательными являются первые два параметра метода Add. Если третий параметр не задан или содержит значения не для всех параметров операции, остальные параметры могут быть заданы при вызове метода Lock (см. ниже).

Возвращаемого значения нет.

Lock – заблокировать объекты.

Параметры:

1)        набор данных – если задан, должен быть таблицей, которая используется как источник данных для заполнения недостающих параметров. Параметры заполняются по совпадению элементов массива общих мест (МОМ).

Параметр не является обязательным. Если параметр не задан, недостающие параметры считаются неопределенными. Обращаем внимание, что блокирование объекта с неопределенным значением ключевого параметра приводит к блокированию объекта по всем возможным значениям этого параметра.

Исключение составляет случай, когда метод Lock вызывается из бизнес-процедуры, запущенной с помощью кнопки в экранной форме. В этом случае в качестве источника данных для заполнения параметров используется МОМ, соответствующий экранной форме. При запуске процедуры из табличной формы, подчиненной к другой табличной форме (за пределами экранной формы), в качестве источника данных используется МОМ, построенный по родительской таблице.

Возвращаемое значение: true, если объекты удалось заблокировать, иначе false. Если объекты не удалось заблокировать, выдается протокол стандартной формы.

Unlock – снять блокировку с объектов.

Параметры:

1)        числовой – режим снятия блокировки (1-операция завершено, 2 – операция прервана). Если процедура будет завершена или прервана без вызова метода Unlock, все объекты будут разблокированы в режиме 2;

2)        строковый – текст, используемый в сообщении о том, что блокировка была нарушена (для тех блокировок, которые допускают нарушение).

Параметры не являются обязательными. Если не задан первый параметр, подразумевается значение 1. Если не задан второй параметр, дополнительный текст в сообщении о нарушении блокировки отсутствует.

Возвращаемого значения нет.

LockOpers

Объекты этого класса создаются функцией LockOpers без параметров.

Методы:

 

Add

добавить монопольную операцию. Одновременно могут быть заблокированы объекты для нескольких монопольных операций. Параметры:

1) строковый – идентификатор монопольной операции;
2) строковый – название монопольной операции. Можно использовать название, отличающееся от названия в справочнике операций, если нужно конкретизировать особенности выполнения операции. Используется только в тексте сообщения о невозможности блокировать объекты;
3) список – должен содержать значения параметров операции в формате:

<код параметра> =  <значение параметра>

Обязательными являются первые два параметра метода Add. Если третий параметр не задан или содержит значения не для всех параметров операции, остальные параметры могут быть заданы при вызове метода Lock (см. ниже).

Возвращаемого значения нет.

Lock

заблокировать объекты. Параметры:

1) набор данных – если задан, должен быть таблицей, которая используется как источник данных для заполнения недостающих параметров. Параметры заполняются по совпадению элементов массива общих мест (МОМ).

Параметр не является обязательным. Если параметр не задан, недостающие параметры считаются неопределенными. Обращаем внимание, что блокирование объекта с неопределенным значением ключевого параметра приводит к блокированию объекта по всем возможным значениям этого параметра.

Исключение составляет случай, когда метод Lock вызывается из бизнес-процедуры, запущенной с помощью кнопки в экранной форме. В этом случае в качестве источника данных для заполнения параметров используется МОМ, соответствующий экранной форме. При запуске процедуры из табличной формы, подчиненной к другой табличной форме (за пределами экранной формы), в качестве источника данных используется МОМ, построенный по родительской таблице.

Возвращаемое значение: true, если объекты удалось заблокировать, иначе false. Если объекты не удалось заблокировать, выдается протокол стандартной формы

Unlock

снять блокировку с объектов. Параметры:

1) числовой – режим снятия блокировки (1-операция завершено, 2 – операция прервана). Если процедура будет завершена или прервана без вызова метода Unlock, все объекты будут разблокированы в режиме 2;
2) строковый – текст, используемый в сообщении о том, что блокировка была нарушена (для тех блокировок, которые допускают нарушение).

Параметры не являются обязательными. Если на задан первый параметр, подразумевается значение 1. Если не задан второй параметр, дополнительный текст в сообщении о нарушении блокировки отсутствует.

Возвращаемого значения нет.

XML

Создается фукцией XML, которая принимает три параметра:

1. путь к файлу,

2. режим работы (0 - выгрузка xml-файла, 1 - загрузка xml-файла),

3. кодировка xml-файла.

Методы

Класс XML имеет методы: AddRoot, GetRoot и Close.

AddRoot - добавляет первый узел в xml-файл. Возвращает объект класса XMLNode.

GetRoot - читает корневой элемент из xml-файла. Возвращает объект класса XMLNode. 

Close - если выполняется формирование xml-файла, метод Close сохраняет все изменения, и закрывает xml-файл. Если выполняется чтение xml-файла, метод Close только закрывает xml-файл.

XML Node

Класс XMLNode имеет методы AddAddClosedGetChildHasChild и свойства (только для чтения) TagAttributesText.
Метод Add добавляет узел в xml-файл. Метод принимает два параметра: имя тега и список атрибутов. Возвращает новый объект класса XMLNode. Для создания списка атрибутов следует воспользоваться классом ListBox.
Метод AddClosed добавляет узел, который не имеет починенных узлов. Метод имеет три параметра: имя тегатекст (который будет добавлен между открывающим и закрывающим тегом) и список атрибутов.
Метод GetChild читает первый не прочитанный подчиненный узел. Возвращает новый объект класса XMLNode.
Метод HasChild возвращает true, если имеются вложенные узлы, не прочитанные методом GetChild.
Методы Add и AddClosed доступны если XMLNode получен методами AddRootAdd.
Свойства TagAttributesText доступны если XMLNode получен методами GetRootGetChild.

Свойства

Класс XMLNode свойства (только для чтения) Tag, Attributes, Text.

Tag  - возвращает имя тега, 

Attributes - список атрибутов в формате "имя=значение", 

Text - текст между открывающим и закрывающим тегами.

Методы

Класс XMLNode имеет методы AddAddClosedGetChildHasChild.

Add - добавляет узел в xml-файл. Метод принимает два параметра: имя тега и список атрибутов. Возвращает новый объект класса XMLNode. Для создания списка атрибутов следует воспользоваться классом ListBox.

AddClosed - добавляет узел, который не имеет починенных узлов. Метод имеет три параметра: имя тегатекст (который будет добавлен между открывающим и закрывающим тегом) и список атрибутов.

GetChild - читает первый не прочитанный подчиненный узел. Возвращает новый объект класса XMLNode.

HasChild - возвращает true, если имеются вложенные узлы, не прочитанные методом GetChild.

Методы Add и AddClosed доступны если XMLNode получен методами AddRootAdd.

Свойства Tag, Attributes, Tex доступны, если XMLNode получен методами GetRoot, GetChild.

Служебные классы

Эти классы передаются в качестве параметра в процедуры, назначенные для базового элемента массива общих мест в качестве реакции на выбор из справочника или изменение значения. Вызов процедуры производится при работе с экранной формой. Параметры доступны в процедуре с помощью массива @Arg.

Если процедура назначена для выбора из справочника, ей в качестве параметра передается объект класса F7Info. Объекты этого класса имеют следующие свойства:

Value        -        значение поля в экранной форме. При вызове процедуры содержит значение до начала корректировки. В результате работы процедура может изменить это значение другим значением, например, тем, которое выбрал оператор. Не следует с этой целью напрямую изменять значение элемента массива общих мест;

Apply        -        признак того, что значение Value должно быть записано в поле. При вызове процедуры имеет значение false. Если по окончании работы процедуры, это свойство сохранит значение false, считается, что выбор не был произведен и значение в поле не должно измениться;

F7Only        -        признак того, что процедура вызвана в качестве реакции на нажатие клавиши F7.

F7Shift        - признак того, что процедура вызвана в качестве реакции на нажатие сочетания клавиш Shift+F7.

F7Alt        - признак того, что процедура вызвана в качестве реакции на нажатие сочетания клавиш Alt+F7.

F7Ctrl        - признак того, что процедура вызвана в качестве реакции на нажатие сочетания клавиш Ctrl+F7.

Пример процедуры, осуществляющей выбор с помощью объекта класса Список:

Res = @Arg[1]
list = ListBox

list.Add("Первый вариант для выбора")

list.Add("Второй вариант для выбора")

list.Add("Третий вариант для выбора")

text = "Это пример выбора вариантов для поля экранной формы"

i = list.AskChoice("Выбор",text,0," Укажите значение ")

if (i>=0) then

 Res.Apply = true

 Res.Value = list.String(i)

end if

Если процедура назначена для проверки значения, ей в качестве параметра передается объект класса ValidInfo. Объекты этого класса имеют следующие свойства:

Value        -        новое значение, подлежащее проверке. В результате работы процедура может изменить это значение, если это необходимо по результатам проверки. Не следует с этой целью напрямую менять значение элемента массива общих мест;

OldValue        -        старое значение в поле ввода до начала корректировки;

Apply        -        признак того, что значение Value должно быть записано в поле. При вызове процедуры имеет значение true. Если по окончании работы процедуры, это свойство приобретет значение false, введенное значении отвергается: поле ввода остается в состоянии редактирования, так что оператор может либо ввести другое значение, либо нажать клавишу Esc для восстановления старого значения.

Пример процедуры, осуществляющей проверку значения:

Res = @Arg[1]
if (Res.Value=Res.OldValue) then

 return

end if

if (Res.Value="Какое-то недопустимое значение") then

 print Res.Value+" нельзя"

 Res.Apply = false

end if

Конфигурационный параметр

Объекты этого класса создаются функцией BP_Config.

Свойства:

Value позволяет задать или получить значение конфигурационного параметра.

Пример работы с Мастерами

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

Допустим, мы хотим ввести некую характеристику наших оптовых покупателей, на основании которой будем регулиро­вать цены отпуска товаров. Характеристика должна выбирать­ся из перечня стандартных вариантов, который хранится в по­полняемом справочнике. Для этого, в первую очередь, надо такой справочник создать. Воспользуемся мастером таблиц, и с помощью кнопки Новое описание (см. раздел 2.1. Мастер таблиц настоящего руководства) создадим таблицу с именем и псевдонимом SPR_XAR, ком­ментарием «Справочник характеристик покупателя» и двумя полями COD_XAR (числовое целое длиной 3, содержащее уникальные значения) и NAME_XAR (символьное длиной 30). Предварительно надо выбрать имя базы данных и тип таблицы. Если таблица хранится на SQL-сервере, не забудьте указать на закладке Спец. настройка, что она создается SQL-запросом и для наглядности убедитесь, что запрос подготов­лен программой правильно. Определите первичный индекс по полю COD_XAR и еще один по сочетанию полей NAME_XAR и COD_XAR, чтобы обеспечить уникальность индексных выражений и упорядочивание по алфавиту одно­временно.

После этого можно воспользоваться кнопками Создать таб­лицу на закладке Общие сведения (см. раздел 2.1.1 настоящего руководства) и Создать все на закладке Индексы (см. раздел 2.1.3 настоящего руководства).

Таблица создана, но, чтобы вводить в нее данные, надо придать ей табличную форму (см. раздел 2.2. Мастер табличных форм настоящего руководства). После определения общих характеристик рекомендуем воспользоваться кнопкой Добавить все на закладке Колонки (см. раздел 2.2.2 настоящего руководства).

Теперь надо дать пользователю возможность пополнять данный справочник, используя только что созданную таблич­ную форму. Зайдем в Администратор меню (см. раздел 1.61. Администратор меню настоящего руководства) и добавим новый пункт «Характеристики покупате­ля» в меню Справочники, определив нашу табличную форму в качестве вызываемого объекта.

Но что толку от справочника характеристик самого по себе? Теперь нам надо добавить соответствующее поле в спра­вочник Внешние партнеры. Для этого снова вернемся в Мастер таблиц, выберем режим редактирования таблицы Сведе­ния о партнерах и на закладке Поля (см. раздел 2.1.2 настоящего руководства) добавим новое поле COD_XAR (числовое целое длиной 3, но уж никак не уникальное), которому припишем строгий контроль по спра­вочнику SPR_XAR. Здесь же создадим новое место в эталонном массиве (см. разделы 2.1.2. Закладка «Поля таблицы» и 7. Редактирование эталонного массива общих мест настоящего руководства) с базовым типом Просто целое число и псевдонимом места SPR_XAR в группе Плательщик. Надо сказать, что это наиболее быстрый (хотя и не вполне очевидный — типич­ная «маленькая хитрость») способ указать программе, что это поле нужно всегда переносить в любую таблицу при вводе кода партнера.

Такие же поля нужно с помощью мастера таблиц создать и в таблицах NAKLAD2 и СНЕТ, чтобы обеспечить пере­менную, которую можно будет использовать в формуле расчета отпускной цены. Пусть оно будет скрытым, показывать его в работе необязательно. Впрочем, если кто-нибудь счита­ет иначе - его право воспользоваться мастером экранных форм. Зато обязательно нужно нажать кнопку Массив общих мест (см. раздел 2.1.2. Закладка «Поля таблицы» настоящего руководства) и перетащить эталонный элемент SPR_XAR в группу Плательщик массива каждой из таблиц. Можно указать для только что введенного поля режим забор значения из справочника с тем же номером группы полей, что и у поля Код плательщика. Но в принци­пе, за счет «хитрого» использования массива общих мест (см. выше) это необязательно.

Теперь для полного счастья нам не хватает только одного - возможности охарактеризовать конкретного партнера. Не бу­дем перегружать табличную форму справочника. Войдем в ма­стер экранных форм (см. раздел 2.3 настоящего руководства), откроем для редактирования форму Сведения о партнере, найдем в ней свободное место (или создадим его, переместив некоторые поля - см. раздел 2.3.1. Панель инструментов настоящего руководства), с помощью кнопки TFEDIT той же пане­ли разместим поле ввода и, воспользовавшись контекстным меню для элементов формы (см. 2.3.3), свяжем это поле с нужным полем таблицы партнеров.

Задача выполнена. Если Вы хотите иметь печатный доку­мент, в котором обоснован выбор отпускных цен, то зайдите еще и в Мастер печатных форм (см. раздел 2.4 настоящего руководства) и, воспользовавшись кнопкой Новая из текущей, создайте копию любого счета или накладной, в которую введете новый элемент поле (см. раздел 2.4.1. Правила редактирования внутренних шаблонов настоящего руководства), связав его с нужным элементом массива общих мест или полем таблицы и снабдив поясняющим текстом.

Примеры запросов

Модуль КОМПАС: Складской учет. Справочник НОМЕНКЛАТУРА

Запрос осуществляет выбор номенклатуры из номенклатурного справочника. К номенклатурному справочнику внешним соединением подключена таблица Складские подкарточки (по партиям прихода), по которой суммируются текущие остатки и остатки на начало периода. Условие выбора передается в запрос как макропараметр %s.

В запросе осуществляется группировка по большому количеству полей номенклатурного справочника.

SELECT

SPR_NOM.COD, SPR_NOM.SUBCOD, SPR_NOM.PROD_NAME,

SPR_NOM.PROD_CHAR, SPR_NOM.SERT_NO,

SPR_NOM.ED_IZM, SPR_NOM.VAL_COD, SPR_NOM.SX_NAL,

SPR_NOM.BUCH_CHET, SPR_NOM.TOV_VES,

SPR_NOM.TOV_OBM, SPR_NOM.ZAKAZ, SPR_NOM.REZERV,

SUM(SUBCARDS.OST+SUBCARDS.OST_NACH) AS COLUMN14

FROM SPR_NOM LEFT OUTER JOIN SUBCARDS ON

SPR_NOM.COD=SUBCARDS.NOM_NO

%s

GROUP BY

SPR_NOM.COD,SPR_NOM.SUBCOD, SPR_NOM.PROD_NAME, SPR_NOM.PROD_CHAR, SPR_NOM.SERT_NO,

SPR_NOM.ED_IZM, SPR_NOM.VAL_COD, SPR_NOM.SX_NAL, SPR_NOM.BUCH_CHET, SPR_NOM.TOV_VES,

SPR_NOM.TOV_OBM, SPR_NOM.ZAKAZ, SPR_NOM.REZERV

Модуль КОМПАС: Кадровый учет. Печать Графика отпусков (форма Т-7)

Внешний select выводит сгруппированные по табельному номеру и отсортированные по отделу и фамилии данные результата внутреннего select с алиасом a. Во внутреннем select данные группируются по табельному номеру и коду трудовых отношений, а выбираются из таблицы графика отпусков и лево присоединенной таблицы отделов. В качестве параметров в запрос передается тип и код документа

select a.TAB_N, MAX(a.D_NAME) as D_NAME,

MAX(a.T_DAYS) as T_DAYS,

MAX(a.FAMALY) as FAMALY,

MAX(a.IMY_OT) as IMY_OT,

MAX(a.DOLGN) as DOLGN,

MIN(a.DATA_N) as DATA_N,

MIN(a.DATA_P_N) as DATA_P_N,

MIN(a.DATA_F_N) as DATA_F_N,

MAX(a.COMM) as COMM,

MAX(a.COMM2) as COMM2

from

(select OTPUSK_GR_M.TAB_N, MAX(OTDEL.D_NAME) as D_NAME,

MAX(OTPUSK_GR_M.FAMALY) as FAMALY ,

MAX(OTPUSK_GR_M.IMY_OT) as IMY_OT,

MAX(OTPUSK_GR_M.DOLGN) as DOLGN,

SUM(OTPUSK_GR_M.T_DAYS) as T_DAYS,

MIN(OTPUSK_GR_M.DATA_N) as DATA_N,

MIN(OTPUSK_GR_M.DATA_P_N) as DATA_P_N,

MIN(OTPUSK_GR_M.DATA_F_N) as DATA_F_N,

MAX(OTPUSK_GR_M.COMM) as COMM,

MAX(OTPUSK_GR_M.COMM2) as COMM2,

OTPUSK_GR_M.TRUD_OTN

from OTPUSK_GR_M

left join OTDEL on ( OTDEL.COD = OTPUSK_GR_M.OTDEL)

where

OTPUSK_GR_M.TYP_D = :type_doc

and OTPUSK_GR_M.DOK_ID = :id_doc

group by OTPUSK_GR_M.TAB_N, OTPUSK_GR_M.TRUD_OTN) a

group by a.TAB_N

order by D_NAME, FAMALY

Примеры бизнес-процедур

Модуль КОМПАС: Управление трудовыми ресурсами. Процедура выбора из справочника в ТФ BANK_PRIZ (BANK_PRIZ_VYB)

'Проверяем из какого поля вызывается справочник. CURFIELD содержит имя текущего поля

if CURFIELD = "RS1_PL" or CURFIELD = "RS1_POL" then

'Если поле- расчетный счет плательщика или получателя

if CURFIELD = "RS1_PL" then

m_cod = COD1_PL

m_who = "плательщика"

else

m_cod = COD1_POL

m_who = "получателя"

end if

m_cap = "Выбор расчетного счета "+m_who

'Если код не заполнен выдается сообщение о том, что его надо заполнить

if m_cod = 0 then

MessageBox m_cap, "Сначала укажите код "+m_who, "I"

Return

end if

'в m_tab подключаем под фильтром DOP_ACC- справочник расчетных счетов парнера

m_tab = TLookupForm "DOP_ACC",0,"MAIN.COD1="+m_cod,"1L"

m_tab.Caption = m_cap

' Показываем справочник для выбора из него

if m_tab.ShowLookup then

'если выбор сделан присваиваем текущему полю выбранный счет

SetValue CURFIELD, m_tab.RS1

end if

end if

if CURFIELD = "COMM1_SH" then

'Если поле- Шаблон для назначения платежа в платежном поручении

'Формируется список для выбора

m_lst = ListBox

m_lst.Add "<ФИО> - фамилия, имя и отчество работника"

m_lst.Add "<ВЫПЛАТА> - часть вида выплаты до предлога 'за'"

m_lst.Add "<МЕСЯЦ> - месяц прописью (не включает предлог 'за')"

m_lst.Add "<ДОГОВОР> - номер договора для зарплатного проекта"

m_lst.Add "<ДАТА_ДОГ> - дата договора для зарплатного проекта"

m_lst.Add "<РЕЕСТР> - номер реестра при выгрузке в XML или CSV"

m_lst.Add "<ДАТА> - дата реестра при выгрузке в XML или CSV"

m_lst.Add "<GUID> - уникальный идентификатор файла при выгрузке"

m_lst.Add "<РУБ_КОП> - сумма в рублях и копейках цифрами"

m_lst.Add "<ПРОПИСЬ> - сумма прописью"

m_msg = "Мнемоника будет добавлена в КОНЕЦ текста"

m_txt = " Какую мнемонику добавить в текст? "

'Предоставляется выбор из списка

m_res = m_lst.AskChoice("Вставка мнемоники в текст", m_msg, 0, m_txt)

if m_res >= 0 then

'Если выбор сделан формируется техт для присвоения текущему полю

m_msg = m_lst.String(m_res)

m_pos = at(" - ", m_msg)

m_msg = Left(m_msg, m_pos-1)

m_txt = Rtrim(GetValue(CURFIELD))

if m_txt <> "" then

m_txt = m_txt + " "

end if

SetValue CURFIELD, m_txt+m_msg

end if

end if

Модуль КОМПАС: Управление затратами. Процедура выбора статьи затрат для договора (Статьи.DOG_S_S_VYB)

'Процедура представляет собой подпрограмму, в которую в качестве параметра передается код (ID) договора

m_id = @arg[1]

IF m_id > 0 THEN

'Если код договора больше нуля запрос выбирает подходящие записи из таблицы статей затрат по договору

m_qry = SQL "SELECT COUNT (DOG_S_S.ID) KOL, G_DOG.TYP_D, G_DOG.D_PODP, G_DOG.N_DOG_M

FROM G_DOG, DOG_S_S

WHERE G_DOG.ID = "+m_id+" AND DOG_S_S.ID_D = G_DOG.ID AND DOG_S_S.TIP_D = G_DOG.TYP_D

GROUP BY G_DOG.TYP_D, G_DOG.D_PODP, G_DOG.N_DOG_M"

IF m_qry.KOL > 0 THEN

'Если нашлись статьи затрат по договору,предлагается выбрать нужную статью

m_tab = TLookupForm "DOG_S_S", 0, "MAIN.ID_D = "+m_id+" AND MAIN.TIP_D = "+m_qry.TYP_D, "1L"

m_tab.Caption = "Выбор статьи затрат для договора "+Trim(m_qry.N_DOG_M)+" от "+dtoc(m_qry.D_PODP)

IF m_tab.ShowLookup THEN

'Если выбор сделан, процедура возвращает выбранное значение

return m_tab.S_S

END IF

Return ""

END IF

END IF

'Если код договора не задан, выбор из полного справочника статей затра

m_tab = TLookupForm "KOD_S_S"

IF m_tab.ShowLookup THEN

return m_tab.S_S

END IF

Return ""

Модуль КОМПАС: Управление трудовыми ресурсами. Фрагмент процедуры формирования сведений об остатках по видам отпусков (PRIKAZ_OTP_INFO)

C помощью конструкции select case анализируется содержимое поля Текполе.

SELECT CASE ТЕКПОЛЕ

CASE ...

CASE ...

END SELECT

Ниже цикл по набору данных qry, полученному как результат запроса. Пример показа анализа select case по содержимому в поле W_DAYS и использование в case символьных значений.

while not qry.Eof

wdays = "рабочих дней по графику"

select case qry.W_DAYS

case "5"

wdays = "рабочих дней по 5-дневной неделе"

case "6"

wdays = "рабочих дней по 6-дневной неделе"

case "7"

wdays = "календарных дней"

case "K"

wdays = "календарных дней, включая праздники" ' K – латинская

case "К"

wdays = "календарных дней, включая праздники" ' К - русская

end select

ost = GetOtpOst(tabn, qry.BID_OTP, m_data, qry.TRUD_OTN, 2)

prot.Add("")

prot.Add("Вид отпуска: " + Str(qry.BID_OTP) + " - " + qry.OTP_NAME)

prot.Add("Трудовые отношения: " + qry.TRUD_NAME)

prot.Add("Остаток отпуска: " + Str(DecRound(ost, 2)) + " " + wdays)

qry.goNext()

wend

Модуль КОМПАС: Упрощенная система налогообложения. [Расчет раздела 3 Декларации по НДС (НДС.R3_CALC_BTN)

u = UsedObject

q = SQL "select ID from NO_NDS_HEAD where ID = " + Str(u.ID)

if q.Bof and q.Eof then

MessageBox("Внимание!", "Перед расчетом новую запись надо сохранить.")

Return

end if

prot = ListBox

WaitBox("Расчет раздела 3")

'Здесь в зависимости от значения поля VERSION в текущем объекте для расчета вызываются различные БП. На этот раз в

CASE используются числовые параметры

select case u.VERSION

case 2

ret = call("Декларация НДС.R3_CALC_2019", u)

case 1

ret = call("Декларация НДС.R3_CALC_2017", u)

case 0

ret = call("Декларация НДС.R3_CALC", u)

end select

Пример использования функции GetFieldList

‘ У функции 2 параметра: 1 – список, 2 – имя таблицы. Результат – список заполняется строками <Имя поля>=<Описание поля>

‘ Фрагмент процедуры:

a1=ListBOX

GetFieldList(a1,"SPR_CURS")

‘Здесь a1- новый пустой список, SPR_KURS – имя таблицы – Справочник курсов волют

kol1=a1.COUNT

for k=0 to  kol1-1

‘ В цикле выводятся строки с именами и описаниями полей таблицы SPR_CURS

print a1.string(k)

next

ЯФПК и таблица транслятора

Данный раздел включен в версии с полным набором МАСТЕРОВ «КОМПАСА».

Вы уже убедились, что в пакете «КОМПАС» есть множество способов организовать произвольный доступ к дан­ным, хранящимся в базе, и дать пользователю возможность работать с ними. Это и табличные, и экранные формы, и биз­нес — процедуры, и SQL-запросы. Тем не менее, существует еще один способ организовать пользователю возможность ра­боты с данными. Он унаследован с незапамятных времен и называется ЯФПК (язык формул и форм системы (пакета) «КОМПАС»). Сами переменные ЯФПК имеют достаточно очевидные назва­ния и комментарии, поэтому в документации мы не будем приводить их полный перечень — достаточно контекстной по­мощи. Поговорим о другом — дело в том, что системный администратор, использующий версию Элит, имеет доступ к пополнению перечня переменных языка. Конечно, эта возмож­ность является избыточной и предназначена, в основном, для авторов системы, но для создания формул расчета сумм проводок в типовых операциях это достаточно удобно, поэтому вкратце на ней остановимся.

Если Вы войдете в пункт Таблица транслятора меню На­стройка и нажмете на панели инструментов кнопку ADDRECB Новая запись, а потом кнопку SFORMB Экранная форма, то перед Вами откроется окно описания переменной ЯФПК (Рис. 3.1.).

В открывшемся окне на закладке Описание Вы можете задать Наименование переменной, отнести ее к какой-то из групп или создать новую. Далее надо определить тип возвращаемого значения, таблицу-источник данных и одну из трех стандартных функций отбора данных: Суммирование по таб­лице, Суммирование по ЖХО и его архиву (только для подве­дения итогов по суммам хозяйственных операций за разные отчетные периоды) или Поиск значения в таблице. Понятно, что первые две функции будут всегда выдавать числовой результат.

67

Рис. 3.1. Описание переменной ЯФПК

Затем следует записать формулу, в которой, в зависимости от выставленного в правом нижнем углу окна флажка, можно использовать только операторы языка SQL (практически здесь используются имена полей для функции поиска по справочни­ку) или полные возможности ЯФПК, которые, впрочем, тоже допускают наименования полей. В случае функций суммирова­ния Вы и должны ввести сюда имя поля, по которому будет собираться сумма, а в нижнем раскрывающемся списке выбрать таблицу, по которой будет производиться отбор записей.

В правой части окна можно описать до пяти аргументов (или параметров), которые обычно используются для ограни­чения отбора данных или задания определяющего значения, описав их тип и выражение для значения по умолчанию. При использова­нии переменных в работе для написания разнообразных формул аргументы задаются в круглых или квадратных скобках после имени переменной. Список аргументов разделяется за­пятыми. При этом вместо каждого аргумента, кроме его кон­кретного значения, можно будет использовать значок «*», что эквивалентно записи «любое», или значок «^» — тогда в качестве его значения будет вычислено заданное здесь выра­жение для умолчания.

На второй закладке Условия сбора можно задать до 12 логических выражений, которые, объединенные по И, будут ограничивать отбор записей в базе (либо искать конкретную запись в случае использования функции поиска по справочни­ку). Условия также описываются в терминах полей баз, пере­менных ЯФПК и функций от этих переменных. Чтобы вклю­чить в условие вместо какой-то переменной значение аргумента (параметр), нужно использовать конструкцию @<число>, где под числом имеется в виду порядковый номер аргумента в перечне (см. выше).

На этом мы закончим краткий экскурс в создание новых переменных ЯФПК, отослав системного администратора к об­разцам переменных и функций, включенных в поставку. Более подробно о правилах записи формул Вы можете прочитать в главах Типы данных, используемые в формулах и Пере­чень стандартных функций книги «Общие правила работы».

Примеры формул ЯФПК

Выбор расшифровки подписи в печатной форме акта AKT_A

По коду получателя POL.КОД в Справочнике партнеров PL_TR находится фамилия представителя. Если она заполнена, то в качестве результата берется должность представителя в родительном падеже DOLG_UPRED_R из PL_TR. В противном случае возвращается должность руководителя в родительном падеже DOLG_R.

ksql»Fml»»IIF(LEN(TRIM(РАСШИФР("PL_TR;FIO_UPRED;COD1",str(POL.КОД))))>0,

РАСШИФР("PL_TR;DOLG_UPRED_R;COD1",str(POL.КОД)),РАСШИФР("PL_TR;DOLG_R

;COD1",str(POL.КОД)))»

Выбор расшифровки подписи бухгалтера в печатной форме счета Schet_4

В таблице Значения параметров конфигурации (CFGDB_VAL) определяется код предприятия. По найденному коду в справочнике партнеров выбирается фамилия бухгалтера.

ksql»Fml»»РАСШИФР("PL_TR;FIO_BUH;COD1",РАСШИФР("CFGDB_VAL;XVALUE;XAR_OBOZ","kfg_self"))»

Настройка импорта из Excel

Данный раздел включен в версии с полным набором МАСТЕРОВ КОМПАСА.

В процессе работы бывает нужно не только выводить дан­ные в Excel для их дальнейшей обработки, но и принимать их оттуда. Причем, как правило, прием данных происходит регу­лярно, с отбором по вполне определенным принципам, поэтому хотелось бы единожды описать эти принципы, а потом делать это автоматически, по раз и навсегда определенным схемам.

Пункт меню Настройка импорта из Excel как раз и служит для создания, редактирования и удаления схем импорта. Схема состоит из псевдонима, краткого наименования и сово­купности настроек.

После выбора пункта меню, все существующие схемы импорта отображаются в списке. Список состоит из трех коло­нок: Псевдоним, Описание и Таблица. Псевдоним схемы — это наименование, с которым работает программа. Он может не совпадать с названием таблицы базы данных, в которую производится импорт, и таблицы Excel, которая является ис­точником информации. Псевдоним схемы должен быть уни­кальным. Описание схемы — это комментарий, поясняющий назначение отчета. Может включать в себя любые символы. В колонке Таблица указывается псевдоним таблицы базы дан­ных, в которую должен производиться импорт в соответствии с данной схемой. Схемы могут работать в двух режимах: с возможностью выбора столбцов и строк по параметрам ячейки для файлов Excel версии 4.0 и выше или без данной возможности, но при этом поддерживаются все версии Excel. Информация о том, в каком режиме работает схема, отображается в нижней части окна: в строке статуса. Выбрать режим работы можно только при создании новой схемы или новой схемы из текущей. Все схемы настроек находятся в специаль­ном файле с расширением dat. В стандартной поставке этот файл имеет имя scheme.dat.

В окне настройки схем импорта расположены кнопки:

Окно описания схемы импорта разделено на три закладки. Описание закладки Общие 4данные дано в п.4.1. Описание закладки Конвертация дано в п.4.2. Закладка Специальные настройки включает всего лишь два пункта:

Если схема работает в режиме без возможности отбора колонок, появляются дополнительные настройки.

После того, как сделаны все настройки, описанные выше, а также в 4.1. Закладка «Общие данные» и 4.2. Закладка «Конвертация», нажмите кнопку ОК для сохранения схемы импорта. Еще до выхода из режима корректировки схемы Вы можете провести пробный импорт данных, нажав кнопку Применить схему. Следует обратить внимание, что результаты импорта данных помечаются в специальном поле таблицы с именем GM_TRAN. Если такого поля в таблице нет, оно будет, с Вашего согласия, автоматически добавлено. В указанное поле записывается псевдоним схемы с префиксом Е, а также мне­моническое обозначение текущего отчетного периода. Для от­бора результатов импорта при их просмотре в описании табли­цы должен быть предусмотрен индекс по полю GM_TRAN. Если такого индекса нет, он будет автоматически добавлен. Если в правилах заполнения таблицы данными уже определе­но поле для записи отчетного периода, то в поле GM_TRAN будет записываться только псевдоним схемы импорта с пре­фиксом Е. В этом случае в описании таблицы должен быть индекс по сочетанию полей с отчетным периодом и GM_TRAN. При повторном проведении импорта с одним и тем же псевдонимом в течение одного отчетного периода результаты предыдущего импорта удаляются и замещаются вновь полученными результатами.

Закладка «Общие данные»

На закладке Общие данные следует выбрать для схемы псевдоним и краткое описание, указать, в какую таблицу будет производиться импорт данных, и какая табличная форма будет использоваться для показа результатов импорта. Для выбора таблицы и табличной формы из списка используйте кнопки Выбрать, будут вызваны Мастер таблиц и Мастер таблич­ных форм, соответственно. С их помощью таблицу и таблич­ную форму можно не только выбрать, но и создать или откор­ректировать. Кнопка Просмотреть позволяет вызывать выбранную табличную форму на экран.

С помощью кнопки Выбрать/Посмотреть следует выбрать Excel-таблицу, из которой будет производиться импорт. Если импорт в соответствии с настройкой предполагается производить из разных Excel-таблиц, следует выбрать одну из них в качестве образца. В Excel-таблице надо выбрать одну из страниц (опять же, в качестве образца) и произвести в ней настройку условий отбора колонок и строк, если выбран режим работы с отбором по параметрам ячейки. В случае другого варианта отобрать записи можно с помощью стандартной установки фильтра. Названия выбранной таблицы и страницы будут автоматически записаны в поля Имя файла и Название страницы. Впрочем, непосредственно при проведении импорта Вам будет предоставлена возможность выбрать любую Excel-таблицу и любую страницу в ней.

Условия отбора колонок и строк определяются в специаль­ном диалоговом окне, которое вызывается на экран в двух случаях: в процессе настройки схемы импорта с помощью кнопки Выбрать/Посмотреть и при проведении импорта — автоматически, после выбора Excel-таблицы и номера страни­цы в ней.

В процессе настройки окно содержит кнопку OPENB От­крыть файл, с помощью которой можно выбрать нужную Excel-таблицу. После этого следует настроиться на подходя­щую страницу и описать правила отбора колонок и строк.

Отбор строк описывается путем идентификации верхней строки, предшествующей блоку строк с данными, нижней строки, следующей сразу за блоком строк с данными, и списка строк, исключаемых из блока строк с данными. Иденти­фикация производится не по номерам строк, которые в дру­гой Excel-таблице или на другой странице могут быть другими, а по визуальным характеристикам строк. Попробу­ем пояснить. Допустим, Вы собираетесь импортировать таб­лицы бухгалтерских проводок по затратам, упорядоченных по возрастанию номеров счета «в дебет». Вам всегда будут нужны бухгалтерские счета с 20 по 26. Значит, Вам надо «ска­зать» программе, чтобы она всегда выбирала строки, только начиная с 20 счета, и никогда не трогала строки со счетами больше 26.

Для того чтобы идентифицировать верхнюю ограничиваю­щую строку, следует найти ячейку, визуально отличающую ее от всех предшествующих строк (в нашем примере — счет 19), сделать эту ячейку текущей, щелкнув по ней левой клавишей мыши, тут же щелкнуть правой и последовательно выбрать из контекстного меню пункты: Определение строк, Верхняя граница и далее один из пунктов: По параметрам ячейки (то есть по цвету и закраске), По тексту в ячейке или По параметрам и тексту, в зависимости от того, чем ячейка в данной строке отличается от аналогичных ячеек в предшествующих строках.

Точно так же осуществляется идентификация нижней огра­ничивающей строки, однако вместо пункта Верхняя граница в контекстном меню следует выбирать пункт Нижняя граница.

Список исключаемых строк описывается путем постепен­ного наращивания. Для каждой строки, исключаемой из блока, следует найти ячейку, визуально отличающую ее от всех строк, которые должны использоваться при импорте, сделать эту ячейку текущей, щелкнуть правой клавишей мыши, и последова­тельно выбрать из контекстного меню пункты: Определение строк, Исключить и далее один из пунктов: По параметрам ячейки, По тексту в ячейке или По параметрам и тексту. Повторное выполнение этой операции приведет к добавлению нового условия в список исключений. Если условие было добавлено ошибочно, список придется очистить с помощью пункта Очистить список, и описание исключений надо будет повторить еще раз. Нет необходимости добавлять строку в список исключений только потому, что некоторые данные в ней не заполнены. Исключение таких строк может быть про­изведено автоматически, если при описании правила заполне­ния данными (см. 4.2. Закладка «Конвертация») Вы укажете, что соответствующее поле обязательно должно быть заполнено.

Отбор колонок может осуществляться как по номерам, так и по визуальным характеристикам колонок. Для того, чтобы отметить колонку по номеру, достаточно щелкнуть левой клавишей мыши в ячейке ее заголовка. Повторный щелчок снимает отметку. Для того, чтобы отметить колонку по ее визуальным характеристикам, используется метод постепенного наращивания списка колонок. Для каждой колонки, подлежащей отбору по визуаль­ным характеристикам, следует найти ячейку, отли­чающую ее по внешнему виду от всех колонок, которые не должны использовать­ся при импорте, сделать эту ячейку текущей, щелкнуть правой клавишей мыши, выбрать из контекстного меню пункт Определе­ние колонок и далее один из пунктов: По параметрам ячей­ки, По тексту в ячейке или По параметрам и тексту. По­вторное выполнение этой операции приведет к добавлению нового условия отбора колонок. Если условие было добавлено ошибочно, список придется очистить с помощью пункта Очи­стить список, и описание отбора колонок повто­рить еще раз. Следует обратить внимание, что если колонка отмечена по номеру, то импорт всегда будет производиться из колонки с данным номером. Если же колонка отмечена по визуальным характеристикам, то для разных Excel-таблиц им­порт может производиться из разных колонок.

После того, как правила отбора колонок будут полностью описаны, следует нажать на кнопку ОК. При нажатии на кноп­ку Отменить сделанные настройки будут отменены и заменены теми, что были до начала редактирования.

При проведении импорта кнопка Открыть файл отсут­ствует, так как выбор файла осуществляется до вызова табли­цы настройки на экран. В контекстном меню отсутствует пункт Определение колонок, так как в этом режиме переопределе­ние правил отбора колонок не допускается. При нажатии на кнопку ОК внесенные изменения будут использованы при импорте. При нажатии кнопки Отменить изменения учитываться не будут. В любом случае, однако, импорт данных будет про­веден.

Названия выбранной таблицы и страницы будут автомати­чески записаны в поля Имя файла и Название страницы.

Закладка «Конвертация»

На закладке Конвертация (Рис. 4.1.) следует описать прави­ла заполнения таблицы данными при импорте из Excel-таблицы.

Настройка заполнения полей данными осуществляется уже после того, как выбрана Excel-таблица и описаны правила отбора колонок и строк (см. 4.1 Закладка «Общие данные»). До этого страница с описаниями правил заполнения таблицы данными закрыта.

68

Рис. 4.1. Описание схемы импорта из Excel, конвертация данных

В левом верхнем углу представлен список полей таблицы базы данных, в которую должен производиться импорт. При перемещении по списку под ним визуализируются основные параметры поля таблицы. Для любого из полей таблицы мо­жет быть задано условие заполнения постоянными данными или установлена связь этого поля с колонкой Excel-таблицы.

Для того, чтобы задать условие заполнения поля стандарт­ными данными, выберите поле в списке и нажмите кнопку Заполнить. На экране появится окно настройки, в котором Вы можете либо занести данные, либо нажать одну из двух кнопок:

После нажатия на кнопку ОК условие заполнения поля будет принято и против названия поля в списке появится отметка FILL.

Для того, чтобы установить связь между полем и колонкой Excel-таблицы, выберите поле в списке, выберите нужную ко­лонку в правой части окна с помощью раскрывающегося списка и нажмите кнопку Установить связь. При этом против названия поля в списке появится отметка CONNECT.

Если для поля установлена связь с колонкой, может быть задан дополнительный режим отбора, при котором импорт дан­ных осуществляется только из тех строк Excel-таблицы, в которых соответствующая ячейка заполнена. Чтобы включить та­кой режим, установите для выбранного поля флажок Поле не может быть пустым.

Существует возможность автоматического связывания полей источника и приёмника, однако она присутствует только в режиме без возможности отбора колонок.

Утилиты управления данными

В этом разделе мы расскажем Вам о нескольких достаточ­но простых, но порой весьма необходимых утилитах, связанных с управлением данными в системе «КОМПАС» и расположенных в стандартной поставке в меню Настройка.

Метаданные

Метаданные – это данные, которые являются описанием других данных, их характеристик, местонахождения, способов использования. Применяются для обеспечения гибкости и настраиваемости приложений.

В ERP- «КОМПАС» под метаданными подразумеваются данные, обеспечивающие возможности настройки системы и хранящиеся в DAT-файлах, например, файлы TBLMAN.DAT (содержит описания таблиц), TFMAN.DAT (описание табличных форм), FORMS.DAT (описание экранных форм) и т.п. Часть DAT-файлов является общими для всех модулей системы, часть используется при работе определенных типов модулей.

Хранение метаданных

Метаданные ERP-системы «КОМПАС» хранятся в специальных DAT-файлах, которые устанавливаются отдельно от базы данных, занимая отдельное место на жестком диске компьютера. Для использования этих файлов при работе приложений необходима настройка путей к месту их хранения.

При установке приложения на одно рабочее место (компьютер), DAT-файлы устанавливаются автоматически на тот же компьютер, путь к месту их расположения также прописывается автоматически.

При многопользовательском режиме работы с системой (при наличии некоторого количества рабочих мест), при инсталляции программы DAT-файлы также устанавливаются автоматически на каждый компьютер. В этом случае при обновлении метаданных возникает необходимость внесения изменений в DAT-файлы каждого рабочего места, и может произойти рассогласование метаданных на разных РМ, что приведет к нарушению корректности работы ERP-системы.

Для того, чтобы компенсировать указанные недостатки, может быть использован следующий режим работы:

Существует другой способ работы с DAT-файлами при многопользовательском режиме работы: место хранения DAT-файлов может быть перенесено в общий ресурс, и в каждом модуле каждого рабочего места произведена настройка путей к месту хранения этих файлов (с указанием на общий ресурс). Как правило, на сервере выделяется один каталог для общих DAT-файлов и по отдельному каталогу для файлов каждого типа модулей. При этом настраивается полный доступ для работы с этими каталогами (чтение и запись).

Недостатком хранения DAT-файлов в общем ресурсе является:

Многослойная структура хранения метаданных

Начиная с версии 12.86, в ERP-системе "КОМПАС" используется многослойная структура хранения метаданных, которая обеспечивает проведение гибких настроек функциональных возможностей системы на различных уровнях.

Базовая функциональность хранится в ядре метаданных. Метаданные ядра и стандартной функциональности системы не могут быть удалены, а метаданные ядра не могут быть изменены. Специфическая функциональность создается и хранится в слоях клиентских настроек, дополняющих ядро и стандартную функциональность. Когда пользователи модифицируют функциональность, изменения сохраняются в том из слоев клиентских настроек, который указан в качестве текущего. В этом же слое сохраняются новые объекты, описывающие функциональность пользователя системы и отсутствующие в слоях поставки.

Многослойная структура хранения метаданных позволяет при работе приложения использовать несколько однотипных dat-файлов (например, файлов с описаниями таблиц).

Рассмотрим в общих чертах принципы хранения и использования объектов метаданных в многослойной структуре на примере dat-файла Tblman.dat.

В качестве объектов метаданных в данном случае выступают таблицы, описание которых хранится в файлах.._ Tblman.dat.

В исходном стандартном (входящим в стандартную поставку) файле TBLMAN.DAT присутствует описание 4-х таблиц (на рисунке – слой 0).

После передачи Клиенту этим Клиентом самостоятельно произведены настройки, в результате которых изменилось описание таблицы 1 (Т.1) и добавилось новое описание таблицы 5 (Т.5). Эти клиентские настройки сохранены уже в другом слое – слое 50. При этом стандартные описания таблиц (слой 0) не претерпели никаких изменений.

При запуске программы считывание описаний объектов метаданных (в данном случае – таблиц) будет производиться следующим образом:

  • В самом "верхнем" слое разыскивается файл .._ TBLMAN.DAT. В данном случае – это файл USER_TBLMAN.DAT слоя 50. Из этого файла считываются описания имеющихся в нем объектов;

  • Производится поиск файла .._ TBLMAN.DAT в следующем слое, расположенном "ниже". В нашем примере это файл TBLMAN.DAT слоя 0. Из этого слоя считываются описания имеющихся объектов, кроме тех, которые уже были считаны.

В этом примере описания таблиц Т.1 и Т.5 считаны из слоя 50 – эти описания были модифицированы или созданы Клиентом самостоятельно.

Описания таблиц Т.2, Т.3 и Т.4 считаны из слоя 0 – слоя стандартной поставки, описание этих таблиц не изменялось.

Хранение стандартных метаданных (ядра и стандартной функциональности) в местах (слоях), расположенных отдельно от настроек Клиентов, позволяет защитить эти данные от несанкционированного их изменения и обеспечить стабильную работоспособность системы. Наличие этих файлов в неизменном виде позволяет быстро отказаться от сделанных клиентских настроек и вернуться к стандартной версии программы.

Приоритеты метаданных

Принадлежность метаданных (dat-файла) какому-либо слою определяется приоритетом этого dat-файла.

Условно слои метаданных посредством использования приоритетов делятся на группы. Деление определяется следующими настройками:

attention Внимание!

Поставка версии 12.86 предусматривает наличие двух слоев хранения метаданных:

  1. Слой, в котором хранятся стандартные описания объектов метаданных. В этом слое размещаются dat-файлы версии поставки. Описания метаданных в этом слое не могут быть изменены клиентами. Этот слой определяется как ReadOnlyPriority и имеет приоритет 0.

  2. Слой, в котором сохраняются описания объектов метаданных, которые когда-либо изменялись клиентом и отличаются от стандартных. Этот слой определяется как CurrentPriority и имеет приоритет 50.

Таким образом, с использованием многослойной структуры хранения метаданных по описанным выше принципам, dat-файл версии поставки остается в неизменном виде, все объекты, которые когда-либо изменялись клиентом и отличаются от присутствующих в стандартной версии, размещаются в другом dat-файле. При работе системы считывается информация одновременно из двух dat-файлов с описаниями однородных объектов:

layers_yes

Порядок обновления версии

Обновление версии производится с использованием нового релиза утилиты обновления (UPRGMAN).

При использовании многослойной структуры обновление метаданных производится по следующему принципу:

update_new

Хранение настроек

Все пути к dat-файлам модуля хранятся в файлах конфигурации, имеющих расширение DB (для сохранения совместимости с предыдущими версиями системы). Имеется возможность конвертации DB-файлов в текстовые файлы с расширением .INI.

Каждый файл конфигурации содержит пути к dat-файлам, которые используются при работе модуля и которые хранятся в одном слое. Таким образом, при работе одного модуля могут использоваться несколько файлов конфигурации (по количеству используемых слоев). Количество файлов конфигурации может быть произвольным, но все они должны быть в одном формате: либо DB, либо INI.

cfg

Местонахождение файлов конфигурации хранится в файле <имя_модуля>.CFG. В этом файле указываются только пути к файлам конфигурации.

Настройка путей к DAT-файлам

Настройка путей к dat-файлам производится в специальной форме на каждом рабочем месте в каждом установленном модуле.

В этой форме в левой части отображаются файлы конфигурации, в правой части – содержание выделенного слева файла конфигурации: перечень dat-файлов. Для каждого dat-файла указаны: Мастер, хранящий настройки в данном dat-файле, во второй указан его псевдоним (иначе - идентификатор) с расширением dat, в третьей - путь к директории, где этот dat-файл размещается, а также приоритет dat-файла.

Если задать полный путь с именем и расширением файла, то модуль будет работать с тем настроечным файлом, который указан напрямую. Если же указать только директорию, то программа будет искать в ней файл со стандартным именем, которое соответствует идентификатору. Если путь вообще пуст, то поиск настроечного файла осуществляется в той директории, где расположен файл конфигурации, к которой относятся dat-файлы.

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

Нажав на кнопку OPENB, можно добавить файл настройки, выбрав его из уже имеющихся файлов.

Нажав на кнопку CANCELB, можно удалить выделенный файл конфигурации из списка.

Двойной щелчок левой клавишей мыши в колонке Местонахождение dat-­файла вызывает на экран стандартную форму выбора файла.

Нажав на кнопку ini_b, можно сконвертировать файл формата DB в INI файл с расширением INI (текстовый файл).

Внимание!

Все файлы конфигурации должны быть представлены в одном формате: либо DB, либо INI. Обратная конвертация из INI в DB невозможна.

С помощью кнопок arr_uparr_down можно изменить порядок следования файлов. Файл стандартной конфигурации должен быть в списке первым.

Несколько слов о разделении одноименных dat-файлов для разных разделов пакета. Авторы не считают нужным без необходимости наращивать настроечные файлы только потому, что это удобно при сопровождении. Увеличение их размеров приводит одновременно и к увеличению времени, необходимого на старт задачи. Поэтому в стандартной поставке общими для всех разделов, помимо обязательного Tblman.dat, являются только настройки экранных Forms.dat и печатных Tmpls.dat форм. Что касается файла описания запросов, то он не только отличается в разных разделах, но порой еще разде­лен на несколько файлов внутри одной задачи. Все эти части в стандартной поставке укладываются в маску quer*.dat.

Перечислим оставшиеся имена настроечных файлов из стандартной поставки: Tfman.dat, в котором хранятся описа­ния табличных форм, Repman.dat — отчеты, TblTypes.dat — типы таблиц, Masob.dat — массив общих мест, Scheme.dat — схемы импорта из Excel, Bp.dat — бизнес - процедуры.

Распечатка описаний таблиц

Иногда бывает очень полезно распечатать структуру табли­цы базы данных. Для этого предназначен специальный пункт меню Настройка. Войдя в него, Вы получаете возможность выбрать из раскрывающегося списка имя интересующей Вас таб­лицы. После этого Вам будет представлена таблич­ная форма, в которой наглядно представлена структура выб­ранной таблицы, в том числе значение по умолчанию для каждого поля, а также приписанный ему элемент массива об­щих мест.

Нажатие кнопки PRINTB выводит на экран окно выбора коло­нок для печати структуры. Оно как две капли воды похоже на окно настройки печати табличных форм (см. раздел «Общие правила работы», п. Просмотр печатных документов). Таким образом, Вы можете не только отобрать те характеристики полей, которые интересуют Вас в данный момент, но и сохранить их для распечатки всех остальных таблиц.

Упаковка и переиндексация

Это служебное окно вызывается с помощью пункта меню Настройка / Упаковка и переиндексация. На самом деле, кроме упаковки и массовой переиндексации таблиц базы данных, это окно также позволяет создать все таблицы или изменить их структуру в соответствии с описаниями, сделанными с помощью Мастера таблиц. Операции проводятся отдельно для каждой базы данных, с которой работает программа: используемые базы данных перечислены в списке с общим заголовком Псевдонимы. Объем операций настраивается с помощью флажков справа от списка. Операции по реструктуризации и созданию таблиц могут проводиться в разных режимах, настройка которых производится с помощью кнопки Настройка. В частности, с помощью настроек можно ограничить проведение операций несколькими специально отмеченными таблицами: отметка производится на второй странице окна настройки. Отметка таблиц не освобождает от необходимости выбрать конкретную базу данных: операции будут проводиться только с теми таблицами, которые отмечены и относятся к этой базе данных.

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

Остановимся коротко на каждой операции в отдельности.

Реструктуризация таблиц становится необходимой при переходе на новую версию системы, для работы которой, как правило, необходимо наличие новых полей в некоторых таблицах. Перед началом массовой реструктуризации следует обновить файл описаний таблиц: TBLMAN.DAT. Если Вы эксплуатируете систему в стандартном варианте, то достаточно взять этот файл из дистрибутива новой версии. Если же Вы вносили в описания таблиц свои изменения, то для получения новой версии файла TBLMAN.DAT следует использовать программу обновления.

В процессе выполнения этой операции программа просматривает все описания таблиц и сравнивает их с физической структурой таблиц в базе данных. Если структуры отличаются, производится преобразование структуры таблицы. Реструктуризация может производиться как в диалоговом режиме, так и автоматически. С помощью кнопки Настройка Вы можете указать, следует ли при реструктуризации вызывать диалоговую форму. Возможен также режим, при котором диалоговая форма вызывается только для некоторых таблиц - тех, для которых выполняется условие, указанное в том же окне настройки. Кроме того, с помощью дополнительных флажков Вы можете исключить необходимость подтверждений для выполнения большинства операций. В предельном варианте реструктуризация будет производиться полностью автоматически без Вашего участия.

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

  1. Существующая таблица переименовывается в таблицу с временным именем - вполне определенным для каждой реструктуризируемой таблицы.

  2. Создается новая таблица по описанию.

  3. Из таблицы с временным именем во вновь созданную переписываются данные, после чего таблица с временным именем удаляется.

  4. Вновь созданная таблица индексируется, если индексация не отменена специальной настройкой в описании таблицы.

Если в процессе выполнения операций (2) или (3) возникнет ошибка, из-за которой продолжение реструктуризации окажется невозможным, таблица с временным именем останется в базе данных и, как правило, именно она будет содержать правильные данные. После того, как причина ошибки будет устранена, повторная реструктуризация должна проводиться в несколько другом режиме, так как таблица старой структуры уже переименована. Поэтому, обнаружив, что таблица с временным именем уже существует, программа предложит Вам именно ее и использовать в качестве источника данных. Как правило, разумно согласиться с этим предложением, так как в противном случае данные из таблицы старой структуры могут быть безвозвратно утеряны. Вместе с тем, возможна достаточно редкая ситуация, при которой даже в случае успешной реструктуризации старую таблицу по той или иной причине не удалось удалить из базы данных. В этом случае при следующей реструктуризации, возможно, через достаточно продолжительное время, будет выявлена внешне похожая ситуация: таблица с временным именем имеется в базе данных. Однако, в этом случае, данные в этой временной таблице будут уже устаревшими, и использовать такую таблицу в качестве источника данных не следует. Так как только Вы знаете, возникали ли у Вас в ближайшее время проблемы с реструктуризацией и можно ли использовать временную таблицу в качестве источника данных, то даже при массовой реструктуризации рекомендуется в окне настройки оставить вариант Запрашивать реакцию пользователя. Если Вы все же хотите, чтобы реструктуризация была проведена автоматически без Вашего участия, то рекомендуется выбрать вариант Считать ошибкой: тогда реструктуризация таких таблиц осуществляться не будет, а данные об этом будут включены в протокол. Просмотрев протокол ошибок по окончанию выполнения массовой операции, Вы сможете с каждой из таких таблиц разобраться индивидуально.

Создание таблиц также бывает нужным при переходе на новую версию системы, так как для ее работы, как правило, требуется наличие нескольких совершенно новых таблиц. Кроме того, эта операция бывает необходима, если Вам необходимо сформировать новую базу данных, например, в связи с началом работы по автоматизации нового предприятия. Возможности настройки для этой операции ограничиваются самым верхним флажком в окне настройки, с помощью которого Вы указываете, следует ли выдавать запрос перед созданием каждой таблицы.

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

Упаковка, как правило, не нужна. Вместе с тем, если Вы достаточно давно работаете с базой данных, и в процессе работы из таблиц удалялись значительные по размеру части, то иногда объем, занимаемый базой данных на диске, может быть уменьшен за счет проведения упаковки. Уменьшение в процессе упаковки физического размера таблиц также увеличивает скорость работы с этими таблицами.

Упаковка и переиндексация в программе обновления UPGRMAN

Всё тоже самое, о чем говорилось в разделе 5.3 настоящего руководства можно сделать в программе обновления UPGRMAN. Для этого запустите программу UPGRMAN.

Далее, на экране появится стандартная форма настройки Массовые операции, как и в модулях.

протоколирование системных событий

В программе реализована возможность регистрации (аудита) системных событий, возникающих при работе с программой (модулем). Список системных событий представлен в табличной форме, перед открытием которой необходимо указать период для просмотра записей.

По умолчанию системные события не регистрируются.

Для настройки регистрации и возможности просмотра протокола системных событий необходимо произвести следующие действия:

Настройка протоколирования

Для каждой протоколируемой операции включение или выключение протоколирования производится индивидуально с помощью флажков в форме настройки. По умолчанию все флажки сброшены (протоколирование отключено). Для включения протоколирования следует установить флажки для тех событий, которые необходимо регистрировать.

Программно предусмотрено протоколирование событий, представленный в форме настройки.

Форма настройки позволяет также добавить новые события, которые затем можно использовать для протоколирования (с помощью специально написанных бизнес-процедур, использующих функцию SysLog). Для добавления события надо нажать на кнопку Добавить и ввести название события. Обратите внимание! Название должно быть уникальным и в точности совпадать с названием, которое в дальнейшем будет использовано в качестве первого параметра при вызове функции SysLog.

Ошибочно добавленные события можно удалить, нажав на соответствующую кнопку. Основные события, протоколирование которых осуществляется программно, удалять нельзя.

Системные сообщения

Протокол регистрируемых при работе с программой (модулем) системных событий представлен в табличной форме.

Для каждого протоколируемого события в табличной форме указываются:

Напоминаем, что в стандартной поставке по умолчанию системные события не протоколируются. Для того, чтобы события фиксировались, надо произвести соответствующую настройку.

Редактирование эталонного массива общих мест

Возможность использования предусмотрена только в версиях с высокими настроечными параметрами.

Редактирование эталонного Массива общих мест (см. книгу «Общие правила работы», раздел Базовые термины) является, пожалуй, самым сложным для понимания местом в настройке ERP-системы «КОМПАС», ибо содержит в себе достаточное количество условностей. Собственно говоря, оно распадается на две части: редактирование базовых элементов, которое в стандартной поставке вызывается из одноименного пункта меню Сервис, и само редактирование эталонного массива.

Редактирование базовых элементов предназначено, в основном, для самих разработчиков системы, и, хотя изощренный пользователь может извлечь для себя некоторую пользу, овладев этими возможностями, обучение его является предметом специального курса и выходит за рамки данного Руководства.

Редактирование же эталонного массива — вещь вполне доступная и очень часто необходимая. Оно может осуществляться как из одноименного пункта меню Сервис, при входе в который открывается окно с существующей древовидной структурой массива, так и непосредственно при создании массива общих мест конкретной таблицы (см. 2.1.2. Закладка «Поля таблицы»), где это окно присутствует в качестве образца.

В обоих случаях для того, чтобы начать редактирование, надо щелкнуть правой клавишей мыши на эталонном массиве. На экран будет выведено меню, с помощью которого можно создать новый эталонный элемент (место) массива, откоррек­тировать старый, создать новую группу элементов или перене­сти элемент в другую группу.

Если для создания группы достаточно ввести ее код (обо­значение, которое будет использовано в программах пакета) и текстовое описание, то создание нового места (элемента, ячей­ки) массива (да и редактирование уже существующего) требу­ет гораздо больше действий.

В первую очередь выбирается базовый элемент (это прак­тически тип) из созданного в редакторе базовых элементов списка. Поскольку с каждым базовым элементом связана вполне определенная программная обработка, то этот выбор весьма существенен, и надо внимательно просмотреть весь список. Впрочем, назначение базовых элементов вполне очевидно из их названия. Более четкую рекомендацию дать трудно. Далее в открывшемся окне описания элемента следует указать:

Как уже говорилось, самое главное назначение Массива общих мест - это перенос данных из документа в документ, поэтому надо выбрать Действия при заимствовании по образцу.

Можно выбрать один из трех вариантов: Заимствовать, Не заимствовать и Суммировать. Если первые два понятны из самого названия, то последний можно использовать только для чис­ловых полей и полей типа дата. Он означает, что, когда Вы создаете документ по образцу сразу нескольких (например, оплата одним платежным поручением нескольких счетов поставщика), то значения данного элемента массива суммируются для всех документов—образцов, и сумма записывается во вновь создаваемый документ. Для полей типа Дата выбирается наибольшая (максимальная) дата.

Для поля типа Кнопка укажите состояние в режиме просмотра: Активное или Неактивное.

Для перемещения элемента в другую группу достаточно после выбора пункта Изменить группу в контекстном меню выбрать новый вариант из раскрывающегося списка и на­жать кнопку ОК.

Удаление любого из элементов эталонного массива, как конкретного места, так и целой группы, производится в целях безопасности исключительно клавишей Del. Естественно, что удалить группу можно только после того, как в ней удалены все элементы. Изменить название и код группы невозможно. Можно толь­ко удалить ее и ввести новую.

Отметим еще одно важное свойство массива общих мест, а точнее двух специфических базовых элементов - Код партнера (COD1) и Табельный номер (TAB_N). Если в какую-либо группу включить один из элементов этого типа (иначе говоря, созданных на основе одноименных базовых элементов), то в любой таблице после ввода значения в поле, связанное с та­ким элементом массива, программа анализирует данные соответствующего справочника (Внешние партнеры для кода партнера и Персонал для табельного номера) и выбирает оттуда подходящую запись. После этого она просматривает все элементы данной группы и, если имеется поле с таким же именем, как и псевдоним элемента массива (та его часть, которая идет после значка @), то она загружает его значением из этого поля, т. е., это быстрый программный эквивалент «мастерской» загрузки дополнительных значений из справочника (см.п.2.1.2. Закладка «Поля таблицы» и 2.2.2. Закладка «Колонки»), который ав­торы рекомендуют для самых изощренных пользователей. Это несложно, если при переносе в конкретный массив (см. 2.1.2. Закладка «Поля таблицы») не менять имен, предлагаемых в качестве эталонных.

Заключение

Самые последние изменения в описании различных разделов руководства, не нашедшие отражения в текущем издании, представлены в соответствующем разделе справочной системы (HELP) в поставке.


  1. С полным списком средств и методов подсистемы безопасности, так же, как и с некоторой частью информации, представленной в этой главе, Вы уже могли ознакомиться в вводной (общей) части руководства пользователя. Здесь содержатся более подробные пояснения и описание действий по настройке возможностей безопасности↩︎

  2. В том случае, если пользователи имеют одинаковые права на использование функциональных возможностей программы, может быть использован механизм ролей. Роли – это группы в системе, которые определяют уровень доступа к тем или иным функциональным возможностям программы. Каждому пользователю можно назначить одну или несколько ролей (отнести к группам), или не назначать вообще.↩︎

  3. * Установка значения конфигурационной переменной производится следующим образом:

    Открывается табличная форма Конфигурационные переменные (пункт меню Сервис / Параметры конфигурации);

    В этой ТФ создается новая строка, из поля Обозначение вызывается список Зарегистрированных параметров конфигурации (клавиша F7). Из этого списка выбирается конфигурационная переменная, нажимается кнопка ОК;

    На панели инструментов ТФ Конфигурационные переменные нажимается кнопка EDITB. В специальной форме с клавиатуры вводится значение параметра конфигурации, нажимается кнопка ОК.

    Табличная форма Конфигурационные переменные подключена к главному меню не во всех модулях ERP- системы «КОМПАС». Подключить этот пункт меню можно стандартным способом через Администратор меню, выбрав в качестве вызываемого объекта табличную форму CFGDB_DSC.

    ↩︎
  4. Импорт из файлов нового формата MS Excel 2007 / 2010 (*.xlsx, который представляет собой ZIP-архив с XML-содержимым) невозможен – при настройке файл не распознается, поэтому перед импортом  данных необходимо  сохранить файлы с расширением .xlsx в формате Excel 97-2003 (*.xls) средствами MS Excel 2007 / 2010.↩︎