Переход со старых версий конфигураций (например, с «1С:Управление торговлей 10.3») на современные управляемые формы «1С:Управление торговлей 11» (УТ 11) часто сопровождается архитектурными ошибками. Типичный сценарий: стандартный помощник перехода переносит все товары с характеристиками в один единственный вид номенклатуры — например, «Товар (с/х)». В результате сотни разнородных свойств (размеры одежды, диаметры труб, бренды, цвета обуви) оказываются привязанными к одной группе.
Это порождает две критические проблемы:
В этой статье мы подробно разберем причины этой проблемы, проанализируем внутреннее устройство регистров УТ 11 и рассмотрим пошаговые сценарии безопасного исправления структуры данных как в самой 1С, так и в интеграции с 1С-Битрикс.
В «1С:Управление торговлей 11» архитектура учета запасов кардинально отличается от версии 10.3. Здесь внедрен механизм ключей аналитики учета номенклатуры. Программа хранит информацию о движениях товаров и остатках не напрямую по паре «Номенклатура + Характеристика», а через ссылку на специальный системный справочник КлючиАналитикиУчетаНоменклатуры.
Этот справочник жестко связывает между собой следующие разрезы:
Когда вы пытаетесь воспользоваться стандартной обработкой «Поиск и замена дублей» или групповым изменением реквизитов для прямой замены одного товара на другой (или для изменения вида номенклатуры в карточке, где уже есть движения), система перезаписывает ссылки в документах, но не перестраивает ключи аналитики. Это приводит к рассинхронизации данных в регистрах накопления (таких как ТоварыНаСкладах, ВыручкаИСебестоимостьПродаж) и регистре сведений АналитикаУчетаНоменклатуры. В результате сбивается партионный учет, ломается расчет себестоимости, а при закрытии месяца система выдает фатальные ошибки.
Дополнительной преградой выступает скрытая табличная часть «Виды запасов» в документах товародвижения (Реализация товаров и услуг, Поступление товаров и услуг и др.). Она заполняется автоматически при проведении документа. Если программно изменить номенклатуру или характеристику в основной табличной части «Товары», данные в «Видах запасов» останутся старыми. При попытке перепроведения документ выдаст ошибку о нехватке остатков или несоответствии аналитики.
---
Если в вашей базе уже ведется активный учет, есть актуальные остатки на складах и зафиксированы цены, самым надежным и легальным способом исправления ситуации является создание новой структуры «с нуля» и ручной перенос остатков. Рассмотрим этот процесс по шагам.
Шаг 1. Создание новых видов номенклатуры
Вместо одного перегруженного вида «Товар (с/х)» создайте несколько профильных видов номенклатуры, соответствующих вашим товарным категориям (например: «Обувь», «Одежда», «Строительные материалы»). Для каждого нового вида настройте свой индивидуальный список характеристик и дополнительных реквизитов. Это позволит локализовать свойства и сделать карточки чистыми.
Шаг 2. Создание новых карточек товаров
Внутри новых видов номенклатуры создайте правильные карточки товаров. Характеристики для них теперь будут создаваться только в рамках их собственного вида, что исключит путаницу.
Шаг 3. Инвентаризация и списание остатков со старых карточек
Для того чтобы корректно обнулить остатки по старым позициям, используйте складские акты:
Пересчет товаров по складам, где числится старая номенклатура.Списание недостач товаров. Это позволит «очистить» склады от позиций со старым (неправильным) видом номенклатуры.Шаг 4. Оприходование на новые карточки номенклатуры
Для ввода остатков по новым, правильно настроенным карточкам выполните следующие действия:
Оприходование излишков товаров.Альтернативным вариантом для шагов 3 и 4 является использование единого документа Пересортица товаров, который позволяет в рамках одной табличной части списать старый товар и сразу же оприходовать новый.
Шаг 5. Установка новых цен
Для новых позиций создайте документ Установка цен номенклатуры, чтобы менеджеры по продажам могли оперативно выписывать документы, а сайт получал актуальную стоимость товаров.
Шаг 6. Архивация старых позиций
Чтобы исключить случайное использование старых карточек в новых закупках и продажах, перенесите их в специально созданную группу «Архив» и установите в их карточках признак «Неактивен» (или заблокируйте для выбора в настройках прав доступа). Старые документы прошлых периодов останутся нетронутыми, что гарантирует неизменность сданной ранее отчетности.
---
Если объем номенклатуры исчисляется десятками тысяч позиций, ручной перенос невозможен. В этом случае программисту необходимо разработать или использовать специализированную обработку, которая выполнит корректную замену на уровне базы данных. Проанализируем алгоритм работы такой обработки.
Простая замена ссылок через стандартные методы API 1С приведет к краху ключей аналитики. Безопасная программная обработка должна выполнять следующие действия:
ХарактеристикиНоменклатуры с новым владельцем.Посмотрим на пример кода, позволяющего программно разблокировать и изменить вид номенклатуры в карточке:
// Пример программного изменения вида номенклатуры в УТ 11
Процедура ИзменитьВидНоменклатуры(ТоварСсылка, НовыйВидНоменклатуры)
ТоварОбъект = ТоварСсылка.ПолучитьОбъект();
// Используем заполнение дополнительных свойств для обхода стандартных проверок конфигурации
ТоварОбъект.ДополнительныеСвойства.Вставить("РазрешитьИзменениеРеквизитовОбъекта", Истина);
ТоварОбъект.ДополнительныеСвойства.Вставить("ПропускатьПроверкуЗапретаРедактирования", Истина);
// Меняем вид номенклатуры
ТоварОбъект.ВидНоменклатуры = НовыйВидНоменклатуры;
Попытка
ТоварОбъект.Записать();
Сообщить("Успешно изменен вид для: " + ТоварСсылка.Наименование);
Исключение
Сообщить("Ошибка записи: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
ВидыЗапасв.КлючиАналитикиУчетаНоменклатуры и обновит регистры себестоимости.---
Проанализируем ситуацию с обменом данными. Почему Битрикс «забивает» базу сайта ненужными характеристиками? Дело в логике работы интеграционного модуля. Модуль обмена считывает метаданные вида номенклатуры в 1С. Если у вас один вид номенклатуры, модуль создает на сайте один инфоблок предложений (SKU), содержащий абсолютно все свойства, зарегистрированные для этого вида в 1С.
Даже если у конкретного товара заполнена всего одна характеристика (например, «Размер обуви»), в XML-файл выгрузки и далее в базу данных сайта запишутся пустые поля для всех остальных ста характеристик вида (цвет куртки, объем памяти, диаметр резьбы и т.д.).
Рассмотрим по шагам, как исправить эту проблему на уровне настроек обмена:
В настройках узла интеграции в 1С (в модуле обмена от Битрикс версии 7.x и выше) перейдите в настройки выгрузки каталога товаров. Включите опцию «Классифицировать по видам номенклатуры». Это заставит систему создать на сайте отдельные инфоблоки под каждый вид номенклатуры из 1С. Таким образом, свойства одежды будут находиться только в инфоблоке одежды, а свойства обуви — в инфоблоке обуви. База данных сайта вздохнет с облегчением.
В модуле обмена Битрикс активируйте настройку «Выгружать предложения только с ценами». Логика работы этого механизма следующая:
ЦеныНоменклатуры, и выгрузит на сайт только 3 актуальных торговых предложения.Если вы разделяете товары на разные виды номенклатуры, но у них есть совпадающие свойства (например, «Цвет» или «Производитель»), ни в коем случае не создавайте для каждого вида номенклатуры новое уникальное свойство с нуля. Используйте механизм общих дополнительных реквизитов:
Если пренебречь этим правилом, Битрикс создаст на сайте дублирующие свойства с названиями вида «Цвет_1», «Цвет_2», что полностью сломает работу «умного фильтра» на сайте, так как покупатель не сможет отфильтровать весь ассортимент интернет-магазина по единому фильтру цвета.
В современных версиях официального модуля обмена (начиная с 7.0.1.x) доступна вкладка «Настройка отборов и полей». Проанализируйте список выгружаемых свойств и вручную снимите флажки с тех технических характеристик или дополнительных сведений, которые используются только для внутреннего учета в 1С и не должны отображаться покупателям в каталоге интернет-магазина. Это значительно сократит объем XML-пакетов и ускорит время обмена данными.