Сейчас мы отрешимся от готовых объектов типовых конфигураций, которые мы могли бы использовать для решения данной задачи.
Для задания шаблонов в конфигурации 1С создадим следующие дополнительные объекты метаданных:
- Справочник«Шаблон»
- Справочник «ЭлементШаблона»,подчиненныйсправочнику«Шаблон»
- Справочник «ЗначенияЭлементаШаблона»,подчиненныйсправочнику«ЭлементШаблона»
- И, наконец, справочник «Товар_ЗначениеЭлементаШаблона»,подчиненныйсправочнику«Номенклатура»
Значения каждого из справочников станут ясны из дальнейшего обсуждения.
Схематично данный набор справочников можно изобразить следующим образом:
Справочник «Шаблон» содержит все возможные шаблоны для задания имен номенклатуры и количество элементов в нем логически соответствует количеству видов товара (логических групп товара). Наименование шаблона соответствует основе наименования всех товаров данного вида.
Справочник «ЭлементШаблона» является подчиненным справочнику «Шаблон». Набор элементов справочника определяет собой спецификацию названий товаров, соответствующих выбранному шаблону.
Справочник «ЗначенияЭлемента» является подчиненным справочнику «ЭлементШаблона» и элементы его содержат конкретные значения выбранных элементов спецификации названий товаров, соответствующих выбранному шаблону.
Наконец, справочник «ТоварЗначение» является подчиненным справочнику «Номенклатура» и по сути его элементы просто хранят ссылки на элементы справочника «ЗначенияЭлемента», т.е. конкретные значения элементов спецификации названия товара. Таким образом произведя объединение основы наименования и последовательно всех значений элементов шаблона спецификации мы получим «правильное наименование» товара. Посмотрим как это происходит на практике.
Создаем шаблон наименования. Форма списка справочника:
На форме элемента справочника следует задать его структуру, т.е. определить набор элементов шаблона (спецификации):
В реквизите формы «Для группы товаров:» задаем группу справочника «Номенклатуры» для которого разрабатывается шаблон. В табличной части перечислены элементы данного шаблона, составляющие спецификацию наименования. В данном примере видим, что для вида товара «Краска масляная» товаровед выбрал спецификацию имени как набор элементов: марка краски, вес упаковки товара, цвет краски, тип расфасовки(упаковки), название фирмы-производителя. Причем следует обратить внимание на порядок следования элементов: самые важные и ключевые элементы следует располагать в начале списка, менее важные носящие скорее описательный характер, следуют ниже. Менять порядок следования элементов шаблона можно с помощью кнопок
На форме можно также задать символ - разделитель элементов шаблона, например символ точки с запятой.
Замечание: в данной программной реализации системы «Структурированное именование» внесено искусственное ограничение количества элементов шаблона в размере десяти. Предполагается, что десяти элементов спецификации имени должно хватать для большинства названий товаров. С другой стороны большее чем 10 количество элементов будет приводить к громоздким и нечитабельным названиям.
Форму элемента справочника «ЭлементШаблона» можно открыть двойным щелчком по строке списка:
Для каждого элемента шаблона, кроме его имени, определяется будет ли он ключевым элементом, т.е. обязательным для заполнения для всех наименований товаров выбранного вида. А также каждому элементу можно задать префикс и суффикс значения. Это удобно когда для каждого значения данного элемента в название требуется вносить пояснительный текст. Например, для уточнения веса упаковки товара, для элемента шаблона «вес упаковки», следует задать суффикс «кг.» (или «гр.», по смыслу), и эта подстрока будет автоматически добавляться к наименованию сокращая время внесения наименования и уменьшая процент ошибок.
После задания всех необходимых шаблонов (и, соответственно, их элементов) можно переходить непосредственно к именованию номенклатуры. Для этого откроем форму нового элемента справочника «Номенклатура»:
Поле «Наименование» запрещено для редактирования. Правильно, мы же определили шаблон для занесения имени. Внесение (вернее сказать - формирование) имени теперь возможно через специальную форму доступную по кнопке «Задать имя». Внешний вид данной формы будет несколько отличаться для товаров разных групп. Например, для группы имеющей шаблон «Краска масляная» форма может выглядеть так:
Названия полей обязательных для заполнения (ключевых) помечены слева красной звездочкой. Значения элементов наименования можно как вводить с клавиатуры, так и выбирать из списка всех возможных значений текущего элемента, который доступен по нажатию кнопки <...> . Например, для шаблона «Краска масляная», у элемента «Цвет краски» список всех возможных значений элементов может принимать вид:
Замечание: список всех возможных значений каждого элемента шаблона формируется динамически по мере заполнения новых наименований и сохраняется в справочнике «ЗначенияЭлемента».
По мере заполнения полей элементов на форме, меняется значение результирующей строки в нижней части формы:
Это и есть будущее наименование нашего элемента справочника «Номенклатуры»
Поля - элементы имени обязательные для заполнения помечены звездочкой слева от названия. Значение должно быть обязательно внесено в поле, иначе будет выведено сообщение об ошибке, например:
Повторный контроль обязательных значений происходит при окончательном формировании имени при нажатии на кнопку «Выполнить». Если некоторые обязательные поля не заполнены, будет выведено сообщение:
Прочие поля, носящие описательный характер, т.е. значения которых не обязательны к заполнению, разрешается оставлять пустыми, но они автоматически заменяться символом «*». Итоговая строка (наименование) в этом случае может принять такой вид:
Замечание: с точки зрения логичности пустых значений описательных (неключевых) полей-элементов, данный вариант заполнения можно оправдать только, если значений этих полей неизвестны по объективным причинам. Но в любом случае пустых значений следует избегать всеми возможными способами.
Резюме:
Таким образом, при условии подготовленности шаблонов, работа по внесению нового наименования (или исправлению существующего наименования) элемента справочника «Номенклатура» заключается в заполнении полей (исправлению некоторых полей) - элементов шаблона имени.
Оператор, непосредственно выполняющий эту задачу с помощью описанной выше специальной формы ввода, избавлен от самодеятельности и поставлен в рамки шаблона имени заданного товароведом. Названия полей говорят о характере информации каждого элемента имени и должны исключить путаницу и возможные разночтения. Оператор обязан заполнить ключевые поля, что исключит пересортицу и дубли в справочнике «Номенклатура». При данной подходе существенно облегчается визуальный поиск в списке справочника за счет определенного порядка полей имени:
Так же следует понимать, что при данной гибкости структуры наименования товара мы можем отойти от понятия единственного правильного наименования в том смысле, что от порядка слов в названии, в принципе ничего меняться не должно. Таким образом, мы всегда можем динамически перестроить структуру названия, чтобы использовать это для разных целей. Например, в некой универсальной форме поиска:
мы всегда можем переопределить порядок элементов названия и получить новое динамическое имя товара. Так как структура имени храниться в специальных справочниках, всегда можно использовать эту информацию, например для формирования различных каталогов и пр.:
Дополнение: Необходимо добавить, что некоторые программные продукты 1С все-таки предлагают в какой-либо мере решение проблемы наименования, но в основном это касается специализированных конфигураций (например, для автоматизации предприятий розничной торговли). Это такие ПО как
Рарус: Магазин: (в примере используется конфигурация "Магазин одежды и спортоваров")
или относительно новый программный продукт "ДАЛИОН: Управление Магазином"
В дальнейших статьях мы попытаемся справиться с поставленной задачей при помощи готовых объектов учета типовой конфигурации "1С:Управление торговлей 10".
Комментарии
4Хорошая тема!!! Данный подход оценивать не буду, но в своей работе стремлюсь к наименьшему количеству заполняемых полей, к более простой системе учёта. Т.к. это экономит время и силы сотрудников на ввод и поиск..
Интеграция всего в одном ведёт к многочисленным ошибкам. Чем точнее получаем одни данные, тем более отдаляются другие.