Дерево проекта
- Запуск, отображение дерева проекта
- Структура дерева проекта
- Принципы описания элементов
- Сценарии (Меню)
- Роли
- Виды просмотра
- Форма
- Параметры
- Процедуры
- Выборки
- Отчёты
- Списки (Кодификаторы, Классификаторы), Классификация значений
- <<Разделы>>
- Действия, выполняемые при старте системы
- Форматы
- Структура базы данных
- Планы счетов
- Основные объекты
- Пользователь
- Нумератор
- Протокол
- Продукт
- Партнёр
- Каталог
- Документ
- Строка
- Проводка
Запуск, отображение дерева проекта
Проект – это совокупность методов, настроек и установок, ориентированных на решение конкретной задачи. Это все то, что является неотъемлемой частью программного комплекса Домино (без проекта работать не будет), но не является исполняемыми модулями программы (exe и набор dll).
Просмотр и внесение изменений в проект осуществляются в специальном режиме работы Домино – режиме редактирования проекта. Для запуска этого режима необходимо в командной строке указать ключ /PRJEDIT.
C:\domino8\Bin\domino8.EXE x:\project\«Название проекта» /prjedit
Обратите внимание на наличие пробела между \«Название проекта» и /prjedit.
Пример запуска проекта RETAIL-STORE.
C:\domino8\Bin\domino8.EXE x:\project\RETAIL-STORE /prjedit
Изменения вносятся в редакторе, где проект изображается в виде дерева, состоящего из элементов разного типа.
Дерево проекта – это многоуровневая иерархическая структура, в которой элементы проекта располагаются на отдельных строках.
Перемещение по дереву проекта осуществляется по следующим правилам:
- если рядом с элементом проекта расположен квадратик с плюсом
, то данный элемент включает в себя уточняющее поддерево. При выборе этого элемента значок сменится на
, и раскроется поддерево
- если элемент проекта написан серым цветом, то этот элемент доступен только для чтения
- для закрытия поддерева щёлкните на значке
или воспользуйтесь клавишей <Стрелка влево> (при этом входящие в данный элемент открытые ветви дерева автоматически не закрываются).
На следующем рисунке изображено частично раскрытое дерево проекта.
Текущим называется тот элемент проекта, на котором в данный момент стоит курсор. Текущий элемент выделен фоном.
В нижней части экрана находится Статусная строка.
В статусной строке указываются:
- Тип текущего элемента. В примере на рисунке тип элемента проекта – 1-9.
- Индекс текущего элемента. Индекс на рисунке – [960-8].
- Тип элемента – В примере на рисунке это «Локальная переменная».
- Наименование текущего элемента. В примере на рисунке это – «Целое текущая дата»
- Автор, создавший указанный элемент.
При создании нового элемента проекта ему присваиваются перечисленные выше параметры: уникальное сочетание типа и индекса (вместе они составляют уникальный идентификатор элемента проекта – UID), наименование и имя автора. Автором элемента является тот пользователь, который создал этот элемент. В приведённом выше примере автором текущего элемента проекта является {Бакин}.
Для каждого элемента имеется контекстное меню (иногда его называют локальным меню), которое появляется по щелчку правой кнопки мышки.
Основная панель инструментов - это жёстко закреплённый в верхней части основного окна набор кнопок, предназначенных для выполнения часто встречающихся действий (перемещение, поиск и пр.). Поверх основного окна могут отображаться другие окна. На дополнительном окне может находиться Панель инструментов активного окна с кнопками действий, доступных пользователю при работе в этом окне.
[Назад] |
перемещает в предыдущее окно или меню |
|
[Вперёд] |
перемещает в следующее по логике работы окно. Если такового нет (например, когда курсор стоит на вершине структуры главного меню), то никакие действия не выполняются |
|
[Сохранить] |
Сохраняет изменения проекта |
|
[Undo] |
Отменяет последнее изменение проекта |
|
[Redo] |
Восстанавливает последнее изменение проекта |
|
[Поиск] |
проводит поиск в активном окне по задаваемому условию |
|
[Следующий] |
выдаёт следующий результат поиска по тому же условию |
|
[Предыдущий] |
выдаёт предыдущий результат поиска по тому же условию |
|
[Пуск] |
Запуск программы с данным проектом |
|
Печать |
|
|
Инструменты |
Вызов меню служебных процедур для работы с проектом |
|
Справка
|
Вызов меню со справочной информацией |
Загрузка изменений из протокола
Проект расcчитан для одновременной работы нескольких пользователей (авторов) в сети. Но если автор работает на отдельном (локальном) компьютере или в другой сети, то имеется возможность перенести сделанные изменения в общий проект. Это можно сделать посредством приёма протокола работ.
В процессе работы, в ‘рабочем каталоге’, изменяется файл выполненных изменений. Файл имеет следующее имя: <имя проекта>.log. Изменения записываются при нажатии 'Сохранить'.
Перенесите файл протокола в каталог для загрузки и нажмите кнопку ‘Инструменты’ на панели инструментов, выберите пункт ‘Работа с проектом - Загрузить из протокола’.
На экране появится окно для выбора файла протокола.
После выбора файла будет высвечен список сеансов работы с проектом. Сеанс – это набор изменений проекта, выполненные одним автором, с момента его входа в режим редактирования проекта (или от момента предыдущего сохранения) до момента сохранения сделанных им изменений. В списке для каждого сеанса указаны автор и время сохранения.
Следует пометить (пробелом) сеансы и нажать кнопку ‘Загрузить’.
Регистрация авторов проекта
Все авторы должны быть предварительно занесены в реестр авторов. Вариант регистрации зависит от желаемого уровня доступа пользователя к разделам проекта. Если пользователю нужны права на работу только с разделом ‘Приложение’, то достаточно внести запись о таком авторе в раздел ‘Авторы’. Во всех остальных случаях пользователь должен быть указан в общем реестре авторов. Эта процедура проводится в фирме ‘Софт-Вест’.
При запуске программы в режиме редактирования проекта следует нажать на иконку 'Инструменты', выбрать 'Регистрация автора' и ввести имя автора и пароль.
Навигация по проекту
Основная панель инструментов
- Кнопка ‘Поиск’– перемещение на первый элемент, удовлетворяющий заданным условиям. В качестве условий поиска можно указать тип и индекс проектного элемента, тип и индекс родителя, подстроку в имени или значении элемента. Для перемещения на следующий элемент, удовлетворяющий условию, применяется клавиша ‘Вниз’. Для перемещения на предыдущий элемент – клавиша ‘Вверх’.
- Кнопки ‘Вниз’, ‘Вверх’– для перемещения к следующему, предыдущему элементу результата поиска.
- Кнопка ‘Сохранить’ - сохранить изменения в проекте на диск (до этого они происходят только в памяти).
- Кнопки ‘Undo’, ‘Redo’ - отменить / восстановить последние изменения.
Горячие клавиши
<Серый плюс> |
Раскрывает поддерево. |
<Стрелка направо> |
Раскрывает поддерево или создаёт новый элемент проекта на следующем уровне поддерева. |
<Стрелка налево> и <Серый минус> |
Сворачивает поддерево. |
<Insert> |
Создаёт новый элемент проекта на уже имеющемся уровне поддерева. |
<Enter> |
Позволяет вносить изменения в параметры элемента проекта. |
<Delete> |
Удаляет элемент проекта вместе с поддеревом, Удаление элемента, на который есть ссылки, невозможно. |
<Ctrl+PageUp> |
Перемещает курсор на первую строку дерева проекта. |
<Ctrl+PageDown> |
Перемещает курсор на последнюю строку дерева проекта. |
<Стрелка вверх> |
Перемещает курсор на строчку вверх. |
<Стрелка вниз> |
Перемещает курсор на строчку вниз. |
Shift + <Стрелка вверх> |
Перемещает курсор на предыдущий найденный элемент. |
Shift + <Стрелка вниз> |
Перемещает курсор на следующий найденный элемент. |
Ctrl+<Стрелка вверх> |
Перемещает элемент вверх. |
Ctrl+<Стрелка вниз> |
Перемещает элемент вниз. |
<Ctrl+Insert> или <Ctrl+С> или [Пробел] |
Выделяет элемент проекта, а при повторном нажатии отменяет выделение. |
<Shift+Insert> или <Ctrl+V> |
Копирует предварительно выделенный элемент проекта (с поддеревом). |
<Ctrl+Shift+Insert> |
Перемещает предварительно выделенный элемент проекта (с поддеревом). |
Ctrl+D |
Дублирует элемент проекта (с поддеревом). |
Ctrl+F |
Запускает форму поиска. |
Home |
перемещение на родителя текущего элемента |
Контекстное меню элемента проекта
Вызывается по щелчку правой кнопкой мыши.
- ‘Перейти по ссылке’ - перемещение на родителя текущего элемента.
- ‘Перейти к определению типа’ – перемещение на элемент, задающий тип текущего проектного элемента.
- ‘Поиск’ – высвечивает меню с различными условиями поиска.
Поиск подстановок элемента – перемещение на первую подстановку текущего элемента. Далее возможно перемещение по подстановкам.
Найти объекты с данным типом – перемещение на первый элемент того типа, который задан текущим проектным элементом. Далее возможно перемещение по следующим подходящим элементам.
Найти тех, кто ссылается на текущий объект – перемещение на первого наследника текущего элемента. Далее возможно перемещение по следующим подходящим элементам.
Остальные варианты поиска используются системными администраторами проекта при реорганизации разделов и библиотек.
Снять маркировку – снимает выделение цветом результата поиска.
- ‘Статус’ – изменение статуса проектного элемента.
Если элемент имеет статус Экспортный (Публичный), то на этот элемент можно ссылаться не только в пределах той библиотеки, где он описан, но и в других библиотеках. Когда элементу назначают статус Экспортный, цвет иконки немного изменяется.
Поскольку проект редактируется одновременно несколькими авторами, то может возникнуть ситуация, когда автор не хочет, чтобы другие авторы правили какой-либо фрагмент дерева проекта без его участия. Для предотвращения внесения изменений во фрагмент дерева проекта применяется специальный элемент – Утверждено.
При попытке изменить атрибуты утверждённого элемента в статусной строке появится следующее сообщение: Элемент находится в защищённой зоне.
Удалить элемент Утверждено может только автор.
- ‘Просмотр’ – отображение характеристик текущего элемента проекта.
- ‘Отладка’ – отображение параметров элемента проекта.
- ‘Действия’ – меню возможных действий.
- ‘Отчёты’ – список отчеёов для системных администраторов проекта. Используются при реорганизации разделов и библиотек.
Структура дерева проекта
Проект на Домино состоит из разделов, в которые подбираются необходимые элементы.
Наверху находятся системные элементы, которые нужны всегда.
Далее перечисляются подключённые модули для реализации прикладных задач. У некоторых модулей можно выбрать вариант, который определит набор подключаемых библиотек.
Модуль – раздел проекта, объединяющий несколько библиотек, предназначенных для реализации некоего бизнес-процесса.
Библиотека – представляет собой совокупность настроек, обеспечивающих решение конкретной технологической задачи. Например, библиотека «Переоценка» решает задачу изменения розничных цен. Библиотека содержит разделы (папки).
Раздел - группа проектных элементов, объединённых по функциональному назначению. Содержит другие разделы и отдельные проектные элементы.
Обычно, чем ниже в дереве находится библиотека, тем больше в ней содержится специфики и меньше общих элементов.
- Платформа 11.7.3.* - включает набор модулей и библиотек с описанием тех элементов проекта, которые относятся ко всему комплексу ДОМИНО в целом.
- Решение - содержит модули и библиотеки, обеспечивающие работу конкретного проектного решения.
-
Продукт – содержит специфические элементы конкретного продукта, в том числе персональные клиентские доработки в разделе Приложение.
- Область разработчика - раздел, в котором работает разработчик продукта
- Приложение – раздел для работы локальных авторов
- Локальные авторы – список авторов, которые работают в Приложении
- Размещение Баз Данных – данный раздел содержит описание баз данных
- Конфигурация - список глобальных параметров настройки проекта
-
Размещение Баз Данных
Данный раздел содержит список доступных баз данных (БД). Информация из данного раздела применяется при подсоединении программы к БД. Пользователь в при запуске программы указывает базу данных, программа считывает в проекте её характеристики и подключается к БД.
- Реализованы драйвера для прямого подключения к Oracle и PosgreSQL.
- Для сервера указываются следующие атрибуты:
Путь, Источник данных – имя соединения.
БД – данный атрибут в настоящее время не используется, но для совместимости с предыдущими версиями требуется указать значение DB1.
Пользователь БД (Пространство) – имя базы данных Домино с точки зрения сервера.
Пароль доступа к БД – значение пароля для доступа к БД. Если пароль не указан, то считается, что пароль равен значению атрибута ‘Пользователь БД (Пространство)’.
Отладочная информация – уровень отладочной информации. Может принимать значения от 1 до 4. Применяется для проверки и оптимизации выполнения запросов к СУБД.
Запретить вход в систему задним числом – при установленном признаке запускается дополнительная проверка времени на компьютере и сервере. Наличие такой проверки позволяет обнаружить перевод времени назад.
Проверяются два следующих условия:
-
- Текущее время на сервере должно быть не меньше, чем время в последней записи таблицы ‘ПРОТОКОЛ’.
- Текущее время на сервере должно быть примерно равно текущему времени на рабочей станции. Допускается разница в 30 секунд.
Если какое-либо из условий не выполнилось, то программа не запустится.
Конфигурация
Данный раздел содержит следующие параметры настройки программы:
- цветовой стиль диалогового интерфейса,
- директория для создания временных файлов,
- правило выбора ЦФО (Центр финансовой ответственности),
- признак использования раздела ‘Доступные параметры’.
Почти все эти параметры (кроме второго) оставлены для совместимости с предыдущими версиями. Те задачи, для которых появились эти настройки, сейчас решаются другими средствами.
Директория для временных файлов. В процессе работы программа создаёт множество временных файлов. Например, для формирования результатов отчётов. Все эти файлы должны быть размещены на локальном диске компьютера. Если не указывать данный атрибут, то файлы будут помещаться в директорию C:\DOMINO8\HOME.
Основные разделы проектных библиотек
- Сценарии (Меню) – содержит описания пунктов меню
- Роли – содержит список ролей пользователей
- Виды просмотра – содержит описания видов просмотра объектов
- Формы – содержит описания форм, не связанных ни с каким объектом
- Параметры – содержит описания параметров, переменных и выражений
- Процедуры – в данном разделе описываются процедуры и функции
- Выборки – содержит описания простых выборок, применяемых для отбора информации из БД
- Отчёты – содержит описания отчётов
- Списки (Кодификаторы, Классификаторы) – содержит описания и значения классификаторов
- Классификация значений – содержит описания классификаторов
- <<Разделы>> - содержит список тех разделов проекта, которые должны быть доступны для работы в разделе ‘Приложение’
- Действия, выполняемые при старте системы – перечень процедур, которые следует запустить при старте программы
- Форматы – содержит описания форматов отображения данных
- Структура базы данных – содержит описания дополнительных таблиц БД и запросов для выборки данных
- Планы счетов – содержит описания планов счетов
Принципы описания элементов
Дерево проекта состоит из элементов.
Элемент проекта – это отдельная строка в дереве проекта. Каждый элемент может иметь наименование. Именно это наименование отображается в дереве проекта. Если у элемента наименование отсутствует, то в некоторых случаях программа высвечивает наименование родителя элемента. Также элемент может иметь ссылку на родителя и значение.
Принцип 1. Каждый элемент имеет тип
Тип является обязательной характеристикой проектного элемента. Тип задаётся при создании элемента и впоследствии изменён быть не может.
При вводе нового элемента программа предлагает список типов, допустимых на данном подуровне дерева. Подуровень рассчитывается от текущего элемента.
Например, в разделе ‘Виды Просмотра’ для создания нового элемента предлагается выбрать его тип из следующего списка:
В разделе ‘Роли’ будет предложен другой список типов элементов проекта:
Содержимое списка зависит от того на каком уровне дерева проекта создаётся элемент. Для каждого подуровня имеются определённые ограничения по типам, и программа учитывает эти ограничения при отображении списка возможных типов элементов. Способ задания ограничений будет показан ниже. Сейчас же посмотрим как программа работает в различных ситуациях.
Курсор находится на элементе ‘Администратор организации’ в разделе ‘Роли’.
При нажатии Insert будет высвечен список на рисунке выше. Программа считает, что новый элемент будет расположен непосредственно в разделе ‘Роли’ (на одном уровне с имеющимся элементом).
Раскроем поддерево у элемента ‘Администратор организации’ (клавиши Серый Плюс или стрелка вправо), не перемещая курсор с элемента.
Теперь при отображении списка типов элементов программа посчитает, что новый элемент будет расположен внутри элемента ‘Администратор организации’. Поэтому на экране будет высвечен другой список:
Проектные элементы одного типа имеют в дереве проекта одинаковую иконку. Так, все роли имеют иконку ‘Маска’.
Большинство типов реализованы как некие проектные элементы. И эти элементы применяются в качестве типов при создании остальных элементов проекта. Но дерево проекта также содержит и базисные элементы, для которых тип не указан. Реализация типов базисных элементов находится в самом ядре программы.
Для просмотра типа элемента можно использовать пункт меню поиска ‘Найти определение типа объекта’.
Посмотрим это на примере роли. Элемент ‘Администратор организации’ имеет тип ‘Роль’. Поиск указал описание этого элемента.
Можно посмотреть описание типа для найденного элемента. Еще раз выполняем ‘Найти определение типа объекта’
Поиск привёл в самый верх проекта, папка ‘<Примитивы>’ раздела ‘Системная область’. Здесь находятся самые нижние корни дерева проекта (дерево отображается так, что корни находятся сверху). Найденный элемент не имеет типа, поскольку он принадлежит к первоосновам проекта.
Но зачем нужна типизация элементов?
Основное предназначение типа – описание смысла и свойств элемента проекта. Выбирая тип для элемента, разработчик решает сразу две задачи: определяет цель использования данного элемента, наделяет данный элемент определёнными свойствами.
Проект содержит огромное количество описаний типов проектных элементов. Большинство из них используется для построения самого проекта. Эти типы интересны только системным администраторам проекта.
Ниже находится краткое описание основных типов. Для лучшего понимания типы элементов разделены на условные группы. Более подробное описание приводится в соответствующих главах документации.
Можно рассматривать приведённый ниже текст как список понятий в системе.
Пользователи и права
Пользователь – человек, работающий с программой.
Роль – совокупность действий, которые может выполнять пользователь. Обычно, роли объединяют действия в соответствии с должностями пользователей.
Автор – пользователь, имеющий право изменять проект.
Права доступа - характеристика, определяющая доступность для пользователя отдельных операций для работы с БД и настройки проекта. Обычно какая-то конкретная операция либо разрешена, либо не разрешена.
Интерфейсные компоненты программы
Сценарий (Меню) – Применяется для выбора пользователем одного варианта действий из предлагаемого списка. Содержит список пунктов (вариантов действий), выбор каждого их которых запускает некий набор операций. Операции выполняются для получения результата, описанного в названии пункта сценария.
Вид просмотра – Применяется для отображения списка данных на экране в виде таблицы. Включает правила отбора данных, порядок их отображения, перечень доступных действий с данными.
Форма – Применяется для отображения данных в виде карточки. Включает правила отбора данных, порядок их отображения, перечень доступных действий с данными.
Отчёт – Применяется для отбора, сортировки, группировки данных и выдачи их на экран, принтер, в файл. Часто отчётом называют результат выполнения перечисленных действий.
Структура Базы данных
Объект – информационное отражение сущности реального мира. Набор объектов и правила их взаимодействия составляют модель данных. Каждый объект имеет набор характеристик, называемых параметрами объекта. Обычно, все объекты одного типа записываются в одну таблицу БД.
Параметр объекта – отдельная информационная характеристика (свойство) объекта.
БД – совокупность всех данных, с которыми оперирует программа. В один момент времени программа работает только с одной базой данных, но может переключиться на другую БД.
СУБД (Система управления базами данных) - внешняя программа, обеспечивающая хранение и обработку информации в БД.
Сервер БД – компьютер (сервер), на котором запускается СУБД.
Модель данных – это представление данных с точки зрения пользователя. Представляет собой набор объектов и правил их взаимодействия.
Таблица БД - Под таблицей можно понимать двумерную матрицу из строк и столбцов с описанием правил сортировки и группировки строк. В таблице записываются информационные характеристики (параметры) объектов
Запись (строка) таблицы – строка таблицы, соответствующая одному экземпляру какого-либо объекта.
Параметр таблицы - наименование колонки таблицы. Соответствует конкретному параметру объекта.
Параметр записи таблицы –содержимое ячейки таблицы. Номер строки задает запись, номер колонки задает параметр.
Запрос – способ и форма обращения к СУБД с требованием подобрать и передать некоторые данные. Запрос содержит условия, которым должны соответствовать передаваемые данные. Для СУБД Oracle запрос формируется на языке SQL.
Язык программирования
Данные - это та информация, которую обрабатывает компьютер.
Переменная – это данное, значение которого может меняться в процессе выполнения программы. Переменные всегда имеют имена. Значения переменных устанавливается в операторе присваивания.
Выражение – это группа операторов, исполняемая как единое целое и предназначенная для выполнения некоторых действий и получения значения. Обычно, выражения применяются для однократных и простых вычислений.
Процедура – это группа операторов, исполняемая как единое целое и предназначенная для выполнения некоторых действий. Процедуры не возвращают значения. Операторы объединяются в процедуру для многократного использования.
Функция – это группа операторов, исполняемая как единое целое и предназначенная для выполнения некоторых действий и/или получения значения. Операторы объединяются в функцию для многократного использования.
Выборка – проектное отражения стандартных (наиболее часто используемых) запросов к СУБД. Описание выборки содержит наименование таблицы БД и способ сортировки получаемых от СУБД записей.
Проводки
Счёт – отражает место учёта денежных или материальных средств.
План счетов – список счетов, между которыми разрешено движение денежных или материальных средств.
Проводка – содержит информацию о факте движения денежных или материальных средств.
Регистр - короткая, односторонняя проводка
Шаблон проводки – описание правил для автоматической генерации проводки
Сальдо – остаток учётных средств на счёте в указанный момент времени.
Классификаторы
Классификатор – содержит список именованных проектных элементов.
Структура проекта
Проект – совокупность методов, настроек и установок, ориентированных на решение конкретной задачи .
Дерево проекта – многоуровневая иерархическая структура, содержащая проектные элементы. Предназначена для отображения и изменения содержимого проекта.
Базовый раздел – структурная часть дерева проекта. Список базовых разделов изменён быть не может. Содержит библиотеки, разделы и отдельные проектные элементы.
Модуль - набор библиотек для решения бизнес-задачи. Обычно имеются несколько вариантов подключения модуля. Варианты различаются наборами библиотек.
Библиотека – совокупность проектных элементов, объединённых для решения некой технологической задачи. Содержит разделы и отдельные проектные элементы.
Раздел (папка) – группа проектных элементов, объединённых по функциональному назначению. Содержит другие разделы и отдельные проектные элементы.
Проектный элемент – наименьшая и неделимая часть дерева проекта. Занимает одну строку в дереве проекта.
Атрибут – проектный элемент, рассматриваемый в качестве характеристики (свойства) другого проектного элемента. Атрибут располагается в дереве проекта на следующем уровне под тем элементом, чьим свойством он является.
Принцип 2. Каждый элемент имеет свойства
Каждый элемент проекта имеет набор некоторых свойств (характеристик, атрибутов), описывающих данный элемент. Каждое свойство указывается в проекте с помощью одного (обычно) элемента. Этот элемент проекта тоже может иметь свойства.
В дереве проекта элементы-свойства располагаются непосредственно под описываемым элементом. Под ними на следующем уровне располагаются их свойства и так далее. В итоге получаем большое ветвистое дерево с многоуровневым расположением элементов.
Получается, что почти все элементы проекта являются свойствами каких-то других элементов. Для лучшего понимания разработчики договорились использовать словосочетание ‘элемент проекта’ или ‘элемент’, когда речь идёт о самом элементе проекта. Если же рассматриваемый элемент интересует как свойство другого элемента, то следует применять слово ‘атрибут’.
Атрибут – существенный признак чего-либо, необходимая принадлежность, неотъемлемое свойство объекта. В дереве проекта Домино, атрибут – это элемент проекта, рассматриваемый в качестве свойства вышерасположенного элемента.
В примере, который был рассмотрен ранее, роль ‘Администратор организации’ имеет один атрибут (свойство) ‘Список начальных сценариев’. Все те элементы, которые находятся под элементом ‘Список начальных сценариев’ (их можно посмотреть раскрыв поддерево) являются атрибутами уже этого элемента, но не элемента ‘Администратор организации’.
Итак, повторим еще раз. Если элементы находятся непосредственно под элементом (т.е. расположены на следующем уровне), то они являются атрибутами данного элемента.
При создании атрибутов высвечивается список возможных типов атрибутов.
Так, для роли ‘Администратор организации’ будет высвечен следующий список:
В этом списке отсутствует пункт ‘Список начальных сценариев’ поскольку атрибут такого типа уже задан для данной роли.
Полный список всех возможных атрибутов для элемента проекта указывается при описании типа элемента. Перейдём на описание типа элемента ‘Администратор организации’ и посмотрим на список свойств найденного элемента.
Здесь присутствует описание восьми атрибутов, два из которых имеют специальные предназначения. Оставшиеся шесть атрибутов и будут предложены для заполнения при описании роли. Таким образом, всего для роли можно указать шесть атрибутов.
Вот так выглядит полный список типов атрибутов, которые будут высвечены при описании свойств роли.
Назначение и правила описания этих атрибутов рассмотрены ниже в соответствующей главе.
В рассмотренном примере атрибуты элемента определялись по описанию типа элемента. В проекте имеется ещ1 один способ задания атрибутов. Этот способ связан с правилом наследования свойств.
Принцип 3. Элементы могут наследовать свойства
Для многих элементов проекта можно указать специальную связь с другим элементом. Связь устанавливается путём заполнения поля ‘Класс’ в форме элемента.
Такая связь называется связь от ребёнка к родителю, где текущий элемент является ребёнком по отношению к тому элементу (родителю), ссылка на который и записывается в поле ‘Класс’.
Поле не обязательно называется ‘Класс’. Там, где это возможно, наименование поля формируется с конкретным значением. Например, в формах это поле имеет наименование ‘Форма’.
Для того чтобы найти родителя элемента необходимо выполнить пункт меню поиска ‘По ссылке’.
Теперь поговорим о предназначении связи элемента с родителем.
Когда несколько элементов имеют одинаковые свойства, то вполне естественно выглядит желание разработчика не описывать эти свойства для каждого из элементов. Желательно описать свойства один раз, а для остальных элементов указать, что их свойства совпадают с уже представленными в проекте. Именно для этого и введено понятие родителя элемента. В общем случае, ребёнок имеет те же свойства, что имеются у его родителя. Этот принцип называется правилом наследования свойств.
Рассмотрим простой пример. Форма продукта в библиотеке ‘# Товародвижение’.
Для формы задан один атрибут ‘Список полей формы’.
Посмотрим на родителя – форму ‘ПРОДУКТ’. Для этого перейдём ‘По ссылке’.
Для базовой формы ‘ПРОДУКТ’ имеется несколько атрибутов. Все эти атрибуты по правилу наследования будут являться атрибутами и для формы ‘ТОВАР’.
Попробуем отыскать более сложный пример. Для формы ‘ТОВАР’ выполним пункт меню поиска ‘Найти тех, кто ссылается на текущий объект’. С помощью этого запроса можно посмотреть всех детей текущего элемента.
Первый результат поиска даёт следующий элемент:
Поскольку форма ‘Товар’ имеет родителя форму ‘ТОВАР’, то по правилу наследования для формы заданы шесть атрибутов. Пять атрибутов появились от формы ‘ПРОДУКТ’ (как раньше выяснилось эта форма является родителем формы ‘ТОВАР’). Один атрибут порождён формой ‘ТОВАР’.
В самой форме ‘Товар’ имеется описание двух атрибутов ‘Список полей формы’ и ‘Сценарий’. Наличие этих атрибутов отменяет их наследование от родителя.
Правда в описании атрибутов имеются специальные элементы ‘<Наследуемые поля, колонки>’ и ‘<Наследуемые пункты>’, что позволяет использовать описания аналогичных атрибутов родителя. Более подробно назначение этих и остальных атрибутов формы рассмотрено в соответствующем разделе книги.
Правило наследования не применяется к некоторым типам элементов проекта. Исключения из правила подробно описываются ниже в тексте книги.
Приведённые примеры показали как наследуются значения атрибутов от родителя к ребёнку. При этом наличие атрибутов у элементов определялось по типам элементов. Так для форм ‘Товар’ и ‘ТОВАР’ нельзя указать некоторые атрибуты, которые доступны для формы ‘ПРОДУКТ’. Это объясняется тем, что для описания формы ‘ПРОДУКТ’ применялся другой тип проектного элемента – базовая форма. Грамотное применение такого приёма позволяет скрыть от проектировщиков нижнего уровня ненужные им системные атрибуты.
В проекте имеется и обратная возможность. У родителя элемента можно указать дополнительный набор атрибутов, которые потребуется описать для ребёнка. Особенно часто этот приём применяется для процедур, функций и отчётов.
Разберём простой пример. В библиотеке ‘# Товародвижение’ имеется описание следующей функции:
Для этой функции указан элемент специального типа ‘Наследуемые атрибуты’. Наличие элемента такого типа означает, что у ребёнка данной функции появится дополнительный атрибут. Тип этого дополнительного атрибута также задаётся в элементе ‘Наследуемые атрибуты’. В данном случае в списке атрибутов функции-ребёнка появится атрибут ‘Счёт’. На рисунке этот атрибут находится в конце списка.
Вот так выглядит описание функции-ребёнка.
Принцип 4. Подстановка элементов
Подстановка элементов применяется в двух случаях:
- чтобы разнести первоначальное описание элемента проекта и указание его свойств
Описание и использование элемента находится в верхней библиотеке. Свойства элемента конкретизированы в подстановке в нижней библиотеке.
- чтобы изменить свойство элемента
В верхней библиотеке описано свойство объекта, но требуется изменить это свойство. В нижней библиотеке создаётся подстановка и в ней описывается изменённое свойство.
Для описании подстановки применяются специальные типы элементов. Иконки таких элементов содержат маленькую стрелку в левом нижнем углу.
Рассмотрим пример. В библиотеке ‘[КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ]’ находится элемент проекта, описывающий тип каталога для хранения групп партнёров. Для элемента не указан ни один из существенных атрибутов.
Выполним пункт меню поиска ‘Поиск подстановок элемента’. В библиотеке ‘# Товародвижение’ найдена подстановка данного элемента.
В этом месте заданы два атрибута: ‘Форма ввода объекта’ и ‘Использование’.
Для элемента можно указать несколько подстановок. В этом случае значения атрибутов накладываются в соответствии с расположением подстановок в проекте. Наложение проводится сверху вниз. Т.е. нижерасположенные значения заменяют значения, находящиеся выше.
Для рассматриваемого примера это означает следующее. Если ниже в дереве проекта будет указана ещё одна подстановка элемента ‘Группа партнёров’. В этой подстановке будут заданы иные значения атрибутов ‘Форма ввода объекта’ и ‘Использование’. Именно эти новые значения будут приняты программой как текущие значения данных атрибутов.
В завершение рассмотрим условные примеры взаимодействия принципов наследования и подстановки.
Пример 1. Имеется элемент А и подстановка этого элемента.
Текущие значения атрибутов элемента А: Атрибут 1 = b, Aтрибут 2 = 2, Aтрибут 3 = 3.
Пример 2. Имеются два элемента A и B. Элемент B является ребёнком элемента A.
Текущие значения атрибутов элемента B: Атрибут 1 = c, Aтрибут 2 = 2, Aтрибут 4 = 4.
Пример 3. Имеются два элемента A и B, и подстановка элемента А.
Текущие значения атрибутов элемента B: Атрибут 1 = c, Aтрибут 2 = 2, Aтрибут 3 = 3, Aтрибут 4 = 4.
Пример 4. Имеются два элемента A, B и подстановки этих элементов.
Текущие значения атрибутов элемента B: Атрибут 1 = d, Aтрибут 2 = 2, Aтрибут 3 = 3, Aтрибут 4 = 4, Aтрибут 5 = 5
Сценарии (Меню)
Сценарий (Меню) - список предлагаемых для выполнения действий (пунктов меню).
Действие (пункт меню) - набор операций, которые выполняются для получения результата, описанного в названии действия.
Текущее действие - пункт меню, на котором находится курсор.
В проекте сценарии используются для разных целей. В зависимости от места описания сценария различаются следующие варианты его применения.
- Сценарий описан в разделе ‘Сценарии (Меню)’ верхнего уровня любой библиотеки. Этот сценарий будет применён для организации главного меню работы пользователя с программой. Пример такого использования сценария приведён ниже в главе ‘Роли’.
- Сценарий описан в разделе объекта в разделе ‘Сценарии’. Обычно, в этом месте создаются такие сценарии, которые предполагается использовать в качестве родителей при создании других сценариев.
- Сценарий описан под типом объекта в атрибуте ‘Сценарий’. Этот сценарий будет использован при формировании контекстного(локального) меню, вызываемого при нажатии правой кнопки мыши. Примеры находятся в главах, посвящённых объектам Домино.
- Сценарий описан под видом просмотра или формой в атрибуте ‘Сценарий’. Этот сценарий будет применён при создании панели инструментов вида просмотра или формы. Сценарии, являющиеся родителями для панелей инструментов, также могут быть описаны в разделах ‘Сценарии (Меню)’ и ‘Сценарии’. Примеры панелей инструментов приведены в главах ‘Виды просмотра’ и ‘Формы’.
Независимо от назначения и расположения в проекте все сценарии имеют одинаковое описание.
Проектный элемент, описывающий сценарий, обозначается иконкой .
При создании нового сценария будет предложено выбрать тип создаваемого элемента.
- Группа – для создания папки, в которой могут быть сгруппированы несколько сценариев, объединённых по какому-либо признаку. Для группы указывается только наименование.
- Сценарий (Меню) – для создания нового сценария или сценария на базе существующего.
- Подстановка Сценария (Меню) – для переопределения свойств уже существующего сценария.
В форме сценария заполняются наименование (поле Имя) и родитель (поле Сценарий).
Для сценария можно указать следующие атрибуты:
- Копирование – условие копирования сценария проектировщиками. Может ли проектировщик создать копию данного сценария.
- Использование – условие доступа проектировщиков к сценарию. Может ли проектировщик использовать данный сценарий в качестве родителя для своего сценария.
- Использование (в режиме выполнения) – условие доступа пользователей к сценарию. Видны ли пользователю пункты сценария.
- Иконка – для отображения данного сценария в списке и на панели инструментов.
- Размещение окна – для определения места расположения окна на экране.
- Приоритет при расчёте, выводе – при включении сценария в группу, сценарии с данным признаком будут находиться в дереве выше прочих.
- Разворачивать сценарий по месту вставки - признак замены пункта вызова вложенного сценария на его содержимое
- <Наследуемые пункты> – для использования содержания сценария родителя.
- Сценарий (меню) – для описания вложенного сценария.
- Команда – для подключения в сценарий команды.
- Процедура – для подключения в сценарий процедуры.
- Отчёт – для подключения в сценарий отчёта.
- Вид просмотра – для подключения в сценарий вида просмотра.
- Подсказка (ToolTip) – подсказка, высвечиваемая при наведении курсора на кнопку панели инструментов.
Ни один из атрибутов не является обязательным. Такие атрибуты как: ‘Копирование’, ‘Использование’, ‘Использование (в режиме выполнения)’, ‘Иконка’, ‘Размещение окна’, ‘Приоритет при расчёте, выводе’, ‘Наследуемые пункты’, ‘Подсказка (ToolTip)’ – в конкретном Сценарии (Меню) могут быть использованы всего один раз. Количество вложенных Сценариев, Команд, Видов просмотра, Отчётов и Процедур неограниченно.
Копирование, Использование, Использование (в режиме выполнения)
Также применимо для атрибутов ‘Создание’, ‘Наследование’, ‘Активность (в режиме выполнения)’.
Эти атрибуты применяются для ограничения прав на выполнение соответствующих действий.
При заполнении атрибута необходимо заполнить класс ограничения.
Да – безусловное Да. Сценарий доступен без дополнительных условий.
Нет –безусловное Нет. Сценарий не доступен без дополнительных условий.
Да, если все условия соблюдены – При выполнении всех из них сценарий станет доступен для выполнения соответствующего действия. Если условия не будут заданы, то этот класс ограничения будет обозначать безусловное Да, то есть сценарий доступен без ограничения.
Да, если какое-либо условие соблюдено – При выполнении хотя бы одного из них сценарий станет доступен для выполнения соответствующего действия. Если условия не будут заданы, то этот класс ограничения будет обозначать безусловное Да.
Нет, если все условия соблюдены – При выполнении всех из них сценарий станет не доступен для выполнения соответствующего действия. Если условия не будут заданы, то этот класс ограничения будет обозначать безусловное Нет, то есть сценарий не доступен.
Нет, если какое-либо условие соблюдено – При выполнении хотя бы одного из них сценарий станет не доступен для выполнения соответствующего действия. Если условия не будут заданы, то этот класс ограничения будет обозначать безусловное Нет, то есть сценарий не доступен.
Только для системного архитектора – действие доступно только для системного архитектора.
Да, для разработчика базовых примитивов – действие доступно только для разработчика базовых примитивов.
Да, для разработчика отраслевых решений – действие доступно только для разработчика отраслевых решений.
‘Системный архитектор’, ‘Разработчик базовых решений’ и ‘Разработчик отраслевых решений’ – это названия ролей для проектировщиков. Автор, которому назначены данные роли, обладает дополнительными правами при работе с проектом. Например, роль ‘Разработчик базовых решений’ открывает доступ к проектным базовым библиотекам.
Условия ограничений описываются на следующем уровне поддерева. На экран будет выведен список условий:
Описываемый способ задания условий применим не только к сценариям, но и ко многим другим проектным элементам. Обычно, со сценариями используют только первые три условия.
Рассмотрим несколько примеров использования условий.
Если истинно выражение – условие соблюдается, если указанное выражение возвращает истинное значение.
Ограничение указано для пункта сценария ‘Р/Счет’. Пункт должен быть недоступен, если выражение ‘Учёт по юридическим лицам’ возвращает истинное значение.
Определена роль – условие соблюдается, если пользователю назначена указанная роль.
Сценарий будет доступен только тем пользователям, которым назначена роль ‘Бухгалтер-кассир’
НЕ определена роль – условие соблюдается, если пользователю НЕ назначена указанная роль.
В данном примере описано следующее ограничение: действие будет доступно для тех пользователей, которым либо назначена роль ‘Бухгалтер’, либо назначена роль ‘Главный Бухгалтер’, либо НЕ назначена роль ‘Запрет деакцепта документов’.
Расположен в разделе – условие соблюдается, если проектный элемент, для которого проверяется это условие, расположен в указанном разделе дерева проекта.
Проектный элемент будет доступен, если он расположен в разделе ‘Приложение’.
НЕ расположен в разделе – условие обратное предыдущему.
Определён объект – условие соблюдается, если проектный элемент находится в таком разделе дерева проекта, который соответствует указанному объекту.
Проектный элемент будет доступен, если он расположен в разделе ‘Каталог’
НЕ определён объект – условие обратное предыдущему.
Иконка
Этот атрибут используется для выбора иконки, которой будет обозначаться данный сценарий. Иконка выбирается из списка зарегистрированных в программе иконок.
Если не задать иконку, то сценарию будет присвоена стандартная иконка сценария .
Размещение окна
Данный атрибут применяется для указания месторасположения окна сценария на экране. Значение элемента выбирается из следующего списка:
Приоритет при расчёте, выводе
Данный атрибут применяется для изменения последовательности пунктов сценария.
Чем большее значение имеет данный атрибут, тем выше пункт будет расположен в сценарии.
Пункты сценария, для которых данный атрибут не указан, будут расположены в последовательности их следования в проекте.
Сценарию ‘Управление пользователями’ задан такой высокий приоритет для того, чтобы при объединении сценариев данный сценарий всегда располагался на самом верху списка.
<Наследуемые пункты>
Данный атрибут применяется в том случае, когда требуется использовать содержимое сценария родителя. Очевидно, что если для сценария не указан родитель, то указание атрибута не имеет смысла.
Содержимое сценария родителя вставляется вместо данного атрибута. Так, если атрибут будет указан первым пунктом, то пункты из сценария родителя будут расположены в верху получаемого сценария. Если данный атрибут будет указан в конце списка пунктов, то и пункты из сценария родителя также будут расположены в конце. Атрибут можно указать и между пунктами. В этом случае добавляемые пункты ‘раздвинут’ начальный список пунктов.
Рассмотрим пример описания панели инструментов.
‘Стандартный сценарий для товарных документов’ содержит атрибут ‘<Наследуемые пункты>’. Сценарий имеет родителя ‘Стандартные действия над объектом’.
Для данного сценария описаны три пункта. Они будут добавлены в начальный сценарий вместо обсуждаемого атрибута. В итоге будет высвечен следующий сценарий (панель инструментов):
Сценарий (меню)
Данный атрибут используется для описания вложенного сценария (меню). Он позволяет создавать сценарии иерархической структуры.
Количество уровней вложенности неограниченно. Вложенный сценарий будет включён в сценарий верхнего уровня, как его составная часть.
Например, в контекстном меню указан вложенный сценарий, содержащий вызовы двух отчётов:
Вот так выглядит вызов контекстного меню:
Можно раскрыть вложенный сценарий:
Для разделения пунктов сценария главного меню применяют следующий приём – вставляют ‘пустой’ сценарий. Имя ‘пустого’ сценария набирают из знаков минус (-) или равно (=). Далее заменяют стандартную иконку сценария.
Вот так это будет выглядеть на экране:
Команда
Данный атрибут используется для подключения в сценарий команды.
Команда – это проектный элемент, используемый для передачи программе требования выполнить соответствующее действие. Кроме того, команды используются при взаимодействии различных компонент программы.
Если сценарий (меню) используется при описании панели инструментов, то можно применять команду-разделитель. Вместо этой команды будет отображена разделительная черта.
В описании сценария дважды применена команда-разделитель. Между кнопками на панели управления вставляется разделительная черта.
Полный список команд находится в библиотеке ‘Системная область’, раздел ‘Интерфейс’, раздел ‘Команды’. Назначение команды понятно из её наименования.
Процедура
Данный атрибут используется для подключения в сценарий вызова процедуры.
Процедура – это проектный элемент, описывающий некие действия. Вызов процедуры – это указание программе, что требуется выполнить действия, заданные для этой процедуры.
Если не указана иная иконка, то пункт меню с вызовом процедуры имеет стандартную иконку процедуры.
Отчёт
Данный атрибут используется для подключения в сценарий вызова отчёта.
Отчётами называют процедуры, предназначенные для отбора, сортировки, группировки данных и выдачи их на экран, принтер, в файл.
Если не указана иная иконка, то пункт меню с вызовом отчёта имеет стандартную иконку отчёта.
Вид просмотра
Данный атрибут используется для подключения в сценарий вызова вида просмотра.
Вид просмотра – это проектный элемент, предназначенный для отображения списков данных.
Если не указана иная иконка, то пункт меню с вызовом вида просмотра имеет стандартную иконку вида просмотра .
В панели инструментов формы при вызове команды, вида просмотра, отчёта или процедуры для пункта сценария можно указать атрибут ‘Сохранить изменения перед вызовом’. Наличие этого атрибута означает, что перед выполнением указанных действий вся введённая в форму информация будет записана в БД.
Подсказка (ToolTip)
Данный атрибут применяется при описании панели инструментов. Указанный текст высвечивается в виде подсказки под кнопкой.
Например, укажем подсказку под кнопкой ‘Расч.счета’ в виде просмотра партнёров.
Теперь, если работе с данным видом просмотра навести курсор на кнопку, то появится заданная подсказка:
В случае если текст подсказки не указан, то в качестве подсказки будет отображено наименование кнопки.
Создание группы сценариев, объединённых в одной папке
Группа сценариев создаётся для объединения в одной папке (под одним названием) нескольких сценариев. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.
Группа сценариев может содержать неограниченное число Сценариев, Групп сценариев и Подстановок сценариев.
Подстановка сценария
Подстановка применяется для изменения атрибутов сценария.
Например. В библиотеке ‘Товародвижение’ имеется сценарий ‘Оператор’.
Если необходимо в сценарии ‘Оператор’ удалить элемент ‘Приём кассовых отчётов’, то это можно сделать в подстановке этого сценария.
Обратите внимание на последствия сделанного изменения - пункт меню ‘Приём кассовых отчётов’ исчезнет во всех сценариях, являющихся наследниками сценария ‘Оператор’ и имеющих в описании атрибут ‘Наследуемые пункты’.
Роли
Роль – совокупность действий, которые может выполнять пользователь.
Роли применяются для двух целей.
- Определить набор сценариев для групп пользователей.
- Ограничить права доступа для групп пользователей.
Рассмотрим подробнее каким образом достигаются эти цели.
Роль определяет набор сценариев для группы пользователей
При регистрации пользователя ему назначаются исполняемые роли.
Для каждой роли в проекте может быть указан набор сценариев. Например, вот так.
После регистрации пользователя, на экран будет выведен список сценариев, доступных указанному пользователю. Этот список формируется на основании назначенных пользователю ролей – списки сценариев по ролям объединяются в единый сценарий. И пользователю будет предложен этот единый список сценариев, иначе называемый главным меню работы пользователя.
Роль ограничивает права доступа для группы пользователей
Для многих проектных элементов можно указать условие доступа к этому элементу. Условия описываются в атрибутах ‘Создание’, 'Копирование', 'Использование', 'Использование (в режиме выполнения)' , ‘Наследование’, ‘Активность (в режиме выполнения)’. Правила описания этих атрибутов приведены выше в главе ‘Сценарии’.
Возможны два вида ограничений по ролям:
Определена роль – условие соблюдается, если пользователю назначена указанная роль.
Сценарий будет доступен только тем пользователям, которым назначена роль ‘Бухгалтер-кассир’
НЕ определена роль – условие соблюдается, если пользователю НЕ назначена указанная роль.
В данном примере описано следующее ограничение: действие будет доступно для тех пользователей, которым либо назначена роль ‘Бухгалтер’, либо назначена роль ‘Главный Бухгалтер’, либо НЕ назначена роль ‘Запрет деакцепта документов’.
Описание роли
Проектный элемент, описывающий роль, обозначается иконкой.
При создании новой роли будет предложено выбрать тип создаваемого элемента.
- Группа ролей– для создания папки, в которой могут быть сгруппированы несколько ролей, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Только одна из ролей – для создания папки, объединяющей взаимоисключающие роли. При назначении пользователям ролей можно выбрать только одну роль из этой папки.
- Роль – для создания новой роли.
- Подстановка роли – для изменения свойств уже существующей роли.
В форме роли заполняется только наименование.
Для роли можно указать следующие атрибуты:
- HFile definition – используется программистами.
- Использование – условие доступа проектировщиков к роли. Может ли проектировщик использовать данную роль в качестве родителя для своей роли.
- Использование (в режиме выполнения) – условие доступа пользователей к роли. Можно ли назначить данную роль пользователю.
- Роль – для описания вложенной роли.
- Список начальных сценариев – для описания списка сценариев, связанных с данной ролью.
Подробное описание атрибутов, задающих условия доступа, находится в главе ‘Сценарии’.
Роль
Данный атрибут используется для описания вложенной роли. Вложенная роль отличается от обычной роли только тем, что её описание находится внутри другой роли.
Можно создать дерево ролей. Количество уровней вложенности в дереве неограниченно.
Дерево ролей применяется в режиме назначения ролей пользователю. Если назначить пользователю роль верхнего уровня, то автоматически пользователю будут назначены все роли, находящиеся под указанной. Аналогичное правило действует при отмене назначения роли.
В настоящий момент данная возможность проектировщиками не используется, поскольку объединение ролей в папках удобнее и нагляднее.
Список начальных сценариев
Данный атрибут задает для роли список сценариев. Пользователю, обладающему данной ролью, будут доступны указанные сценарии.
Для роли ‘Администратор организации’ указаны три сценария. Описания сценариев находятся в трех библиотеках проекта (раздел ‘Сценарии (Меню)’).
При формировании главного меню для пользователя, обладающего ролью ‘Администратор организации’, указанные сценарии будут объединены. Главное меню будет выглядеть вот таким образом:
Создание группы ролей, объединенных в одной папке
Группа ролей создается для объединения в одной папке (под одним названием) нескольких ролей. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.
Группа ролей может содержать неограниченное число Ролей, Групп ролей и Подстановок ролей.
Подстановка роли
Подстановка применяется для изменения атрибутов роли.
Например. В библиотеке ‘Товародвижение’ имеется роль ‘Старший оператор’. Для этой роли не задан ни один атрибут.
В библиотеке ‘ТОРГОВАЯ СЕТЬ’ находится подстановка этой роли.
В подстановке указан атрибут ‘Список начальных сценариев’.
Виды просмотра
Вид просмотра – это элемент проекта, который определяет содержание, доступные действия и порядок отображения данных в табличном виде.
Виды просмотра можно описывать в разделе ‘Виды просмотра’ верхнего уровня любой библиотеки, либо внутри объектных разделов в разделе ‘Виды просмотра’. Принято, что в объектные разделы помещают виды просмотра, работающие от контекста объекта. Например, раздел ‘Документы’, раздел ‘Виды просмотра’ содержит виды просмотра строк документа, поскольку данные виды просмотра работают только при установленном контексте документа.
Виды просмотра в дереве проекта обозначены иконкой .
В проекте описаны виды просмотра двух родов. Первый - обычные виды просмотра. Они называются так, поскольку изначально были включены в Домино. Позже, с появлением в Домино языка скриптов, были разработаны виды просмотра второго рода. В видах просмотра на языке скриптов имеется больше возможностей для добавления специальных процедур, изменяющих стандартный алгоритм программы. Но описание таких видов просмотра намного сложнее. Подробнее о видах просмотра на языке скриптов можно прочитать в главе ‘Язык скриптов’.
Различать обычные виды просмотра и виды просмотра на языке скриптов можно либо по списку атрибутов, либо по родителю. Обычные виды просмотра имеют базового родителя – вид просмотра ‘ОБЪЕКТЫ’, который находится в библиотеке ‘Системная область’. Виды просмотра на языке скриптов имеют базового родителя- вид просмотра ‘ПРОСМОТР СПИСКА ДАННЫХ’, который находится в библиотеке ‘!Примитивы скриптов’.
Последующее описание касается, прежде всего, обычных видов просмотра.
Назначение некоторых атрибутов совпадает для видов просмотра обоих родов. Поэтому при описании видов просмотра на языке скриптов имеется ссылка на последующий текст.
При создании нового вида просмотра будет предложено выбрать тип создаваемого элемента.
- <Примитивы> - данный раздел используется системными администраторами проекта.
- Группа видов просмотра– для создания папки, в которой могут быть сгруппированы несколько видов просмотра, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Вид просмотра – для создания нового вида просмотра на базе существующего.
- Подстановка вида просмотра – для переопределения свойств уже существующего вида просмотра.
В форме вида просмотра заполняются наименование (поле ‘Имя’) и родитель (поле ‘Класс’).
Выбор родителя влияет на род нового вида просмотра. Если родитель является обычным видом просмотра, то и создаваемый вид просмотра также будет обычным. Если родитель написан на языке скриптов, то для нового вида просмотра будут доступны дополнительные атрибуты.
Виды просмотра описываются исключительно на базе уже существующих в проекте видов просмотра.
Описание вида просмотра
Для вида просмотра можно указать следующие атрибуты:
- HFile definition – используется программистами.
- Копирование – условие копирования проектировщиками описания вида просмотра.
- Использование – условие доступа проектировщиков к виду просмотра.
- Использование (в режиме выполнения) – условие доступа пользователей к виду просмотра.
- Размещение окна – для определения места расположения окна на экране.
- Иконка – для отображения вида просмотра в сценариях и панели инструментов. Иконка выбирается из списка зарегистрированных в программе иконок.
- Если не задать иконку, то виду просмотра будет присвоена стандартная иконка вида просмотра
.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Выборка – определяет основное правило отбора данных для вида просмотра.
- Сценарий – определяет список кнопок, которые будут представлены на панели инструментов.
- Список горячих клавиш – определяет список горячих клавиш. За каждой горячей клавишей закреплено определенное действие (вызов команды, процедуры, сценария, вида просмотра), которое будет выполнено при нажатии на клавишу.
- Выбор одного объекта из списка – наличие данного признака указывает, что вид просмотра будет применяться для выбора записей (например при заполнении поля формы ввода).
- Автоматический выбор единственной возможной записи – если установлен данный признак, то вид просмотра применяется для выбора, и если он содержит только одну запись, то данная запись будет выбрана автоматически, без отображения вида просмотра на экране.
- Выбор нескольких объектов из списка – наличие данного признака разрешает выбрать (пометить) несколько записей.
- Список полей просмотра – содержит описание колонок вида просмотра.
- Итоги – содержит описание итоговых величин, рассчитываемых по записям вида просмотра.
- Ограничения по классам/типам – для наложения ограничений на класс или тип выбираемых объектов, которые будут отображены в таблице вида просмотра.
- Параметры, обязательные при задании ограничений – для ограничения объема информации, единовременно выводимой на экран, по заданному параметру. При помощи данного атрибута определяются те параметры, которые обязательны для заполнения при вызове данного вида просмотра.
- Выполнить для каждой прочитанной строки – для описания выражения, которое неоднократно будет использоваться в полях данного вида просмотра.
- Ограничения на отбор данных – для наложения ограничений на произвольные параметры выбираемых объектов, которые будут отображены в таблице вида просмотра.
- Заголовок – определяет заголовок окна. Если заголовок окна не задан, то будет использовано либо наименование того пункта сценария, в котором вызывается данный вид просмотра, либо наименование родителя вида просмотра, если вид просмотра вызывается не из сценария.
- Локальные переменные – содержит список локальных переменных вида просмотра.
- Вид просмотра зависимых записей – указывает вид просмотра зависимых записей (записей, являющихся наследниками текущей).
- Только для просмотра – при установленном признаке запрещены все действия по изменению отображенных данных.
- Шрифт – задает шрифт для записей вида просмотра.
- Цвет шрифта – задает цвет шрифта для записей вида просмотра.
- Цвет фона – задает цвет фона для окна вида просмотра.
- Выбор типов создаваемых объектов – для ограничения типов объектов, создаваемых в данном виде просмотра.
- Сохранять текущие значения фильтров в профиле – при установленном признаке при выходе из вида просмотра сохраняются текущие значения фильтров.
- Высвечивать все наследуемые классы, типы – при установленном признаке в виде просмотра будут представлены не только объекты, имеющие указанные классы и типы (атрибут ‘Ограничения по классам/типам’), но и объекты с классами и типами, являющиеся наследниками данных классов и типов.
- Действие, выполняемое при смене строки вида просмотра - применяется для подключения всевозможных процедур, запускаемых при установке курсора на новую строчку в таблице вида просмотра. Данный атрибут практически не используется.
- Интерфейс – указывает визуальную компоненту, которая будет использована для отображения вида просмотра. Подробное описание свойств различных интерфейсов приведено в других томах документации.
- Формальные параметры – список формальных параметров для вызова вида просмотра. В обычных видах просмотра практически не применяется.
- Значения формальных параметров при вызове – список значений формальных параметров. Раздел заполняется при вызове вида просмотра. В обычных видах просмотра практически не применяется.
- Обработка команд интерфейса – изменяет действия, выполняемые по стандартным командам интерфейса. В обычных видах просмотра практически не применяется.
Рассмотрим подробнее применение атрибутов.
Выборка
Данный атрибут определяет основное правило отбора данных для вида просмотра. Выборка указывает:
- из какой таблицы БД отбирать записи;
- какой индекс таблицы следует использовать.
В проекте описаны выборки двух типов: базовая выборка и обычная выборка. Каждая базовая выборка соответствует одному стандартному индексу таблицы БД. Обычная выборка является наследником базовой выборки и содержит дополнительные условия отбора.
Форма описания данного атрибута содержит одно поле ‘Класс’.
Значение поля выбирается из списка зарегистрированных в проекте выборок. Базовые выборки находятся в библиотеке ‘Системная область’, раздел ‘Выборки’, раздел ‘СТАНДАРТЫ’.
В проекте описаны пять стандартных выборок для таблицы ‘ПАРТНЕРЫ’.
Для выборки можно задать следующие атрибуты:
- Ограничение на класс/тип объектов – для наложения ограничений на класс или тип выбираемых объектов.
- Список ограничений на поля объектов – для наложения ограничений на произвольные параметры выбираемых объектов.
Назначение данных атрибутов совпадает с назначением атрибутов вида просмотра ‘Ограничения по классам/типам’ и ‘Ограничение на отбор данных’.
Последние два атрибута разрешают наследование первых атрибутов.
Пример. Рассмотрим вид просмотра документов из библиотеки ‘!Базовый набор’.
Для данного вида просмотра правило отбора данных определяется выборкой ‘Приходные Товарные документы’.
Разберем описание выборки и ее родителей.
Базовая выборка ‘ДОКУМЕНТЫ ПО ДАТЕ’ соответствует стандартному индексу таблицы ‘ДОКУМЕНТЫ’ и определяет отбор записей из таблицы в порядке следования даты документа. Выборка ‘Приходные товарные документы’ накладывает дополнительное ограничение на отбор данных. Подходят только те документы, которые имеют класс ‘ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.
Дополнительные условия на отбор данных (ограничения по классам/типам и параметрам) можно указать либо при описании выборки, либо в атрибуте ‘Выборка’ вида просмотра, либо в соответствующих атрибутах вида просмотра (‘Ограничения по классам/типам’ и ‘Ограничение на отбор данных’). Рекомендуется последний вариант, как более наглядный.
Сценарий
Данный атрибут определяет список кнопок (строк сценария), которые будут представлены на панели инструментов. Если атрибут не указан, то будет применено описание атрибута из вида просмотра – родителя.
Список может как включать в себя как имеющиеся готовые сценарии (с добавлением к ним своих кнопок), так и быть составлен самостоятельно.
При описании сценария доступны все те атрибуты, которые рассматривались в главе ‘Сценарии’.
Если требуется, чтобы кнопка была подписана, то при описании кнопки необходимо ввести значение в поле ‘Имя’.
Рассмотрим пример панели инструментов. Для вида просмотра ‘Ассортиментные группы’ указан следующий сценарий.
Пользователь при работе с этим видом просмотра увидит вот такую панель инструментов:
Список горячих клавиш
Данный атрибут определяет список горячих клавиш, действующих в данном виде просмотра. За каждой горячей клавишей закреплено определенное действие (вызов команды, процедуры, сценария, вида просмотра), которое будет выполнено при нажатии на клавишу.
При описании списка горячих клавиш будет предложено выбрать тип создаваемого элемента.
- Наследуемые назначения клавиш – для наследования описания клавиш из родителя вида просмотра.
- Назначение клавиши – для описания клавиши.
Форма описания горячей клавиши содержит два поля ‘Имя’ и ‘Клавиша’.
Поле ‘Клавиша’ заполняется значением из списка зарегистрированных в проекте клавиш и сочетаний клавиш. Список клавиш находится в библиотеке ‘Системная область’, раздел ‘Интерфейс’, раздел ‘Список клавиш’.
Рассмотрим пример описания списка горячих клавиш.
С клавишей DELETE связана пустая команда. Это означает, что никаких действий при нажатии этой клавиши выполнять не следует. Такая конструкция отменяет назначение этой клавиши, описанное в виде просмотре – родителе. При нажатии клавиши Серый плюс будет вызван вид просмотра ‘Резервуары’. Команда ’Назад’ привязана к клавише Серый минус. Остальные назначения горячих клавиш следует взять из описания родителя вида просмотра.
Список полей просмотра
Данный атрибут применяется для описания полей (колонок) вида просмотра. В список колонок можно включить колонки из вида просмотра - родителя.
При описании списка полей просмотра доступны следующие типы проектных элементов:
- <Наследуемые поля, колонки> - для наследования списка полей из родителя вида просмотра.
- Поле (колонка), являющееся параметром объекта – для описания нового поля.
- Выражение – для описания правил расчета какой-либо величины.
Форма описания поля вида просмотра содержит два поля ‘Имя ’ ‘Класс’.
Поле ‘Класс’ заполняется либо ссылкой на параметр объекта, либо ссылкой на выражение. Выражение может быть описано как в данной папке, так и в других разделах проекта.
Для каждого из полей вида просмотра можно задать следующие атрибуты:
Уточняющий параметр
Уточняющий параметр – данный атрибут применяется в том случае, если требуется отобразить параметр другого объекта. Например, при просмотре партнеров требуется отобразить наименование региона.
Вот так выглядит применение уточняющего параметра. Использование уточняющего параметра позволяет отобразить в столбце ‘Группа’ значение поля ‘Наименование’ из таблицы Каталог’.
Рассмотрим подробнее как была введена такая конструкция.
Сначала заполняется имя поля вида просмотра. В данном случае – это ‘Группа’. Далее требуется заполнить поле ‘Класс’.
При отображении таблицы ‘Партнер’ доступны все поля партнера, но требуется отобразить поле записи из таблицы ‘Каталог’. Ссылка на запись таблицы ‘Каталог’ находится в поле ‘Группа’ таблицы ‘Партнер’. Выбираем это поле из списка доступных полей.
Теперь необходимо заполнить уточняющий параметр ссылкой на поле ’Наименование’ из таблицы ‘Каталог'. Выбираем соответствующее поле из списка.
Получим.
Конструкцию можно условно написать вот так: Партнер.Группа.Наименование
Данная запись означает, что требуется получить значение параметра ‘Наименование’ из записи таблицы ‘Каталог’. Ссылка на нужную запись таблицы ‘Каталог’ находится в параметре ‘Группа’ записи таблицы ‘Партнер’. Ссылка на запись – это параметр типа UID, в котором хранится идентификатор соответствующей записи.
Рассмотренный принцип применения уточняющего параметра является общим при описании проекта. Уточняющие параметры применяются в выражениях, процедурах, функциях, списках полей в видах просмотра, формах и отчетах.
Разберем еще один пример применения уточняющего параметра.
Если результат, возвращаемый уточняющим параметром, имеет тип UID, то можно еще раз применить уточняющий параметр. Вложение данного атрибута возможно столько раз, сколько требуется для получения необходимого результата. Например, при просмотре строк документа требуется отобразить наименование того подразделения, на котором был создан документ. В строке имеется ссылка на документ, в документе имеется ссылка на подразделение. Вот как будет выглядеть конструкция с двумя уточняющими параметрами.
Поскольку отображаются строки, то доступны любые параметры строки, в том числе параметр ‘Документ‘, содержащий ссылку на запись таблицы ‘Документ’ .
Первый (верхний) уточняющий параметр возвращает значение поля ‘Подразделение’ из записи таблицы ‘Документ’. Ссылка на запись таблицы ‘Документ’ находится в поле ‘Документ’ строки. Возвращаемое уточняющим параметром значение, по сути, является ссылкой на запись таблицы ‘Партнер’. Второй (нижний) уточняющий параметр возвращает значение поля ‘Наименование’ из записи таблицы ‘Партнер’.
Условная запись полученной конструкции выглядит следующим образом: Строка.Документ.Подразделение.Наименование
Данная запись означает, что требуется получить значение параметра ‘Наименование’ из записи таблицы ‘Партнер’. Ссылка на нужную запись таблицы ‘Партнер’ находится в поле ‘Подразделение’ записи таблицы ‘Документ’. Ссылка на нужную запись таблицы ‘Документ’ находится в поле ‘Документ’ записи таблицы ‘Строка’.
Атрибуты поля (колонки) вида просмотра
Рассмотрим остальные атрибуты.
- Выравнивание - для задания вида выравнивания текста внутри колонки. Может принимать одно из следующих значений.
- Формат - для задания формата отображения содержимого поля. Значение поля выбирается из списка.
- Минимально возможная ширина – минимальная ширина колонки в символах.
- Максимально возможная ширина – максимальная ширина поля в символах.
- Язык – применяется для поддержки национальных языков.
- HFile definition – данный атрибут используется программистами.
- Выбор из списка – применяется при вводе данных в ячейку. Данный атрибут указывает вида просмотра, который содержит список возможных значений поля.
При заполнении поля ‘Поставщик’ используется вид просмотра ‘Выбор торгового партнера по наименованию’.
- Название поля, колонки определяется динамически – при установленном признаке программа самостоятельно формирует заголовок колонки. Данный атрибут применяется при просмотре проводок или оборотов для колонок, содержащих значения аналитик. Например.
- Отображать нуль как число – при установленном признаке нулевое значение колонки будет отображено как число ноль. В противном случае нулевое значение отображено не будет.
- Округление – задает правило округления содержимого колонки. Может принимать либо одно из значений списка, либо ссылаться на выражение.
- Доступно (видимо), если – задает условие отображения колонки.
Условие доступности колонки ссылается на выражение. Если выражение возвращает истинное значение, то колонка будет доступна. Рассмотрим используемое выражение.
В выражении находится вызов функции ‘ПРАВА ОБЪЕКТА’. В итоге получаем следующее условие: пользователь увидит содержимое колонки ‘Ост.(ОКУ)’ только в том случае, если для данного пользователя определена роль ‘Дополнительный количественный учет’.
- Иконка – задает иконку в ячейке. Обычно для задания иконки применяется выражение.
- Шрифт – задает шрифт для ячейки таблицы.
- Цвет шрифта – задает цвет шрифта для ячейки таблицы.
- Цвет фона – задает цвет фона для ячейки таблицы.
- Допустимо изменение (редактирование) – применяется при вводе данных в ячейку. При установленном признаке разрешается изменять содержимое колонки.
- Использовать локатор для поиска по колонке – при установленном признаке для данной колонки включается поддержка поиска строки вида просмотра в режиме локатора. Т.е. при наборе символов с клавиатуры программа установит курсор на ту строку вида просмотра, у которой содержимое ячейки в данной колонке начинается с введенных символов.
Поддержка национальных языков
В Домино имеется возможность отображения текста на национальном языке.
Атрибут ‘Язык’ определяет преобразование данных, которое будет выполняться при выводе строки на экран и при вводе ее с клавиатуры. Он не влияет на алгоритмы обработки и хранения данных, в том числе и на их сортировку.
Значение атрибута выбирается из списка зарегистрированных в проекте значений.
Атрибут ‘Язык’ можно задать для строкового поля объекта, строковой переменной (локальной или глобальной), поля формы, колонки вида просмотра и поля отчета.
Итоги (Totals)
Данный атрибут используется для вывода итоговых величин, рассчитанных по строкам вида просмотра.
При описании итогов доступны следующие типы проектных элементов:
- <Наследуемые поля, колонки> - для наследования списка итогов из родителя вида просмотра.
- Поле (колонка), являющееся параметром объекта – для описания нового итогового поля.
- Выражение – для описания правил расчета какой-либо величины.
Пример. Вот так описываются подсчет количества строк в документе и сумма товарных единиц во всех строках.
Атрибут ‘Всего строк’ ссылается на функцию, всегда возвращающую единицу. Атрибут ‘Всего единиц товара’ ссылается на параметр строки ‘Количество’, в котором хранится сумма товарных единиц одной строки.
Ограничения по классам/типам
Данный атрибут используется для наложения ограничений на класс или тип объектов, которые будут отобраны для вида просмотра. В виде просмотра будут представлены только объекты указанных классов и типов.
Форма для задания ограничения содержит одно поле ‘Тип или класс’.
Значение поля выбирается из списка зарегистрированных в проекте классов и типов объектов.
Например, для выбора класса или типа документа будет высвечен следующий список.
Можно указать несколько классов или типов. Для этого потребуется ввести несколько атрибутов, в каждом из которых выбрать один из интересующих классов.
Например.
Вид просмотра будет содержать только документы, имеющие следующие классы:’ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’, ‘РАСХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’, ‘ВХОДЯЩАЯ СЧЕТ-ФАКТУРА’, ‘ИСХОДЯЩАЯ СЧЕТ_ФАКТУРА’.
Параметры, обязательные при задании ограничений
Данный атрибут используется для ограничения объема информации, единовременно выводимой на экран, по заданному параметру. При помощи данного атрибута определяются те параметры, которые обязательны для заполнения при вызове данного вида просмотра.
Предназначение атрибута лучше описать на примере.
Предположим, требуется отобразить список документов по подразделению. Если не указывать данный атрибут, то вид просмотра будет отображать документы по всем подразделениям сразу. Для просмотра документов только по одному подразделению требуется заполнить фильтр. Можно отменить действие фильтра, при этом вновь будет высвечен полный список.
Применим данный атрибут для задания ограничения по параметру документа ‘Подразделение’. Это будет выглядеть примерно вот так.
Теперь вид просмотра будет всегда содержать документы только по одному подразделению. Для изменения содержимого вида просмотра необходимо изменить значение параметра ‘Подразделение’. Один из подходящих вариантов заключается в изменении значения фильтра. Вот только отменить действие фильтра для того чтобы получить полный список документов, теперь не удастся. Программа будет требовать обязательного заполнения параметра ‘Подразделение’.
При установке ограничения допустимы дополнительные атрибуты:
- Место, где сохранять и откуда восстанавливать – данный атрибут применяется в том случае, если требуется использовать параметры ограничений при повторном обращении к виду просмотра. При вводе атрибута необходимо указать глобальную переменную, в которую будет записано текущее значение параметра при завершении работы с видом просмотра. При повторном запуске вида просмотра начальное значение параметра будет считано из указанной глобальной переменной.
- Проверять права текущего пользователя – данный атрибут применяется при установке ограничений по подразделению или по группе продуктов. Эти два случая выделяются тем, что имеются специальные таблицы, которые содержат признаки доступа пользователя к каждому подразделению и к каждой группе продуктов. Таблицы прав заполняются при регистрации пользователя. Права на доступ к подразделениям заполняются всегда. Использование прав на доступ к группам продуктов задается в конфигурации проекта. При установленном признаке программа будет учитывать указанные права доступа.
Для рассматриваемого примера это означает следующее. При обработке ограничения программа считывает признак доступа пользователя к тому подразделению, которое записано в значении параметра. И если пользователь не имеет прав на работу с данным подразделением, то никакие документы по этому подразделению показаны не будут.
Выполнить для каждой прочитанной строки
Данный атрибут используется для описания выражения, которое неоднократно будет использоваться в полях данного вида просмотра.
Рекомендуется применять данный атрибут для повышения производительности работы программы. Если в нескольких полях просмотра используется для расчета одно и то же выражение, то целесообразно рассчитать его значение один раз, а потом использовать полученный результат.
Пример
Список полей вида просмотра содержит два поля, для которых можно применить данный атрибут. Это поля ‘Статус’ и ‘Оплачено’. При расчете каждого их этих полей используется выражение ‘Оплачено’. Без применения рассматриваемого атрибута выражение будет рассчитано два раза (по числу полей) для каждой строки. Применение атрибута позволяет рассчитать данное выражение один раз для строки.
Ограничения на отбор данных
Данный атрибут используется для наложения ограничений на произвольные параметры объектов, которые будут отобраны для вида просмотра. В виде просмотра пользователь сможет увидеть только те записи, которые удовлетворяют указанному ограничению.
Ранее было приведено описание атрибута ‘Ограничения по классам/типам’, предназначенного для задания ограничений только по классам и типам объектов. Ограничения по классам и типам выделены в отдельный атрибут по той причине, что в случае ограничений по этим параметрам возможна оптимизация отбора данных из БД. При задании ограничений по любым другим параметрам оптимизировать отбор данных невозможно.
Для описания ограничения имеются следующие атрибуты:
- <Наследуемые поля, колонки> - для наследования списка ограничений из родителя вида просмотра.
- Выражение – для описания правил расчета какой-либо величины.
- Where – для задания ограничения по условию равенства.
При описании условия сначала выбирается параметр объекта, на который будет наложено ограничение. Затем указывается вторая часть равенства. Можно указать либо константу, либо переменную, выражение, функцию или другой параметр объекта. Условие считается выполненным, если значение параметра объекта равно указанному значению параметра из второй части условия.
Where BETWEEN – для задания ограничения по диапазону значений.
При описании условия сначала выбирается параметр объекта, на который будет наложено ограничение. Затем указываются границы диапазона. При задании границ диапазона можно указать либо константу, либо переменную, выражение, функцию или другой параметр объекта. Условие считается выполненным, если значение параметра объекта попадает в указанный диапазон.
Where LIKE – для задания ограничения по вхождению подстроки.
При описании условия сначала выбирается параметр объекта, на который будет наложено ограничение. Затем указывается подстрока. При задании подстроки можно указать либо константу, либо переменную, выражение, функцию или другой параметр объекта. Условие считается выполненным, если значение строкового параметра объекта содержит указанную подстроку.
Ограничения по диапазону и по вхождению подстроки практически не применяются.
Рассмотрим пример задания ограничений. Требуется выбрать все расчетные счета партнера. Контекстная переменная <<Партнер>> содержит ссылку на интересующего партнера.
Для вида просмотра ‘Расчетные счета партнера’ указаны оба атрибута для задания ограничений на отбор данных. Атрибут ‘Ограничения на класс/тип объектов’ содержит ограничение на тип партнера ‘Расчетный счет’. В атрибуте ‘Ограничения на отбор данных’ указано ограничение на родителя записи.
Вид просмотра зависимых записей
Данный атрибут используется для указания вида просмотра зависимых записей (записей, являющихся наследниками текущей). Вид просмотра зависимых записей вызывается при нажатии клавиши <Серый плюс> или по кнопке Вперед.
При задании атрибута выбирается уже существующий в проекте вид просмотра.
При работе в виде просмотра ’Товары по коду’ можно для каждого товара (запись вида просмотра) просмотреть список его партий.
Для вызываемого вида просмотра зависимых записей можно указать (изменить) следующие атрибуты:
У записи могут быть наследники различных типов и классов. Для вызова видов просмотра других наследников придётся задействовать другие клавиши и кнопки на панели инструментов. С клавишей <Серый плюс> и кнопкой Вперед связывается только один вид просмотра – тот, который указан в рассматриваемом атрибуте.
Выбор типов создаваемых объектов
Данный атрибут используется для ограничения типов объектов, создаваемых в данном виде просмотра. В виде просмотра можно будет создавать объекты только с перечисленными в данном атрибуте типами.
Для описания атрибута применяются два атрибута:
- Тип или класс … – задает тип или класс объектов.
- Тип или класс … 1-го уровня – используется в иерархических видах просмотра. На верхнем уровне иерархии могут быть введены объекты только указанного типа или класса.
Формы для ввода обоих атрибутов идентичны и содержат одно поле ‘Тип или класс’. Значение поля выбирается из списка зарегистрированных в проекте классов и типов объектов.
Например, для выбора класса или типа партнера будет высвечен следующий список.
Нельзя указать несколько типов или классов. Если задан класс, то в виде просмотра будет разрешено создавать объекты любого типа данного класса. Если задан тип, то в виде просмотра будет разрешено создавать объекты только указанного типа.
Примеры.
В виде просмотра партий товара разрешено создавать только партии, т.е. товары любого типа с классом ‘ПАРТИЯ ТОВАРА’.
В иерархическом виде просмотра подразделений на верхнем уровне иерархии может располагаться только Организация. На других уровнях можно создавать партнеров класса ‘ПОДРАЗДЕЛЕНИЕ’.
Создание группы видов просмотра, объединенных в одной папке
Группа видов просмотра создается для объединения в одной папке (под одним названием) нескольких видов просмотра. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.
Группа Видов просмотров может содержать неограниченное число Видов просмотров, Групп видов просмотров и Подстановок видов просмотров.
Подстановка вида просмотра
Подстановка применяется для изменения атрибутов вида просмотра.
Например. В библиотеке ‘!Базовый набор’ имеется вид просмотра ‘Приходные товарные документы’.
Найдем подстановку данного вида просмотра. Она находится в библиотеке ‘#Товародвижение’.
В подстановке изменен список полей вида просмотра. К указанным ранее полям добавлены еще три поля.
Если в проект подключена библиотека ‘Торговая сеть’, то еще одну подстановку можно обнаружить в этой библиотеке.
В этой подстановке не только изменен список полей вида просмотра, но изменены также сценарий и список горячих клавиш.
Поскольку библиотека ‘Торговая сеть’ в дереве проекта находится ниже библиотеки ‘#Товародвижение’, то для вида просмотра будет применен тот список полей, который указан во второй подстановке (из библиотеки ‘Торговая сеть’).
Форма
Форма – это элемент проекта, который определяет содержание, доступные действия и порядок отображения данных в виде карточки. Также формой называют интерфейсную компоненту, отображающую данные в виде карточки.
Формы можно описывать в разделе ‘Формы’ верхнего уровня любой библиотеки, либо внутри объектных разделов в разделе ‘Формы’. Раздел ‘Формы’ верхнего уровня библиотеки содержит те формы, которые не используются для ввода какого-либо объекта. В объектные разделы помещают формы для ввода объектов. Например, раздел ‘Документы’, раздел ‘Формы’ содержит формы документа. Другие примеры форм объектов приведены в главах, посвященных объектам.
Формы в дереве проекта обозначены иконкой .
При создании новой формы будет предложено выбрать тип создаваемого элемента.
- <Примитивы> - данный раздел используется системными администраторами проекта.
- Группа форм – для создания папки, в которой могут быть сгруппированы несколько форм, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Форма – для создания новой формы на базе существующей.
- Подстановка формы – для изменения свойств уже существующей формы.
При заведении формы заполняются наименование (поле ‘Имя’) и родитель (поле ‘Форма’).
Описание формы
Для формы можно указать следующие атрибуты:
- Использование – условие доступа проектировщиков к виду просмотра.
- HFile definition – используется программистами.
- Размещение окна – для определения места расположения окна на экране.
- Сценарий – определяет список кнопок, которые будут представлены на панели инструментов формы.
- Закладки – для описания составных частей сложной формы.
- Список полей формы – содержит описание полей формы.
- Список горячих клавиш – определяет список горячих клавиш. За каждой горячей клавишей закреплено определенное действие (вызов команды, процедуры, сценария, вида просмотра), которое будет выполнено при нажатии на клавишу. Подробнее правила описания горячих клавиш можно посмотреть в главе, посвященной видам просмотра.
- Заголовок – определяет заголовок окна. Если заголовок окна не задан, то будет использовано наименование проектного элемента.
- Локальные переменные – содержит список локальных переменных формы.
- Только для просмотра (недопустимо для изменения), если – задает условие, при выполнении которого форма будет использоваться только для отображения данных. Ввод данных в форму будет невозможен.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Добавление нескольких объектов в цикле – при установленном признаке следующая форма для ввода данных будет вызываться автоматически после утверждения предыдущей формы. Для прерывания цикла необходимо отказаться от утверждения формы. Данный признак применяется для организации массового ввода однотипных данных, например строк документа. После ввода одной строки документа пользователю не придется нажимать клавишу ‘Insert’, форма для ввода следующей строки будет вызвана автоматически.
- Автоматический акцепт – используется в формах документа. После утверждения формы автоматически запускается процедура акцепта документа.
- Набор печатных форм – для описания шаблона быстрой печати содержимого формы.
- Автоматическое назначение КОДА при сохранении объекта БД – при установленном признаке код объекту будет присвоен автоматически в момент сохранения записи в БД. Такой алгоритм позволяет избежать пропусков в нумерации объектов. При запуске формы в поле будет высвечено слово ‘<АВТОНАЗНАЧЕНИЕ>’. Пользователь может ввести код самостоятельно. Если же пользователь не изменит значение этого поля, то в момент сохранения записи параметр ‘Код’ будет заполнен автоматически по установленным правилам.
- Обработка команд интерфейса – изменяет действия, выполняемые по стандартным командам интерфейса.
Например. Для формы отчета изменена обработка команды ‘Назад’.
Сценарий
Данный атрибут определяет список кнопок (пунктов сценария), которые будут представлены на панели инструментов. Если атрибут не указан, то будет применено описание аналогичного атрибута из формы – родителя.
Список может как включать в себя как имеющиеся готовые сценарии (с добавлением к ним своих кнопок), так и быть составлен самостоятельно.
При описании сценария доступны все те атрибуты, которые рассматривались в главе ‘Сценарии’.
Если требуется, чтобы кнопка была подписана, то при описании кнопки необходимо ввести значение в поле ‘Имя’.
Рассмотрим пример панели инструментов. Библиотека ‘! Товародвижение’, раздел ‘Продукт’, раздел ‘Формы’, папка ‘Торговля’, форма ‘Товар’.
От родителей добавляются следующие пункты к сценарию:
В итоге пользователь увидит вот такую панель инструментов:
При описании вызова команды, вида просмотра, отчета или процедуры для пункта сценария можно указать атрибут ‘Сохранить изменения перед вызовом’. Наличие этого атрибута означает, что перед выполнением указанных действий вся введенная в форму информация будет записана в БД.
Перед вызовом видов просмотра для заполнения штриховых кодов и кодов для весов введенные в форму товара данные будут сохранены. Это позволит пользователю сразу перейти к вводу дополнительных кодов после заполнения полей формы. В противном случае, сначала необходимо сохранить введенную в форму информацию (по кнопке ‘Сохранить’), затем повторно вызвать форму и выбрать интересующий вид просмотра.
Закладки
Формы, содержащие много полей, удобнее отображать и редактировать по частям. Для описания составных частей формы применяются закладки.
Закладка объединяет в группу отдельные поля формы. Группа полей отображается на экране при нажатии клавиши, соответствующей закладке.
Все закладки формы регистрируются в разделе ‘Закладки’.
При создании новой закладки будет предложено выбрать тип создаваемого элемента.
- Наследуемые поля, колонки – для наследования закладок из родителя формы.
- Закладка – для задания имени закладки.
Форма описания закладки содержит только одно поле ‘Имя’.
Распределение полей формы по закладкам происходит при описании полей с помощью атрибута ‘Закладка’.
Пример формы с закладками:
Для формы указаны четыре закладки: ‘Осн. данные’, ‘Адрес’, ‘Дополн.’, ‘Представитель’. Наименование текущей закладки отображается в заголовке формы.
Вот так выглядит распределение полей по закладкам для этой формы.
Поле ‘Код КПП организации’ отнесено к закладке ‘Осн. данные’. Поля ‘Почтовый индекс’ и ‘Страна’ распределены в закладку ‘Адрес’. Распределение остальных полей на рисунке не показано.
Список полей формы
Данный атрибут применяется для описания полей формы. В список полей можно включить поля из формы родителя.
При описании списка полей доступны следующие типы проектных элементов.
- Наследуемые поля, колонки – для наследования полей из родителя формы.
- Поле (колонка) для ввода данных – для описания поля, в которое можно будет ввести значение.
- Поле (колонка), являющееся параметром объекта – для описания поля, которое предназначено только для отображения информации. В поле данного типа невозможно ввести информацию.
- Выражение – для описания правил расчета какой-либо величины.
Поле (колонка), являющееся параметром объекта
Поля типа ‘Поле (колонка), являющееся параметром объекта’ обозначены в дереве проекта иконкой.
При описании поля данного типа требуется указать ‘Имя’ и ‘Класс’.
Имя будет высвечено перед значением поля в качестве подсказки. Класс определяет правило расчета значения. Можно выбрать либо параметр объекта, либо выражение, либо функцию.
Если не заполнить подсказку, то в качестве подсказки будет применено наименование того проектного элемента, ссылка на который находится в поле ‘Класс’.
Для каждого из полей можно задать следующие атрибуты.
Назначение большинства атрибутов совпадает с назначением подобных атрибутов колонки вида просмотра. Подробное описание таких атрибутов находится в главе ‘Виды просмотра’.
Рассмотрим остальные атрибуты.
- Ширина – для задания ширины поля. Число символов для строк и число знаков для чисел.
- Точность для числовых данных - задает число знаков после запятой для числовых полей.
- Скрытое поле - при установленном признаке поле в форме не отображается. Подробное описание и пример использования находятся ниже в главе ‘Поле (колонка) для ввода данных’.
- Закладка - для зачисления поля в группу полей, объединенных закладкой. Подробное описание и пример использования находятся ниже в главе ‘Поле (колонка) для ввода данных’.
Рассмотрим простой пример. В библиотеке ‘! Базовый набор’, в разделе ‘Партнер’, в папке ‘Оборудование’ имеется форма ‘Оборудование’. Для этой формы описаны два поля, являющиеся параметрами объекта Партнер.
В данной форме поля ‘Класс’ и ‘Тип’ имеют тип ‘Поле (колонка), являющееся параметром объекта’ и применены только для отображения данных. Значения в этих полях изменить нельзя.
Поле (колонка) для ввода данных
Поля данного типа обозначены в дереве проекта иконкой.
При описании поля требуется указать подсказку перед значением поля и вводимый параметр. Поле ‘Параметр’ заполняется либо ссылкой на параметр объекта, либо ссылкой на контекстную, глобальную или локальную переменную.
Если не заполнить подсказку, то в качестве подсказки будет применено наименование того проектного элемента, ссылка на который находится в поле ‘Параметр’.
Для каждого из полей можно задать следующие атрибуты.
- Обязательное для ввода поле – при установленном признаке значение данного поля должно быть обязательно введено.
- Обязательно ненулевое значение (для числовых полей только) - при установленном признаке значение данного поля не может быть нулевым.
- Обязательно неотрицательное значение (для числовых полей только) - при установленном признаке значение данного поля не может быть отрицательным.
- Скрытое значение (пароль) – при установленном признаке значение данного поля отображается символами звездочка (*). Данный атрибут применяется при вводе паролей.
- Не устанавливать фокус при входе в форму ввода – при установленном признаке курсор не будет установлен на данное поле.
В момент запуска формы программа определяет поле, на которое должен быть установлен курсор. Обычно, курсор устанавливается на самое верхнее вводимое поле. Можно изменить стандартный алгоритм, если для верхних полей указать данный признак. Тем самым для пользователя сокращается число нажатий клавиш – не потребуется выполнять действия для перехода на нужное поле.
В рассмотренном примере для поля ‘Весы’ задан признак ‘Не устанавливать фокус при входе в форму ввода’. При запуске формы курсор будет установлен на следующее поле - ‘PLU код’.
- Только для просмотра – при установленном признаке значение поля изменить нельзя.
- Скрытое поле – при установленном признаке поле в форме не отображается.
Данный признак применяется не только для маскировки отладочной информации. Иногда требуется записать введенное значение как в параметр объекта, так и в переменную. В этом случае для формы заводят два поля. Для второго поля задают правило расчета и объявляют его скрытым.
Например.
Форма содержит два поля: ‘Поставщик’ и ‘Партнер: глобальная переменная’. Для дальнейшего алгоритма обработки формы проектировщику потребовалось занести в оба поля введенное пользователем значение контрагента документа. Первое поле применяется для ввода данных и заполняется в момент ввода. Для второго поля указано выражение для расчета, в соответствии с которым в данное поле копируется значение из первого поля. Отображать в форме второе поле не следует, поэтому для этого поля задан рассматриваемый признак.
- Доступно (видимо), если – задает условие отображения поля в форме.
Условие ссылается на выражение. Если выражение возвращает истинное значение, то поле будет отображено в форме.
Поле ‘Юридическое лицо’ появится в форме только в том случае, если выражение ‘Учет по Юридическим лицам’ вернет истинное значение.
- Отображаемый текст для объектов БД – задает правило формирования отображаемого значения для полей, содержащих ссылку на какой-либо объект. Если правило не будет задано, то отображается параметр ‘Наименование’ объекта.
Например. Форма товара содержит поле ‘Товарная группа’. Это поле содержит ссылку на товарную группу. Требуется отобразить не только наименование подгруппы, но и код подгруппы. Это делается следующим образом.
Рассматриваемый атрибут содержит ссылку на выражение ‘Код подгруппы + Полное наименование подгруппы’. Вот так описано в проекте данное выражение.
Выражение возвращает объединение кода подгруппы, наименования товарной группы и наименования подгруппы.
- Выбор из списка – для ссылки на вид просмотра, содержащий список возможных значений поля. Для заполнения поля будет высвечен указанный вид просмотра.
Форма пользователя содержит поле для выбора сотрудника. При заполнении этого поля будет применен вид просмотра ‘Выбор сотрудника’.
- Начальное значение – для описания начального значения поля. Начальное значение рассчитывается при запуске формы. Можно указать константу, переменную, выражение, функцию или параметр объекта. Атрибут используется только при вводе новой записи. В случае редактирования записи атрибут игнорируется.
При создании нового региона в поле ‘Страна’ будет предварительно записан текст ‘Россия’. Это значение можно изменить на другое.
- Поиск объекта по значению (Идентификация введенного значения) – для описания правила распознавания (идентификации) объекта по введенному в поле значению.
Например. При вводе строки документа в поле ‘Продукт’ должна быть записана ссылка на запись таблицы ‘Продукт’. Конечно, можно ограничить пользователя единственным способом заполнения поля - выбрать продукт из списка. Тогда достаточно указать атрибут ‘Выбор из списка’.
Можно предложить и другие варианты заполнения поля: ввод кода продукта, ввод или считывание сканером штрихового кода, ввод кода от поставщика. Для поддержки этих вариантов требуется указать атрибут ‘Поиск объекта по значению (Идентификация введенного значения)’. Функция, на которую ссылается данный атрибут, проверит, чем является введенное значение. Это код продукта, это штриховой код или это код продукта, назначенный поставщиком. В результате проверки будет найдена запись таблицы ‘Продукт’, соответствующая введенному значению. Функция вернет ссылку на эту запись, и данная ссылка будет занесена в поле.
Вот так выглядит описание используемой функции.
Сначала введенное в поле значение проверяется на принадлежность к кодам товаров. Затем – на принадлежность к штриховым кодам. И в конце проверяется, не находится ли введенное значение среди тех кодов продуктов, которые назначил поставщик.
- Только для просмотра (недопустимо для изменения), если – задает условие, при котором невозможно изменить значение поля.
Если заполнено поле ‘Наименование’, то изменить код каталога уже нельзя. В данном случае смысл такого запрета состоит в следующем – нельзя изменять код для уже введенных записей.
- Выражение – задает правило расчета значения поля.
Например. При вводе продукта значение процента наценки требуется скопировать из одноименного поля товарной группы, к которой будет отнесен вводимый товар.
Для расчета значения поля ‘Процент наценки’ применяется выражение, которое возвращает значение параметра ‘Процент наценки’ таблицы ‘Каталог’. Ссылка на запись таблицы ‘Каталог’ находится в поле ‘Товарная группа’. При описании данного выражения был применен уточняющий параметр. Подробнее об уточняющих параметрах написано в главе ‘Виды просмотра’.
При описании атрибута ‘Выражение’ доступны следующие типы проектных элементов.
-
- Округление – задает правило округления значения поля. Подробное описание данного атрибута находится в главе ‘Виды просмотра’.
- Рассчитывать только при отсутствии значения – При установленном признаке выражение будет рассчитано только в том случае, если поле не содержит никакого значения.
- Вывести результат вычислений на экран – применяется для отладки выражений. При установленном признаке на экране будет высвечено сообщение, содержащее результат вычисления данного выражения.
- Значения формальных параметров при вызове – список значений формальных параметров. Заполняется в том случае, если в качестве выражения задана функция, требующая указать значения параметров.
- Рассчитывать при изменении полей – задает список полей формы, при изменении которых будет вычисляться выражение для данного поля. При изменении значений других полей выражение для данного поля не вычисляется.
Выражения рассчитываются при изменении полей формы ‘сверху вниз’. Т.е. после изменения значения какого-нибудь поля будут рассчитаны выражения только для тех полей, которые расположены ниже.
Будьте внимательны в расположении полей, поскольку именно порядок полей в форме определяет последовательность вычисления выражений.
Можно изменить указанное правило расчета, если для выражения указать атрибут ‘Рассчитывать при изменении полей’.
- Набор условий (ОБЯЗАТЕЛЬНЫХ) для проверки введенного значения на корректность – задает список условий, которым обязательно должно соответствовать введенное значение поля. Если какое-либо из условий не выполняется, то введенное значение в поле не записывается. При описании атрибута можно указать сообщение для пользователя.
Пример. При вводе документа возврата товаров на склад для поля ‘Получатель’ указаны два обязательных условия. Если какое-либо условие не выполняется, то пользователь увидит соответствующее сообщение.
- Набор условий (ЖЕЛАТЕЛЬНЫХ, в режиме ‘ПРЕДУПРЕЖДЕНИЕ’) для проверки введенного значения на корректность – задает список условий, которым желательно должно соответствовать введенное значение поля. Независимо от выполнения условий введенное значение записывается в поле. При описании атрибута можно указать сообщение для пользователя.
Пример. При вводе строк документа заказа для поля ‘Количество’ указана проверка введенного значения. Если значение поля будет больше остатка товара, то пользователь увидит соответствующее сообщение.
- Закладка – для зачисления поля в группу полей, объединенных закладкой. При заполнении атрибута будет отображен список зарегистрированных для формы закладок. Все закладки формы регистрируются в разделе ‘Закладки’.
Пример.
Для формы ‘Банк’ указаны две закладки: ‘Основные данные’ и ‘Адрес’. Т.е. все поля формы распределены на две группы. Для зачисления поля в группу необходимо выбрать соответствующую закладку.
На следующем рисунке показано назначение атрибута Закладка для четырех полей. Для остальных полей атрибут задается аналогичным образом.
Все поля формы разделены на две группы. ‘Код’ и ‘Наименование’ отнесены к группе (закладке) ‘Основные данные’. Группа ‘Адрес’ содержит поля ‘Страна’ и ‘Город’. В какие группы зачислены другие поля на рисунке не показано для экономии места.
Вот так выглядят закладки в форме
- Формат – задает формат отображения значения поля. Может принимать одно из зарегистрированных в проекте значений формата.
- Точность для числовых данных – задает число знаков после запятой для числовых полей. Числа отображаются и вводятся в форме с указанной точностью. Если в базе данных число записано с большей точностью, то при отображении в форме число будет обрезано до указанного числа десятичных знаков.
- Ширина – для задания ширины поля. Число символов для строк и число знаков для чисел.
Нельзя ввести значение поля более указанной ширины. Если в базе данных записана длинная строка, то при отображении в форме строка будет обрезана до указанного числа символов.
- Язык – применяется для поддержки национальных языков. Подробное описание назначения данного атрибута находится в главе ‘Виды просмотра’.
- Заголовок – для описания правила формирования подсказки перед значением поля. Обычно применяется для полей, содержащих значения аналитик.
Поскольку в аналитику могут быть записаны разные объекты, то затруднительно придумать единое название поля для всех возможных случаев. Данный атрибут позволяет в качестве названия использовать наименование того объекта, который записан в поле документа ‘Аналитика 1 -Кредит’.
- Внешний редактор поля объекта БД – задает специальную функцию для ввода значения поля. Указанную функцию можно запустить либо по щелчку правой кнопкой мыши, либо по клавише ‘Серый плюс’, либо нажав иконку с лупой, расположенную справа от значения поля.
В проекте имеются несколько функций подобного назначения. Перечислим некоторые из них.
Ввод больших текстов:
Ввод даты с помощью календаря:
Выбор файла или директории
Создание группы форм, объединенных в одной папке
Группа форм создается для объединения в одной папке (под одним названием) нескольких форм. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.
Группа форм может содержать неограниченное число форм, Групп форм и Подстановок форм.
Подстановка формы
Подстановка применяется для изменения атрибутов формы.
Например. В библиотеке ‘!Товародвижение’ имеется форма ‘Товар’.
Найдем подстановку данной формы. Если в проект подключена библиотека ‘Торговая сеть’, то подстановку можно обнаружить в этой библиотеке.
В подстановке изменен список полей формы и сценарий. Добавлено описание атрибутов ‘Закладки’ и ‘Локальные переменные’.
Параметры
Данный раздел содержит описания параметров, переменных, выражений и функций.
Раздел ‘Параметры’ может находиться либо на верхнем уровне любой библиотеки, либо внутри объектных разделов. Если раздел ‘Параметры’ расположен на верхнем уровне библиотеки, то в этом разделе нельзя описывать параметры объектов. Этот раздел предназначен только для описания переменных, выражений и функций.
В целях облегчения администрирования и ориентирования в дереве проекта были составлены правила заполнения раздела ‘Параметры’ для различных библиотек.
Правила для описания параметров объектов
- Объектные разделы в разделе ‘Системная область’ содержат описания стандартных параметров объектов. Описания основных таблиц БД обязательно должны включать стандартные параметры.
- Описания остальных параметров объектов находится в декларативных библиотеках, таких как [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
Не рекомендуется бездумное создание новых параметров. Следует помнить, что единый список параметров значительно облегчает решение задачи совместимости разных проектов. Кроме того, у Oracle имеется ограничение на 1000 параметров в таблице.
Правила для описания переменных, выражений и функций
- Раздел ‘Системная область’ содержит описания контекстных и глобальных переменных. Также здесь находятся описания базовых функций, системных функций и выражений.
- Библиотека ‘!Примитивы скриптов’ содержит описания системных функций, реализованных на языке скриптов.
- Параметры из остальных системных библиотек созданы, прежде всего, для их использования в этих библиотеках.
- В библиотеку ‘!Базовый набор’ вынесены описания тех глобальных переменных, выражений и функций, которые имеют некое прикладное значение.
- Проектные базовые и проектные функциональные библиотеки содержат описания функций и выражений, являющихся общими для группы проектов.
- Функции и выражения из проектных библиотек предназначены для использования в проектах.
Атрибуты раздела ‘Параметры’
Внутри раздела ‘Параметры’ на верхнем уровне библиотеки можно создать элементы следующих типов:
Для раздела ‘Параметры’ из объектного раздела список возможных элементов меньше. Например внутри раздела ‘Продукт’ можно создать элементы следующих типов:
- Группа параметров – для создания папки, в которой могут быть сгруппированы несколько параметров, функций или выражений, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Глобальная переменная – для описания новой глобальной переменной.
- Подстановка переменной – для изменения свойств глобальной или контекстной переменной.
- Базовая функция – для описания новой базовой функции.
- Функция – для описания новой функции.
- Подстановка функции – для изменения свойств функции.
- Выражение – для описания нового выражения.
- Параметр <объекта> – для описания нового параметра указанного объекта.
- Подстановка параметра <объекта> – для изменения свойств параметра объекта.
Переменные в проекте
Переменная – это хранилище некой информации. Переменные всегда имеют имена. В процессе работы программы информация в переменной (хранилище) может изменяться.
В проекте имеются следующие виды переменных:
- глобальные переменные;
- контекстные переменные;
- локальные переменные.
Все переменные в дереве проекта обозначены иконкой.
Цвет иконки зависит от статуса проектного элемента. Если проектировщик присвоил переменной статус ‘Экспортный (Публичный’), то отображается иконка зеленого цвета. Для непубличных переменных используется иконка синего цвета.
Глобальные переменные
В Домино имеется набор переменных, доступных в любом месте проекта. Именно по причине их общей доступности такие переменные названы глобальными. Глобальным переменным можно свободно присваивать значения и использовать их в выражениях, функциях и процедурах, расположенных в любых библиотеках и ‘Приложении’.
Обычно глобальные переменные задаются либо в базовом разделе ‘Системная область’, раздел ‘Параметры’, папка ‘Глобальные переменные’, либо в библиотеке ‘!Базовый набор’, раздел ‘Параметры’, папка ‘Глобальные переменные’.
В форме глобальной переменной заполняются наименование переменной и класс значения.
Класс значения определяет тип данных, записываемых в переменную. Описания основных типов данных находится в базовом разделе ‘Системная область’ раздел ‘Классификация значений’.
Типы данных подразделяются на две группы. Первую группу составляют стандартные типы данных. Вторая группа состоит из производных типов, которые создаются на основе стандартных.
Рассмотрим подробнее стандартные типы данных.
- STRING (строка) - это последовательность символов произвольной длины. При вычислении выражений нужный размер строка принимает автоматически.
- INTEGER (целое) - целое число, положительное, нуль или отрицательное. Может принимать значения от -2’147’483’648 до 2’147’483’647.
- UNSIGNED (целое без знака) – положительное целое число или нуль. Может принимать значения от 0 до 4’294’967’295.
- NUMBER (число с дробной частью) - десятичное число с фиксированной дробной частью. Максимальный размер 24 цифры, включая десятичные. Если в описании не указаны ни число разрядов, ни точность, то устанавливается так называемая ‘плавающая точность’. Плавающая точность означает, что точность числа может изменяться для того, чтобы сохранить как можно больше значащих цифр после десятичной точки.
- DATETIME (дата, время) - дата со временем c точностью до секунды.
- UID - уникальный идентификатор объекта базы данных или проектного элемента.
- BLOB – данные большого объема, хранящиеся в двоичном виде.
- UIDSET – список уникальных идентификаторов (UID) объектов.
Тип данных определяет множество значений и операции, которые могут быть применимы к этим значениям.
Для глобальной переменной могут быть заданы следующие атрибуты:
- HFile definition – используется программистами.
- Начальное значение - присваивается при старте Домино. Если начальное значение не указано, то переменная имеет значение NULL.
При завершении работы Домино текущие значения глобальных переменных сохраняются в специальном файле. При последующем старте Домино глобальным переменным присваивают сохраненные значения. Значение из файла имеет приоритет над значением, заданным в данном атрибуте.
- Выражение – рассчитывается при старте Домино и результат присваивается глобальной переменной.
Выражение рассчитывается после присваивания начального значения, указанного в предыдущем атрибуте, и после считывания значения, сохраненного в специальном файле. Т.е. если для глобальной переменной задан атрибут ‘Выражение’, то значение глобальной переменной при старте Домино всегда будет рассчитано как результат указанного выражения.
- Язык – применяется для поддержки национальных языков. Подробное описание назначения данного атрибута находится в главе ‘Виды просмотра’.
Подстановка глобальной переменной применяется для изменения значений указанных атрибутов.
Контекстные переменные
Замысел появления контекста в Домино заключался в том, чтобы с помощью контекста точнее понимать смысл действий программы в отношении обрабатываемых данных. Иными словами, проектировщик, анализируя контекст, понимает какие именно объекты обрабатываются в рассматриваемом месте программы. Для того чтобы контекстом было удобно пользоваться, контекст должен содержать как можно меньше частей. Этого можно добиться, если для каждого объекта завести свою переменную, в которую записывать UID текущей записи объекта.
Контекст – это набор значений специальных (контекстных) переменных, содержащих идентификаторы текущих записей основных объектов БД.
Контекстные переменные перечислены в библиотеке ‘Системная область’, раздел ‘Параметры’, папка ‘Контекстные переменные’.
Список содержит контекстные переменные по всем объектам.
В папке ‘Прочие’ находятся дополнительные контекстные переменные. Дополнительные контекстные переменные были созданы до того, как в Домино появились локальные переменные и формальные параметры. В настоящее время имеются более удобные и понятные средства для реализации тех задач, в которых могут потребоваться эти переменные, поэтому использование дополнительных контекстных переменных не рекомендуется.
Форма и атрибуты контекстной переменной совпадают с формой и атрибутами глобальной переменной.
Контекстные переменные доступны в любом месте проекта, если только область видимости специально не ограничена проектировщиком. Контекстные переменным можно свободно присваивать значения и использовать их в выражениях, процедурах и функциях.
Контекстным переменным отводится следующая роль:
- Значения контекстных переменных (контекст) содержат идентификаторы текущих объектов БД.
- Посредством контекстных переменных осуществляется доступ к параметрам текущих записей объектов. Например, конструкция <<Продукт>>.Имя определяет наименование продукта из текущей записи продукта.
- В видах просмотра в контекстную переменную отображаемого объекта заносится идентификатор той строки, на которой находится курсор. Например, в виде просмотра партнеров заполняется переменная <<Партнер>>.
- Некоторые функции и процедуры используют контекстные переменные в качестве неявных параметров. Такие процедуры называются контекстно-зависимыми.
- Контекст применяется при вычислении выражений. Для примера рассмотрим вычисление конструкции Продукт.Имя & Партнер.Имя. Если выражение вычисляется от текущей записи продукта, то для получения записи партнера используется контекстная переменная <<Партнер>>. Если данное выражение вычисляется для текущей записи партнера, то ссылка на запись продукта считывается из контекстной переменной <<Продукт>>. В обоих случаях идентификатор записи получен из контекстной переменной.
Несмотря на то, что на уровне ядра Домино имеется полная поддержка контекстных переменных, использование контекста не является общим для всех компонент программы. Контекстные переменные поддерживаются во всех видах просмотра. Разработчики других компонент (форм, методов акцепта, процедур и т.д.) посчитали излишним обеспечение контекста в своих компонентах.
Не рекомендуется создавать контекстные переменные без острой необходимости, поскольку обслуживание контекста требует значительных ресурсов.
Подстановка контекстной переменной применяется для изменения значений атрибутов.
Локальные переменные
Локальная переменная – это переменная, действующая только внутри процедуры, функции или выражения.
При описании процедуры (функции, выражения) можно указать необходимые локальные переменные в разделах ‘Локальные переменные’ или ‘Формальные параметры’. Здесь же задаются начальные значения переменных.
При запуске процедуры (функции, выражения) ядро программы создает указанные локальные переменные и присваивает им начальные значения. По завершении процедуры все локальные переменные удаляются.
Если локальные переменные расположены в разделе ‘Формальные параметры’, то это означает, что процедура имеет соответствующие параметры для вызова.
Значения формальных параметров, указанные при вызове процедуры, имеют приоритет над начальными значениями в описании. Т.е. при старте процедуры в локальную переменную (являющуюся формальным параметром) будет записано значение при вызове, а если таковое отсутствует, то будет записано начальное значение из описания.
Описание локальной переменной похоже на описание глобальной и контекстной переменных.
Параметры объектов
В Домино имеются следующие основные таблицы БД для хранения объектов:
- Права – для хранения назначенных пользователю ролей;
- Нумератор – для нумерации объектов;
- Протокол – для хранения сообщений;
- Пользователь – для хранения списка пользователей;
- Каталог – для хранения каталогов (товарные группы, регионы, виды продукции и другие);
- Продукт – для хранения учетных единиц;
- Партнер – для хранения торговых партнеров и подразделений;
- Документ – для хранения документов всех видов;
- Строка – для хранения строк документов;
- Проводка – для хранения проводок всех видов;
- Сальдо – для хранения сальдо;
- Контрольная точка – для хранения списка установленных контрольных точек;
- Сальдо по контрольной точке – для хранения сальдо по контрольным точкам.
Таблица ‘Обороты’ реально не существует. Она является виртуальной сущностью (view), которая появляется только в процессе расчета оборотов. Эта таблица имеет описание в проекте только для того, чтобы проектировщики могли использовать параметры таблицы.
Таблицы ‘Сальдо’, ‘Контрольная точка’ и ‘Сальдо по контрольной точке’ доступны только для чтения. Запись данных в эти таблицы осуществляется специальными средствами.
Каждая таблица содержит строки (записи) и столбцы (поля, параметры). Одному объекту соответствует одна запись таблицы. Характеристики объекта записываются в параметры таблицы.
Все параметры необходимо зарегистрировать в проекте. Часть параметров являются обязательными. Такие параметры называются стандартными, они перечислены в базовом разделе ‘Системная область’ в объектных разделах.
Например, список стандартных параметров таблицы ‘Каталог’ находится внутри раздела ‘Каталог’ в разделе ‘Параметры’.
Остальные параметры находятся в декларативных библиотеках. Например, в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
Разрешено добавлять параметры только для таблиц ‘Пользователь’, ‘Протокол’, ‘Каталог’, ‘Партнер’, ‘Продукт’, ‘Строка’, ‘Документ’.
Параметры в дереве проекта обозначены иконкой .
В форме параметра заполняются наименование параметра и класс значения.
Класс значения определяет тип данных, записываемых в параметр. Подробнее о типах данных написано выше (текст о глобальных переменных).
При описании параметра можно использовать следующие атрибуты:
- Использование – условие доступа проектировщиков к параметру.
- HFile definition – используется программистами.
- Внешнее имя – имя столбца в БД. Если внешнее имя не указано, то имя столбца рассчитывается автоматически (F<индекс проектного элемента>).
- Начальное значение – присваивается при создании новой записи.
- Выбор из списка – для ссылки на вид просмотра, содержащий список возможных значений поля. Применяется в видах просмотра и формах. Если для поля вида просмотра или формы не указан аналогичный атрибут, то используется данное значение атрибута.
- Минимально возможная ширина – минимальная ширина колонки. Применяется в видах просмотра. Если для поля вида просмотра не указан аналогичный атрибут, то используется данное значение атрибута.
- Максимально возможная ширина – максимальная ширина колонки. Применяется в видах просмотра. Если для поля вида просмотра не указан аналогичный атрибут, то используется данное значение атрибута.
- Обязательное для ввода поле – при установленном признаке значение данного поля должно быть обязательно введено. Применяется в формах. Если для поля формы не указан аналогичный атрибут, то используется данное значение атрибута.
- Внешний редактор поля объекта БД – задает специальную функцию для ввода значения поля. Применяется в формах. Если для поля формы не указан аналогичный атрибут, то используется данное значение атрибута.
- Доступно (видимо), если – задает условие отображения параметра. Применяется в видах просмотра и формах. Если для поля вида просмотра или формы не указан аналогичный атрибут, то используется данное значение атрибута.
- Формат – для задания формата отображения содержимого параметра. Применяется в видах просмотра и формах. Если для поля вида просмотра или формы не указан аналогичный атрибут, то используется данное значение атрибута.
- Ширина – для задания ширины строкового поля или числа знаков числового поля. Данный атрибут изменяет
- Точность для числовых данных – задает число знаков после запятой для числовых полей. Применяется в формах. Если для поля формы не указан аналогичный атрибут, то используется данное значение атрибута.
- Язык – применяется для поддержки национальных языков. Применяется в видах просмотра и формах. Если для поля вида просмотра или формы не указан аналогичный атрибут, то используется данное значение атрибута.
Описание атрибутов, типичных для формы и вида просмотра, вынесено на уровень параметра объекта для того, чтобы повторно не указывать одинаковые значения атрибутов.
Подстановка параметра применяется для изменения значений перечисленных атрибутов параметра.
Выражения
Выражение состоит из одного или нескольких операндов и знаков операций. Операндами выражения могут быть константы, локальные, глобальные и контекстные переменные, другие выражения, а также - функции. Операции выполняются над операндами в порядке их следования. В Домино отсутствует понятие старшинства операций, и если требуется изменить порядок выполнения операций, то следует использовать вложенные выражения.
Выражения в дереве проекта обозначены иконкой.
При описании выражения можно использовать следующие атрибуты:
- Результат – константа или ссылка на контекстную, локальную или глобальную переменные, другое выражение, функцию, параметр объекта базы данных. Если данный атрибут возвращает объект, то с помощью проектного элемента ‘Уточняющий параметр’ получается значение нужного параметра этого объекта. При необходимости можно пройтись по цепочке связанных объектов. Подробнее от уточняющем параметре написано в главе ‘Виды просмотра’.
- Ноль (0.0), если NULL - Возвращает значение контекстной, локальной или глобальной переменных, результат вычисления другого выражения, функции, содержимое параметра объекта базы данных. Если полученный результат имеет значение NULL, то возвращает ноль (0.0).
- NULL – Константа NULL.
- Выражение - Служит для изменения порядка вычисления операторов. Применение данной операции аналогично скобкам.
- Оператор Выбора - Позволяет указать, какую нескольких ветвей выражения вычислить в зависимости от значения указанного условия.
-
- Условие - это переменная (выражение или функция), значение которой будет являться ключом для поиска подходящего варианта.
- То (?) – Если условие имеет истинное значение (TRUE), то вычисляется последовательность операндов этого раздела и выход из оператора выбора.
- Если равно (=) , Если не равно (!=), Если меньше (<), Если меньше или равно (<=), Если больше (>), Если больше или равно (>=) - Для каждой альтернативы указываются значения-ключи. Эти значения-ключи сравниваются со значением условия по указанному правилу. Сравнение производится до первого выполнения правила. Как только между условием и значением-ключом выполняется указанное правило, то вычисляется последовательность операндов, заданная в разделе соответствующего правила. Затем выполняется выход из оператора выбора.
- Иначе (:) – Последовательность операндов данного раздела вычисляется в том случае, если ни одно правило сравнения условия и значений-ключей не было выполнено.
Если отсутствует условие ‘Иначе’ и ни одно из правил сравнения не было выполнено, то результат равен NULL.
Не рекомендуется использовать оператор выбора вместо условного оператора IF. Данная конструкция удобна для сравнения условия с набором явно заданных констант, классификаторов и кодификаторов.
Пример использования:
- Условный оператор (IF) - Позволяет указать, какую из двух ветвей выражения вычислить в зависимости от значения (истинное или ложное) указанного условия.
-
- Условие - это переменная (выражение или функция), имеющая либо истинное, либо ложное значение.
- То (?) - последовательность операндов данного раздела вычисляется если условие имеет истинное значение.
- Иначе (:) - последовательность операндов данного раздела вычисляется если условие имеет ложное значение.
Обязательное наличие сразу обоих разделов То и Иначе не требуется.
Пример использования:
- Конкатенировать строки (&) - результатом является строка, полученная добавлением второй строки к первой.
Если между строчными операндами не указать операцию, то программа выполнит такую запись как конкатенацию строк.
- Сложить (+) - Результатом является сумма чисел.
- Вычесть (-) - Результатом является разность чисел.
Для переменных типа ДАТА перечисленные операции имеют особый смысл:
- Дата (+) число – результатом является дата, для которой время увеличено на число секунд.
- Дата (-) число - результатом является дата, для которой время уменьшено на число секунд.
- Делить (/) - Второй операнд воспринимается как делитель, а первый - как делимое. Результатом является частное от деления чисел.
- Умножить (*) – Результатом является произведение чисел.
Для переменных типа UIDSET (список уникальных идентификаторов) и UID перечисленные операции имеют следующий смысл:
-
- Сложение (+) – Результатом является объединение двух списков.
- Вычитание (-) – Результатом является список, содержащий элементы, которые имеются в первом операнде, и не имеются во втором операнде.
- Деление (/) – Результатом является список, содержащий элементы, которые либо имеются в первом операнде, но не имеются во втором операнде, либо имеются во втором операнде, но не имеются в первом операнде. Иными словами, результатом является объединение двух вычитаний, в которых операнды меняются местами.
- Умножение (*) - Результатом является пересечение двух списков.
- Прибавить процент (+%) – К первому операнду добавляется процент от первого операнда. Количество процентов указано во втором операнде.
- Вычесть процент (-%) - Из первого операнда вычитается процент от первого операнда. Количество процентов указано во втором операнде.
- Обратный процент (/%) – Результатом является частное от деления первого операнда на процент от первого операнда. Количество процентов указано во втором операнде.
- Процент (*%) - Результатом является процент от первого операнда. Количество процентов указано во втором операнде.
- Возвести в степень (**) – Возвести операнд в указанную степень.
- Корень квадратный (SQRT) – Вычислить квадратный корень от операнда.
В дальнейшем тексте будут использованы понятия истинного и ложного значений. Уточним термины.
Истинное и ложное значения операндов
Для логических операций имеются понятия истинного и ложного значений. Коротко истинное значение называют TRUE, а ложное – FALSE.
Считается, что числовой операнд имеет истинное значение, если число не равно ни 0, ни NULL. Числовой операнд имеет ложное значение в противном случае (т.е. равен либо 0, либо NULL).
Операнд типа Строка имеет истинное значение, если строка не пустая. Операнд типа Строка имеет ложное значение в противном случае. Хвостовые пробелы при сравнении строк игнорируются.
Операнд типа UID объекта имеет истинное значение, если UID не равен NULL. Операнд типа UID объекта имеет ложное значение, если UID равен NULL.
- ИЛИ (||) - логическое ‘ИЛИ’. Если любой из операндов имеет истинное значение, то результат тоже будет иметь истинное значение. В противном случае результат будет иметь ложное значение.
- И (&&) - логическое ‘И’. Если оба операнда имеют истинное значение, то результат тоже будет иметь истинное значение. В противном случае результат будет иметь ложное значение.
- НЕ (!) - логическое отрицание. Если операнд имеет истинное значение, то результат будет иметь ложное значение. Если операнд имеет ложное значение, то результат будет иметь истинное значение.
- Равно (==) - Результат будет иметь истинное значение, если значения операндов равны. Результат будет иметь ложное значение в противном случае.
- Не равно (<>) - Результат будет иметь истинное значение, если значения операндов не равны. Результат будет иметь ложное значение в противном случае.
- Больше (>) - Результат будет иметь истинное значение, если значение первого операнда больше значения второго операнда. Результат будет иметь ложное значение в противном случае.
- Больше или равно (>=) - Результат будет иметь истинное значение, если значение первого операнда больше или равно значению второго операнда. Результат будет иметь ложное значение в противном случае.
- Меньше (<) – Результат будет иметь истинное значение, если значение первого операнда меньше значения второго операнда. Результат будет иметь ложное значение в противном случае.
- Меньше или равно (<=) - Результат будет иметь истинное значение, если значение первого операнда меньше или равно значению второго операнда. Результат будет иметь ложное значение в противном случае.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Использование – условие доступа проектировщиков к выражению.
- Округление – вариант округления результата.
- Формальные параметры – список формальных параметров для вызова выражения
- Значения формальных параметров при вызове – список значений формальных параметров. Раздел заполняется при вызове выражения.
- Локальные переменные – список локальных переменных.
- Вывести результат вычисления на экран – применяется для отладки выражений. При установленном признаке результат вычислений высвечивается на экране в отдельном окне.
- Указатель на элемент – применяется для указания специальных атрибутов выражения.
Функции
Функция – это группа операторов, исполняемая как единое целое и предназначенная для выполнения некоторых действий и/или получения значения. Любую функцию можно вызвать как процедуру, проигнорировав возвращаемое ею значение.
Результат, возвращаемый функцией, можно использовать в выражениях, при заполнении параметров процедур и функций, в условных и итерационных операциях.
Настроенные в проекте функции могут ссылаться на один из типов данных. При этом возвращаемое значение будет либо данного типа. Если у функции нет ссылки на тип, то тип возвращаемого значения определяется внутри функции.
Функции различаются по способу создания. Если функция разработана программистом на языке Visual С++, то код функции записан в динамической библиотеке. В проекте находится только декларация функции, причем атрибут ‘Точка входа’ содержит ссылку на динамическую библиотеку.
В другом случае функцию разрабатывает проектировщик на языке скриптов. Функции на языке скриптов целиком находятся в разделе проекта ‘Параметры’.
Для функций поддерживается механизм наследования. Функции самого верхнего уровня являются базовыми. У базовых функций имеются следующие атрибуты:
- HFile definition – используется программистами.
- Использование – условие доступа проектировщиков к функции.
- Точка входа – место реализации функции.
- Элемент – применяется для указания специальных атрибутов функции.
- Указатель на элемент – применяется для указания специальных атрибутов функции.
- Только один из элементов – не используется.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Формальные параметры – список формальных параметров для вызова функции.
- Значения формальных параметров при вызове – список значений формальных параметров. Раздел заполняется при вызове функции.
- Локальные переменные – список локальных переменных.
Для функций, не являющихся базовыми, можно указать следующие атрибуты:
Функции на языке скриптов имеют множество дополнительных атрибутов. Подробнее о таких функциях написано в книге ‘Язык скриптов’.
Функция может иметь параметры, которые требуется заполнить при ее вызове. Параметры могут быть обязательные, необязательные и неявные.
При вызове функции для обязательных параметров всегда должны быть указаны значения.
Для необязательных параметров значения можно не указывать. Обычно автор функции задает начальные значения таких параметров. Эти начальные значения и будут применены, если при вызове функции не указать иные значения.
Теперь разберем понятие неявных параметров функции. Параметр является неявным в том случае, если заполнение этого параметра происходит вне вызова функции.
Наличие неявных параметров у функции значительно снижает понятность кода, поскольку проектировщику приходится помнить (или проверять по примерам) какие параметры имеются у той или иной встреченной им функции. С другой стороны, если при вызове функции не требуется указывать параметры, то код сократится. Что само по себе не так уж и плохо, поскольку длинный текст воспринимается хуже. Особенно, когда одна функция вызывается несколько раз с одинаковыми параметрами. В попытке найти разумную грань или компромисс и были созданы функции с неявными параметрами.
В проекте имеется множество функций, требующих заполнения соответствующих глобальных и контекстных переменных.
Функция называется контекстно-зависимой если функция имеет неявные параметры, и эти параметры являются контекстными переменными.
Функция ‘Курс РУБ (по контексту)’ имеет три неявных параметра: ’Дата документа’, ‘Валюта’, ‘Национальная валюта расчетов’. Два первых параметра являются контекстными переменными, а третий – глобальная переменная.
Еще один вариант функций с неявными параметрами – это функции, работающие от текущего объекта. Обычно такие функции вызываются как уточняющий параметр. Объектом может быть как запись таблицы БД, так и проектный элемент.
Создание группы параметров, объединенных в одной папке
Группа параметров создается для объединения в одной папке (под одним названием) нескольких параметров, переменных, функций, выражений. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.
Группа параметров может содержать неограниченное число параметров, переменных, функций, выражений, Групп параметров и Подстановок переменных и функций.
Подстановка функции
Подстановка применяется только для функций на языке скриптов.
В подстановке можно добавить значения в описательные атрибуты функции и полностью изменить те атрибуты, которые задают алгоритм выполнения функции.
Рассмотрим основные атрибуты функции на языке скриптов.
Большинство атрибутов являются описательными. Если атрибут описан в подстановке, то значение из подстановки добавляется к значению соответствующего атрибута из описания функции.
Атрибуты ‘Подстановки виртуальных блоков’, ‘Выполнить действия’, ‘Выполнить при завершении’ задают алгоритм действий. Если атрибут описан в подстановке, то значение из подстановки заменяет значение соответствующего атрибута из описания функции.
Значение признака ‘Прервать при наличии ошибок’ в подстановке также заменяет значение этого признака в описании функции.
Процедуры
Процедура – это группа операторов, исполняемая как единое целое и предназначенная для выполнения некоторых действий. Процедуры не возвращают значения (в особых случаях могут возвращать команду возврата). Процедура может быть оформлена либо как обычная процедура, либо как процедура-метод.
Процедуры-методы применяются только при разработке процедур акцепта, деакцепта и удаления объекта. В этих случаях ядро программы должно выполнять специальные действия, не требуемые в других ситуациях.
Процедуры различаются по способу создания. В одном случае процедура разрабатывается программистом на языке программирования (чаще всего на Visual С++) и подключается к Домино с помощью динамической библиотеки (файл с расширением dll). В проекте находится только декларация этой процедуры. Атрибут ‘Точка входа’ в описании такой процедуры обязательно должен быть заполнен.
В другом случае процедуру разрабатывает проектировщик на языке скриптов. Описание и код такой процедуры полностью находятся в проекте.
Раздел ‘Процедуры’ может находиться либо на верхнем уровне любой библиотеки, либо внутри объектных разделов. В разделе ‘Процедуры’ на верхнем уровне библиотеки описываются те процедуры, которые одновременно обрабатывают несколько объектов. В объектных разделах, как правило, находятся процедуры для обработки одного конкретного объекта.
Для процедур поддерживается механизм наследования. Процедуры самого верхнего уровня являются базовыми. У базовых процедур имеются следующие атрибуты:
- HFile definition – используется программистами.
- Использование – условие доступа проектировщиков к процедуре.
- Иконка – для отображения процедуры в сценариях и панели инструментов.
- Звук (проигрывать по завершении) – Используется при вызове процедуры из панели инструментов или из сценария. По завершении выполнения процедуры будет проиграна указанная мелодия.
- Элемент – применяется для указания специальных атрибутов процедуры.
- Указатель на элемент – применяется для указания специальных атрибутов процедуры.
- Точка входа – место реализации процедуры (имя данной процедуры с точки зрения программиста и название dll, в которой данная процедура содержится).
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Выводить сообщения об ошибках в протокол – при заполненном атрибуте сообщения об ошибках будут записаны в протокол, а не высвечены на экране. Атрибут может содержать либо ссылку на вид просмотра (протокол будет отображен на экране), либо ссылку на процедуру, которая запишет сообщения об ошибках в файл (протокол будет сохранен в файле).
Примеры использования:
Сообщения об ошибках будут добавлены в файл export_news.log.
Протокол будет высвечен на экране.
- Исходящий контекст – в коде процедуры будут доступны параметры перечисленных объектов
- Команда – не используется.
- Локальные переменные – список локальных переменных.
- Только один из элементов – назначение аналогично атрибуту ‘Указатель на элемент’, но позволяет проектировщику выбирать только один атрибут из указанного списка.
Для процедур, не являющихся базовыми, можно указать следующие атрибуты:
- Копирование – условие копирования процедуры проектировщиками.
- Использование – условие доступа проектировщиков к процедуре.
- Использование (в режиме выполнения) – условие доступа пользователей к процедуре.
- Значения формальных параметров при вызове - список значений формальных параметров. Раздел заполняется при вызове процедуры.
Процедуры на языке скриптов имеют множество дополнительных атрибутов. Подробнее о таких процедурах написано в книге ‘Язык скриптов’.
Процедуры могут иметь параметры настройки, назначение, количество и внешний вид которых зависит от разработчика.
Процедуры состоят из операторов и локальных данных (константы и переменные). Локальные данные существуют только во время выполнения объемлющей их процедуры, они создаются автоматически в начале выполнения процедуры и исчезают, как только выполнение процедуры заканчивается. Операторы процедуры могут обращаться к ее локальным данным или к тем данным, которые видны изнутри процедуры (глобальные и контекстные переменные, параметры объектов БД и проектные элементы).
Во время активизации процедуры ей можно передать параметры. Параметры – это, по сути, начальные значения локальных переменных.
Параметры могут быть обязательные, необязательные и неявные.
При вызове процедуры для обязательных параметров всегда должны быть указаны значения.
Для необязательных параметров значения можно не указывать. Обычно автор процедуры задает начальные значения таких параметров. Эти начальные значения и будут применены, если при вызове процедуры не указать иные значения.
Параметр является неявным в том случае, если заполнение этого параметра происходит вне вызова процедуры. Подробнее о видах параметров написано в предыдущей главе, поскольку параметры разных видов применяются для функций значительно чаще.
Процедура-метод
Процедура может быть оформлена либо как обычная процедура, либо как процедура-метод.
Процедуры-методы применяются только при разработке процедур акцепта, деакцепта и удаления объекта. В этих случаях ядро программы должно выполнять специальные действия, не требуемые в других ситуациях.
Отличие процедур от процедур-методов заключается в команде возврата при возникновении ошибки в процессе выполнения. Если произошла ошибка, то процедура возвращает команду cmdCONTINUE, а процедура-метод – команду cmdRETURN_ CANCEL. Если выполнение завершилось без ошибок, то и обычная процедура, и процедура-метод возвращают команду cmdCONTINUE. Для процедур и процедур-методов есть также возможность явного задания команды возврата с помощью оператора RETURN. Подробнее о командах возврата написано в книге ‘Язык скриптов’.
Создание группы процедур, объединенных в одной папке
Группа процедур создается для объединения в одной папке (под одним названием) нескольких процедур. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.
Группа процедур может содержать неограниченное число процедур, Групп процедур и Подстановок процедур.
Подстановка процедуры
Подстановка применяется только для процедур на языке скриптов.
В подстановке можно добавить значения в описательные атрибуты процедуры и полностью изменить те атрибуты, которые задают алгоритм выполнения процедуры.
Рассмотрим основные атрибуты процедуры на языке скриптов.
Большинство атрибутов являются описательными. Если атрибут описан в подстановке, то значение из подстановки добавляется к значению соответствующего атрибута из описания процедуры.
Атрибуты ‘Подстановки виртуальных блоков’, ‘Выполнить действия’, ‘Выполнить при завершении’ задают алгоритм действий. Если атрибут описан в подстановке, то значение из подстановки заменяет значение соответствующего атрибута из описания процедуры.
Значение признака ‘Прервать при наличии ошибок’ в подстановке также заменяет значение этого признака в описании процедуры.
Выборки
Данный раздел содержит описания простых выборок для отбора информации из БД. Выборки применяются при описании правил отбора данных для видов просмотра и отчетов.
Выборка определяет таблицу БД и стандартный индекс, который следует использовать для последовательного считывания и сортировки записей из указанной таблицы.
Применение стандартных индексов предпочтительно по той причине, что отбор данных будет происходить максимально быстро. Стандартные индексы основных таблиц БД формируются в момент создания БД.
Полное описание стандартных индексов находится в базовом разделе ‘Системная область’ в разделах, соответствующих объектам БД.
Почти каждому стандартному индексу соответствует один проектный элемент типа ‘Базовая выборка’. Все базовые выборки размещены в библиотеке ‘Системная область’, раздел ‘Выборки’, папка ‘Стандарты’.
Для примера рассмотрим базовые выборки для таблицы ‘Каталог’.
Поскольку базовые выборки могут создавать только системные администраторы проекта, то назначение атрибутов базовой выборки приведено не будет.
Одна из базовых выборок объекта не связана ни с одним из индексов. При использовании данной выборки программа сама подбирает подходящий индекс.
Обычные выборки создаются на основе базовых выборок и содержат дополнительные условия для отбора данных.
При создании новой выборки будет предложено выбрать тип создаваемого элемента.
- Группа выборок – для создания папки, в которой могут быть сгруппированы несколько выборок, объединенных по какому-либо признаку. Для группы задается только наименование.
- Выборка – для создания новой выборки на базе существующей.
В форме выборки заполняются наименование и родитель.
Выборки описываются исключительно на базе уже существующих в проекте выборок. В качестве родителя можно выбрать либо базовую выборку, либо любую из производных выборок.
Для выборки можно указать следующие атрибуты:
- Использование – условие доступа проектировщиков к виду просмотра.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Обратный порядок – при установленном признаке применяется обратный (реверсный) порядок чтения записей индекса. Все стандартные индексы, кроме индексов типа ‘*** ПО ДАТЕ’ имеют сортировку по возрастанию значений. Индексы типа ‘*** ПО ДАТЕ’ имеют сортировку по убыванию значения даты, т.е. записи располагаются от поздних дат к ранним.
- Ограничение на класс/тип объектов – применяется для наложения ограничений на класс или тип выбираемых из таблицы объектов. Данный атрибут соответствует аналогичному атрибуту выборки вида просмотра. Подробное описание атрибута ‘Ограничение на класс/тип объектов’ можно посмотреть в главе ‘Виды просмотра’.
- Список ограничений на поля объектов – применяется для задания ограничений на остальные параметры таблицы. Данный атрибут соответствует аналогичному атрибуту выборки вида просмотра. Подробное описание атрибута ‘Список ограничений на поля объектов’ можно посмотреть в главе ‘Виды просмотра’.
Последние два элемента из списка атрибутов выборки разрешают наследование соответствующих атрибутов.
Примеры использования выборок.
Данные для вида просмотра ‘Все продукты в порядке ввода’ отбираются с помощью одноименной выборки.
В описании базового отчета ‘ДОКУМЕНТЫ’ находится ссылка на одноименную базовую выборку.
Отчёты
Отчёт – это специальный проектный элемент, описывающий правила отбора, сортировки, группировки данных и выдачи их на экран, принтер, в файл. Часто отчётом называют результат выполнения перечисленных действий.
В проекте имеются отчёты двух видов. Первый – обычные отчёты. Отчёты этого вида были изначально включены в Домино и обозначаются иконкой. С появлением языка скриптов появилась возможность разрабатывать отчёты на этом языке. Отчёты второго вида оформляются в виде процедур на языке скриптов и находятся в разделе ‘Процедуры’. Подробнее об отчётах на языке скриптов можно прочитать в книгах ‘Язык скриптов’ и ‘Язык скриптов. Отчёты’.
Дальнейшее описание касается только обычных отчётов.
Отчёты можно описывать в разделе ‘Отчёты’ верхнего уровня любой библиотеки, либо внутри объектных разделов в разделе ‘Отчёты’. Раздел ‘Отчёты’ верхнего уровня библиотеки содержит такие отчёты, которые рассчитываются по нескольким объектам. В объектные разделы помещают отчёты, обрабатывающие один конкретный объект.
При создании нового отчёта будет предложено выбрать тип создаваемого объекта.
- Группа отчетов – для создания папки, в которой могут быть сгруппированы несколько отчетов, объединенных по какому-либо признаку. Для группы задается только наименование.
- Базовый отчет – для создания нового базового отчета.
- Отчет – для создания нового отчета на базе существующего.
- Подстановка отчета – для изменения свойств существующего отчета.
Для базового отчета можно указать следующие атрибуты:
Часть атрибутов на рисунке не отображена, поскольку наличие тех или иных атрибутов в списке зависит от месторасположения описания отчета в проекте. В списке ниже перечислены все возможные атрибуты базового отчета.
- HFile definition – используется программистами.
- Точка входа – место реализации базового отчета.
- Выборка – определяет основное правило отбора данных для отчета. Не указывается в базовых отчетах по проводкам и оборотам.
- Форма отчета – для описания формы, запускаемой перед выполнением отчета. В форме задаются параметры отчета.
- Параметры отчета – данный раздел применяется для описания всех используемых в отчете итоговых переменных, функций, выражений, мультиколонок.
- Структура (Состав, Содержание) – для описания блоков отчета. Структура отчета определяет порядок и уровень группировки данных. С каждым блоком сопоставляется определенный параметр отбираемого объекта.
- Элемент – применяется для указания специальных атрибутов базового отчета.
- Указатель на элемент – применяется для указания специальных атрибутов базового отчета.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Использование – условие доступа проектировщиков к базовому отчету.
- Путь – для указания директории, в которой создается файл с результатом отчета.
- Сценарий – определяет список кнопок, которые будут представлены на панели инструментов при просмотре результатов отчета.
- Исходящий контекст – при разработке отчета будут доступны параметры перечисленных объектов.
- ЦФО – для задания центра финансовой ответственности. Значение ЦФО необходимо для любых расчетов, в которых применяются проводки и обороты.
- Ограничение на класс/тип объектов – для наложения ограничений на класс или тип объектов, которые будут отобраны для отчета.
- Параметр сортировки объекта – определяет правило сортировки отбираемых объектов. Не указывается в базовых отчетах по проводкам и оборотам.
- Список ограничений на выборку – для наложения дополнительных ограничений на параметры отбираемых объектов.
- Группа счетов – для задания списка возможных значений атрибута ‘Счет’. Применяется в базовых отчетах по проводкам и оборотам.
- Счет – для задания счета. Применяется в базовых отчетах по проводкам и оборотам.
- Корр.счет – для задания корреспондирующего счета. Применяется в базовых отчетах по проводкам и оборотам.
- Размерность – для задания размерности расчета оборотов. Применяется в базовых отчетах по проводкам и оборотам.
- Параметр сортировки счета –для указания правила сортировки списка счетов. Применяется в базовых отчетах по проводкам и оборотам.
- Не рассчитывать обороты – при установленном признаке для отчетов по проводкам отключается дополнительный расчет оборотов по счету. Применяется в базовых отчетах по проводкам и оборотам.
- Не рассчитывать сальдо – при установленном признаке для отчетов по проводкам отключается дополнительный расчет сальдо. Применяется в базовых отчетах по проводкам и оборотам.
- Статистика выполнения отчета – определяет имя файла, в котором будет накапливаться информация о запусках данного отчета.
- Формальные параметры – список формальных параметров для вызова базового отчета.
- Список возможных группировок товарного отчета – Применяется в базовых отчетах по продуктам, оборотам, каталогам, партнерам и строкам документов.
- Список возможных группировок отчета по оборотам – Применяется только в базовых отчетах по оборотам.
- Действие, выполняемое перед выполнением отчета – для указания процедуры, запускаемой перед выполнением отчета.
- Действие, выполняемое после выполнения отчета – для указания процедуры, запускаемой после выполнения отчета.
- Счет (атрибут) – при наличии данного атрибута в отчете – наследнике станет доступен атрибут ‘Счет’.
Список атрибутов обычного отчета несколько иной.
На картинке отображены не все атрибуты.
- Формальные параметры - список формальных параметров для вызова отчета.
- Значения формальных параметров при вызове – список значений формальных параметров. Раздел заполняется при вызове отчета.
- Локальные переменные – список локальных переменных отчета.
- Группа параметров – для разделения параметров отчета на группы.
- Параметры отчета – данный раздел применяется для описания всех используемых в отчете итоговых переменных, функций, выражений, мультиколонок.
- Путь – для указания директории, в которой создается файл с результатом отчета.
- Имя файла отчета – определяет имя файла с результатом отчета. Если данный атрибут не указан, то создается файл с произвольным уникальным именем. Расширение имени файла зависит от типа шаблона.
- Инверсия сортировки – при установленном признаке записи перебираются в обратном порядке.
- Форма отчета – для описания формы, запускаемой перед выполнением отчета.
- Параметр сортировки объекта – определяет правило сортировки отбираемых объектов
- Список ограничений на выборку – для наложения дополнительных ограничений на параметры отбираемых объектов.
- Структура (Состав, Содержание) – для описания блоков отчета. Структура отчета определяет порядок и уровень группировки данных. С каждым блоком сопоставляется определенный параметр отбираемого объекта.
- Шаблон – для описания шаблонов отчета.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Не наследовать форму отчета – при установленном признаке перед запуском отчета не будет запущена форма отчета. Данный атрибут отключает наследование формы от родителей отчета. Если для данного отчета указан атрибут ‘Форма’, то значение атрибута ‘Не наследовать форму отчета’ игнорируется.
- Использование – условие доступа проектировщиков к отчету.
- Использование (в режиме выполнения) – условие доступа пользователей к отчету.
- Сохранить изменения перед вызовом – наличие этого атрибута означает, что перед выполнением отчета вся введенная в форму информация будет записана в БД. Применяется при вызове отчета из формы.
- Сценарий – определяет список кнопок, которые будут представлены на панели инструментов.
- Запретить прерывание – при установленном признаке будет удалена возможность прерывать процесс формирования отчета.
- Запрашивать подтверждение, если файл существует – для задания условия, при выполнении которого будет высвечено сообщение с запросом. Пользователю будет предложено либо перезаписать уже существующий файл с результатом отчета, либо создать новый файл с другим именем.
- ЦФО – для задания центра финансовой ответственности. Значение ЦФО необходимо для любых расчетов, в которых применяются проводки и обороты.
- Рассчитывать обороты, если нет проводок – при установленном признаке в список отобранных данных попадут все счета с ненулевым сальдо, даже если по этим счетам не было проводок. Применяется только в отчетах по проводкам.
- Только один из элементов – для ограничения выбора данных. Может иметь одно из двух значений: ‘счет в дебетовой части’ или ‘счет в кредитовой части’. Применяется только в отчетах по проводкам и оборотам.
- Только с ненулевыми оборотами – при установленном признаке в список отобранных данных попадут те счета, по которым за указанный период проводились проводки. Применяется только в отчетах по проводкам и оборотам.
- Не рассчитывать обороты – при установленном признаке для отчетов по проводкам отключается дополнительный расчет оборотов по счету. Применяется в отчетах по проводкам и оборотам.
- Не рассчитывать сальдо – при установленном признаке для отчетов по проводкам отключается дополнительный расчет сальдо. Применяется в отчетах по проводкам и оборотам.
- Ограничение на класс/тип объектов – для наложения ограничений на класс или тип объектов, которые будут отобраны для отчета.
- Группа счетов – для задания списка возможных значений атрибута ‘Счет’. Применяется в отчетах по проводкам и оборотам.
- Счет – для задания счета. Применяется в отчетах по проводкам и оборотам.
- Корр.счет – для задания корреспондирующего счета. Применяется в отчетах по проводкам и оборотам.
- Размерность – для задания размерности расчета оборотов. Применяется в отчетах по проводкам и оборотам.
- Параметр сортировки счета – для указания правила сортировки списка счетов. Применяется в отчетах по проводкам и оборотам.
- Не наследовать размерность - при установленном признаке будет отключено правило наследования атрибута ‘Размерность’. Применяется в отчетах по проводкам и оборотам.
- Рассчитывать обороты для счетов родителей - при установленном признаке обороты рассчитываются также для всех родителей указанного счета. Применяется в отчетах по оборотам.
- Не выводить на экран – при установленном признаке результат отчета на экране не отображается и файл не удаляется.
- Не удалять файл отчета – при установленном признаке файл, содержащий результат отчета, не будет автоматически удален по окончании его просмотра.
- Строк на странице – для задания максимального количества строк на странице. Применяется только для отчетов по страницам.
- Число строк на последней странице (с итогом) – для задания количества строк на последней странице. Применяется только для отчетов по страницам.
- Тестировать время выполнения – при установленном признаке в специальный файл записывается информация о времени выполнения отчета. Данный атрибут применяется для отладки отчетов.
- Статистика выполнения отчета – определяет имя файла, в котором будет накапливаться информация о запусках данного отчета. Данный атрибут применяется для отладки отчетов.
- Иконка – для назначения иконки пункту сценария, вызывающему данный отчет.
- Заголовок кнопки – для указания наименования кнопки, если вызов отчета расположен в разделе ‘Сценарий’.
- Действие, выполняемое перед выполнением отчета – для указания процедуры, запускаемой перед выполнением отчета.
- Действие, выполняемое после выполнения отчета – для указания процедуры, запускаемой после выполнения отчета.
Подробное описание и примеры использования перечисленных атрибутов приведены в книге ‘Отчеты’.
Списки (Кодификаторы, Классификаторы), Классификация значений
Данные разделы содержат описания типов классификаторов и значения классификатора.
Классификаторы применяются для задания возможных значений какого-либо параметра объекта и содержат списки проектных элементов.
Для того чтобы разные проекты были совместимы по данным, базовые классификаторы создавались по следующим принципам:
- классификатор должен быть заполнен заранее и не может быть изменен в процессе работы:
- необходимость в изменении классификатора возникает крайне редко;
- разнести описание и заполнение классификатора.
Авторы проектов могут описывать классификаторы в своих библиотеках.
Также в языке скриптов имеется возможность создать локальные классификаторы – временные, имеющие ограниченную область видимости.
Описание централизованно заведенных классификаторов находится в декларативных библиотеках. В частности, в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
Значения классификаторов расположены в предназначенных для этого библиотеках. Например, в библиотеке <<Списки, Кодификаторы>>.
Заведение классификатора происходит в два этапа: описание типа классификатора и ввод значений.
Сначала в разделах ‘Списки (Кодификаторы, Классификаторы)’, ‘Классификация значений’ и ‘Виды просмотра’ создаются необходимые проектные элементы, составляющие описание типа классификатора.
Значения классификатора вводятся в разделе ‘Списки (Кодификаторы, Классификаторы)’.
Далее подробно рассмотрим результаты выполнения обоих этапов.
Описание типа классификатора
Раздел ‘Списки (Кодификаторы, Классификаторы)’ содержит три раздела для описания типа классификатора.
- <Атрибуты> – содержит дополнительные характеристики классификаторов.
- <Примитивы> – содержит описания типов элементов классификаторов.
- <Разделы> – содержит зарегистрированные разделы для заполнения значений классификаторов.
Раздел ‘Классификация значений’ содержит описания классов значений, вводимых в классификатор.
В разделе ‘Виды просмотра’ описываются виды просмотра для отображения списка значений классификаторов.
Описание классификатора выполняется в шесть этапов:
- заведение типа элемента для классификатора;
- описание подстановки значения классификатора (если предполагается применять подстановки значений);
- заведение атрибутов (если требуется);
- заведение раздела для ввода значений;
- описание вида просмотра.
- заведение класса значений;
Рассмотрим как выглядит описание классификатора на примере классификатора дней недели. Сделаем это без детальных объяснений. Системные проектировщики понимают, зачем надо делать именно так, мы лишь просто повторим их действия, чтобы достичь нужного результата.
1, 2, 3. Описание типа элемента для классификатора находится в базовом разделе ‘Системная область’, раздел ‘Списки (Кодификаторы, Классификаторы)’, раздел ‘Примитивы’.
Описан дополнительный атрибут Значение. Описания подстановки нет, посольку в большинстве случаев это не нужно. Если потребуется, то это не сложно сделать по примеру имеющихся в проекте.
4. В базовом разделе ‘Системная область’, раздел ‘Списки (Кодификаторы, Классификаторы)’, раздел ‘Разделы’ находится описание раздела.
5. Вид просмотра значений данного классификатора расположен в базовом разделе ‘Системная область’, раздел ‘Виды просмотра’, папка ‘Выбор элемента списка (кодификатора)’.
6. Описание класса значения можно найти в базовом разделе ‘Системная область’, раздел ‘Классификация значений’, папка ‘Проектные’.
При заведении класса значения ссылались на уже введённые тип элемента и вид просмотра.
Заполнение классификатора
Значения классификатора вводятся в разделе ‘Списки (Кодификаторы, Классификаторы)’.
Значения рассматриваемого классификатора единиц измерения указаны в библиотеке <<Списки, Кодификаторы>>, разделе ‘Списки (Кодификаторы, Классификаторы)’, раздел ‘День недели’.
Форма для ввода значения выглядит вот так:
Поле ‘Имя’ является обязательным и всегда содержится в форме. Поле ‘Значение’ потому добавлено в форму, что в описании типа элемента имеется соответствующий атрибут.
Если при описании классификатора описать подстановку, то можно было бы подставлять значения классификатора.
У элементов некоторых классификаторов признак использования имеет значение ‘Нет’. Это сделано для того чтобы пользователь не видел те значения классификатора, которые ему не требуются. Проектировщик с помощью подстановок разрешает применение необходимых значений.
Например. В классификаторе государств все значения помечены как неиспользуемые.
Авторы проектной библиотеки ‘Торговая сеть’ создали подстановки нужных им значений, в которых разрешили их использование.
Применение классификатора
Классификаторы применяются при заполнении параметров объектов. Если указать в качестве типа параметра класс значения, соответствующий некоторому классификатору, то при заполнении параметра будет предложено выбрать значение из списка значений данного классификатора.
Например. Один из параметров продукта имеет тип ‘ЕИ’.
Если в форме продукта имеется поле со ссылкой на параметр ‘ЕИ’, то при заполнении этого поля будет предложено выбрать значение из списка значений классификатора единиц измерения.
<<Разделы>>
Данный раздел содержит список тех разделов проекта, которые должны быть доступны для работы в разделе ‘Приложение’.
Изменяя содержимое раздела автор проекта управляет структурой Приложения. Если требуется чтобы администраторы Домино имели доступ к определенному разделу, то необходимо внести в список ссылку на соответствующий раздел.
Например, в библиотеке ‘Торговая сеть’ разрешены следующие разделы для Приложения:
Если в проекте есть несколько разделов ‘Разделы’, то их содержимое объединяется сверху вниз. Т.е. вначале в итоговый список заносится содержимое из верхней библиотеки. Затем добавляется содержимое раздела библиотеки, находящейся в дереве проекта ниже. Если элемент уже имеется в итоговом списке, то меняется описание элемента.
В библиотеке, расположенной в дереве проекта ниже, можно изменить указанный список. Если требуется добавить доступ к еще одному разделу, то достаточно указать в списке ссылку этот раздел. Если требуется удалить доступ к разделу, то следует для ссылки на этот раздел указать значение ‘Нет’ атрибута ‘Создание’.
При заполнении списка разделов необходимо выбрать тип элемента ‘Указатель на элемент’ и найти требуемый раздел в предложенном перечне значений.
Описание основных разделов дерева проекта находится в базовом разделе ‘Системная область’, папка ‘Разделы’.
Действия, выполняемые при старте системы
С помощью данного раздела можно определить набор процедур, которые будут выполнены при старте программы.
Форма действия содержит два поля ‘Имя’ и ‘Класс’. Поле ‘Класс’ заполняется ссылкой на имеющуюся в проекте процедуру.
Процедуры выполняются после того, как система проинициализирует все глобальные переменные.
Процедуры выполняются строго в том порядке, в котором они перечислены в проекте.
Если в проекте имеется несколько разделов ‘Действия, выполняемые при старте системы’, то содержимое разделов объединяется сверху вниз. Т.е. вначале в итоговый список заносится содержимое из верхней библиотеки. Затем добавляется содержимое раздела библиотеки, находящейся в дереве проекта ниже.
Если процедура возвращает в качестве результата команду возврата cmdRETURN_CANCEL, то выполнение стартовых действий прерывается, и Домино завершает работу с данным пользователем. Любой другой результат выполнения процедуры не прерывает процесс старта системы.
Пример.
Действия выполняются только в порядке их описания в проекте. Никаким другим образом изменить порядок их выполнения нельзя.
Форматы
Формат применяется для отображения и ввода (для дат и чисел) данных в определенном виде.
При создании формата будет предложено выбрать тип создаваемого элемента.
- Группа форматов – для создания папки, в которой могут быть сгруппированы несколько форматов, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Формат – для создания нового формата.
В форме формата заполняются наименование (поле ‘Имя’) и описание формата (поле ‘Формат’).
Для описания формата применяются специальные правила и соглашения. Рассмотрим их подробнее.
Данные могут быть отображены в одном из следующих типов формата:
- строковый;
- числовой;
- текстовый для чисел;
- для даты;
- для времени.
При описании любого формата первым символом указывается тип формата, затем следуют параметры формата.
Строковый формат 'S'
Строковый формат применяется для отображения данных любого типа и описывается следующим образом:
'S' [Регистр] [Ширина]
- Регистр – задает преобразование строки к верхнему/нижнему регистру:
-
- '_' (или пусто) - символы строки печатаются без изменений.
- 'U' - все буквы приводятся к верхнему регистру.
- 'L' - все буквы приводятся к нижнему регистру.
- Ширина – задает количество отображаемых символов. Если ширина не указана, то данные отображаются целиком.
Числовой формат 'N'
Числовой формат применяется для отображения данных любого числового типа. Данный формат также применяется для форматирования строк. Числовой формат описывается следующим образом:
'N' [Ширина [Точка [[-]Точность] [Разделитель тысяч]]
- Ширина – задает количество отображаемых символов.
- Точка: первый нецифровой символ после ширины задает символ, служащий в качестве знака десятичной точки, и одновременно разделяет ширину и точность.
- Точность: число отображаемых знаков после десятичной точки. Может принимать значение от -24 до 24. Если точность больше или равна 0, то она называется фиксированной, т.е. количество знаков в дробной части числа фиксировано. Если точность меньше 0, то она называется плавающей, то есть количество знаков в дробной части будет не более указанного числа, при этом хвостовые нули из дробной части удаляются (включая и знак десятичной точки, если дробная часть равна 0). Если точность опущена, то число форматируется с точностью -24.
- Разделитель тысяч: по умолчанию число для удобочитаемости выводится с разделителем порядков (по 3 знака через ',' считая влево от десятичной точки [3,087,640.72]). Если указан символ '_', то число выводится без разделения целой части на тройки. Любой другой символ заменяет используемый по умолчанию разделитель.
Текстовый формат 'A' для чисел
Текстовый формат для числе применяется для отображения данных любого числового типа и строк. Данный формат описывается следующим образом:
'A' [Регистр] [Ширина ['.' Точность] ]
['|' Наименование целой части
['|' Наименование дробной части]]
Формат A (Alpha) позволяет выводить числа в текстовом представлении, например 'Двадцать три килограмма 975 грамм' и т.п. Если по этому формату выводятся данные строкового типа, то они интерпретируются как число. Формат позволяет производить согласование рода единицы измерения (мужской/женский/средний род) и имени числительного разряда единиц, например: 'один рубль', 'одна лира', 'одно место'. Кроме того, производится согласование числа (единственное/множественное) единицы измерения со значением разряда единиц, например: 'один рубль', 'два рубля', 'пять рублей'. Язык преобразования - русский.
Структурно формат состоит из следующих трех частей, разделенных знаками '|':
- описание регистра, ширины и точности,
- описание целой части,
- описание дробной части.
Регистр – задает преобразование строки к верхнему/нижнему регистру:
-
- '_' (или пусто) - символы строки печатаются без изменений.
- 'U' - все буквы приводятся к верхнему регистру.
- 'L' - все буквы приводятся к нижнему регистру.
- Ширина – задает количество отображаемых символов.
- Точность: число отображаемых знаков после десятичной точки. Может принимать значение от -24 до 24. Если точность больше или равна 0, то она называется фиксированной, т.е. количество знаков в дробной части числа фиксировано. Если точность меньше 0, то она называется плавающей, то есть количество знаков в дробной части будет не более указанного числа, при этом хвостовые нули из дробной части удаляются (включая и знак десятичной точки, если дробная часть равна 0). Если точность опущена, то число форматируется с точностью -24.
Описание целой части содержит наименование единиц измерения целой части в виде произвольной строки. Оно может состоять из нескольких слов и содержать любые символы, кроме '|'. Первый символ наименования используется для задания рода (мужской/женский/средний) единицы измерения:
- '!' - мужской род
- '*' - женский род
- '?' - средний род
Если первый символ не совпадает ни с одним из указанных, то наименование выводится в мужском роде.
Для каждого слова можно задать окончания для единственного и множественного числа. Окончания задаются через знак '~'. Можно указать произвольное число окончаний, однако используются первые три. Первое окончание - окончание единственного числа, второе - множественного числа для количества 2, 3 и 4, и третье - множественного числа для количества 5 и более, а также для нулевого количества.
Примеры:
Запись 'рубл~ь~ля~ей' обуславливает получение следующих словосочетаний:
-
- один рубль
- два рубля
- пять рублей
Запись '?рабоч~ее~их~их мест~о~а' обуславливает получение следующих словосочетаний:
-
- одно рабочее место
- два рабочих места
- пять рабочих мест
Описание дробной части содержит точность, и - через точку - наименование единицы измерения дробной части.
Наименование единицы измерения дробной части задается по тем же правилам, что и наименование единицы измерения целой части. Дробная часть числа не преобразуется к тексту и выводится в цифровой форме, после чего через пробел выводится наименование дробной части с согласованием числа. Род наименования дробной части значения не имеет, но обрабатывается.
Если число разрядов после запятой равно 0, то дробная часть и ее наименование не печатаются. Тот же эффект достигается, если для числовых данных опустить точность или все описание дробной части. Дробная часть печатается сразу вслед за целой частью, поэтому для ее отделения от наименования единицы измерения целой части последнюю следует оканчивать пробелом.
Пример:
число 3,560,072.07004 по формату 'A40.2|рубл~ь~я~ей |*копе~йка~йки~ек'
будет представлено так: Три миллиона пятьсот шестьдесят тысяч семьдесят два рубля 07 копеек
Формат 'D' для даты и времени
Формат для даты применяется для отображения даты в строковом виде с использованием маски. Данный формат описывается следующим образом:
'D' [Регистр] [Ширина [Разделитель]] ['|' Маска]
Для вывода даты в привычном представлении используют формат D, который поддерживает 8 стандартных представлений даты, а также дает возможность указывать маску для формирования нестандартных представлений.
Маска представляет собой строку, внутри которой размещаются поля семи типов: день, месяц, год, день недели, часы, минуты, секунды. Для обозначения полей используются зарезервированные символы, остальные символы, входящие в маску, печатаются без изменений. Для задания полей используются следующие последовательности символов (все символы латинские):
- DD - день, две цифры с ведущим 0;
- dd - день, две цифры без ведущего 0;
- MM - номер месяца, две цифры с ведущим 0;
- mm - номер месяца, две цифры без ведущего 0;
- MMM - наименование месяца по-русски, первые три буквы (Янв, Фев, ...);
- mmm - наименование месяца по-английски, первые три буквы (Jan, Feb, ...);
- MMMMMMMMMM - полное наименование месяца по-русски (*);
- mmmmmmmmmm - полное наименование месяца по-английски;
- yy, YY - год, две последние цифры;
- yyyy, YYYY - год, четыре цифры;
- WWW - наименование дня недели по-русски, первые три буквы (Пон, Вто ...);
- www - наименование дня недели по-английски, первые три буквы (Mon, Tue, ...);
- WWWWWWWWWWWW - полное наименование дня недели по-русски (*);
- wwwwwwwwwwww - полное наименование дня недели по-английски;
- HH – часы;
- NN – минуты;
- SS – секунды.
(*) для наименований допустимо задавать поля любой ширины, а не только той, которая указана выше (10 для месяца, 12 для дня недели). Если наименование не будет помещаться в указанную ширину, то оно будет усечено.
Примеры задания масок (для даты 17 апреля 2006 года):
Формат |
Результат |
DD/MM/YY |
17/04/06 |
DD-MMM-YY |
17-Апр-06 |
DD-MM-YYYY |
17-04-2006 |
DD-MMM-YYYY |
17-Апр-2006 |
WWWWWWWWWWWW, DD MMMMMMMMMM YYYY года |
Понедельник, 17 Апреля 2006 года |
mmm dd, yyyy |
Apr 17, 2006 |
Mmmmmmmmmm dd, yyyy, wwwwwwwwwwww |
April 17, 2006, Monday |
- Регистр задает преобразование строки к верхнему/нижнему регистру:
-
- '_' (или пусто) - символы строки печатаются без изменений.
- 'U' - все буквы приводятся к верхнему регистру.
- 'L' - все буквы приводятся к нижнему регистру.
- Ширина определяет размер поля для вывода данных и одновременно формат представления даты при отсутствии маски.
Поддерживаются 8 стандартных форматов:
-
- DD/MM/YY - ширина от 1 до 8 символов;
- DD-MMM-YY - ширина 9 символов;
- DD/MM/YYYY - ширина 10 символов;
- DD-MMM-YYYY - ширина от 11 до 15 символов;
- DD MMMMMMMMMM YYYYг. - ширина от 20 до 36 символов;
- WWWWWWWWWWWW, DD MMMMMMMMMM YYYY года - ширина свыше 36 символов;
- DD/MM/YYYY HH:NN – ширина 16 символов;
- DD/MM/YYYY HH:NN:SS - ширина от 17 до 19 символов.
-
Разделитель позволяет заменить символ, разделяющий поля в стандартных форматах:
- символ '/' для форматов 1, 3, 7 и 8,
- символ '-' для форматов 2 и 4,
- пробел для форматов 5 и 6.
Примеры вывода даты 17 апреля 2006 года с использованием различных форматов:
Формат |
Результат |
'D8' |
17/04/06 |
'D9' |
17-Апр-06 |
'D10-' |
17-04-2006 |
'D11' |
17-Апр-2006 |
'D37' |
Понедельник, 17 Апреля 2006 года |
'D__|mmm dd, yyyy' |
Apr 17, 2006 |
'D__|mmmmmmmmmm dd, |
April 17, 2006, Monday |
'D16' |
17/04/2006 17:34 |
'D19' |
17/04/2006 17:34:21 |
Формат 'H' для времени
Формат для времени применяется для отображения времени в строковом виде с использованием маски. Данный формат описывается следующим образом:
'H' [Регистр] [Ширина [Разделитель]] ['|' Маска]
Для вывода времени в привычном представлении используют формат H, который поддерживает два стандартных представления времени, а также дает возможность указывать маску для формирования нестандартных представлений.
Маска представляет собой строку, внутри которой размещаются поля трех типов: часы, минуты и секунды. Для обозначения полей используются зарезервированные символы; остальные символы, входящие в маску, печатаются без изменений. Для задания полей используются следующие последовательности символов (все символы латинские):
-
- HH - число часов, две цифры с ведущим 0.
- hh - число часов, две цифры без ведущего 0.
- NN, nn - число минут, две цифры с ведущим 0.
- SS, ss - число секунд, две цифры с ведущим 0.
Примеры задания масок (время 11 часов 22 минуты 45 секунд):
HH:NN 11:22
HH:NN:SS 11:22:45
-
Регистр задает преобразование строки к верхнему/нижнему регистру:
- '_' (или пусто) - символы строки печатаются без изменений.
- 'U' - все буквы приводятся к верхнему регистру.
- 'L' - все буквы приводятся к нижнему регистру.
- Ширина определяет размер поля для вывода данных и одновременно формат представления даты при отсутствии маски. Поддерживаются два стандартных формата:
-
- HH:NN - ширина от 1 до 7 символов;
- HH:NN:SS - ширина более 7 символов.
- Разделитель позволяет заменить символ (':'), разделяющий поля в стандартных форматах.
Примеры вывода времени 11 часов 22 минуты 45 секунд с использованием различных форматов:
Формат |
Результат |
'H5' |
11:22 |
'H8-' |
11-22-45 |
'H__|NN-SS' |
22-45 |
'H__|Время HH часов NN минут' |
Время 11 часов 22 минут |
Описания форматов в проекте
В дереве проекта описание основных используемых форматов находится в базовом разделе ‘Системная область’, раздел ‘Форматы’.
Для удобства все форматы распределены по папкам.
Папка ‘Дата и время’ содержит форматы для даты и времени.
Папка ‘Строка’ содержит два строковых формата.
Первый формат применяется для строк указанной ширины (100 символов). При использовании второго формата ширина строки задается как параметр формата.
В папке ‘Числовые’ находятся форматы для отображения чисел.
Текстовые форматы для отображения чисел расположены в папке ‘Сумма прописью’.
Папка ‘Форматы вывода элементов проекта’ содержит специальные форматы, используемые при отображении дерева проекта. Для таких форматов не имеется правил описания.
Авторы проектов могут добавлять необходимые им форматы в раздел ‘Форматы’ проектных библиотек. Например:
Структура базы данных
Данный раздел содержит описания дополнительных таблиц БД и запросов для выборки данных.
Внутри раздела можно создать следующие папки:
- Таблицы – содержит перечень используемых таблиц на сервере БД.
- Просмотры – содержит перечень используемых таблиц на сервере БД.
- Функции – содержит применяемые в запросах функции.
- Запросы – содержит SQL запросы для выборки данных из таблиц БД.
Подробное описание атрибутов таблиц и запросов приведено в книге ‘Язык скриптов’.
Таблицы, Просмотры
Данные разделы содержат описания дополнительных таблиц БД.
Таблицы описываются в двух разделах для того, чтобы выделить те таблицы БД, для которых не следует выполнять синхронизацию описания таблицы в проекте и в БД.
В описании таблицы можно указать ее наименование на сервере, набор полей и набор индексов. При старте программы проверяется существование таблицы. Если таблица отсутствует, то программа создает таблицу в соответствии с описанием таблицы в проекте. Если таблица уже имеется, то программа проверяет описание всех полей таблицы. В случае расхождения описание поля в таблице сервера БД изменяется в соответствии с описанием в проекте. Эта процедура называется синхронизацией описания.
Для таблиц из раздела ‘Просмотры’ синхронизация не выполняется.
Таблицы также могут быть описаны в атрибуте ‘Таблицы’ процедуры.
При создании новой таблицы будет предложено выбрать тип создаваемого элемента.
- Группа таблиц – для создания папки, в которой могут быть сгруппированы несколько таблиц, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Таблица – для создания новой таблицы.
- Группа внешних таблиц/просмотров – для создания папки, в которой могут быть сгруппированы несколько таблиц, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Просмотр – для создания новой таблицы.
При описании таблицы доступны следующие атрибуты:
- Использование – условие доступа проектировщиков к таблице.
- Внешнее имя – имя таблицы в базе данных. Если внешнее имя не указано, то имя таблицы рассчитывается автоматически (T<индекс проектного элемента>).
- Временная таблица – данные из таблицы, для которой указан данный признак, будут автоматически удалены сервером при выходе из Домино (или при перерегистрации пользователя). Внутри одной сессии Домино данные из временной таблицы другой сессии не доступны.
- Параметры – список полей (столбцов) таблицы. Для каждого поля указываются имя и тип. Можно указать внешнее имя (имя столбца в базе данных), ширину и точность для числовых данных. Если внешнее имя не указано, то имя столбца рассчитывается автоматически (F<индекс проектного элемента>).
- Индексы – список индексов таблицы. Индексы применяются для ускорения запросов по данной таблице. Для каждого индекса указывается список полей.
Например.
Библиотека ‘Новые примитивы почты’ содержит раздел ‘Структура базы данных’, в котором описаны таблицы для работы почтовой службы.
Запросы
В данном разделе описываются SQL запросы для выборки данных из таблиц БД. Описание запроса в ДОМИНО выполнено для стандарта SQL92. Для запросов можно применить механизмы наследования, запуск с параметрами, условия включения отдельных частей. Все это позволяет выделить общую базовую часть для сложных и часто используемых запросов. При создании запроса можно ссылаться на базовые запросы и указывать нужные параметры, сортировки, условия отбора и т.д.
Запросы могут быть вложенными, т.е. их можно указывать не только в разделе ‘Запросы’, но и внутри конструкций FROM, WHERE, IN, EXISTS, HAVING, в выражениях. При описании запроса можно сослаться на уже существующий запрос. В этом случае по правилам наследования становятся доступны атрибуты запроса-родителя.
При создании нового запроса будет предложено выбрать тип создаваемого элемента.
- Группа запросов – для создания папки, в которой могут быть сгруппированы несколько запросов, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Запрос – для создания нового запроса.
Для описания запроса применяются следующие атрибуты:
- Использование – условие доступа проектировщиков к запросу.
- Использование (в режиме выполнения) – условие доступа пользователей к запросу. Если условие имеет ложное значение, то запрос не будет сформирован.
- Отключить анализатор выражений – наличие данного признака отключает стандартный алгоритм формирования запроса. В стандартном алгоритме программа проверяет использование каждого параметра (из раздела ‘Параметры’). Если какой-либо параметр не используется ни в одной конструкции запроса, то такой параметр не будет включен в результат. В большинстве случаев стандартный алгоритм позволяет ускорить выполнение запроса. Наличие данного признака отключает анализ параметров запроса на предмет их реального использования, в результат будут включены все перечисленные в запросе параметры.
В практике применения Домино всего несколько раз встретились настолько сложные и специфичные запросы, что применяемый анализатор выражений не справился со своей задачей. В подобных ситуациях следует использовать данный атрибут.
- Distinct (Исключать дублирующие записи) – наличие этого признака исключает дублирующиеся значения из результата выполнения запроса.
- Ключи оптимизации - Данный раздел содержит инструкции, позволяющие улучшить выполнение запроса
- Формальные параметры - Данный раздел содержит список формальных параметров для вызова запроса. В общем случае запрос можно рассматривать как функцию специального типа. И для запроса применима возможность задания формальных параметров.
- Значения формальных параметров при вызове - Данный раздел содержит значения формальных параметров при вызове запроса.
- From (Таблицы) - В данном разделе перечисляются источники, из которых отбираются данные с помощью запроса.
- Параметры - Данный раздел содержит описание результата запроса.
- Выражения - Данный раздел содержит описания выражений, которые могут использоваться в различных частях запроса (его результате, разделе WHERE и т.д.).
- Where (Ограничения на отбор данных) - В данном разделе описывается условие, в соответствии с которым записи включаются в результат запроса. Условие проверяется для каждой строки таблицы. Только те строки, для которых условие имеет истинное значение, попадают в результат.
- Group By (Группировка) - В данном разделе описываются правила группировки записей для результата запроса.
- Having (Ограничения на группы строк заданных разделом Group By) - В данном разделе описывается условие, которое применяется к группам, заданным в разделе GROUP BY. Группы, для которых указанное условие не выполняется, исключаются из выходных данных.
- Order By (Сортировка) - В данном разделе задаются правила сортировки выходных данных запроса. Записи упорядочиваются в соответствии со значениями одного или нескольких указанных полей.
Планы счетов
При описании плана счетов можно создать элементы следующих типов.
- Примитивы – данный раздел используется системными администраторами проекта.
- Атрибуты – содержит описания дополнительных аналитик счета. Обычно раздел заполняется системными администраторами проекта.
- Разделы – данный раздел используется системными администраторами проекта.
- Классификация планов – содержит список зарегистрированных планов счетов.
Для каждого плана счетов можно указать атрибут ‘Приоритет при расчете, выводе’. Данный атрибут применяется в процедуре акцепта документа.
Акцепт документа содержит расчет и формирование набора проводок по заданным правилам. Для документа может быть описано множество проводок по различным планам счетов.
В целях упорядочивания расчетов применяется следующее правило:
-
- Проводки группируются по планам счетов. Расчет проводок выполняется последовательно по каждому из планов. Обработка следующего плана счетов начинается только после завершения обработки проводок предыдущего плана.
- Планы счетов упорядочиваются по значению атрибута ‘Приоритет при расчете, выводе’. Чем выше значение атрибута, тем раньше начнется обработка плана. Если атрибут не указан, то считается что его значение равно 0. При равенстве значений атрибута планы расставляются в порядке их описания в проекте: чем выше план описан, тем раньше будет обработан.
- Расчет проводок по одному плану выполняется в порядке их описания в проекте.
Проводки по товарному плану будут рассчитаны раньше чем проводки по бухгалтерскому плану. Это позволяет сначала рассчитать суммы по документу, а потом использовать эти суммы при формировании бухгалтерских проводок.
- Классификация счетов – содержит список классов счетов. Класс счета применятся в качестве родителя при описании счета.
Форма класса счета содержит два поля: наименование класса и ссылку на зарегистрированный план счетов.
При заполнении поля ‘План’ значение выбирается из списка планов счетов.
Для класса счета можно указать следующие атрибуты:
-
- Порядок размещения аналитических признаков – задает порядок следования аналитик в проводке, сальдо и оборотах. Содержит указатели на атрибуты счета.
- Элемент – применяется для указания специальных атрибутов счета.
- Указатель на элемент – применяется для указания аналитик и специальных атрибутов счета.
- Пример специальных атрибутов. Для счетов бухгалтерского плана счетов указывают следующие признаки: активный, пассивный, валютный счет, свернутое сальдо по аналитике.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Правила формирования сальдо – содержит ссылку на одно из реализованных правил формирования сальдо по счету. Подробнее о правилах написано ниже.
Рассмотрим пример описания класса счета для товарного плана.
Для данного класса счетов заданы три аналитики. Аналитики расположены в следующем порядке: подразделение, продукт, цена. Правило формирования сальдо можно будет определить на уровне описания счета.
-
-
- Правила формирования сальдо – содержит список реализованных правил формирования сальдо по счету. Раздел заполняется программистами.
-
Сальдо изменяется в момент создания проводки. Имеются пять правил расчета сальдо по проводке.
-
-
-
-
- Стандартные правила – если счет встречается в дебетовой части проводки, то дебетовая часть сальдо увеличивается на сумму проводки, если счет находится в кредитовой части проводки, то кредитовая часть сальдо уменьшается на сумму проводки.
- Стандартные с контролем положительного сальдо – если не выполняется условие дополнительной проверки сальдо, то проводка не создается, и выдается сообщение об ошибке. Проводка не создается при одновременном выполнении следующих условий: проводка уменьшает разницу дебетового и кредитового сальдо по счету, и полученная разница стала отрицательной.
-
-
-
Повторю еще раз другими словами.
Условия, при которых проводка не создается:
-
-
-
-
- До создания проводки: Сальдо.Дебет – Сальдо.Кредит > 0
-
-
-
После создания проводки: Сальдо.Дебет – Сальдо.Кредит < 0
-
-
-
-
- До создания проводки: Сальдо.Дебет – Сальдо.Кредит < 0
-
-
-
После создания проводки: Сальдо.Дебет – Сальдо.Кредит < 0
и эта разность увеличилась.
-
-
-
-
- Без формирования сальдо – сальдо по счету создано не будет.
- С замещением значения – значение сальдо заменяется на сумму проводки.
- С удалением нулевого сальдо – если значение сальдо станет равно 0, то запись будет удалена из таблицы ‘Сальдо’, таким образом уменьшая объем хранимых данных.
-
-
-
- План счетов – содержит список счетов по выбранному плану.
Счета можно заводить только внутри плана счетов. Для каждого из зарегистрированных планов нужно создать соответствующий раздел.
При создании нового счета будет предложено выбрать тип создаваемого элемента.
-
-
- Группа счетов – для создания папки, в которой могут быть сгруппированы несколько счетов, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Счет – для создания нового счета на базе существующего класса счета.
- Подстановка счета – для изменения свойств уже существующего счета.
-
Счета и подстановки счетов обозначаются иконкой .
При заведении счета заполняются наименование счета (поле ‘Имя’) и родитель (поле ‘Класс’).
Список значений для заполнения родителя счета формируется из доступных классов счетов для выбранного плана.
Например, для товарного плана список классов счетов будет вот таким:
Для счета можно указать атрибуты. Содержимое списка атрибутов зависит от описания класса счета. В последующем примере счет создается на базе класса счета ‘Товарный счет’. Описание этого класса находится выше, в описании правил формирования сальдо.
Первые шесть атрибутов из списка задаются для всех счетов. Остальные атрибуты появились у счета от его родителя.
-
-
- Использование (в режиме выполнения) – условие доступа пользователей к счету.
- Аббревиатура – для задания аббревиатуры счета.
- Счет – для создания нового субсчета.
- HFile definition – используется программистами.
- Правила формирования сальдо – содержит ссылку на одно из реализованных правил формирования сальдо по счету. Подробнее о правилах написано выше.
- Уровень детализации счета – специальный атрибут, используемый в плане счетов GAAP.
- Подразделение, Продукт, Цена – для задания значений аналитик счета. При описании счета обычно не указываются.
- Подразделение, Продукт, Цена: Атрибут – указание этих атрибутов разрешит заполнение соответствующих аналитик при использовании данного счета в конструкциях проекта.
- Правила формирования сальдо (Атрибут) - указание этого атрибута разрешит заполнение правила формирования сальдо при использовании данного счета в конструкциях проекта.
-
Описание субсчетов
Субсчета применяются при создании иерархии счетов.
Описание субсчетов в проекте полностью совпадает с описанием счетов.
Обычно авторы субсчетов предполагают получать сводные расчеты по всем субсчетам. Поэтому субсчета и объединяющий их счет задаются с одинаковыми аналитиками (набор и порядок следования). В противном случае объединяющие расчеты будут невозможны.
Подстановка счета
Подстановка применяется для изменения атрибутов счета. Обычно, изменяют признак использования и аббревиатуру.
Пример. В библиотеке ‘# Бухгалтерский план счетов для торговли’ находится описание счета.
Для счета указан признак использования ‘Нет’ и аббревиатура 15.01.
Требуется разрешить использование счета и изменить значение аббревиатуры.
В подстановке указано значение ‘Да’ для признака использования и значение 15.10 для аббревиатуры.
Основные объекты
В Домино применяется объектная модель данных. Для хранения объектов одного вида применяется отдельная таблица БД. Имеются следующие таблицы БД:
- Пользователь – для хранения списка пользователей программы;
- Права – для хранения назначенных пользователю ролей;
- Нумератор – для нумерации объектов;
- Протокол – для хранения информации о выполненных действиях пользователей;
- Каталог – для хранения каталогов (товарные группы, регионы, виды продукции и другие);
- Партнер – для хранения торговых партнеров и подразделений;
- Продукт – для хранения учетных единиц;
- Документ – для хранения документов всех видов;
- Строка – для хранения строк документов;
- Проводка – для хранения проводок всех видов;
- Сальдо – для хранения сальдо;
Рассмотрим предназначения объектов.
Пользователь - человек, работающий с системой. На каждого пользователя заводится отдельная запись в таблице ‘Пользователь’.
Права - характеристика, определяющая доступность для пользователя отдельных операций для работы с БД. В ДОМИНО права на выполнение операций с объектами БД привязаны к ролям. Для хранения назначенных пользователю ролей применяется таблица ‘Права’.
Нумератор – системный объект, предназначенный для нумерации других объектов БД. В программе применяются различные варианты нумерации объектов. И правила для расчета номеров либо заданы непосредственно в коде программы, либо описываются в проекте, либо хранятся в таблице ‘Нумератор’.
Протокол – список информационных сообщений, отражающий время и последовательность выполнения значимых действий программы. Сообщения записываются в таблицу ‘Протокол’.
Продукт - учетная единица в организации. Это может быть как любой предмет (от спички до поезда), так и оказываемые услуги или что-то другое. Как правило, это товарные запасы торговых предприятий, тара, расходные материалы, запасные части, услуги, основные средства, партии продукта, штриховые коды. На каждую учетную единицу заводится отдельная запись в таблице ‘Продукт’.
Партнер - лицо или организация, непосредственно участвующее в движении товаров или денежных средств. Например, для товарных операций партнером является поставщик (для операций прихода) или получатель (для операций расхода) товара. Среди партнеров выделяются Подразделения (структурная единица предприятия, на котором создаются и хранятся документы). Для каждого партнера заводится отдельная запись в таблице ‘Партнер’.
Каталог - совокупность учетных или вспомогательных данных одного вида. Например, список товарных групп. Или список регионов для группировки партнеров. На каждое значение каталога заводится отдельная запись в таблице ‘Каталог’.
Документ - электронный эквивалент бумажного документа. Документы можно просматривать, изменять, анализировать, распечатывать, формировать на их основе различные отчеты. Для хранения документов применяется таблица ‘Документ’.
Строка – часть документа. Документ может содержать различные списки данных. Например, товарная накладная содержит список товаров с ценами и количеством. Для хранения элементов списка применяются строки документа. В рассматриваемом примере в строку заносится информация о товаре из накладной, ценах и количестве данного товара. Количество строк документа будет равно числу товаров в накладной. Строки записываются в таблицу ‘Строка’.
Проводка - бухгалтерское представление информации о движении учетных средств. Для хранения проводок применяется таблица ‘Проводка’.
Сальдо – текущий остаток учетных средств на счете по полному набору значений аналитик. Хранится в таблице ‘Сальдо’.
Для описания объектов применяются соответствующие разделы в дереве проекта.
Проектировщик может вносить изменения в разделы ‘Пользователь’, ‘Протокол’, ‘Нумератор’, ‘Каталог’, ‘Партнер’, ‘Продукт’, ‘Документ’, ‘Строка’ и ‘Проводка’.
Описание объекта
Внутри объектного раздела создаются разделы для подробного описания объекта и алгоритмов его обработки.
- Параметры – содержит описания параметров, переменных и выражений.
- Классификация – содержит описание классов и типов объектов.
- Выборки – содержит описания простых выборок, применяемых для отбора записей об объектах.
- Виды просмотра – содержит описания видов просмотра, работающих от контекста объекта.
- Формы – содержит описания форм, применяемых для ввода данного объекта
- Схемы копирования <объекта> - содержит описания схем создания одного объекта на основе другого. Схемы применяются при описании методов и процедур.
- Процедуры – в данном разделе описываются процедуры, которые предполагается запускать в контексте одного объекта.
- Сценарии – содержит описания сценариев, которые предполагается использовать в качестве родителей при создании других сценариев.
- Доступные параметры – не используется.
- Отчеты – содержит описания отчетов, обрабатывающих один конкретный объект.
Далее следует описание перечисленных разделов. Поскольку многие из этих разделов были подробно описаны в предыдущих главах, то повторяется пояснение только основных атрибутов. В последующих главах рассмотрены примеры заполнения перечисленных разделов для каждого объекта.
Параметры
Данный раздел содержит описания параметров объектов, выражений и функций.
Имеются следующие соглашения для заполнения раздела ‘Параметры’ внутри объектных разделов:
-
Стандартные параметры объектов перечислены в объектных разделах базового раздела ‘Системная область’.
-
Описания остальных параметров объектов находится в декларативных библиотеках, таких как [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
-
Внутри объектных разделов создаются функции и выражения, обрабатывающие только одну запись объекта, в том числе, контекстно-зависимые функции.
Подробнее о понятиях параметр, выражение и функция написано в главе ‘Параметры’.
Описание атрибутов, типичных для формы и вида просмотра, вынесено на уровень параметра объекта для того, чтобы повторно не указывать одинаковые значения атрибутов.
Классификация
Классификация – это распределение конкретных объектов по неким условным группам (классам). В группе (классе) объединяются объекты с похожим предназначением и одинаковыми свойствами. Количество таких групп (классов) намного меньше чем количество конкретных объектов, и для каждой группы (класса) реально указать список свойств и алгоритмы обработки. Программа, обрабатывая конкретный объект, прежде всего, посмотрит к какому классу относится данный объект. И возьмет необходимые алгоритмы и перечень свойств объекта из описания класса.
В ДОМИНО применяется двухуровневая классификация объектов. Верхний уровень классификации называется классом объекта. Внутри класса объекты разделяются по типам.
Типы и классы реализованы как некие проектные элементы. Между классом и типом имеется четкая иерархия. Класс – это верхний уровень, тип – нижний уровень. При создании типа необходимо указать класс, к которому относится данный тип.
При вводе нового объекта требуется указать тип. Программа автоматически подберет класс по выбранному типу. Поэтому описание хотя бы одного класса и одного типа для объекта является обязательным.
Классы и типы объектов описываются в разделе ‘Классификация’.
Для того чтобы обеспечить совместимость различных проектов по данным, классы и типы объектов желательно создавать централизованно в верхних библиотеках.
В базовом разделе ‘Системная область’ описаны по одному классу для каждого объекта. Здесь же указаны базовые алгоритмы обработки объектов этих классов. Если использовать данные классы в качестве родителей при создании остальных классов, то не придется каждый раз повторять описание базовых алгоритмов.
Описание остальных классов расположено в декларативных библиотеках, таких как [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
Например, в разделе ‘Каталог’ имеется описание класса КАТАЛОГ.
Остальные классы каталога созданы в декларативных библиотеках как наследники этого класса.
Алгоритмы из папок ‘Методы’ и ‘Права на выполнение действий над объектом’ наследуются от родителя.
При создании нового класса будет предложено выбрать тип создаваемого элемента.
- Группа <объектов> – для создания папки, в которой могут быть сгруппированы несколько классов или типов, объединенных по какому-либо признаку. Для группы указывается только наименование.
- Класс <объекта> - для создания нового класса.
- Тип <объекта> - для создания нового типа на базе существующих класса или типа.
- Подстановка <объекта> - для изменения свойств типа объекта.
При заведении класса заполняются наименование (поле ‘Имя’) и родитель (для данного примера – это поле ‘Каталог’).
Для класса можно указать следующие атрибуты:
- HFile definition – используется программистами.
- Доступные параметры – не используется.
- Структура (Состав, Содержание) – содержит список классов и типов. Наследников объекта данного класса можно создавать только таких классов и типов, которые перечислены в указанном списке. Другими словами, если предполагается создавать наследников объекта, то следует перечислить все возможные типы наследников в данном атрибуте. Указание класса заменяет список всех типов данного класса.
Для объектов класса ‘Группа групп продуктов’ можно создавать наследников такого же класса, либо класса ‘Группа продуктов’.
- Методы – содержит описания базовых алгоритмов обработки записи об объекте.
Можно указать следующие методы обработки:
-
- Акцепт. Предварительная проверка (до проведения расчетов) – действия, выполняемые на этапе проверки перед акцептом.
- Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок – действия, выполняемые на этапе перед расчетом проводок.
- Акцепт. Действия после всех расчетов и собственно акцепта – действия, выполняемые на последнем этапе акцепта.
- Пре-Деакцепт – действия, выполняемые на этапе перед деакцептом.
- Деакцепт – действия, выполняемые на этапе деакцепта.
- Пост-Деакцепт – действия, выполняемые на этапе после деакцепта
- Короткий акцепт – действия, выполняемые в режиме короткого акцепта.
- Короткий деакцепт – действия, выполняемые в режиме короткого деакцепта.
- Удаление – действия, выполняемые при удалении записи.
- Действия после изменения и сохранения объекта (в транзакции) – действия, выполняемые после сохранения записи об объекте, до завершения транзакции.
Методы создаются программистами и системными администраторами проекта. Авторы проектов имеют возможность указать в методах необходимые им процедуры.
Большинство методов меет смысл задавать только для объектов ‘Документ’ и ‘Строка’. Подробное описание назначения этапов акцепта и деакцепта находится в главах ‘Документ’ и ‘Строка’.
-
- Процедуры – содержит список процедур для методов.
- Структура кода – задает правило формирования значения параметра ‘Код’ записи объекта.
Код объекта состоит их двух частей. Одна часть рассчитывается программой по указанному алгоритму. Вторая часть вводится пользователем.
Правило формирования кода описывается с помощью следующих атрибутов.
-
-
-
-
- Базовая часть кода – задает алгоритм формирования рассчитываемой части.
-
-
-
Можно указать только один из двух атрибутов:
-
-
-
-
-
-
- Поле (колонка), являющееся выражением – в код будет записан результат данного выражения
- Поле (колонка), являющееся параметром объекта – в код будет записано значение данного параметра объекта
- Нумерация в пределах базовой части – данный признак устанавливает второй режим автоматического формирования значения вводимой части.
-
-
-
-
-
В первом режиме (если данный признак не указан) при назначении значения вводимой части кода применяется последовательная нумерация всех кодов вне зависимости от значения базовой части.
При установленном признаке включается режим назначения следующего номера от последнего кода с данной базовой частью. Т.е. последовательная нумерация вводимой части проводится в пределах каждого значения базовой части.
-
-
-
-
- Разделитель частей кода – задает разделитель базовой и вводимых частей.
- Вводимая часть кода – задает ширину вводимой части кода.
- 1-й UID для нумератора – выражение для расчета первой части идентификатора нумератора.
- 2-й UID для нумератора - выражение для расчета второй части идентификатора нумератора.
- 3-й UID для нумератора - выражение для расчета третьей части идентификатора нумератора.
- 4-й UID для нумератора - выражение для расчета четвертой части идентификатора нумератора.
-
-
-
Подробнее о нумерации объектов с применением нумераторов написано в главе ‘Нумератор’ .
- Код объекта БД – необязателен – задает условие, при котором формирование кода объекта не производится.
- Форма ввода объекта – задает форму ввода для объектов данного класса.
- Сценарий – для описания контекстного меню объекта, вызываемого при нажатии правой кнопки мыши.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет переопределить атрибуты.
- Иконка – определяет иконку для отображения объектов данного класса.
- Удалять вместе с родителями – при установленном признаке объект данного класса будет удален в момент удаления родителя объекта.
- Права на выполнение действий над объектом – определяет условия выполнения основных действий с записью объекта.
-
- Создание – список условий, при выполнении которых разрешается создать новую запись об объекте.
- Изменение – список условий, при выполнении которых разрешается изменить запись об объекте.
- Удаление – список условий, при выполнении которых разрешается удалить запись об объекте.
- Акцепт – список условий, при выполнении которых разрешается запустить процедуру акцепта записи.
- Деакцепт – список условий, при выполнении которых разрешается запустить процедуру деакцепта записи.
- Наследование – условие наследования от данного класса.
- Использование – условие доступа проектировщиков к классу.
- Использование (в режиме выполнения) – условие доступа пользователей к объектам данного класса.
- Автоматически разрешать права пользователю на созданный объект – при установленном признаке пользователю, создавшему объект, будут автоматически даны права на доступ к созданному объекту. Данный атрибут применяется при описании классов и типов подразделений и товарных групп.
Примеры использования перечисленных атрибутов находятся в следующих главах.
Выборки
Данный раздел содержит описания простых выборок. Выборки применяются при описании правил отбора данных для видов просмотра и отчетов.
Выборка определяет таблицу БД и стандартный индекс, который следует использовать для последовательного считывания записей из указанной таблицы.
Подробнее о понятии и атрибутах выборки написано в главе ‘Выборки’.
Виды просмотра
Вид просмотра – это элемент проекта, который определяет содержание, доступные действия и порядок отображения данных в табличном виде.
Принято, что в объектные разделы помещают виды просмотра, работающие от контекста объекта.
Подробнее о понятии и атрибутах вида просмотра написано в главе ‘Виды просмотра’.
Подстановка применяется для изменения атрибутов вида просмотра.
Формы
Форма объекта – это элемент проекта, который определяет содержание, доступные действия и порядок отображения данных в виде карточки. Форма объекта применяется для ввода и изменения записи об объекте.
Подробнее о понятии и атрибутах формы написано в главе ‘Формы’.
Схемы копирования <объекта>
Данный раздел содержит описания схем создания одного объекта на основе другого.
Внутри раздела можно создать элементы следующих типов:
- Схема копирования объекта – для создания новой схемы на основе существующей.
- Группа схем копирования объектов - для создания папки, в которой могут быть сгруппированы несколько схем, объединенных по какому-либо признаку. Для группы указывается только наименование.
При описании схемы заполняются наименование (поле ‘Имя’) и родитель (поле ‘Класс’).
Схемы описываются только на основе существующих в проекте схем. В качестве родителя можно выбрать либо одну из базовых схем, либо любую порожденную схему.
Возможность описания схемы копирования имеется для всех объектов, но реально схемы применяются только для документов и строк.
Базовая схема копирования строк находится в базовом разделе ‘Системная область’.
Базовая схема копирования документов расположена в библиотеке ‘! Базовый набор’.
Для схемы можно указать следующие атрибуты:
- Тип объекта-источника – задает тип объекта, на основе которого будет создан новый объект.
- Тип создаваемого объекта – задает тип нового объекта.
- Флаг: Не копировать поля исходного объекта – при установленном признаке значения параметров исходного объекта не будут скопированы в создаваемый объект.
- Флаг: Не устанавливать исходный как родитель (только для документов) – при установленном признаке в параметр ‘Родитель’ нового документа не будет записана ссылка на исходный документ. Данный признак применяется только для документов.
- Начальные значения полей объекта – содержит правила заполнения параметров объекта.
- Автоматический акцепт – при установленном признаке после создания нового документа (или строки) для него автоматически запускается процедура акцепта.
- Ключевые поля для проверки наличия уже созданного объекта – задает список полей для проверки. Проверка позволяет избежать повторного создания объекта.
В базовой схеме копирования документов описание данного атрибута выглядит вот таким образом.
Если уже имеется документ с такими же значениями параметров ‘Родитель’, ‘Класс’ и ‘Тип’ как у нового документа, то процедура копирования отменяется.
- Набор условий допустимости применения (Действие допустимо, если) – задает список условий, при выполнении которых запускается схема копирования.
Пример.
Новый документ будет создан при условии, что в исходном документе заполнены параметры ‘Дата счета-фактуры’ и ‘Номер счета-фактуры’.
- Локальные переменные – содержит список локальных переменных.
Для примера рассмотрим одну из схем копирования документов, расположенную в библиотеке ‘# Товародвижение’.
На основе документа типа ‘Расход при внутреннем перемещении’ создается документ типа ‘Приход при внутреннем перемещении’. В новом документе заполняются параметры ‘Дата’, ‘Контрагент’, ‘Подразделение’, ‘Номер сопутствующего документа’ и ‘Дата сопутствующего документа’. В эти параметры заносятся значения указанных в схеме параметров исходного документа. Для избежания повторного создания документа применяется атрибут ‘Ключевые поля для проверки наличия уже созданного объекта’. Описание этого атрибута по правилу наследования считывается у родителя схемы.
Схема может применяться либо при описании методов, либо в процедурах.
Примеры.
После акцепта исходного документа запускаются три схемы копирования. Первая схема создаст документ, следующие схемы сформируют строки нового документа.
Для процедуры ‘Формирование реестров по документу’ четыре схемы копирования указаны в качестве параметров при вызове.
Процедуры
Данный раздел содержит описания процедур.
Принято внутри объектных разделов создавать такие процедуры, которые предполагается запускать в контексте одного объекта.
Подробнее о понятии и атрибутах процедуры написано в главе ‘Процедуры’.
Сценарии
Данный раздел содержит такие сценарии, которые предполагается использовать в качестве родителей при создании других сценариев.
Подробнее о понятии и атрибутах сценария написано в главе ‘Сценарии’.
Отчеты
Данный раздел содержит описания отчетов.
Отчет – это специальный проектный элемент, описывающий правила отбора, сортировки, группировки данных и выдачи их на экран, принтер, в файл. Часто отчетом называют результат выполнения перечисленных действий.
Принято внутри объектных разделов создавать такие отчеты, которые обрабатывают один конкретный объект.
Подробнее о понятии и атрибутах процедуры написано в главе ‘Отчеты’.
Пользователь
Пользователь - человек, работающий с системой. На каждого пользователя заводится отдельная запись в таблице ‘Пользователь’.
Внутри раздела ‘Пользователь’ можно создать следующие разделы:
- Параметры – содержит описания параметров, переменных и выражений.
- Процедуры – в данном разделе описываются процедуры, которые обрабатывают одну запись пользователя.
- Виды просмотра – содержит описания видов просмотра, работающих от контекста пользователя.
- Выборки – содержит описания простых выборок, применяемых для отбора записей о пользователях.
- Формы – содержит описания форм для ввода пользователя.
- Схемы копирования пользователей - содержит описания схем создания одного пользователя на основе другого. Схемы применяются при описании методов и процедур.
- Сценарии – содержит описания сценариев, которые предполагается использовать в качестве родителей при создании других сценариев.
- Классификация – содержит описание классов и типов пользователей.
- Доступные параметры – не используется.
- Отчеты – содержит описания отчетов, обрабатывающих одного пользователя.
Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчёты’).
Рассмотрим описание пользователей на примерах.
Описание базовых параметров пользователя находится в базовом разделе ‘Системная область’.
Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
Единственные класс и тип пользователей описаны в базовом разделе ‘Системная область’.
В описании класса заданы форма и метод для удаления записи пользователя.
Записи таблицы ‘Пользователь’ могут редактировать только те пользователи, которым назначена роль ‘Администратор пользователей’. Это условие задано в описании типа.
Базовая форма и форма пользователя находятся в базовом разделе ‘Системная область’.
Одна из подстановок формы сделана в библиотеке ‘Базовый набор’. В форму добавлено еще одно поле.
Отчеты для печати пользователей расположены в библиотеке ‘! Примитивы отчетов’.
Нумератор
Нумератор – список объектов нумерации и правил расчета номеров для этих объектов.
Данные для нумерации хранятся в таблице ‘Нумератор’.
Нумерация – процедура присваивания коду объекта нового уникального номера. Номера назначаются последовательно с шагом единица.
Возможные варианты назначения кода объекта:
- Код полностью вводится пользователем. Пользователь самостоятельно проверяет и обеспечивает соответствие введенных символов неким условиям.
- Код формируется программой автоматически в соответствии в заранее указанной структурой. Пользователь не может изменить код.
- Код разбивается на две части. Одна часть формируется программой и не доступна пользователю, вторая часть вводится пользователем. Значение второй части может быть предварительно рассчитано.
Для реализации второго и третьего вариантов в Домино были введены нумераторы, и разработана схема нумерации на основе нумераторов.
Нумерация применяется для каталогов, партнеров, продуктов и документов. Для того чтобы нумерация выполнялась быстро, последовательно и без пропусков номеров применяются системные нумераторы.
При каждом обращении системный нумератор выдает следующий по порядку номер и, при этом, автоматически увеличивается на 1. Нумераторы хранятся в таблице ‘Нумератор’.
Каждый нумератор идентифицируется составным ключом:
- Первый идентификатор - UID
- Второй идентификатор - UID
- Третий идентификатор - UID
- Четвертый идентификатор - строка
Способ нумерации (то есть принцип, по которому создаются номера) задается на класс объекта в разделе ‘Структура кода’. Подробнее об атрибутах данного раздела написано выше, в главе ‘Основные объекты’.
Рассмотрим стандартный алгоритм нумерации объектов:
- Вычисляется используемый нумератор по схеме, приведенной ниже.
- Нумератор возвращает новый номер.
- Если в атрибуте ‘Вводимая часть кода’ задана ширина кода, то полученный номер дополняется слева нулями.
- Если в атрибуте ‘Базовая часть кода’ определены префикс(базовая часть) и разделитель, то они вычисляются и присоединяются спереди к номеру.
- Запускается проверка наличия в базе данных объекта с полученным кодом. Если такой объект не будет обнаружен, то полученный код назначается объекту.
Если такой объект имеется, то повторяются этапы со 2 по 5.
При отказе пользователя сохранить объект и при удалении объекта нумератор к обратному значению не возвращается.
Далее разберем схему вычисления применяемого нумератора. Как уже было сказано, нумератор идентифицируется набором из четырех параметров. При вычислении нумератора проводится анализ описания нумератора в разделе ‘Структура кода’ описания класса объекта и рассчитываются значения параметров.
- Если задан атрибут ‘1-й UID для нумератора’, то вычисляется выражение, указанное под этим атрибутом.
Если атрибут не задан, то применяется UID класса объекта.
- Если задан атрибут ‘2-й UID для нумератора’, то вычисляется выражение, указанное под этим атрибутом.
Если атрибут не задан, то применяется NULL.
- Если задан атрибут ‘3-й UID для нумератора’, то вычисляется выражение, указанное под этим атрибутом.
Если атрибут не задан, то применяется NULL.
- Если задан атрибут структуры кода ‘4-й ID для нумератора’, то вычисляется выражение, указанное под этим атрибутом.
Если атрибут не задан, то применяется пустая строка.
За исключением варианта, при котором:
- не заданы атрибуты ‘2-й UID для нумератора’ и ‘3-й UID для нумератора’;
- указан атрибут ‘Базовая часть кода’;
- Установлен признак ‘Нумерация в пределах базовой части’.
В этом исключительном случае четвертый параметр принимает значение атрибута ‘Базовая часть кода’.
Кроме системных нумераторов проектировщики имеют возможность описать для своих целей другие нумераторы. Для этого достаточно завести новый тип или класс нумератора и обращаться к нему с помощью функции ‘НОВЫЙ ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР’.
Например. В библиотеке ‘# Товародвижение’ был заведен тип нумератора. Функция ‘НОВЫЙ ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР’ вызывается с параметром, в котором указан этот тип нумератора. Возвращаемый функцией номер применяется при создании кода в формате EAN13.
Класс и тип нумератора в библиотеке ‘# Товародвижение’
Пример использования функции ‘НОВЫЙ ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР’
Фрагмент формы ‘Штриховой код’. При заполнении поля формы применяется расчет номера с помощью специального нумератора.
В таблице ‘Нумератор’ имеются несколько записей, применяемых программой для формирования UID-ов объектов. Эти записи формируются в процессе создания базы данных и изменяются только триггерами.
Протокол
Протокол – список сообщений, отражающий время и последовательность выполнения значимых действий программы. Сообщения записываются в таблицу ‘Протокол’.
Программа автоматически протоколирует следующие события:
- Начало и конец работы пользователя
- Создание, изменение и удаление объекта
- Выполнение процедур акцепта и деакцепта
- Создание, изменение и удаление объекта почтовой службой
- Выполнение процедур акцепта и деакцепта почтовой службой
Для отражения этих действий в проекте имеются классы и типы записей протокола. Описание этих классов и типов находится в базовом разделе ‘Системная область’, раздел ‘Протокол’, раздел ‘Классификация’.
Существует возможность частично отменить стандартное протоколирование для документов. В атрибуте ‘Не протоколировать при ручном редактировании’ перечисляются те стандартные действия (создание и изменение), выполнение которых не должно протоколироваться.
Кроме системного протоколирования проектировщик может организовать собственный вариант протоколирования важных событий.
Внутри раздела ‘Протокол’ можно создать следующие разделы:
- Параметры – для описания параметров, переменных и выражений.
- Классификация – для описания классов и типов протокола.
Описание базовых параметров протокола находится в базовом разделе ‘Системная область’.
Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
Как было отмечено выше, базовые классы и типы протокола для системных целей описаны в базовом разделе ‘Системная область’. В других библиотеках могут находиться описания типов и классов, созданные авторами проектов для своих целей.
Например, для протоколирования действий кассира при работе с модулем ‘Торговая касса’ имеются следующие типы в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
Для управления записью в протокол имеется набор специальных процедур, расположенных в библиотеке ‘! Примитивы скриптов’, раздел ‘Процедуры’, папка ‘Управление записью действий в протокол’.
Продукт
Продукт - учетная единица в организации. Это может быть как любой предмет (от спички до поезда), так и оказываемые услуги или что-то другое. Как правило, это товарные запасы торговых предприятий, тара, расходные материалы, запасные части, услуги, основные средства. На каждую учетную единицу заводится отдельная запись в таблице ‘Продукт’.
Внутри раздела ‘Продукт’ можно создать следующие разделы:
- Параметры – содержит описания параметров, переменных и выражений.
- Классификация – содержит описание классов и типов продуктов.
- Формы – содержит описания форм для ввода продуктов.
- Выборки – содержит описания простых выборок, применяемых для отбора записей о продуктах.
- Виды просмотра – содержит описания видов просмотра, работающих от контекста продукта.
- Схемы копирования продуктов - содержит описания схем создания одного продукта на основе другого. Схемы применяются при описании методов и процедур.
- Процедуры – в данном разделе описываются процедуры, которые обрабатывают одну запись продукта.
- Сценарии – содержит описания сценариев, которые предполагается использовать в качестве родителей при создании других сценариев.
- Дополнительные параметры партии при FIFO-расходе – содержит список параметров, применяемых при описании схемы подбора партий для расхода по методу FIFO.
В базовом разделе ‘Системная область’ имеется описание одного дополнительного параметра.
- Доступные параметры – не используется.
- Отчеты – содержит описания отчетов, обрабатывающих один продукт.
Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).
Рассмотрим описание продуктов на примере.
Пример описания продукта
Предположим проектировщику требуется реализовать ввод и отображение партий товаров. Для решения этой задачи в проекте необходимо найти или создать:
- Параметры товара и партии
- Соответствующие типы товаров: для базового товара и для партии
- Форму ввода товара и форму ввода партии
- Виды просмотров товаров и партий
- Сценарии для форм, видов просмотра и контекстных меню
- Отчеты по товарам
Рассмотрим возможный вариант действий автора проекта.
Прежде всего необходимо ознакомиться со списком параметров продукта и найти те параметры, которые предполагается использовать. Результат этой работы пригодится при описании форм, видов просмотра и отчетов.
Параметры продукта
Описание базовых параметров продукта находится в базовом разделе ‘Системная область’.
Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
При выборе параметра необходимо обращать внимание на тип данных.
На этом этапе можно провести еще одно исследование.
В проекте создано множество функций и выражений, работающих от текущей записи продукта. Такие функции и выражения располагаются в разделе ‘Параметры’ раздела ‘Продукт’.
Фрагмент списка функций для продукта из библиотеки ‘! Базовый набор’
Фрагмент списка функций для продукта из библиотеки ‘# Товародвижение’
Некоторые из этих функций и выражений потребуются при описании формы, вида просмотра и отчетов.
Классификация продуктов
После ознакомления с возможными параметрами необходимо выбрать два типа продуктов. Первый тип понадобится для хранения базовых товаров, второй тип будет использован для партий товаров. Потребуются именно два типа, поскольку базовый товар и партия имеют разный набор характеристик (параметров), и обрабатываются по разным алгоритмам.
Базовые классы продуктов описаны в базовом разделе ‘Системная область’.
Описание класса ‘ПРОДУКТ’ выглядит вот так.
Для продуктов данного класса указаны стандартный метод при удалении записи и разрешены все действия с записью. Ширина параметра ‘Код’ записи равна 6 символов.
В описании класса ‘ПАРТИЯ ПРОДУКТА’ указана подробная структура кода партии. Код партии состоит из двух частей. В базовую часть записывается код родителя партии (т.е. код базового товара), далее следует разделитель – точка. Вторая (вводимая) часть кода имеет ширину 3 символа. Партии получают последовательные номера в пределах базовой части.
Например, для товара 5436 партии будут иметь номера 5436.001, 5436.002, 5436.003 и т.д.
Системный признак ‘Класс продукта используется как ‘ПАРТИЯ’’ указывает область применения данного класса.
В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы продуктов.
Классы продукта ссылаются на два базовых класса. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’, ‘Права на выполнение действий над объектом’ и ‘Структура кода’.
Типы продукта созданы на основе перечисленных классов.
В этой библиотеке никакие значимые атрибуты классов и типов не указываются. Атрибуты задаются в других библиотеках. Для этого применяют подстановки.
Для наших целей подходят два типа продукта: ‘Товар’ и ‘Партия товара’.
Посмотрим как описаны атрибуты этих типов.
Находим в библиотеке ‘# Товародвижение’ подстановку типа ‘Товар’.
В подстановке указана форма для ввода продуктов данного типа, задан сценарий для контекстного меню и структура товара. Для товара могут быть созданы наследники следующих типов: партия товара, штриховой код, код для весов, коды товаров у поставщиков.
В этой же библиотеке расположена подстановка типа ‘Партия товара’. В ней указаны сценарий и форма.
Необходимо проверить наличие других подстановок для рассматриваемых типов. Если таких подстановок не обнаружено, то переходим к уточнению атрибутов. Если же подстановки имеются, то последующие действия необходимо выполнять с учетом изменения значений атрибутов в этих подстановках.
Структура товара
В подстановке типа ‘Товар’ указан атрибут ‘Структура (Состав, Содержание)’. Этот атрибут задает возможные типы наследников товара.
Для рассматриваемой задачи важно, что в списке имеется тип ‘Партия товара’. Значит будет возможно создавать партии для товаров. В противном случае пришлось бы создать подстановку типа ‘Товар’ и указать тип ‘Партия товара’ в значении атрибута ‘Структура (Состав, Содержание)’.
Ссылки на другие типы продуктов для нашей задачи значения не имеют. Они означают, что для товара можно создавать штриховые коды, коды для весов и коды товаров у поставщика. Отменить это назначение можно двумя способами. Либо создать подстановку типа ‘Товар’ и не указывать эти типы в атрибуте ‘Структура (Состав, Содержание)’.
Либо можно запретить их использование с помощью подстановок этих типов.
Для типа ‘Партия товара’ структура не требуется.
Форма продукта
В описаниях рассматриваемых типов имеются ссылки на формы ввода. Рассмотрим формы подробнее.
Форма, заданная в подстановке типа ‘Товар’, находится в библиотеке ‘# Товародвижение’, раздел ‘Продукт’, раздел ‘Форма’.
Описание атрибутов ‘Список полей формы’ и ‘Сценарий’ включает содержимое соответствующих атрибутов родителя формы. Родителем данной формы является форма ‘ТОВАР’.
В этой форме имеется описание полей формы, которые по правилу наследования добавляются в список полей формы ‘Товар’.
Если данный список полей не соответствует требованиям задачи, то его следует изменить. Это можно сделать двумя способами:
- Можно создать подстановку данной формы и изменить значение атрибута ‘Список полей формы’.
- Можно создать новую форму и новую подстановку типа ‘Товар’. В подстановке потребуется указать ссылку на созданную форму.
Теперь перейдем к форме для ввода партии. Форма, заданная в подстановке типа ‘Партия товара’, находится в библиотеке ‘# Товародвижение’, раздел ‘Продукт’, раздел ‘Форма’.
Описание наследуемых полей для сценария надо искать у родителя формы.
Поля из этой формы по правилу наследования добавляются в список полей формы ‘Партия товара’.
Для этой формы верно замечание, приведенное для предыдущей формы, - если данный список полей не соответствует требованиям задачи, то его следует изменить. И выполнить это можно двумя способами. О способах написано чуть выше.
Необходимо проверить наличие подстановок для изученных форм и последующие действия выполнять с учетом изменения значений атрибутов в этих подстановках.
Вид просмотра продуктов
Для решаемой задачи требуется отобразить два списка: список товаров и список партий одного товара.
Вид просмотра товаров должен быть расположен в разделе ‘Виды просмотра’ на верхнем уровне библиотеки. Попробуем найти подходящий.
В библиотеке ‘! Базовый набор‘, раздел ‘Виды просмотра’, папка ‘! Базовый набор’, папка ‘Продукт’, папка ‘Товары’ находится вид просмотра ‘Товары по коду (без партий)’.
Данный вид просмотра отображает все продукты класса ‘ТОВАР’, что и требуется для нашей задачи.
Рассмотрим родителя вида просмотра.
Здесь указана ссылка на вид просмотра для партий и сценарий для панели инструментов вида просмотра. Сценарий отложим до следующей главы, а сейчас перейдем к изучению вида просмотра с наименованием ‘Партионные товары данного товара’.
Заинтересовавший нас вид просмотра и его родитель находятся в библиотеке ‘! Базовый набор‘, раздел ‘Продукт’, раздел ‘Виды просмотра’. Местоположение в объектном разделе объясняется тем, что эти виды просмотра отображают товары, связанные с одним конкретным продуктом.
Данные виды просмотра отображают все продукты класса ‘ПАРТИЯ ТОВАРА’, связанные с текущим товаром. Это и требуется для рассматриваемой задачи.
Теперь разберем ситуацию когда список полей просмотра не соответствует нашим требованиям. В этом случае можно либо создать новый вид просмотра, либо применить подстановку вида просмотра для изменения значения атрибута ‘Список полей просмотра’.
Необходимо проверить наличие подстановок для рассмотренных видов просмотра. Если обнаружены подстановки, то последующие действия следует выполнять с учетом изменения значений атрибутов в этих подстановках.
Сценарии для продуктов
В описании типа продукта, формы и вида просмотра встречались атрибуты со ссылками на различные сценарии. Пришло время заняться уточнением этих атрибутов.
Контекстное меню продукта
Для начала разберем сценарий у типа продукта. Этот сценарий задает контекстное меню. Контекстное меню вызывается из вида просмотра при нажатии правой кнопки мыши. Выбранные в меню действия выполняются для текущей записи вида просмотра.
Еще раз рассмотрим подстановку типа продукта ‘Товар’.
Атрибут ‘Сценарий’ ссылается на сценарий с наименованием ‘Локальное меню: Товар’.
Описание этого сценария находится в библиотеке ‘# Товародвижение’, раздел ‘Продукт’, раздел ‘Сценарии’.
В итоговый сценарий попадут все пункты из сценария ‘Локальное меню: Товар’ и один пункт из описания сценария в подстановке.
Сценарии для видов просмотра
Теперь разберем указание сценария в виде просмотра товаров. Сценарий в виде просмотра определяет панель инструментов.
Для данного вида просмотра применяется сценарий ‘Сценарий для справочника товаров (с партиями)’. Этот сценарий расположен в библиотеке ‘! Базовый набор‘, раздел ‘Продукт’, раздел ‘Сценарии’.
От родителя в данный сценарий будут добавлены следующие пункты:
Сценарий для вида просмотра партий полностью описан в базовом виде просмотре. Используемый вид просмотра ‘Партионные товары данного товара’ получит данный сценарий по правилу наследования.
Сценарии для форм
Перейдем к сценариям формы. Сценарий в форме задает панель инструментов формы.
Форма ‘Товар’ содержит описание сценария, в который подключаются наследуемые пункты.
Для двух пунктов сценария ‘Продажные коды’ и ‘Коды для весов’ указан атрибут ‘Сохранить изменения перед вызовом’.
Наличие этого атрибута означает, что перед выполнением указанных действий вся введенная в форму информация будет записана в БД. В данном случае перед вызовом видов просмотра для заполнения штриховых кодов и кодов для весов введенные в форму товара данные будут сохранены. Это позволит пользователю сразу перейти к вводу дополнительных кодов после заполнения полей формы. В противном случае, сначала необходимо сохранить введенную в форму информацию (по кнопке ‘Сохранить’), затем повторно вызвать форму и выбрать интересующий вид просмотра.
Поскольку сам сценарий не имеет родителя, то проводим поиск наследуемых пунктов у родителей формы. Таковые находятся у базовой формы ‘ПРОДУКТ’.
Этот же сценарий по правилу наследования подключается в форму для ввода партий.
Осталось найти вложенный сценарий ‘Отчеты по товару’, на который ссылается один из пунктов.
При выборе на панели инструментов формы пункта ‘Печать’ появится список из трех пунктов, содержащихся в этом вложенном сценарии.
В заключение, рассмотрим ситуацию, когда список пунктов сценария не соответствует нашим требованиям. В этом случае возможны различные действия. Если сценарий ссылается на другой сценарий, то можно применить подстановку сценария. Либо завести новую подстановку типа продукта, вида просмотра или формы, в которой указать новый сценарий.
При изменении сценария необходимо быть особо внимательным, поскольку следует изучить подстановки не только самого сценария и родителей сценария, но и тех проектных элементов, где этот сценарий применяется.
Отчеты по продуктам
Последний этап решения поставленной задачи состоит в описании отчетов по продуктам.
Отчеты по одному продукту располагают в разделе ‘Отчеты’ внутри раздела ‘Продукт’.
В раздел ‘Отчеты’ верхнего уровня библиотеки помещают отчеты по многим продуктам.
Партнёр
Партнёр - лицо или организация, непосредственно участвующее в движении товаров или денежных средств. Например, для товарных операций партнером является поставщик (для операций прихода) или получатель (для операций расхода) товара. Среди партнеров выделяются Подразделения (структурная единица предприятия, на котором создаются и хранятся документы). Партнёры хранятся в таблице ‘Партнер’.
Внутри раздела ‘Партнёр’ можно создать следующие разделы:
- Параметры – содержит описания параметров, переменных и выражений.
- Классификация – содержит описание классов и типов партнеров.
- Виды просмотра – содержит описания видов просмотра, работающих от контекста партнера.
- Выборки – содержит описания простых выборок, применяемых для отбора записей о партнерах.
- Формы – содержит описания форм для ввода партнеров.
- Схемы копирования партнеров - содержит описания схем создания одного партнера на основе другого. Схемы применяются при описании методов и процедур.
- Процедуры – в данном разделе описываются процедуры, которые обрабатывают одну запись партнера.
- Сценарии – содержит описания сценариев, которые предполагается использовать в качестве родителей при создании других сценариев.
- Доступные параметры – не используется.
- Отчеты – содержит описания отчетов, обрабатывающих одного партнера.
Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).
Рассмотрим описание партнеров на примере.
Пример описания партнера
Предположим требуется реализовать ввод и отображение торговых партнеров и подразделений. Для решения этой задачи в проекте необходимо найти или создать:
- Параметры подразделения и партнера
- Типы для подразделений и партнеров
- Форму ввода подразделения и форму ввода партнера
- Виды просмотров подразделений и партнеров
- Сценарии для форм, видов просмотра и контекстных меню
- Отчеты по партнерам
Рассмотрим возможный вариант действий автора проекта.
Прежде всего необходимо ознакомиться со списком параметров партнера и найти те параметры, которые предполагается использовать. Результат этой работы пригодится при описании форм, видов просмотра и отчетов.
Параметры партнера
Описание базовых параметров партнера находится в базовом разделе ‘Системная область’.
Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
При выборе параметра необходимо обращать внимание на тип данных.
На этом этапе можно провести еще одно исследование.
В проекте создано множество функций и выражений, работающих от текущей записи партнера. Такие функции и выражения располагаются в разделе ‘Параметры’ раздела ‘Партнер’.
Фрагмент списка функций для партнера из библиотеки ‘! Базовый набор’
Фрагмент списка функций для партнера из библиотеки ‘# Товародвижение’
Некоторые из этих функций и выражений потребуются при описании формы, вида просмотра и отчетов.
Классификация партнеров
Для решаемой задачи необходимо выбрать два типа партнеров. Первый тип понадобится для хранения подразделений, второй тип будет использован для хранения торговых партнеров.
Базовые классы партнеров описаны в базовом разделе ‘Системная область’.
Описание класса ‘ПАРТНЕР’ выглядит вот так.
Для партнеров данного класса указаны стандартный метод при удалении записи и разрешены все действия с записью. Ширина параметра ‘Код’ записи равна 6 символов.
В описании класса ‘ПОДРАЗДЕЛЕНИЕ’ указан атрибут ‘Автоматически разрешать права пользователю на созданный объект’. Данный атрибут применяется для разрешения следующего конфликта. Конфликт возникает вследствие того, что права на доступ к подразделениям устанавливает один пользователь, а подразделение создает другой пользователь, часто не имеющий возможности изменять права. При установленном признаке права на доступ к новому подразделению автоматически будут установлены тому пользователю, который создал подразделение.
В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы партнеров.
Классы партнера ссылаются на два базовых класса. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’, ‘Права на выполнение действий над объектом’ и ‘Структура кода’.
Типы партнеров созданы на основе перечисленных классов.
В этой библиотеке никакие значимые атрибуты классов и типов не указываются. Атрибуты задаются в других библиотеках. Для этого применяют подстановки.
Для наших целей подходят два типа партнера: ‘Структурное подразделение’ и ‘Торговый партнер’.
Посмотрим как описаны атрибуты этих типов.
Находим в библиотеке ‘# Товародвижение’ подстановку типа ‘Структурное подразделение’.
В подстановке указана форма для ввода подразделений, задан сценарий для контекстного меню, структура партнера и иконка.
В этой же библиотеке расположена подстановка типа ‘Торговый партнер’. В ней кроме формы, сценария и структуры указано условие использования данного типа. Изменять и добавлять торговых партнеров сможет только тот пользователь, которому назначена роль ‘Оператор клиентов’.
Необходимо проверить наличие других подстановок для рассматриваемых типов. Если таких подстановок не обнаружено, то переходим к уточнению атрибутов. Если же подстановки имеются, то последующие действия необходимо выполнять с учетом изменения значений атрибутов в этих подстановках.
Структура партнера
В подстановке типа ‘Торговый партнер’ указан атрибут ‘Структура (Состав, Содержание)’. Этот атрибут задает возможные типы наследников партнера.
Заполнение данного атрибута для нашей задачи значения не имеет. Указанные значения означают, что для партнера можно создавать филиалы, расчетные счета, юридический и физический адреса и контактные лица. Отменить это назначение можно двумя способами. Либо создать подстановку типа ‘Торговый партнер’ и не указывать эти типы в атрибуте ‘Структура (Состав, Содержание)’. Либо можно запретить их использование с помощью подстановок этих типов.
Точно таким же образом можно поступить с указанным для структурного подразделения типом партнера ‘Товарный склад/секция’.
Форма партнера
В описаниях рассматриваемых типов имеются ссылки на формы ввода. Рассмотрим формы подробнее.
Форма, заданная в подстановке типа ‘Структурное подразделение’, находится в библиотеке ‘# Товародвижение’, раздел ‘Партнер’, раздел ‘Форма’.
Для формы указаны список полей и сценарий.
В этой же библиотеке находится форма, указанная в подстановке типа ‘Торговый партнер’.
В этой форме имеется описание полей, закладок и сценария.
Если заданный список полей не соответствует требованиям задачи, то его следует изменить. Это можно сделать двумя способами:
- Можно создать подстановку данной формы и изменить значение атрибута ‘Список полей формы’.
- Можно создать новую форму и новую подстановку типа партнера. В подстановке потребуется указать ссылку на созданную форму.
Необходимо проверить наличие подстановок для изученных форм и последующие действия выполнять с учетом изменения значений атрибутов в этих подстановках.
Вид просмотра партнеров
Для решаемой задачи требуется отобразить два списка: список подразделений и список торговых партнеров.
Данные виды просмотра должны быть расположены в разделе ‘Виды просмотра’ на верхнем уровне библиотеки. Попробуем найти подходящие.
В библиотеке ‘! Базовый набор‘, раздел ‘Виды просмотра’, папка ‘! Базовый набор’, папка ‘Партнер’ находится вид просмотра ‘Структурные подразделения’.
Данный вид просмотра отображает всех партнеров типа ‘Структурное подразделение’, что и требуется для нашей задачи.
В этой же библиотеке, папка ‘! Базовый набор’, папка ‘Партнер’, папка ‘Торговые партнеры’ расположен вид просмотра ‘Торговые партнеры по наименованию’.
Данный вид просмотра отображает всех партнеров класса ‘ТОРГОВЫЙ ПАРТНЕР’. Разрешено создавать партнеров типа ‘Торговый партнер’. Условиям задачи найденный вид просмотра удовлетворяет.
Если список полей просмотра не соответствует требованиям, то можно либо создать новый вид просмотра, либо применить подстановку вида просмотра для изменения значения атрибута ‘Список полей просмотра’.
Необходимо проверить наличие подстановок для рассмотренных видов просмотра. Если подстановки имеются, то последующие действия необходимо выполнять с учетом изменения значений атрибутов в этих подстановках.
Сценарии для партнеров
В описании типа партнера, формы и вида просмотра встречались атрибуты со ссылками на различные сценарии. Уточним описания этих атрибутов.
Контекстное меню
Для начала разберем сценарии у типов партнеров. Этот сценарий задает контекстное меню. Контекстное меню вызывается из вида просмотра при нажатии правой кнопки мыши. Выбранные в меню действия выполняются для текущей записи вида просмотра.
Еще раз рассмотрим подстановку типа партнера ‘Структурное подразделение’.
Сценарий содержит единственный элемент – вызов вида просмотра протокола.
Изучим подстановку типа партнера ‘Торговый партнер’.
Поскольку сам сценарий не имеет родителя, то проводим поиск наследуемых пунктов у типа партнера. В описании типа атрибут ‘Сценарий’ не указан. Значит, следует проверить родителя типа – это класс ‘ТОРГОВЫЙ ПАРТНЕР’. И в описании класса, и в подстановках класса атрибут ‘Сценарий’ отсутствует. Переходим к изучению родителя класса – это базовый класс ‘ПАРТНЕР’. В подстановке класса находим искомый атрибут.
Наследуемые пункты будут добавлены в контекстное меню торгового партнера.
Сценарии для видов просмотра
Теперь разберем указание сценария в виде просмотра подразделений. Сценарий в виде просмотра определяет панель инструментов.
Поскольку сценарий для вида просмотра не задан, то будем искать сценарий сначала в подстановках вида просмотра, затем у родителя и в подстановках родителя. Если и там сценарий не обнаружится, то придется изучать дальних родителей.
После непродолжительных поисков сценарий найден в базовом виде просмотра ‘ОБЪЕКТЫ’.
Сценарий для вида просмотра торговых партнеров найти легче.
Для данного вида просмотра применяется сценарий ‘Сценарий для торговых партнеров’. Этот сценарий расположен в библиотеке ‘! Базовый набор‘, раздел ‘Партнер’, раздел ‘Сценарии’.
Поскольку в описании сценария использован атрибут ‘Наследуемые пункты’, то рассматриваем описание родителя.
От родителя в данный сценарий будут добавлены следующие пункты:
В итоге получаем сценарий, в котором объединены пункты из трех сценариев. Если хотя бы один из изученных сценариев имел подстановки, то результат был бы иным.
Сценарии для форм
Перейдем к сценариям формы. Сценарий в форме задает панель инструментов формы.
Форма ‘Торговый партнер’ содержит полное описание сценария.
Для двух пунктов сценария ‘Счета’ и ‘Филиалы’ указан атрибут ‘Сохранить изменения перед вызовом’.
Наличие этого атрибута означает, что перед выполнением указанных действий вся введенная в форму информация будет записана в БД. В данном случае перед вызовом видов просмотра для заполнения счетов и филиалов введенные в форму партнера данные будут сохранены. Это позволит пользователю сразу перейти к вводу дополнительных данных после заполнения полей формы. В противном случае, сначала необходимо сохранить введенную в форму информацию (по кнопке ‘Сохранить’), затем повторно вызвать форму и выбрать интересующий вид просмотра.
Для формы ‘Подразделение’ сценарий содержит только атрибут ‘Наследуемые пункты’.
Поскольку сам сценарий не имеет родителя, то проводим поиск наследуемых пунктов у родителей формы. Таковые находятся у базовой формы ‘ПАРТНЕР’.
Этот сценарий по правилу наследования подключается в форму для ввода подразделений.
В заключение, рассмотрим ситуацию, когда список пунктов сценария не соответствует нашим требованиям. В этом случае возможны различные действия. Если сценарий ссылается на другой сценарий, то можно применить подстановку сценария. Либо завести новую подстановку типа партнера, вида просмотра или формы, в которой указать новый сценарий.
При изменении сценария необходимо быть особо внимательным, поскольку следует изучить подстановки не только самого сценария и родителей сценария, но и тех проектных элементов, где этот сценарий применяется.
Отчеты по партнерам
Последний этап решения поставленной задачи состоит в описании отчетов по партнерам.
Отчеты по одному партнеру располагают в разделе ‘Отчеты’ внутри раздела ‘Партнер’.
В раздел ‘Отчеты’ верхнего уровня библиотеки помещают отчеты по многим партнерам.
Каталог
Каталог - совокупность учетных или вспомогательных данных одного вида. Например, список товарных групп. Или список регионов для группировки партнеров. На каждое значение каталога заводится отдельная запись в таблице ‘Каталог’.
Внутри раздела ‘Каталог’ можно создать следующие разделы:
- Параметры – содержит описания параметров, переменных и выражений.
- Классификация – содержит описание классов и типов каталогов.
- Виды просмотра – содержит описания видов просмотра, работающих от контекста каталога.
- Выборки – содержит описания простых выборок, применяемых для отбора записей каталогов.
- Формы – содержит описания форм для ввода записи каталога.
- Схемы копирования каталогов - содержит описания схем создания одной записи каталога на основе другой. Схемы применяются при описании методов и процедур.
- Процедуры – в данном разделе описываются процедуры, которые обрабатывают одну запись каталога.
- Сценарии – содержит описания сценариев, которые предполагается использовать в качестве родителей при создании других сценариев.
- Доступные параметры – не используется.
- Отчеты – содержит описания отчетов, обрабатывающих одну запись каталога.
Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).
Рассмотрим описание каталогов на примере.
Пример описания каталога
Предположим требуется реализовать ввод и отображение каталога для шифров амортизационных отчислений. Для решения этой задачи в проекте необходимо найти или создать:
- Параметры шифра
- Класс и тип для шифра
- Форму ввода шифра
- Вид просмотра шифров амортизационных отчислений
- Сценарии для форм, видов просмотра и контекстных меню
- Отчеты по шифрам
Рассмотрим возможный вариант действий автора проекта.
Прежде всего необходимо ознакомиться со списком параметров каталога и найти те параметры, которые предполагается использовать. Результат этой работы пригодится при описании форм, видов просмотра и отчетов.
Параметры каталога
Описание базовых параметров каталога находится в базовом разделе ‘Системная область’.
Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
При выборе параметра необходимо обращать внимание на тип данных.
Классификация каталогов
Для решаемой задачи необходимо выбрать класс и тип каталога.
Базовый класс каталога описан в базовом разделе ‘Системная область’.
В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены остальные централизованно заведенные классы и типы каталогов.
Классы каталогов ссылаются на базовый класс. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’ и ‘Права на выполнение действий над объектом’.
Типы каталогов созданы на основе перечисленных классов.
В этой библиотеке никакие значимые атрибуты классов и типов не указываются. Атрибуты задаются в других библиотеках. Для этого применяют подстановки.
Для наших целей уже имеются класс каталога ‘ШИФР АМОТРИЗАЦИОННЫХ ОТЧИСЛЕНИЙ’ и тип каталога ‘Шифр’.
Посмотрим как описаны атрибуты этих типов.
Подстановок выбранного класса в проекте нет, но в библиотеке ‘ОС, НМА и материалы’ имеется подстановка типа ‘Шифр’.
В подстановке указана форма для ввода шифров.
Необходимо проверить наличие других подстановок для рассматриваемых типа и класса и последующие действия выполнять с учетом изменения значений атрибутов в этих подстановках.
Форма каталога
В подстановке задана ссылка на форму ввода. Рассмотрим эту форму подробнее.
Форма находится в библиотеке ‘ОС, НМА и материалы’, раздел ‘Каталог’, раздел ‘Форма’.
В список полей формы добавляются поля из родителя формы. Форма-родитель имеет наименование ‘Шифр’ и расположена рядом, в той же библиотеке.
Также необходимо изучить родителя формы ‘Шифр’ – форму ‘КАТАЛОГ’. Форма ‘КАТАЛОГ’ находится в базовом разделе ‘Системная область’.
Из этой формы по правилу наследования в форму ‘Шифр амортизационных отчислений’ будут подключены сценарий и вид размещения окна.
Вернемся к списку полей формы. Если заданный список полей не соответствует требованиям задачи, то его следует изменить. Это можно сделать двумя способами:
- Можно создать подстановку данной формы и изменить значение атрибута ‘Список полей формы’.
- Можно создать новую форму и новую подстановку типа каталога. В подстановке потребуется указать ссылку на созданную форму.
Необходимо проверить наличие подстановок для рассмотренной формы. Если подстановки будут обнаружены, то последующие действия необходимо выполнять с учетом изменения значений атрибутов в этих подстановках.
Вид просмотра каталогов
Для решаемой задачи требуется отобразить список шифров с помощью вида просмотра.
Если существует подходящий вид просмотра, то он должен быть расположен в разделе ‘Виды просмотра’ на верхнем уровне библиотеки. Попробуем найти.
В библиотеке ОС, НМА и материалы’ , раздел ‘Виды просмотра’, папка ‘ОС и материалы’, папка ‘Каталоги’ находится вид просмотра ‘Шифры амортизационных отчислений’.
Данный вид просмотра отображает все каталоги класса ‘ШИФР АМОРТИЗАЦИОННЫХ ОТЧИСЛЕНИЙ’, что и требуется для нашей задачи.
Если список полей просмотра не соответствует требованиям, то можно либо создать новый вид просмотра, либо применить подстановку вида просмотра для изменения значения атрибута ‘Список полей просмотра’.
Необходимо проверить наличие подстановок у вида просмотра. Если никаких подстановок не обнаружено, то переходим к уточнению атрибутов. Если же подстановки имеются, то последующие действия необходимо выполнять с учетом изменения значений атрибутов в этих подстановках.
Сценарии для каталогов
В описании формы и вида просмотра встречались атрибуты со ссылками на различные сценарии. Уточним описания этих атрибутов.
Рассмотрим сценарий в виде просмотра. Все пункты описаны непосредственно в сценарии.
Перейдем к сценарию формы.
Поскольку ни в самой форме ‘Шифр амортизационных отчислений’, ни у родителя этой формы ‘Шифр’ сценарий не указан, то следует искать сценарий либо в подстановках форм, либо у более дальних родителей.
Подстановок данных форм в проекте нет, а вот у базовой формы ‘КАТАЛОГ’ сценарий имеется. Этот сценарий по правилу наследования и подключается в форму для ввода шифров.
В заключение, рассмотрим ситуацию, когда список пунктов сценария не соответствует нашим требованиям. В этом случае возможны различные действия. Если сценарий ссылается на другой сценарий, то можно применить подстановку сценария. Либо завести новую подстановку типа каталога, вида просмотра или формы, в которой указать новый сценарий.
При изменении сценария необходимо быть особо внимательным, поскольку следует изучить подстановки не только самого сценария и родителей сценария, но и тех проектных элементов, где этот сценарий применяется.
Отчеты по каталогам
Последний этап решения поставленной задачи состоит в описании отчетов по каталогам.
Отчеты по одному каталогу принято располагать в разделе ‘Отчеты’ внутри раздела ‘Каталог’. В раздел ‘Отчеты’ верхнего уровня библиотеки помещают отчеты по многим каталогам.
Документ
Документ - электронный эквивалент бумажного документа. Документы можно просматривать, изменять, анализировать, распечатывать, формировать на их основе различные отчеты. Для хранения документов применяется таблица ‘Документ’.
Внутри раздела ‘Документ’ можно создать следующие разделы:
- Параметры – содержит описания параметров, переменных и выражений.
- Классификация – содержит описание классов и типов документов.
- Формы – содержит описания форм для ввода документа.
- Выборки – содержит описания простых выборок, применяемых для отбора документов.
- Виды просмотра – содержит описания видов просмотра, работающих от контекста документа.
- Схемы копирования документов - содержит описания схем создания одного документа на основе другого. Схемы применяются при описании методов и процедур.
- Процедуры – в данном разделе описываются процедуры, которые обрабатывают одну запись документа.
- Сценарии – содержит описания сценариев, которые предполагается использовать в качестве родителей при создании других сценариев.
- Доступные параметры – не используется.
- Отчеты – содержит описания отчетов, обрабатывающих один документ.
Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).
Рассмотрим описание документов на примере.
Пример описания документа
Предположим требуется реализовать ввод документов для прихода и реализации товаров. Для решения этой задачи в проекте необходимо найти или создать:
- Параметры документов
- Классы и типы для документов
- Содержимое документов – классы и типы строк
- Формы ввода документов
- Вид просмотра документов
- Сценарии для форм, видов просмотра и контекстных меню
- Отчеты по документам
Рассмотрим возможный вариант действий автора проекта.
Прежде всего необходимо ознакомиться со списком параметров документа и найти те параметры, которые предполагается использовать. Результат этой работы пригодится при описании форм, видов просмотра и отчетов.
Рассматриваемый пример будет продолжен в главах ‘Строки’ и ‘Проводки'.
Параметры документа
Описание базовых параметров документа находится в базовом разделе ‘Системная область’.
Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
При выборе параметра необходимо обращать внимание на тип данных.
На этом этапе можно провести еще одно исследование.
В проекте создано множество функций и выражений, работающих от текущей записи документа. Такие функции и выражения располагаются в разделе ‘Параметры’ раздела ‘Документ’.
Некоторые из этих функций и выражений потребуются при описании формы, вида просмотра и отчетов.
Классификация документов
После ознакомления с возможными параметрами необходимо выбрать два типа документов. Первый тип понадобится для документов, которыми будет оформляться приход товаров. Второй тип будет использован для документов о реализации товаров.
Базовый класс документов описан в базовом разделе ‘Системная область’.
Для документов данного класса разрешены все действия с записью. Ширина параметра ‘Код’ записи равна 7 символов.
Подробнее о назначении разделов ‘Процедуры’ и ‘Методы’ написано в конце данной главы.
Значение атрибута ‘Не протоколировать при ручном редактировании’ не задано.
Атрибут ‘Не протоколировать при ручном редактировании’ применяется для отмены автоматического формирования сообщений в протокол при использовании обычных форм ввода документа. Если данный атрибут не указан, то при создании или изменении документа (посредством формы ввода) в протоколе появляется соответствующее сообщение. В данном атрибуте можно указать одно или оба действия, при которых сообщение создавать не следует. Действия задаются с помощью команд ‘Создать новую запись’ и ‘Изменить’. Например.
В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы документов.
Классы документа ссылаются на базовый класс ‘ДОКУМЕНТ’. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’, ‘Права на выполнение действий над объектом’, ‘Структура кода’ и ‘Не протоколировать при ручном редактировании’.
Для класса документа можно указать следующие параметры:
- Наследование – условие наследования от данного класса.
- Использование – условие доступа проектировщиков к классу.
- Использование (в режиме выполнения) – условие доступа пользователей к документам данного класса.
- Доступные параметры – не используется.
- Структура (Состав, Содержание) – содержит список классов и типов. Наследников документа данного класса можно создавать только таких типов, которые перечислены в указанном списке.
- Методы – содержит описания базовых алгоритмов обработки документа.
Можно указать следующие методы обработки:
-
- Акцепт. Предварительная проверка (до проведения расчетов) – действия, выполняемые на этапе проверки перед акцептом.
- Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок – действия, выполняемые на этапе перед расчетом проводок.
- Акцепт. Действия после всех расчетов и собственно акцепта – действия, выполняемые на последнем этапе акцепта.
- Пре-Деакцепт – действия, выполняемые на этапе перед деакцептом.
- Деакцепт – действия, выполняемые на этапе деакцепта.
- Пост-Деакцепт – действия, выполняемые на этапе после деакцепта
- Короткий акцепт – действия, выполняемые в режиме короткого акцепта.
- Короткий деакцепт – действия, выполняемые в режиме короткого деакцепта.
- Удаление – действия, выполняемые при удалении документа.
- Действия после изменения и сохранения объекта (в транзакции) – действия, выполняемые после сохранения документа.
Методы создаются программистами и системными администраторами проекта. Авторы проектов имеют возможность указать в методах необходимые им процедуры.
- Процедуры – содержит список процедур для методов.
- Структура кода – задает правило формирования значения параметра ‘Код’ записи документа.
- Код объекта БД – необязателен – задает условие, при котором формирование кода документа не производится.
- Форма ввода объекта – задает форму ввода для документов данного класса.
- Сценарий – для описания контекстного меню документа, вызываемого при нажатии правой кнопки мыши.
- Проводки – для описания правил формирования проводок в процедуре акцепта документа. Проводки указываются отдельно для каждого плана счетов.
- Удалять вместе с родителями – при установленном признаке документ данного класса будет удален в момент удаления родителя объекта. Другими словами, объект данного класса должен присутствовать в БД только вместе со своим родителем.
- Права на выполнение действий над объектом – определяет условия выполнения основных действий с записью документа.
-
- Создание – список условий, при выполнении которых разрешается создать новую запись документа.
- Изменение – список условий, при выполнении которых разрешается изменить запись документа.
- Удаление – список условий, при выполнении которых разрешается удалить запись документа.
- Акцепт – список условий, при выполнении которых разрешается запустить процедуру акцепта документа.
- Деакцепт – список условий, при выполнении которых разрешается запустить процедуру деакцепта документа.
- Режим обработки транзакций – для указания момента открытия транзакции в процедуре акцепта документа.
-
- Нормальный – единая транзакция для акцепта документа и акцепта строк документа.
- Минимальный – акцепт строк документа и акцепт записи документа выполняются в отдельных транзакциях.
Подробнее об этапах акцепта документа написано в конце главы.
- Возможные значения СУММЫ для проводок – для ограничения списка сумм при описании правил формирования проводок.
- Не протоколировать при ручном редактировании – для перечисления стандартных действий, выполнение которых не должно сопровождаться записью соответствующего сообщения в протокол.
Типы документа созданы на основе классов.
В этой библиотеке никакие значимые атрибуты классов и типов не указываются. Атрибуты задаются в других библиотеках. Для этого применяют подстановки.
В поисках нужных нам типов документов раскроем две папки ‘Приходные товарные документы’ и ‘Расходные товарные документы’.
Для наших целей подходят два типа документов: ‘Приход товаров’ и ‘Реализация за наличный расчет’.
Посмотрим на описание атрибутов у этих типов.
Для данного типа документа заданы форма, условие использования, структура документа, сценарий для контекстного меню и методы.
В подстановке указана форма, условие использования, структура документа, сценарий для контекстного меню, методы и правила формирования проводок по плану счетов ‘Суммы по Документам’.
В проекте имеются и другие подстановки рассматриваемых типов. В этих подстановках заданы правила формирования проводок по другим планам счетам.
Подробнее о настройке проводок написано в главе ‘Проводки’.
Необходимо всегда проверять наличие других подстановок, поскольку там могут быть изменены значения атрибутов.
Структура документа
В подстановках типов документов ‘Приход товаров’ и ‘Реализация за наличный расчет’ указан атрибут ‘Структура (Состав, Содержание)’. Этот атрибут задает возможные типы наследников документа (т.е. типы строк документа и типы документов, для которых данный документ будет являться родителем).
Для рассматриваемой задачи важно, что в списке имеется тип строки ‘Приход товаров от поставщика’. Это означает, что в документе можно будет создавать строки такого типа.
Ссылки на другие типы (строки и документов) для нашей задачи значения не имеют. Они означают, что в документе также можно заводить строки типа ‘Дополнительные расходы’ и формировать документы-наследники с типами ‘Реестр цен по приходному документу’ ‘Счет-фактуры за полученные товары/услуги’.
Отменить структуру можно двумя способами. Либо создать еще одну подстановку типа документа и не указывать перечисленные типы в атрибуте ‘Структура (Состав, Содержание)’. Либо можно запретить использование упомянутых в структуре типов с помощью подстановок этих типов.
Теперь посмотрим на второй тип документов.
Описание структуры содержит ссылку на тип строки, что нам и требуется.
Форма документа
В описаниях рассматриваемых типов имеются ссылки на формы ввода. Рассмотрим формы подробнее.
Форма, заданная в подстановке типа ‘Приход товаров’, находится в библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Форма’, папка ‘Приходные товарные документы’.
Описание атрибута ‘Список полей формы’ включает содержимое соответствующего атрибута родителя формы. Родителем данной формы является форма ‘ДОКУМЕНТ С СОДЕРЖИМЫМ (дата + время)’. Рассмотрим эту форму.
Список полей из этой формы по правилу наследования добавляются в список полей формы ‘Приходный документ’.
Для формы ‘Приходный документ’ указан атрибут ‘Просмотр содержимого документа’. Значение атрибута ссылается на вид просмотра строк ‘Строки приходного документа от поставщика’.
Этот вид просмотра будет вызван по команде ‘Просмотр содержимого’. Оформляется вызов команды в сценарии. Например, вот так.
Ввод строк необязательно организовывать с помощью атрибута ‘Просмотр содержимого документа’. Можно из сценария формы вызвать непосредственно вид просмотра строк. Например.
Для пункта сценария ‘Доп. расходы’ обязательно следует указать атрибут ‘Сохранить изменения перед вызовом’.
Наличие этого атрибута означает, что перед выполнением указанных действий вся введенная в форму информация будет записана в БД. В данном случае перед вызовом вида просмотра строк введенные в форму документа данные будут сохранены. Это позволит пользователю сразу перейти к вводу строк после заполнения полей формы. В противном случае, сначала необходимо сохранить введенную в форму информацию (по кнопке ‘Сохранить’), затем повторно вызвать форму и выбрать пункт сценария для ввода строк.
Применение атрибута ‘Вид просмотра зависимых записей’ удобно тем, что для описания нескольких форм документов используется один сценарий. Такое возможно, поскольку в сценарии не конкретизируется вид просмотра строк.
Если список полей формы не соответствует требованиям задачи, то его следует изменить. Это можно сделать двумя способами:
- Можно создать подстановку данной формы и изменить значение атрибута ‘Список полей формы’.
- Можно создать новую форму и новую подстановку типа документа. В подстановке потребуется указать ссылку на созданную форму.
Теперь перейдем к форме для ввода документов типа ‘Реализация за наличный расчет’. Форма находится в библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Форма’, папка ‘Расходные товарные документы’.
Поскольку список полей формы содержит более не используемый параметр НСП, то придется создать новую подстановку формы с подходящим списком полей.
Для отображения и ввода строк документа указан вид просмотра ‘Строки расходного документа’.
Подробнее про упомянутые виды просмотра строк ‘Строки приходного документа от поставщика’ и ‘Строки расходного документа’ написано в следующей главе ‘Строки’.
Необходимо проверить наличие подстановок для изученных форм и последующие действия выполнять с учетом изменения значений атрибутов в этих подстановках.
Вид просмотра документов
Для решаемой задачи требуется отобразить два списка: список документов прихода и список документов реализации.
Такие виды просмотра могут быть расположены в разделе ‘Виды просмотра’ на верхнем уровне библиотеки. Попробуем найти подходящие.
Вид просмотра ‘Приходные товарные документы’
В библиотеке ‘! Базовый набор’, раздел ‘Виды просмотра’, папка ‘! Базовый набор’, папка ‘Документ’, папка ‘Приходные документы’ находится вид просмотра ‘Приходные товарные документы’.
Перед изучением назначенных для этого вида просмотра атрибутов необходимо проверить наличие подстановок у вида просмотра. Единственная подстановка находится в библиотеке ‘# Товародвижение‘.
В подстановке указано, что еще три поля добавляются в список полей вида просмотра.
Поскольку больше подстановок не имеется, то определяем значения тех атрибутов, которые описаны в самом виде просмотра.
Для вида просмотра указан признак ‘Сохранять текущие значения фильтров в профиле’. Это позволит при повторном вызове вида просмотра работать с ранее установленными ограничениями на отображаемые данные.
Атрибут ‘Параметры, обязательные при задании ограничений’ содержит ссылку на параметр документа ‘Подразделение’. Это означает, что в виде просмотра будут отображаться документы только по одному подразделению. Значение выбранного подразделения записывается в глобальной переменной ‘Товарное подразделение (глоб. перем.)’. Для выбора подразделения применяется специальный пункт на панели инструментов. Вот так выглядит описание этого пункта сценария.
Атрибут ‘Выбор типов создаваемых объектов’ определяет, что при работе с видом просмотра можно создавать новые документы класса ‘ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.
Далее следует изучить описания атрибутов у родителей рассматриваемого вида просмотра. Описание родителя – вид просмотра ‘Все приходные товарные документы’ – находится в дереве проекта чуть выше.
Сразу ищем подстановки. Единственная подстановка имеется в библиотеке ‘# Товародвижение‘.
Из подстановки по правилу наследования добавляется описание атрибута ‘Список горячих клавиш’. По клавише F4 будет вызываться вид просмотра строк документа ‘Строки приходного документа от поставщика’. Этот же вид просмотра строк вызывается из формы документа, что было рассмотрено ранее.
Описание атрибута ‘Список полей просмотра’ нас не интересует, поскольку в описании вида просмотра ‘Приходные товарные документы’ имеется аналогичный атрибут, и там не применен атрибут ‘Наследуемые поля, колонки’. Т.е. список полей явно задан и не наследуется от родителя.
Атрибут ‘Выборка’ определяет класс отображаемых документов. Изучим выборку, на которую ссылается атрибут.
В виде просмотра будут отображены документы класса ‘ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.
Атрибут ‘Выбор типов создаваемых объектов’ определяет, что при работе с видом просмотра можно создавать новые документы класса ‘ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.
Поскольку для вида просмотра ‘Приходные товарные документы’ сценарий не был указан, то описание сценария наследуется от его родителя, т.е. из вида просмотра ‘Все приходные товарные документы’.
Атрибут ‘Вид просмотра зависимых записей’ задает вид просмотра для отображения наследников документа. При нажатии клавиши ‘Серый плюс’ будет высвечен вид просмотра ‘Документы по приходу’.
Изучив атрибуты непосредственного родителя вида просмотра можно исследовать и более дальних родителей: виды просмотра ‘ДОКУМЕНТЫ ПО ДАТЕ’, ‘ПРОСМОТР ДОКУМЕНТОВ’, ‘ДОКУМЕНТЫ’. Но, скорее всего, описание всех существенных характеристик рассматриваемого вида просмотра мы уже нашли.
Вид просмотра ‘Расходные товарные документы’
В библиотеке ‘! Базовый набор’, раздел ‘Виды просмотра’, папка ‘! Базовый набор’, папка ‘Документ’, папка ‘Приходные документы’ находится вид просмотра ‘Расходные товарные документы’.
Отыщем подстановку этого вида просмотра, а также описание и подстановку родителя.
В результате изучения найденных описаний можно сделать следующие выводы об атрибутах вида просмотра:
- Список полей задан в самом виде просмотра. В этот список добавляются два поля, указанные в подстановке.
- Сценарий рассмотрим позже.
- Атрибут ‘Параметры, обязательные при задании ограничений’ содержит ссылку на параметр документа ‘Подразделение’. Это означает, что в виде просмотра будут отображаться документы только по одному подразделению. Значение выбранного подразделения записывается в глобальной переменной ‘Товарное подразделение (глоб. перем.)’.
- Атрибут ‘Выборка’ определяет класс отображаемых документов. В виде просмотра будут отображены документы класса ‘РАСХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.
- Атрибут ‘Выбор типов создаваемых объектов’ определяет, что при работе с видом просмотра можно создавать новые документы класса ‘РАСХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.
- Атрибут ‘Вид просмотра зависимых записей’ задает вид просмотра для отображения наследников документа. При нажатии клавиши ‘Серый плюс’ будет высвечен вид просмотра ‘Все связанные документы’.
Следует отметить, что если какие-либо значения атрибутов не соответствуют нашим требованиям, то можно либо создать новый вид просмотра, либо применить подстановку вида просмотра для изменения значений атрибутов.
Сценарии для документов
В описании типов документов, форм и видов просмотра встречались атрибуты со ссылками на различные сценарии. Уточним значения этих атрибутов.
Контекстное меню
Сначала разберем сценарии у типов документов. Этот сценарий задает контекстное меню. Контекстное меню вызывается из вида просмотра при нажатии правой кнопки мыши. Выбранные в меню действия выполняются для текущей записи вида просмотра.
Еще раз рассмотрим подстановку типа документа ‘Приход товаров’.
В подстановке указано, что пункты сценария наследуются из родителя сценария – из сценария ‘Локальное меню: Приход товара’.
В список вместо атрибута ‘Наследуемые пункты’ следует добавить пункты из сценария ‘Стандартное меню действий для документа’.
Теперь изучим подстановку типа документа ‘Реализация за наличный расчет’.
Поскольку у сценария не указан родитель, то наследуемые пункты следует искать в описании типа документа. Непосредственно для типа документа сценарий не задан. Продолжаем поиски. Вскоре сценарий обнаруживается у одного из дальних родителей типа документа.
Добавляем пункты из уже рассмотренного сценария ‘Стандартное меню действий для документа’.
В итоге, в сценарии для типа документа ‘Реализация за наличный расчет’ атрибут ‘Наследуемые пункты’ заменяется на три пункта: ‘Акцепт’, ‘Деакцепт’ и ‘Копировать документ’.
Сценарии для видов просмотра
Теперь разберем указание сценария в видах просмотра документов. Сценарий в виде просмотра определяет панель инструментов.
Поскольку для вида просмотра ‘Приходные товарные документы’ сценарий не был указан, то описание сценария наследуется от его родителя, т.е. из вида просмотра ‘Все приходные товарные документы’.
Атрибут ‘Наследуемые пункты’ заменяется на содержимое сценария ‘Стандартные действия над объектом’, поскольку именно на этот сценарий ссылается сценарий из вида просмотра.
Рассмотрим сценарий из вида просмотра ‘Расходные товарные документы’.
Наследуемые пункты следует искать у родителя данного сценария.
Как и в предыдущем случае, атрибут ‘Наследуемые пункты’ заменяется на содержимое сценария ‘Стандартные действия над объектом’.
Сценарии для форм
Перейдем к сценариям формы. Сценарий в форме задает панель инструментов формы.
Ни одна из рассматриваемых форм (‘Приходный документ’ и ‘Реализация (продажа) покупателям (с НСП)’) не содержит описание сценария. Последовательно просматриваем родителей форм. В описании одного из родителей (оказалось, что найденная форма является дальним родителем для обеих форм) сценарий имеется.
Этот сценарий будет применен в обеих формах.
В заключение, рассмотрим ситуацию, когда список пунктов сценария не соответствует нашим требованиям. В этом случае возможны различные действия. Если сценарий ссылается на другой сценарий, то можно применить подстановку сценария. Либо завести новую подстановку типа документа, вида просмотра или формы, в которой указать новый сценарий.
При изменении сценария необходимо быть особо внимательным, поскольку следует изучить подстановки не только самого сценария и родителей сценария, но и тех проектных элементов, где этот сценарий применяется.
Отчеты по документам
Последний этап решения поставленной задачи состоит в описании отчетов по документам.
Отчеты по одному документу располагают в разделе ‘Отчеты’ внутри раздела ‘Документ’.
В раздел ‘Отчеты’ верхнего уровня библиотеки помещают отчеты по многим документам.
Этапы выполнения акцепта документа
Акцепт и деакцепт – эти два термина были введены для отслеживания состояния документа.
Любой документ может быть либо акцептован, либо неакцептован. Неакцептованный документ является, по сути, заготовкой документа. И с точки зрения программы этот документ еще не готов. Такие документы доступны для редактирования и удаления.
Акцептованный документ утверждается пользователем путем выполнения специального действия – установкой признака акцепта. В момент установки акцепта запускается процедура формирования проводок по документу.
Для акцептованных документов возможно единственное действие – снять акцепт (или деакцепт). Смысл деакцепта – вернуть документ и базу данных в состояние, предшествующее акцепту. В процедуре деакцепта удаляются проводки по документу.
Акцепт бывает автоматический и отложенный. Автоматический акцепт выполняется сразу же после того, как пользователь завершает ввод документа. Документы с отложенным акцептом после выхода из редактирования остаются неакцептованными. Их нужно акцептовать вручную, вызывая команду акцепта из сценария.
Для того, чтобы внести изменения в акцептованный документ, нужно сначала снять с него акцепт, отредактировать документ, после чего заново его акцептовать. Однако следует помнить, что даже простое снятие и установка акцепта документа, без его редактирования, могут привести к тому, что изменяется информация в базе данных. Это происходит из-за того, что в процедуре акцепта могут быть выполнены некоторые необратимые изменения данных, которые невозможно восстановить при деакцепте.
Обычно, при описании полей вида просмотра заводится специальное поле, в котором отображается состояние документа. Если акцепт документа прошел успешно, то в поле появится знак акцепта - '*'. При этом сам документ и его строки становятся недоступными для редактирования и удаления. При попытке повторно акцептовать уже акцептованный документ никаких действий не выполняется и никаких сообщений не выдается.
Для удобства настройки процедуры акцепта и деакцепта разбиваются на этапы. Автор проекта имеет возможность указать действия, которые требуется выполнить на каждом этапе. Для того чтобы выделить такие действия в проекте применяется понятие метода.
Поскольку процедуры акцепта и деакцепта уникальны для каждого класса документов, то проектировщики указывают необходимые методы при описании классов документов.
С акцептом тесно связано понятие транзакции.
Транзакция - процедура внесения нескольких связанных изменений в БД. Применяется для поддержки целостности БД. Основной принцип обработки транзакций - транзакция должна быть выполнена либо целиком, либо не выполнена вовсе.
Когда говорят, что транзакция открывается, то имеют в виду, что дальнейшие действия будут выполняться только внутри транзакции. Закрыть транзакцию – попытаться выполнить все перечисленные для транзакции действия. Точнее, сохранить в БД результат выполнения действий внутри транзакции. Если транзакция завершится успешно, то все перечисленные в ней действия будут выполнены. Если транзакция не завершится, то ни одно из действий внутри транзакции выполнено не будет.
Для транзакции акцепта документа указывается режим ее выполнения. При нормальном режиме акцепт записи документа и акцепт строк выполняются в единой транзакции. В минимальном режиме транзакция для акцепта записи документа открывается после обработки (акцепта) строк. Тем самым, акцепты каждой строки и акцепт записи документа выполняются в раздельных транзакциях. Минимальный режим применяется для избежания продолжительных блокировок во время акцепта документов, содержащих очень много строк.
Перейдем к рассмотрению этапов акцепта и деакцепта.
Этапы выполнения акцепта документа и связанные с ними методы
- Проверка допустимости акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’, команда ‘Акцепт’.
- Проверка допустимости акцепта по условиям, заданным в методе ‘Акцепт. Предварительная проверка (до проведения расчетов)’.
- Проверка того, что указанный документ неакцептован. Если документ уже акцептован, то процедура акцепта прерывается.
- Открытие транзакции для нормального режима обработки транзакций.
- Обработка строк. Последовательно перебираются строки документа. Каждая строка акцептуется.
- Расчет суммовых проводок. Последовательно перебираются строки документа и рассчитываются проводки, для которых установлен режим создания ‘Суммовые (для строк документа)’
- Открытие транзакции для минимального режима обработки транзакций.
- Создание проводок, рассчитанных на 6 этапе. Проводки сохраняются в базе данных.
- Выполнение действий, указанных в методе ‘Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок’.
- Расчет и сохранение в базе данных остальных проводок документа.
- Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
- Установка состояния ‘акцептован’ для документа.
- Запись в протокол сообщения о выполненном акцепте документа.
- Закрытие транзакции как для нормального , так и для минимального режимов.
- Выполнение действий, указанных в методе ‘Акцепт.Действия после всех расчетов и собственно акцепта’.
В нормальном режиме обработки транзакций акцепт строк документа, расчет проводок документа и вызов методов акцепта самого документа происходит в единой транзакции. В случае минимального режима каждая из строк акцептуется в отдельной (самостоятельной) транзакции. И возможна следующая ситуация. Если акцепт какой-либо из строк завершится с ошибкой, то акцепт как оставшихся строк, так и самого документа выполнен не будет. В результате некоторые строки документа будут акцептованы (те строки, которые были обработаны до возникновения ошибки), а остальные строки останутся не акцептованы. Поэтому минимальный режим следует использовать аккуратно и иметь в виду потенциальную возможность возникновения вышеописанной ситуации.
Этапы выполнения короткого акцепта документа и связанные с ними методы
- Проверка допустимости акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’, команда ‘Акцепт’.
- Проверка допустимости акцепта по условиям, заданным в методе ‘Акцепт. Предварительная проверка (до проведения расчетов)’.
- Проверка того, что указанный документ неакцептован. Если документ уже акцептован, то процедура акцепта прерывается.
- Открытие транзакции для нормального режима обработки транзакций.
- Расчет суммовых проводок. Последовательно перебираются строки документа и рассчитываются проводки, для которых установлен режим создания ‘Суммовые (для строк документа)’
- Открытие транзакции для минимального режима обработки транзакций.
- Создание проводок, рассчитанных на 5 этапе. Проводки сохраняются в базе данных.
- Выполнение действий, указанных в методе ‘Короткий акцепт’.
- Расчет и сохранение в базе данных остальных проводок документа.
- Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
- Установка состояния ‘акцептован’ для документа.
- Запись в протокол сообщения о выполненном акцепте документа.
- Закрытие транзакции как для нормального , так и для минимального режимов.
Отличия этапов выполнения короткого акцепта от обычного акцепта следующие :
- Не вызывается обработка строк документа в предположении, что все строки уже акцептованы (либо в результате автоакцепта строк, либо после короткого деакцепта документа).
- На 7 этапе выполняются действия, указанные в методе ‘Короткий акцепт’, а не в методе ‘Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок’.
- Не вызывается этап для выполнения действий, указанных в методе ‘Акцепт. Действия после всех расчетов и собственно акцепта’
Очевидно, что короткий акцепт выполняется значительно быстрее обычного акцепта. Однако при использовании короткого акцепта необходима полная уверенность, что все строки документа акцептованы. Если документ будет содержать хотя бы одну не акцептованную строку, то в результате короткого акцепта такого документа будет нарушена логическая целостность данных. Добавление в короткий акцепт процедуры проверки строк бессмысленно, так как при этом в значительной мере будет потеряно преимущество короткого акцепта – малое время выполнения.
Этапы выполнения деакцепта документа и связанные с ними методы
- Проверка допустимости акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’, команда ‘Деакцепт’.
- Проверка того, что указанный документ акцептован. Если документ уже деакцептован, то процедура деакцепта прерывается.
- Выполнение действий, указанных в методе ‘Пре-деакцепт’. Если действия завершаются с ошибкой, то процедура деакцепта прерывается.
- Открытие транзакции.
- Выполнение действий, указанных в методе ‘Деакцепт’.
- Закрытие транзакции.
- Выполнение действий, указанных в методе ‘Пост-деакцепт’.
Этапы выполнения короткого деакцепта документа и связанные с ними методы
- Проверка допустимости акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’, команда ‘Деакцепт’.
- Проверка того, что указанный документ акцептован. Если документ уже деакцептован, то процедура деакцепта прерывается.
- Открытие транзакции.
- Выполнение действий, указанных в методе ‘Короткий деакцепт’.
- Закрытие транзакции.
Отличия этапов выполнения короткого деакцепта от обычного деакцепта заключаются в том, что не выполняются действия, указанные в методах ‘Пре-деакцепт’ и ‘Пост-деакцепт’.
Процедуры для акцепта и деакцепта документа
При описании методов используются процедуры-методы из раздела ‘Процедуры’ верхнего уровня библиотеки или из раздела ‘Процедуры’ внутри раздела ‘Документ’.
Для обсуждаемого примера описание методов выглядит следующим образом.
Строка
Строка – часть документа. Документ может содержать список данных одного вида. Например, товарная накладная содержит список товаров с ценами и количеством. Для хранения элемента списка применяется строка документа. Строки записываются в таблицу ‘Строка’.
Внутри раздела ‘Строка’ можно создать следующие разделы:
- Параметры – содержит описания параметров, переменных и выражений.
- Классификация – содержит описание классов и типов строк.
- Формы – содержит описания форм для ввода строк.
- Выборки – содержит описания простых выборок, применяемых для отбора строк.
- Виды просмотра – содержит описания видов просмотра, работающих от контекста строки.
- Схемы копирования строк - содержит описания схем создания одной строки на основе другой. Схемы применяются при описании методов и процедур.
- Процедуры – в данном разделе описываются процедуры, которые обрабатывают одну строку документа.
- Сценарии – содержит описания сценариев, которые предполагается использовать в качестве родителей при создании других сценариев.
- Доступные параметры – не используется.
- Отчеты – содержит описания отчетов, обрабатывающих одну строку.
Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).
Рассмотрим описание строк на примере.
Пример описания строк
Продолжаем решение задачи из предыдущей главы. Напомню, что проектировщику требуется реализовать ввод документов для прихода и реализации товаров. Для решения этой задачи уже создано все необходимое для обработки записей о документах. Теперь следует обеспечить ввод содержимого документов, т.е. описать строки. Причем, будем считать, что необходимо обеспечить учет товаров по партиям.
Как обычно, перечислим, что требуется найти или создать в проекте.
- Параметры строк
- Классы и типы для строк
- Классы и типы для партионных строк
- Формы ввода строк
- Вид просмотра строк
- Сценарии для форм, видов просмотра и контекстных меню
Отдельно отчеты по строкам не создают, поскольку строки являются содержимым документов и печатаются вместе с документами.
Рассмотрим возможный вариант действий автора проекта.
Прежде всего необходимо ознакомиться со списком параметров строк и найти те параметры, которые предполагается использовать. Результат этой работы пригодится при описании форм, видов просмотра и отчетов.
Обсуждение примера было начато в главе ‘Документ’ и будет продолжено в главе ‘Проводка'.
Параметры строки
Описание базовых параметров строки находится в базовом разделе ‘Системная область’.
Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].
При выборе параметра необходимо обращать внимание на тип данных.
На этом этапе можно провести еще одно исследование.
В проекте создано множество функций и выражений, работающих от текущей записи строки. Такие функции и выражения располагаются в разделе ‘Параметры’ раздела ‘Строка’.
Некоторые из этих функций и выражений потребуются при описании формы, вида просмотра и отчетов.
Классификация строк
Базовый класс строки описан в базовом разделе ‘Системная область’.
В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы строк.
Классы строк ссылаются на базовый класс. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’ и ‘Права на выполнение действий над объектом’.
Для класса строки можно указать следующие атрибуты.
- Наследование – условие наследования от данного класса.
- HFle definition – используется программистами.
- Доступные параметры – не используется.
- Структура (Состав, Содержание) – содержит список классов и типов. Наследников строк данного класса можно создавать только таких типов, которые перечислены в указанном списке.
- Методы – содержит описания базовых алгоритмов обработки строк.
Можно указать следующие методы обработки:
-
-
- Акцепт. Предварительная проверка (до проведения расчетов) – действия, выполняемые на этапе проверки перед акцептом.
- Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок – действия, выполняемые на этапе перед расчетом проводок.
- Акцепт. Действия после всех расчетов и собственно акцепта – действия, выполняемые на последнем этапе акцепта.
- Пре-Деакцепт – действия, выполняемые на этапе перед деакцептом.
- Деакцепт – действия, выполняемые на этапе деакцепта.
- Пост-Деакцепт – действия, выполняемые на этапе после деакцепта
- Короткий акцепт – действия, выполняемые в режиме короткого акцепта.
- Короткий деакцепт – действия, выполняемые в режиме короткого деакцепта.
- Удаление – действия, выполняемые при удалении строки.
- Действия после изменения и сохранения объекта (в транзакции) – действия, выполняемые после сохранения строки.
-
Методы создаются программистами и системными администраторами проекта. Авторы проектов имеют возможность указать в методах необходимые им процедуры.
- Процедуры – содержит список процедур для методов.
- Форма ввода объекта – задает форму ввода для строк данного класса.
- Сценарий – для описания контекстного меню строки, вызываемого при нажатии правой кнопки мыши.
- Проводки – для описания правил формирования проводок в процедуре акцепта строки. Проводки указываются отдельно для каждого плана счетов.
- Удалять вместе с родителями – при установленном признаке строка данного класса будет удалена в момент удаления родителя объекта. Другими словами, строка данного класса должна присутствовать в БД только вместе со своим родителем.
- Права на выполнение действий над объектом – определяет условия выполнения основных действий с записью строки.
-
-
- Создание – список условий, при выполнении которых разрешается создать новую запись строки.
- Изменение – список условий, при выполнении которых разрешается изменить запись строки.
- Удаление – список условий, при выполнении которых разрешается удалить запись строки.
- Акцепт – не используется.
- Деакцепт – не используется.
-
Типы строк созданы на основе классов.
В этой библиотеке никакие значимые атрибуты классов и типов не указываются. Атрибуты задаются в других библиотеках. Для этого применяют подстановки.
В предыдущей главе при описании документов были выбраны типы строк для рассматриваемого примера. Для документов типа ‘Приход товаров’ был выбран тип строки ‘Приход товаров от поставщика’, а для документов типа ‘Реализация за наличный расчет’ – тип строки ‘Реализация (продажа) товара через кассу’.
Посмотрим на описание атрибутов у этих типов.
Для данного типа строки заданы форма, методы, сценарий и правила формирования проводок по двум планам счетов.
В подстановке указана форма, методы, сценарий для контекстного меню и правила формирования проводок по двум планам счетов.
Подробнее о настройке проводок написано в главе ‘Проводки’.
Необходимо всегда проверять наличие других подстановок, поскольку там могут быть изменены значения атрибутов.
На этом выбор типов не заканчивается. Поскольку предполагается партионный учет, то необходимо выбрать типы для создания партионных строк документа.
Учет по партиям
Учет товаров по партиям означает полную идентификацию каждой поставки товаров. При оформлении очередной поставки создается новый партионный товар, в котором записываются характеристики поставки. В дальнейшем учитываются все возможные перемещения товаров данной партии, в том числе реализация. Такой подход позволяет в любое время получить информацию о состоянии дел с товарами из конкретной поставки: местонахождение товаров, количество и цены проданных товаров, прибыль от реализации товаров и пр.
На уровне строк документа партионный учет реализуется следующим образом.
- При оформлении документа прихода для каждой введенной строки документа создается партионная строка, в которую записывается идентификатор и характеристики созданной партии.
- При оформлении документа реализации для каждой введенной строки документа создаются одна или несколько партионных строк, в которые заносятся идентификаторы подобранных для реализации партий. Подбор партий может проводиться по различным алгоритмам. Наиболее часто используемый алгоритм – метод FIFO – означает, что чем раньше партия поступила, тем раньше ее надо реализовать.
Строка называется партионной, поскольку в нее записывается ссылка на партию товара.
Партионные строки создаются автоматически в процедурах акцепта обычных строк документа, и ссылки на них имеются только в методах.
Для типов строк указаны формы, признак удаления строки при удалении родителя и правила формирования проводок по двум планам счетов.
Форма строки
Для ввода четырех выбранных типов строк необходимо описать формы ввода. Рассмотрим подробнее те формы, которые заданы в описаниях типов.
Все формы находятся в библиотеке ‘# Товародвижение’, раздел ‘Строка’, раздел ‘Форма’.
Для форм указан только атрибут ‘Список полей формы’. Поскольку подстановки перечисленных форм в проекте не заданы, то описания других атрибутов следует искать у форм-родителей.
От родителей будут наследованы значения атрибута ‘Сценарий’ и признак ‘Добавление нескольких объектов в цикле’.
Если список полей формы не соответствует требованиям задачи, то его следует изменить. Это можно сделать двумя способами:
- Можно создать подстановку данной формы и изменить значение атрибута ‘Список полей формы’.
- Можно создать новую форму и новую подстановку типа строки. В подстановке потребуется указать ссылку на созданную форму.
Вид просмотра строк
Для решаемой задачи требуется отобразить четыре списка строк документов.
Такие виды просмотра могут быть расположены в разделе ‘Виды просмотра’ раздела ‘Документы’.
Ранее, при описании формы документа, упоминались виды просмотра строк ‘Строки приходного документа от поставщика’ и ‘Строки расходного документа’. Рассмотрим эти виды просмотра подробнее
Вид просмотра ‘Строки приходного документа от поставщика’
В библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Виды просмотра’ находится вид просмотра ‘Строки приходного документа от поставщика’.
Подстановок данного вида просмотра в проекте не имеется. Определяем значения атрибутов.
- Вид просмотра отображает строки типа ‘Приход товара от поставщика’.
- При работе с видом просмотра разрешено создавать строки типа ‘Приход товара от поставщика’.
- Для просмотра наследников строки (т.е. партионных строк) применяется вид просмотра ‘Строки партионного распределения (с закупочной ценой)’.
- В указанный список полей вида просмотра добавляются поля из родителя вида просмотра.
- Описание сценария разберем позже.
Родитель данного вида просмотра содержит описание итогов.
Указан расчет пяти величин по строкам документа: общее число строк, общее количество товара, суммы по двум ценам, сумма НДС.
Вид просмотра ‘Строки расходного документа’’
Данный вид просмотра находится в библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Виды просмотра’.
Изучим описание самого вида просмотра и описание родителей. Если бы существовали подстановки у этих видов просмотра, то необходимо было бы учесть изменение значений атрибутов в подстановках.
Результат исследования показывает наличие следующих атрибутов у рассматриваемого вида просмотра:
- В указанный список полей вида просмотра добавляются поля из дальнего родителя вида просмотра (вид просмотра ‘Строки товарного документа’).
- Для просмотра партионных строк применяется вид просмотра ‘Строки партионного распределения’.
- Вид просмотра отображает строки любых типов, не имеющие родителей. Т.е. партионные строки отображены не будут.
- Указан расчет трех итоговых величин.
- Описание сценария разберем позже.
Теперь изучим виды просмотра партионных строк.
Вид просмотра ‘Строки партионного распределения (с закупочной ценой)’
Данный вид просмотра вызывается из вида просмотра ‘Строки приходного документа от поставщика’ и применяется для просмотра сформированных партионных строк.
Вид просмотра отображает все строки, являющиеся наследниками той строки, относительно которой вызван вид просмотра.
Для вида просмотра указан сценарий, список полей просмотра и список горячих клавиш.
От родителя вид просмотра наследует описание двух итоговых величин.
Вид просмотра ‘Строки партионного распределения’
Данный вид просмотра вызывается из вида просмотра ‘Строки расходного документа’ и применяется для просмотра сформированных партионных строк.
Так же как и в предыдущем случае, вид просмотра отображает все строки, являющиеся наследниками той строки, относительно которой вызван вид просмотра. Для вида просмотра указан сценарий, список полей просмотра и список горячих клавиш. От родителя вид просмотра наследует описание двух итоговых величин.
Следует отметить, что если какие-либо значения атрибутов не соответствуют нашим требованиям, то можно либо создать новый вид просмотра, либо применить подстановку вида просмотра для изменения значений атрибутов.
Сценарии для строк
В описании типов строк, форм и видов просмотра встречались атрибуты со ссылками на различные сценарии. Рассмотрим значения этих атрибутов.
Контекстное меню
Для партионных типов строк сценарии обычно не указываются, поскольку в этом нет необходимости.
Для типов строк ‘Приход товара от поставщика’ и ‘Реализация (продажа) товара через кассу’ сценарии указаны в подстановках этих типов.
Наследуемые пункты добавляются из описания подстановки класса строки.
Сценарий для типа строки ‘Реализация (продажа) товара через кассу’ содержит всего один пункт.
Сценарии для видов просмотра
Теперь разберем указание сценария в видах просмотра строк. Сценарий в виде просмотре определяет панель инструментов.
Первый вид просмотра, который нас интересует, - это ‘Строки приходного документа от поставщика’.
Наследуемые пункты следует искать у родителей данного сценария. Поскольку для вида просмотра ‘Строки товарного документа (Итоги по закупочной цене)’ сценарий не указан, то продолжаем поиск у следующего родителя.
Сценарий имеется у вида просмотра ‘Строки товарного документа’.
Переходим ко второму виду просмотра - ‘Строки расходного документа’.
Для этого вида просмотра сценарий не задан, поэтому по правилу наследования будет применен сценарий из того вида просмотра – родителя, у которого сценарий имеется.
Таким видом просмотра является ‘Строки товарного документа’.
Теперь рассмотрим виды просмотра партионных строк. Здесь все просто – имеются сценарии с полным описанием.
Сценарии для форм
Перейдем к сценариям формы. Сценарий в форме задает панель инструментов формы.
Ни одна из рассматриваемых форм (‘Приход от поставщика’, ‘Приход от поставщика (партия)’, ‘Расход (Реализация) через кассу’, ‘Расход (Реализация) (партия)’) не содержит описание сценария. Последовательно просматриваем родителей форм. В описании одного из родителей (оказалось, что найденная форма является дальним родителем для всех форм) сценарий имеется.
Этот сценарий будет применен во всех формах.
В заключение, рассмотрим ситуацию, когда список пунктов сценария не соответствует нашим требованиям. В этом случае возможны различные действия. Если сценарий ссылается на другой сценарий, то можно применить подстановку сценария. Либо завести новую подстановку типа строки, вида просмотра или формы, в которой указать новый сценарий.
При изменении сценария необходимо быть особо внимательным, поскольку следует изучить подстановки не только самого сценария и родителей сценария, но и тех проектных элементов, где этот сценарий применяется.
Этапы выполнения акцепта строки
В продолжении темы, начатой в предыдущей главе ‘Документ’, необходимо привести алгоритмы выполнения акцепта строки.
Акцепт строки является составной частью акцепта документа и приводит строку в акцептованное состояние.
Этапы выполнения акцепта строки и связанные с ними методы
- Проверка допустимости акцепта по условиям, заданным в методе ‘Акцепт. Предварительная проверка (до проведения расчетов)’. Если строка акцептуется внутри акцепта документа, то данный этап выполняется одновременно для всех строк.
- Проверка того, что указанная строка не акцептована. Если строка уже акцептована, то процедура акцепта прерывается.
- Открытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
- Выполнение действий, указанных в методе ‘Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок’.
- Расчет проводок.
- Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
- Закрытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
- Выполнение действий, указанных в методе ‘Акцепт.Действия после всех расчетов и собственно акцепта’. Если строка акцептуется внутри акцепта документа, то данный этап выполняется одновременно для всех строк.
При акцепте строки не проверяется допустимость акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’. Отсутствие проверки вызвано требованием уменьшить время выполнения акцепта.
Для изменения состояния строки (‘акцептована’) необходимо в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’ указать вызов процедуры ‘МЕТОД. Стандартный (базовый) акцепт строки’.
Этапы выполнения короткого акцепта строки и связанные с ними методы
- Проверка того, что указанная строка не акцептована. Если строка уже акцептована, то процедура акцепта прерывается.
- Открытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
- Выполнение действий, указанных в методе ‘Короткий Акцепт’.
- Расчет проводок.
- Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
- Закрытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
Этапы выполнения деакцепта строки и связанные с ними методы
- Проверка того, что указанная строка акцептована. Если строка уже деакцептована, то процедура деакцепта прерывается.
- Выполнение действий, указанных в методе ‘Пре-деакцепт’. Если действия завершаются с ошибкой, то процедура деакцепта прерывается. Если строка деакцептуется внутри деакцепта документа, то данный этап выполняется одновременно для всех строк.
- Открытие транзакции.
- Выполнение действий, указанных в методе ‘Деакцепт’.
- Закрытие транзакции.
- Выполнение действий, указанных в методе ‘Пост-деакцепт’. Если строка деакцептуется внутри деакцепта документа, то данный этап выполняется одновременно для всех строк.
Этапы выполнения короткого деакцепта строки и связанные с ними методы
- Проверка того, что указанная строка акцептована. Если строка уже деакцептована, то процедура деакцепта прерывается.
- Открытие транзакции.
- Выполнение действий, указанных в методе ‘Короткий Деакцепт’.
- Закрытие транзакции.
Процедуры для акцепта и деакцепта строк
При описании методов используются процедуры-методы из раздела ‘Процедуры’ верхнего уровня библиотеки или из раздела ‘Процедуры’ внутри раздела ‘Строка’.
Для обсуждаемого примера описание методов выглядит следующим образом.
Проводка
Проводка - бухгалтерское представление информации о движении учетных средств. Для хранения проводок применяется таблица ‘Проводка’.
Внутри раздела ‘Проводка’ можно создать только раздел Классификация, в котором хранятся описания классов и типов проводок.
Описание всех параметров проводки находится в базовом разделе ‘Системная область’.
При создании проводки следующие параметры должны быть обязательно заполнены:
- Проводка – UID записи проводки. Заполняется автоматически в момент создания записи.
- План счетов – ссылка на план счетов, для которого сформирована проводка. При описании проводки можно использовать счета только из одного плана счетов. Заполняется автоматически в момент создания записи.
- Тип – тип проводки. Заполняется автоматически в момент создания записи.
- ЦФО – центр финансовой ответственности. Определяет основной уровень группировки проводок.
- Дата – дата создания проводки.
- Счет дебет – ссылка на счет.
- Счет кредит – ссылка на счет.
- Валюта – валюта или размерность суммы проводки.
- Сумма – сумма проводки.
Если для какого-либо из перечисленных параметров не будет задано правило его заполнения, то проводка создана не будет. Правила заполнения параметров проводки указываются в описании типов и классов проводок.
Классификация проводок
Проводки классифицируются в разрезе плана счетов. Для каждого плана счетов создаются свои типы проводок.
Применяемое в проекте понятие тип проводки означает тип записи в таблице ‘Проводка’ и, одновременно, правила формирования этой записи. Термин проводка обозначает одну запись в таблице ‘Проводка’.
Для класса проводки можно указать следующие атрибуты:
- HFile definition – используется программистами.
- Использование – условие доступа проектировщиков к классу проводки.
- Допускает наследование атрибутов – при установленном признаке в описании наследника можно будет изменить атрибуты.
- Указатель на элемент – применяется для указания специальных атрибутов класса проводки.
- Элемент – применяется для указания специальных атрибутов класса проводки.
- Точка входа – алгоритм создания проводки. Может принимать следующие значения:
-
-
- Нормальный – проводка создается на соответствующем этапе акцепта.
- FIFO – не используется.
- Суммовые (для строк документа) – проводка рассчитывается на этапе расчета суммовых проводок документа. После обработки всех строк документа проводится объединение рассчитанных суммовых проводок по значениям аналитик. И затем в БД записываются полученные объединенные проводки.
-
- Исходящий контекст – при описании проводки будут доступны параметры перечисленных объектов.
- Параметры – содержит описания функций и выражений.
Типы проводок создаются на основе классов, и атрибуты типа проводки определяются ее классом.
Описание правил формирования проводок
Типы проводок могут быть созданы в разделе ‘Проводки’, раздел ‘Классификация’.
Также можно создавать типы проводок при описании типов документов и типов строк. В этом случае применяется атрибут ‘Проводки’ для класса или типа документа (строки).
При создании правил формирования проводки, прежде всего, выбирается план счетов, для которого будут указаны правила. Затем, можно создать элементы следующих типов:
- Стандартные проводки – для наследования описания проводок из родителя проводки.
- Тип проводки – для создания нового правила формирования проводки.
- Подстановка проводки – для включения в список существующего правила формирования проводки и изменения атрибутов правила.
- Варианты проводок, в зависимости от – позволяет указать, какую группу правил формирования проводок следует применить в зависимости от значения указанного условия.
Пример.
Процедура акцепта объекта (документа или строки) анализирует список типов и подстановок проводок, указанных для типа объекта, и создает записи в таблице ‘Проводка’.
Пример описания проводок
Рассмотрим описание проводок на примере.
Продолжаем решение задачи по организации ввода документов для прихода и реализации товаров. Осталось описать правила формирования проводок в процедурах акцепта документа и строк.
Как обычно, перечислим, что требуется найти или создать в проекте.
- Описать правила формирования проводок для партионных строк.
- Описать правила формирования проводок для обычных строк.
- Описать правила формирования проводок для документов.
Рассмотрим возможный вариант действий автора проекта.
Проводки для партионных строк
Описание проводок находится в описании типов строк. Рассмотрим описание проводок для типа строки ‘Строка FIFO прихода от поставщика’.
Для типа строки указаны проводки по двум планам счетов ‘Товарный план’ и ‘Суммы по Документам’.
Две проводки будут созданы по плану счетов ‘Товарный план’. Поскольку в описании типа строки указана подстановка проводки, то сначала найдем описание проводки.
Описание проводки содержит дебетовый счет с аналитиками, размерность и сумму. Добавим кредитовый счет из подстановки проводки и получим полное описание правил формирования проводки типа ‘Увеличение товарного запаса (сумма по учетн.)’.
- Счет дебет – ‘Количество (товарный запас)’.
Для данного счета заданы три аналитики: Подразделение, Продукт, Цена.
Вот так эти аналитики заполняются в описании проводки:
-
-
-
- Аналитика ‘Подразделение’ заполняется значением параметра документа ‘Подразделение’.
- Аналитика ‘Продукт’ заполняется значением параметра строки ‘Базовый продукт’.
- Аналитика ‘Цена’ заполняется ссылкой на описание параметра строки ‘Цена учетная’. По сути, в эту аналитику заносится UID проектного элемента.
-
-
- Счет кредит – ‘Приход/возврат от поставщика’.
Для данного счета заданы две аналитики: Продукт, Подразделение.
В описании проводки указаны следующие правила расчета значений аналитик:
-
-
-
- Аналитика ‘Продукт’ заполняется значением параметра строки ‘Базовый продукт’.
-
-
-
-
-
- Аналитика ‘Подразделение’ заполняется значением параметра документа ‘Контрагент’.
-
-
- Сумма проводки вычисляется с помощью выражения ‘Сумма по цене учетной (из товара)’
Выражение определяет расчет суммы как произведение количества на учетную цену.
- Размерность суммы указана в рублях.
Смысл рассмотренной проводки заключается в следующем. Проводка уменьшает сальдо по счету ‘Приход/возврат от поставщика’ (для указанного набора значений аналитик) и увеличивает сальдо по счету ‘Количество (товарный запас)’ (для указанного набора значений аналитик) на вычисленную сумму в рублях.
Необходимо проверить правила заполнения остальных обязательных параметров проводки. Эти правила следует искать у родителей проводки.
Здесь указаны правила заполнения параметров ‘ЦФО’ и ‘Дата’.
Аналогичным образом описана и вторая проводка по плану счетов ‘Товарный план’.
Необходимо еще раз повторить, что в описании проводки можно использовать счета только одного плана счетов.
Теперь разберем проводки по другому плану счетов ‘Суммы по Документам’.
Прежде всего, выясним, что в данном случае означает наличие атрибута ‘Стандартные проводки’. Автор проекта применил данный атрибут для того, чтобы наследовать описания проводок от родителей типа строки. Попробуем найти описание проводок у родителей. Такое описание имеется в подстановке класса строки ‘Класс строки FIFO прихода’.
Таким образом, всего для строки указаны правила формирования семи проводок по плану счетов ‘Суммы по Документам’. (Три правила из описания типа строки и четыре – из описания класса строки).
При рассмотрении проводок предыдущего плана счетов ‘Товарный план’ описание класса счетов нас не интересовало, поскольку в списке проводок не был применен атрибут ‘Стандартные проводки’.
Разберем описание правил создания одной проводки из семи. Остальные правила описаны аналогичным образом.
Описание типа строки содержит подстановки проводок, и никакие атрибуты в подстановках не определены. Значит, достаточно изучить только описание проводок.
Поскольку в описании не указаны правила заполнения еще нескольких обязательных параметров проводки, то изучим родителя проводки.
В результате получаем следующее правило формирования проводки типа ‘Сумма по закупочной цене (по суммам из базовых строк)’.
- Счет дебет – ‘Сумма по документу’.
Для данного счета заданы пять аналитик: Документ, Цена, НДС, Тип продукта, Налог с продаж.
В описании проводки заполняются все аналитики.
-
-
-
- Аналитика ‘Документ’ заполняется значением параметра строки ‘Документ’ (т.е. в аналитику заносится UID документа).
- Аналитика ‘Цена’ заполняется ссылкой на описание параметра строки ‘Цена по приходу’. По сути, в эту аналитику заносится UID проектного элемента с описанием цены.
- Аналитика ‘НДС’ заполняется значением типа продукта, являющимся базовым по отношению к продукту из строки. (Причина такого заполнения данной аналитики автору не известна).
- Аналитика ‘Тип продукта’ заполняется значением типа продукта из строки (т.е. UID проектного элемента с описанием типа продукта).
- Аналитика ‘Налог с продаж’ заполняется результатом вычисления выражения ‘Облагается налогом с продаж (из строки)’.
-
-
- Счет кредит – ‘Сумма по контрагенту (КОРРЕСПОНДИРУЮЩИЙ)’.
Для данного счета аналитики не указаны. Более того, по счету не формируется сальдо.
- Сумма проводки вычисляется с помощью выражения ‘Сумма по закупочной цене (по суммам из базовых строк)’
Выражение возвращает значение параметра базовой строки ‘Сумма по цене накладной поставщика’.
- Размерность суммы указана в рублях.
Для класса проводок указан алгоритм генерации проводок – Суммовые (для строк документа). Отличие данного алгоритма от нормального алгоритма генерации проводок заключается в следующем. При нормальном алгоритме проводка рассчитывается и сразу же записывается в базу данных в процедуре акцепта строки. Суммовые проводки рассчитываются на отдельном этапе процедуры акцепта документа после обработки всех строк. В этот момент суммовые проводки в базу данных не записываются. На другом этапе акцепта документа проводится объединение полученных суммовых проводок и запись результата объединения. Если для двух проводок полностью совпадают все параметры кроме суммы, то обе проводки объединяются в одну новую проводку с общей суммой. Такой алгоритм позволяет существенно сократить число хранимых проводок.
Проводки для обычных строк
Описание проводок для обычных строк выполняется аналогично описанию проводок для партионных строк. В нашем случае некоторый интерес представляет описание типа строки ‘Приход товара от поставщика’. Для этой строки указаны правила создания проводок по двум планам счетов. Если описание проводок по плану счетов ‘Суммы по Документам’ повторяет уже рассмотренный ранее вариант, то проводки по плану счетов ‘Товарный план’ описаны несколько иным образом.
В предыдущих вариантах применялись подстановки типов проводок, а в данном случае созданы новые типы. Остальное описание ничем не отличается от ранее изученного.
При описании классов и типов документов (строк) можно как создавать новые типы проводок, так и применять подстановки типов проводок. Для повышения наглядности дерева проекта рекомендуется использовать подстановки типов проводок.
Проводки по документу
Рассмотрим описание проводок для используемых типов документов.
Описание типа документа ‘Приход товаров’ не содержит никаких значимых атрибутов. Рассмотрим имеющиеся подстановки.
С помощью трех подстановок для данного типа документа указаны правила формирования проводок по трем планам счетов: ‘Налоговый учет’, ‘Бюджетирование’ и ‘Бухгалтерский план’.
Поскольку описание правил формирования проводок для документа полностью совпадает с описанием правил создания проводок для строк, то подробно изучим только примеры ранее не рассмотренных вариантов описания.
В описании проводок для бухгалтерского плана счетов имеется следующая конструкция.
С помощью атрибута ‘Варианты проводок, в зависимости от’ проектировщик задал условие формирования проводки типа ‘Постоянное налоговое обязательство (расх.с накл.пост-ка)’. Данная проводка будет сформирована в том случае, если выражение ‘Начисление налогов (ПБУ 18/2)’ вернет истинное значение.
Выражение анализирует наличие значения у параметра ‘Использовать ПБУ 18’ в записи партнера, соответствующей ЦФО.
Второй пример связан с понятием пакетных проводок.
Рассмотрим описание типа проводки ‘Сумма по учетной цене товара’ по бухгалтерскому плану счетов.
Тип проводки ‘Сумма по учетной цене товара’ ссылается на тип ‘Пакетная бухгалтерская проводка’. Изучим родителей проводки.
В описании класса проводки ‘БУХГАЛТЕРСКАЯ ПРОВОДКА ПАКЕТНАЯ’ имеется признак ‘Пакетная проводка’.
Наличие этого признака означает, что при создании проводок указанного типа будет применен механизм формирования пакета проводок.
Пакетные проводки
Механизм пакетных проводок позволяет, описав одну проводку, создать при акцепте документа или строки целый пакет однотипных проводок.
Сначала выбираются записи сальдо по некоторому счету. Затем для каждой полученной записи создается проводка. При этом значения аналитик (параметров) записи используются для заполнения параметров вновь создаваемых проводок.
Пакетная проводка отличается от обычной тремя дополнительными атрибутами:
- Признак ‘Пакетная проводка’ в описании типа или класса проводки указывает на то, что при создании проводки данного типа (класса) следует использовать механизм формирования пакетных проводок.
- Раздел ‘Локальные переменные’ в описании типа или класса проводки содержит набор переменных, в которые будут помещены значения параметров выборки, и которые будут использованы при расчете параметров создаваемых пакетных проводок.
- Раздел ‘Ограничения на выборку для пакетной проводки’ задает набор ограничений для выборки записей сальдо и одновременно устанавливает связи параметров выборки с локальными переменными. Если ограничение ссылается на локальную переменную, то считается, что это описание связи параметра с локальной переменной. Если ограничение ссылается на любой другой проектный элемент, то считается, что это описание ограничения.
Можно задать ограничения/связи по пяти основным параметрам сальдо:
- ЦФО. Допускает как указание ограничения, так и связывание.
- Счет. Можно указывать только ограничение, связывание счета недопустимо. Под счетом можно задать ограничения по аналитикам, или связать аналитики с локальными переменными.
- Размерность. Допускает как указание ограничения, так и связывание.
- Количество/сумма. Этот атрибут предназначен только для связывания параметра ‘Сумма’ выборки по сальдо с локальной переменной. Задание ограничения недопустимо.
- Дата. Дату нельзя связывать с локальной переменной, так как это не имеет смысла. Можно только устанавливать ограничение по дате, то есть использовать не текущее сальдо, а сальдо на конкретную дату.
Если необходимо задать дату, то следует учесть, что сальдо выбирается на ‘начало’ указанной даты. То есть не учитываются проводки с этой датой-временем, и, следовательно, проводки по текущему документу в расчет не попадут. Для устранения такого эффекта необходимо прибавить к дате единицу.
Теперь рассмотрим описание пакетной проводки в нашем примере.
Признак ‘Пакетная проводка’ находится в описании класса проводки ‘БУХГАЛТЕРСКАЯ ПРОВОДКА ПАКЕТНАЯ’.
В разделе ‘Локальные переменные’ описаны две переменные ‘Сумма’ и ‘НДС’.
В список ограничений из раздела ‘Ограничения на выборку для пакетной проводки’ следует добавить ограничения из родителей проводки.
Таким образом, получаем ограничения по следующим параметрам: ‘ЦФО’, ‘Размерность’, ‘Счет’ и двум аналитикам счета: ‘Документ’ и ‘Цена’.
Параметры ‘НДС’ и ‘Сумма’ связываются с одноименными локальными переменными.
Смысл рассмотренной пакетной проводки заключается в следующем. Необходимо выбрать все записи сальдо, удовлетворяющие следующим ограничениям :
- ЦФО = результат вычисления выражения ‘Центр финанс. Ответственности для ТОВАРНЫХ ПЛАНОВ’
- Размерность = Рубли
- Счет = Сумма по документу
- Аналитика счета ‘Документ’ = текущий документ
- Аналитика счета ‘Цена’ = цена учетная
Посмотрим на описание счета ‘Сумма по документу’ и его родителя для определения списка и порядка аналитик.
Для счета описаны пять аналитик. Для двух первых заданы ограничения.
В разделе ‘Ограничения на выборку для пакетной проводки’ указана связь аналитики ‘НДС’ с локальной переменной. Это означает, что в результат выборки должен содержать записи, различающиеся только значением аналитики ‘НДС’. Так как для счета описаны пять аналитик, а ограничение указано только для двух из них, то в базе данных будут найдены несколько записей сальдо с одинаковым значением аналитики ‘НДС’. Такие записи будут объединены в одну запись. Результат сложения сумм из объединяемых записей заносится в локальную переменную ‘Сумма’.
Таким образом, количество записей в результате выборки будет равно числу разных значений аналитики ‘НДС’ в записях сальдо, удовлетворяющих указанному набору ограничений.
Для каждой отобранной записи сальдо будет сформирована проводка типа ‘Сумма по учетной цене товара’. Для заполнения аналитики ‘НДС’ дебетового счета используется одноименная локальная переменная. Значение локальной переменной ‘Сумма’ будет занесено в сумму создаваемой проводки.
Описание одной пакетной проводки заменяет описания нескольких обычных проводок. В нашем случае пришлось бы создать три типа проводок для каждого из вариантов значений НДС (0, 10, 20).
Кроме того, поскольку в пакетной проводке не имеется явного указания значений обрабатываемой аналитики (в нашем случае ‘НДС’), то изменение списка возможных значений аналитики не потребует изменения проекта в этом месте.