В процессе работы с программой 1С:Зарплата и Управление Персоналом (ЗУП) версии 3.1 пользователи иногда сталкиваются с неожиданной проблемой: в позиции штатного расписания на вкладке «Дополнительно» в разделе «Отпуск» основной отпуск отображается дважды. Это дублирование наблюдается только в форме отображения, тогда как в документах «Утверждение штатного расписания» и «Изменение штатного расписания» указан всего один отпуск. Ситуация усугубляется тем, что даже отмена проведения всех документов по штатному расписанию не устраняет проблему, и позиции отпуска остаются задвоенными, а удалить их стандартными средствами невозможно. Давайте рассмотрим, как мы можем выяснить причину этой ошибки и устранить ее.
Прежде чем перейти к решению, нам важно тщательно проанализировать характер проблемы. Мы видим, что задвоение отпусков проявляется именно в форме отображения позиции штатного расписания. Это значит, что первичные данные в документах, скорее всего, корректны. Такой характер ошибки часто указывает на проблемы в запросах, которые формируют данные для отображения в пользовательском интерфейсе, или на некорректное взаимодействие с механизмами хранения истории изменений.
В нашем случае, при создании нового документа изменения штатного расписания, в него первоначально подтягивается корректная информация с одним отпуском. Однако после проведения этого документа, или даже при отмененном проведении всех связанных документов, в самой позиции штатного расписания по-прежнему отображаются два отпуска. Это парадоксальное поведение наводит нас на мысль о том, что проблема кроется глубже, возможно, на уровне регистров или в алгоритмах работы с историей изменений.
Возможные причины, которые мы будем рассматривать:
Ведется история изменений штатного расписания установлен, все изменения фиксируются документами Утверждение штатного расписания и Изменение штатного расписания. Включение или выключение этой настройки может приводить к перестроению данных, что иногда помогает устранить ошибки отображения, как это произошло в данном случае.Управление итогами с установкой максимально ранней начальной границы.Чтобы понять суть проблемы и выбрать правильное решение, нам необходимо провести несколько диагностических шагов. Давайте посмотрим, какие инструменты мы можем использовать для этого, чтобы максимально точно локализовать источник ошибки.
Проверка документов «Изменение штатного расписания» и «Утверждение штатного расписания»:
В первую очередь, мы тщательно убедимся, что в самих документах, которыми вносились изменения в штатное расписание, не содержится задвоений. Мы открываем документы Изменение штатного расписания и Утверждение штатного расписания, относящиеся к проблемной позиции. Если, как в нашем случае, в табличной части этих документов для соответствующей позиции штатного расписания указан только один вид отпуска с корректным количеством дней, это подтверждает, что проблема не в первичных данных, которые мы вводим, а в том, как они хранятся в регистрах или отображаются в пользовательском интерфейсе.
Анализ регистра сведений «История ежегодных отпусков по штатному расписанию»:
Мы обратимся к регистру сведений История ежегодных отпусков по штатному расписанию. Этот регистр предназначен для хранения сведений о ежегодных отпусках, полагающихся по каждой позиции штатного расписания, с учетом истории их изменений. Нам необходимо выяснить, есть ли двоение записей именно в этом регистре для проблемной позиции:
Изменение штатного расписания и Утверждение штатного расписания, которые относятся к данной позиции. Затем мы открываем регистр сведений История ежегодных отпусков по штатному расписанию и фильтруем его по проблемной позиции. В идеале, после отмены проведения, записи об отпусках по этой позиции либо должны отсутствовать, либо должны отражать ее самое раннее, корректное состояние до возникновения ошибки.Изменение штатного расписания для этой позиции. После этого мы снова проверяем регистр История ежегодных отпусков по штатному расписанию. Если в нем появляется только одна запись, соответствующая проведенному документу, это служит сильным доказательством того, что фактического двоения в базовом регистре, который отслеживает историю, нет. Это укрепляет нашу гипотезу о том, что проблема кроется либо в отображении, либо в другом, возможно, вспомогательном регистре, участвующем в формировании данных для интерфейса.Идентификация задвоенных отпусков по уникальным идентификаторам (GUID):
Для точного определения того, являются ли задублированные отпуска одним и тем же объектом или разными, нам необходимо использовать их уникальные идентификаторы (GUID – Globally Unique Identifier). Каждый объект в системе 1С (справочник, документ, элемент регистра) имеет свой уникальный идентификатор. Если GUID двух отображаемых отпусков совпадают, это однозначно указывает на то, что один и тот же отпуск (один и тот же элемент справочника ВидыОтпусков) отображается дважды, а не два разных отпуска.
Как мы можем получить GUID для диагностики?
ВЫБРАТЬ
ШтатноеРасписаниеОтпуска.ВидОтпуска.УникальныйИдентификатор КАК GUIDВидаОтпуска,
ШтатноеРасписаниеОтпуска.ВидОтпуска.Наименование КАК НаименованиеОтпуска,
ШтатноеРасписаниеОтпуска.КоличествоДнейОтпуска КАК КоличествоДней
ИЗ
РегистрСведений.ШтатноеРасписаниеСрезПоследних.ВидыОтпусков КАК ШтатноеРасписаниеОтпуска
ГДЕ
ШтатноеРасписаниеОтпуска.ПозицияШтатногоРасписания = &ТекущаяПозицияШР
Мы должны выполнить этот запрос, подставив вместо &ТекущаяПозицияШР ссылку на проблемную позицию штатного расписания. В результате мы ожидаем получить список видов отпусков, фактически привязанных к этой позиции, с указанием их GUID. Если мы увидим две записи в результате запроса с абсолютно одинаковыми GUID и наименованиями, но при этом в интерфейсе они представлены как две отдельные строки, это подтвердит нашу гипотезу о двоении отображения одного и того же объекта.
Проверка прав пользователя и дат запрета изменений:
Если в процессе диагностики мы обнаруживаем, что строки с отпусками в позиции штатного расписания неактивны для редактирования или удаления, нам следует провести проверку, чтобы исключить стандартные блокировки:
В нашем случае, проверка показала, что у пользователя установлены полные права и нет активных дат запрета изменений, что позволило исключить эти факторы как причину невозможности удаления задвоенных строк.
После проведения всесторонней диагностики мы можем перейти к подтвержденному и эффективному решению проблемы, которое помогло пользователю в исходной теме. Это решение основано на временном отключении и повторном включении механизма ведения истории изменений штатного расписания. Этот механизм, являясь ключевым для правильной работы ШР, при его временном отключении и повторном включении может инициировать перестроение внутренних данных, что часто помогает устранить подобные ошибки отображения.
Создание резервной копии информационной базы:
Это критически важный и обязательный шаг! Прежде чем выполнять любые манипуляции с настройками или данными, особенно такие, которые затрагивают ключевые механизмы конфигурации, мы обязательно должны создать полную и актуальную резервную копию вашей информационной базы. Это позволит нам восстановить систему в случае непредвиденных проблем или нежелательных результатов наших действий.
Переход к настройкам кадрового учета:
Мы открываем раздел Настройка в главном меню программы 1С:ЗУП. Это стандартный раздел для глобальных параметров конфигурации.
Затем переходим в пункт Кадровый учет, где собраны настройки, касающиеся управления персоналом и штатного расписания.
Временное отключение истории изменений штатного расписания:
В разделе Кадровый учет мы находим блок, посвященный штатному расписанию. Здесь мы должны снять флажок рядом с опцией Ведется история изменений штатного расписания. Эта опция контролирует, будет ли система вести детализированную историю всех изменений, вносимых в штатное расписание.
Программа может задать уточняющие вопросы о подтверждении действия или предложить сохранить изменения. Мы подтверждаем наши действия, чтобы изменения вступили в силу. Отключение этого механизма может запустить внутренние процессы по перестроению или очистке временных данных, связанных с историей.
Ожидание применения изменений:
После снятия флажка программа может выполнить некоторые внутренние перестроения данных, касающиеся штатного расписания. Мы даем ей достаточно времени для завершения этих процессов. Чтобы убедиться, что изменения применились и система перестроила свои данные, мы рекомендуем закрыть и снова открыть форму штатного расписания.
Проверка позиции штатного расписания:
После отключения истории изменений мы снова открываем проблемную позицию штатного расписания на вкладке «Дополнительно» в разделе «Отпуск». В этот момент мы должны увидеть, что второй (задвоенный) отпуск либо исчез, либо стал доступен для удаления (станет активным). В случае, описанном в теме, задвоенный отпуск просто исчез после повторного включения истории, но возможность удаления могла бы быть индикатором успеха на этом этапе.
Удаление задвоенного отпуска (если активно):
Если после отключения истории изменения штатного расписания у нас появляется возможность удалить лишнюю строку отпуска (то есть кнопки удаления становятся активными для одной из задвоенных строк), мы должны это сделать. Выбираем задвоенную строку и удаляем ее. Если такая возможность не появилась, как было в исходном случае, это означает, что само отключение и включение истории должно решить проблему.
Повторное включение истории изменений штатного расписания:
После того как мы убедились, что задвоение устранено или лишний отпуск удален, мы возвращаемся в Настройка -> Кадровый учет. Этот шаг возвращает систему в ее стандартный режим работы с полным отслеживанием истории.
Устанавливаем флажок обратно на опцию Ведется история изменений штатного расписания.
Снова подтверждаем изменения и даем программе время на перестроение данных, связанное с восстановлением механизма истории.
Финальная проверка результата:
Мы еще раз открываем проблемную позицию штатного расписания и тщательно убеждаемся, что теперь отображается только один основной отпуск. Если проблема решена, значит, наши действия были успешны, и данные в системе теперь отображаются корректно.
После проведения подобных манипуляций с настройками истории штатного расписания, особенно если в вашей базе есть много документов по изменению и утверждению штатного расписания, мы настоятельно рекомендуем выполнить следующие дополнительные действия для обеспечения целостности данных:
Изменение штатного расписания и Утверждение штатного расписания, которые затрагивают те позиции, по которым производились изменения. Это обеспечит их перезапись на основе актуальных данных.Этот подход связан с тем, что при автоматическом формировании или перепроведении документов после значительных изменений в настройках или внутренней структуре данных, могут возникать ошибки в движениях регистров. Интерактивное проведение позволяет системе более корректно сформировать движения, основываясь на текущих, исправленных данных и настройках. Такой подход минимизирует риски возникновения новых ошибок в будущих периодах и гарантирует, что все записи в регистрах будут сформированы правильно в соответствии с актуальным состоянием штатного расписания.
Помимо рассмотренного решения, существуют общие рекомендации, которые могут помочь предотвратить или решить подобные проблемы, связанные с некорректным отображением данных в 1С ЗУП:
Актуализация версии программы: Мы всегда стремимся использовать самые актуальные версии платформы 1С:Предприятие и конфигурации 1С ЗУП. Разработчики постоянно выпускают обновления, которые содержат исправления ошибок, улучшения функционала и оптимизации. Обновление может решить проблему, если она является известным багом, который уже был исправлен в новой версии.
Проверка целостности базы данных: Мы можем периодически выполнять проверку и исправление информационной базы средствами платформы. Для файловых баз это утилита chdbfl.exe, для клиент-серверных – соответствующие средства СУБД (например, DBCC CHECKDB для MS SQL Server). Это помогает выявить и устранить физические или логические повреждения базы данных, которые могут быть причиной аномального поведения.
Ручная корректировка данных в регистрах (крайняя мера): В крайне редких и критических случаях, когда стандартные методы не помогают, может потребоваться ручная корректировка записей регистров. Однако мы должны помнить, что это очень нежелательный метод, который следует применять с максимальной осторожностью. Если мы всё же решаемся на него, необходимо:
Следуя этим рекомендациям и пошаговому решению, мы сможем эффективно устранить проблему задвоения отпусков в позициях штатного расписания 1С ЗУП 3.1 и обеспечить корректную и надежную работу системы.