Почему удваивается себестоимость при установке цен в 1С:УТ 11 и как это исправить

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

В процессе работы с программой «1С:Управление торговлей» редакции 11 (а также в «1С:ERP» и «1С:Комплексная автоматизация») пользователи часто сталкиваются с аномальным поведением документа Установка цен номенклатуры. Ситуация выглядит следующим образом: при попытке рассчитать цены на основании себестоимости, программа подставляет значения, которые ровно в два раза (или более) превышают реальные закупочные цены, указанные в документах поступления. При этом дополнительные расходы могут отсутствовать, а перезаполнение документа только усугубляет проблему, увеличивая сумму в геометрической прогрессии.

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

Причина 1. Сбой в логической целостности базы данных

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

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

Выполним следующие действия в режиме «Конфигуратор»:

  1. Создадим резервную копию информационной базы (обязательно!).
  2. Перейдем в меню Администрирование — Тестирование и исправление.
  3. Установим флажки на пунктах:
    • Реиндексация таблиц информационной базы;
    • Проверка логической целостности;
    • Пересчет итогов.
  4. В поле «При наличии ссылок на несуществующие объекты» выберем «Очищать ссылки».
  5. Запустим процесс и дождемся завершения.

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

Причина 2. Дублирование записей в регистре «Реестр документов»

В современных версиях конфигураций на базе ERP-платформы (УТ 11.5, КА 2.5) используется вспомогательный регистр сведений РеестрДокументов. Он предназначен для ускорения построения списков и формирования отчетов. Выясним причину, связанную с этим регистром: иногда при аварийном завершении сеанса или сбоях при проведении документа Приобретение товаров и услуг, в этом регистре могут появиться две записи на одну и ту же ссылку документа.

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	РеестрДокументов.Ссылка КАК Ссылка,
    |	КОЛИЧЕСТВО(РеестрДокументов.Ссылка) КАК КоличествоЗаписей
    |ИЗ
    |	РегистрСведений.РеестрДокументов КАК РеестрДокументов
    |СГРУППИРОВАТЬ ПО
    |	РеестрДокументов.Ссылка
    |ИМЕЮЩИЕ
    |	КОЛИЧЕСТВО(РеестрДокументов.Ссылка) > 1";

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    Сообщить("Обнаружены дубли в реестре документов!");
КонецЕсли;

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

Причина 3. Особенности ордерной схемы документооборота

Разберем ситуацию, когда используется ордерный склад. Цепочка документов часто выглядит так: Заказ поставщику -> Приходный ордер на товары -> Приобретение товаров и услуг.

Важно понимать, что в УТ 11 фактическое поступление товара на склад (количественный учет) и финансовое отражение (стоимостный учет) разделены. Если Приходный ордер на товары оформлен раньше, чем Приобретение товаров и услуг, и при этом в системе есть незавершенные корректировки или неоформленные накладные по другим ордерам, механизм расчета себестоимости может интерпретировать остатки некорректно.

Проанализируем следующие моменты:

Причина 4. Некорректная настройка схемы компоновки данных (СКД) в виде цен

Посмотрим на настройки самого Вида цен. Когда мы выбираем способ задания цены «Заполнять по данным ИС», система использует предопределенные схемы компоновки данных. Рассмотрим подробнее, как это работает: запрос СКД обращается к виртуальным таблицам остатков и оборотов регистров СебестоимостьТоваров или ВыручкаИСебестоимостьПродаж.

Если в настройках вида цен указана выборка «Максимальная цена за период» или «Средняя цена», а за один день (или даже секунду) произошло несколько движений по одному и тому же документу (например, проведение и корректировка), СКД может некорректно сгруппировать данные.

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

Причина 5. «Мертвые» строки в регистре себестоимости

Иногда проблема кроется в регистре накопления Себестоимость товаров. Это может произойти, если документ был проведен, затем отменен, но его движения по какой-то причине остались в таблицах базы данных (ошибка СУБД или платформы).

Выясним причину с помощью универсального отчета:

  1. Откройте Администрирование — Обслуживание — Отчеты и обработки — Универсальный отчет.
  2. Выберите тип объекта «Регистр накопления», имя объекта «Себестоимость товаров», таблицу «Движения с субконто».
  3. Установите фильтр по проблемной номенклатуре.
  4. Проанализируйте колонки «Стоимость» и «Доп. расходы». Если вы видите строки от документов, которые были удалены или помечены на удаление — это и есть причина удвоения.

В такой ситуации поможет только программная очистка движений или полное перепроведение документов за период с помощью обработки «Групповое изменение реквизитов» (с включением режима «Выполнять в транзакции» и «Отрабатывать механизмы проведения»).

Резюме и план действий

Для исправления проблемы удвоения себестоимости рекомендуем придерживаться следующего алгоритма:

  1. Очистить кэш: Исключите вероятность того, что вы видите старые данные из локального кэша пользователя.
  2. Выполнить ТИИ: Запустите тестирование и исправление с пересчетом итогов — это помогает в 80% случаев.
  3. Проверить реестр документов: Убедитесь в отсутствии дублирующих записей в системном регистре РеестрДокументов.
  4. Анализ регистра себестоимости: С помощью запроса или универсального отчета убедитесь, что сумма в регистре соответствует сумме в документе Приобретение товаров и услуг.
  5. Проверка цепочки документов: Убедитесь, что ордер и накладная корректно «сшиты» между собой и не создают избыточных движений по партиям.

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

← На главную