Работа с шаблонами в номенклатуре в 1С: Управление Торговлей/Комплексная Автоматизация
В сети довольно много информации о том, насколько использование шаблонов снижает количество проблем, связанных с ведением товарных карточек – устранение дублей, формирование единого вида товарного учета и т. д. Они, правда, обычно нацелены на те компании, которые уже сами пришли к выводу о необходимости структурирования номенклатуры. Для остальных эта функция в программе китайская азбука и «нам это не нужно, у нас еще при дедах руками все вносили». Хотя я последние годы в ультимативном порядке не принимаю такую точку зрения и избавляю от приключений с дублями еще на берегу через «тоталитарный режим» работы с шаблонами. Однако сам механизм работы с шаблонами в этих конфигурациях, мягко говоря, далек от идеала. Да, если у вас в виде номенклатуры формула выглядит как
([Параметр А]+" "+[Параметр Б]+" "+[Параметр В])
Так как это описывается в подавляющем большинстве интернет-руководств, это выглядит не очень сложно, ну подумаешь, разве что пробел лишний будет, если второй параметр необязательный и его не заполнили. Однако в практике обычно при ведении таким способом, возникает масса реквизитов, являющихся параметрами для наименования (обычно от двух до пяти-шести, но бывает и десяток), а также появляются всевозможные условия и проверки на добавление или удаление каких-то реквизитов в конечном наименовании. В таком случае работа с тем инструментом, что предоставляет типовой редактор, становится просто сущим кошмаром – у вас будут десятки открывающих и закрывающих скобок разных видов, кавычек и параметров. Вот такие формулы, например, при внедрениях обыденность:
"Шина "+[ВидШины]+" "+[Производитель]+" "+СокрП(" "+[Марка]+" "+[Типоразмер]+[Ширина])+?([Ширина] = "","","/")+[Высота]+" R"+[Радиус]+" "+[Индекс Нагрузки]+ " "+[Индекс скорости]+" "+[Слойность]+" "+?([Сезон] = "",""," "+[Сезон])+?([Особенность]= "",""," "+[Особенность]+" ")+?([Использование]= "",""," "+[Использование])
Попробуйте это воспроизвести вручную в настройках вида номенклатуры с помощью редактора формул – вы проклянете тот день, когда решили связаться с этим механизмом и это далеко не самый сложный вариант (и далеко не самый оптимальный если честно).
А такой вариант формулы для характеристик весьма обобщенного вида номенклатуры, куда отправили весь мелкий, но разнообразный товар:
Лев(СокрЛ(?([вид]="","","вид "+ [вид]+", ")+?([диаметр]="","","диаметр "+ [диаметр]+", ")+?([напряжение]="","","напр./ток/емкость "+ [напряжение]+", ")+?([объем]="","","объем "+ [объем]+", ")+?([объем памяти]="","","объем памяти "+ [объем памяти]+", ")+?([пустая]="","",""+ [пустая]+", ")+?([размер]="","","размер "+ [размер]+", ")+?([цвет]="","","цвет "+ [цвет]+", ")),СтрДлина(СокрЛ(?([вид]="","","вид "+ [вид]+", ")+?([диаметр]="","","диаметр "+ [диаметр]+", ")+?([напряжение]="","","напр./ток/емкость "+ [напряжение]+", ")+?([объем]="","","объем "+ [объем]+", ")+?([объем памяти]="","","объем памяти "+ [объем памяти]+", ")+?([пустая]="","",""+ [пустая]+", ")+?([размер]="","","размер "+ [размер]+", ")+?([цвет]="","","цвет "+ [цвет]+", ")))-2)
Более того, есть ситуации, когда формула выглядит хорошо, проходит проверку, но при попытке создать карточку получаете ошибку «Невозможно рассчитать формулу шаблона для наименования» (воспроизвожу по памяти). Для крупных компаний, возможно, это не является проблемой, так как есть отдел ИТ, есть «смарт»-сотрудники, которых можно научить или у которых есть опыт страдания с формулами в Excel – в общем есть ресурс, чтобы преодолеть эти проблемы в начале пути и как-то поддерживать порядок в процессе. Но что делать компаниям, где нет подобного ресурса, а номенклатура тем не менее – «Чудище обло, озорно, огромно, стозевно и лаяй»? В общем какое-то время назад я задался этим вопросом и решил дать своим пользователям такой инструмент, который позволит им, самостоятельно и без назойливых просьб, сделать им очередной новый вид номенклатуры. В итоге спустя много разных вариантов пока что работают с таким инструментом.
Процесс созидания формулы отныне прост и незатейлив как грабли – запускаем обработку, считываем доступные реквизиты для вида номенклатуры, буквально расставляем по порядку, добавляем недостающие элементы, если необходимо, и одним нажатием кнопки получаем полностью готовую формулу, которую не надо проверять на ошибки. Так же в инструменте добавлена возможность управлять некоторыми значениями настроек для вида номенклатуры, которые очевидно связанны с этим процессом – включать в фильтры отбора дополнительные реквизиты, блокировать изменение наименовании и т. д.
После чего записываем шаблон. Однако следует отметить – что даже такой уровень автоматизации не решает действительно сложные задачи, такие как отображение определенных реквизитов в названии по значению, тем не менее - на уже сформированной формуле решать такие задачи становится гораздо легче – достаточно изменить и/или добавить недостающие проверки. Приведу пример – есть потребность создавать карточки номенклатуры идентичные, но с разным значением качества товара, при этом значение качества для новой продукции не отображается. Пример вы можете увидеть во многих демо типовых:
- Конфеты Ассорти
- Конфеты Ассорти, не годен
При ручном вводе проблем нет – хочешь пиши, хочешь не пиши. Но при использовании шаблонов задача усложняется – нужно либо включать возможность исправлять наименование вручную (порицаю полностью – «рукоправы» непременно найдут возможность подтвердить один из законов Мерфи - если ошибка возможна, значит она будет допущена, а еще в таком случае формирование по формуле срабатывает только при создании номенклатуры, т.е. если, например, вы вдруг осознали что последовательность реквизитов не та (бывало не единожды и как раз работа через шаблоны позволяет быстро все поменять) – то править существующие карточки вам придется руками или менять настройки запрета редактирования туда-сюда), либо написать шаблон так чтобы он отрабатывал эту ситуацию
Формируем начальную формулу (для примера):
[{ДР.НаименованиеПродукции}]+" "+СокрП(?([{ДР.КатегорияПродукции}] = "","", Строка([{ДР.КатегорияПродукции}])+" "))+" "+СокрП(?([{ДР.СвойстваПродукции}] = "","", Строка([{ДР.СвойстваПродукции}])+" "))+" "+", "+СокрП(?([Качество] = "","", Строка([Качество])+" "))
Вносим изменения в итоговой строке:
[{ДР.НаименованиеПродукции}]+" "+СокрП(?([{ДР.КатегорияПродукции}] = "","", Строка([{ДР.КатегорияПродукции}])+" "))+" "+СокрП(?([{ДР.СвойстваПродукции}] = "","", Строка([{ДР.СвойстваПродукции}])+" "))+""+СокрП(?(Строка([Качество]) = "Новый","",", "+Нрег(Строка([Качество]))+" "))
После переноса части параметров и изменения условия проверки у нас получается отлично работающий вариант, но для этого надо иметь представление о функциях работы со строками в 1С и понимать, как их грамотно использовать.
Описание доступных для реквизитов методов:
Получить реквизиты - считывает список доступных дополнительных реквизитов (должен быть признак "отображать при создании")
Производитель - добавляет реквизит "Производитель"
Марка - добавляет реквизит "Марка (бренд)"
Добавить надпись текстом - добавляет произвольное строковое значение
Добавить произвольный реквизит - добавляет любой необходимый реквизит по известному имени реквизита в конфигурации
Доступные команды блока работа с шаблонами:
Запрет изменения наименования - после записи шаблона устанавливается признак "ручное изменение запрещено", рекомендуется к использованию
Видимость реквизитов при создании - отмечает всем допреквизитам признак "отображать при создании"
Добавить в фильтр все реквизиты - добавляет в фильтр отбора все доступные реквизиты
Марка/Производитель при создании - отмечает для этих реквизитов признак "отображать при создании"
Артикулы - отмечает признак "отображать при создании" для артикула
Раздел Реквизиты:
Сгенерировать формулу - создает формулу по вашим реквизитам
Записать в шаблон - записывает результат ваших действий с шаблонами
Авто/Характеристики - для характеристик выполняется следующий алгоритм - считываются все доступные для вида номенклатуры индивидуальные характеристики и в алфавитном порядке добавляются в формулу с контролем заполнения в работе, т.е. в конечное наименование характеристики для товара попадает только заполненное значение
Обработка номенклатуры:
Заполнить по виду номенклатуры - считывает всю доступную номенклатуру для вида в ТЧ для промежуточного контроля
Включить изменение номенклатуры - "защитная" мера от случайной перезаписи
Обновить наименование по шаблону - позволяет сразу же перезаписать все карточки с новым наименованием
PS - с большой долей вероятности будет работать и в ERP (либо потребует какие-то минимальные доработки), но проверить нет возможности.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.16.91, 11.4.14.181
- 1С:Комплексная автоматизация 2, релизы 2.5.12.53