Работу без ассортиментной матрицы можно сравнить с походом в гипермаркет, в котором нет указателей, все товары перемешаны и детское питание стоит на полке рядом с полиролью. https://blog.anketolog.ru/2017/07/assortimentnaya-matrica/
Ассортимент определяет, какие товары обязательно должны быть на остатке. К задачам управления ассортиментом относятся:
- Работа с форматами (классификация) розничных магазинов, определение соответствия классов клиентов и их ассортимента в целях планирования обеспечения клиентов, ассортимент в прейскурантах оптовых клиентов.
- Учет товаров в разрезе брендов (коллекций) .
- Установка квот ассортимента.
- Изменение ассортимента.
- Ввод нового товара в ассортимент.
- Закупка и Продажа товара, входящего и не входящего в действующий ассортимент.
- Отзыв товара из ассортимента.
- Анализ продаж и формирование заказов поставщикам с учетом действующего ассортимента.
- Анализ ассортимента и его исполнения, см. https://kursy-po-1c.ru/news/retail-free-case-number-6/
Всего этого в Комплексной 7.7 нет. Восполнить данный недостаток без серьезных доработок позволяет использование в целях управления ассортиментом многоуровневой иерархии справочника номенклатуры. Перемещая товары между папками можно вводить в ассортимент и выводить их, относить к бренду, закреплять за классом клиента, классифицировать в целях анализа продаж и формирования заказов. Все это можно делать универсальной обработкой, вот пример. //infostart.ru/public/365327/
В качестве подготовки к изменению ассортимента можно использовать условные обозначения в реквизитах карточки товара, например в его наименовании. В рассматриваемом примере звездочками в наименовании товара обозначается, что товар выводится из ассортимента и его нельзя больше пополнять (закупать). Данное правило может быть описано в модуле кодом, например так.
Запрет на создание новых заявок покупателей выводимого из ассортимента товара
ВыбратьСтроки();
Пока ПолучитьСтроку()= 1 Цикл
ЗаблокированАссортимент = 0;
Если СокрЛП(Склад.Код)= "2" Тогда
Если Лев(Номенклатура.Наименование,4)="****" Тогда
ОстатокТовара = Регистр.ОстаткиТМЦ.СводныйОстаток(Фирма,Номенклатура,Склад,,"Количество")-
Регистр.РезервыТМЦ.СводныйОстаток(Фирма,Номенклатура,Склад,,,"Количество");
Если ОстатокТовара <= 0 Тогда
Если ВыгруженВExceed=0 Тогда
ЗаблокированАссортимент = 1;
Сообщить(Номенклатура.ОсновнаяЕдиница.Штрихкод+", "+Номенклатура.Код+", "+Номенклатура.Наименование+" выведен и отсутствует на остатках, удалите его из заявки.");
Продолжить;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ЗаблокированАссортимент = 1 Тогда
Возврат;
КонецЕсли;
В случае ротации не единичных товаров, а целых папок многоуровневой иерархии справочника номенклатуры ротация ассортимента может быть описана например так.
Запрет на создание заявок покупателей групп номенклатуры, в которых происходит ротация ассортимента
ТабЗапретТоваровКл = СоздатьОбъект("ТаблицаЗначений");
ТабЗапретТоваровКл.НоваяКолонка("Группа");
ТабЗапретТоваровКл.НоваяКолонка("Присутствует");
спрЗапТКон = СоздатьОбъект("Справочник.ЗапрещенныйТоварКлиентам");
спрЗапТКон.ИспользоватьВладельца(Контрагент);
спрЗапТКон.ВыбратьЭлементы();
Пока спрЗапТКон.ПолучитьЭлемент()=1 Цикл
Если (ПустоеЗначение(спрЗапТКон.Номенклатура)=0) и (спрЗапТКон.ПометкаУдаления()=0) Тогда
ТабЗапретТоваровКл.НоваяСтрока();
ТабЗапретТоваровКл.Группа = спрЗапТКон.Номенклатура;
ТабЗапретТоваровКл.Присутствует = 0;
КонецЕсли;
КонецЦикла;
Если ПустоеЗначение(глПользователь.Полномочия) = 1 Тогда
РазрешитьПроводитьПоЗакрытымКолекциям = 0;
Иначе
РазрешитьПроводитьПоЗакрытымКолекциям = глПользователь.Полномочия.РазрешитьПроводитьПоЗакрытымКолекциям;
КонецЕсли;
Если РазрешитьПроводитьПоЗакрытымКолекциям = 0 Тогда
ГруппаПользователейСклада = СоздатьОбъект("Справочник.Пользователи");
ГруппаПользователейСклада.НайтиПоКоду("07");
ВыбПользователь = СоздатьОбъект("Справочник.Пользователи");
СпрПользователь = ИмяПользователя();
Если ВыбПользователь.НайтиПоКоду(СпрПользователь) = 1 Тогда
Если ВыбПользователь.ПринадлежитГруппе(ГруппаПользователейСклада) = 1 Тогда
ТабЗапретГрупп = СоздатьОбъект("ТаблицаЗначений");
ТабЗапретГрупп.НоваяКолонка("Группа");
ТабЗапретГрупп.НоваяКолонка("Присутствует");
спрЗапПоКол = СоздатьОбъект("Справочник.ЗапретПоКоллекциям");
спрЗапПоКол.ВыбратьЭлементы();
Пока спрЗапПоКол.ПолучитьЭлемент()=1 Цикл
Если (ПустоеЗначение(спрЗапПоКол.Номенклатура)=0) и (спрЗапПоКол.ПометкаУдаления()=0) Тогда
ТабЗапретГрупп.НоваяСтрока();
ТабЗапретГрупп.Группа = спрЗапПоКол.Номенклатура;
ТабЗапретГрупп.Присутствует = 0;
КонецЕсли;
КонецЦикла;
ВыбратьСтроки();
ЕстьЛевыйТовар=0;
пНом = 0;
ВсегоСтрок = КоличествоСтрок();
Пока ПолучитьСтроку()=1 Цикл
~УдалениеЗакрытойКоллекции:
пНом = пНом+1;
ЛевыйТовар=1;
ТабЗапретГрупп.ВыбратьСтроки();
ИтогПрисутствует = 0;
Пока ТабЗапретГрупп.ПолучитьСтроку()=1 Цикл
Если Номенклатура.ПринадлежитГруппе(ТабЗапретГрупп.Группа)=1 Тогда
ТабЗапретГрупп.Присутствует=ТабЗапретГрупп.Присутствует+СокрЛП(Номенклатура.Код);
УдалитьСтроку();
ИтогПрисутствует = ИтогПрисутствует + 1;
Если не(ВсегоСтрок = пНом) Тогда
Перейти ~УдалениеЗакрытойКоллекции;
КонецЕсли;
ИначеЕсли Номенклатура = ТабЗапретГрупп.Группа Тогда
ТабЗапретГрупп.Присутствует=ТабЗапретГрупп.Присутствует+СокрЛП(Номенклатура.Код);
УдалитьСтроку();
ИтогПрисутствует = ИтогПрисутствует + 1;
Если не(ВсегоСтрок = пНом) Тогда
Перейти ~УдалениеЗакрытойКоллекции;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ИтогПрисутствует=0 Тогда
Иначе
Сообщить("Нельзя пробивать товары ("+СокрЛП(ИтогПрисутствует)+" поз-й) из следующих групп:", "!");
глПечатьТаблицы(ТабЗапретГрупп);
ТабЗапретГрупп.ВыбратьСтроки();
Пока ТабЗапретГрупп.ПолучитьСтроку()=1 Цикл
Если ТабЗапретГрупп.Присутствует=1 Тогда
Сообщить(" - "+ТабЗапретГрупп.Группа);
КонецЕсли;
КонецЦикла;
Результат = 0;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Отличительные признаки видов товаров в реквизитах, например в реквизите "Категория" (то есть номенклатурная группа) карточки товара в паре с подчиненным справочником аналогов номенклатуры поможет сделать адекватную замену отсутствующего товара, необходимую клиенту, чтобы клиент не ушел от Вас с пустыми руками.
Для обеспечения товаром в каждой номенклатурной группе (категории) обязательно должно быть в достаточном количестве для торговли что-то из аналогов номенклатуры. Замена отсутствующего товара на выбранный аналог может быть автоматизирована. http://samoychiteli.ru/document36614.html
Анализ выполнения плана по ассортименту
При использовании описанной схемы работы с ассортиментом в качестве анализа исполнения ассортимента предлагаю использовать следующий отчет "Анализ выполнения плана по ассортименту", который сравнивает плановую ассортиментную матрицу с фактическим наличием товара на складе по дням в разрезе категорий или бренддов, поможет составить оценку качества обеспечения торгового предприятия товаром.
Данный отчет позволяет выявить, сколько позиций от плана ассортиментной матрицы каждый день периода анализа присутствовали на остатках, и на какую их долю в периоде анализа оформляются заявки покупателей. Настройка "Показать данные заявок покупателей" позволяет судить, насколько часто данные позиции ассортиментной матрицы попадают в заявки покупателей, насколько востребован товар, категория (номенклатурная группа) или бренд (коллекция).
В данной публикации описан и использован в отчете только типовой функционал Комплексной 7.7, доработки конфигурации не требуются. Протестировано на комплексной конфигурации 4.2 (7.70.424). Версия платформы 7.70.027.