При работе с регламентированной статистической отчетностью в программе 1С:Зарплата и управление персоналом 3.1 у разработчиков и аналитиков часто возникает задача программного анализа сохраненных отчетов. В частности, это касается форм П-4 (Сведения о численности и заработной плате работников) и П-4 (НЗ) (Сведения о неполной занятости и движении работников).
В этой статье мы подробно разберем, где физически в базе данных 1С хранятся заполненные формы, как программно извлечь из них данные с помощью встроенного языка, а также выясним, из каких регистров и объектов системы программа автоматически собирает показатели для их первоначального заполнения.
В современных версиях конфигураций на платформе 1С:Предприятие 8.3 (включая ЗУП 3.1, построенную на базе Библиотеки Стандартных Подсистем) вся регламентированная отчетность хранится непосредственно внутри информационной базы. Прошли те времена, когда отчеты выгружались во внешние файлы настроек.
Давайте рассмотрим основные объекты метаданных, которые отвечают за хранение статистических форм:
Документ.РегламентированныйОтчет: Каждая сохраненная или записанная форма П-4 или П-4НЗ представляет собой отдельный экземпляр этого документа. Он выступает в роли своеобразного «контейнера» для метаданных отчета (период, организация, вид отчета, состояние и т.д.).ДанныеОтчета: Это самый важный реквизит документа РегламентированныйОтчет. Он имеет тип ХранилищеЗначения. Внутри этого хранилища в сжатом и сериализованном виде находится вся внутренняя структура отчета — значения конкретных ячеек разделов, данные многострочных частей, настройки выгрузки и варианты ручной корректировки.Дополнительные файлы регламентированных отчетов: Для оптимизации производительности базы данных тяжелые двоичные файлы (например, сформированные XML-файлы для выгрузки в Росстат или готовые печатные формы в формате MXL) выносятся за пределы самого документа. Они записываются в этот регистр сведений, где измерением служит ссылка на родительский документ, а сами данные лежат в ресурсе СодержимоеФайла (также с типом ХранилищеЗначения).Для того чтобы прочитать информацию, сохраненную пользователем в форме П-4, нам необходимо обратиться к реквизиту ДанныеОтчета конкретного документа и извлечь его содержимое. Давайте разберем этот процесс на примере кода.
Для извлечения объекта из базы данных мы используем метод Получить() объекта ХранилищеЗначения. Посмотрим на практический пример:
// Предположим, у нас уже есть СсылкаНаОтчет (типа ДокументСсылка.РегламентированныйОтчет)
Если ЗначениеЗаполнено(СсылкаНаОтчет) Тогда
// Получаем объект документа для доступа к его реквизитам
ДокументОбъект = СсылкаНаОтчет.ПолучитьОбъект();
// Извлекаем сохраненные данные из хранилища значения
ДвоичныеДанныеОтчета = ДокументОбъект.ДанныеОтчета.Получить();
Если ТипЗнч(ДвоичныеДанныеОтчета) = Тип("Структура") Тогда
// Проанализируем структуру полученных данных в отладчике.
// Обычно внутри структуры находятся таблицы или соответствия с показателями отчета.
// Например, доступ к показателям конкретного раздела:
ПоказателиРаздела = ДвоичныеДанныеОтчета.Вставить("ПоказателиОтчета", Новый Структура);
КонецЕсли;
КонецЕсли;
Обратите внимание, что структура, возвращаемая методом Получить(), зависит от конкретной версии XML-схемы отчета Росстата. При анализе этой структуры в режиме отладки мы увидим дерево или соответствие, где ключами выступают внутренние коды показателей (например, П000010001001), а значениями — введенные пользователем или рассчитанные системой числа.
Когда пользователь нажимает кнопку «Заполнить» в форме отчета П-4, программа не просто обращается к сохраненным документам, а запускает сложный алгоритм сбора статистических показателей. Весь этот процесс выполняется в недрах специализированного отчета Отчет.СтатистикаПерсонала.
Давайте разберем по шагам, из каких регистров и документов ЗУП 3.1 извлекаются данные для заполнения ключевых колонок отчета П-4:
Эти показатели рассчитываются на основании кадровых данных. Программа анализирует списочный состав сотрудников организации за каждый календарный день отчетного периода.
КадроваяИсторияСотрудников.ДанныеСостоянийСотрудников.ДоговорРаботыУслуги и регистру сведений ПараметрыПериодовФСС.Для расчета фактически отработанного времени система обращается к механизмам учета времени.
ДанныеОРабочемВремени. Этот регистр заполняется документами начисления зарплаты, табелями учета рабочего времени и кадровыми отклонениями.Это стоимостные показатели, которые собираются непосредственно из регистров расчета и накопления заработной платы.
НачисленияУдержанияПоСотрудникам.Начисления).Отчет П-4 требует детального разделения показателей по видам экономической деятельности. Программа получает эти сведения из карточек подразделений (если они выделены на отдельные ОКВЭД) или из справочника Организации. Сведения о территориально-обособленных подразделениях и их кодах ОКПО программа извлекает из справочника РегистрацииВНалоговомОргане.
Если при автоматическом заполнении формы П-4 вы обнаружили расхождения с вашими расчетными листками или кадровыми приказами, мы рекомендуем выполнить следующие действия:
Используя представленный подход и понимание структуры хранения данных в ХранилищеЗначения документа РегламентированныйОтчет, вы сможете с легкостью автоматизировать аудит и выгрузку любых статистических показателей в сторонние аналитические системы организации.