Продолжаем изучать инструмент «Спецификатор». Напомню, что в первых двух частях этого материала описана чисто теоретическая информация, которая может пригодиться Тебе в работе (читать тут и тут, соответственно).
В предыдущей третьей части материала, Мы начали создавать свой профиль спецификатора с нуля. Создали набор данных для объектов типа «Оборудование» и добились следующего вида спецификатора:
Также, позволю себе напомнить, что Мы стремимся к следующему виду спецификатора:
В рамках материала у Нас есть тестовая модель, которая опубликована одновременно с этим материалом в TG-канале.
Приглашаю Тебя продолжить настройку Нашего спецификатора. Сегодня займемся набором данных для деталей трубопровода.
Создание выборки для деталей трубопроводов
Настройка данных для деталей трубопроводов
Начнем с создания новой выборки. Для этого активируем команду «Мастер экспорта данных» (1) (не забываем, что в «Спецификаторе» должен быть выбран Наш профиль). После этого ставим галочку у опции «Изменить выбранный профиль перед применением» (2) и нажимаем на кнопку «Далее» (3). В диалоге «Дополнительные параметры профиля» также нажимаем на кнопку «Далее» (4).
В диалоге «Редактирование наборов данных» активируем команду «Добавить выборку к набору данных» (1), задаем имя выборки – «Деталь трубопровода» (2) и выбираем одноименный тип объектов (3).
Нам также понадобится условие для отбора объектов. Для деталей трубопроводов это условие будет состоять из двух составных частей. Пока запишем его, а затем я расскажу для чего Нам требуется именно такое условие отбора. Формула следующая:
(current.[BOM_INCLUDE] <> "0") or
([PART_NAME]<>"" and [PART_PIPE_CLASS]="Терминатор")
Итак, активируем команду «Настроить фильтр» (1), записываем формулу (2) и нажимаем «ОК» (3). В области «Условие отбора объектов» отобразится написанная Нами формула (4).
Всеми этими настройками Мы сделали примерно следующее. Сказали программе, что нам нужен набор данных, который будет состоять из объектов, имеющих тип (категорию) «Деталь трубопровода». При этом эти объекты должны соответствовать одному из двух условий:
1. Параметр «Включить в спецификацию» [BOM_INCLUDE] не должен равняться нулю.
ИЛИ
2. У этих объектов должно быть не пустое «Наименование» [PART_NAME] и «Тип компонента трубопровода» [PART_PIPE_CLASS] должен иметь значение «Терминатор».
Второе условие нужно Нам для тех объектов модели, которые устанавливаются на терминатор, но при этом обозначают какой-то физический объект (заглушки, решетки и т.д.).
На этом с созданием выборки Мы закончили. Можем перейти к настройке таблицы экспорта. Для этого в диалоговом окне «Данные для выборки» нажимаем на кнопку «Далее».
Настройка таблицы экспорта для деталей трубопроводов
Прежде всего в первую строчку выводим позицию элемента. Более подробно можно прочитать в III части материала. А пока, активируем команду «Добавить параметры» (1), добавляем параметр «Позиция» [BOM_NUMBER] (2), в столбце «Столбец для экспорта» указываем «Поз.» (3) (режим редактирования вызывается двойным нажатием ЛКМ).
Далее следует строчка, при помощи которой в спецификаторе настраивается столбец «Наименование техническая характеристика». Прежде чем её задать покажу какая формула в нем будет, а затем объясню, что она означает. Она довольно большая, но не пугайся, мы её сократим. Текстовая версия формулы приведена в конце материала. Сейчас же, для того, чтобы её удобно было читать, приведу картинку:
Ну-с, поехали разбираться.
Самое первое условие, которое Мы здесь видим, это проверка на то, что «Тип компонента трубопровода» [PART_PIPE_CLASS] имеет значение «Арматура» и его «Наименование» [PART_NAME] не должно быть пустым. То есть по сути речь идет обо всех объектах типа «Арматура», у которых есть имя.
Если это условие выполняется, то для такого объекта в столбец выводится строка формата:
" Ду" & format("%.0f", [PART_PIPE_DN]) & " Pу" & [PART_PIPE_PN]
И выглядит это следующим образом:
В том случае, если обрабатываемый объект не соответствует первому условию, Мы пишем второе. Проверку на наличие заполненного параметра «Обозначение (модель)» [PART_TAG]. Если этот параметр заполнен, то выводим в спецификатор именно его.
Если и это не сработало, то проверяем обрабатываемый объект по параметру «Наименование» [PART_NAME]. Если у он у объекта заполнен, то выводим его.
Если остались объекты, которые не попали ни в одно из выше указанных условий, то пишем значение «Не определен». И наш спецификатор будет выглядеть так:
Я думаю, что тут Мы остановимся. В рамках этого материала разбирать всю формулу, конечно, можно, но мне кажется это больше отвлечет. Поэтому по сути на изображении выше ты видишь финальную настройку для столбца «Наименование техническая характеристика», а также вид спецификатора на данный момент.
Далее необходимо задать настройку для столбца «Тип, марка, обозначение документа, опросного листа». Для деталей трубопроводных этот столбец заполняется значениями, рассчитанными по формуле:
if([PART_GROUP]="Детали трубопроводные", [PART_STANDARD], [PART_TAG])
Для настройки активируем команду «Добавить функцию» (1), вводим указанную выше формулу (2), задаем наименование столбца (3).
В данном случае Мы сказали программе, что если [PART_GROUP] – «Детали трубопроводные», то нужно выводить [PART_STANDARD], а если нет, то [PART_TAG].
Следующими столбцами являются «Код продукции» и «Поставщик». Их делаем аналогично предыдущей части материала. И получаем следующие строчки в таблице экспорта:
Двигаемся дальше. Вывод единиц измерения. Сейчас Мы говорим про выборку «Детали трубопроводов», и в данном случае у нас могут быть протяженные объекты (трубы, воздуховоды) и штучные (заглушки, краны, задвижки). Исходя из этого нам необходимо написать условие для обработки разных объектов. Формула выглядит так:
if([PART_PIPE_CLASS]="Труба", "м", "шт.")
Для того чтобы создать новую строчку в таблице экспорта, необходимо активировать команду «Добавить функцию» (1), в мастере функций ввести формулу (2). После этого указать заголовок столбца «Ед. измерения» (3).
Мы сказали программе: создай столбец с именем «Ед. измерения» и для всех объектов «Труба» выводи в него «м.», а для других объектов «шт.».
Так, как настройка довольно понятная, на изображении сразу показан и вид спецификатора после добавления нового столбца (4).
Далее Нам необходимо рассчитать количество. Аналогично ед. измерения тут могут быть варианты. Что-то в штуках, а у чего-то нужно рассчитать длину. Поэтому формула будет следующая:
if([PART_PIPE_CLASS]="Труба",
format("%0.1f", child("Параметризация").[Length] / 1000),
1)
Итак, для того чтобы создать новый столбец в спецификаторе, необходимо активировать команду «Добавить функцию» (1), в мастере функций ввести формулу (2). После этого указать заголовок столбца «Количество» (3). Результат расчета в спецификаторе также показан на изображении (4).
В настройках, приведенных выше, Мы говорим программе, чтобы она рассчитывала для протяженных объектов (труб) длину на основе параметра «Длина» [Length]. А если объект не протяженный, просто принимать его за 1.
Нам осталось вывести в спецификатор еще 2 параметра: «Вес» [PART_WEIGHT] в столбец «Масса 1 ед., кг», «Примечания» [BOM_COMMENT] в столбец «Примечание». Повторяем шаги из предыдущей части материала. В итоге получаем следующий вид таблицы экспорта (1) и вид спецификатора (2):
Дальше нам необходимо создать строчки экспорта параметров, предназначенных для сортировки и группировки. Таких строчек у Нас будет 3:
- для группировки по «Группе изделий»
Будем рассчитывать данную строчку по формуле:
if([PART_NAME]<>"", [PART_GROUP], "ПРОЧЕЕ")
В данном случае Мы говорим программе: если параметр «Наименование» [PART_NAME] не пустой, то принимай значение «Группа изделий» [PART_GROUP]. Если же пустой, то устанавливай значение «Прочее».
- для группировки по «Типу изделия»
Будем рассчитывать данную строчку по формуле:
if([PART_TYPE]<>"", [PART_TYPE], [PART_PIPE_CLASS])
В данном случае Мы говорим программе: если параметр «Тип изделия» [PART_TYPE] не пустой, то бери его. Если же пустой, то принимай значение параметра «Тип компонента трубопровода» [PART_PIPE_CLASS].
- для сортировки по «Диаметр условный (Ду)»
Будем рассчитывать данную строчку по значению параметра «Диаметр условный (Ду)» [PART_PIPE_DN].
Детально описывать по шагам введение всех формул не буду. Сразу приведу итоговую таблицу экспорта для выборки «Деталь трубопровода». Не забудь убрать галочки, после создания последних трех строчек в таблице.
На этом настройка таблицы экспорта окончена. Мы можем приступить к настройкам сортировки и группировки.
Настройка сортировки и группировки
В этой части материала просто покажу шаги для настройки. Более подробно про них можно прочитать в третьей части.
Для настройки группировки активируем команду «Добавить дополнительное поле» (1), откроется диалоговое окно «Добавление параметров» (2), выбираем параметры «Тип изделия» и «Группа изделий» (3). При необходимости перемещаем параметры вверх или вниз (4) (нужная последовательность указана на соответствующем изображении).
Этими настройками Мы говорим программе: сначала сортируй записи по параметру «Группа изделий», а внутри этой группировки создай дополнительную уже по параметру «Тип изделия».
В исходном спецификаторе также присутствует сортировка записей по параметру «Диаметр условный (Ду)». Давай также зададим аналогичную сортировку.
Для этого активируем команду «Добавить поле сортировки» (1) и выбираем параметр «Диаметр условный (Ду)» (2). В области «Сортировка записей» отобразится параметр сортировки (3).
В целом это была финишная прямая по созданию нашего аналога. Нажимаем «Готово» (1), затем «Далее» (2) и снова «Готово» (3).
В результате всех наших настроек был получен следующий вид спецификатора:
Завершение материала
Что же, на этом финальная часть базового материала про замечательный инструмент «Спецификатор» окончена. Я постарался рассмотреть его как с теоретической стороны, так и с практической. Сам спецификатор и тестовая модель будут одновременно опубликованы в TG-канале.
Если материал был полезен или интересен, то поставь лайк и подписывайся на Telegram, группу ВКонтакте и Яндекс. Дзен. Это поможет в продвижении канала и ускорит выход других интересных и полезных материалов.
P.S. Текстовая версия формулы для столбца «Наименование техническая характеристика»:
if([PART_PIPE_CLASS]="Арматура" and [PART_NAME]<>""," Ду" & format("%.0f", [PART_PIPE_DN]) & " Pу" & [PART_PIPE_PN], /*Арматура, у которой есть наименование*/
if([PART_TAG]<>"", [PART_TAG], /*Объекты, у которых заполнен параметр "Обозначение (модель)"*/
if ([PART_NAME]<>"" ,[PART_NAME], /*Объекты, у которых заполнен параметр "Наименование"*/
"Не определен")))