Много-много скидок
Ко мне обратился клиент, т.к. им нужно было провести сетевую акцию по скидкам.
При этом перечень позиций, на которые должны были быть скидки, был довольно большим — порядка 600 позиций. Кроме того, скидки в некоторых случаях давались не на весь артикул, а на определенный цвет.
Я предложил обучить, как набивать условия в сегменты, но клиент был готов заплатить мне за всю работу целиком, даже за ручной ввод, несмотря на объем.
Так случилось, что мне эта работа выпала на период, когда я заболел ОРВИ. И мне очень не хотелось сидеть и заниматься ручным вводом.
В итоге я прокрастинировал, прокрастинировал — благо, отмазка была — болею же. Но тут мне в голову пришла настолько гениальное решение проблемы, что как будто незримая сила вырвала меня из постели и засадила за рабочий стол, пока я не проверил, что да, сработает. Я тут же обрадовал клиента, что его задача решится проще и быстрее.
Исходный список товаров для акции был в таблице Excel:
Пришлось, правда, разбить цвет и артикул на отдельные колонки, но таких позиций было немного, иначе бы и это автоматизировал.
В итоге я напротив каждой пары артикул+цвет разместил формулу:
=СЦЕПИТЬ(«ИНАЧЕЕСЛИ Артикул = «»»; ПРОПИСН(СЖПРОБЕЛЫ(D3));»»»»;ЕСЛИ(СЖПРОБЕЛЫ(E3)<>»»;СЦЕПИТЬ(» И Содержит(Цвет,»»»;ПРОПИСН(СЖПРОБЕЛЫ(E3));»»»»);»»);» ТОГДА ПроцентСкидки = «;B3*100)
В итоге я получил код из цепочки условий на встроенном языке 1С:
Этот код я запихнул в свою обработку скидок. Сделал тестовые прогоны и сдал работу заказчику. Они просканировали позиции и убедились, что все работает хорошо.
Даже и не знаю, сколько бы это заняло времени, если бы я вносил условия вручную!
Горжусь своей работой!
решение вида «чешем правое ухо левой ногой». можно же было просто сконвертировать данные в csv, открыть его в 1С и там уже написать логику обработки.
задачу перечитайте. это одноразовая задача, писать лишние загрузчики — это нецелевое расходование ограниченного бюджета клиента.
какие загрузчики ты там не можешь написать? чтение из csv-файла? конечно, писать вырвиглазный код в экселе вида
=СЦЕПИТЬ(«ИНАЧЕЕСЛИ Артикул = «»»; ПРОПИСН(СЖПРОБЕЛЫ(D3));»»»»;ЕСЛИ(СЖПРОБЕЛЫ(E3)»»;СЦЕПИТЬ(» И Содержит(Цвет,»»»;ПРОПИСН(СЖПРОБЕЛЫ(E3));»»»»);»»);» ТОГДА ПроцентСкидки = «;B3*100)
лучше, чем написать сразу в 1С (псевдокод, на суржике вашем не балакаю):
load_csv(file_name):
foreach (row in read_csv(file_name)):
id, discount, color = row
if color=blue:
dicount=60
//…
ну почему же не могу, могу и даже статья про чтение CSV тут имеется.
Но это надо писать код, отлаживать и т.п.
В Экселе как-то все это быстрее происходит.