Продукт

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

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

image-1648566811021.png

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

В базовом разделе ‘Системная область’ имеется описание одного дополнительного параметра.

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