Автоопределение периода начисления при Исправлении документов кадровиком.

Вопрос задал Ольга М.

Ответственный за ответ: Щелкунова Юлия (★9.81/10)

Добрый день.
1С:Предприятие 8.3 (8.3.17.1851). ЗУП 3.1.14.587
Столкнулись со следующей проблемой. Из-за особенностей работы с документами Отсутсвий, часто приходится изменять даты окончания через Исправления внутри одного расчетного периода.
Кадровик формирует по кнопке Исправить документы исправления. Независимо от периода, который задан у расчетчика на форме Расчеты и выплаты, независимо от пользовательской настройки Рабочей даты у Кадровика Период начисления в Документе исправления заполняется следующим периодом(относительно текущего). Даже если дата документа-исправления из текущего периода. Таких документов достаточно много, каждый раз менять период очень не удобно. Если же период не исправить, возникают Перерасчеты, которых хотелось бы избежать. Подскажите, пожалуйста, как повлиять на механизм автоопределения периода начисления при исправлении? Спасибо.

Все комментарии (5)

  1. Добрый день!
    Месяц начисления в большинстве документов определяется в зависимости от текущей даты и плановой даты выплаты зарплаты: Месяц расчета по умолчанию (ЗУП 3.1.8). Но конкретно для документа «Отсутствие» месяц исправления определяется не по этому алгоритму. В «Отсутствии» подставляется текущий месяц, который зависит от рабочей даты и от того, выплачена ли зарплата за прошлый месяц (именно по факту, а не по плановой дате).

    Если зарплата еще не выплачена, о устанавливается тот же месяц, если выплачена, то месяц определяется по рабочей дате, но не ниже, чем следующий месяц после месяца исходного документа.

    Вы же пишите, что у Вас в базе всегда подставляется следующий месяц. Это и в случае если месяц еще не закрыт? Или Вы хотели бы повлиять на формирование исправлений за месяц, в котором уже выплачена зарплата? Если так, то это не получится без доработки базы.

    Если же речь о еще не закрытом месяце, то у меня такая ситуация не воспроизвелась ни в 31.14, ни в 3.1.18.
    Попробуйте и Вы протестировать механизм в демо.

    Например, если «Отсутствие» с месяцем «Июль» и еще не введены Ведомости на выплату зарплаты за Июль, то при исправлении «Отсутствия» устанавливаться месяц «Июль».

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

    1. Добрый день. На демо базе нет возможности выполнить тестирование- обновляться нужно долго.
      Пришлось обратиться к коду
      Если ИмяПериодРегистрации Неопределено Тогда
      Значения = Новый Структура(«Месяц»);
      ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(Значения);

      Приемник[ИмяПериодРегистрации] = Макс(ДобавитьМесяц(ПериодРегистрацииИсправленногоДокумента, 1), Значения.Месяц);
      КонецЕсли;

      В релизе 3.1.14.587 согласно коду период в Исправлении всегда будет на месяц больше … (при условии, что рабочую дату не меняем)

  2. Добрый день. На демо базе нет возможности выполнить тестирование- обновляться нужно долго.
    Пришлось обратиться к коду
    Если ИмяПериодРегистрации Неопределено Тогда
    Значения = Новый Структура(«Месяц»);
    ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(Значения);

    Приемник[ИмяПериодРегистрации] = Макс(ДобавитьМесяц(ПериодРегистрацииИсправленногоДокумента, 1), Значения.Месяц);
    КонецЕсли;

    В релизе 3.1.14.587 согласно коду период в Исправлении всегда будет на месяц больше … (при условии, что рабочую дату не меням)

    1. Здравствуйте!
      Это небольшой фрагмент кода, который все же несколько вырван из контекста. Следующий месяц подставляется только если других вариантов не определилось.

      Если рассмотреть более полный отрывок:

      Если Не ИсправлениеВТекущемПериоде Тогда
      // Период регистрации документа исправления необходимо увеличить.
      Если ДанныеЗаполнения.Свойство(«ИмяПериодРегистрации») Тогда
      ИмяПериодРегистрации = ДанныеЗаполнения.ИмяПериодРегистрации;
      ПериодРегистрацииИсправленногоДокумента = ДанныеЗаполнения.ПериодРегистрацииИсправленногоДокумента;
      Иначе
      МетаданныеРеквизита = МетаданныеДокумента.Реквизиты.Найти(«ПериодРегистрации»);
      Если МетаданныеРеквизита = Неопределено Тогда
      МетаданныеРеквизита = МетаданныеДокумента.Реквизиты.Найти(«МесяцНачисления»);
      КонецЕсли;

      Если МетаданныеРеквизита <> Неопределено Тогда
      ИмяПериодРегистрации = МетаданныеРеквизита.Имя;
      ПериодРегистрацииИсправленногоДокумента = ДанныеДокумента[ИмяПериодРегистрации];
      Иначе
      ИмяПериодРегистрации = Неопределено;
      ПериодРегистрацииИсправленногоДокумента = Дата(1, 1, 1);
      КонецЕсли;
      КонецЕсли;

      Если ИмяПериодРегистрации <> Неопределено Тогда
      Значения = Новый Структура(«Месяц»);
      ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(Значения);

      Приемник[ИмяПериодРегистрации] = Макс(ДобавитьМесяц(ПериодРегистрацииИсправленногоДокумента, 1), Значения.Месяц);
      КонецЕсли;

      В первую очередь проверяется, допустимо ли изменение в текущем периоде, и если это не изменение в текущем периоде, то месяц берется из переменной «ИмяПериодРегистрации», а если эта переменная не определена, то берется следующий месяц.

      Если база ЗУП у Вас лицензионная, то должен быть доступ на сайт с обновлениями, где можно скачать полный установщик актуальной версии, и установить новую демо базу.
      Или можете взять копию Вашей рабочей базы и протестирвоать хотя на ней. Вряд ли в Вашей базе всегда подставляется следующий месяц. Нужно локализовать проблему: в какой конкретно ситуации подставляется следующий месяц и почему. Возможно, в Вашей базе выплаты в межрасчет проводят как окончательный расчет (способ выплаты в Ведомости) и поэтому потом исправления отсутствий формируются следующим месяцем. Может быть есть какая-то ошибка ЗУП, которая проявляется в Вашей базе при определенных условиях.

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

Комментарии закрыты.