Корректное заполнение СЗВ-ТД в УПП при увольнении последним днем месяца
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
===
Техническая часть (причина ошибки и метод исправления):
В типовом алгоритме выборка приказов идет по регистру сведений РаботникиОрганизаций ("Кадровая история сотрудников (по юрлицам)"), а в случае увольнения в этот регистр пишется следующий день за днем увольнения. Уволен 31.01 - запись в регистре будет от 01.02. Логика, видимо, в том, что 31.01 сотрудник еще работает, а вот с 01.02 уже нет. Но для целей отчетности СЗВ-ТД это неправильно. Более того, такое увольнение не попадет и в отчетность за следующий месяц, т.к. в другом подзапросе анализируется список физлиц, которые должны попасть в выборку ПО ДАТЕ ПРИКАЗА на увольнение.
Предлагаемое решение:
Документ СведенияОТрудовойДеятельностиРаботниковСЗВ_ТД, Модуль объекта, процедура Автозаполнение (номер строки 429), заменить запрос на такой:
// Кадровые события отчетного периода
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РаботникиОрганизаций.Регистратор
|ПОМЕСТИТЬ ВТРегистраторы
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаНачала, Организация = &ГоловнаяОрганизация) КАК РаботникиОрганизаций
|ГДЕ
| (РаботникиОрганизаций.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
// П.И.А. 2020-02-10 +
| ИЛИ РаботникиОрганизаций.Сотрудник.ДатаУвольнения МЕЖДУ &ДатаНачала И &ДатаОкончания
// П.И.А. 2020-02-10 -
| ИЛИ РаботникиОрганизаций.ПериодЗавершения МЕЖДУ &ДатаНачала И &ДатаОкончания)
| И РаботникиОрганизаций.Сотрудник.Физлицо В
| (ВЫБРАТЬ
| ВТ.ФизЛицо
| ИЗ
| ВТФизическиеЛица КАК ВТ)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РаботникиОрганизаций.Регистратор
|ИЗ
| РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|ГДЕ
// П.И.А. 2020-02-10 +
// | РаботникиОрганизаций.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
| (РаботникиОрганизаций.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
| ИЛИ РаботникиОрганизаций.Сотрудник.ДатаУвольнения МЕЖДУ &ДатаНачала И &ДатаОкончания)
// П.И.А. 2020-02-10 -
| И РаботникиОрганизаций.Сотрудник.Физлицо В
| (ВЫБРАТЬ
| ВТ.ФизЛицо
| ИЗ
| ВТФизическиеЛица КАК ВТ)
| И РаботникиОрганизаций.Организация = &ГоловнаяОрганизация";
Запрос.Выполнить();
===
Такое же решение сделано в виде внешней обработки заполнения табличной части этого документа. Но если не хочется тратить стартмани - можете просто в конфигурации исправить (если есть возможность изменения конфигурации). Ну и можете сами сделать обработку заполнения с исправлением данного запроса.
Проверено на релизе УПП 1.3.132.2.
UPD: Вышел релиз 1.3.132.3, в котором разработчики типовой конфигурации поправили эту ошибку, вот так:
// Кадровые события отчетного периода
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РаботникиОрганизаций.Регистратор
|ПОМЕСТИТЬ ВТРегистраторы
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаНачала, Организация = &ГоловнаяОрганизация) КАК РаботникиОрганизаций
|ГДЕ
| (РаботникиОрганизаций.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
| ИЛИ РаботникиОрганизаций.ПериодЗавершения МЕЖДУ &ДатаНачала И &ДатаОкончания)
| И РаботникиОрганизаций.Сотрудник.Физлицо В
| (ВЫБРАТЬ
| ВТ.ФизЛицо
| ИЗ
| ВТФизическиеЛица КАК ВТ)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РаботникиОрганизаций.Регистратор
|ИЗ
| РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
|ГДЕ
| РаботникиОрганизаций.Период МЕЖДУ &ДатаНачала И ДОБАВИТЬКДАТЕ(&ДатаНачала, МЕСЯЦ, 1)
| И РаботникиОрганизаций.Сотрудник.Физлицо В
| (ВЫБРАТЬ
| ВТ.ФизЛицо
| ИЗ
| ВТФизическиеЛица КАК ВТ)
| И РаботникиОрганизаций.Организация = &ГоловнаяОрганизация";
Запрос.Выполнить();
конкретная строчка: | РаботникиОрганизаций.Период МЕЖДУ &ДатаНачала И ДОБАВИТЬКДАТЕ(&ДатаНачала, МЕСЯЦ, 1)
т.е. не по конец месяца берем, а к началу месяца добавляем месяц и получаем нулевую секунду следующего месяца, в которую увольнение последним днем месяца уже попадает.
Вступайте в нашу телеграмм-группу Инфостарт