Как запретить выгрузку определенной папки номенклатуры из УТ 11.4 в Розницу 2.2

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе в связке 1С:Управление торговлей 11.4 и 1С:Розница 2.2 часто возникает ситуация, когда справочник номенклатуры переполняется архивными позициями. Эти товары больше не закупаются и отсутствуют на складах, но должны храниться в базе УТ для истории. Однако в программе Розница, особенно в рабочем месте кассира (РМК), эти позиции только мешают поиску и замедляют работу персонала. Рассмотрим подробнее, как решить задачу ограничения выгрузки таких товаров, не прибегая к сложному изменению типового кода.

Метод 1. Настройка встроенных фильтров синхронизации

Прежде чем приступать к программированию, проанализируем стандартные возможности механизма синхронизации данных. В типовых правилах обмена между УТ 11 и Розницей 2.2 предусмотрены гибкие фильтры.

  1. Перейдем в раздел НСИ и администрирование — Синхронизация данных.
  2. Выберем нашу настройку обмена с Розницей и нажмем кнопку Настроить.
  3. В открывшемся окне найдем пункт Параметры отправки данных.
  4. Здесь мы можем установить фильтр по номенклатуре. Нажмем на гиперссылку настроек и выберем вариант Отбирать вручную или установим условие по группе (папке).

Важный нюанс: Если мы просто укажем фильтр по папке, товары, которые уже были выгружены ранее, останутся в базе Розница. Чтобы они перестали там «маячить», необходимо не только ограничить выгрузку, но и разобраться с уже существующими данными. Кроме того, помним про риск возникновения «битых ссылок»: если товар из запрещенной папки фигурирует в документах (например, в старых чеках или перемещениях), система может попытаться его выгрузить по ссылке.

Метод 2. Использование сегментов номенклатуры

Разберем более продвинутый и гибкий способ — использование сегментов. Вместо жесткой привязки к иерархии папок, мы можем создать динамический сегмент ТоварыДляВыгрузкиВРозницу.

Проанализируем шаги реализации:

  1. В УТ 11 создадим новый сегмент номенклатуры. В правилах формирования сегмента укажем, что в него НЕ входят товары из папки Старый товар.
  2. В настройках синхронизации данных (в тех же параметрах отправки) установим фильтр: Номенклатура входит в сегмент — ТоварыДляВыгрузкиВРозницу.

Этот способ хорош тем, что сегмент может обновляться автоматически. Например, вы можете добавить условие Остаток на складах > 0. Как только товар закончится и попадет в папку архива, он автоматически исключится из сегмента и перестанет синхронизироваться.

Метод 3. Управление ассортиментом и скрытие в РМК

Выясним причину, по которой товары мешают кассирам. Как правило, это происходит при подборе товара в РМК. В программах 1С есть штатный механизм управления ассортиментом. Если в УТ 11 создать документ Изменение ассортимента и перевести товары в статус Выведен из ассортимента, то при правильной настройке Розницы эти товары перестанут отображаться.

Посмотрим, какие настройки нужно проверить в 1С:Розница:

При таком подходе товары физически могут находиться в базе Розница, но кассир их не увидит в окне подбора и не сможет пробить, даже если введет артикул вручную.

Метод 4. Ограничение через права доступа (RLS)

Если нам нужно именно технически запретить программе «видеть» эти данные во время обмена, можно воспользоваться механизмом RLS (ограничение прав на уровне записей).

Рассмотрим алгоритм:

  1. Создадим отдельного пользователя в УТ 11, под которым будет выполняться синхронизация (если это не сделано ранее).
  2. Настроим группу доступа для этого пользователя, где в ограничениях на чтение справочника Номенклатура пропишем условие: ГДЕ Родитель <> &АрхивнаяПапка.
  3. В этом случае при выгрузке данных программный код обмена просто «не увидит» объекты из этой папки, и они не попадут в сообщение обмена.

Внимание: Использование RLS может существенно замедлить процесс синхронизации при больших объемах данных.

Метод 5. Очистка регистрации изменений

Часто после настройки всех фильтров пользователи замечают, что товар все равно выгружается. Проанализируем ситуацию: это происходит потому, что объекты уже зарегистрированы к обмену в Плане обмена. Чтобы фильтры заработали корректно, нужно очистить регистрацию.

Для этого выполним следующие действия:

  1. Откроем Состав отправляемых данных в окне синхронизации.
  2. Найдем справочник Номенклатура.
  3. Нажмем Отменить регистрацию для всех позиций или выберем конкретную папку Старый товар и удалим её из очереди на выгрузку.

Техническое решение через расширение (для программистов)

Если типовых фильтров недостаточно, мы можем создать расширение и перехватить процедуру регистрации данных. Рассмотрим пример кода, который можно использовать в модуле расширения для фильтрации объектов Номенклатура:


&Перед("ЗаписатьРегистрациюОбъекта")
Процедура Расш_ЗаписатьРегистрациюОбъекта(Объект, Получатель, Отказ)
    Если ТипЗнч(Объект) = Тип("СправочникСсылка.Номенклатура") Тогда
        // Проверяем принадлежность к запрещенной папке
        Если Объект.Родитель.Наименование = "Старый товар" Тогда
            Отказ = Истина;
            Возврат;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Этот код позволяет пресечь попытку регистрации объекта к обмену еще на этапе записи или изменения данных в УТ 11. Мы используем метод Отказ = Истина, чтобы предотвратить попадание ссылки в таблицу изменений плана обмена.

Последствия и риски: «Битые ссылки»

Важно помнить о целостности данных. Если мы запрещаем выгрузку номенклатуры, но она задействована в документе Перемещение товаров, который выгружается в Розницу, то в Рознице мы получим объект <Объект не найден>.

Чтобы минимизировать этот риск, проанализируем настройки обмена: в правилах синхронизации рекомендуется устанавливать режим выгрузки данных По ссылкам в значение Не выгружать или Выгружать только при необходимости. Однако самым правильным решением будет перемещать товар в архивную папку только после того, как по нему закрыты все остатки и завершены все складские операции в текущем периоде обмена.

Таким образом, комбинируя методы управления ассортиментом и настройки фильтров регистрации, мы добьемся чистоты базы в 1С:Розница и удобства работы кассиров без внесения изменений в основную конфигурацию.

← На главную