Предлагается подход к формированию многопризнакового прайса без изменения схемы данных.
ВНИМАНИЕ!!! В данной статье рассматривается один из возможных вариантов решения задачи
Для этого применим замечательный механизм свойств, реализованный в типовых ТиС (на примере ред.9.2)
Рассмотрим реализацию данной задачи на примере простого требования: некий произвольный перечень товаров выводить в прайсе жирным шрифтом.
1. Выработаем систему обозначений: если у товара свойство "ВыделитьВпрайсе" принимает значение "Да" (отличное от нуля) - эта позиция подлежит выделению в прайсе. При этом "нулевое" значение свойства (все что отлично от "Да" или отсутствие такого свойства у товара вообще) означает обычную позицию в прайсе.
2. Дадим инструментарий для быстрого заполнения/переключения данного свойства у нужных товаров (на базе типовой обработки установки свойств номенклатуры/контрагентов - немного ее упрощаем/модифицируем в части заточки под данную задачу: переключение да/нет)
3. Обязательно предусмотрим механизм протоколирования действий по п.2 - в основном, чтобы "отмазаться" от наездов возмущенных продажников по типу "какого .. эта позиция выделена?" - в принципе это вопрос может решаться многими методами и протоколирование, на самом деле, последний из них - типа спасательного круга на крайний случай. Протокол пишем в обычный текстовый файл с именем по шаблону ГГГГММДДЧЧММ.txt и кладем в специальный папочку/подпапочку, где у нас хранятся всяческие протоколы...
Например, в данный файлик пишем:
МенеджерПоПрайсам 31.01.16 16:36:56
НЕТ -> ДА 00009469 Пензитал табл.п.о №30
НЕТ -> ДА 00001312 Флемоксин Солютабл. табл.раствор.125мг №20
Итого: видно кто и когда произвел манипуляции с раскраской файла
4. При формировании типового прайса (или даже нетипового - идея та же самая) сделаем вставочку типа:
//
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Обрабатывать НеПомеченныеНаУдаление;
|ВидСвойства = Справочник.СвойстваНоменклатуры.ВидСвойства.Наименование;
|ЗначениеСвойства = Справочник.СвойстваНоменклатуры.ЗначениеСвойства.Наименование;
|Номенклатура = Справочник.СвойстваНоменклатуры.Владелец;
|Группировка Номенклатура;
|Условие (Найти(ВРЕГ(ВидСвойства),""ВЫДЕЛИТЬВПРАЙСЕ"") < > 0);
|Условие (Найти(ВРЕГ(ЗначениеСвойства),""ДА"") < > 0);";
Если Запрос.Выполнить(ТекстЗапроса)=0
Тогда Возврат;
КонецЕсли;
ТЗВыделить = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗВыделить,1,0);
5. Далее, при построчном выводе прайса ищем текущий товар в таблице ТЗВыделить, нашли - выводим жирным шрифтом, не нашли - как обычно.
На что следует обратить внимание при использовании данной методики?
а) Следует тщательно продумать "систему условных обозначений" для прайса и ограничить круг лиц, которые могут модифицировать справочники видов свойств и сами значения свойств.
б) предложенная методика - достаточно универсальная и без особых затрат может "клонироваться" на родственные задачи. Но! За счет универсальности - работать будет медленнее... Поэтому - сначала оцениваем соотношение "затраты программиста/скорость работы программы" и реализуем то, что считаем более подходящим.
Данный пример - самое простое, что можно придумать, слегка "расширив" рассмотренную схему можно построить достаточно универсальную программу. Основное при этом - "хитрость" программиста... Можно значения свойств кодировать "прямо", т.е. задав "значение=font[bold]color[255000000]" и написав в коде что-то типа "применить к выводимой строке текущее значение свойства" автоматом получим жирные красные буквы на белом фоне без излишних "если-то-иначе"...
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Нет комментариев