При работе в программе "1С:Зарплата и управление персоналом" пользователи часто сталкиваются с ситуацией, когда необходимо скорректировать уже введенный документ "Индивидуальный график". Логичным действием кажется использование команды "Исправить", чтобы создать новый документ-исправление и сохранить историю изменений (так называемый "аудиторский след"). Однако при попытке провести такой документ в том же месяце, в котором был создан исходный, система выдает ошибку: "Для сотрудника ... уже введен документ Индивидуальный график".
Давайте разберемся, почему так происходит, какие стандартные решения предлагает система и как можно обойти это ограничение, если это критически необходимо.
Описанное поведение — это не ошибка, а заложенная разработчиками методология работы с учетными документами в 1С. Основная идея заключается в разделении понятий "редактирование" и "исправление".
Таким образом, запрет на ввод исправления в том же месяце является системной защитой, направленной на поддержание корректной и однозначной учетной методики.
Рассмотрим два методологически верных способа решения задачи в рамках стандартного функционала программы.
1. Редактирование исходного документа и версионирование
Это самый простой и рекомендуемый способ для корректировок в текущем месяце. Вы просто открываете первоначальный документ "Индивидуальный график" и вносите в него необходимые изменения.
Для сохранения "аудиторского следа" и отслеживания истории изменений можно воспользоваться встроенным механизмом версионирования объектов. Если он включен в настройках программы, система будет автоматически сохранять копию документа при каждой его записи. В любой момент можно будет открыть историю изменений и посмотреть, кто, когда и какие данные менял.
Важный момент: версионирование сохраняет историю изменений одного и того же объекта, но не создает цепочку связанных документов, как этого хотел автор вопроса. Тем не менее, для большинства задач по отслеживанию изменений этого достаточно.
2. Ввод документа-исправления в следующем месяце
Если текущий месяц уже закрыт или вы принципиально хотите использовать механизм исправлений, то корректным способом будет ввод документа-исправления датой следующего месяца. Например, если нужно исправить график за май, документ-исправление создается в июне. Программа при начислении зарплаты за июнь учтет эти изменения и автоматически выполнит перерасчет за май.
Внимание: Данный способ связан с изменением стандартной конфигурации программы. Выполнять его следует, только если вы полностью понимаете, что делаете. Вмешательство в код может привести к непредсказуемым последствиям при расчетах, формировании отчетности или после очередного обновления программы. Все изменения вы вносите на свой страх и риск!
Если стандартные методы не подходят и требуется создать документ-исправление именно в текущем месяце, можно программно отключить проверку на уникальность документа. Проанализируем, как это сделать.
Ошибка возникает из-за проверки, которая выполняется в общем модуле. Пользователь на форуме выяснил, что за эту проверку отвечает процедура в модуле УчетРабочегоВремениРасширенный.
Пошаговая инструкция:
УчетРабочегоВремениРасширенный.ПроверитьУникальностьВводаИтоговыхДанных.// в начале строки.
// Найдите строку, похожую на эту, в соответствующей процедуре проведения документа
// и закомментируйте ее:
//
// УчетРабочегоВремениРасширенный.ПроверитьУникальностьВводаИтоговыхДанных(МенеджерВТ, Ссылка, ПериодРегистрации, ОписанияОшибокВводаВремени, Истина);
После сохранения конфигурации и обновления базы данных проверка будет отключена, и программа позволит провести документ-исправление в том же месяце, что и исходный документ.
Как только вы проведете документ-исправление, система корректно отработает сторнирование. В движениях регистра накопления ДанныеИндивидуальныхГрафиковСотрудников появятся:
При последующем заполнении документа "Табель" или при расчете зарплаты данные будут браться уже с учетом этих исправлений, то есть результат будет корректным. Однако такой подход несет в себе скрытые риски:
Таким образом, мы рассмотрели три подхода к решению задачи исправления "Индивидуального графика":