Простенькая функция для определения номера пачки по правилам ПФР

Как известно, зарплатные конфигурации 1С нумеруют пачки с нарастающим итогом, ПФР же настаивает на собственной нумерации пачек (по крайней мере, у нас в Л.О.).  Для нумерации по правилам ПФР можно использовать эту функцию.
Эти 2 функции добавить в общий модуль "ПроцедурыПерсонифицированногоУчета"

// ----------------------------------------------------------------------------------------------
Функция ПолучитьНомерКварталаОтчетногоПериода(ДатаПериода)

НомМесяца = Месяц(ДатаПериода);
Год = Год(ДатаПериода);
НомМесяца = ?((Год=2010) и (НомМесяца=7), 4, НомМесяца);

Возврат ?(НомМесяца=1, 1, ?(НомМесяца=4, 2, ?(НомМесяца=7, 3, 4)));

КонецФункции // ПолучитьНомерКварталаОтчетногоПериода

// ———————————————————————————————-
// Параметры:
// ОтчетныйПериод — дата
//
// Возвращает:
// Число (5,0)
//
Функция ОпределитьНомерПервойПачкиПоПравиламПФР(ОтчетныйПериод) Экспорт

ГодПачки = Год(ОтчетныйПериод);

Если ГодПачки = 2010 Тогда
НомерПачки = (12 + ГодПачки 2008) * 1000 + 1;

Иначе
Квартал = ПолучитьНомерКварталаОтчетногоПериода(ОтчетныйПериод);
НомерПачки = (16 + (ГодПачки 2011) * 4 + (Квартал 1)) * 1000 + 1;

КонецЕсли;

Возврат НомерПачки

КонецФункции // ОпределитьНомерПачкиПоПравиламПФР


Функцию ПолучитьСчетчикВыгруженныхФайловПФР из общего модуля «РегламентированнаяОтчетность» я изменил таким образом, чтобы она сравнивала текущий номер пачки из регистра, и номер пачки по правилам ПФР. При различии в значениях берется ПФР-номер.

Функция ПолучитьСчетчикВыгруженныхФайловПФР(Организация, Год, ОтчетныйПериод = Неопределено) Экспорт

НомерПачки = 0;

Запрос = Новый Запрос(
"ВЫБРАТЬ
| СчетчикВыгрузокПФР.Значение КАК Значение
|ИЗ
| РегистрСведений.СчетчикВыгрузокПФР КАК СчетчикВыгрузокПФР
|ГДЕ
| СчетчикВыгрузокПФР.Организация = &Организация
| И СчетчикВыгрузокПФР.Год = &Год"
);

Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Год", Год);

РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
НомерПачки = ?(НЕ ЗначениеЗаполнено(Выборка.Значение), 0, Выборка.Значение);
КонецЕсли;
КонецЕсли;

Если ОтчетныйПериод <> Неопределено Тогда
НомерПервойПачки = ПроцедурыПерсонифицированногоУчета.ОпределитьНомерПервойПачкиПоПравиламПФР(ОтчетныйПериод);
Если Лев(НомерПервойПачки, 2) = Лев(НомерПачки, 2) Тогда // соблюдено условие нумерации ПФР
Возврат НомерПачки;
КонецЕсли;
Возврат Макс(НомерПервойПачки, НомерПачки);
КонецЕсли;

Возврат НомерПачки;

КонецФункции
Теперь вызывать функцию ПолучитьСчетчикВыгруженныхФайловПФР из документов персучета необходимо с дополнительным параметром
ОтчетныйПериод. Если новый параметр не передать, то произойдет расчет номеров по алгоритму 1С.

6 Comments

  1. zzz_natali

    Соорудили бы как внешнюю обработку (а то влом считать, какой ПФРский номер должен быть у пачки). Руками же потом в базе проще поставить тот номер, какой пенсионщики хотят, чем конфу править. А так: хочется нажать «спасибо», но рука не поднимается… 🙂

    Reply
  2. petrov_al

    Автор, ну что за манера вставлять неотформатированный код…или вы думаете что так красивее?

    Reply
  3. the1

    (1) Логично. Сделаю.

    Reply
  4. the1

    (2) Я думаю, что это его инфостарт так форматирует =) Вставлено ведь из 1С-ки…

    Reply
  5. chmv

    а зачем?

    Reply
  6. Кошки рулят

    Чушь какая-то.

    Никаких «правил ПФР» для нумерации пачек не существует.

    Мои клиенты по моему совету нумеруют пачки по дате сдачи Год-Квартал и остается еще 100 номеров пачек(чего вполне хватает для 1 квартала), т.е. сейчас идут номера 13301, 13302, 13303 …

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *