При работе в связке 1С:Управление торговлей 11.4 и 1С:Розница 2.2 часто возникает ситуация, когда справочник номенклатуры переполняется архивными позициями. Эти товары больше не закупаются и отсутствуют на складах, но должны храниться в базе УТ для истории. Однако в программе Розница, особенно в рабочем месте кассира (РМК), эти позиции только мешают поиску и замедляют работу персонала. Рассмотрим подробнее, как решить задачу ограничения выгрузки таких товаров, не прибегая к сложному изменению типового кода.
Прежде чем приступать к программированию, проанализируем стандартные возможности механизма синхронизации данных. В типовых правилах обмена между УТ 11 и Розницей 2.2 предусмотрены гибкие фильтры.
Важный нюанс: Если мы просто укажем фильтр по папке, товары, которые уже были выгружены ранее, останутся в базе Розница. Чтобы они перестали там «маячить», необходимо не только ограничить выгрузку, но и разобраться с уже существующими данными. Кроме того, помним про риск возникновения «битых ссылок»: если товар из запрещенной папки фигурирует в документах (например, в старых чеках или перемещениях), система может попытаться его выгрузить по ссылке.
Разберем более продвинутый и гибкий способ — использование сегментов. Вместо жесткой привязки к иерархии папок, мы можем создать динамический сегмент ТоварыДляВыгрузкиВРозницу.
Проанализируем шаги реализации:
УТ 11 создадим новый сегмент номенклатуры. В правилах формирования сегмента укажем, что в него НЕ входят товары из папки Старый товар.Этот способ хорош тем, что сегмент может обновляться автоматически. Например, вы можете добавить условие Остаток на складах > 0. Как только товар закончится и попадет в папку архива, он автоматически исключится из сегмента и перестанет синхронизироваться.
Выясним причину, по которой товары мешают кассирам. Как правило, это происходит при подборе товара в РМК. В программах 1С есть штатный механизм управления ассортиментом. Если в УТ 11 создать документ Изменение ассортимента и перевести товары в статус Выведен из ассортимента, то при правильной настройке Розницы эти товары перестанут отображаться.
Посмотрим, какие настройки нужно проверить в 1С:Розница:
При таком подходе товары физически могут находиться в базе Розница, но кассир их не увидит в окне подбора и не сможет пробить, даже если введет артикул вручную.
Если нам нужно именно технически запретить программе «видеть» эти данные во время обмена, можно воспользоваться механизмом RLS (ограничение прав на уровне записей).
Рассмотрим алгоритм:
УТ 11, под которым будет выполняться синхронизация (если это не сделано ранее).Номенклатура пропишем условие: ГДЕ Родитель <> &АрхивнаяПапка.Внимание: Использование RLS может существенно замедлить процесс синхронизации при больших объемах данных.
Часто после настройки всех фильтров пользователи замечают, что товар все равно выгружается. Проанализируем ситуацию: это происходит потому, что объекты уже зарегистрированы к обмену в Плане обмена. Чтобы фильтры заработали корректно, нужно очистить регистрацию.
Для этого выполним следующие действия:
Номенклатура.Старый товар и удалим её из очереди на выгрузку.Если типовых фильтров недостаточно, мы можем создать расширение и перехватить процедуру регистрации данных. Рассмотрим пример кода, который можно использовать в модуле расширения для фильтрации объектов Номенклатура:
&Перед("ЗаписатьРегистрациюОбъекта")
Процедура Расш_ЗаписатьРегистрациюОбъекта(Объект, Получатель, Отказ)
Если ТипЗнч(Объект) = Тип("СправочникСсылка.Номенклатура") Тогда
// Проверяем принадлежность к запрещенной папке
Если Объект.Родитель.Наименование = "Старый товар" Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Этот код позволяет пресечь попытку регистрации объекта к обмену еще на этапе записи или изменения данных в УТ 11. Мы используем метод Отказ = Истина, чтобы предотвратить попадание ссылки в таблицу изменений плана обмена.
Важно помнить о целостности данных. Если мы запрещаем выгрузку номенклатуры, но она задействована в документе Перемещение товаров, который выгружается в Розницу, то в Рознице мы получим объект <Объект не найден>.
Чтобы минимизировать этот риск, проанализируем настройки обмена: в правилах синхронизации рекомендуется устанавливать режим выгрузки данных По ссылкам в значение Не выгружать или Выгружать только при необходимости. Однако самым правильным решением будет перемещать товар в архивную папку только после того, как по нему закрыты все остатки и завершены все складские операции в текущем периоде обмена.
Таким образом, комбинируя методы управления ассортиментом и настройки фильтров регистрации, мы добьемся чистоты базы в 1С:Розница и удобства работы кассиров без внесения изменений в основную конфигурацию.