Почему 1С требует переоценку при перемещении на розничный склад и как исправить ошибку "Не задана цена АТТ"

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

Рассмотрим классическую техническую проблему, с которой часто сталкиваются пользователи и разработчики систем на обычных формах 1С (таких как «Управление торговлей 10.3», «Управление производственным предприятием 1.3» или «Комплексная автоматизация 1.1»). При попытке провести документ Перемещение товаров (или «Перемещение ТМЗ») на розничный склад программа блокирует проведение и выдает ошибку:

В строке номер "1" табличной части "Товары" для номенклатуры ... на складе ...: Не задана цена АТТ. Необходимо выполнить переоценку!

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

Выясняем причину: как работает механизм контроля цен АТТ

При перемещении или поступлении товаров на склад с видом «Розничный» (в терминологии 1С это АТТ — Автоматизированная торговая точка) программа обязана вести учет не только в количественном выражении, но и в продажных (розничных) ценах. Эти цены хранятся в периодическом регистре сведений Цены номенклатуры в рознице (или Цены АТТ).

Когда документ перемещения проверяет наличие цен, он делает запрос к регистру сведений по трем ключевым разрезам аналитики:

  1. Номенклатура (конкретная позиция товара);
  2. Склад (конкретная розничная точка);
  3. Единица измерения (важнейший элемент, из-за которого чаще всего и происходит сбой).

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

Проанализируем программный код общего модуля УправлениеРозничнойТорговлей, который отвечает за эту проверку:


// Фрагмент алгоритма проверки цен АТТ перед проведением перемещения
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ТоварыДокумента.Номенклатура КАК Номенклатура,
    |	ТоварыДокумента.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    |	ЕСТЬNULL(ЦеныРозничные.Цена, 0) КАК Цена
    |ИЗ
    |	ВременнаяТаблицаТоваров КАК ТоварыДокумента
    |	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыВРознице.СрезПоследних(&Период, Склад = &Склад) КАК ЦеныРозничные
    |		ПО ТоварыДокумента.Номенклатура = ЦеныРозничные.Номенклатура
    |		И ТоварыДокумента.ЕдиницаИзмерения = ЦеныРозничные.ЕдиницаИзмерения";

Если поле Цена в результате запроса оказывается равным нулю, проведение отменяется с вызовом исключения.

Разберем подробнее четыре основные причины, почему возникает эта рассинхронизация.

---

Причина 1. Слет и дублирование единиц измерения при обменах данными

Это наиболее коварная и распространенная техническая проблема. Справочник ЕдиницыИзмерения в 1С является подчиненным по отношению к справочнику Номенклатура. Это значит, что для каждого товара создается свой собственный элемент единицы измерения (например, «шт.»), имеющий уникальный внутренний идентификатор (GUID) в базе данных.

При обмене данными (например, между «1С:Розница» и «1С:Управление торговлей» с использованием правил «Конвертации данных») может произойти сбой синхронизации. Если правила обмена настроены некорректно, при очередной загрузке документов программа создает **дубликат** единицы измерения для товара с новым GUID и перезаписывает реквизит ЕдиницаХраненияОстатков в карточке номенклатуры.

В результате складывается следующая картина:

---

Причина 2. Нулевой или незаполненный коэффициент единицы измерения

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

---

Причина 3. Нарушение хронологии документов

Розничные цены в АТТ действуют с точностью до секунды. Если документ Переоценка товаров в рознице и документ Перемещение товаров созданы в один день, крайне важно их взаимное время проведения. Если перемещение по времени записано хотя бы на одну секунду раньше, чем переоценка (например, перемещение в 12:00:00, а переоценка в 12:00:01), то в момент проведения перемещения розничная цена еще официально «не существует» для системы.

---

Причина 4. Несовпадение реквизитов организации или склада

Учет розничных цен ведется в строгом разрезе складов, а в некоторых конфигурациях (при определенных настройках учетной политики) — и в разрезе организаций. Ошибка возникнет, если:

---

Разберем по шагам методы решения проблемы

Если вы столкнулись с подобным поведением системы, последовательно примените следующие шаги для исправления ситуации.

Шаг 1. Поиск и слияние дублирующихся единиц измерения

Для устранения дублей, возникших из-за некорректного обмена, выполним следующие действия:

  1. Откроем стандартную обработку «Поиск и удаление дублей» (в обычных формах её можно найти на диске ИТС или в составе встроенных сервисных обработок).
  2. В поле «Искать в:» выберем справочник ЕдиницыИзмерения.
  3. В правилах отбора обязательно укажем отбор по конкретному владельцу (номенклатуре), у которой возникла проблема, либо запустим поиск по всему справочнику, установив критерий совпадения по наименованию и владельцу.
  4. После нахождения дублирующихся элементов («шт.» и «шт.» у одного товара) выполним операцию объединения. Программа автоматически заменит все битые ссылки в документах перемещения и переоценки на одну правильную единицу измерения.

Шаг 2. Исправление правил обмена в Конвертации Данных

Чтобы предотвратить повторное появление дублей при последующих обменах, необходимо скорректировать правила конвертации объектов (ПКО):

  1. Откроем правила обмена в конфигурации «Конвертация данных 2.1».
  2. Найдем ПКО для справочника ЕдиницыИзмерения.
  3. Перейдем на вкладку «Настройки поиска» и установим флаги поиска по полям: Владелец (Номенклатура) и ЕдиницаПоКлассификатору (или Наименование). Поиск только по уникальному идентификатору (GUID) в данном случае часто приводит к дублированию, так как в разных базах GUID подчиненных единиц изначально различаются.
  4. В ПКО справочника Номенклатура для свойств ЕдиницаХраненияОстатков и ЕдиницаДляОтчетов убедимся, что установлены правила сопоставления по вышеуказанным полям поиска.

Шаг 3. Проверка коэффициентов в документе перемещения

Проанализируем табличную часть перемещения:

  1. Нажмите правой кнопкой мыши на табличной части «Товары» документа «Перемещение товаров» и выберите пункт «Настройка списка».
  2. Найдите и установите флаг напротив колонки Коэффициент, чтобы вывести её на форму.
  3. Проверьте значения в этой колонке. Если значение пустое или равно нулю, перевыберите единицу измерения в строке документа. Коэффициент должен автоматически заполниться базовым значением (обычно это «1» для штучных товаров).

Шаг 4. Наведение порядка в хронологии документов

Если аналитика заполнена верно, но документ все равно не проводится, скорректируем время документов:

  1. Откроем документ Переоценка товаров в рознице и изменим его время, переведя на начало дня (например, на 00:00:00). Проведем документ.
  2. Откроем документ Перемещение товаров и установите его время на текущее или на конец дня (например, 23:59:59). Проведем документ повторно.

Шаг 5. Альтернативный вариант (упрощение схемы учета)

Если на вашем предприятии розничный склад используется преимущественно для внутреннего перемещения и списания товаров, и вам не требуется жесткий контроль розничных цен и маржинальности на уровне розничных складов АТТ:

  1. Перейдем в справочник Склады (места хранения).
  2. Найдем целевой склад и откроем его карточку.
  3. Изменим значение реквизита Вид склада со значения «Розничный» на «Оптовый».

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

← На главную