Как отменить влияние документа «Перенос данных» в 1С:ЗУП без его удаления?

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

В практике работы с конфигурацией 1С:Зарплата и управление персоналом (ЗУП) 3.1 часто возникает необходимость внести ручные правки в регистры через технический документ Перенос данных. Однако пользователи и программисты нередко сталкиваются с проблемой: если документ был создан и записан, его влияние на базу данных становится крайне «живучим». Даже попытка пометить документ на удаление или вручную снять флаг Активность в движениях регистра не всегда приводит к желаемому результату — отчеты (особенно по НДФЛ и страховым взносам) продолжают отображать некорректные или уже неактуальные суммы.

В рамках данной статьи мы детально проанализируем, почему стандартные механизмы платформы 1С ведут себя подобным образом в ЗУП, и разберем пошагово, как эффективно «выключить» документ Перенос данных, сохранив его в базе как архивный объект.

Почему стандартная пометка на удаление не помогает?

Рассмотрим природу документа Перенос данных. В отличие от привычных документов начисления или кадровых приказов, этот объект является техническим аналогом документа Корректировка регистров. У него в метаданных свойство Проведение установлено в значение Не разрешить. Это означает, что документ не имеет состояния «Проведен» или «Не проведен» в классическом понимании платформы.

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

  1. В ряде случаев записи в регистрах остаются физически существовать в таблицах базы данных.
  2. Флаг Активность у этих записей может измениться на Ложь, но сами строки не исчезают.
  3. Логика построения отчетов по НДФЛ (например, 2-НДФЛ или 6-НДФЛ) в современных версиях ЗУП 3.1 крайне сложна. Она часто использует запросы не к виртуальным таблицам (которые автоматически отсекают неактивные записи), а к физическим таблицам регистров накопления.

Проанализируем пример: если в программном коде формирования отчета при обращении к таблице РегистрНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ разработчик забыл или намеренно не указал условие ГДЕ Активность = Истина, то отчет выведет данные даже из помеченного на удаление документа. Именно это мы и наблюдаем в типовых конфигурациях.

Способ №1: Полная очистка содержимого документа

Выясним наиболее надежный способ деактивации документа. Если нам нужно, чтобы Перенос данных перестал влиять на 2-НДФЛ и другие отчеты, но при этом сам документ остался в списке для истории, выполним следующие действия:

  1. Откроем документ Перенос данных, который необходимо «отключить».
  2. Перейдем на каждую вкладку регистров, где заполнены данные.
  3. Нажмем сочетание клавиш Ctrl + A (выделить все строки) и нажмем клавишу Del.
  4. Повторим процедуру для всех закладок (НДФЛ, Страховые взносы, Взаиморасчеты и т.д.).
  5. Нажмем кнопку Записать и закрыть.

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

Способ №2: «Архивное копирование» с переносом даты

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

  1. Создадим копию текущего документа Перенос данных (используя команду Скопировать).
  2. В исходном документе (оригинале) удалим все строки во всех табличных частях и запишем его пустым. Теперь он не влияет на базу.
  3. В копии документа, где данные сохранились, изменим Дату документа на очень далекое будущее (например, 31.12.2099).
  4. Пометим эту копию на удаление.

Зачем это нужно? Даже если какой-то запрос в программе игнорирует активность и пометку на удаление, он почти всегда ограничен Периодом отчета. Перенеся дату документа в 2099 год, мы гарантируем, что его движения не попадут ни в один отчет за текущий или прошлые периоды.

Технический анализ: Как это работает в коде

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


НаборНДФЛ = РегистрыНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.СоздатьНаборЗаписей();
НаборНДФЛ.Отбор.Регистратор.Установить(СсылкаНаДокументПереносДанных);
НаборНДФЛ.Записать(); // Записываем пустой набор, очищая регистр

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

Использование альтернативных документов

Проанализируем, стоит ли вообще использовать Перенос данных для текущих корректировок НДФЛ. Специалисты рекомендуют использовать специализированные документы, которые имеют стандартный цикл проведения и корректно обрабатываются системой:

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

Резюме

Подведем итоги нашего исследования. Если вы столкнулись с тем, что документ Перенос данных «фонит» в отчетах даже после пометки на удаление, не пытайтесь играть с флагом Активность. Единственный правильный и безопасный метод — физическая очистка строк во всех табличных частях документа с последующей перезаписью объекта. Это гарантирует удаление соответствующих записей из физических таблиц базы данных и корректное формирование отчетности 2-НДФЛ и 6-НДФЛ.

← На главную