Как отменить проведение документов в 1С:ЗУП, сохраняя целостность данных?

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

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

Прежде всего, давайте разберем общие принципы отмены проведения документов в 1С.

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

Теперь перейдем к специфике 1С:ЗУП, где отмена проведения имеет свои особенности.

Решение 1: Использование стандартных механизмов отмены проведения

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

Пошаговое выполнение:

  1. Открытие документа: Откройте необходимый документ в режиме просмотра или редактирования.
  2. Кнопка "Отменить проведение": Найдите кнопку "Отменить проведение". Она часто расположена в верхней части формы документа или в меню "Еще". Нажмите на нее.
  3. Подтверждение: Система может запросить подтверждение действия. Подтвердите отмену проведения.

Особенности в ЗУП:

Решение 2: Программная отмена проведения с использованием ОбменДанными.Загрузка = Истина

Иногда стандартные методы не подходят, и требуется программная отмена проведения. Рассмотрим этот подход подробнее, так как он требует особой осторожности.

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

Что делает ОбменДанными.Загрузка = Истина?

Установка свойства ОбменДанными.Загрузка = Истина означает, что запись документа производится в рамках загрузки данных, а не обычной записи. В этом режиме отключаются некоторые проверки и бизнес-логика объекта, чтобы данные загружались "как есть".

Пример кода:

Чтобы программно отменить проведение документа, вы можете использовать следующий код:


ДокументОбъект.ОбменДанными.Загрузка = Истина;
ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);

Здесь ДокументОбъект — это ссылка на объект документа, который вы хотите отменить. Метод Записать() с параметром РежимЗаписиДокумента.ОтменаПроведения выполняет действие отмены проведения.

Риски использования:

Использование этого режима для отмены проведения вручную может быть рискованным, так как при этом не всегда корректно отрабатывают обработчики событий и подписки, которые могли бы обеспечить целостность данных. Если на многих документах отключено автоматическое удаление движений при отмене проведения, то при использовании ОбменДанными.Загрузка = Истина может что-то остаться в регистрах, хотя документ будет помечен как непроведенный.

Важно: Вызывающая сторона, устанавливая ОбменДанными.Загрузка = Истина, берет на себя ответственность за целостность данных.

Решение 3: Отмена проведения через групповую обработку

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

Стандартный функционал: В 1С существует стандартная функция "Проведение документов", а также возможность групповой отмены проведения.

Пошаговое выполнение:

  1. Открытие журнала документов: Перейдите в журнал документов, где находятся документы, которые вы хотите отменить.
  2. Выделение документов: Выделите необходимые документы, используя клавиши Shift (для выделения диапазона) или Ctrl (для выборочного выделения).
  3. Контекстное меню: Щелкните правой кнопкой мыши по выделенным документам или используйте меню "Все действия".
  4. Выбор действия: Выберите пункт "Отменить проведение".

Применимость в ЗУП:

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

Решение 4: Механизмы исправления прошлых периодов в ЗУП

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

1. Сторнирование документов:

2. Механизм исправления документов:

3. Механизм перерасчета:

4. Документ "Сторнирование начислений":

5. Отмена увольнения:

Пример из практики ЗУП:

Чтобы не править напрямую документы прошлых периодов, на их основании вводятся такие же документы, но с маркировкой "испр.". При этом родительский документ запрещается к правке/распроведению. Это сделано для того, чтобы править прошлые ошибки в текущем периоде. Причём документ исправления заносит все движения родителя в регистры исправлений. Если по какой-то причине отменить или распровести документ исправления, то алгоритм ЗУПа не формирует заново движения родителя, а тупо копипастит из этих регистров исправлений.

Дополнительные рекомендации

Мы рассмотрели различные подходы к отмене проведения документов в 1С:ЗУП, начиная от стандартных методов и заканчивая программными решениями и специфическими механизмами исправления прошлых периодов. Помните, что каждый метод имеет свои особенности и риски, и выбор наиболее подходящего зависит от конкретной ситуации и вашей конфигурации. Всегда действуйте осторожно и, по возможности, тестируйте изменения на копии базы.

← К списку