Was this article helpful?

Спасибо за вашу оценку!

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

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

Описание практикума

Учебная бизнес-задача

Бизнес-кейс предназначен для демонстрации использования виджета «Проводник» для целей работы с прикрепляемыми файлами сразу в несколько объектов системы по принципу одного окна.

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

Изучаемые инструменты платформы GreenData

Перечень инструментов платформы GreenData, продемонстрированных в настоящем практикуме:

МОДУЛЬ ПЛАТФОРМЫ ИНСТРУМЕНТЫ ПЛАТФОРМЫ

Авторизация и навигация на стенде

  • Вход в среду проектирования

  • Навигация по пунктам меню

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

Модель данных

  • Создание типов объектов

  • Создание и настройка атрибутов типа

Экранные формы

  • Настройка представления реестра

  • Настройка визуала

  • Настройка виджета «Проводник»

  • Настройка фрейма

Пользователи и группы доступа

  • Создание новых пользователей и групп доступа

Бизнес-правила

  • Настройка автоматической нумерации объектов

  • Создание и настройка алгоритма карточки объектов

    • Функция «attr»

    • Функция «var»

    • Функция «attrByVar»

    • Функция «if»

    • Функция «else»

    • Функция «iif»

    • Функция «return»

    • Функция «true»

    • Функция «false»

    • Функция «dict»

    • Функция «param»

    • Функция «forEach»

    • Функция «filterAlg»

    • Функция «objectsWithOptions»

    • Функция «save»

    • Функция «text»

    • Функция «currentUserHasGroup»

    • Функция «getObject»

    • Функция «dateFormat»

    • Функция «sequenceNextVal»

  • Создание и настройка визуального алгоритма

  • Создание фильтра для атрибута (алгоритм фильтрации)

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

  • Настройка доступа к объектам системы

Ориентировочное время прохождения практикума

Время на прохождение практикума составляет 2-3 часа.

Создание объектной модели

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

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

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

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

Сервисы по работе с объектами располагаются в меню в разделе «https://docs-public.gdcloud.org/platform/ru/administration-module.html[Администрирование]» платформы.

Для создания новых типов объектов (классов) необходимо зайти в раздел «Администрирование» → «Управление объектами» → «Типы объектов».

image

Для создания нового типа объекта в открывшейся форме необходимо нажать на кнопку «Создать».

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

В результате появится окно создания нового типа объекта.

image

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

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

Родитель «Объект» - является самым абстрактным объектом, содержащим минимально необходимый набор атрибутов.

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

image

Ко всем наименованиям объектов необходимо добавлять префикс в соответствии с ФИО пользователя (создателя объектов). Например, пользователя зовут Иванов Сергей Петрович.

Тогда мой объект «Информация о посылке» будет называться как «ИСП. Информация о посылке».

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

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

  • Ключевые:

    • Настройка иерархического представления файлов

    • Физическое лицо

  • Вспомогательные:

    • Алгоритм. Условие фильтрации для выбора элементов

    • Автонумерация

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

Создание типов – справочников

В соответствии с условиями данного кейса основные типы объекта, с которыми мы будем работать и которые необходимо создать, – «Договор» и «Информация о посылке». Их создание будет описано в пункте Создание типов «Договор» и «Информация о посылке».

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

Создание справочника «Почтовые сервисы»

В реестре типов объектов создадим справочник «Почтовые сервисы». Заполним поля «Наименование» («Почтовые сервисы») и «Наименование таблицы» («EMAIL_SER») согласно рисунку. Поле «Родитель» заполнится автоматически, необходимо проверить его значение.

image

Сохраним созданный тип объекта.

image

В созданный тип добавим существующие атрибуты «Порядок» («ORD») и «Сист. Идентификатор» (IDENT).

image

После нажатия кнопки выберем вариант «Выбор атрибута из полного списка атрибутов», через поиск найдем нужный нам атрибут и выберем его, нажав на кнопку «Добавить». Атрибут «Сист. Идентификатор» добавляется аналогично.

image

Перейдем в реестр типа объекта с помощью кнопки «Открыть реестр».

image

При помощи кнопки «Создать» добавим в реестр экземпляры данного справочника. Впоследствии при заполнении карточки расчёта пользователь будет выбирать подходящее значение из значений данного справочника.

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

В карточке справочника заполним поле «Наименование» и сохраним созданный объект.

image

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

  • Boxberry

  • СДЭК

  • PONY EXPRESS

  • Деловые линии

  • DHL

  • DPD

  • ПЭК

  • EPS

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

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

Создание справочника «Вид посылки»

Создадим справочник «Вид посылки». Заполним поля «Наименование» («Вид посылки») и «Наименование таблицы» («PACK_TYPE») согласно рисунку. Поле «Родитель» заполнится автоматически, необходимо проверить его значение.

image

Аналогично пункту Создание справочника «Почтовые сервисы» добавим существующие атрибуты «Порядок» («ORD») и «Сист. Идентификатор» (IDENT).

Перейдем в реестр и создадим список экземпляров:

  • Письмо

  • Стандартная

  • Нестандартная

  • Посылка 1-ого класса

  • Посылка EMS

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

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

Создание справочника «Статус посылки»

Создадим справочник «Статус посылки». Заполним поля «Наименование» («Статус посылки») и «Наименование таблицы» («PACK_STATUS») согласно рисунку. Поле «Родитель» заполнится автоматически, необходимо проверить его значение.

image

Аналогично пункту Создание справочника «Почтовые сервисы» добавим существующие атрибуты «Порядок» («ORD») и «Сист. Идентификатор» (IDENT).

Перейдем в реестр и создадим список экземпляров:

  • В обработке

  • В пути

  • На распределении

  • Ожидает заказчика

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

image

Создание справочника «Статус договора»

Создадим справочник «Статус договора». Заполним поля «Наименование» («Статус посылки») и «Наименование таблицы» («CONTRACT_STATUS») согласно рисунку. Поле «Родитель» заполнится автоматически, необходимо проверить его значение.

image

Аналогично пункту Создание справочника «Почтовые сервисы» добавим существующие атрибуты «Порядок» («ORD») и «Сист. Идентификатор» (IDENT).

Перейдем в реестр и создадим список экземпляров:

  • На согласовании

  • Выполняется

  • Выполнен

  • Отклонен

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

image

Создание типов «Договор» и «Информация о посылке»

Создание типа объекта «Информация о посылке» и его атрибутов

В соответствии с условиями данного кейса создадим тип объекта под названием «Информация о посылке». Впоследствии в него будут добавлять документы сотрудники службы доставки. Указанные документы будут отображаться в проводнике – инструменте для отображения файлов клиента из разных типов.

Заполним поля «Наименование» («Информация о посылке») и «Наименование таблицы» («PACK_INFORMATION») согласно рисунку.

image

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

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

Создание атрибутов осуществляется с помощью кнопки «Создать» на панели инструментов. Подробнее создание каждого атрибута описано в далее. Создание атрибута с договором будет описано после создания соответствующего типа объекта.

image

Атрибут «Вид посылки»

Создадим атрибут «Вид посылки». Это атрибут типа «Объект», который позволит нам выбирать ранее заполненные виды посылок.

Заполним данные согласно рисунку.

image

Заполним поля «Наименование» («Вид посылки») и «Наименование поля для таблицы» («PACK_TYPE_ID»). В типе объекта выберем «Вид посылки». Сохраним атрибут с помощью кнопки «ОК».

Атрибут «Вес»

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

Заполним поля «Наименование» («Вес») и «Наименование поля для таблицы» («PACK_WEIGHT») согласно рисунку.

image

Атрибут «Высота»

Аналогично атрибуту «Вес» создадим атрибут «Высота». Атрибут предназначен для хранения информации о высоте посылки. Заполним поля «Наименование» («Высота») и «Наименование поля для таблицы» («PACK_HEIGHT»).

image

Атрибут «Ширина»

Перейдем к созданию атрибута «Ширина». В нем будет храниться информация о ширине посылки. Заполним поля «Наименование» («Ширина») и «Наименование поля для таблицы» («PACK_WIDTH»).

image

Атрибут «Длина»

Создадим атрибут для еще одной физической характеристики посылки – «Длина». Заполним поля «Наименование» («Длина») и «Наименование поля для таблицы» («PACK_LENGH»).

image

Атрибут «Номер посылки»

Атрибут «Номер посылки» необходим для создания автоматического порядка будущих посылок. Выберем тип «Целое число», в «Наименовании поля для таблицы» укажем «Номер посылки», в «Наименовании поля для таблицы» - «PACKAGE_NUMBER» .

image

Атрибут «Отправитель»

Атрибут «Отправитель» будет объектным. Его создание необходимо для осуществления связи между типами «Информация о посылке» и «Лицо». В «Наименовании» указываем «Отправитель», в «Наименовании поля для таблицы» - «SENDER_ID». В качестве типа объекта выбираем «Лицо».

image

Атрибут «Получатель»

Создание атрибута «Получатель» будет осуществляться аналогично пункту 2.3.1.7: он также будет объектным. В «Наименовании» укажем «Получатель», в «Наименовании поля для таблицы» - «RECIPIENT_ID». В качестве типа объекта выберем «Лицо».

image

Атрибут «Статус»

Перейдем к созданию еще одного объектного атрибута. Атрибут «Статус» необходим для связи с созданным ранее справочником. В «Наименовании» укажем «Статус», в «Наименовании поля для таблицы» - «PACK_STATUS_ID». В качестве типа объекта выберем «Статус посылки».

image

Атрибут «Прикрепленные файлы»

Создадим атрибут «Прикрепленные файлы», в котором будут храниться файлы с информацией о посылках. Заполним поля «Наименование» («Прикрепленные файлы») и «Наименование поля для таблицы» («ATTACHED_FILES_PACK_ID»). В качестве типа объекта укажем «Файл», также отметим «Множественный выбор» в переключателе ниже.

image

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

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

Создание экземпляров типа «Автонумерация»

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

Откроем тип «Автонумерация» и перейдем в реестр. Для создания нового экземпляра нажмем кнопку «Создать».

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

Перейдем к созданию экземпляров для наших будущих типов. Заполним поля «Наименование» («Номер посылки») и «Идентификатор» («PACKAGE_NUM»). В качестве текущего значения ставим «1».

image

Аналогично создаем для типа «Договор».

image

Настройка выражений для типа «Информация о посылке»

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

image

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

image

Откроется карточка создания алгоритма. В «Наименовании алгоритма» укажем «Заполнение наименования посылки», в «Идентификаторе» − «ALG_FOR_PACK_NAME». В качестве базового типа объектов выберем «Информация о посылке».

image

Рассмотрим алгоритм:

  1. На вкладке «Работа с текстом» выберем функцию «text». В качестве значения укажем «Посылка от»

  2. Далее перейдем на вкладку «Работа с датами». Выберем функцию «dateFormat». В качестве первого параметра нам необходимо выбрать атрибут с датой создания. Для этого откроем вкладку «Источники и справочники» и выберем функцию «attr», где отметим нужный нам атрибут. В качестве второго параметра выберем нужный вариант даты: «dd.MM.yy».

  3. Возвращаемся на вкладку «Работа с текстом», снова выберем функцию «text», в значении укажем «, № ».

  4. Далее перейдем на вкладку «Дополнительные». Выбираем функцию «sequenceNextVal», в качестве последовательности выбираем созданную ранее «Номер посылки» (раздел Создание экземпляров типа «Автонумерация»).

  5. Сохраним алгоритм.

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

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

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

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

Настройка визуала карточки типа «Информация о посылке»

Далее необходимо настроить внешний вид карточки «Информация о посылке».

В реестре указанного типа необходимо создать новый экземпляр с помощью кнопки «Создать».

image

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

image

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

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

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

Создание алгоритма видимости для поля «Высота»

Настроим алгоритм видимости для атрибута «Высота». Указанное поле не должно отображаться при выборе вида посылки «Письмо».

Создадим алгоритм, нажав на кнопку «Видимость».

image

В открывшейся форме необходимо заполнить поля аналогично рисунку. В поле «Наименование алгоритма» укажем «Алгоритм видимости для высоты», в качестве базового типа объекта выберем «Информация о посылке».

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

В поле «Формула/алгоритм» последовательно напишем формулу:

На вкладке «Логические» выберем функцию «iif».

В качестве первого параметра необходимо задать равенство между атрибутом «Вид посылки» и значением из справочника «Письмо». На вкладке «Основные» нажмем на «attr», далее выберем нужный нам атрибут. После знака «=» используем функцию «dict», в качестве типа объекта выберем «Вид посылки», в качестве объекта – «Письмо».

Во втором параметра укажем «false», в третьем «true».

Сохраним алгоритм.

Аналогичные алгоритмы нужно добавить для атрибутов «Длина» и «Ширина».

Создание типа объекта «Договор» и его атрибутов

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

Заполним поля «Наименование» («Договор») и «Идентификатор» («CONTRACT») согласно рисунку.

image

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

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

Создание атрибутов осуществляется с помощью кнопки «Создать» на панели инструментов. Подробнее создание каждого атрибута описано далее.

После создания типа «Договор» необходимо вернуться к типу «Информация о посылке» и добавить объектный атрибут.

Заполним поля «Наименование» («Договор») и «Наименование поля для таблицы» («CONTRACT_ID»).

image

Атрибут «Адрес доставки»

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

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

Атрибут «Дата заявки»

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

В «Наименовании» укажем «Дата заявки», в «Наименовании поля для таблицы» - «APP_DATE» .

image

Атрибут «Дата получения»

Аналогично «Дате заявки» создадим атрибут «Дата получения». В нем будет храниться информация о том, когда посылка была доставлена. В «Наименовании» укажем «Дата получения», в «Наименовании поля для таблицы» - «REC_DATE» .

image

Атрибут «Информация о Посылке»

Для добавления информации о посылке в договор необходимо использовать атрибут типа «Дочерний объект». Заполним «Наименование» («Информация о посылке») и «Наименование поля для таблицы» («INFORM_ABOUT_PACK_LIST»). В качестве типа объекта укажем «Информация о посылке», а в связи – выберем атрибут «Договор».

image

Атрибут «Клиент»

В атрибуте «Клиент» выберем тип «Объект». В качестве типа объекта укажем «Лицо». В «Наименовании» - «Клиент», в «Наименовании поля для таблицы» - «CLIENT_ID» .

image

Атрибут «Номер Договора»

Атрибут «Номер договора» необходим для внесения номера договора. Выберем тип «Целое число», в «Наименовании» укажем «Номер договора», в «Наименование поля для таблицы» - «CONTRACT_NUMBER» .

image

Атрибут «Почтовый сервис»

Атрибут «Почтовый сервис» создадим с типом «Объект». В «Наименовании» укажем «Почтовый сервис», в «Наименовании поля для таблицы» - «EMAIL_SER_ID». В качестве типа объекта выберем ранее созданный справочник с названиями почтовых сервисов.

image

Атрибут «Прикрепленные файлы»

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

image

Перейдем на вкладку «Визуал», в поле «Визуальное представление для атрибута типа «Объект» выберем значение «Виджет для файлов», а в «Виджете» - «Прикрепленные файлы».

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

Атрибут «Статус договора»

Перейдем к созданию еще одного объектного атрибута. Атрибут «Статус» необходим для связи с созданным ранее справочником. В «Наименовании» укажем «Статус договора», в «Наименовании поля для таблицы» - «CONTRACT_STATUS_ID». В качестве типа объекта выберем «Статус договора».

image

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

Настройка выражений для типа «Договор»

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

В «Наименовании алгоритма» укажем «Заполнение наименования посылки», в «Идентификаторе» – «ALG_FOR_PACK_NAME». В качестве базового типа объектов выберем «Информация о посылке».

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

Рассмотрим алгоритм:

  1. На вкладке «Работа с текстом» выберем функцию «text». В качестве значения укажем «Договор от »

  2. Далее перейдем на вкладку «Работа с датами». Выберем функцию «dateFormat». В качестве первого параметра необходимо выбрать атрибут с датой создания. Для этого откроем вкладку «Источники и справочники» и выберем функцию «attr», где отметим нужный атрибут. В качестве второго параметра выберем нужный вариант даты: «dd.MM.yy».

  3. Вернемся на вкладку «Работа с текстом», снова выберем функцию «text», в значении укажем «, № ».

  4. Далее перейдем на вкладку «Дополнительные». Выберем функцию «sequenceNextVal», в качестве последовательности выберем созданную ранее «Номер договора»

  5. Сохраним алгоритм.

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

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

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

Сохраним настройку выражения и карточку типа объекта.

Настройка визуального представления «Договора»

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

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

image

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

Использование виджета «Лейбл (по атрибуту)»

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

Перейдем к настройке виджета, в котором будет отображаться статус договора. На вкладке «Виджеты» выберем «Лейбл (по атрибуту)». Сделаем активными настройки «Выводить значение в новой строке» и «Показывать наименование атрибута». В качестве атрибута выберем «Статус договора».

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

Настройка событий для типа «Информация о посылке»

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

Реализация данной логики технически предполагает пересчет статуса договора при изменении информации о посылке. В связи с этим алгоритмы будут написаны для типа «Информация о посылке».

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

Для обеспечения корректной логики расчета будет создан алгоритм, привязанный к типу объекта «Информация о посылке» в блоке: «Событие после сохранения» (для случаев создания новой и изменения существующей посылки).

Алгоритм события после сохранения

Рассмотрим порядок создания алгоритма для пересчета статуса договора при создании/изменении информации о посылке. Указанный алгоритм впоследствии будет привязан к событию после сохранения в тип объекта «Информация о посылке».

Подготовительные настройки

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

Для создания алгоритма фильтрации откроем реестр типов объектов, найдем тип «Алгоритм. Условие фильтрации для выбора элементов». Нажмем «Открыть реестр».

image

Создадим новый алгоритм фильтрации. Поля «Наименования алгоритма» («Фильтрация посылок») и «Тип объекта, элементы которого нужно отфильтровать» («Информация о посылке») заполним согласно рисунку.

image

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

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

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

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

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

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

Разберем построчно:

  1. Сначала укажем атрибут, значение которого будет сравниваться с передаваемым параметром. Используем функции «attr». Она находится на вкладке «Источники».

  2. Далее с помощью функции «param» выберем созданный ранее параметр.

Создание основного алгоритма

Вернемся к типу объекта «Информация о посылке». Перейдем на вкладку «События». Алгоритм необходимо добавить в поле «Событие после сохранения».

image

Нажмем на кнопку «Добавить» для создания нового экземпляра.

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

Заполним наименованием алгоритма («Автоматическое заполнение статуса договора») и идентификатор («AUTO_FILL_CONTR_STATUS»), в качестве базового типа объекта выберем «Информацию о посылке».

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

Перейдем к созданию алгоритма. Разберем его построчно:

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

  1. Для начала создадим переменную для фиксации итогового статуса договора. Используем функцию «var» во вкладке «Алгоритмы». В поле «Создать новую переменную» введем «status» и сохраним.

  1. Далее аналогично создадим 5 переменных, каждая из которых будет соответствовать статусу договора: «process», «way», «disturb», «waitfororderer», «declined». Каждой из созданных переменных с помощью знака «:=» присваиваем значением «0».

  2. Далее на вкладке «Алгоритмы» выберем функцию «forEach». Она необходима для того чтобы в цикле проверить все посылки, привязанные к договору.

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

    2. Для второго параметра на вкладке «Источники и справочники» выберем функцию «objectsWithOptions».

      1. В качестве объекта для функции выберем «Информация о посылке».

      2. В качестве второго параметра нужно выбрать созданный ранее алгоритм фильтрации. Для этого следует использовать функцию «filterAlg», она находится на вкладке «Источники и справочники», выберем соответствующий алгоритм, созданный ранее.
        Функция будет автоматически вставлена с параметром, который следует заполнить в основном алгоритме для корректной фильтрации объектов в цикле. В качестве значения параметра следует использовать атрибут «Договор» с помощью функции «attr». Идея состоит в том, что при изменении конкретной посылки из данного атрибута система получит информации о том, к какому договору посылка привязана и благодаря этому сможет найти все прочие посылки, привязанные к этому договору.

  3. Далее следует зафиксировать статусы по всем посылкам. Для этого используем переменные, созданные ранее, и проверим статусы с помощью функции «if» (расположена на вкладке «Логические»). Создадим условия равенства значений статусов посылок и договоров. Используем функцию «аttrByVar»: для каждой посылки проверяем значение атрибута «Статус посылки» – сравнение будет осуществлять со статичным значением справочника с помощью функции «dict» на вкладке «Источники и справочники». При обнаружении совпадения записываем объект в созданную ранее переменную (счетчик).

    1. Пропишем все условия согласно рисунку.

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

  1. После того как была получена информации о статусах всех посылок можно перейти к проверке соответствия для выбора итогового статуса договора. Для выполнения проверок используем функцию «else if» на вкладке «Логические». Последующие строки заполним аналогично рисунку.

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

  1. После добавления всех условий нужно занести значения в соответствующий объект.

  2. После добавления всех условий нужно записать значение итогового статуса в соответствующий договор. Создадим переменную «docObj» и запишем в нее целиком объект «Договор», чтобы мы могли обратиться к атрибутам договора. Для этого используем функцию «getObject» на вкладке «Работа с объектами». В качестве первого параметра выберем атрибут «Договор.Код» с помощью функции «attr».

    Не забудьте выбрать атрибуты типа для оптимального кеширования функции: мы будем использовать атрибут «Статус договора», поэтому его необходимо выбрать при вставке функции «getObject».

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

  1. Далее выберем функцию «attrByVar», активируем настройку «Установить значение», в скобках вынесем созданную в 1 пункте переменную «status», т.к. именно в нее записан итоговый результат расчетов всего алгоритма.

  2. Для сохранения статуса договора следует добавить функцию «save», которая расположена на вкладке «Алгоритмы». В качестве параметра функции передадим значение переменной «docObj».

image

  1. Сохраним алгоритм.

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

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

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

Создание групп доступа

Для целей бизнес-кейса создадим следующие группы доступа: «Сервис оформления заказов» и «Сервис доставки». Чтобы создать новую группу доступа, перейдем в пункт меню Администрирование → Управление доступом → Группы доступа.

С помощью кнопки «Добавить» создадим новую группу доступа и в поле наименование укажем «Сервис оформления заказов». Сохраним новую группу доступа с помощью кнопки «Сохранить».

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

Аналогичные действия нужно проделать для второй группы доступа «Сервис доставки».

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

Создание пользователей

Чтобы создать нового пользователя, последовательно перейдем в разделы меню: «Администрирование» → «Управление доступом» → «Пользователи». Откроется реестр пользователей. Нажмем кнопку «Добавить».

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

image

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

image

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

image

image

Далее создадим еще одного сотрудника, добавим ему группу доступа «Сервис доставки».

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

image

Настройка виджета «Проводник»

Виджет «Проводник» предназначен для работы с файлами (прикрепление/замена/удаление/перемещение) сразу в несколько объектов системы по принципу одного окна.

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

Для настройки виджета необходимо открыть тип объекта «Физическое лицо» и перейти в реестр. Далее создадим новый экземпляр с помощью кнопки «Добавить».

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

Выберем «Частное лицо» и перейдем в настройку визуального представления.

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

В группировках выберем «Вкладка» и вынесем ее на визуал. Поменяем название на «Документы по заказам».

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

В списке виджетов найдем значение «Проводник» и вынесем его на визуал:

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

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

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

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

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

Наименование алгоритма («Алгоритм видимости файлов») и идентификатор («alg_files_visibility») заполним согласно рисунку.

Разберем алгоритм:

  1. На вкладке «Логические» выберем функцию «iif». В качестве первого параметра нужно использовать функцию «currentUserHasGroup», она находится на вкладке «Работа с пользователями». Далее в скобках с помощью «dict» вынесем значение группы доступа «Сервис доставки».

  2. Вместо второго и третьего параметра укажем «false» и «true» именно в этой последовательности.

  3. Сохраним алгоритм.

Создание экземпляра типа «Настройка иерархии файлов»

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

Создадим экземпляр типа «Настройка иерархии файлов». Для этого откроем опции виджета «Проводник» и нажмем на кнопку «Добавить»:

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

Заполним карточку: в «Наименовании» укажем «Заявки клиентов доставки», в качестве типа объекта – «Физическое лицо». В поле «Режим просмотра по умолчанию» выберем значение «Табличный».

image

Cоздание вершины «Информация о получении»

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

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

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

В наименовании укажем «Информация о получении». Заполним тип объекта и атрибут типа согласно рисунку. В поле «Классификации» выберем все из предложенных.

image

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

image

Перейдем к созданию алгоритма определения объектов. Перед созданием алгоритма необходимо создать алгоритм фильтрации, который будет использоваться в нем. Откроем тип объекта «Алгоритм. Условие фильтрации для выбора элементов» и создаем новый экземпляр.

Поля «Наименования алгоритма» («Клиент-получатель») и «Тип объекта, элементы которого нужно отфильтровать» («Информация о посылке») заполним согласно рисунку.

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

Для алгоритма создадим параметры в соответствующей вкладке. При добавлении параметра выберем «Параметры объекта (фильтр)». Карточку заполним согласно рисунку. В качестве наименования укажем «Клиент доставки», в поле «Сист. Идентификатор» – «DELIVERY_CL», в системном типе объекта – «Физическое лицо».

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

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

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

Разберем подробно:

  1. Сначала введем переменную с помощью функции «attr». Она находится на вкладке «Источники».

  2. Далее выберем с помощью функции «param» выбираем созданный ранее параметр.

Перейдем к основному алгоритму: откроем реестр типа «Алгоритм. Карточки объектов» и создадим новый экземпляр. Заполним наименование алгоритма («Алгоритм для информации о получении») и идентификатор («alg_for_inform_about_rec»). В качестве базового типа объекта выберем «Информация о посылке».

image

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

Разберем алгоритм:

  1. def files_from_rec

    Для начала создадим переменную для вывода результата. Используем функцию «var» во вкладке «Алгоритмы». В поле «Создать новую переменную» введем «files_from_rec». C помощью знака «:=» присвоим ей значение «[ ]». Это означает, что в переменную будет записываться массив элементов.

  1. Далее на вкладке «Алгоритмы» выберем функцию «forEach». Она нам будет нужна для создания цикла.

  2. В качестве первого параметра создадим новую переменную «rec» аналогично пункту 1. Для второго параметра на вкладке «Источники и справочники» выберем функцию «objectsWithOptions», в качестве объекта выберем «Информация о посылке». В качестве второго параметра нужно выбрать созданный алгоритм фильтрации. Для этого используем функцию «filterAlg», она находится на вкладке «Источники и справочники», выберем соответствующий алгоритм. В качестве значения после «:» вынесем атрибут с помощью функции «attr».

  3. В следующей строке с помощью функции «var» выведем переменную, созданную в первой строке, далее вручную добавим «.add». В скобках добавим значение, используя функцию «attrByVar»: в качестве переменной выбираем «rec», в качестве атрибута – «Код».

  4. На вкладке «Алгоритмы» выберем функцию «return» и аналогично пункту 4 выведем переменную.

  5. Сохраним алгоритм.

Cоздание вершины «Информация об отправлении»

Перейдем к созданию второй вершины. В вершине «Информация об отправлении» будут храниться документы по отправленным клиентом посылкам.

В наименовании укажем «Информация об отправлении». Заполним тип объекта и атрибут типа согласно рисунку. В поле «Классификации» выберем все из предложенных. Активизируем настройку «Скрыть в правой части папки классификаций».

image

Для создания алгоритма определения объектов нам снова необходим алгоритм фильтрации. Откроем тип объекта «Алгоритм. Условие фильтрации для выбора элементов» и создаем новый экземпляр.

Поля «Наименования алгоритма» («Клиент-отправитель») и «Тип объекта, элементы которого нужно отфильтровать» заполняем согласно рисунку («Договор»).

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

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

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

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

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

Разберем подробно:

  1. Сначала введем переменную с помощью функции «attr». Она находится на вкладке «Источники».

  2. Далее с помощью функции «param» выберем созданный раннее параметр.

Вернемся к основному алгоритму: откроем реестр типа «Алгоритм. Карточки объектов» и создадим новый экземпляр. Заполним наименование алгоритма («Алгоритм для информации об отправлении») и идентификатор («alg_for_inform_about_send»). В качестве базового типа объекта выберем «Договор».

image

Разберем алгоритм:

  1. def files_from_send

    Создадим переменную для вывода результата. Используем функцию «var» во вкладке «Алгоритмы». В поле «Создать новую переменную» вводим «files_from_send». C помощью знака «:=» присвоим ей значение «[ ]».

  1. Далее на вкладке «Алгоритмы» выберем функцию «forEach». Она нам будет нужна для создания цикла.

  2. В качестве первого параметра создадим новую переменную «send» аналогично пункту 1. Для второго параметра на вкладке «Источники и справочники» выберем функцию «objectsWithOptions», в качестве объекта выберем «Информация о посылке». В качестве второго параметра нужно выбрать созданный алгоритм фильтрации. Для этого используем функцию «filterAlg», она находится на вкладке «Источники и справочники», выберем соответствующий алгоритм. В качестве значения после «:» вынесем атрибут с помощью функции «attr».

  3. В следующей строке с помощью функции «var» выведем переменную, созданную в первой строке, далее вручную добавим «.add». В скобках добавим значение, используя функцию «attrByVar»: в качестве переменной выберем «send», в качестве атрибута – «Код».

  4. На вкладке «Алгоритмы» выберем функцию «return» и аналогично 4 пункту выведем переменную.

  5. Сохраним алгоритм.

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

Cоздание вершины «Информация о посылках»

Следующая вершина будет дочерней от вершины «Клиент доставки». В ней будут храниться документы на посылки, входящие в договоры.

В наименовании укажем «Информация о посылках». Заполним тип объекта и атрибут типа согласно рисунку. В поле «Классификации» выберем все из предложенных.

image

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

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

Перейдем к созданию алгоритма для определения объектов. В наименовании укажем «Алгоритм для определения посылок в договоре», в идентификаторе – «alg_for_determining_pack». В качестве базового типа выберем «Договор».

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

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

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

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

Создание пунктов меню

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

Последовательно перейдем по вкладкам главного меню: Администрирование → Управление доступом → Настройки → Настройка меню.

image

Создание пункта меню «Клиенты доставки»

Создадим пункт меню «Клиенты доставки». При создании нового пункта в окне уточнения типа выберем «Пункт меню.Реестр».

Заполним поля в соответствии с рисунком. Заполним поле «Наименование» («Клиенты доставки») – название пункта меню для пользователя. Заполним поле «Идентификатор» («CLIENT»). Значение в поле «Порядок» определяет местоположение создаваемого пункта меню среди пунктов, имеющих одного родителя.

image

Пункт меню настроен. Сохраним его с помощью кнопки «Сохранить» на панели инструментов. Обновим страницу и проверим его наличие в структуре главного меню.

Создание пункта меню «Договор»

Создадим еще один пункт меню «Договор». При создании нового пункта в окне уточнения типа выберем «Пункт меню. Реестр».

Заполним поля в соответствии с рисунком. Заполним поле «Наименование» («Договор») – название пункта меню для пользователя и «Идентификатор» («CONTRACT»). Значение в поле «Порядок» определяет местоположение создаваемого пункта меню среди пунктов, имеющих одного родителя.

image

Создание пункта меню «Посылки»

Создадим еще один пункт меню «Посылки». При создании нового пункта в окне уточнения типа выберем «Пункт меню. Реестр». Заполним поля в соответствии с рисунком: наименование – «Посылки», идентификатор – «PACKAGE».

image

Пункт меню настроен. Сохраним его с помощью кнопки «Сохранить» на панели инструментов. Обновим страницу и проверим его наличие в структуре главного меню.

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

Настройка прав доступа

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

image

Выдача прав доступа на пункты меню

Выдадим права на доступ группе «Сервис оформления посылок» к созданным ранее пунктам меню.

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

image

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

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

Выдача прав доступа на типы объектов

Кроме того, выдадим права на типы объектов «Физическое лицо» (а именно «Частное лицо»), «Информация о посылках» и «Договор» группе «Сервис оформления заказов, а также на все созданные ранее справочники. После выдачи всех прав пользователь, добавленный в группу «Сервис оформления заказов» сможет самостоятельно создавать экземпляры новых посылок и договоров, прикреплять к ним нужные файлы и при необходимости вносить какое-либо изменения.

Для этого в типе объекта выбираем «Тип объекта» и находим нужные типы.

image

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

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

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

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

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

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

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

Заполним нужные поля:

image

Далее перейдем на вкладку «Прикрепленные файлы» и добавим новый документ:

image

В качестве классификации файлов выберем «Все файлы»:

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

Сохраним карточку.

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

image

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

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

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

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