Почему при переносе данных из «1С:Розница 2.3» в «1С:Розница 3.0» не переносятся остатки товаров и как это исправить?

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

Переход с редакции 2.3 на 3.0 в программе «1С:Розница» — это важный и технически сложный процесс. Одной из самых частых проблем, с которой сталкиваются пользователи и технические специалисты, является корректный перенос остатков. Часто ситуация выглядит так: справочники (номенклатура, контрагенты, цены) переносятся успешно, а документы ввода остатков либо не создаются вовсе, либо создаются пустыми. Рассмотрим подробнее, почему это происходит и как решить эту проблему программным и административным путем.

Выясним основную причину проблемы

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

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

Шаг 1. Предварительная подготовка данных в исходной базе

Прежде чем приступать к правке программного кода, разберем действия, которые необходимо выполнить в «1С:Розница 2.3» на уровне пользователя. Без этих шагов даже исправленный код может не дать результата.

  1. Расчет себестоимости. Это критически важный момент. Правила переноса настроены так, что они ищут данные в регистре сведений СебестоимостьНоменклатуры. Если в вашей базе расчет себестоимости никогда не выполнялся, данных для переноса не будет. Необходимо зайти в раздел «Склад» — «Регламентные операции» и выполнить расчет за все периоды до даты переноса.
  2. Устранение отрицательных остатков. Помощник перехода игнорирует позиции, по которым числится «минус». Проанализируем отчет «Остатки на складах» и «Товары организаций». Если есть отрицательные значения, необходимо провести инвентаризацию и выровнять остатки с помощью автоматического оприходования или документами ОприходованиеТоваров и СписаниеТоваров.
  3. Проверка настроек учета. Перед загрузкой в «Розницу 3.0» убедимся, что в новой базе включены все необходимые опции (проверить их можно путем сравнения значений констант): использование характеристик, серий и нескольких складов, если они использовались в старой базе.

Шаг 2. Техническое исправление модуля обмена

Если после расчета себестоимости проблема сохраняется, перейдем к исправлению программной ошибки в конфигураторе. Разберем ситуацию: в общем модуле МенеджерОбменаЧерезУниверсальныйФормат есть функция, отвечающая за выборку данных для документа «Остатки собственных ТМЦ». Проблема заключается в том, что в запросе идет проверка по организации в документах-регистраторах себестоимости, где этого поля может не быть.

Найдем функцию ПОД_Документ_ОстаткиСобственныхТМЦ_ВыборкаДанных и внесем изменения в текст запроса. Нам необходимо закомментировать условия, которые блокируют выборку при отсутствии связи по организации в регистрах себестоимости. Рассмотрим пример исправленного блока кода:


// Фрагмент измененного запроса в функции ПОД_Документ_ОстаткиСобственныхТМЦ_ВыборкаДанных
// Находим место соединения с регистром себестоимости
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СебестоимостьНоменклатуры КАК СебестоимостьНоменклатуры
| ПО (Остатки.Номенклатура = СебестоимостьНоменклатуры.Номенклатура)
| И (Остатки.Характеристика = СебестоимостьНоменклатуры.Характеристика)
| И (СебестоимостьНоменклатуры.Регистратор В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| Себестоимость.Регистратор
| ИЗ
| РегистрСведений.СебестоимостьНоменклатуры КАК Себестоимость
| ГДЕ 
// Закомментируем проблемные строки, вызывающие отсечение данных
// | Себестоимость.Регистратор.Организация = Остатки.Организация
// | И (Себестоимость.Магазин = Остатки.Склад.Магазин
// | ИЛИ Себестоимость.Магазин = ЗНАЧЕНИЕ(Справочник.Магазины.ПустаяСсылка))
| Себестоимость.Номенклатура = Остатки.Номенклатура
| И Себестоимость.Характеристика = Остатки.Характеристика
| И (Себестоимость.Период <= &ДатаОстатков))

Важно: Комментирование этих строк позволяет программе игнорировать отсутствие связи «Организация-Магазин» в записях себестоимости и подтянуть данные только по номенклатуре и характеристике.

Шаг 3. Альтернативное решение при отсутствии суммовых данных

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

Проанализируем следующий вариант правки в том же модуле:

  1. Заменим ВНУТРЕННЕЕ СОЕДИНЕНИЕ с таблицей себестоимости на ЛЕВОЕ СОЕДИНЕНИЕ. Это позволит выбрать количество товара, даже если сумма по нему не найдена.
  2. В поле выбора суммы (если она критична для создания документа) можно временно подставить фиксированное значение или ноль, чтобы документ Ввод остатков в «Рознице 3.0» прошел по всем проверкам.
  3. Обязательно закомментируем условие ГДЕ ОстаткиСебестоимость.СуммаБезНДС > 0, если оно присутствует в вашем релизе правил обмена.

Особенности перехода для распределенных информационных баз (РИБ)

Разберем вопрос, который часто задают системные администраторы: как перенос затронет магазины, работающие в режиме РИБ? Нужно понимать, что переход с версии 2.3 на 3.0 — это не просто обновление конфигурации, а смена платформенной логики и структуры данных. Синхронизация между «Розницей 2.3» на точках и «Розницей 3.0» в центральном офисе невозможна.

Рассмотрим правильный алгоритм действий для РИБ:

  1. Выполняется полный перенос данных из центрального узла «Розницы 2.3» в новую базу «Розница 3.0».
  2. В новой базе 3.0 заново настраивается структура магазинов и касс.
  3. Для каждой торговой точки создается новый периферийный узел (нарезается новая база).
  4. Старые базы на точках архивируются и прекращают обмен.

Подведем итоги

Проблема с остатками при переходе на новую версию «Розницы» чаще всего связана с механизмом контроля себестоимости в правилах обмена. Чтобы успешно завершить перенос, мы рекомендуем сначала убедиться в чистоте данных в исходной базе (расчет себестоимости, отсутствие минусов), а при необходимости — внести точечные изменения в запрос модуля МенеджерОбменаЧерезУниверсальныйФормат, как было показано выше. Это обеспечит полную передачу данных о товарах и позволит начать работу в новой системе без потери информации о складских запасах.

← На главную