В работе с программой 1С:Зарплата и управление персоналом 3.1 бухгалтеры и расчетчики часто сталкиваются с ситуацией, когда в списке «Все начисления» документы за один и тот же день (обычно последний день месяца) отображаются в неудобном порядке. Например, итоговый документ Начисление зарплаты и взносов может оказаться в середине списка, тогда как логичнее видеть его последним, после всех межрасчетных документов, таких как Больничный лист, Отпуск или Премия.
Разберем подробно, почему так происходит и какими способами можно выстроить документы в нужной последовательности, даже если конфигурация находится «на замке» (типовая, без возможности внесения изменений).
Проанализируем ситуацию с точки зрения платформы «1С:Предприятие». Список «Все начисления» является динамическим списком. По умолчанию документы в нем сортируются по полю Дата. Однако дата в 1С — это не просто число, месяц и год, это объект, содержащий также время вплоть до секунды.
Если у нескольких документов в списке визуально отображается одна и та же дата (например, 31.03.2023), их реальный порядок определяется следующими факторами:
Рассмотрим самый эффективный способ — установку времени итогового документа на самый конец дня (23:59:59). Поскольку в типовых интерфейсах ЗУП время в дате часто скрыто настройками формы, визуально дата не изменится, но документ переместится в самый низ списка за этот день.
Если у вас есть права администратора или программиста, вы можете выполнить небольшой фрагмент кода во внешней обработке, чтобы массово исправить время у документов Начисление зарплаты и взносов:
// Пример кода для массового изменения времени документов на конец дня
НачДата = '20230101'; // Начало периода
КонДата = '20231231'; // Конец периода
ВыборкаДок = Документы.НачислениеЗарплаты.Выбрать(НачалоДня(НачДата), КонецДня(КонДата));
Пока ВыборкаДок.Следующий() Цикл
// Получаем объект документа для редактирования
ОбъектДок = ВыборкаДок.ПолучитьОбъект();
// Устанавливаем время на последнюю секунду дня
ОбъектДок.Дата = КонецДня(ОбъектДок.Дата);
// Записываем документ без проведения (если нужно только сместить время)
// или с проведением, если важна последовательность в регистрах
Попытка
ОбъектДок.Записать(РежимЗаписиДокумента.Запись);
Исключение
Сообщить("Не удалось изменить документ: " + ОбъектДок.Ссылка);
КонецПопытки;
КонецЦикла;
Этот метод хорош тем, что он решает проблему «физически» на уровне данных в базе. После выполнения такого скрипта документ гарантированно станет последним в пределах своей даты.
Посмотрим на вариант, который не требует программирования и подходит для конфигураций «на замке». В типовых решениях есть встроенная обработка для администраторов.
Начисление зарплаты и взносов.Дата. В колонке «Новое значение» нужно указать дату с временем 23:59:59.Важно: При ручном изменении даты через эту обработку будьте осторожны, чтобы случайно не изменить саму календарную дату на другую.
Проанализируем ситуацию, когда мы не хотим менять время документов, а хотим лишь изменить их визуальное представление в конкретном списке. Платформа 1С позволяет добавлять пользовательские поля и настраивать по ним сортировку.
Начисление зарплаты имело самый высокий приоритет (было в конце):
ВЫБОР
КОГДА ТипЗначения(Ссылка) = ТИП(Документ.НачислениеЗарплатыИВзносов) ТОГДА 2
ИНАЧЕ 1
КОНЕЦ
ПриоритетДокумента.Дата (по возрастанию), а вторым уровнем добавим наше новое поле ПриоритетДокумента.Таким образом, внутри одной даты документы сначала будут распределяться по типам согласно нашему выражению, а уже потом — по времени создания.
Рассмотрим важный нюанс, упомянутый пользователями. Если вы меняете дату документа, который уже был записан, 1С может сохранять определенные внутренние признаки. Например, если вы сначала создали документ майской датой, а потом переправили ее на 30 апреля, то в некоторых случаях стандартные отборы «Равно» могут работать некорректно, если не учитывать время.
Всегда проверяйте, какое именно время установилось в документе после редактирования. Если вы используете условие Больше или равно в фильтрах, это позволяет «захватить» документы, которые из-за секундного смещения могли выпасть из стандартного диапазона поиска.
Для достижения идеального порядка в списке «Все начисления» мы рекомендуем: