Практикум. Модуль Печатные формы. Бланк заказа товаров (начальный уровень)
Описание практикума
Учебная бизнес-задача
Данный практикум «Бланк заказа товаров» описывает процесс формирования печатной формы на основе данных бланка заказа товара в магазине. Продавец вносит данные о заказе в карточку, при нажатии на кнопку «Печатная форма» бланк заказа формируется в виде документа и автоматически загружается на компьютер продавца. В дальнейшем сформированный документ может быть передан курьеру для осуществления доставки или клиенту в качестве подтверждающего покупку документа.
Изучаемые инструменты платформы GreenData
Перечень инструментов платформы GreenData, продемонстрированных в настоящем практикуме:
МОДУЛЬ ПЛАТФОРМЫ | ИНСТРУМЕНТЫ ПЛАТФОРМЫ |
---|---|
Авторизация и навигация на стенде |
|
Модель данных |
|
Экранные формы |
|
Пользователи и группы доступа |
|
Бизнес-правила |
|
E-doc |
|
Администрирование |
|
Создание объектной модели
Необходимо зайти в среду проектирования и разработки бизнес-приложений GreenData под пользователем с правами бизнес-администратора.
После успешной авторизации будет открыта рабочая область среды разработки бизнес-приложений. Рабочая область среды разработки может выглядеть иначе, чем на рисунке, при этом расположение основных элементов управления на различных стендах одинаково. Слева на верхней панели всегда располагается кнопка, по которой можно открыть меню и перейти в нужный раздел.
Сервисы по работе с объектами располагаются в меню в разделе «https://docs-public.gdcloud.org/platform/ru/administration-module.html[Администрирование]» платформы.
Для создания новых типов объектов (классов) необходимо зайти в раздел «Администрирование» > «Управление объектами» > «Типы объектов».
Для создания нового типа объекта в открывшемся реестре необходимо нажать на кнопку «Создать».
В результате появится окно создания нового типа объекта.
Корректно заполняйте поля, выделенные красным цветом, так как после сохранения данного объекта, изменить их будет нельзя. |
В шапке данной формы расположены поля, отвечающие за наименование объекта, его отражение в БД в качестве реляционной таблицы, а также указывается объект родитель, с которого будут унаследованы базовые атрибуты.
Родитель «Объект» – самый абстрактный объект, содержащий минимально необходимый набор атрибутов.
В нижней части формы на первой вкладке расположены атрибуты объекта. При создании нового объекта на данной вкладке располагаются атрибуты, унаследованные от родителя. Чтобы их посмотреть необходимо, установить чек-бокс «Показать атрибуты родительского объекта».
Ко всем наименованиям объектов необходимо добавлять префикс в соответствии с ФИО пользователя (создателя объектов). Например, пользователя зовут Иванов Сергей Петрович. Тогда мой объект «Бланк заказа» будет называться как «ИСП. Бланк заказа», а таблица для объекта «ISP_ORDER_FORM». Названия полей-ссылок на объекты также должны содержать префикс, например, «ISP_ORDER_FORM_ID». |
Создание типа объекта «бланк заказа»
В соответствии с условиями данного кейса создадим тип объекта под названием «Бланк заказа» [ORDER_FORM]. На основе данных карточки бланка заказа впоследствии будет формироваться настроенная печатная форма. В качестве родителя при создании нового типа выберем базовый тип объекта – «Объект».
Помимо унаследованного атрибута «Наименование» потребуется создать/добавить атрибуты:
-
Номер заказа [ORDER_NUMB]
-
Дата заказа [ORDER_DATE]
-
Дата и время доставки [DELIVERY_DATE]
-
ФИО [FULL_CLIENT_NAME]
-
Номер телефона [TELEPHON_NUMBER]
-
Адрес доставки (Город, улица, дом) [CLIENT_ADRESS]
-
Подъезд [ENTRANCE_NUMB]
-
Квартира [APARTMENT_NUMBER]
-
Комментарий покупателя [CLIENT_COMMENT]
-
ИТОГО [TOTAL_AMOUNT]
-
Способ доставки [DELIVERY_METHOD_ID]
-
Способ оплаты [DELIVERY_WAY_ID]
-
Список товаров [GOODS_ORDER_LIST]
-
Прикреплённые файлы [SYS_FILE_ID]
Создадим атрибут «Номер заказа» [ORDER_NUMB]. Для этого необходимо нажать на кнопку «Создать» и в появившемся окне заполнить поля аналогично тому, как это сделано на рисунке.
Аналогичным образом создадим остальные атрибуты, выбрав для них типы значений аналогичные тем, что указаны на рисунке.
Дополнительно для атрибута «Дата заказа» установим чек-бокс в поле «Значение по умолчанию – текущая дата».
Для атрибутов «Комментарий покупателя» и «Номер телефона» укажем визуальное представление.
Атрибут «Прикрепленные файлы» добавим, как существующий, для этого нажмем на соответствующую кнопку в карточке типа Бланка заказа, укажем «Выбор атрибута через тип объекта».
В качестве типа объекта укажем «ДО. Документ», а в качестве атрибута выберем «Прикрепленные файлы». Нажмем кнопку «Добавить» и после этого сохраним изменения в типе объекта.
Далее откроем карточку добавленного атрибута для внесения изменений, для этого необходимо выделить этот атрибут и нажать кнопку «Изменить». В настройках данного атрибута в качестве типа объекта уже будет указано значение «Файл». Необходимо дополнительно установить чек-бокс в поле «Множественный выбор».
Далее переходим на вкладку «Визуал», в визуальном представлении для атрибута типа объект выбираем Множественные объекты в виде таблицы.
Сохраним изменения.
Описание создания атрибута дочернего типа («Список товаров») и объектных атрибутов («Способ доставки» и «Способ оплаты») будет рассмотрено в последующих разделах.
Создание выражений для «Бланка заказа»
Значения атрибутов в системе могут заполняться автоматически с учетом логики, заданной алгоритмами. Например, автоматически осуществляется заполнение наименований объектов в Системе.
Создадим выражение для автоматической нумерации обращений – это позволит сделать поиск по реестру более удобным.
Для этого сначала перейдем по вкладкам «Администрирование» → «Управление объектами» → «Тип объекта» и перейдем в реестр типа объекта «Автонумерация» [SYS_SEQUENCE]. Это можно сделать с использованием фильтра по идентификатору.
Выделяем нужный нам тип объекта «Автонумерация» и нажимаем кнопку «Открыть реестр».
В реестре с помощью кнопки «Добавить» создадим экземпляр типа «Автонумерация», заполним поля «Наименование» («Автонумерация бланков заказа») и поле «Идентификатор» [AUT_NUMB_BLANKS] и сохраним карточку.
Вернемся в тип объекта «Бланк заказа» и перейдем во вкладку «Выражения» нажав на кнопку «Создать». Добавим новое выражение, с помощью которого система будет автоматически нумеровать новые обращения и записывать результат в атрибут «Номер заказа».
Создадим алгоритм, нажав на кнопку «Создать алгоритм».
Появится окно для создания алгоритма. На вкладке «Параметры» в качестве базового типа объекта указываем «Бланк заказа». Сохраним карточку алгоритма, нажав на значок дискеты.
В поле «Формула/алгоритм» последовательно напишем формулу:
-
Добавим функцию «if». Для ее добавления установим курсор в поле «Формула/алгоритм» и нажмем на соответствующую кнопку на панели с функциями на вкладке «Логические». Данная функция появится в виде структуры, состоящей из двух частей: условие (задается в обычных скобках) и последующего действия в случае соответствия данному условию (задается в фигурных скобках).
-
В условие функции «if» добавим функцию «isNewObject». Она находится на вкладке «Работа с объектами». С ее помощью можно проверить, является ли объект, указанный в скобках данной функции – новым для системы.
-
В скобки функции «isNewObject» добавим текущий объект, для этого используем функцию «currentObject». Она находится на вкладке «Работа с объектами». Таким образом, с помощью данного выражения «isNewObject (currentObject())» система будет проверять, является ли новым для системы текущий объект, по которому выполняется алгоритм.
-
Перейдем к заполнению второй части функции «if», в которой необходимо указать действия, которые должна осуществить система в случае удовлетворения заданным условиям. Установим курсор в фигурные скобки на следующую строку. Выберем функцию «return» на вкладке «Алгоритмы».
-
После «return» добавим функцию «sequenceNextVal», выбрав ее на вкладке «Дополнительные». При выборе данной функции появится окно, в котором необходимо выбрать созданный ранее экземпляр типа «Автонумерация» («Автонумерация бланков заказа») и нажать «Готово». При вызове данной функции система присвоит следующее по порядку числовое значение в атрибуте «Текущее значение» в выбранном экземпляре типа «Автонумерация». Применение выражения «return sequenceNextVal (‘Автонумерация…’)» позволит вернуть это значение из экземпляра «автонумерации» в качестве результата работы алгоритма.
-
Установим курсор за фигурные скобки в следующей строке и добавим функцию «else». Чтобы ее добавить, нажмем на соответствующую кнопку на вкладке «Логические». Данная функция чаще всего используется после функции «if». Функция «else» задает действия для системы (в фигурных скобках) в том случае, если объект не удовлетворяет условию, заданному в функции «if».
-
Установим курсор в фигурные скобки функции «else». Выберем функцию «return» на вкладке «Алгоритмы».
-
После «return» добавим функцию «attr», выбрав ее на вкладке «Источники и справочники». При выборе данной функции появится окно со списком атрибутов типа, который ранее был выбран в поле «Базовый тип», в нашем примере это «Бланк заказа». В том случае, если при нажатии на указанную функцию в поле с атрибутами пусто, необходимо проверить, заполнено ли поле «Базовый тип» в текущей карточке алгоритма, выбрать его заново и сохранить карточку алгоритма с помощью дискеты. После выполнения этих действий снова нажать на функцию «attr».
-
В появившемся списке атрибутов выберем атрибут «Номер заказа» и нажмем «Ок». Сочетание «return ‘Номер заказа’» позволит вернуть значение из атрибута «Номер заказа» в качестве результата работы алгоритма.
В результате сформированный алгоритм будет выглядеть следующим образом.
Далее необходимо сохранить алгоритм и закрыть данное окно с помощью кнопки «Ок».
В карточке настройки выражения переключим чек-бокс «Расчет в момент создания новых объектов» в неактивное положение, а чек-бокс «Установить результат в атрибут» - в активное.
В качестве атрибута выберем «Номер заказа», в поле «Автоматический пересчет выражения» установим значение «При изменении атрибутов, используемых в алгоритме». Сохраним выражение. Также обязательно сохраним карточку типа после создания выражения.
Перейдем к настройке выражения для наименования бланков заказа. Снова вернемся на вкладку «Выражения».
Все типы объектов, по умолчанию, содержат выражение для автоматического заполнения наименования объекта. Указанное выражение наследуется от типа "Объект". Нельзя удалять это выражение! Для задания нового алгоритма следует использовать кнопку «Переопределить алгоритм». |
Выберем выражение для атрибута «Наименование» и нажмем на кнопку «Переопределить алгоритм».
В открывшемся окне настроим алгоритм. Проверим, что поле «Базовый тип» заполнено и в нем указан тип объекта «Бланк заказа», заполним наименование.
В поле «Формула последовательно выполним действия:
-
Добавим функцию «return», выбрав ее на вкладке «Алгоритмы».
-
Добавим функцию «text» на вкладке «Работа с текстом». В кавычки напишем текст «Бланк заказа № ».
-
После текста добавим арифметический знак «+», его можно добавить при помощи соответствующей клавиши на клавиатуре.
-
Далее с помощью функции «attr» на вкладке «Источники и справочники» добавим атрибут «Номер заказа»
В результате алгоритм будет выглядеть аналогично рисунку. Сохраним алгоритм и закроем карточку создания алгоритма с помощью кнопки «Ок».
После закрытия карточки алгоритма мы окажемся в реестре выражений типа «Бланк заказа». Далее необходимо обязательно сохранить карточку типа.
После сохранения необходимо открыть на редактирование выражение для атрибута «Наименование». Это можно сделать с помощью двойного клика по данной строке или нажав на кнопку «Редактировать», предварительно выделив указанную строку.
В настройках выражения в поле «Атрибут» уже будет указано значение «Наименование». Дополнительно укажем настройки в соответствии с рисунком.
Необходимо сохранить настройки данного выражения с помощью кнопки «Сохранить». Также обязательно сохраним карточку типа после создания выражения.
Выражения настроены. Важно проверить порядок выражений в реестре выражений данного типа. Поскольку в алгоритме для задания наименования мы используем значение из атрибута «Номер заказа», а оно в данном кейсе рассчитывается с помощью выражения, соответственно расчет выражения для атрибута «Номер заказа» должен осуществляться раньше, чем расчет выражения для атрибута «Наименование». Таким образом, необходимо расположить данные выражения в реестре в соответствующем порядке. Для изменения порядка выражений необходимо использовать кнопки перемещения. Выражения должны быть расположены в соответствии с рисунком ниже.
Обязательно сохраним карточку типа для сохранения внесенных изменений.
Создание типа объекта «Справочник товаров»
В реестре объектов создадим тип объекта «Справочник товаров» [PRODUCT_DICT] с атрибутами:
-
Артикул [PRODUCT_CODE]
-
Цена, руб. [PRODUCT_PRICE]
-
Описание [ORDER_DESCRIPTION]
-
Прикрепленные файлы [SYS_FILE_ID]
Атрибут «Прикрепленные файлы» добавим, как существующий, для этого нажмем на соответствующую кнопку в карточке типа «Справочник товаров». Добавление данного атрибута осуществим из типа «ДО. Документ», подробнее его добавление было описано ранее.
После добавления атрибута «Прикрепленные файлы» откроем его для редактирования. На вкладке «Визуал» для данного атрибута выберем визуальное представление «Изображение». Выбор данного визуала позволит загрузить изображение в карточку товара.
При создании атрибута «Описание» в его настройках также выберем специальное визуальное представление «Многострочный ввод».
Настройка представления реестра для «Справочника товаров»
Переход к реестру осуществляется путем нажатия кнопки «Открыть реестр» в карточке объекта.
Настройки представления реестра доступны по кнопке «Настройки представления реестра».
Нажимаем на данную кнопку, и внизу открывшегося модального окна с помощью кнопок перемещения выбираем атрибуты, которые должны отображаться в реестре, а также их порядок. В текущем случае это атрибуты Наименование, Артикул, Цена, Описание.
Нажимаем кнопку «Ок». Представление реестра настроено.
Настройка визуала карточки для «Справочника товаров»
Настроим визуал карточки товара, для этого создадим экземпляр объекта по кнопке «Добавить» и перейдем в режим настройки визуального представления, нажав на соответствующую кнопку.
Удалим ряд с элементами, предложенными по умолчанию. Настроим пустую форму так, чтобы это было удобно конечному пользователю. В данном случае были использованы следующие элементы – «Ряд», «Группа атрибутов» (без имени), «Колонки» (вкладка «Группировки»), необходимые атрибуты можно найти на вкладке «Атрибуты».
Сохраняем изменения по кнопке «Ок». Настроенная карточка товара выглядит следующим образом:
Создание экземпляров «Справочника товаров»
Создадим несколько экземпляров справочника товаров (достаточно 2-3 товаров), для этого в реестре нажимаем кнопку «Добавить» и заполним карточку аналогично рисунку ниже. Добавим изображение товара, предварительно скачав его из интернета, для этого в поле «Прикрепленные файлы» нажмем кнопку загрузить и прикрепим скаченное изображение, но также в Приложении «Материалы» есть необходимые фото для справочника товаров, которые можно добавить.
Скачивание приложения «Материалы» доступно по ссылке. |
В итоге реестр должен выглядеть примерно следующим образом (в реестре достаточно создать 2-3 товара).
Создание типа объекта «Способ оплаты»
Далее снова перейдем в реестр объектов и создадим еще один справочник – тип объекта: «Способ оплаты» [PAYMENT_TYPE]. Для данного типа объекта дополнительные атрибуты создавать не будем.
В реестре данного типа объекта в поле «Наименование» добавляем способы оплаты:
-
Картой при оформлении заказа
-
Наличными при получении
-
Картой при получении
Создание типа объекта «Способ доставки»
Создадим еще один справочник – тип объекта «Способ доставки» [DELIVERY_METHOD]. Для данного типа объекта дополнительные атрибуты создавать не будем. В реестре данного типа объекта в поле «Наименование» добавляем несколько способов доставки:
-
До подъезда
-
До квартиры
Вернемся к типу «Бланк заказа» и создадим в нем два объектных атрибута со ссылками на созданные справочники аналогично рисункам ниже.
В поле с указанием типа атрибута в обоих случаях выберем «Объект». Типом объекта для атрибута «Способ оплаты» [PAYMENT_TYPE_ID] будет справочник «Способ оплаты», для атрибута «Способ доставки» [DELIVERY_METHOD_ID] соответственно «Способ доставки».
Создание типа объекта «Товар заказа»
Далее создадим вспомогательный тип объекта «Товар заказа» [GOODS_ORDER]. Он необходим для того, чтобы указать в бланке заказа, сколько товаров и на какую сумму нужно заказать. Создадим в нем два атрибута: «Количество» [ORDER_GOODS_AMOUNT] и «Сумма, руб.» [ORDER_GOODS_QUANTITY] аналогично рисунку.
Далее добавим еще два объектных атрибута: «Ссылка на родителя» [ORDER_BLANK_ID] и «Товар» [ORDER_GOODS_ID]. Атрибут «Ссылка на родителя» позволит нам организовать связь «один ко многим». В поле «Тип объекта» для бланка заказа укажем тип объекта «Ссылка на родителя», для товара – «Справочник товаров».
Возвращаемся к типу объекта «Бланк заказа» для завершения создания связи «один ко многим». Добавляем в бланке заказа новый атрибут «Список товаров» [GOODS_ORDER_LIST] типа «Дочерний объект» аналогично рисунку. При создании атрибута необходимо выбрать тип объекта «Товар заказа», а в качестве атрибута связи – атрибут «Ссылка на родителя», который создали на предыдущем шаге.
Создание выражений, проверок и событий для «товаров заказа»
Создание выражений
Настроим выражение для наименования карточки товара заказа аналогично тому, как это было описано выше (Создание выражений для «Бланка заказа»), а именно в реестре выражений выберем строку для наименования и с помощью кнопки «Переопределить алгоритм» настроим новый алгоритм.
Настроенное выражение для наименования карточки товара заказа будет выглядеть следующим образом:
Для создания алгоритма используем функции «attr» и «text». Атрибуты «Товар.Наименование» и «Товар.Артикул» являются цепочечными и выносятся с помощью функции «attr». То есть по цепочке нужно сначала найти основной объектный атрибут, раскрыть его атрибуты и среди них выбрать нужный атрибут.
После сохранения и закрытия карточки алгоритма мы окажемся в реестре выражений типа «Товар заказа». Необходимо открыть на редактирование выражение для атрибута «Наименование». В настройках выражения в поле «Атрибут» уже будет указано значение «Наименование». Дополнительно укажем настройки в соответствии с рисунком.
Сохраним изменения в настройке выражения, нажав кнопку «Сохранить», а также обязательно сохраним карточку типа после создания выражения.
Настроим выражение для расчета суммы товара с учетом его цены и указанного пользователем количества. Во вкладке «Выражения» нажмем на кнопку «Создать». В появившемся окне настроим алгоритм. Выберем в качестве базового типа «Товар заказа». В поле Формула добавим формулу аналогично рисунку. Для создания алгоритма используем функции «attr», добавляем нужные атрибуты. Знак умножения нужно добавить с помощью соответствующей клавиши на клавиатуре.
После сохранения и закрытия карточки алгоритма необходимо заполнить поля в карточке для настройки выражения по аналогии с рисунком.
Сохраним изменения в настройке выражения, нажав кнопку «Сохранить», а также обязательно сохраним карточку типа после создания выражения.
Создание события
Далее перейдем к настройке события. Событие представляет собой алгоритм, который запускается до или после сохранения карточки объекта и используются, например, для автоматического заполнения атрибутов в родительском типе. В данном кейсе мы создадим алгоритм для заполнения атрибута «Итого» в типе объекта «Бланк заказа».
В типе объекта «Товар заказа» на вкладке «События» в поле «Событие после сохранения» добавим алгоритм с базовым типом «Товар заказа». Данный алгоритм будет рассчитывать итоговую сумму заказа в карточке «Бланк заказа». Общая сумма будет складываться из значений атрибута «Сумма» по каждому из товаров в заказе и записывать значение в поле ИТОГО карточки бланка заказа.
В настройках алгоритма в поле в базовом типе объекта укажем тип «Товар заказа». Настроим алгоритм по аналогии с рисунком.
В данном алгоритме используются функции:
-
Функция «var». Эта функция предназначена для задания переменных. Она находится на вкладке «Алгоритмы». Необходимо задать название для переменной и нажать «Создать».
-
Функция « := » – функция присвоения, также находится на вкладке «Алгоритмы».
-
Функция «currentObject», подробнее ее рассматривали в разделе Создание выражений для «Бланка заказа». Функция находится на вкладке «Работа с объектами».
-
Функция «attrByVar» предназначена для того, чтобы в алгоритме можно было обратиться к атрибутам объектов, которые заданы в качестве переменных. При нажатии на указанную функцию в появившемся окне необходимо выбрать переменную (список атрибутов после выбора переменной обновиться) и выбрать нужный атрибут, нажать «Ок».
-
Функция «forEach», находится на вкладке «Алгоритмы». С ее помощью можно задать в алгоритме цикл по коллекции. В первой части функции (в круглых скобках) задается объект, по которому система будет проходить в рамках выполнения алгоритма. В данном примере с помощью этой функции алгоритм будет проходить по значениям, которые указаны в атрибуте «Список товаров» в карточке «Бланк заказа». В фигурных скобках задается действие, которое необходимо совершить по объектам, указанным в круглых скобках.
-
Функция «attrByVar» для установки значения в атрибут. Она предназначена для того, чтобы в алгоритме можно было не просто обратиться к атрибутам объектов, которые заданы в качестве переменных, но и присвоить им новое значение. При нажатии на указанную функцию в появившемся окне необходимо установить чек-бокс «Установить значение», выбрать переменную (список атрибутов после выбора переменной обновиться) и выбрать нужный атрибут, нажать «Ок».
-
Функция «save», находится на вкладке «Работа с объектами». С ее помощью в алгоритме осуществляется сохранение объекта, указанного в скобках.
Необходимо сохранить алгоритм и закрыть карточку. Событие настроено, теперь при добавлении нового товара в бланк заказа, автоматически будет пересчитываться атрибут ИТОГО. Однако если удалить позицию из списка товаров в бланке заказа, итоговая сумма не пересчитается. Чтобы при удалении товара из заказа итоговая сумма пересчиталась, дополнительно создадим проверку. Перед созданием проверки обязательно сохраним карточку типа.
Создание проверки
Перейдем во вкладку «Проверки» и создадим новый экземпляр с помощью кнопки «Создать».
В поле Алгоритм проверки добавим алгоритм с базовым типом «Товар заказа». Данный алгоритм будет заново рассчитывать значение атрибута «ИТОГО», но при этом он обязательно должен возвращать «True».
Текст алгоритма представлен на рисунке.
В рамках настройки алгоритма дополнительно используется функция «true», которая находится на вкладке «Логические».
Дополнительно необходимо отметить, что при применении функции «attrByVar» и выборе атрибута «Код» у переменной в окне формулы данные могут отображаться как в виде «entry.Код», так и в виде «entry.ID». Это зависит от релиза, установленного на стенде, на котором осуществляется настройка, и на результат выполнения алгоритма не влияет.
Необходимо сохранить карточку алгоритма, карточку проверки. Проверка настроена, обязательно сохраним карточку типа.
Настройка представления реестра для «Товара заказа»
Перейдем к настройкам визуального представления реестра товаров заказа, для этого из типа объекта «Товар заказа» перейдем в реестр и настроим представление реестра, нажав на соответствующую кнопку.
Далее прокрутим открывшуюся страницу вниз до раздела «Настройка колонок и группировок» и с помощью кнопок добавим необходимые атрибуты.
Настройка визуала карточки для «товара заказа»
Настроим карточку товара заказа. Нажав в реестре данного типа кнопку «Добавить», в открывшейся карточке перейдем в режим настройки визуального представления и настроим карточку аналогично рисунку. В данном случае используются элементы – «Ряд», «Колонка», «Группа атрибутов» (без имени), «Фрейм» (вкладка «Группировки»).
Для атрибута «Товар» активизируем настройку «Выбор объекта через всплывающее окно».
В итоге карточка товара заказа будет выглядеть следующим образом:
Настройка Представления реестра для «бланка заказа»
Перейдем в тип объекта «Бланк заказа» и откроем реестр с помощью кнопки «Открыть реестр». Настройки реестра для бланка заказа выполняются аналогично настройкам, описанным в разделе Настройка представления реестра для «Товара заказа».
Настроенный реестр бланков заказа должен выглядеть идентично настройкам на рисунке.
Настройка визуала карточки для «бланка заказа»
Теперь настроим визуальное представление карточки бланка заказа. Переходим в реестр, создаем новый бланк и переходим в режим конструктора экранной формы. Настроим аналогично рисункам ниже. Используем элементы – «Ряд», «Группа атрибутов» (свернута), «Колонка», «Группа вкладок», «Вкладка» (вкладка «Группировки»), выносим необходимые поля из вкладки «Атрибуты».
Для атрибута «Номер заказа» добавим алгоритм блокировки.
С помощью клавиатуры введем «true» - это будет означать, что блокировка будет действовать всегда. Сохраним алгоритм, нажав на дискету и закроем, нажав «Ок».
В итоге Бланк заказа должен выглядеть следующим образом:
Подготовка документа шаблона печатной формы
Работа по настройке печатной формы начинается с подготовки шаблона документа. В качестве шаблона могут быть использованы документы в формате MS Word и MS Excel с расширением doc\docx или xls\xlsx.
Создание документа для основного шаблона
Создадим документ для основного шаблона будущей печатной формы. Форматирование бланка заказа товаров осуществляем с помощью стандартных средств MS Word, как это показано на рисунке. Готовый шаблон можно скачать из Приложения «Материалы».
Далее добавим закладки в тех областях документа, в которые предполагается вывод информации из системы. В рамках данного кейса необходимо добавить в шаблон следующие закладки:
-
Номер заказа
-
Дата заказа
-
ФИО
-
Номер телефона
-
Способ доставки
-
Дата и время доставки
-
Адрес
-
Подъезд
-
Квартира
-
Вид оплаты
-
Комментарий
-
Товар заказа
-
ИТОГО
-
Сумма прописью
Закладки добавляются следующим способом[1]: сначала выделим место или пустой промежуток в документе, для которого необходимо сделать закладку.
Далее переходим на вкладку «Вставка» и выбираем команду «Закладка». После указания названия закладки (обязательно без пробелов) следует нажать кнопку «Добавить».
Аналогичным образом настраиваем закладки для остальных элементов шаблона.
Особое внимание обратим на таблицу товаров. Данные в нее будут заполняться из дочернего атрибута, то есть количество строк в таблице будет соответствовать количеству товаров в бланке заказа. Поскольку количество товаров в разных бланках может отличаться, данные в строки таблицы будем выводить с помощью вложенного шаблона (процесс его создания описывается в разделе Настройка вложенного шаблона). В процессе подготовки шаблона достаточно добавить только шапку таблицы и ее итоговую строку в виде отдельной таблицы, а в промежуток между ними включить отдельную закладку.
В ходе дальнейшей настройки мы подготовим вложенный шаблон для строк таблицы, который в заполненном виде будет подставляться на место настроенной закладки.
Создание документа для вложенного шаблона
Вложенные шаблоны обычно настраиваются для вставки готовых документов в основной шаблон. В рамках данного практикума вложенный шаблон используется для замещения повторяющихся элементов в таблице товаров. Таким образом, в нашем вложенном шаблоне добавлена строка таблицы с количеством столбцов, которое соответствует количеству столбцов в шапке таблицы из основного шаблона. В нашем случае документ вложенного шаблона выглядит как на рисунке ниже.
Важно, чтобы настройки форматирования и размер столбцов основного и вложенного шаблонов совпадали. Поскольку строки таблицы вложенного шаблона автоматически добавятся под шапку основного, необходимо средствами форматирования Word сделать невидимой верхнюю границу таблицы вложенного шаблона. В противном случае верхняя граница каждой строки визуально будет более толстой по сравнению с другими границами.
Добавим закладки для данной таблицы в соответствии с последовательностью столбцов таблицы основного шаблона:
-
Товар
-
Изображение
-
Артикул
-
Цена
-
Количество
-
Сумма
Чтобы строки товаров автоматически нумеровались по порядку при вставке каждой новой строки, добавим в первый столбец стандартными средствами Word автонумерацию.
Настройка шаблона печатной формы
Настройка основного шаблона
Для создания шаблона печатной формы в системе в меню перейдем в раздел «Администрирование» → «Управление объектами» → «Типы объектов» и откроем тип объекта «Шаблон печатной формы».
Далее перейдем в реестр объектов данного типа и создадим новый шаблон печатной формы с помощью кнопки «Создать».
Заполним основные поля в карточке шаблона. Добавим «Наименование» в качестве базового типа объекта укажем созданный ранее тип «Бланк заказа». Дополнительно в поле «Выгружать в файл без предварительного просмотра» укажем значение «Да», таким образом после формирования готовая печатная форма сразу будет выгружаться в виде файла.
Обязательно установим чек-бокс в поле «Создавать источники автоматически.
С помощью кнопки «Загрузить» загрузим в систему сформированный ранее в Word шаблон бланка заказа (документ основного шаблона). Для этого в появившемся модальном окне выберем соответствующий документ и укажем его классификацию. Сохраним карточку шаблона.
После сохранения на вкладке «Закладки» отразятся все закладки, добавленные ранее в документ шаблона бланка заказа в Word. Если закладки не появились нужно обновить страницу.
Настройка источников данных печатной формы
Далее необходимо настроить вывод информации из бланка заказа в системе в шаблон печатной формы в соответствующие закладки.
Данные настройки осуществляются на вкладке «Источники данных». В ней отображаются автоматически сформированные системой источники для каждой из закладок. Если на данной вкладке источники не появились, необходимо проверить наличие чек-бокса «Создавать источники автоматически». Попробовать еще раз загрузить шаблон, сохранить и обновить страницу.
Последовательно настроим каждый из источников. Выберем из списка источник «Закладка.ДатаЗаказа». В открывшейся карточке часть полей уже будет заполнена системой, дополнительно укажем в поле «Тип данных источника» значение «Дата».
В этой же карточке нажимаем на кнопку «Расширения», выбираем из предложенного списка значение «Шаблон печатной формы. Источник данных на основе атрибута». После выбора расширения внизу карточки появятся дополнительные атрибуты. Для выбранного расширения на вкладке «Атрибуты, ограниченные базовым типом ПФ» в поле «Атрибут типа» выбираем атрибут «Дата заказа».
Аналогичным образом с выбором расширения на основе атрибута, но с типом данных источника «Строка» настраиваем следующие источники:
-
Закладка. НомерЗаказа
-
Закладка. ФИО
-
Закладка. НомерТелефона
-
Закладка. Адрес
-
Закладка. Подъезд
-
Закладка. Квартира
-
Закладка. Комментарий
Выберем из списка источник «Закладка.ИТОГО». Настроим открывшуюся карточку аналогично рисунку. После этого нажимаем на кнопку «Расширения», выбираем значение «Шаблон печатной формы. Источник данных на основе алгоритма». В нижней части карточки в поле «Алгоритм» добавим новый алгоритм, последовательно нажав на «Дополнительные действия» (три точки справа) > «Добавить».
Откроется окно для выбора типа алгоритма, необходимо выбрать значение «Алгоритм. Карточки объектов».
Откроется карточка алгоритма. Заполним ее аналогично рисунку ниже. На вкладке «Параметры» в качестве базового типа объекта укажем «Бланк заказа». В поле «Формула/алгоритм» добавим алгоритм, который будет «пробегать» по списку товаров в заказе и считать итоговую сумму заказа. Для написания алгоритма используем функцию «ForEach», настройки которой описывались в разделе Создание выражений, проверок и событий для «товаров заказа» Сохраним внесенные изменения.
Аналогичным образом с расширением на основе алгоритма настраиваем источники данных: «Закладка. ВидОплаты» и «Закладка. СпособДоставки», для них в поле «Тип данных источника» указываем значение «Объект».
В поле с указанием алгоритма для данных источников создадим алгоритмы, в которых в качестве базового типа также укажем «Бланк Заказа», а в самом алгоритме вынесем соответствующие атрибуты данного типа, используя функцию «Attr».
Примеры алгоритмов для данных закладок на рисунках ниже.
Алгоритмы для закладок «ДатаИВремяДоставки» и «СуммаПрописью» представлены на рисунках ниже.
Настройка видимости отдельных элементов печатной формы
Далее настроем видимость некоторых элементов в формируемом документе. Например, мы хотим скрыть строку с указанием квартиры в том случае, если клиентом выбрана доставка до подъезда. Для определения номера данной строки с помощью кнопки «Скачать» выгрузим и откроем шаблон печатной формы, который мы загрузили ранее.
В выгруженном шаблоне отобразится разметка документа. Необходимо скопировать число, расположенное в абзаце с указанием номера квартиры – это номер элемента документа.
После этого в карточке шаблона печатной формы переходим во вкладку «Алгоритмы видимости элементов», нажимаем кнопку «Создать», указываем полученный на предыдущем шаге номер элемента документа и добавляем новый алгоритм.
В создаваемом алгоритме в качестве базового типа объекта укажем «Бланк заказа». В поле с формулой внесем данные аналогично рисунку. Для задания условия используем функции if и else.
Данные функции расположены на вкладке «Логические» и необходимы для задания условия и альтернативного действия в случае, если условие не выполнится.
Этот алгоритм вернет значение «True», если способ доставки будет соответствовать значению «До квартиры». Соответственно при выполнении данного условия абзац с указанием квартиры будет отражен в сформированном документе, в противном случае он будет скрыт.
Настройка вложенного шаблона
Перейдем к настройке вложенного шаблона. Для этого вернемся в реестр типа объекта «Шаблон печатной формы», и создадим еще один шаблон, заполним данные карточки аналогично рисунку. В качестве базового типа объекта выберем тип «Товар заказа». Чтобы не запутаться какие из шаблонов в реестре являются основными, а какие – вложенными, в наименовании вложенного шаблона рекомендуем префикс «ВШ».
Загрузим созданный шаблон с помощью кнопки «Загрузить» и сохраним карточку.
Во вкладке «Закладки» отразились все закладки, настроенные ранее в документе вложенного шаблона. Также автоматически создались источники для каждой из закладок. Настроим каждый источник данных аналогично тому, как настраивали источники для основного шаблона.
Используем расширение на основе алгоритма, а также укажем тип данных источника «Число» и формат значения «Число с разделителями» для настройки источников:
-
Закладка. Цена
-
Закладка. Сумма
Алгоритм для источника «Закладка. Цена» представлен на рисунке. В данном алгоритме с базовым типом объекта «Товар заказа» вынесен цепочечный атрибут «Товар.Цена», с его помощью в шаблон печатной формы выведется цена товара.
Используем расширение на основе алгоритма и тип данных источника «Строка» для настройки источников:
-
Закладка. Товар (цепочечный атрибут «Товар. Наименование» по аналогии с рисунком)
-
Закладка. Артикул (цепочечный атрибут «Товар. Артикул» по аналогии с рисунком)
-
Закладка. Количество
Сохраним изменения в алгоритме.
Вывод значения для источника «Закладка. Сумма» будет осуществлен посредством алгоритма, представленного на рисунке ниже.
Перейдем к настройке источника данных, отвечающего за вывод изображения «Закладка. Изображение». Для него применим следующие настройки: в типе данных источника укажем значение «Объект», а в списке расширений выберем «Шаблон печатной формы. Источник данных на основе изображения». В появившемся поле «Алгоритм для определения файлов» создадим алгоритм с базовым типом объекта «Товары в заказе», который вернет цепочечный атрибут «Прикрепленные файлы» из справочника товаров.
Также есть возможность настроить размер выводимого изображения. Фотографии из Интернета могут иметь большой размер и не поместиться полностью в поле для вывода, поэтому необходимо их масштабировать. Выберите подходящий размер изображений под ваш шаблон самостоятельно.
Вложенный шаблон настроен.
Вернемся к настройке основного шаблона. С помощью реестра откроем шаблон «Бланк заказа», перейдем на вкладку «Источники данных».
В настройке источника «Закладка.ТоварЗаказа» укажем тип данных источника «таблица», а по кнопке «Расширение» выберем значение «Шаблон печатной формы. Источник данных на основе шаблона». В появившемся поле «Дочерний шаблон» укажем созданный ранее вложенный шаблон «ВШ. Товар заказа». Также сделаем активным параметр «Удалять пустые строки в конце дочернего шаблона», а в поле «Алгоритм определения коллекции дочерних объектов» создадим алгоритм для определения тех объектов, по которым будет формироваться вложенный шаблон.
При создании алгоритма укажем базовый тип объекта «Бланк заказа» и в поле с формулой вынесем дочерний атрибут «Список товаров».
Сохраним настроенный источник, после чего обязательно сохраним карточку шаблона.
Настройка кнопки «Печатная форма»
Далее настроим отображение кнопки «Печатная форма» на верхней панели задач реестра бланков заказа. Эта кнопка необходима нам для того, чтобы пользователь удобным для него способом мог открыть сформированный шаблон печатной формы.
В меню переходим в раздел «Администрирование» → «Управление объектами» → «Действия над объектами», находим в реестре строку «Печатная форма» и открываем карточку данного действия.
Во вкладке «Связанные типы объектов» создаем новый экземпляр, в появившемся окне добавляем наш тип «Бланк заказа» в поле «Системный атрибут. Тип объекта», сохраняем внесенные изменения.
Вернемся в шаблон печатной формы «Бланк заказа» и во вкладке «Привязанные типы» нажимаем кнопку «Создать». В открывшемся окне заполняем поля аналогично рисунку. Сначала выбираем тип объекта, в котором появится возможность формировать данную печатную форму.
Дополнительно с помощью поля «Прикреплять сформированный файл к объекту» (значение «True») настроим сохранение в карточке бланка заказа сформированной печатной формы. По умолчанию сформированный файл будет прикрепляться в системный атрибут «Прикрепленные файлы», который ранее мы добавили при создании типа объекта.
Сохраняем изменения. Отображение кнопки настроено.
Создание пункта меню
Добавим ссылку на реестр типа «Бланк заказа» отдельным пунктом в меню. Для этого последовательно перейдем по вкладкам «Администрирование» → «Настройки» → «Настройка меню». В данном реестре создадим новый пункт меню «Бланк заказа» (тип «Реестр»), в карточке укажем настройки аналогично рисунку.
Сохраним изменения, обновим страницу. Настроенный пункт меню должен появиться в меню справа.
Создание пользователей и групп доступа
Создадим новых пользователей и группу доступа «Сотрудники магазина». В соответствии с данным практикумом сотрудники с этой группой доступа будут создавать бланки заказов и формировать по ним печатные формы.
Сначала создадим группу доступа. Последовательно перейдем по разделам меню «Администрирование» → «Управление доступом» → «Группы доступа». С помощью кнопки «Добавить» создадим новую группу доступа и в поле наименование укажем «Сотрудники магазина». Сохраним данные.
Для создания нового пользователя последовательно перейдем в разделы меню: «Администрирование» → «Управление доступом» → «Пользователи». Откроется реестр пользователей. Нажимаем кнопку «Добавить» и в появившейся карточке с помощью кнопки «плюс» справа от поля «сотрудник» создаем нового сотрудника.
Заполняем основные данные и сохраняем.
Далее необходимо заполнить параметры пользователя, присвоив ему логин и пароль, а также добавить пользователю созданную ранее группу доступа «Сотрудники магазина» с помощью кнопки «Добавить».
Настройка прав доступа
Выдача прав доступа на пункт меню «Бланк заказа»
Переходим в пункт меню «Администрирование» → «Управление доступом» → «Доступ к объектам системы». В открывшемся окне выбираем в поле «Дочерние типы объектов» «Меню» и в реестре находим созданный нами ранее пункт «Бланк заказа».
Добавим группу доступа «Сотрудники магазина» с правами «Чтение» и «Запись» на этот пункт. Для этого выделяем элемент и нажимаем кнопку «Добавить группу или пользователя». Сохраним изменения, нажав на дискету.
Выдача прав доступа на работу с шаблоном печатной формы
Настройка прав доступа позволит пользователям работать с шаблоном формируемого документа, а также видеть кнопку для формирования печатной формы. Для настройки прав к шаблону документа необходимо с помощью меню перейти по вкладкам «Администрирование» → «Управление доступом» → «Доступ к объектам системы». Система отобразит реестр всех объектов, в котором нужно выбрать тип объекта «Шаблон печатной формы».
В списке шаблонов печатных форм выберем шаблон «Бланка заказа» и разрешим необходимые действия пользователю/группе пользователей аналогично рисунку.
Сохраним изменения, нажав на дискету и выполним аналогичные действия для вложенного шаблона «ВШ. Товар заказа».
Выдача прав доступа на кнопку «Печатные формы»
Настройка прав доступа на кнопку «Печатные формы» позволит пользователю формировать печатную форму, шаблон которой автоматически загрузится на компьютер. Для настройки прав необходимо с помощью меню перейти по вкладкам «Администрирование» → «Управление доступом» → «Доступ к объектам системы».
Система отобразит реестр всех объектов, в котором нужно выбрать тип объекта «Действия». В списке действий выберем «Печатная форма» (можно воспользоваться поиском по реестру) и выдадим Сотрудникам магазина права аналогично рисунку.
Далее необходимо выбрать тип объекта «Тип объекта». В списке выберем «Бланк заказа» и выдадим Сотрудникам магазина права аналогично рисунку.
Аналогично раздадим права для типа объекта «Товар заказа».
Затем перейдем на тип объекта «Бланк заказа» («Администрирование» → «Управление объектами» → «Типы объектов») и настроим права по умолчанию.
Применим права по умолчанию к существующим объектам, нажав на соответствующую кнопку.
Аналогично настроим права по умолчанию для типа объекта «Товар заказа».
Теперь выдадим права на чтение экземпляров справочников «Способ оплаты», «Способ доставки», «Справочник товаров». Заходим на каждый тип объекта, нажимаем кнопку «Настройка прав по умолчанию» и настраиваем права только на чтение, затем применяем права к существующим объектам.
Формирование печатной формы
Проведем тестирование осуществленных в рамках данного практикума настроек. Зайдем за пользователем, которого мы создали ранее, перейдем в пункт меню «Бланк заказа» и создадим новый экземпляр данного типа, заполнив атрибуты аналогично рисунку ниже.
Сохраним карточку бланка заказа и после этого нажмем на кнопку «Печатная форма» на верхней панели.
Файл автоматически загрузится на компьютер. Откроем его из папки «Загрузки» и посмотрим, каким образом отображаются данные в настроенном нами шаблоне.
Дополнительно сформированный файл отобразится в атрибуте «Прикрепленные файлы» на соответствующей вкладке карточки бланка заказа.
Проверка произведенных настроек успешно завершена.