7 ноября 2019 в 12:41:10
(5 лет 2 недели 3 дня 7 часов назад)
52600
V8.x Управление торговлей
14.04.2015 15:01:19
Текст задания
* В обработке "Загрузка прайса из excel" предусмотреть алгоритм, который позволяет загружать разные части учебной литературы в ОДНУ позицию номенклатуры называемой КОМПЛЕКТ. Данный алгоритм должен срабатывать при включенном чек-боксе "Загружать Комплекты номенклатуры в частях". Если он отключен, то загуржаем стандартным образом.
Суть работы данной загрузки: Если в строке наименования excel присутствует текст "ч1", "ч.1.", "ч.1", "ч1.", "ч 1", "ч. 1.", "ч. 1", "ч 1.", "вариант №1", "вариант № 1", "вар.1", "вар. 1" (за место единицы может быть любое число, к регистру не чувствителен), то считаем данную позицию номенклатуры КОМПЛЕКТУЮЩЕЙ позицией, содержащей 1-ую часть(2-ой, 3-ей и т.д, в зависимости от значения числа) всего комплекта. Это значит, что (после того, как будут опознаны ВСЕ комплектующие со всеми частями) нужно создать дополнительную позицию номенклатуры называемой КОМПЛЕКТ (или найти существующую по описанным ниже правилам) и определить для нее цену по КОМПЛЕКТУЮЩИМ (формирование цены описано ниже).
Кроме того необходимо СОЗДАТЬ (если не найден существующий в базе) элемент справочника "варианты комплектаций", основной номенклатурой которого будет является КОМПЛЕКТ, а в таблице перечислены КОМПЛЕКТУЮЩИЕ. (Поиск существующего варианта происходит по значению основной номенклатуры (КОМПЛЕКТА). в строке комплектующих количество единица, долю стоимости указывать не нужно.
Для НОВОЙ позиции номенклатуры-КОМПЛЕКТА в наименование необходимо добавить соответствующее значение части после
предыдущей (например в очередной строке: найден текст "ч.3.", это значит, что в номенклатуру-КОМПЛЕКТ в текущее наименование, например
"Тесты по грамматике русского языка. ч.1, ч.2. (Ткаченко) (Айрис)"
после "ч.2." должно быть добавлено "ч.3.", в результате получится наименование
"Тесты по грамматике русского языка. ч.1, ч.2., ч.3. (Ткаченко) (Айрис)".
Наименование КОМПЛЕКТУЮЩЕЙ позиции формируется по стандартным правилам (т.е. значение совпадает со значением в строке excel, фактически с одной частью).
В итоге по данному выше примеру мы получим 3 номенклатуры ("Тесты по грамматике русского языка. ч.i. (Ткаченко) (Айрис)" (где i-номер каждой части), каждая из которых является КОМПЛЕКТУЮЩЕЙ для номенклатуры-КОМПЛЕКТА "Тесты по грамматике русского языка. ч.1, ч.2., ч.3. (Ткаченко) (Айрис)".
В текущей обработке реализован механизм сопоставления по артикулам номенклатуры ПОСТАВЩИКА. Т.к. номенклатура-КОМПЛЕКТ получается из нескольких строк в эксель (КОМПЛЕКТУЮЩИХ), то номенклатуру ПОСТАВЩИКА для КОМПЛЕКТА НЕ создаем (т.к. это лишено всякого смысла).
* Если в наименовании excel присутствует сразу несколько частей, например "Семенов (Школа России) Информатика тетр. проектов 4 кл. в трех частях Ч.1, Ч.2, Ч.3. ФГОС (Просв.)", то данную позицию обрабатываем стандартным образом.
* Части в строках могут перечисляться в excel не всегда в последовательном порядке, например:
"Кубасова Литерат.чтение 3 кл. ч.2. (в 3 частях) ФГОС (Асс21в.)", затем
"Кубасова Литерат.чтение 3 кл. ч.1. (в 3 частях) ФГОС (Асс21в.)", затем
"Кубасова Литерат.чтение 3 кл. ч.3. (в 3 частях) ФГОС (Асс21в.)",
Это значит, что по первой строке наименование НОВОЙ номенклатуры-КОМПЛЕКТА должно быть сформировано как
"Кубасова Литерат.чтение 3 кл. ч.2. (в 3 частях) ФГОС (Асс21в.)",
по второй строке как
"Кубасова Литерат.чтение 3 кл. ч.1., ч.2. (в 4 частях) ФГОС (Асс21в.)", а не "... ч.2, ч.1. ...",
т.е. в наименовании порядок частей должен идти последовательно). И в третьей соответственно как
"Кубасова Литерат.чтение 3 кл. ч.1., ч.2., ч.3., (в 4 частях) ФГОС (Асс21в.)", а не "... ч.2., ч.1., ч.3. ...".
Т.е. при добавлении очередной части в наименовании будет проводиться анализ наличия существующих частей, и добавление новой части в правильном месте.
* Опознавание принадлежности наименование из строки excel как КОМПЛЕКТУЮЩЕЙ к одному КОМПЛЕКТУ должно происходить по наименованию из которого исключается текст, указывающий на ее часть.
Например если очередная строка прайса "Кубасова Литерат.чтение 3 кл. ч.2. (в 3 частях) ФГОС (Асс21в.)", то при нализе следующей строки мы удаляем текст с частью и произвольным числом (в данном случае это "ч.#.", где #- произвольное число), в итоге сравниваются первая и вторая строка по значениям "Кубасова Литерат.чтение 3 кл. (в 3 частях) ФГОС (Асс21в.)" и "Кубасова Литерат.чтение 3 кл. (в 3 частях) ФГОС (Асс21в.)" (т.к. в данном случае они совпадают, то вторая и первая строка являются КОМПЛЕКТУЮЩИМИ для одного КОМПЛЕКТА).
* Для случая, когда номенклатура загружается повторно необходимо поступить следующим образом: при опознании первой строки как комплектующей необходимо проверить ее наличие в справочнике "Варианты комплектаций". Если она присутствует в нем, то это значит, что номенклатура-КОМПЛЕКТ уже создана, а ее значение получаем из основной номенклатуры найденого элемента справочника "Варианты комплектаций". Найденный комплект может быть перезаписан по новому прайсу в соответствии с изменением его комплектующих. (аналогично механизму перезаписи существующих позиций при стандартной загрузке в том числе с фотографией, если указан ее номер в сопоставлении (кроме наименования, доп реквизита "часть" и цены; по ценам будет отдельное уточнение ниже)).
Новая или существующая позиция номенклатуры-КОМПЛЕПКТА заполняется/перезаписывается (кроме полей, указанных выше) по данным КОМПЛЕКТУЮЩЕЙ последней строки excel (т.е. следующая строка либо принадлжеит другому комплекту, либо не является комплектом вообще). Предполагается, что значения реквизитов всех комплектующих совпадают.
* В прайс-листе все части хоть и могут быть перечислены в произвольном порядке, но всегда идут ОДНИМ блоком. Т.е. между ними не может быть номенклатуры, которая относится к другому комплекту или не отностися ни к одному комплетку вообще. Это значит, что
1. Если следующая строка НЕ ПРИНАДЛЕЖИТ текущему комплекту, то в следующих строках опознание по всем ранее найденным комплектующим делать не нужно.
2. Если следующая строка ПРИНАДЛЕЖИТ текущему комплекту, то мы получаем ссылку на этот комплект запомнив его при обработке первой строки. В итоге при анализе второй строки нам не придется задавать поиск по всей базе на этот комплект. Данный подход позволит повысить скорость загрузки прайса.
* Бывает что для второй, третей и т.д. строки не указаны цены, в этом случае берем цену из первой строки.
Пользователю необходимо вывести уведомление о том, что для строк с пустыми ценами принята цена по первой строке (вывести номер строки, наименование и артикул номенклатуры-комплектующей).
* По каждой загружаемой части выдавать сообщение пользователю (Значение из строки excel, номер строки, сформированное наименование КОМПЛЕКТА номенклатуры и цена).
* При заполнении ценообразующего документа цена КОМПЛЕКТА складывается из его комплектующих (в том числе для случая, когда для некоторых комплектующих цены получена по первой строке).
* При создании НОВЫХ позиций-комплектующих необходимо загрузить их в отдельную папку, которую укажет пользователь (вывести соответствующий реквизит в форме обработки).
Так же необходимо УСТАНОВИТЬ чек бокс дополнительного реквизита "НЕ использовать в автоподборе".
* Создать отдельный алгоритм (для одноразового использования), который позволяет создать КОМПЛЕКТЫ для позиций загруженных ранее стандартным образом.
Например: в базе есть КОМПЛЕКТУЮЩИЕ позиции
"Кубасова Литерат.чтение 3 кл. ч.1. (в 3 частях) ФГОС (Асс21в.)",
"Кубасова Литерат.чтение 3 кл. ч.2. (в 3 частях) ФГОС (Асс21в.)",
"Кубасова Литерат.чтение 3 кл. ч.3. (в 3 частях) ФГОС (Асс21в.)".
Нужно, каждую КОМПЛЕКТУЮЩУЮ номенклатуру переместить в заданную пользователем папку и создать номенклатуру-КОМПЛЕКТ со всеми частями по правилам описанными выше для обработки загрузки цен.
УСТАНОВИТЬ чек бокс дополнительного реквизита "НЕ использовать в автоподборе".
Опять же (как и в случае с загрузкой) исключить из обработки существующие КОМПЛЕКТЫ в наименовании которых присутствует более одной части. Вывести сообщение по данной позициии, если для нее не определен вариант комплектации. (вполне очевидно, что это некорректно обработанный вариант комплектации, либо ранее созданный вручную элемент номенклатуры)
Например позицию "Семенов (Школа России) Информатика тетр. проектов 4 кл. в трех частях Ч.1, Ч.2, Ч.3. ФГОС (Просв.)" исключить из обработки.
Для каждого запуска создавать документ "Установка цен номенклатуры", который заполняется номенклатурой-КОМПЛЕКТОМ, а цена складывается из КОМПЛЕКТУЮЩИХ (в случае, если у некоторых комплектующих отсутствует цена, то берем значение у той, в которой эта цена известна, как правило это первая часть; выводим уведомление, что для данных комплектующих цены были определены по комплектующей с заполненной ценой).
* Дополнительно к текущему ТЗ (работает для всех вариантов загрузки из excel (с комплектами или без).
Если ISBN отличается от текущего, то новое значение НЕ заменяется, а добавляется к текущему слева с запятой.
Например: было "2q34521944523". В прайсе идет новое значение "9q34521944523", в итоге должно стать "9q34521944523, 2q34521944523"
При чем при повторной загрузке не должно быть что-то типа: "9q34521944523, 9q34521944523, 2q34521944523" (т.к. вроде бы значение в прайсе по тексту отличается от значения в номенклатуре). Здесь проверяем вхождение подстроки.