В практике работы с конфигурацией 1С:Зарплата и управление персоналом (ЗУП) 3.1 часто возникает необходимость внести ручные правки в регистры через технический документ Перенос данных. Однако пользователи и программисты нередко сталкиваются с проблемой: если документ был создан и записан, его влияние на базу данных становится крайне «живучим». Даже попытка пометить документ на удаление или вручную снять флаг Активность в движениях регистра не всегда приводит к желаемому результату — отчеты (особенно по НДФЛ и страховым взносам) продолжают отображать некорректные или уже неактуальные суммы.
В рамках данной статьи мы детально проанализируем, почему стандартные механизмы платформы 1С ведут себя подобным образом в ЗУП, и разберем пошагово, как эффективно «выключить» документ Перенос данных, сохранив его в базе как архивный объект.
Рассмотрим природу документа Перенос данных. В отличие от привычных документов начисления или кадровых приказов, этот объект является техническим аналогом документа Корректировка регистров. У него в метаданных свойство Проведение установлено в значение Не разрешить. Это означает, что документ не имеет состояния «Проведен» или «Не проведен» в классическом понимании платформы.
Разберем ситуацию: когда мы нажимаем кнопку «Записать», документ выступает в роли Регистратора. Он напрямую записывает набор записей в соответствующие регистры накопления или сведения. При установке пометки на удаление платформа должна инициировать очистку движений, но в ЗУП для этого типа документа механизм срабатывает специфично:
Активность у этих записей может измениться на Ложь, но сами строки не исчезают.Проанализируем пример: если в программном коде формирования отчета при обращении к таблице РегистрНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ разработчик забыл или намеренно не указал условие ГДЕ Активность = Истина, то отчет выведет данные даже из помеченного на удаление документа. Именно это мы и наблюдаем в типовых конфигурациях.
Выясним наиболее надежный способ деактивации документа. Если нам нужно, чтобы Перенос данных перестал влиять на 2-НДФЛ и другие отчеты, но при этом сам документ остался в списке для истории, выполним следующие действия:
Перенос данных, который необходимо «отключить».Ctrl + A (выделить все строки) и нажмем клавишу Del.Важный момент: Когда мы записываем пустой документ, система 1С выполняет запись пустого набора записей по данному регистратору. Старые данные в регистрах физически заменяются «пустотой». Теперь, даже если запросы отчетов будут обращаться к физическим таблицам, они просто не найдут строк, связанных с этим документом.
Иногда нам требуется сохранить данные «на всякий случай», чтобы иметь возможность подсмотреть, какие именно корректировки вносились ранее. Рассмотрим алгоритм действий в этой ситуации:
Перенос данных (используя команду Скопировать).Зачем это нужно? Даже если какой-то запрос в программе игнорирует активность и пометку на удаление, он почти всегда ограничен Периодом отчета. Перенеся дату документа в 2099 год, мы гарантируем, что его движения не попадут ни в один отчет за текущий или прошлые периоды.
Посмотрим на ситуацию глазами программиста. Документ Перенос данных управляет наборами записей. Чтобы программно очистить движения документа, не удаляя его, можно воспользоваться простым кодом в обработке:
НаборНДФЛ = РегистрыНакопления.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.СоздатьНаборЗаписей();
НаборНДФЛ.Отбор.Регистратор.Установить(СсылкаНаДокументПереносДанных);
НаборНДФЛ.Записать(); // Записываем пустой набор, очищая регистр
Этот код делает ровно то же самое, что и ручное удаление строк в форме документа: он записывает в базу данных информацию о том, что по данному регистратору движений больше нет. Именно отсутствие записей в физической таблице является единственным «железобетонным» способом отмены влияния в ЗУП.
Проанализируем, стоит ли вообще использовать Перенос данных для текущих корректировок НДФЛ. Специалисты рекомендуют использовать специализированные документы, которые имеют стандартный цикл проведения и корректно обрабатываются системой:
Операция учета по НДФЛ.Операция учета взносов.Перерасчеты или Корректировка выплаты.В этих документах механизм «Отмены проведения» работает штатно и предсказуемо, очищая движения во всех связанных регистрах, включая скрытые аналитические таблицы, которые ЗУП использует для кэширования данных отчетности. Для такой задачи можно использовать инструмент для управляемой корректировки и сторнирования движений документов в ЗУП.
Подведем итоги нашего исследования. Если вы столкнулись с тем, что документ Перенос данных «фонит» в отчетах даже после пометки на удаление, не пытайтесь играть с флагом Активность. Единственный правильный и безопасный метод — физическая очистка строк во всех табличных частях документа с последующей перезаписью объекта. Это гарантирует удаление соответствующих записей из физических таблиц базы данных и корректное формирование отчетности 2-НДФЛ и 6-НДФЛ.