Дерево проекта

Запуск, отображение дерева проекта

Проект – это совокупность методов, настроек и установок, ориентированных на решение конкретной задачи. Это все то, что является неотъемлемой частью программного комплекса Домино (без проекта работать не будет), но не является исполняемыми модулями программы (exe и набор dll).

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

C:\domino8\Bin\domino8.EXE x:\project\«Название проекта» /prjedit

Обратите внимание на наличие пробела между \«Название проекта» и /prjedit.

Пример запуска проекта RETAIL-STORE.

C:\domino8\Bin\domino8.EXE x:\project\RETAIL-STORE /prjedit

Изменения вносятся в редакторе, где проект изображается в виде дерева, состоящего из элементов разного типа.

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

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

На следующем рисунке изображено частично раскрытое дерево проекта.

image-1647935877069.png

Текущим называется тот элемент проекта, на котором в данный момент стоит курсор. Текущий элемент выделен фоном.

В нижней части экрана находится Статусная строка.

В статусной строке указываются:

При создании нового элемента проекта ему присваиваются перечисленные выше параметры: уникальное сочетание типа и индекса (вместе они составляют уникальный идентификатор элемента проекта – UID), наименование и имя автора. Автором элемента является тот пользователь, который  создал этот элемент. В приведённом выше примере автором текущего элемента проекта является {Бакин}.

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

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

image-1647936816352.png

[Назад]

перемещает в предыдущее окно или меню

image-1647936825501.png

[Вперёд]

перемещает в следующее по логике работы окно. Если такового нет (например, когда курсор стоит на вершине структуры главного меню), то никакие действия не выполняются

image-1647936835691.png

[Сохранить]

Сохраняет изменения проекта

image-1647937196991.png

[Undo]

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

image-1647937217021.png

[Redo]

Восстанавливает последнее изменение проекта

image-1647936846541.png

[Поиск]

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

image-1647936860523.png

[Следующий]

выдаёт следующий результат поиска по тому же условию

image-1647936867878.png

[Предыдущий]

выдаёт предыдущий результат поиска по тому же условию

image-1647937225150.png

[Пуск]

Запуск программы с данным проектом

image-1647937252166.png

Печать

 

image-1647937234063.png

Инструменты

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

image-1647937242899.png

Справка

 

Вызов меню со справочной информацией

Загрузка изменений из протокола

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

В процессе работы, в  ‘рабочем каталоге’, изменяется файл выполненных изменений. Файл имеет следующее имя:  <имя проекта>.log. Изменения записываются при нажатии 'Сохранить'.

Перенесите файл протокола в каталог для загрузки и нажмите кнопку ‘Инструменты’ на панели инструментов, выберите пункт ‘Работа с проектом - Загрузить из протокола’.

image-1647937570266.png

На экране появится окно для выбора файла протокола.

image-1647937598031.png

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

image-1647937627675.png

Следует пометить (пробелом) сеансы и нажать кнопку ‘Загрузить’.

Регистрация авторов проекта

image-1647937704269.png

Все авторы должны быть предварительно занесены в реестр авторов. Вариант регистрации зависит от желаемого уровня доступа пользователя к разделам проекта. Если пользователю нужны права на работу только с разделом ‘Приложение’, то достаточно внести запись о таком авторе в раздел ‘Авторы’. Во всех остальных случаях пользователь должен быть указан в общем реестре авторов. Эта процедура проводится в  фирме ‘Софт-Вест’. 

При запуске программы в режиме редактирования проекта следует нажать на иконку 'Инструменты', выбрать 'Регистрация автора' и ввести имя автора и пароль. 

Навигация по проекту

Основная панель инструментов

image-1647938157923.png

Горячие клавиши

<Серый плюс>

Раскрывает поддерево.

<Стрелка направо>

Раскрывает поддерево или создаёт новый элемент проекта на следующем уровне поддерева.

<Стрелка налево> и <Серый минус>

Сворачивает поддерево.

<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

перемещение на родителя текущего элемента

Контекстное меню элемента проекта

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

image-1647938522563.png

image-1647938545559.png

Поиск подстановок элемента – перемещение на первую подстановку текущего элемента. Далее возможно перемещение по подстановкам.

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

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

Остальные варианты поиска используются системными администраторами проекта при реорганизации разделов и библиотек.

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

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

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

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

            Удалить элемент Утверждено может только автор.

image-1647938650776.png

image-1647938672698.png

image-1647938704084.png

image-1647938736305.png

 

Структура дерева проекта

Проект на Домино состоит из разделов, в которые подбираются необходимые элементы.

Наверху находятся системные элементы, которые нужны всегда.

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

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

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

Раздел - группа проектных элементов, объединённых по функциональному назначению. Содержит другие разделы и отдельные проектные элементы.

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

image-1647938806893.png

image-1648020344083.png

Путь, Источник данных – имя соединения.

БД – данный атрибут в настоящее время не используется, но для совместимости с предыдущими версиями требуется указать значение DB1.

Пользователь БД (Пространство) –  имя базы данных Домино с точки зрения сервера.

Пароль доступа к БД – значение пароля для доступа к БД. Если пароль не указан, то считается, что пароль равен значению атрибута ‘Пользователь БД (Пространство)’.

Отладочная информация – уровень отладочной информации. Может принимать значения от 1 до 4. Применяется для проверки и оптимизации выполнения запросов к СУБД.

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

Проверяются два следующих условия:

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

Конфигурация

Данный раздел содержит следующие параметры настройки программы:

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

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

Основные разделы проектных библиотек

 

 

Принципы описания элементов

Дерево проекта состоит из элементов.

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

Принцип 1. Каждый элемент имеет тип

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

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

Например, в разделе ‘Виды Просмотра’ для создания нового элемента предлагается выбрать его тип из следующего списка:

image-1647959637363.png

В разделе ‘Роли’ будет предложен другой список типов элементов проекта:

image-1647959658185.png

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

Курсор находится на элементе ‘Администратор организации’ в разделе ‘Роли’.

image-1647959705591.png

При нажатии Insert будет высвечен список на рисунке выше. Программа считает, что новый элемент будет расположен непосредственно в разделе ‘Роли’ (на одном уровне с имеющимся элементом).

Раскроем поддерево у элемента ‘Администратор организации’ (клавиши Серый Плюс или стрелка вправо), не перемещая курсор с элемента.

image-1647959756370.png

Теперь при отображении списка типов элементов программа посчитает, что новый элемент будет расположен внутри элемента ‘Администратор организации’. Поэтому на экране будет высвечен другой список:

image-1647959730029.png

Проектные элементы одного типа имеют в дереве проекта одинаковую иконку. Так, все роли имеют иконку ‘Маска’.

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

Для просмотра типа элемента можно использовать пункт меню поиска ‘Найти определение типа объекта’.

Посмотрим это на примере роли. Элемент ‘Администратор организации’ имеет тип ‘Роль’. Поиск указал описание этого элемента.

image-1647959803001.png

Можно посмотреть описание типа для найденного элемента. Еще раз выполняем ‘Найти определение типа объекта’

image-1647959826548.png

Поиск привёл в самый верх проекта, папка ‘<Примитивы>’ раздела ‘Системная область’. Здесь находятся самые нижние корни дерева проекта (дерево отображается так, что корни находятся сверху). Найденный элемент не имеет типа, поскольку он принадлежит к первоосновам проекта.

Но зачем нужна типизация элементов?

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

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

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

Можно рассматривать приведённый ниже текст как список понятий в системе.

Пользователи и права

Пользователь – человек, работающий с программой.

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

Автор – пользователь, имеющий право изменять проект.

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

Интерфейсные компоненты программы

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

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

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

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

Структура Базы данных

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

Параметр объекта – отдельная информационная характеристика (свойство) объекта.

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

СУБД (Система управления базами данных) - внешняя программа, обеспечивающая хранение и обработку информации в БД.

Сервер БД – компьютер (сервер), на котором запускается СУБД.

Модель данных – это представление данных с точки зрения пользователя. Представляет собой набор объектов и правил их взаимодействия.

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

Запись (строка) таблицы  – строка таблицы, соответствующая одному экземпляру какого-либо объекта.

Параметр таблицы - наименование колонки таблицы. Соответствует конкретному параметру объекта.

Параметр записи таблицы –содержимое ячейки таблицы. Номер строки задает запись, номер колонки задает параметр.

Запрос – способ и форма обращения к СУБД с требованием подобрать и передать некоторые данные. Запрос содержит условия, которым должны соответствовать передаваемые данные. Для СУБД Oracle запрос формируется на языке SQL.

Язык программирования

Данные - это та информация, которую обрабатывает компьютер.

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

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

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

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

Выборка – проектное отражения стандартных (наиболее часто используемых) запросов к СУБД. Описание выборки содержит наименование таблицы БД и способ сортировки получаемых от СУБД записей.

Проводки

Счёт – отражает место учёта денежных или материальных средств.

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

Проводка – содержит информацию о факте движения денежных или материальных средств.

Регистр - короткая, односторонняя проводка

Шаблон проводки – описание правил для автоматической генерации проводки

Сальдо – остаток учётных средств на счёте в указанный момент времени.

Классификаторы

Классификатор – содержит список именованных проектных элементов.

Структура проекта

Проект – совокупность методов, настроек и установок, ориентированных на решение конкретной задачи .

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

Базовый раздел – структурная часть дерева проекта. Список базовых разделов изменён быть не может. Содержит библиотеки, разделы и отдельные проектные элементы.

Модуль - набор библиотек для решения бизнес-задачи. Обычно имеются несколько вариантов подключения модуля. Варианты различаются наборами библиотек.

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

Раздел (папка) – группа проектных элементов, объединённых по функциональному назначению. Содержит другие разделы и отдельные проектные элементы.

Проектный элемент – наименьшая и неделимая часть дерева проекта. Занимает одну строку в дереве проекта.

Атрибут – проектный элемент, рассматриваемый в качестве характеристики (свойства) другого проектного элемента. Атрибут располагается в дереве проекта на следующем уровне под тем элементом, чьим свойством он является.

Принцип 2. Каждый элемент имеет свойства

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

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

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

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

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

image-1647960720957.png

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

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

Так, для роли ‘Администратор организации’ будет высвечен следующий список:

image-1647960767464.png

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

Полный список всех возможных атрибутов для элемента проекта указывается при описании типа элемента. Перейдём на описание типа элемента ‘Администратор организации’ и посмотрим на список свойств найденного элемента.

image-1647960796384.png

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

Вот так выглядит полный список типов атрибутов, которые будут высвечены при описании свойств роли.

image-1647960816548.png

Назначение и правила описания этих атрибутов рассмотрены ниже в соответствующей главе.

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

Принцип 3. Элементы могут наследовать свойства

Для многих элементов проекта можно указать специальную связь с другим элементом. Связь устанавливается путём заполнения поля ‘Класс’ в форме элемента.

image-1647960881817.png

Такая связь называется связь от ребёнка к родителю, где текущий элемент является ребёнком по отношению к тому элементу (родителю), ссылка на который и записывается в поле ‘Класс’.

Поле не обязательно называется ‘Класс’. Там, где это возможно, наименование поля формируется с конкретным значением. Например, в формах это поле имеет наименование ‘Форма’.

image-1647960914037.png

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

Теперь поговорим о предназначении связи элемента с родителем.

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

Рассмотрим простой пример. Форма продукта в библиотеке ‘# Товародвижение’.

image-1647960955252.png

Для формы задан один атрибут ‘Список полей формы’.

Посмотрим на родителя – форму ‘ПРОДУКТ’. Для этого перейдём ‘По ссылке’.

image-1647960983802.png

Для базовой формы ‘ПРОДУКТ’ имеется несколько атрибутов. Все эти атрибуты по правилу наследования будут являться атрибутами и для формы ‘ТОВАР’.

Попробуем отыскать более сложный пример. Для формы ‘ТОВАР’ выполним пункт меню поиска ‘Найти тех, кто ссылается на текущий объект’. С помощью этого запроса можно посмотреть всех детей текущего элемента.

Первый результат поиска даёт следующий элемент:

image-1647961008202.png

Поскольку форма ‘Товар’ имеет родителя форму ‘ТОВАР’, то по правилу наследования для формы заданы шесть атрибутов. Пять атрибутов появились от формы ‘ПРОДУКТ’ (как раньше выяснилось эта форма является родителем формы ‘ТОВАР’). Один атрибут порождён формой ‘ТОВАР’.

В самой форме ‘Товар’ имеется описание двух атрибутов ‘Список полей формы’ и  ‘Сценарий’. Наличие этих атрибутов отменяет их наследование от родителя.

Правда в описании атрибутов имеются специальные элементы ‘<Наследуемые поля, колонки>’ и ‘<Наследуемые пункты>’, что позволяет использовать описания аналогичных атрибутов родителя. Более подробно назначение этих и остальных атрибутов формы рассмотрено в соответствующем разделе книги.

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

Приведённые примеры показали как наследуются значения атрибутов от родителя к ребёнку. При этом наличие атрибутов у элементов определялось по типам элементов. Так для форм ‘Товар’ и ‘ТОВАР’ нельзя указать некоторые атрибуты, которые доступны для формы ‘ПРОДУКТ’. Это объясняется тем, что для описания формы ‘ПРОДУКТ’ применялся другой тип проектного элемента – базовая форма. Грамотное применение такого приёма позволяет скрыть от проектировщиков нижнего уровня ненужные им системные атрибуты.

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

Разберём простой пример. В библиотеке ‘# Товародвижение’ имеется описание следующей функции:

image-1647961053803.png

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

image-1647961118639.png

Вот так выглядит описание функции-ребёнка.

image-1647961141043.png

Принцип 4. Подстановка элементов

Подстановка элементов применяется в двух случаях:

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

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

Для описании подстановки применяются специальные типы элементов. Иконки таких элементов содержат маленькую стрелку в левом нижнем углу.

Рассмотрим пример. В библиотеке ‘[КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ]’ находится элемент проекта, описывающий тип каталога для хранения групп партнёров. Для элемента не указан ни один из существенных атрибутов.

image-1647970514266.png

Выполним пункт меню поиска ‘Поиск подстановок элемента’. В библиотеке ‘# Товародвижение’ найдена подстановка данного элемента.

image-1647970572044.png

В этом месте заданы два атрибута: ‘Форма ввода объекта’ и ‘Использование’.

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

Для рассматриваемого примера это означает следующее. Если ниже в дереве проекта будет указана ещё одна подстановка элемента ‘Группа партнёров’. В этой подстановке будут заданы иные значения атрибутов ‘Форма ввода объекта’ и ‘Использование’. Именно эти новые значения будут приняты программой как текущие значения данных атрибутов.

В завершение рассмотрим условные примеры взаимодействия принципов наследования и подстановки.

Пример 1. Имеется элемент А и подстановка этого элемента.

image-1647970612125.png

Текущие значения атрибутов элемента А: Атрибут 1 = b, Aтрибут 2 = 2, Aтрибут 3 = 3.

Пример 2. Имеются два элемента A и B. Элемент B является ребёнком элемента A.

image-1647970636256.png

Текущие значения атрибутов элемента B: Атрибут 1 = c, Aтрибут 2 = 2, Aтрибут 4 = 4.

Пример 3. Имеются два элемента A и B, и подстановка элемента А.

image-1647970656540.png

Текущие значения атрибутов элемента B: Атрибут 1 = c, Aтрибут 2 = 2, Aтрибут 3 = 3, Aтрибут 4 = 4.

Пример 4. Имеются два элемента A, B и подстановки этих элементов.

image-1647970674821.png

Текущие значения атрибутов элемента B: Атрибут 1 = d, Aтрибут 2 = 2, Aтрибут 3 = 3, Aтрибут 4 = 4, Aтрибут 5 = 5

 

Сценарии (Меню)

Сценарий (Меню) - список предлагаемых для выполнения действий (пунктов меню).

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

Текущее действие - пункт меню, на котором находится курсор.

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

Независимо от назначения и расположения в проекте все сценарии имеют одинаковое описание.

Проектный элемент, описывающий сценарий, обозначается иконкой image-1648022276137.png.

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

image-1648022296111.png

В форме сценария заполняются наименование (поле Имя) и родитель (поле Сценарий).

image-1648022330664.png

Для сценария можно указать следующие атрибуты:

image-1648022837344.png

Ни один из  атрибутов не является обязательным. Такие атрибуты как: ‘Копирование’, ‘Использование’, ‘Использование (в режиме выполнения)’, ‘Иконка’, ‘Размещение окна’, ‘Приоритет при расчёте, выводе’, ‘Наследуемые пункты’, ‘Подсказка (ToolTip)’ – в конкретном Сценарии (Меню) могут быть использованы всего один раз. Количество вложенных Сценариев, Команд, Видов просмотра, Отчётов и Процедур неограниченно.

Копирование, Использование, Использование (в режиме выполнения)

Также применимо для атрибутов ‘Создание’, ‘Наследование’, ‘Активность (в режиме выполнения)’.

Эти атрибуты применяются для ограничения прав на выполнение соответствующих действий.

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

image-1648022848716.png

Да – безусловное Да. Сценарий доступен без дополнительных условий.

 Нет –безусловное Нет. Сценарий не доступен без дополнительных условий.

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

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

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

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

 Только для системного архитектора – действие доступно только для системного архитектора.

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

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

Системный архитектор’, ‘Разработчик базовых решений’ и ‘Разработчик отраслевых решений’ – это названия ролей для проектировщиков. Автор, которому назначены данные роли, обладает дополнительными правами при работе с проектом. Например, роль ‘Разработчик базовых решений’ открывает доступ к проектным базовым библиотекам.

Условия ограничений описываются на следующем уровне поддерева. На экран будет выведен список условий:

image-1648023161541.png

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

Рассмотрим несколько примеров использования условий.

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

image-1648023295843.png

Ограничение указано для пункта сценария ‘Р/Счет’. Пункт должен быть недоступен, если выражение ‘Учёт по юридическим лицам’ возвращает истинное значение.

 Определена роль – условие соблюдается, если пользователю назначена указанная роль.

image-1648023365569.png

Сценарий будет доступен только тем пользователям, которым назначена роль ‘Бухгалтер-кассир’

НЕ определена роль – условие соблюдается, если пользователю НЕ назначена указанная роль.

image-1648023393536.png

В данном примере описано следующее ограничение: действие будет доступно для тех пользователей, которым либо назначена  роль ‘Бухгалтер’, либо назначена роль ‘Главный Бухгалтер’, либо НЕ назначена роль ‘Запрет деакцепта документов’.

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

image-1648023417485.png

Проектный элемент будет доступен, если он расположен в разделе ‘Приложение’.

НЕ расположен в разделе – условие обратное предыдущему.

Определён объект – условие соблюдается, если проектный элемент находится в таком разделе дерева проекта, который соответствует указанному объекту.

image-1648023442401.png

Проектный элемент будет доступен, если он расположен в разделе ‘Каталог’

НЕ определён объект – условие обратное предыдущему.

Иконка

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

image-1648023528942.png

Если не задать иконку, то сценарию будет присвоена стандартная иконка сценария image-1648023557640.png.

Размещение окна

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

image-1648023580520.png

Приоритет при расчёте, выводе

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

Чем большее значение имеет данный атрибут, тем выше пункт будет расположен в сценарии.

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

image-1648023654872.png

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

<Наследуемые пункты>

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

Содержимое сценария родителя вставляется вместо данного атрибута. Так, если атрибут будет указан первым пунктом, то пункты из сценария родителя будут расположены в верху получаемого сценария. Если данный атрибут будет указан в конце списка пунктов, то  и пункты из сценария родителя также будут расположены в конце. Атрибут можно указать и между пунктами. В этом случае добавляемые пункты ‘раздвинут’ начальный список пунктов. 

Рассмотрим пример описания панели инструментов.

image-1648023723960.png

‘Стандартный сценарий для товарных документов’  содержит атрибут ‘<Наследуемые пункты>’. Сценарий имеет родителя ‘Стандартные действия над объектом’.

image-1648023759363.png

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

image-1648023778634.png

Сценарий (меню)

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

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

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

image-1648023824863.png

Вот так выглядит вызов контекстного меню:

image-1648023843206.png

Можно раскрыть вложенный сценарий:

image-1648023863112.png

Для разделения пунктов сценария главного меню применяют следующий приём – вставляют ‘пустой’ сценарий. Имя ‘пустого’ сценария набирают из знаков минус (-) или равно (=). Далее заменяют стандартную иконку сценария.

image-1648023898743.png

Вот так это будет выглядеть на экране:

image-1648023915096.png

Команда

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

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

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

image-1648023994124.png

В описании сценария дважды применена команда-разделитель. Между кнопками на панели управления вставляется разделительная черта.

image-1648024021476.png

Полный список команд находится в библиотеке ‘Системная область’, раздел ‘Интерфейс’, раздел ‘Команды’. Назначение команды понятно из её наименования.

Процедура

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

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

Если не указана иная иконка, то пункт меню с вызовом процедуры имеет стандартную иконку процедурыimage-1648024144300.png.

Отчёт

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

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

Если не указана иная иконка, то пункт меню с вызовом отчёта имеет стандартную иконку отчётаimage-1648024188330.png.

Вид просмотра

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

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

Если не указана иная иконка, то пункт меню с вызовом вида просмотра имеет стандартную иконку вида просмотра image-1648024243967.png.

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

Подсказка (ToolTip)

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

Например, укажем подсказку под кнопкой ‘Расч.счета’ в виде просмотра партнёров.

image-1648024303412.png

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

image-1648024326216.png

В случае если текст подсказки не указан, то в качестве подсказки будет отображено наименование кнопки.

Создание группы сценариев, объединённых в одной папке

Группа сценариев создаётся для объединения в одной папке (под одним названием) нескольких сценариев. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.

image-1648024463953.png

Группа сценариев может содержать неограниченное число Сценариев, Групп сценариев и Подстановок сценариев.

Подстановка сценария

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

Например. В библиотеке ‘Товародвижение’ имеется сценарий ‘Оператор’.

image-1648024506040.png

Если необходимо в сценарии ‘Оператор’ удалить элемент ‘Приём кассовых отчётов’, то это можно сделать в подстановке этого сценария.

image-1648024537766.png

Обратите внимание на последствия сделанного изменения - пункт менюПриём кассовых отчётов’ исчезнет во всех сценариях, являющихся наследниками сценария ‘Оператор’ и имеющих в описании атрибут  ‘Наследуемые пункты’.

 

Роли

Роль – совокупность действий, которые может выполнять пользователь.

Роли применяются для двух целей.

Рассмотрим подробнее каким образом достигаются эти цели.

Роль определяет набор сценариев для группы пользователей

При регистрации пользователя ему назначаются исполняемые роли.

image-1648024713148.png

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

image-1648024739982.png

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

image-1648024760659.png

Роль ограничивает права доступа для группы пользователей

Для многих проектных элементов можно указать условие доступа к этому элементу. Условия описываются в атрибутах ‘Создание’, 'Копирование', 'Использование', 'Использование (в режиме выполнения)' , ‘Наследование’, ‘Активность (в режиме выполнения)’. Правила описания этих атрибутов приведены выше в главе ‘Сценарии’.

Возможны два вида ограничений по ролям:

image-1648024837563.png

Определена роль – условие соблюдается, если пользователю назначена указанная роль.

image-1648024858894.png

Сценарий будет доступен только тем пользователям, которым назначена роль ‘Бухгалтер-кассир’

НЕ определена роль – условие соблюдается, если пользователю НЕ назначена указанная роль.

image-1648024880945.png

В данном примере описано следующее ограничение: действие будет доступно для тех пользователей, которым либо назначена  роль ‘Бухгалтер’, либо назначена роль ‘Главный Бухгалтер’, либо НЕ назначена роль ‘Запрет деакцепта документов’.

Описание роли

Проектный элемент, описывающий роль, обозначается иконкойimage-1648024917665.png.

При создании новой роли будет предложено выбрать тип создаваемого элемента.

image-1648024941492.png

В форме роли заполняется только наименование.

Для роли можно указать следующие атрибуты:

image-1648024976991.png

Подробное описание атрибутов, задающих условия доступа, находится в главе ‘Сценарии’. 

Роль

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

Можно создать дерево ролей. Количество уровней вложенности в дереве неограниченно.

image-1648025073770.png

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

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

Список начальных сценариев

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

image-1648030455366.png

Для роли ‘Администратор организации’ указаны три сценария. Описания сценариев находятся в трех библиотеках проекта (раздел ‘Сценарии (Меню)’).

image-1648030493259.png

image-1648030501987.png

image-1648030512118.png

При формировании главного меню для пользователя, обладающего ролью ‘Администратор организации’, указанные сценарии будут объединены. Главное меню будет выглядеть вот таким образом:

image-1648030542673.png

Создание группы ролей, объединенных в одной папке

Группа ролей создается для объединения в одной папке (под одним названием) нескольких ролей. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.

image-1648030584694.png

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

Подстановка роли

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

Например. В библиотеке ‘Товародвижение’ имеется роль ‘Старший оператор’. Для этой роли не задан ни один атрибут.

image-1648030651947.png

В библиотеке ‘ТОРГОВАЯ СЕТЬ’ находится подстановка этой роли.

image-1648030679443.png

В подстановке указан атрибут ‘Список начальных сценариев’.

 

Виды просмотра

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

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

Виды просмотра в дереве проекта обозначены иконкой image-1648030897907.png.

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

Различать обычные виды просмотра и виды просмотра на языке скриптов можно либо по списку атрибутов, либо по родителю. Обычные виды просмотра имеют базового родителя – вид просмотра ‘ОБЪЕКТЫ’, который находится в библиотеке ‘Системная область’. Виды просмотра на языке скриптов имеют базового родителя- вид просмотра ‘ПРОСМОТР СПИСКА ДАННЫХ’, который находится в библиотеке ‘!Примитивы скриптов’.

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

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

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

image-1648032246049.png

В форме вида просмотра заполняются наименование (поле ‘Имя’) и родитель (поле ‘Класс’).

image-1648032278360.png

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

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

Описание вида просмотра

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

image-1648032334919.png

Рассмотрим подробнее применение атрибутов.

Выборка

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

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

Форма описания данного атрибута содержит одно поле ‘Класс’.

Значение поля выбирается из списка зарегистрированных в проекте выборок. Базовые выборки находятся в библиотеке ‘Системная область’, раздел ‘Выборки’, раздел ‘СТАНДАРТЫ’.

image-1648032529438.png

В проекте описаны пять стандартных выборок для таблицы ‘ПАРТНЕРЫ’.

Для выборки можно задать следующие атрибуты:

image-1648032559126.png

Назначение данных атрибутов совпадает с назначением атрибутов вида просмотра ‘Ограничения по классам/типам’ и ‘Ограничение на отбор данных’.

Последние два атрибута разрешают наследование первых атрибутов.

Пример. Рассмотрим вид просмотра документов из библиотеки ‘!Базовый набор’.

image-1648032617267.png

Для данного вида просмотра правило отбора данных определяется выборкой ‘Приходные Товарные документы’.

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

image-1648032638313.png

image-1648032646714.png

image-1648032656301.png

Базовая выборка ‘ДОКУМЕНТЫ ПО ДАТЕ’ соответствует стандартному индексу таблицы ‘ДОКУМЕНТЫ’ и определяет отбор записей из таблицы в порядке следования даты документа. Выборка ‘Приходные товарные документы’ накладывает дополнительное ограничение на отбор данных. Подходят только те  документы, которые имеют класс ‘ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.

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

Сценарий

Данный атрибут определяет список кнопок (строк сценария), которые будут представлены на панели инструментов. Если атрибут не указан, то будет применено описание атрибута из вида просмотра – родителя.

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

При описании сценария доступны все те атрибуты, которые рассматривались в главе ‘Сценарии’.

image-1648032724517.png

Если требуется, чтобы кнопка была подписана, то при описании кнопки необходимо ввести значение в поле ‘Имя’.

Рассмотрим пример панели инструментов. Для вида просмотра ‘Ассортиментные группы’ указан следующий сценарий.

image-1648032754614.png

Пользователь при работе с этим видом просмотра увидит вот такую панель инструментов:

image-1648032773693.png

Список горячих клавиш

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

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

image-1648032803728.png

Форма описания горячей клавиши содержит два поля ‘Имя’ и ‘Клавиша’.

image-1648032834646.png

Поле ‘Клавиша’ заполняется значением из списка зарегистрированных в проекте клавиш и сочетаний клавиш. Список клавиш находится в библиотеке ‘Системная область’, раздел ‘Интерфейс’, раздел ‘Список клавиш’.

image-1648032854101.png

Рассмотрим пример описания списка горячих клавиш.

image-1648032872056.png

С клавишей DELETE связана пустая команда. Это означает, что никаких действий при нажатии этой клавиши выполнять не следует. Такая конструкция отменяет назначение этой клавиши, описанное в виде просмотре – родителе. При нажатии клавиши Серый плюс будет вызван вид просмотра ‘Резервуары’. Команда ’Назад’ привязана к клавише Серый минус. Остальные назначения горячих клавиш следует взять из описания родителя вида просмотра.

Список полей просмотра

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

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

image-1648032953312.png

Форма описания поля вида просмотра содержит два поля ‘Имя ’ ‘Класс’.

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

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

image-1648032992948.png

Уточняющий параметр

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

image-1648033022100.png

Вот так выглядит применение уточняющего параметра. Использование уточняющего параметра позволяет отобразить в столбце ‘Группа’  значение поля ‘Наименование’ из таблицы Каталог’.

Рассмотрим подробнее как была введена такая конструкция.

image-1648033048266.png

Сначала заполняется имя поля вида просмотра. В данном случае – это ‘Группа’. Далее требуется заполнить поле ‘Класс’.

При отображении таблицы ‘Партнер’ доступны все поля партнера, но требуется отобразить поле записи из таблицы ‘Каталог’. Ссылка на запись таблицы ‘Каталог’ находится в поле ‘Группа’ таблицы ‘Партнер’. Выбираем это поле из списка доступных полей.

image-1648033073259.png

Теперь необходимо заполнить уточняющий параметр ссылкой на поле ’Наименование’ из таблицы ‘Каталог'. Выбираем соответствующее поле из списка.

image-1648033099220.png

Получим.

image-1648033120151.png

Конструкцию можно условно написать вот так: Партнер.Группа.Наименование

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

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

Разберем еще один пример применения уточняющего параметра.

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

image-1648033231469.png

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

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

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

Данная запись означает, что требуется получить значение параметра ‘Наименование’ из записи таблицы ‘Партнер’. Ссылка на нужную запись таблицы ‘Партнер’ находится в поле ‘Подразделение’ записи таблицы ‘Документ’. Ссылка на нужную запись таблицы ‘Документ’ находится в поле ‘Документ’ записи таблицы ‘Строка’.

Атрибуты поля (колонки) вида просмотра

Рассмотрим остальные атрибуты.

image-1648033351680.png

image-1648033378518.png

image-1648033420288.png

При заполнении поля ‘Поставщик’ используется вид просмотра ‘Выбор торгового партнера по наименованию’.

image-1648033456542.png

image-1648033534246.png

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

image-1648033562455.png

В выражении находится вызов функции ‘ПРАВА ОБЪЕКТА’. В итоге получаем следующее условие: пользователь увидит содержимое колонки ‘Ост.(ОКУ)’ только в том случае, если для данного пользователя определена роль ‘Дополнительный количественный учет’.

Поддержка национальных языков

В Домино имеется возможность отображения текста на национальном языке.

Атрибут ‘Язык’ определяет преобразование данных, которое будет выполняться при выводе строки на экран и при вводе ее с клавиатуры. Он не влияет на алгоритмы обработки и хранения данных, в том числе и на их сортировку.

Значение атрибута выбирается из списка зарегистрированных в проекте значений.

Атрибут ‘Язык’ можно задать для строкового поля объекта, строковой переменной (локальной или глобальной), поля формы, колонки вида просмотра и поля отчета.

Итоги (Totals)

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

При описании итогов доступны следующие типы проектных элементов:

image-1648033731812.png

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

image-1648033763995.png

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

Ограничения по классам/типам

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

Форма для задания ограничения содержит одно поле ‘Тип или класс’.

Значение поля выбирается из списка зарегистрированных в проекте классов и типов объектов.

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

image-1648033820279.png

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

Например.

image-1648033841073.png

Вид просмотра будет содержать только документы, имеющие следующие классы:’ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’, ‘РАСХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’, ‘ВХОДЯЩАЯ СЧЕТ-ФАКТУРА’, ‘ИСХОДЯЩАЯ СЧЕТ_ФАКТУРА’.

Параметры, обязательные при задании ограничений

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

Предназначение атрибута лучше описать на примере.

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

Применим данный атрибут для задания ограничения по параметру документа ‘Подразделение’. Это будет выглядеть примерно вот так.

image-1648033887959.png

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

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

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

Выполнить для каждой прочитанной строки

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

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

Пример

image-1648033957792.png

Список полей вида просмотра содержит два поля, для которых можно применить данный атрибут. Это поля ‘Статус’ и ‘Оплачено’. При расчете каждого их этих полей используется выражение ‘Оплачено’. Без применения рассматриваемого атрибута выражение будет рассчитано два раза (по числу полей) для каждой строки. Применение атрибута позволяет рассчитать данное выражение один раз для строки.

Ограничения на отбор данных

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

Ранее было приведено описание атрибута ‘Ограничения по классам/типам’, предназначенного для задания ограничений только по классам и типам объектов. Ограничения по классам и типам выделены в отдельный атрибут по той причине, что в случае ограничений по этим параметрам возможна оптимизация отбора данных из БД. При задании ограничений по любым другим параметрам оптимизировать отбор данных невозможно.

Для описания ограничения имеются следующие атрибуты:

image-1648034014212.png

При описании условия сначала выбирается параметр объекта, на который будет наложено ограничение. Затем указывается вторая часть равенства. Можно указать либо константу, либо переменную, выражение, функцию или другой параметр объекта. Условие считается выполненным, если значение параметра объекта равно указанному значению параметра из второй части условия.

Where BETWEEN – для задания ограничения по диапазону значений.

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

Where LIKE – для задания ограничения по вхождению подстроки.

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

Ограничения по диапазону и по вхождению подстроки практически не применяются.

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

image-1648034165601.png

Для вида просмотра ‘Расчетные счета партнера’ указаны оба атрибута для задания ограничений на отбор данных. Атрибут ‘Ограничения на класс/тип объектов’ содержит ограничение на тип партнера ‘Расчетный счет’. В атрибуте ‘Ограничения на отбор данных’ указано ограничение на родителя записи.

Вид просмотра зависимых записей

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

При задании атрибута выбирается уже существующий в проекте вид просмотра.

image-1648034201293.png

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

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

image-1648034391614.png

У записи могут быть наследники различных типов и классов. Для вызова видов просмотра других наследников придётся задействовать другие клавиши и кнопки на панели инструментов. С клавишей <Серый плюс> и кнопкой Вперед связывается только один вид просмотра – тот, который указан в рассматриваемом атрибуте.

Выбор типов создаваемых объектов

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

Для описания атрибута применяются два атрибута:

Формы для ввода обоих атрибутов идентичны и содержат одно поле ‘Тип или класс’. Значение поля выбирается из списка зарегистрированных в проекте классов и типов объектов.

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

image-1648034590997.png

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

Примеры.

image-1648034622883.png

В виде просмотра партий товара разрешено создавать только партии, т.е. товары любого типа с классом ‘ПАРТИЯ ТОВАРА’.

image-1648034649807.png

В иерархическом виде просмотра подразделений на верхнем уровне иерархии может располагаться только Организация. На других уровнях можно создавать партнеров класса ‘ПОДРАЗДЕЛЕНИЕ’.

Создание группы видов просмотра, объединенных в одной папке

Группа видов просмотра создается для объединения в одной папке (под одним названием) нескольких видов просмотра. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.

image-1648034688833.png

Группа Видов просмотров может содержать неограниченное число Видов просмотров, Групп видов просмотров и Подстановок видов просмотров.

Подстановка вида просмотра

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

Например. В библиотеке ‘!Базовый набор’ имеется вид просмотра ‘Приходные товарные документы’.

image-1648034724555.png

Найдем подстановку данного вида просмотра. Она находится в библиотеке ‘#Товародвижение’.

image-1648034741366.png

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

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

image-1648034769889.png

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

Поскольку библиотека ‘Торговая сеть’ в дереве проекта находится ниже библиотеки ‘#Товародвижение’, то для вида просмотра будет применен тот список полей, который указан во второй подстановке (из библиотеки ‘Торговая сеть’).

 

Форма

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

Формы можно описывать в разделе ‘Формы’ верхнего уровня любой библиотеки, либо внутри объектных разделов в разделе ‘Формы’. Раздел ‘Формы’ верхнего уровня библиотеки  содержит те формы, которые не используются для ввода какого-либо объекта. В объектные разделы помещают формы для ввода объектов. Например,  раздел ‘Документы’, раздел ‘Формы’ содержит формы документа. Другие примеры форм объектов приведены в главах, посвященных объектам.

Формы в дереве проекта обозначены иконкой image-1648036956119.png.

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

image-1648036971733.png

При заведении формы заполняются наименование (поле ‘Имя’) и родитель (поле ‘Форма’).

image-1648036991563.png

Описание формы

Для формы можно указать следующие атрибуты:

image-1648037035077.png

Например. Для формы отчета изменена обработка команды ‘Назад’.

image-1648037078448.png

Сценарий

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

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

При описании сценария доступны все те атрибуты, которые рассматривались в главе ‘Сценарии’.

image-1648037161253.png

Если требуется, чтобы кнопка была подписана, то при описании кнопки необходимо ввести значение в поле ‘Имя’.

Рассмотрим пример панели инструментов. Библиотека ‘! Товародвижение’, раздел ‘Продукт’, раздел ‘Формы’, папка ‘Торговля’, форма ‘Товар’.

image-1648037205484.png

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

image-1648037214267.png

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

image-1648037231164.png

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

image-1648037247223.png

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

Закладки

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

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

Все закладки формы регистрируются в разделе ‘Закладки’.

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

image-1648037343641.png

Форма описания закладки содержит только одно поле ‘Имя’.

Распределение полей формы по закладкам происходит при описании полей с помощью атрибута ‘Закладка’.

Пример формы с закладками:

image-1648037383701.png

Для формы указаны четыре закладки: ‘Осн. данные’, ‘Адрес’, ‘Дополн.’, ‘Представитель’. Наименование текущей закладки отображается в заголовке формы.

Вот так выглядит распределение полей по закладкам для этой формы.

image-1648037407182.png

Поле ‘Код КПП организации’ отнесено к закладке ‘Осн. данные’. Поля ‘Почтовый индекс’ и ‘Страна’ распределены в закладку ‘Адрес’. Распределение остальных полей на рисунке не показано.

Список полей формы

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

При описании списка полей доступны следующие типы проектных элементов.

image-1648037593943.png

Поле (колонка), являющееся параметром объекта

Поля типа ‘Поле (колонка), являющееся параметром объекта’ обозначены в дереве проекта иконкойimage-1648037764657.png.

При описании поля данного типа требуется указать ‘Имя’ и ‘Класс’.

image-1648037638286.png

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

Если не заполнить подсказку, то в качестве подсказки будет применено наименование того проектного элемента, ссылка на который находится в поле ‘Класс’.

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

image-1648037661577.png

Назначение большинства атрибутов совпадает с назначением подобных атрибутов колонки вида просмотра. Подробное описание таких атрибутов находится в главе ‘Виды просмотра’.

Рассмотрим остальные атрибуты.

Рассмотрим простой пример. В библиотеке ‘! Базовый набор’, в разделе ‘Партнер’, в папке ‘Оборудование’ имеется форма ‘Оборудование’. Для этой формы описаны два поля, являющиеся параметрами объекта Партнер.

image-1648037721139.png

В данной форме поля ‘Класс’ и ‘Тип’ имеют тип ‘Поле (колонка), являющееся параметром объекта’ и применены только для отображения данных. Значения в этих полях изменить нельзя.

Поле (колонка) для ввода данных

Поля данного типа обозначены в дереве проекта иконкойimage-1648037790619.png.

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

image-1648037807231.png

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

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

image-1648037825880.png

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

image-1648037866166.png

В рассмотренном примере для поля ‘Весы’ задан признак ‘Не устанавливать фокус при входе в форму ввода’. При запуске формы курсор будет установлен на следующее поле - ‘PLU код’.

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

           Например.

image-1648037914913.png

Форма содержит два поля: ‘Поставщик’ и ‘Партнер: глобальная переменная’. Для дальнейшего алгоритма обработки формы проектировщику потребовалось занести в оба поля введенное пользователем значение контрагента документа. Первое поле применяется для ввода данных и заполняется в момент ввода. Для второго поля указано выражение для расчета, в соответствии с которым в данное поле копируется значение из первого поля. Отображать в форме второе поле не следует, поэтому для этого поля задан рассматриваемый признак.

Условие ссылается на выражение. Если выражение возвращает истинное значение, то поле будет отображено в форме.

image-1648037954598.png

Поле ‘Юридическое лицо’ появится в форме только в том случае, если выражение ‘Учет по Юридическим лицам’ вернет истинное значение.

Например. Форма товара содержит поле ‘Товарная группа’. Это поле содержит ссылку на товарную группу. Требуется отобразить не только наименование подгруппы, но и код подгруппы. Это делается следующим образом.

image-1648038001261.png

Рассматриваемый атрибут  содержит ссылку на выражение ‘Код подгруппы + Полное наименование подгруппы’. Вот так описано в проекте данное выражение.

image-1648038035759.png

Выражение возвращает объединение кода подгруппы, наименования товарной группы и наименования подгруппы.

image-1648038076723.png

Форма пользователя содержит поле для выбора сотрудника. При заполнении этого поля будет применен вид просмотра ‘Выбор сотрудника’.

image-1648038112942.png

При создании нового региона в поле ‘Страна’ будет предварительно записан текст ‘Россия’. Это значение можно изменить на другое.

Например. При вводе строки документа в поле ‘Продукт’ должна быть записана ссылка на запись таблицы ‘Продукт’. Конечно, можно ограничить пользователя единственным способом заполнения поля - выбрать продукт из списка. Тогда достаточно указать атрибут ‘Выбор из списка’.

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

image-1648038160178.png

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

image-1648038184198.png

Сначала введенное в поле значение проверяется на принадлежность к кодам товаров. Затем – на принадлежность к штриховым кодам. И в конце проверяется, не находится  ли введенное значение среди тех кодов продуктов, которые назначил поставщик.

image-1648038212620.png

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

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

image-1648038243481.png

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

При описании атрибута ‘Выражение’ доступны следующие типы проектных элементов.

image-1648038272961.png

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

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

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

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

image-1648041449182.png

Пример. При вводе строк документа заказа для поля ‘Количество’ указана проверка введенного значения. Если значение поля будет больше остатка товара, то пользователь увидит соответствующее сообщение. 

image-1648041486404.png

           Пример.

Для формы ‘Банк’ указаны две закладки: ‘Основные данные’ и ‘Адрес’. Т.е. все поля формы распределены на две группы. Для зачисления поля в группу необходимо выбрать соответствующую закладку.

image-1648041528841.png

На следующем рисунке показано назначение атрибута Закладка для четырех полей. Для остальных полей атрибут задается аналогичным образом.

image-1648041561095.png

Все поля формы разделены на две группы. ‘Код’ и ‘Наименование’ отнесены к группе (закладке) ‘Основные данные’. Группа ‘Адрес’ содержит поля ‘Страна’ и ‘Город’. В какие группы зачислены другие поля на рисунке не показано для экономии места.

            Вот так выглядят закладки в форме

image-1648041612107.png

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

image-1648041704608.png

Поскольку в аналитику могут быть записаны разные объекты, то затруднительно придумать единое название поля для всех возможных случаев. Данный атрибут позволяет в качестве названия использовать наименование того объекта, который записан в поле документа ‘Аналитика 1 -Кредит’.

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

Ввод больших текстов: 

image-1648041935025.png

Ввод даты с помощью календаря:

image-1648041961080.png

Выбор файла или директории

image-1648042032026.png

Создание группы форм, объединенных в одной папке

Группа форм создается для объединения в одной папке (под одним названием) нескольких форм. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.

image-1648042067456.png

Группа форм может содержать неограниченное число форм, Групп форм и Подстановок форм.

Подстановка формы

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

Например. В библиотеке ‘!Товародвижение’ имеется форма ‘Товар’.

image-1648042104320.png

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

image-1648042122807.png

В подстановке изменен список полей формы и сценарий. Добавлено описание атрибутов ‘Закладки’ и ‘Локальные переменные’.

Параметры

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

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

В целях облегчения администрирования и ориентирования в дереве проекта были составлены правила заполнения раздела ‘Параметры’ для различных библиотек.

Правила для описания параметров объектов

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

Правила для описания переменных, выражений и функций

Атрибуты раздела ‘Параметры’

Внутри раздела ‘Параметры’ на верхнем уровне библиотеки можно создать элементы следующих типов:

image-1648053635236.png

Для раздела ‘Параметры’ из объектного раздела список возможных элементов меньше. Например внутри раздела ‘Продукт’ можно создать элементы следующих типов:

image-1648053655848.png

Переменные в проекте

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

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

Все переменные в дереве проекта обозначены иконкойimage-1648053919150.png.

Цвет иконки зависит от статуса проектного элемента. Если проектировщик присвоил переменной статус ‘Экспортный (Публичный’), то отображается иконка зеленого цвета. Для непубличных переменных используется иконка синего цвета.

Глобальные переменные

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

Обычно глобальные переменные задаются либо в базовом разделе ‘Системная область’, раздел ‘Параметры’, папка ‘Глобальные переменные’, либо в библиотеке ‘!Базовый набор’, раздел ‘Параметры’, папка ‘Глобальные переменные’.

image-1648053961948.png

image-1648053975067.png

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

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

image-1648054039409.png

Типы данных подразделяются на две группы. Первую группу составляют стандартные типы данных. Вторая группа состоит из производных типов, которые создаются на основе стандартных.

Рассмотрим подробнее стандартные типы данных.

image-1648054061176.png

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

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

image-1648054100304.png

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

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

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

Контекстные переменные

Замысел появления контекста в Домино заключался в том, чтобы с помощью контекста точнее понимать смысл действий программы в отношении обрабатываемых данных. Иными словами, проектировщик, анализируя контекст, понимает какие именно объекты обрабатываются в рассматриваемом  месте программы. Для того чтобы контекстом было удобно пользоваться, контекст должен содержать как можно меньше частей. Этого можно добиться, если для каждого объекта завести свою переменную, в которую записывать UID текущей записи объекта.

Контекст – это набор значений специальных (контекстных) переменных, содержащих идентификаторы текущих записей основных объектов БД.

Контекстные переменные перечислены в библиотеке ‘Системная область’, раздел ‘Параметры’, папка ‘Контекстные переменные’.

image-1648054282881.png

Список содержит контекстные переменные по всем объектам.

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

Форма и атрибуты контекстной переменной совпадают с формой и атрибутами глобальной переменной.

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

Контекстным переменным отводится следующая роль:

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

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

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

Локальные переменные

Локальная переменная – это переменная, действующая только внутри процедуры, функции или выражения.

При описании процедуры (функции, выражения) можно указать необходимые локальные переменные в разделах ‘Локальные переменные’ или ‘Формальные параметры’. Здесь же задаются начальные значения переменных.

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

Если локальные переменные расположены в разделе ‘Формальные параметры’, то это означает, что процедура имеет соответствующие параметры для вызова.

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

Описание локальной переменной похоже на описание глобальной и контекстной переменных.

Параметры объектов

В Домино имеются следующие основные таблицы БД для хранения объектов:

Таблица ‘Обороты’ реально не существует. Она является виртуальной сущностью (view), которая появляется только в процессе расчета оборотов. Эта таблица имеет описание в проекте только для того, чтобы проектировщики могли использовать  параметры таблицы.

Таблицы ‘Сальдо’, ‘Контрольная точка’ и ‘Сальдо по контрольной точке’ доступны только для чтения. Запись данных в эти таблицы осуществляется специальными средствами.

Каждая таблица содержит строки (записи) и столбцы (поля, параметры). Одному объекту соответствует одна запись таблицы. Характеристики объекта записываются в параметры таблицы.

Все параметры необходимо зарегистрировать в проекте. Часть параметров являются обязательными. Такие параметры называются стандартными, они перечислены в базовом разделе ‘Системная область’ в объектных разделах.

Например, список стандартных параметров таблицы ‘Каталог’ находится внутри раздела ‘Каталог’ в разделе ‘Параметры’.

image-1648054598894.png

Остальные параметры находятся в декларативных библиотеках. Например, в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648054619819.png

Разрешено добавлять параметры только для таблиц ‘Пользователь’, ‘Протокол’, ‘Каталог’, ‘Партнер’, ‘Продукт’, ‘Строка’, ‘Документ’.

Параметры в дереве проекта обозначены иконкой image-1648054662251.png.

В форме параметра заполняются наименование параметра и класс значения.

Класс значения определяет тип данных, записываемых в параметр. Подробнее о типах данных написано выше (текст о глобальных переменных).

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

image-1648054696989.png

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

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

Выражения

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

Выражения в дереве проекта обозначены иконкойimage-1648054802577.png.

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

image-1648054824728.png

image-1648054899408.png

Если отсутствует условие ‘Иначе’ и ни одно из правил сравнения не было выполнено, то результат равен NULL.

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

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

image-1648054979699.png

image-1648055017678.png

Обязательное наличие сразу обоих разделов То и Иначе не требуется.

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

image-1648055056836.png

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

Для переменных типа ДАТА перечисленные операции имеют особый смысл:

Для переменных типа UIDSET (список уникальных идентификаторов) и UID перечисленные операции имеют следующий смысл:

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

Истинное и ложное значения операндов

Для логических операций имеются понятия истинного и ложного значений. Коротко истинное значение называют TRUE, а ложное – FALSE.

Считается, что числовой операнд имеет истинное значение, если число не равно ни 0, ни  NULL. Числовой операнд имеет ложное значение в противном случае (т.е. равен либо 0, либо NULL).

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

Операнд типа UID объекта имеет истинное значение, если UID не равен NULL. Операнд типа UID объекта имеет ложное значение, если UID равен NULL.

Функции

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

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

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

Функции различаются по способу создания. Если функция разработана программистом на языке Visual С++, то код функции записан в динамической библиотеке. В проекте находится только декларация функции, причем атрибут ‘Точка входа’ содержит ссылку на динамическую библиотеку.

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

Для функций поддерживается механизм наследования. Функции самого верхнего уровня являются базовыми. У базовых функций имеются следующие атрибуты:

image-1648055515115.png

Для функций, не являющихся базовыми, можно указать следующие атрибуты:

image-1648055574303.png

Функции на языке скриптов имеют множество дополнительных атрибутов. Подробнее о таких функциях написано в книге ‘Язык скриптов’.

 Функция может иметь параметры, которые требуется заполнить при ее вызове. Параметры могут быть обязательные, необязательные и неявные.

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

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

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

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

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

Функция называется контекстно-зависимой если функция имеет неявные параметры, и эти параметры являются контекстными переменными.

image-1648055703177.png

Функция ‘Курс РУБ (по контексту)’  имеет три неявных параметра: ’Дата документа’, ‘Валюта’, ‘Национальная валюта расчетов’. Два первых параметра являются контекстными переменными, а третий – глобальная переменная.

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

image-1648055738184.png

Создание группы параметров, объединенных в одной папке

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

image-1648055773266.png

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

Подстановка функции

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

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

Рассмотрим основные атрибуты функции на языке скриптов.

image-1648055833624.png

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

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

Значение признака ‘Прервать при наличии ошибок’ в подстановке также заменяет значение этого признака в описании функции.

 

Процедуры

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

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

Процедуры различаются по способу создания. В одном случае процедура разрабатывается программистом на языке программирования (чаще всего на Visual С++) и подключается к Домино с помощью динамической библиотеки (файл с расширением dll). В проекте находится только декларация этой процедуры. Атрибут ‘Точка входа’ в описании такой процедуры обязательно должен быть заполнен.

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

Раздел ‘Процедуры’ может находиться либо на верхнем уровне любой библиотеки, либо внутри объектных разделов. В разделе ‘Процедуры’ на верхнем уровне библиотеки описываются те процедуры, которые одновременно обрабатывают несколько объектов. В объектных разделах, как правило, находятся процедуры для обработки одного конкретного объекта.

Для процедур поддерживается механизм наследования. Процедуры самого верхнего уровня являются базовыми. У базовых процедур имеются следующие атрибуты:

image-1648100481475.png

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

image-1648100588089.png

Сообщения об ошибках будут добавлены в файл export_news.log.

image-1648100614471.png

Протокол будет высвечен на экране.

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

image-1648100675655.png

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

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

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

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

Параметры могут быть обязательные, необязательные и неявные.

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

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

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

Процедура-метод

Процедура может быть оформлена либо как обычная процедура, либо как процедура-метод.

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

Отличие процедур от процедур-методов заключается в команде возврата при возникновении ошибки в процессе выполнения. Если произошла ошибка, то процедура возвращает команду cmdCONTINUE, а процедура-метод – команду cmdRETURN_ CANCEL. Если выполнение завершилось без ошибок, то и обычная процедура, и процедура-метод возвращают команду cmdCONTINUE. Для процедур и процедур-методов есть также возможность явного задания команды возврата с помощью оператора RETURN. Подробнее о командах возврата написано в книге ‘Язык скриптов’.

Создание группы процедур, объединенных в одной папке

Группа процедур создается для объединения в одной папке (под одним названием) нескольких процедур. Это делается для того, чтобы было легче ориентироваться в многообразии элементов одного вида в дереве проекта.

image-1648100779073.png

Группа процедур может содержать неограниченное число процедур, Групп процедур и Подстановок процедур.

Подстановка процедуры

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

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

Рассмотрим основные атрибуты процедуры на языке скриптов.

image-1648100810970.png

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

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

Значение признака ‘Прервать при наличии ошибок’ в подстановке также заменяет значение этого признака в описании процедуры.

Выборки

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

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

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

Полное описание стандартных индексов находится в базовом разделе ‘Системная область’ в разделах, соответствующих объектам БД.

image-1648100918140.png

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

image-1648100947470.png

Для примера рассмотрим базовые выборки для таблицы ‘Каталог’.

image-1648100964911.png

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

Одна из базовых выборок объекта не связана ни с одним из индексов. При использовании данной выборки программа сама подбирает подходящий индекс.

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

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

image-1648101026339.png

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

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

image-1648101063407.png

Для выборки можно указать следующие атрибуты:

image-1648101080585.png

Последние два элемента из списка атрибутов выборки разрешают наследование соответствующих атрибутов.

Примеры использования выборок.

image-1648101137953.png

Данные для вида просмотра ‘Все продукты в порядке ввода’ отбираются с помощью одноименной выборки.

image-1648101158409.png

В описании базового отчета ‘ДОКУМЕНТЫ’ находится ссылка на одноименную базовую выборку.

 

Отчёты

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

В проекте имеются отчёты двух видов. Первый – обычные отчёты. Отчёты этого вида были изначально включены в Домино и обозначаются иконкойimage-1648101342333.png. С появлением языка скриптов появилась возможность разрабатывать отчёты на этом языке. Отчёты второго вида оформляются в виде процедур на языке скриптов и находятся в разделе ‘Процедуры’. Подробнее об отчётах на языке скриптов можно прочитать в книгах ‘Язык скриптов’ и ‘Язык скриптов. Отчёты’.

Дальнейшее описание касается только обычных отчётов.

Отчёты можно описывать в разделе ‘Отчёты’ верхнего уровня любой библиотеки, либо внутри объектных разделов в разделе ‘Отчёты’. Раздел ‘Отчёты’ верхнего уровня библиотеки  содержит такие отчёты, которые рассчитываются по нескольким объектам. В объектные разделы помещают отчёты, обрабатывающие один конкретный объект.

При создании нового отчёта будет предложено выбрать тип создаваемого объекта.

image-1648101409954.png

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

image-1648101440544.png

Часть атрибутов на рисунке не отображена, поскольку  наличие тех или иных атрибутов в списке зависит от месторасположения описания  отчета в проекте. В списке ниже перечислены все возможные атрибуты базового отчета.

Список атрибутов обычного отчета несколько иной.

image-1648101551280.png

На картинке отображены не все атрибуты.

Подробное описание и примеры использования перечисленных атрибутов приведены в книге ‘Отчеты’.

 

Списки (Кодификаторы, Классификаторы), Классификация значений

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

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

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

Авторы проектов могут описывать классификаторы в своих библиотеках.

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

Описание централизованно заведенных классификаторов находится в декларативных библиотеках. В частности, в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

Значения классификаторов расположены в предназначенных для этого библиотеках. Например, в библиотеке <<Списки, Кодификаторы>>.

image-1648102695980.png

Заведение классификатора происходит в два этапа: описание типа классификатора и ввод значений.

Сначала в разделах ‘Списки (Кодификаторы, Классификаторы)’, ‘Классификация значений’ и ‘Виды просмотра’ создаются необходимые проектные элементы, составляющие описание типа классификатора.

Значения классификатора вводятся в разделе ‘Списки (Кодификаторы, Классификаторы)’.

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

Описание типа классификатора

Раздел Списки (Кодификаторы, Классификаторы) содержит три раздела для описания типа классификатора.

image-1648103172915.png

Раздел ‘Классификация значений содержит описания классов значений, вводимых в классификатор.

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

Описание классификатора выполняется в шесть этапов:

  1. заведение типа элемента для классификатора;
  2. описание подстановки значения классификатора (если предполагается применять подстановки значений);
  3. заведение атрибутов (если требуется);
  4. заведение раздела для ввода значений;
  5. описание вида просмотра.
  6. заведение класса значений;

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

1, 2, 3. Описание типа элемента для классификатора находится в базовом разделе ‘Системная область’, раздел ‘Списки (Кодификаторы, Классификаторы)’, раздел ‘Примитивы’.

image-1648131788700.png

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

4.  В базовом разделе ‘Системная область’, раздел ‘Списки (Кодификаторы, Классификаторы)’, раздел ‘Разделы’ находится описание раздела.

image-1648131824221.png

5. Вид просмотра значений данного классификатора расположен в базовом разделе ‘Системная область’, раздел ‘Виды просмотра’, папка ‘Выбор элемента списка (кодификатора)’.

image-1648131853545.png

6. Описание класса значения можно найти в базовом разделе ‘Системная область’, раздел ‘Классификация значений’, папка ‘Проектные’.

image-1648131839185.png

При заведении класса значения ссылались на уже введённые тип элемента и вид просмотра.

Заполнение классификатора

Значения классификатора вводятся в разделе ‘Списки (Кодификаторы, Классификаторы)’.

Значения рассматриваемого классификатора единиц измерения указаны в библиотеке <<Списки, Кодификаторы>>, разделе ‘Списки (Кодификаторы, Классификаторы)’, раздел ‘День недели’.

image-1648132461160.png

Форма для ввода значения выглядит вот так:

image-1648132470822.png

Поле ‘Имя’ является обязательным и всегда содержится в форме. Поле ‘Значение’ потому добавлено в форму, что в описании типа элемента имеется соответствующий атрибут.

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

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

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

image-1648103735414.png

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

image-1648103754827.png

Применение классификатора

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

Например. Один из параметров продукта имеет тип ‘ЕИ’. 

image-1648103782634.png

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

image-1648103800711.png

 

<<Разделы>>

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

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

Например, в библиотеке ‘Торговая сеть’ разрешены следующие разделы для Приложения:

image-1648143967986.png

Если в проекте есть несколько разделов ‘Разделы’, то их содержимое объединяется  сверху вниз. Т.е. вначале в итоговый список заносится содержимое из верхней библиотеки. Затем добавляется содержимое раздела библиотеки, находящейся в дереве проекта ниже. Если элемент уже имеется в итоговом списке, то меняется описание элемента.

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

image-1648144002956.png

При заполнении списка разделов необходимо выбрать тип элемента ‘Указатель на элемент’ и найти требуемый раздел в предложенном перечне значений.

Описание основных разделов дерева проекта находится в базовом разделе ‘Системная область’, папка ‘Разделы’.

image-1648144039356.png

 

Действия, выполняемые при старте системы

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

Форма действия содержит два поля ‘Имя’ и ‘Класс’. Поле ‘Класс’ заполняется ссылкой на имеющуюся в проекте процедуру.

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

Процедуры выполняются строго в том порядке, в котором они перечислены в проекте.

Если в проекте имеется несколько разделов ‘Действия, выполняемые при старте системы’, то содержимое разделов объединяется сверху вниз. Т.е. вначале в итоговый список заносится содержимое из верхней библиотеки. Затем добавляется содержимое раздела библиотеки, находящейся в дереве проекта ниже.

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

Пример.

image-1648144237016.png

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

 

Форматы

Формат применяется для отображения и ввода (для дат и чисел) данных в определенном виде.

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

image-1648144298202.png

В форме формата заполняются наименование (поле ‘Имя’) и описание формата (поле ‘Формат’).

image-1648144327450.png

Для описания формата применяются специальные правила и соглашения. Рассмотрим их подробнее.

Данные могут быть отображены в одном из следующих типов формата:

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

Строковый формат 'S'

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

'S' [Регистр] [Ширина]

Числовой формат 'N'

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

'N' [Ширина [Точка [[-]Точность] [Разделитель тысяч]]

 Текстовый формат 'A' для чисел

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

'A' [Регистр] [Ширина ['.' Точность] ]   

     ['|' Наименование целой части

        ['|' Наименование дробной части]]

Формат A (Alpha) позволяет выводить числа в текстовом представлении, например 'Двадцать три килограмма 975 грамм' и т.п. Если по этому формату выводятся данные строкового типа, то они интерпретируются как число. Формат позволяет производить согласование рода единицы измерения (мужской/женский/средний род) и имени числительного разряда единиц, например: 'один рубль', 'одна лира', 'одно место'. Кроме того, производится согласование числа (единственное/множественное) единицы измерения со значением разряда единиц, например: 'один рубль', 'два рубля', 'пять рублей'. Язык преобразования - русский.

Структурно формат состоит из следующих трех частей, разделенных знаками '|':

Регистр – задает преобразование строки к верхнему/нижнему регистру:

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

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

Для каждого слова можно задать окончания для единственного и множественного числа. Окончания задаются через знак '~'. Можно указать произвольное число окончаний, однако используются первые три. Первое окончание - окончание единственного числа, второе - множественного числа для количества 2, 3 и 4, и третье - множественного числа для количества 5 и более, а также для нулевого количества.

Примеры:

Запись 'рубл~ь~ля~ей' обуславливает получение следующих словосочетаний:

Запись '?рабоч~ее~их~их мест~о~а' обуславливает получение следующих словосочетаний:

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

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

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

Пример:

число 3,560,072.07004 по формату 'A40.2|рубл~ь~я~ей |*копе~йка~йки~ек'

будет представлено так: Три миллиона пятьсот шестьдесят тысяч семьдесят два рубля 07 копеек

Формат 'D' для даты и времени

Формат для даты применяется для отображения даты в строковом виде с использованием маски. Данный формат описывается следующим образом:

'D' [Регистр] [Ширина [Разделитель]] ['|' Маска]

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

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

(*) для наименований допустимо задавать поля любой ширины, а не только той, которая указана выше (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

Поддерживаются 8 стандартных форматов:

    1. DD/MM/YY - ширина от 1 до 8 символов;
    2. DD-MMM-YY - ширина 9 символов;
    3. DD/MM/YYYY - ширина 10 символов;
    4. DD-MMM-YYYY - ширина от 11 до 15 символов;
    5. DD MMMMMMMMMM YYYYг. - ширина от 20 до 36 символов;
    6. WWWWWWWWWWWW, DD MMMMMMMMMM YYYY года - ширина свыше 36 символов;
    7. DD/MM/YYYY HH:NN – ширина 16 символов;
    8. DD/MM/YYYY HH:NN:SS - ширина от 17 до 19 символов.

Примеры вывода даты 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,
yyyy, wwwwwwwwwwww'

April 17, 2006, Monday

'D16'

17/04/2006 17:34

'D19'

17/04/2006 17:34:21

Формат 'H' для времени

Формат для времени применяется для отображения времени в строковом виде с использованием маски. Данный формат описывается следующим образом:

'H' [Регистр] [Ширина [Разделитель]] ['|' Маска]

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

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

Примеры задания масок (время 11 часов 22 минуты 45 секунд):

HH:NN                                  11:22

HH:NN:SS                             11:22:45

Примеры вывода времени 11 часов 22 минуты 45 секунд с использованием различных форматов:

Формат

Результат

'H5'

11:22

'H8-'

11-22-45

'H__|NN-SS'

22-45

'H__|Время HH часов NN минут'

Время 11 часов 22 минут

Описания форматов в проекте

В дереве проекта описание основных используемых форматов находится в базовом разделе ‘Системная область’, раздел ‘Форматы’.

Для удобства все форматы распределены по папкам.

image-1648145136665.png

Папка ‘Дата и время’ содержит форматы для даты и времени.

image-1648145153519.png

Папка ‘Строка’ содержит два строковых формата.

image-1648145173095.png

Первый формат применяется для строк указанной ширины (100 символов). При использовании второго формата ширина строки задается как параметр формата.

image-1648145197872.png

В папке ‘Числовые’ находятся форматы для отображения чисел.

image-1648145225993.png

Текстовые форматы для отображения чисел расположены в папке ‘Сумма прописью’.

image-1648145246488.png

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

Авторы проектов могут добавлять необходимые им форматы в раздел ‘Форматы’ проектных библиотек. Например:

image-1648145270506.png

 

Структура базы данных

Данный раздел содержит описания дополнительных таблиц БД и запросов для выборки данных.

Внутри раздела можно создать следующие папки:

image-1648145340139.png

Подробное описание атрибутов таблиц и запросов приведено в книге ‘Язык скриптов’.

Таблицы, Просмотры

Данные разделы содержат описания дополнительных таблиц БД.

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

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

Для таблиц из раздела ‘Просмотры’ синхронизация не выполняется.

Таблицы также могут быть описаны в атрибуте ‘Таблицы’ процедуры.

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

image-1648145426053.png

image-1648145440421.png

При описании таблицы доступны следующие атрибуты:

image-1648145471292.png

Например.

image-1648145501200.png

Библиотека ‘Новые примитивы почты’ содержит раздел ‘Структура базы данных’, в котором описаны таблицы для работы почтовой службы.

Запросы

В данном разделе описываются SQL запросы для выборки данных из таблиц БД. Описание запроса в ДОМИНО выполнено для стандарта SQL92. Для запросов можно применить механизмы наследования, запуск с параметрами, условия включения отдельных частей. Все это позволяет  выделить общую базовую часть для сложных и часто используемых запросов. При создании запроса можно ссылаться на базовые запросы и указывать нужные параметры, сортировки, условия отбора и т.д.

Запросы могут быть вложенными, т.е. их можно указывать не только в  разделе ‘Запросы’, но и внутри конструкций FROM, WHERE, IN, EXISTS, HAVING, в выражениях. При описании запроса можно сослаться на уже существующий запрос. В этом случае по правилам наследования становятся доступны атрибуты запроса-родителя.

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

image-1648145561131.png

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

image-1648145588636.png

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

 

Планы счетов

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

image-1648203961137.png

image-1648203983698.png

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

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

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

image-1648204029952.png

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

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

При заполнении поля ‘План’ значение выбирается из списка планов счетов.

image-1648204097427.png

Для класса счета можно указать следующие атрибуты:

image-1648204115994.png

Рассмотрим пример описания класса счета для товарного плана.

image-1648204161348.png

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

Сальдо изменяется в момент создания проводки. Имеются пять правил расчета сальдо по проводке.

image-1648204195139.png

Повторю еще раз другими словами.

Условия, при которых проводка не создается:

          1. До создания проводки: Сальдо.Дебет – Сальдо.Кредит > 0

После создания проводки: Сальдо.Дебет – Сальдо.Кредит < 0

          1. До создания проводки: Сальдо.Дебет – Сальдо.Кредит < 0

После создания проводки: Сальдо.Дебет – Сальдо.Кредит < 0

и эта разность увеличилась.

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

image-1648204462907.png

При создании нового счета будет предложено выбрать тип создаваемого элемента.

image-1648204506094.png

            Счета и подстановки счетов обозначаются иконкой .

При заведении счета заполняются наименование счета (поле ‘Имя’) и родитель (поле ‘Класс’).

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

           Например, для товарного плана список классов счетов будет вот таким:

image-1648204573794.png

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

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

image-1648204602591.png

Описание субсчетов

Субсчета применяются при создании иерархии счетов.

image-1648204675448.png

Описание субсчетов в проекте полностью совпадает с описанием счетов.

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

Подстановка счета

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

Пример. В библиотеке ‘# Бухгалтерский план счетов для торговли’ находится описание счета.

image-1648204731247.png

Для счета указан признак использования ‘Нет’ и аббревиатура 15.01.

Требуется разрешить использование счета и изменить значение аббревиатуры.

image-1648204753945.png

В подстановке указано значение ‘Да’ для признака использования и значение 15.10 для аббревиатуры.

 

Основные объекты

В Домино применяется объектная модель данных. Для хранения объектов одного вида применяется отдельная таблица БД. Имеются следующие таблицы БД:

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

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

Права - характеристика, определяющая доступность для пользователя отдельных операций для работы с БД. В ДОМИНО права на выполнение операций с объектами БД привязаны к ролям. Для хранения назначенных пользователю ролей применяется таблица ‘Права’.

Нумератор – системный объект, предназначенный для нумерации других объектов БД. В программе применяются различные варианты нумерации объектов. И правила для расчета номеров либо заданы непосредственно в коде программы, либо описываются в проекте, либо хранятся в таблице ‘Нумератор’.

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

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

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

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

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

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

Проводка - бухгалтерское представление информации о движении учетных средств. Для хранения проводок применяется таблица ‘Проводка’.

Сальдо – текущий остаток учетных средств на счете по полному набору значений аналитик. Хранится в таблице ‘Сальдо’.

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

image-1648204908760.png

Проектировщик может вносить изменения в разделы ‘Пользователь’, ‘Протокол’, ‘Нумератор’, ‘Каталог’, ‘Партнер’, ‘Продукт’, ‘Документ’, ‘Строка’ и ‘Проводка’.

Описание объекта

Внутри объектного раздела создаются разделы для подробного описания объекта и алгоритмов его обработки.

image-1648204935374.png

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

Параметры

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

Имеются следующие соглашения для заполнения раздела ‘Параметры’ внутри объектных разделов:

Подробнее о понятиях параметр, выражение и функция написано в главе ‘Параметры’.

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

Классификация

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

В ДОМИНО применяется двухуровневая классификация объектов. Верхний уровень классификации называется классом объекта. Внутри класса объекты разделяются по типам. 

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

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

Классы и типы объектов описываются в разделе ‘Классификация’.

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

В базовом разделе ‘Системная область’ описаны по одному  классу для каждого объекта. Здесь же указаны базовые алгоритмы обработки объектов этих классов. Если использовать данные классы в качестве родителей при создании остальных классов, то не придется каждый раз повторять описание базовых алгоритмов.

Описание остальных классов расположено в декларативных библиотеках, таких как [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

Например, в разделе ‘Каталог’ имеется описание класса КАТАЛОГ. 

image-1648215232993.png

Остальные классы каталога созданы в декларативных библиотеках как наследники этого класса.

image-1648215249981.png

Алгоритмы из папок ‘Методы’ и ‘Права на выполнение действий над объектом’ наследуются от родителя.

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

image-1648215274509.png

При заведении класса заполняются наименование (поле ‘Имя’) и родитель (для данного примера – это поле ‘Каталог’).

Для класса можно указать следующие атрибуты:

image-1648215316253.png

image-1648215339210.png

Для объектов класса ‘Группа групп продуктов’ можно создавать наследников такого же класса, либо класса ‘Группа продуктов’.

            Можно указать следующие методы обработки: 

image-1648215375801.png

Методы создаются программистами и системными администраторами проекта. Авторы проектов имеют возможность указать в методах необходимые им процедуры.

Большинство методов меет смысл задавать только для объектов ‘Документ’ и ‘Строка’. Подробное описание назначения этапов акцепта и деакцепта находится в главах ‘Документ’ и ‘Строка’.

Код объекта состоит их двух частей. Одна часть рассчитывается программой по указанному алгоритму. Вторая часть вводится пользователем.

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

image-1648215480174.png

image-1648215510533.png

Можно указать только один из двух атрибутов:

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

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

Подробнее о нумерации объектов с применением нумераторов написано в главе ‘Нумератор’  .

image-1648215751776.png

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

Выборки

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

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

Подробнее о понятии и атрибутах выборки написано в главе ‘Выборки’.

Виды просмотра

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

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

Подробнее о понятии и атрибутах вида просмотра написано в главе ‘Виды просмотра’.

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

Формы

Форма объекта – это элемент проекта, который определяет содержание, доступные действия и порядок отображения данных в виде карточки. Форма объекта применяется для ввода и изменения записи об объекте.

Подробнее о понятии и атрибутах формы написано в главе ‘Формы’. 

Схемы копирования <объекта>

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

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

image-1648216804549.png

При описании схемы заполняются наименование (поле ‘Имя’) и родитель (поле ‘Класс’).

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

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

Базовая схема копирования строк находится в базовом разделе ‘Системная область’.

image-1648216856824.png

Базовая схема копирования документов расположена в библиотеке ‘! Базовый набор’.

image-1648216880150.png

Для схемы можно указать следующие атрибуты:

image-1648216897358.png

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

image-1648216932549.png

Если уже имеется документ с такими же значениями параметров ‘Родитель’, ‘Класс’ и ‘Тип’ как у нового документа, то процедура копирования отменяется.

Пример.

image-1648216959906.png

Новый документ будет создан при условии, что в исходном документе заполнены параметры ‘Дата счета-фактуры’ и ‘Номер счета-фактуры’.

Для примера рассмотрим одну из схем копирования документов, расположенную в библиотеке ‘# Товародвижение’.

image-1648217008046.png

На основе документа типа ‘Расход при внутреннем перемещении’ создается документ типа ‘Приход при внутреннем  перемещении’. В новом документе заполняются параметры ‘Дата’, ‘Контрагент’, ‘Подразделение’, ‘Номер сопутствующего документа’ и ‘Дата сопутствующего документа’. В эти параметры заносятся значения указанных в схеме параметров исходного документа. Для избежания повторного создания документа применяется атрибут ‘Ключевые поля для проверки наличия уже созданного объекта’. Описание этого атрибута по правилу наследования считывается у родителя схемы.

Схема может применяться либо при описании методов, либо в процедурах.

Примеры.

image-1648217028864.png

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

image-1648217057935.png

Для процедуры ‘Формирование реестров по документу’ четыре схемы копирования указаны в качестве параметров при вызове.

Процедуры

Данный раздел содержит описания процедур.

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

Подробнее о понятии и атрибутах процедуры написано в главе ‘Процедуры’.

Сценарии

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

Подробнее о понятии и атрибутах сценария написано в главе ‘Сценарии’.

Отчеты

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

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

Принято внутри объектных разделов создавать такие отчеты, которые обрабатывают один конкретный объект.

Подробнее о понятии и атрибутах процедуры написано в главе ‘Отчеты’.

 

Пользователь

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

Внутри раздела ‘Пользователь’ можно создать следующие разделы:

image-1648565772976.png

Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчёты’).

Рассмотрим описание пользователей на примерах.

Описание базовых параметров пользователя находится в базовом разделе ‘Системная область’.

image-1648565832153.png

Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648565849687.png

Единственные класс и тип пользователей описаны в базовом разделе ‘Системная область’.

image-1648565868354.png

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

image-1648565884334.png

Записи таблицы ‘Пользователь’ могут редактировать только те пользователи, которым назначена роль ‘Администратор пользователей’. Это условие задано в описании типа.

image-1648565902164.png

Базовая форма и форма пользователя находятся в базовом разделе ‘Системная область’.

image-1648565919743.png

Одна из подстановок формы сделана в библиотеке ‘Базовый набор’. В форму добавлено еще одно поле.

image-1648565936211.png

Отчеты для печати пользователей расположены в библиотеке ‘! Примитивы отчетов’.

image-1648565952576.png

 

Нумератор

Нумератор – список объектов нумерации и правил расчета номеров для этих объектов.

Данные для нумерации хранятся в таблице ‘Нумератор’.

Нумерация – процедура присваивания коду объекта нового уникального номера. Номера назначаются последовательно с шагом единица.

Возможные варианты назначения кода объекта:

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

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

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

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

Каждый нумератор идентифицируется составным ключом:

Способ нумерации (то есть принцип, по которому создаются номера) задается на класс объекта в разделе ‘Структура кода’. Подробнее об атрибутах данного раздела написано выше, в главе ‘Основные объекты’.

Рассмотрим стандартный алгоритм нумерации объектов:

  1. Вычисляется используемый нумератор по схеме, приведенной ниже.
  2. Нумератор возвращает новый номер.
  3. Если в атрибуте ‘Вводимая часть кода’ задана ширина кода, то полученный номер дополняется слева нулями.
  4. Если в атрибуте ‘Базовая часть кода’ определены префикс(базовая часть) и разделитель, то они вычисляются и присоединяются спереди к номеру.
  5. Запускается проверка наличия в базе данных объекта с полученным кодом. Если такой объект не будет обнаружен, то полученный код назначается объекту.

Если такой объект имеется, то повторяются этапы со 2 по 5.

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

Далее разберем схему вычисления применяемого нумератора. Как уже было сказано, нумератор идентифицируется набором из четырех параметров. При вычислении нумератора проводится анализ описания нумератора в разделе ‘Структура кода’ описания класса объекта и рассчитываются значения параметров.

Если атрибут не задан, то применяется UID класса объекта.

Если атрибут не задан, то применяется NULL.

Если атрибут не задан, то применяется NULL.

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

За исключением варианта, при котором:

В этом исключительном случае четвертый параметр принимает значение атрибута ‘Базовая часть кода’.

Кроме системных нумераторов проектировщики имеют возможность описать для своих целей другие нумераторы. Для этого достаточно завести новый тип или класс нумератора и обращаться к нему с помощью функции ‘НОВЫЙ ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР’.

Например. В библиотеке ‘# Товародвижение’ был заведен тип нумератора. Функция ‘НОВЫЙ ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР’ вызывается с параметром, в котором указан этот тип нумератора. Возвращаемый функцией номер применяется при создании кода в формате EAN13.

image-1648566190313.png

Класс и тип нумератора в библиотеке ‘# Товародвижение’

image-1648566213462.png

Пример использования функции ‘НОВЫЙ ПОСЛЕДОВАТЕЛЬНЫЙ НОМЕР’

image-1648566240040.png

Фрагмент формы ‘Штриховой код’. При заполнении поля формы применяется расчет номера с помощью специального нумератора.

В таблице ‘Нумератор’ имеются несколько записей, применяемых программой для формирования UID-ов объектов. Эти записи формируются в процессе создания базы данных и изменяются только триггерами.

 

Протокол

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

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

Для отражения этих действий в проекте имеются классы и типы записей протокола. Описание этих классов и типов находится в базовом разделе ‘Системная область’, раздел ‘Протокол’, раздел ‘Классификация’.

image-1648566651700.png

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

Кроме системного протоколирования проектировщик может организовать собственный вариант протоколирования важных событий.

Внутри раздела ‘Протокол’ можно создать следующие разделы:

Описание базовых параметров протокола находится в базовом разделе ‘Системная область’.

image-1648566670157.png

Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648566686724.png

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

Например, для протоколирования действий кассира при работе с модулем ‘Торговая касса’ имеются следующие типы в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648566706561.png

Для управления записью в протокол имеется набор специальных процедур, расположенных в библиотеке ‘! Примитивы скриптов’, раздел ‘Процедуры’, папка ‘Управление записью действий в протокол’.

image-1648566725697.png

 

Продукт

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

Внутри раздела ‘Продукт’ можно создать следующие разделы:

image-1648566811021.png

В базовом разделе ‘Системная область’ имеется описание одного дополнительного параметра.

image-1648566833609.png

Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).

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

Пример описания продукта

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

Рассмотрим возможный вариант действий автора проекта.

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

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

Описание базовых параметров продукта находится в базовом разделе ‘Системная область’.

image-1648566967397.png

Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648566985044.png

При выборе параметра необходимо обращать внимание на тип данных.

На этом этапе можно провести еще одно исследование.

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

image-1648567005113.png

Фрагмент списка функций для продукта из библиотеки ‘! Базовый набор

image-1648567030002.png

Фрагмент списка функций для продукта из библиотеки ‘# Товародвижение’

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

Классификация продуктов

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

Базовые классы продуктов описаны в базовом разделе ‘Системная область’.

image-1648567116536.png

Описание класса ‘ПРОДУКТ’ выглядит вот так.

image-1648567124551.png

Для продуктов данного класса указаны стандартный метод при удалении записи и разрешены все действия с записью. Ширина параметра ‘Код’ записи равна 6 символов.

В описании класса ‘ПАРТИЯ ПРОДУКТА’ указана подробная структура кода партии. Код партии состоит из двух частей. В базовую часть записывается код родителя партии (т.е. код базового товара), далее следует разделитель – точка. Вторая (вводимая) часть кода имеет ширину 3 символа. Партии получают последовательные номера в пределах базовой части.

image-1648567158605.png

Например, для товара 5436 партии будут иметь номера 5436.001, 5436.002, 5436.003 и т.д.

Системный признак ‘Класс продукта используется как ‘ПАРТИЯ’’ указывает область применения данного класса.

В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы продуктов.

Классы продукта ссылаются на два базовых класса. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’, ‘Права на выполнение действий над объектом’ и ‘Структура кода’.

image-1648567175302.png

Типы продукта созданы на основе перечисленных классов.

image-1648567190050.png

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

Для наших целей подходят два типа продукта: ‘Товар’ и ‘Партия товара’.

Посмотрим как описаны атрибуты этих типов.

Находим в библиотеке ‘# Товародвижение’ подстановку типа ‘Товар’.

image-1648567207148.png

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

В этой же библиотеке расположена подстановка типа ‘Партия товара’. В ней указаны сценарий и форма.

image-1648567225163.png

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

Структура товара

В подстановке типа ‘Товар’ указан атрибут ‘Структура (Состав, Содержание)’. Этот атрибут задает возможные типы наследников товара.

Для рассматриваемой задачи важно, что в списке имеется тип ‘Партия товара’. Значит будет возможно создавать партии для товаров. В противном случае пришлось бы создать подстановку типа ‘Товар’ и указать тип ‘Партия товара’ в значении атрибута ‘Структура (Состав, Содержание)’.

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

Либо можно запретить их использование с помощью подстановок этих типов.

Для типа ‘Партия товара’ структура не требуется.

Форма продукта

В описаниях рассматриваемых типов имеются ссылки на формы ввода. Рассмотрим формы подробнее.

Форма, заданная в подстановке типа ‘Товар’, находится в библиотеке ‘# Товародвижение’, раздел ‘Продукт’, раздел ‘Форма’.

image-1648567248153.png

Описание атрибутов ‘Список полей формы’ и ‘Сценарий’ включает содержимое соответствующих атрибутов родителя формы. Родителем данной формы является форма ‘ТОВАР’.

image-1648567263895.png

В этой форме имеется описание полей формы, которые по правилу наследования добавляются в список полей формы ‘Товар’.

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

Теперь перейдем к форме для ввода партии. Форма, заданная в подстановке типа ‘Партия товара’, находится в библиотеке ‘# Товародвижение’, раздел ‘Продукт’, раздел ‘Форма’.

image-1648567282229.png

Описание наследуемых полей для сценария надо искать у родителя формы.

image-1648567298047.png

Поля из этой формы по правилу наследования добавляются в список полей формы ‘Партия товара’.

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

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

Вид просмотра продуктов

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

Вид просмотра товаров должен быть расположен в разделе ‘Виды просмотра’ на верхнем уровне библиотеки. Попробуем найти подходящий.

В библиотеке ‘! Базовый набор‘, раздел ‘Виды просмотра’, папка ‘! Базовый набор’, папка ‘Продукт’, папка ‘Товары’ находится вид просмотра ‘Товары по коду (без партий)’.

image-1648567325101.png

Данный вид просмотра отображает все продукты класса ‘ТОВАР’, что и требуется для нашей задачи.

Рассмотрим родителя вида просмотра.

image-1648567341464.png

Здесь указана ссылка на вид просмотра для партий и сценарий для панели инструментов вида просмотра. Сценарий отложим до следующей главы, а сейчас перейдем к изучению вида просмотра с наименованием ‘Партионные товары данного товара’.

Заинтересовавший нас вид просмотра и его родитель находятся в библиотеке ‘! Базовый набор‘, раздел ‘Продукт’, раздел ‘Виды просмотра’. Местоположение в объектном разделе объясняется тем, что эти виды просмотра отображают товары, связанные с одним конкретным продуктом.

image-1648567358266.png

image-1648567366242.png

Данные виды просмотра отображают все продукты класса ‘ПАРТИЯ ТОВАРА’, связанные с текущим товаром. Это и требуется для рассматриваемой задачи.

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

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

Сценарии для продуктов

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

Контекстное меню продукта

Для начала разберем сценарий у типа продукта. Этот сценарий задает контекстное меню. Контекстное меню вызывается из вида просмотра при нажатии правой кнопки мыши. Выбранные в меню действия выполняются для текущей записи вида просмотра.

Еще раз рассмотрим подстановку типа продукта ‘Товар’.

image-1648567392578.png

Атрибут ‘Сценарий’ ссылается на сценарий с наименованием ‘Локальное меню: Товар’.

Описание этого сценария находится в библиотеке ‘# Товародвижение’, раздел ‘Продукт’, раздел ‘Сценарии’.

image-1648567408676.png

В итоговый сценарий попадут все пункты из сценария ‘Локальное меню: Товар’ и один пункт из описания сценария в подстановке.

Сценарии для видов просмотра

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

image-1648567426660.png

Для данного вида просмотра применяется сценарий ‘Сценарий для справочника товаров (с партиями)’. Этот сценарий расположен в библиотеке ‘! Базовый набор‘, раздел ‘Продукт’, раздел ‘Сценарии’.

image-1648567444199.png

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

image-1648567460608.png

Сценарий для вида просмотра партий полностью описан в базовом виде просмотре. Используемый вид просмотра ‘Партионные товары данного товара’ получит данный сценарий по правилу наследования.

image-1648567480337.png

Сценарии для форм

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

Форма ‘Товар’ содержит описание сценария, в который подключаются наследуемые пункты.

image-1648567503590.png

Для двух пунктов сценария ‘Продажные коды’ и ‘Коды для весов’ указан атрибут ‘Сохранить изменения перед вызовом’.

image-1648567520779.png

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

Поскольку сам сценарий не имеет родителя, то проводим поиск наследуемых пунктов у родителей формы. Таковые находятся у базовой формы ‘ПРОДУКТ’.

image-1648567538167.png

Этот же сценарий по правилу наследования подключается в форму для ввода партий.

Осталось найти вложенный сценарий ‘Отчеты по товару’, на который ссылается один из пунктов.

image-1648567554271.png

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

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

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

Отчеты по продуктам

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

Отчеты по одному продукту располагают в разделе ‘Отчеты’ внутри раздела ‘Продукт’.

image-1648567572131.png

В раздел ‘Отчеты’ верхнего уровня библиотеки помещают отчеты по многим продуктам.

image-1648567589273.png

 

Партнёр

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

Внутри раздела ‘Партнёр’ можно создать следующие разделы:

image-1648573482735.png

Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).

Рассмотрим описание партнеров на примере.

Пример описания партнера

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

Рассмотрим возможный вариант действий автора проекта.

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

Параметры партнера

Описание базовых параметров партнера находится в базовом разделе ‘Системная область’.

image-1648573507130.png

Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648573524544.png

При выборе параметра необходимо обращать внимание на тип данных.

На этом этапе можно провести еще одно исследование.

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

image-1648573542430.png

Фрагмент списка функций для партнера из библиотеки ‘! Базовый набор’

image-1648573564478.png

Фрагмент списка функций для партнера из библиотеки ‘# Товародвижение’

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

Классификация партнеров

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

Базовые классы партнеров описаны в базовом разделе ‘Системная область’.

image-1648573585687.png

Описание класса ‘ПАРТНЕР’ выглядит вот так.

image-1648573605693.png

Для партнеров данного класса указаны стандартный метод при удалении записи и разрешены все действия с записью. Ширина параметра ‘Код’ записи равна 6 символов.

В описании класса ‘ПОДРАЗДЕЛЕНИЕ’ указан атрибут ‘Автоматически разрешать права пользователю на созданный объект’. Данный атрибут применяется для разрешения следующего конфликта. Конфликт возникает вследствие того, что права на доступ к подразделениям устанавливает один пользователь, а подразделение создает другой пользователь, часто не имеющий возможности изменять права. При установленном признаке права на доступ к новому подразделению автоматически будут установлены тому пользователю, который создал подразделение.

image-1648573624067.png

В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы партнеров.

Классы партнера ссылаются на два базовых класса. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’, ‘Права на выполнение действий над объектом’ и ‘Структура кода’.

image-1648573641939.png

Типы партнеров созданы на основе перечисленных классов.

image-1648573658732.png

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

Для наших целей подходят два типа партнера: ‘Структурное подразделение’ и ‘Торговый партнер’.

Посмотрим как описаны атрибуты этих типов.

Находим в библиотеке ‘# Товародвижение’ подстановку типа ‘Структурное подразделение’.

image-1648573678729.png

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

В этой же библиотеке расположена подстановка типа ‘Торговый партнер’. В ней кроме формы, сценария и структуры указано условие использования данного типа. Изменять и добавлять торговых партнеров сможет только тот пользователь, которому назначена роль ‘Оператор клиентов’.

image-1648573696719.png

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

Структура партнера

В подстановке типа ‘Торговый партнер’ указан атрибут ‘Структура (Состав, Содержание)’. Этот атрибут задает возможные типы наследников партнера.

Заполнение данного атрибута  для нашей задачи значения не имеет. Указанные значения означают, что для партнера можно создавать филиалы, расчетные счета, юридический и физический адреса и контактные лица. Отменить это назначение можно двумя способами. Либо создать подстановку типа ‘Торговый партнер’ и не указывать эти типы в атрибуте ‘Структура (Состав, Содержание)’. Либо можно запретить их использование с помощью подстановок этих типов.

Точно таким же образом можно поступить с указанным для структурного подразделения типом партнера ‘Товарный склад/секция’.

Форма партнера

В описаниях рассматриваемых типов имеются ссылки на формы ввода. Рассмотрим формы подробнее.

Форма, заданная в подстановке типа ‘Структурное подразделение’, находится в библиотеке ‘# Товародвижение’, раздел ‘Партнер’, раздел ‘Форма’.

image-1648573722246.png

Для формы указаны список полей и сценарий.

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

image-1648573741189.png

В этой форме имеется описание полей, закладок и сценария.

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

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

Вид просмотра партнеров

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

Данные виды просмотра должны быть расположены в разделе ‘Виды просмотра’ на верхнем уровне библиотеки. Попробуем найти подходящие.

В библиотеке ‘! Базовый набор‘, раздел ‘Виды просмотра’, папка ‘! Базовый набор’, папка ‘Партнер’ находится вид просмотра ‘Структурные подразделения’.

image-1648573758957.png

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

В этой же библиотеке,  папка ‘! Базовый набор’, папка ‘Партнер’, папка ‘Торговые партнеры’ расположен вид просмотра ‘Торговые партнеры по наименованию’.

image-1648573777039.png

Данный вид просмотра отображает всех партнеров класса ‘ТОРГОВЫЙ ПАРТНЕР’. Разрешено создавать партнеров типа ‘Торговый партнер’. Условиям задачи найденный вид просмотра удовлетворяет. 

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

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

Сценарии для партнеров

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

Контекстное меню

Для начала разберем сценарии у типов партнеров. Этот сценарий задает контекстное меню. Контекстное меню вызывается из вида просмотра при нажатии правой кнопки мыши. Выбранные в меню действия выполняются для текущей записи вида просмотра.

Еще раз рассмотрим подстановку типа партнера ‘Структурное подразделение’.

image-1648573797044.png

Сценарий содержит единственный элемент – вызов вида просмотра протокола.

Изучим подстановку типа партнера ‘Торговый партнер’.

image-1648573813385.png

Поскольку сам сценарий не имеет родителя, то проводим поиск наследуемых пунктов у типа партнера. В описании типа атрибут ‘Сценарий’ не указан. Значит, следует проверить родителя типа – это класс ‘ТОРГОВЫЙ ПАРТНЕР’. И в описании класса, и в подстановках класса атрибут ‘Сценарий’ отсутствует. Переходим к изучению родителя класса – это базовый класс ‘ПАРТНЕР’. В подстановке класса находим искомый атрибут.

image-1648573831067.png

Наследуемые пункты будут добавлены в контекстное меню торгового партнера.

Сценарии для видов просмотра

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

image-1648573847522.png

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

После непродолжительных поисков сценарий найден в базовом виде просмотра ‘ОБЪЕКТЫ’.

image-1648573863306.png

Сценарий для вида просмотра торговых партнеров найти легче.

image-1648573878588.png

Для данного вида просмотра применяется сценарий ‘Сценарий для торговых партнеров’. Этот сценарий расположен в библиотеке ‘! Базовый набор‘, раздел ‘Партнер’, раздел ‘Сценарии’.

image-1648573896194.png

Поскольку в описании сценария использован атрибут ‘Наследуемые пункты’, то рассматриваем описание родителя.

image-1648573913912.png

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

image-1648573928654.png

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

Сценарии для форм

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

Форма ‘Торговый партнер’ содержит полное описание сценария.

image-1648573946760.png

Для двух пунктов сценария ‘Счета’ и ‘Филиалы’ указан атрибут ‘Сохранить изменения перед вызовом’.

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

Для формы ‘Подразделение’ сценарий содержит только атрибут ‘Наследуемые пункты’.

image-1648573973376.png

Поскольку сам сценарий не имеет родителя, то проводим поиск наследуемых пунктов у родителей формы. Таковые находятся у базовой формы ‘ПАРТНЕР’.

image-1648573988469.png

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

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

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

Отчеты по партнерам

Последний этап решения поставленной задачи состоит в описании отчетов по партнерам.

Отчеты по одному партнеру располагают в разделе ‘Отчеты’ внутри раздела ‘Партнер’.

В раздел ‘Отчеты’ верхнего уровня библиотеки помещают отчеты по многим партнерам.

image-1648574007474.png

 

Каталог

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

Внутри раздела ‘Каталог’ можно создать следующие разделы:

image-1648574585672.png

Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).

Рассмотрим описание каталогов на примере.

Пример описания каталога

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

Рассмотрим возможный вариант действий автора проекта.

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

Параметры каталога

Описание базовых параметров каталога находится в базовом разделе ‘Системная область’.

image-1648574605978.png

Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648574622456.png

При выборе параметра необходимо обращать внимание на тип данных.

Классификация каталогов

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

Базовый класс каталога описан в базовом разделе ‘Системная область’.

image-1648574641434.png

В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены остальные централизованно заведенные классы и типы каталогов.

Классы каталогов ссылаются на базовый класс. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’ и ‘Права на выполнение действий над объектом’.

image-1648574658201.png

Типы каталогов созданы на основе перечисленных классов.

image-1648574679445.png

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

Для наших целей уже имеются класс каталога ‘ШИФР АМОТРИЗАЦИОННЫХ ОТЧИСЛЕНИЙ’ и тип каталога ‘Шифр’.

Посмотрим как описаны атрибуты этих типов.

Подстановок выбранного класса в проекте нет, но в библиотеке ‘ОС, НМА и материалы’ имеется подстановка типа ‘Шифр’.

image-1648574697773.png

В подстановке указана форма для ввода шифров.

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

Форма каталога

В подстановке  задана ссылка на форму ввода. Рассмотрим эту форму подробнее.

Форма находится в библиотеке ‘ОС, НМА и материалы’, раздел ‘Каталог’, раздел ‘Форма’.

image-1648574714026.png

В список полей формы добавляются поля из родителя формы. Форма-родитель имеет наименование ‘Шифр’ и расположена рядом, в той же библиотеке.

image-1648574731696.png

Также необходимо изучить родителя формы ‘Шифр’ – форму ‘КАТАЛОГ’. Форма ‘КАТАЛОГ’ находится в базовом разделе ‘Системная область’.

image-1648574747638.png

Из этой формы по правилу наследования в форму ‘Шифр амортизационных отчислений’ будут подключены сценарий и вид размещения окна.

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

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

Вид просмотра каталогов

Для решаемой задачи требуется отобразить список шифров с помощью вида просмотра.

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

В библиотеке ОС, НМА и материалы’ , раздел ‘Виды просмотра’, папка ‘ОС и материалы’, папка ‘Каталоги’ находится вид просмотра ‘Шифры амортизационных отчислений’.

image-1648574765526.png

Данный вид просмотра отображает все каталоги класса ‘ШИФР АМОРТИЗАЦИОННЫХ ОТЧИСЛЕНИЙ’, что и требуется для нашей задачи.

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

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

Сценарии для каталогов

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

Рассмотрим сценарий в виде просмотра. Все пункты описаны непосредственно в сценарии.

image-1648574783825.png

Перейдем к сценарию формы.

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

image-1648574799347.png

Подстановок данных форм в проекте нет, а вот у базовой формы ‘КАТАЛОГ’ сценарий имеется. Этот сценарий по правилу наследования и подключается в форму для ввода шифров.

image-1648574814909.png

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

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

Отчеты по каталогам

Последний этап решения поставленной задачи состоит в описании отчетов по каталогам.

Отчеты по одному каталогу принято располагать в разделе ‘Отчеты’ внутри раздела ‘Каталог’. В раздел ‘Отчеты’ верхнего уровня библиотеки помещают отчеты по многим каталогам.

 

Документ

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

Внутри раздела ‘Документ’ можно создать следующие разделы:

image-1648575018981.png

Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).

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

Пример описания документа

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

Рассмотрим возможный вариант действий автора проекта.

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

Рассматриваемый пример будет продолжен в главах ‘Строки’ и ‘Проводки'.

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

Описание базовых параметров документа находится в базовом разделе ‘Системная область’.

image-1648575051038.png

Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648575066910.png

При выборе параметра необходимо обращать внимание на тип данных.

На этом этапе можно провести еще одно исследование.

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

image-1648575083301.png

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

Классификация документов

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

Базовый класс документов описан в базовом разделе ‘Системная область’.

image-1648575103121.png

Для документов данного класса разрешены все действия с записью. Ширина параметра ‘Код’ записи равна 7 символов.

Подробнее о назначении разделов ‘Процедуры’ и ‘Методы’ написано в конце данной главы.

Значение атрибута ‘Не протоколировать при ручном редактировании’ не задано.

Атрибут ‘Не протоколировать при ручном редактировании’ применяется для отмены автоматического формирования сообщений в протокол при использовании обычных форм ввода документа. Если данный атрибут не указан, то при создании или  изменении документа (посредством формы ввода) в протоколе появляется соответствующее сообщение. В данном атрибуте можно указать одно или оба действия, при которых сообщение создавать не следует. Действия задаются с помощью команд ‘Создать новую запись’ и ‘Изменить’. Например.

image-1648575119448.png

В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы документов.

Классы документа ссылаются на базовый класс ‘ДОКУМЕНТ’. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’, ‘Права на выполнение действий над объектом’, ‘Структура кода’ и ‘Не протоколировать при ручном редактировании’.

image-1648575136455.png

Для класса документа можно указать следующие параметры:

image-1648575152887.png

            Можно указать следующие методы обработки: 

image-1648575173690.png

Методы создаются программистами и системными администраторами проекта. Авторы проектов имеют возможность указать в методах необходимые им процедуры.

image-1648575192269.png

image-1648575228833.png

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

Типы документа созданы на основе классов.

image-1648575247739.png

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

В поисках нужных нам типов документов раскроем две папки ‘Приходные товарные документы’ и ‘Расходные товарные документы’.

image-1648575263738.png

image-1648575271317.png

Для наших целей подходят два типа документов: ‘Приход товаров’ и ‘Реализация за наличный расчет’.

Посмотрим на описание атрибутов у этих типов.

image-1648575288930.png

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

image-1648575306292.png

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

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

Подробнее о настройке проводок написано в главе ‘Проводки’.

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

Структура документа

В подстановках типов документов ‘Приход товаров’ и ‘Реализация за наличный расчет’ указан атрибут ‘Структура (Состав, Содержание)’. Этот атрибут задает возможные типы наследников документа (т.е. типы строк документа и типы документов, для которых данный документ будет являться родителем).

image-1648575324586.png

Для рассматриваемой задачи важно, что в списке имеется тип строки ‘Приход товаров от поставщика’. Это означает, что в документе можно будет создавать строки такого типа.

Ссылки на другие типы (строки и документов) для нашей задачи значения не имеют. Они означают, что в документе также можно заводить строки типа ‘Дополнительные расходы’ и формировать документы-наследники с типами ‘Реестр цен по приходному документу’ ‘Счет-фактуры за полученные товары/услуги’.

Отменить структуру можно двумя способами. Либо создать еще одну подстановку типа документа и не указывать перечисленные типы в атрибуте ‘Структура (Состав, Содержание)’. Либо можно запретить использование упомянутых в структуре типов с помощью подстановок этих типов.

Теперь посмотрим на второй тип документов.

image-1648575342180.png

Описание структуры содержит ссылку на тип строки, что нам и требуется.

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

В описаниях рассматриваемых типов имеются ссылки на формы ввода. Рассмотрим формы подробнее.

Форма, заданная в подстановке типа ‘Приход товаров’, находится в библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Форма’, папка ‘Приходные товарные документы’.

image-1648575359145.png

Описание атрибута ‘Список полей формы’ включает содержимое соответствующего атрибута родителя формы. Родителем данной формы является форма ‘ДОКУМЕНТ С СОДЕРЖИМЫМ (дата + время)’. Рассмотрим эту форму.

image-1648575374889.png

Список полей из этой формы по правилу наследования добавляются в список полей формы ‘Приходный документ’.

Для формы ‘Приходный документ’ указан атрибут ‘Просмотр содержимого документа’. Значение атрибута ссылается на вид просмотра строк ‘Строки приходного документа от поставщика’.

image-1648575391711.png

Этот вид просмотра будет вызван по команде ‘Просмотр содержимого’. Оформляется вызов команды в сценарии. Например, вот так.

image-1648575407702.png

Ввод строк необязательно организовывать с помощью атрибута ‘Просмотр содержимого документа’. Можно из сценария формы вызвать непосредственно вид просмотра строк. Например.

image-1648575424560.png

Для пункта сценария ‘Доп. расходы’ обязательно следует указать атрибут ‘Сохранить изменения перед вызовом’.

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

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

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

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

image-1648575475311.png

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

Для отображения и ввода строк документа указан вид просмотра ‘Строки расходного документа’.

Подробнее про упомянутые виды просмотра строк ‘Строки приходного документа от поставщика’ и ‘Строки расходного документа’ написано в следующей главе ‘Строки’.

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

Вид просмотра документов

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

Такие виды просмотра могут быть расположены в разделе ‘Виды просмотра’ на верхнем уровне библиотеки. Попробуем найти подходящие.

Вид просмотра ‘Приходные товарные документы’

В библиотеке ‘! Базовый набор’, раздел ‘Виды просмотра’, папка ‘! Базовый набор’, папка ‘Документ’, папка ‘Приходные документы’ находится вид просмотра ‘Приходные товарные документы’.

image-1648575496534.png

Перед изучением назначенных для этого вида просмотра атрибутов необходимо проверить наличие подстановок у вида просмотра. Единственная подстановка находится в библиотеке ‘# Товародвижение‘.

image-1648575514422.png

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

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

Для вида просмотра указан признак ‘Сохранять текущие значения фильтров в профиле’. Это позволит при повторном вызове вида просмотра работать с ранее установленными ограничениями на отображаемые данные.

Атрибут ‘Параметры, обязательные при задании ограничений’ содержит ссылку на параметр документа ‘Подразделение’. Это означает, что в виде просмотра будут отображаться документы только по одному подразделению. Значение выбранного подразделения записывается в глобальной переменной ‘Товарное подразделение (глоб. перем.)’. Для выбора подразделения применяется специальный пункт на панели инструментов. Вот так выглядит описание этого пункта сценария.

image-1648575532627.png

Атрибут ‘Выбор типов создаваемых объектов’ определяет, что при работе с видом просмотра можно создавать новые документы класса ‘ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.

Далее следует изучить описания атрибутов у родителей рассматриваемого вида просмотра. Описание родителя – вид просмотра ‘Все приходные товарные документы’ – находится в дереве проекта чуть выше.

image-1648575548850.png

Сразу ищем подстановки. Единственная подстановка имеется в библиотеке ‘# Товародвижение‘.

image-1648575567923.png

Из подстановки по правилу наследования добавляется описание атрибута ‘Список горячих клавиш’. По клавише F4 будет вызываться вид просмотра строк документа ‘Строки приходного документа от поставщика’. Этот же вид просмотра строк вызывается из формы документа, что было рассмотрено ранее.

Описание атрибута ‘Список полей просмотра’ нас не интересует, поскольку в описании вида просмотра ‘Приходные товарные документы’ имеется аналогичный атрибут, и там не применен атрибут ‘Наследуемые поля, колонки’. Т.е. список полей явно задан и не наследуется от родителя.

Атрибут ‘Выборка’ определяет класс отображаемых документов. Изучим выборку, на которую ссылается атрибут.

image-1648575584856.png

В виде просмотра будут отображены документы класса ‘ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.

Атрибут ‘Выбор типов создаваемых объектов’ определяет, что при работе с видом просмотра можно создавать новые документы класса ‘ПРИХОДНЫЙ ТОВАРНЫЙ ДОКУМЕНТ’.

Поскольку для вида просмотра ‘Приходные товарные документы’ сценарий не был указан, то описание сценария наследуется от его родителя, т.е. из вида просмотра ‘Все приходные товарные документы’.

Атрибут ‘Вид просмотра зависимых записей’ задает вид просмотра для отображения наследников документа. При нажатии клавиши ‘Серый плюс’ будет высвечен вид просмотра ‘Документы по приходу’.

Изучив атрибуты непосредственного родителя вида просмотра можно исследовать и  более дальних родителей: виды просмотра ‘ДОКУМЕНТЫ ПО ДАТЕ’, ‘ПРОСМОТР ДОКУМЕНТОВ’, ‘ДОКУМЕНТЫ’. Но, скорее всего, описание всех существенных характеристик рассматриваемого вида просмотра мы уже нашли.

Вид просмотра ‘Расходные товарные документы’

В библиотеке ‘! Базовый набор’, раздел ‘Виды просмотра’, папка ‘! Базовый набор’, папка ‘Документ’, папка ‘Приходные документы’ находится вид просмотра ‘Расходные товарные документы’.

image-1648575608615.png

Отыщем подстановку этого вида просмотра, а также описание и подстановку родителя.

image-1648575629235.png

image-1648575637367.png

image-1648575645431.png

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

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

Сценарии для документов

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

Контекстное меню

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

Еще раз рассмотрим подстановку типа документа ‘Приход товаров’.

image-1648575667393.png

В подстановке указано, что пункты сценария наследуются из родителя сценария – из сценария ‘Локальное меню: Приход товара’.

image-1648575685190.png

В список вместо атрибута ‘Наследуемые пункты’ следует добавить пункты из сценария ‘Стандартное меню действий для документа’.

image-1648575710345.png

Теперь изучим подстановку типа документа ‘Реализация за наличный расчет’.

image-1648575729928.png

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

image-1648575748196.png

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

В итоге, в сценарии для типа документа ‘Реализация за наличный расчет’ атрибут ‘Наследуемые пункты’ заменяется на три пункта: ‘Акцепт’, ‘Деакцепт’ и ‘Копировать документ’.

Сценарии для видов просмотра

Теперь разберем указание сценария в видах просмотра документов. Сценарий в виде просмотра определяет панель инструментов.

Поскольку для вида просмотра ‘Приходные товарные документы’ сценарий не был указан, то описание сценария наследуется от его родителя, т.е. из вида просмотра ‘Все приходные товарные документы’.

image-1648575767103.png

Атрибут ‘Наследуемые пункты’ заменяется на содержимое сценария ‘Стандартные действия над объектом’, поскольку именно на этот сценарий ссылается сценарий из вида просмотра.

Рассмотрим сценарий из вида просмотра ‘Расходные товарные документы’.

image-1648575783853.png

Наследуемые пункты следует искать у родителя данного сценария.

image-1648575798946.png

Как и в предыдущем случае, атрибут ‘Наследуемые пункты’ заменяется на содержимое сценария ‘Стандартные действия над объектом’.

Сценарии для форм

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

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

image-1648575816726.png

Этот сценарий будет применен в обеих формах.

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

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

Отчеты по документам

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

Отчеты по одному документу располагают в разделе ‘Отчеты’ внутри раздела ‘Документ’.

image-1648575834493.png

В раздел ‘Отчеты’ верхнего уровня библиотеки помещают отчеты по многим документам.

image-1648575850946.png

Этапы выполнения акцепта документа

Акцепт и деакцепт – эти два термина были введены для отслеживания состояния документа.

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

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

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

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

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

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

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

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

С акцептом тесно связано понятие транзакции.

Транзакция - процедура внесения нескольких связанных изменений в БД. Применяется для поддержки целостности БД. Основной принцип обработки транзакций - транзакция должна быть выполнена либо целиком, либо не выполнена вовсе.

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

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

Перейдем к рассмотрению этапов акцепта и деакцепта.

Этапы выполнения акцепта документа и связанные с ними методы

  1. Проверка допустимости акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’, команда ‘Акцепт’.
  2. Проверка допустимости акцепта по условиям, заданным в методе ‘Акцепт. Предварительная проверка (до проведения расчетов)’.
  3. Проверка того, что указанный документ неакцептован. Если документ  уже акцептован, то процедура акцепта прерывается.
  4. Открытие транзакции для нормального режима обработки транзакций.
  5. Обработка строк. Последовательно перебираются строки документа. Каждая строка акцептуется.
  6. Расчет суммовых проводок. Последовательно перебираются строки документа и рассчитываются проводки, для которых установлен режим создания ‘Суммовые (для строк документа)
  7. Открытие транзакции для минимального режима обработки транзакций.
  8. Создание проводок, рассчитанных на 6 этапе. Проводки сохраняются в базе данных.
  9. Выполнение действий, указанных в методе  ‘Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок’.
  10. Расчет и сохранение в базе данных остальных проводок документа.
  11. Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
  12. Установка состояния ‘акцептован’ для документа.
  13. Запись в протокол сообщения о выполненном акцепте документа.
  14. Закрытие транзакции как для нормального , так и для минимального режимов.
  15. Выполнение действий, указанных в методе ‘Акцепт.Действия после всех расчетов и собственно акцепта’. 

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

 

Этапы выполнения короткого акцепта документа и связанные с ними методы

  1. Проверка допустимости акцепта по условиям, заданным в атрибуте ‘Права на   выполнение действий над объектом’, команда ‘Акцепт’.
  2. Проверка допустимости акцепта по условиям, заданным в методе ‘Акцепт. Предварительная проверка (до проведения расчетов)’.
  3. Проверка того, что указанный документ неакцептован. Если документ  уже акцептован, то процедура акцепта прерывается.
  4. Открытие транзакции для нормального режима обработки транзакций.
  5. Расчет суммовых проводок. Последовательно перебираются строки документа и рассчитываются проводки, для которых установлен режим создания ‘Суммовые (для строк документа)
  6. Открытие транзакции для минимального режима обработки транзакций.
  7. Создание проводок, рассчитанных на 5 этапе. Проводки сохраняются в базе данных.
  8. Выполнение действий, указанных в методе  ‘Короткий акцепт’.
  9. Расчет и сохранение в базе данных остальных проводок документа.
  10. Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
  11. Установка состояния ‘акцептован’ для документа.
  12. Запись в протокол сообщения о выполненном акцепте документа.
  13. Закрытие транзакции как для нормального , так и для минимального режимов.

Отличия этапов выполнения короткого акцепта от обычного акцепта следующие :

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

Этапы выполнения деакцепта документа и связанные с ними методы

  1. Проверка допустимости акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’, команда ‘Деакцепт’.
  2. Проверка того, что указанный документ акцептован. Если документ  уже деакцептован, то процедура деакцепта прерывается.
  3. Выполнение действий, указанных в методе  ‘Пре-деакцепт’. Если действия завершаются с ошибкой, то процедура деакцепта прерывается.
  4. Открытие транзакции.
  5. Выполнение действий, указанных в методе  ‘Деакцепт’.
  6.  Закрытие транзакции.
  7. Выполнение действий, указанных в методе  ‘Пост-деакцепт’.

Этапы выполнения короткого деакцепта документа и связанные с ними методы

  1. Проверка допустимости акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’, команда ‘Деакцепт’.
  2. Проверка того, что указанный документ акцептован. Если документ  уже деакцептован, то процедура деакцепта прерывается.
  3. Открытие транзакции.
  4. Выполнение действий, указанных в методе  ‘Короткий деакцепт’.
  5.  Закрытие транзакции.

Отличия этапов выполнения короткого деакцепта от обычного деакцепта заключаются в том, что не выполняются действия, указанные в методах  ‘Пре-деакцепт’ и ‘Пост-деакцепт’.

Процедуры для акцепта и деакцепта документа

При описании методов используются процедуры-методы из раздела ‘Процедуры’ верхнего уровня библиотеки или из раздела ‘Процедуры’ внутри раздела ‘Документ’.

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

image-1648575894472.png

image-1648575901638.png

 

Строка

Строка – часть документа. Документ может содержать список данных одного вида. Например, товарная накладная содержит список товаров с ценами и количеством. Для хранения элемента списка применяется строка документа. Строки записываются в таблицу ‘Строка’.

Внутри раздела ‘Строка’ можно создать следующие разделы:

image-1648649210622.png

Подробное описание перечисленных разделов приведено ранее, в главе ‘Основные объекты’ и в главах по разделам (‘Параметры’, ‘Процедуры‘, ‘Виды просмотра’, ‘Выборки’, ‘Формы’, ‘Сценарии’, ‘Отчеты’).

Рассмотрим описание строк на примере.

Пример описания строк

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

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

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

Рассмотрим возможный вариант действий автора проекта.

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

Обсуждение примера было начато в главе ‘Документ’ и будет продолжено в главе  ‘Проводка'.

Параметры строки

Описание базовых параметров строки находится в базовом разделе ‘Системная область’.

image-1648649291505.png

Остальные параметры расположены в библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ].

image-1648649307878.png

При выборе параметра необходимо обращать внимание на тип данных.

На этом этапе можно провести еще одно исследование.

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

image-1648649328272.png

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

Классификация строк

Базовый класс строки описан в базовом разделе ‘Системная область’.

image-1648649353829.png

В библиотеке [КЛАССЫ, ТИПЫ, ПАРАМЕТРЫ, ПЛАНЫ, ОПИСАНИЯ СПИСКОВ] перечислены централизованно заведенные классы и типы строк.

Классы строк ссылаются на базовый класс. Это позволяет не повторять для каждого класса описание атрибутов ‘Методы’ и ‘Права на выполнение действий над объектом’.

image-1648649373826.png

Для класса строки можно указать следующие атрибуты.

image-1648649389776.png

            Можно указать следующие методы обработки: 

image-1648649407504.png

Методы создаются программистами и системными администраторами проекта. Авторы проектов имеют возможность указать в методах необходимые им процедуры.

image-1648649427261.png

Типы строк созданы на основе классов.

image-1648649442888.png

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

В предыдущей главе при описании документов были выбраны типы строк для рассматриваемого примера. Для документов типа ‘Приход товаров’ был выбран тип строки ‘Приход товаров от поставщика’, а для документов типа ‘Реализация за наличный расчет’ – тип строки ‘Реализация (продажа) товара через кассу’.

Посмотрим на описание атрибутов у этих типов.

image-1648649460207.png

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

image-1648649476454.png

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

Подробнее о настройке проводок написано в главе ‘Проводки’.

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

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

Учет по партиям

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

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

Строка называется партионной, поскольку в нее записывается ссылка на партию товара.

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

image-1648649497237.png

image-1648649505003.png

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

Форма строки

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

Все формы находятся в библиотеке ‘# Товародвижение’, раздел ‘Строка’, раздел ‘Форма’.

image-1648649523143.png

image-1648649531121.png

image-1648649538786.png

image-1648649546881.png

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

image-1648649561803.png

image-1648649568924.png

От родителей будут наследованы значения атрибута ‘Сценарий’ и признак ‘Добавление нескольких объектов в цикле’.

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

Вид просмотра строк

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

Такие виды просмотра могут быть расположены в разделе ‘Виды просмотра’ раздела ‘Документы’.

Ранее, при описании формы документа, упоминались виды просмотра строк ‘Строки приходного документа от поставщика’ и ‘Строки расходного документа’. Рассмотрим эти виды просмотра подробнее

Вид просмотра ‘Строки приходного документа от поставщика’

В библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Виды просмотра’ находится вид просмотра ‘Строки приходного документа от поставщика’.

image-1648649590104.png

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

Родитель данного вида просмотра содержит описание итогов.

image-1648649605449.png

Указан расчет пяти величин по строкам документа: общее число строк, общее количество товара, суммы по двум ценам, сумма НДС.

Вид просмотра ‘Строки расходного документа

Данный вид просмотра находится в библиотеке ‘# Товародвижение’, раздел ‘Документ’, раздел ‘Виды просмотра’.

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

image-1648649624059.png

image-1648649630568.png

image-1648649638061.png

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

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

Вид просмотра ‘Строки партионного распределения (с закупочной ценой)’

Данный вид просмотра вызывается из вида просмотра ‘Строки приходного документа от поставщика’ и применяется для просмотра сформированных партионных строк.

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

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

От родителя вид просмотра наследует описание двух итоговых величин.

image-1648649657089.png

image-1648649664831.png

Вид просмотра ‘Строки партионного распределения’

Данный вид просмотра вызывается из вида просмотра ‘Строки расходного документа’ и применяется для просмотра сформированных партионных строк.

image-1648649681962.png

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

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

Сценарии для строк

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

Контекстное меню

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

Для типов строк ‘Приход товара от поставщика’ и ‘Реализация (продажа) товара через кассу’ сценарии указаны в подстановках этих типов.

image-1648649701692.png

Наследуемые пункты добавляются из описания подстановки класса строки.

image-1648649717011.png

Сценарий для типа строки ‘Реализация (продажа) товара через кассу’ содержит всего один пункт.

image-1648649732046.png

Сценарии для видов просмотра

Теперь разберем указание сценария в видах просмотра строк. Сценарий в виде просмотре определяет панель инструментов.

Первый вид просмотра, который нас интересует, - это ‘Строки приходного документа от поставщика’.

image-1648649749406.png

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

Сценарий имеется у вида просмотра ‘Строки товарного документа’.

image-1648649765251.png

Переходим ко второму виду просмотра - ‘Строки расходного документа’.

Для этого вида просмотра сценарий не задан, поэтому по правилу наследования будет применен сценарий из того вида просмотра – родителя, у которого сценарий имеется.

Таким видом просмотра является ‘Строки товарного документа’.

Теперь рассмотрим виды просмотра партионных строк. Здесь все просто – имеются сценарии с полным описанием.

image-1648649781011.png

image-1648649787705.png

Сценарии для форм

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

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

image-1648649803113.png

Этот сценарий будет применен во всех формах.

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

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

Этапы выполнения акцепта строки

В продолжении темы, начатой в предыдущей главе ‘Документ’, необходимо привести алгоритмы выполнения акцепта строки.

Акцепт строки является составной частью акцепта документа и приводит строку в акцептованное состояние. 

Этапы выполнения акцепта строки и связанные с ними методы
  1. Проверка допустимости акцепта по условиям, заданным в методе ‘Акцепт. Предварительная проверка (до проведения расчетов)’. Если строка акцептуется внутри акцепта документа, то данный этап выполняется одновременно для всех строк.
  2. Проверка того, что указанная строка не акцептована. Если строка  уже акцептована, то процедура акцепта прерывается.
  3. Открытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
  4. Выполнение действий, указанных в методе  ‘Акцепт. Действия после обработки строк (если есть) и перед расчетом проводок’.
  5. Расчет проводок.
  6. Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
  7. Закрытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
  8. Выполнение действий, указанных в методе ‘Акцепт.Действия после всех расчетов и собственно акцепта’.  Если строка акцептуется внутри акцепта документа, то данный этап выполняется одновременно для всех строк.

При акцепте строки не проверяется допустимость акцепта по условиям, заданным в атрибуте ‘Права на выполнение действий над объектом’. Отсутствие проверки вызвано требованием уменьшить время выполнения акцепта.

Для изменения состояния строки (‘акцептована’) необходимо в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’ указать вызов процедуры ‘МЕТОД. Стандартный (базовый) акцепт строки’.

Этапы выполнения короткого акцепта строки и связанные с ними методы
  1. Проверка того, что указанная строка не акцептована. Если строка  уже акцептована, то процедура акцепта прерывается.
  2. Открытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
  3. Выполнение действий, указанных в методе  ‘Короткий Акцепт’.
  4. Расчет проводок.
  5. Выполнение действий, указанных в методе ‘Акцепт. Действия после расчета проводок, но перед акцептом’.
  6. Закрытие транзакции для минимального режима обработки транзакции акцепта документа или для акцепта, запущенного из контекстного меню строки.
Этапы выполнения деакцепта строки и связанные с ними методы
  1. Проверка того, что указанная строка акцептована. Если строка  уже деакцептована, то процедура деакцепта прерывается.
  2. Выполнение действий, указанных в методе  ‘Пре-деакцепт’. Если действия завершаются с ошибкой, то процедура деакцепта прерывается. Если строка деакцептуется внутри деакцепта документа, то данный этап выполняется одновременно для всех строк.
  3. Открытие транзакции.
  4. Выполнение действий, указанных в методе  ‘Деакцепт’.
  5. Закрытие транзакции.
  6. Выполнение действий, указанных в методе  ‘Пост-деакцепт’. Если строка деакцептуется внутри деакцепта документа, то данный этап выполняется одновременно для всех строк.
Этапы выполнения короткого деакцепта строки и связанные с ними методы
  1. Проверка того, что указанная строка акцептована. Если строка  уже деакцептована, то процедура деакцепта прерывается.
  2. Открытие транзакции.
  3. Выполнение действий, указанных в методе  ‘Короткий Деакцепт’.
  4. Закрытие транзакции.

Процедуры для акцепта и деакцепта строк

При описании методов используются процедуры-методы из раздела ‘Процедуры’ верхнего уровня библиотеки или из раздела ‘Процедуры’ внутри раздела ‘Строка’.

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

image-1648649828354.png

image-1648649836998.png

 

Проводка

Проводка - бухгалтерское представление информации о движении учетных средств. Для хранения проводок применяется таблица ‘Проводка’.

Внутри раздела ‘Проводка’ можно создать только раздел Классификация, в  котором хранятся описания классов и типов проводок.

Описание всех параметров проводки находится в базовом разделе ‘Системная область’.

image-1648650261495.png

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

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

Классификация проводок

Проводки классифицируются в разрезе плана счетов. Для каждого плана счетов создаются свои типы проводок.

Применяемое в проекте понятие тип проводки означает тип записи в таблице ‘Проводка’ и, одновременно, правила формирования этой записи. Термин проводка обозначает одну запись в таблице ‘Проводка’.

image-1648650286179.png

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

image-1648650305800.png

image-1648650324760.png

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

Описание правил формирования проводок

Типы проводок могут быть созданы в разделе ‘Проводки’, раздел ‘Классификация’.

image-1648650344296.png

Также можно создавать типы проводок при описании типов документов и типов строк. В этом случае применяется атрибут ‘Проводки’ для класса или типа документа (строки).

image-1648650359115.png

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

image-1648650377133.png

Пример.

image-1648650393955.png

Процедура акцепта объекта (документа или строки) анализирует список типов и подстановок проводок, указанных для типа объекта, и создает записи в таблице ‘Проводка’.

Пример описания проводок

Рассмотрим описание проводок на примере.

Продолжаем решение задачи по организации ввода документов для прихода и реализации товаров. Осталось описать правила формирования проводок в процедурах акцепта документа и строк.

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

Рассмотрим возможный вариант действий автора проекта.

Проводки для партионных строк

Описание проводок находится в описании типов строк. Рассмотрим описание проводок для типа строки ‘Строка FIFO прихода от поставщика’.

image-1648650412758.png

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

Две проводки будут созданы по плану счетов ‘Товарный план’.  Поскольку в описании типа строки указана подстановка проводки, то сначала найдем описание проводки.

image-1648650429568.png

Описание проводки содержит дебетовый счет с аналитиками, размерность и сумму. Добавим кредитовый счет из подстановки проводки и получим полное описание правил формирования проводки типа ‘Увеличение товарного запаса (сумма по учетн.)’.

Для данного счета заданы три аналитики: Подразделение, Продукт, Цена.

image-1648650444437.png

Вот так эти аналитики заполняются в описании проводки:

Для данного счета заданы две аналитики: Продукт, Подразделение.

image-1648650459799.png

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

image-1648650478627.png

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

Смысл рассмотренной проводки заключается в следующем. Проводка уменьшает сальдо по счету ‘Приход/возврат от поставщика’ (для указанного набора значений аналитик) и увеличивает сальдо по счету ‘Количество (товарный запас)’ (для указанного набора значений аналитик) на вычисленную сумму в рублях.

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

image-1648650495425.png

Здесь указаны правила заполнения параметров ‘ЦФО’ и ‘Дата’.

Аналогичным образом описана и вторая проводка по плану счетов ‘Товарный план’.

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

Теперь разберем проводки по другому плану счетов ‘Суммы по Документам’.

image-1648650511399.png

Прежде всего, выясним, что в данном случае означает наличие атрибута ‘Стандартные проводки’. Автор проекта применил данный атрибут для того, чтобы наследовать описания проводок от родителей типа строки. Попробуем найти описание проводок у родителей. Такое описание имеется в подстановке класса строки ‘Класс строки FIFO прихода’.

image-1648650527101.png

Таким образом, всего для строки указаны правила формирования семи проводок по плану счетов ‘Суммы по Документам’. (Три правила из описания типа строки и четыре – из описания класса строки).

При рассмотрении проводок предыдущего плана счетов ‘Товарный план’ описание класса счетов нас не интересовало, поскольку в списке проводок не был применен атрибут ‘Стандартные проводки’.

Разберем описание правил создания одной проводки из семи. Остальные правила описаны аналогичным образом.

Описание типа строки содержит подстановки проводок, и никакие атрибуты в подстановках не определены. Значит, достаточно изучить только описание проводок.

image-1648650543616.png

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

image-1648650561167.png

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

Для данного счета заданы пять аналитик: Документ, Цена, НДС, Тип продукта, Налог с продаж.

image-1648650579915.png

В описании проводки заполняются все аналитики.

Для данного счета аналитики не указаны. Более того, по счету не формируется сальдо.

image-1648650599030.png

image-1648650621241.png

Выражение возвращает значение параметра базовой строки ‘Сумма по цене накладной поставщика’.

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

Проводки для обычных строк

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

image-1648650644315.png

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

При описании классов и типов документов (строк) можно как создавать новые типы проводок, так и применять подстановки типов проводок. Для повышения наглядности дерева проекта рекомендуется использовать подстановки типов проводок.

Проводки по документу

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

Описание типа документа ‘Приход товаров’ не содержит никаких значимых атрибутов. Рассмотрим имеющиеся подстановки.

image-1648650662490.png

image-1648650669742.png

image-1648650676914.png

image-1648650684530.png

С помощью трех подстановок для данного типа документа указаны правила формирования проводок по трем планам счетов: ‘Налоговый учет’, ‘Бюджетирование’ и ‘Бухгалтерский план’.

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

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

image-1648650700936.png

С помощью атрибута ‘Варианты проводок, в зависимости от’ проектировщик задал условие формирования проводки типа ‘Постоянное налоговое обязательство (расх.с накл.пост-ка)’. Данная проводка будет сформирована в том случае, если выражение ‘Начисление налогов (ПБУ 18/2)’ вернет истинное значение.

image-1648650717423.png

Выражение анализирует наличие значения у параметра ‘Использовать ПБУ 18’ в записи партнера, соответствующей ЦФО.

Второй пример связан с понятием пакетных проводок.

Рассмотрим описание типа проводки ‘Сумма по учетной цене товара’ по бухгалтерскому плану счетов.

image-1648650732997.png

Тип проводки ‘Сумма по учетной цене товара’ ссылается на тип ‘Пакетная бухгалтерская проводка’. Изучим родителей проводки.

image-1648650750088.png

В описании класса проводки ‘БУХГАЛТЕРСКАЯ ПРОВОДКА ПАКЕТНАЯ’ имеется признак ‘Пакетная проводка’.

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

Пакетные проводки

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

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

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

  1. Признак ‘Пакетная проводка’ в описании типа или класса проводки указывает на то, что при создании проводки данного типа (класса) следует использовать механизм формирования пакетных проводок.
  2. Раздел ‘Локальные переменные’ в описании типа или класса проводки содержит набор переменных, в которые будут помещены значения параметров выборки, и которые будут использованы при расчете параметров создаваемых пакетных проводок.
  3. Раздел ‘Ограничения на выборку для пакетной проводки’ задает набор ограничений для выборки записей сальдо и одновременно устанавливает связи параметров выборки с локальными переменными. Если ограничение ссылается на локальную переменную, то считается, что это описание связи параметра с локальной переменной. Если ограничение ссылается на любой другой проектный элемент, то считается, что это описание ограничения.

Можно задать ограничения/связи по пяти основным параметрам сальдо:

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

Теперь рассмотрим описание пакетной проводки в нашем примере.

image-1648650785619.png

Признак ‘Пакетная проводка’ находится в описании класса проводки ‘БУХГАЛТЕРСКАЯ ПРОВОДКА ПАКЕТНАЯ’.

В разделе ‘Локальные переменные’ описаны две переменные ‘Сумма’ и ‘НДС’.

В список ограничений из раздела ‘Ограничения на выборку для пакетной проводки’ следует добавить ограничения из родителей проводки.

image-1648650801177.png

image-1648650807621.png

Таким образом, получаем ограничения по следующим параметрам: ‘ЦФО’, ‘Размерность’, ‘Счет’ и двум аналитикам счета: ‘Документ’ и ‘Цена’.

Параметры ‘НДС’ и ‘Сумма’ связываются с одноименными локальными переменными.

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

Посмотрим на описание счета ‘Сумма по документу’ и его родителя для определения списка и порядка аналитик.

image-1648650825520.png

image-1648650833101.png

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

В разделе ‘Ограничения на выборку для пакетной проводки’ указана связь аналитики ‘НДС’ с локальной переменной. Это означает, что в результат выборки должен содержать записи, различающиеся только значением аналитики ‘НДС’. Так как для счета описаны пять аналитик, а ограничение указано только для двух из них, то в базе данных будут найдены несколько записей сальдо с одинаковым значением аналитики ‘НДС’. Такие записи будут объединены в одну запись. Результат сложения сумм из объединяемых записей заносится в локальную переменную ‘Сумма’.

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

Для каждой отобранной записи сальдо будет сформирована проводка типа ‘Сумма по учетной цене товара’. Для заполнения аналитики ‘НДС’ дебетового счета используется одноименная локальная переменная. Значение локальной переменной ‘Сумма’ будет занесено в сумму создаваемой проводки.

Описание одной  пакетной проводки заменяет описания нескольких обычных проводок. В нашем случае пришлось бы создать три типа проводок для каждого из вариантов значений НДС (0, 10, 20).

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