Как правильно соединить регистр УчетЗатратРегл и Регистр бухгалтерии в 1С:УПП 1.3 для поиска расхождений?

Программист 1С v8.3 (Обычные формы) Управленческий учет Промышленность, строительство и АПК
← На главную

В конфигурации "Управление производственным предприятием" (УПП 1.3) при использовании режима РАУЗ (Расширенная аналитика учета затрат) часто возникает задача сверки данных между контуром учета затрат и стандартным бухгалтерским учетом. Данные в этих регистрах могут расходиться из-за ручных операций, особенностей закрытия месяца или ошибок в последовательности проведения документов.

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

1. Особенности архитектуры РАУЗ в УПП

Главная сложность заключается в том, что регистр накопления УчетЗатратРегл (как и управленческий УчетЗатрат) не содержит привычных измерений, таких как "Номенклатура", "Склад" или "Счет учета". Вместо этого используются ссылочные ключи аналитики.

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

  1. РегистрСведений.АналитикаВидаУчета — отвечает за место хранения и условия учета ("Где?" и "Как?"). Содержит Склад, Счет учета, Организацию, Подразделение.
  2. РегистрСведений.АналитикаУчетаЗатрат — отвечает за объект учета ("Что?"). Содержит Номенклатуру (поле Затрата), Характеристику, Серию.

2. Получение данных из РАУЗ (УчетЗатратРегл)

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


ВЫБРАТЬ
    РегистрАналитикаВидаУчета.Склад КАК Склад,
    РегистрАналитикаУчетаЗатрат.Затрата КАК Номенклатура,
    РегистрАналитикаВидаУчета.СчетУчета КАК СчетУчета,
    УчетЗатратРеглОстатки.КоличествоОстаток КАК КоличествоРАУЗ,
    УчетЗатратРеглОстатки.СтоимостьОстаток КАК СуммаРАУЗ
ПОМЕСТИТЬ ВТ_ДанныеРАУЗ
ИЗ
    РегистрНакопления.УчетЗатратРегл.Остатки(&Период, ) КАК УчетЗатратРеглОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаВидаУчета КАК РегистрАналитикаВидаУчета
        ПО УчетЗатратРеглОстатки.АналитикаВидаУчета = РегистрАналитикаВидаУчета.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаЗатрат КАК РегистрАналитикаУчетаЗатрат
        ПО УчетЗатратРеглОстатки.АналитикаУчетаЗатрат = РегистрАналитикаУчетаЗатрат.Ссылка
ГДЕ
    РегистрАналитикаВидаУчета.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчета.МПЗ)
    И РегистрАналитикаВидаУчета.Склад = &ВыбСклад
    И РегистрАналитикаВидаУчета.СчетУчета = &ВыбСчет
;

Важные моменты:

3. Получение данных из Регистра Бухгалтерии

Теперь получим данные бухгалтерского учета. Здесь важно помнить, что аналитика (Субконто) хранится в полях Субконто1, Субконто2 и т.д. Порядок субконто зависит от настроек Плана счетов. Для большинства счетов учета ТМЦ (10, 41, 43) обычно Номенклатура — это Субконто1, а Склад — Субконто2 (или наоборот, нужно проверять настройки конкретной базы).


ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто2 КАК Склад, -- Предполагаем, что Склад это Субконто2
    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура, -- А Номенклатура это Субконто1
    ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоБУ,
    ХозрасчетныйОстатки.СуммаОстаток КАК СуммаБУ
ПОМЕСТИТЬ ВТ_ДанныеБУ
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &ВыбСчет, , 
            Субконто2 = &ВыбСклад) КАК ХозрасчетныйОстатки
;

4. Сравнение данных и поиск расхождений

Самая распространенная ошибка при сверке — использование ЛЕВОЕ СОЕДИНЕНИЕ одной таблицы к другой. Если товара нет в РАУЗ, но он есть в БУ (например, введен "Операцией вручную"), левое соединение не покажет эту разницу.

Наиболее надежный и производительный способ в 1С — использовать объединение запросов (метод ОБЪЕДИНИТЬ ВСЕ) с инверсией знака для одной из таблиц. Затем мы сгруппируем данные и оставим только те строки, где итоговая сумма не равна нулю.

Сформируем итоговый запрос, объединяющий две временные таблицы:


ВЫБРАТЬ
    СводнаяТаблица.Склад,
    СводнаяТаблица.Номенклатура,
    СУММА(СводнаяТаблица.КоличествоРАУЗ) КАК КоличествоРАУЗ,
    СУММА(СводнаяТаблица.СуммаРАУЗ) КАК СуммаРАУЗ,
    СУММА(СводнаяТаблица.КоличествоБУ) КАК КоличествоБУ,
    СУММА(СводнаяТаблица.СуммаБУ) КАК СуммаБУ,
    СУММА(СводнаяТаблица.КоличествоРАУЗ - СводнаяТаблица.КоличествоБУ) КАК РазницаКоличество,
    СУММА(СводнаяТаблица.СуммаРАУЗ - СводнаяТаблица.СуммаБУ) КАК РазницаСумма
ИЗ
    (
    -- Выбираем данные РАУЗ
    ВЫБРАТЬ
        Т1.Склад,
        Т1.Номенклатура,
        Т1.КоличествоРАУЗ,
        Т1.СуммаРАУЗ,
        0 КАК КоличествоБУ,
        0 КАК СуммаБУ
    ИЗ
        ВТ_ДанныеРАУЗ КАК Т1
    
    ОБЪЕДИНИТЬ ВСЕ
    
    -- Выбираем данные БУ
    ВЫБРАТЬ
        Т2.Склад,
        Т2.Номенклатура,
        0,
        0,
        Т2.КоличествоБУ,
        Т2.СуммаБУ
    ИЗ
        ВТ_ДанныеБУ КАК Т2
    ) КАК СводнаяТаблица

СГРУППИРОВАТЬ ПО
    СводнаяТаблица.Склад,
    СводнаяТаблица.Номенклатура

ИМЕЮЩИЕ
    (СУММА(СводнаяТаблица.КоличествоРАУЗ - СводнаяТаблица.КоличествоБУ) <> 0
    ИЛИ СУММА(СводнаяТаблица.СуммаРАУЗ - СводнаяТаблица.СуммаБУ) <> 0)

Почему могут возникать расхождения?

Если запрос показал данные, проанализируем возможные причины:

  1. Ручные операции: Документ "Операция (бух. и нал. учет)" делает записи в регистр бухгалтерии, но не создает движений в регистре УчетЗатратРегл. В УПП следует избегать ручных операций по счетам учета МПЗ.
  2. НДС: В регистре бухгалтерии на счетах 10, 41 сумма обычно хранится без НДС. В РАУЗ ресурс Стоимость может включать или не включать НДС в зависимости от настроек учетной политики ("Оценка МПЗ при выбытии"). Проверьте, корректно ли вы сравниваете суммы.
  3. Временная разница: РАУЗ окончательно формирует стоимость документом "Расчет себестоимости выпуска", тогда как в бухгалтерском учете проводки могут формироваться по плановым ценам или средней в момент проведения накладных. Сверку лучше проводить после полного закрытия месяца.
← На главную