gifts2017

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

Опубликовал Maxim Kolkin (the1) в раздел Программирование - Практика программирования

Как известно, зарплатные конфигурации 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С.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Наталия Мастербатова (zzz_natali) 19.09.12 09:10
Соорудили бы как внешнюю обработку (а то влом считать, какой ПФРский номер должен быть у пачки). Руками же потом в базе проще поставить тот номер, какой пенсионщики хотят, чем конфу править. А так: хочется нажать "спасибо", но рука не поднимается... :)
2. al petrov (petrov_al) 19.09.12 13:10
Автор, ну что за манера вставлять неотформатированный код...или вы думаете что так красивее?
3. Maxim Kolkin (the1) 19.09.12 13:54
4. Maxim Kolkin (the1) 19.09.12 13:55
(2) Я думаю, что это его инфостарт так форматирует =) Вставлено ведь из 1С-ки...
5. Марина Чирина (chmv) 27.09.13 08:57
6. Кошки Рулят (Кошки рулят) 27.09.13 10:04
Чушь какая-то.
Никаких "правил ПФР" для нумерации пачек не существует.
Мои клиенты по моему совету нумеруют пачки по дате сдачи Год-Квартал и остается еще 100 номеров пачек(чего вполне хватает для 1 квартала), т.е. сейчас идут номера 13301, 13302, 13303 ...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа