. ЗУПовские забавы #1: Выгрузка данных в ПФР
ЗУПовские забавы #1: Выгрузка данных в ПФР

ЗУПовские забавы #1: Выгрузка данных в ПФР

Зарплату сотрудников нашей компании мы рассчитываем при помощи великого и ужасного продукта от компании 1С – «Зарплата и управление персоналом». Данную конфигурацию используют во многих организациях. Неважно – слишком большая она или маленькая. Если в организации имеются всякие премии, надбавки, бонусы, то ЗУП – одно из лучших решений. Все необходимые расчеты можно настроить и потом наслаждаться спокойной жизнью. Произведя грамотный твик, на начисление заработной платы будет уходить не больше 10-15 минут (все зависит от особенностей компании).

Разве не сказка? Вот только на фоне этих чудес, очень часто возникают вполне реальные и досадные ошибки. В данном цикле постов я буду рассказывать тебе о трудностях, с которыми мне довелось столкнуться и способах их решения. Кроме проблем и решений я буду делиться своими интересными находками, которые я обнаружил при работе с ЗУП. Надеюсь, посты будут интересными и нескучными

Первый пост данной серии я хотел бы посвятить возможности ЗУП’а формировать пачки СЗВ-6, СЗВ-4 для дальнейшей выгрузки данных в XML файл, который затем можно сразу отправить в ПФ. Возможность крайне полезная и позволяет сэкономить кучу времени, главное всегда следовать одному правилу – держать данные о сотрудниках в актуальном состоянии. Это означает, что если у сотрудника изменилась фамилия, адрес или другие важные сведения (которые занесены в ЗУП), то нужно не лениться, а сразу вносить соответствующие изменения. Тогда выгрузка отчетности будет казаться сказкой, а не каторгой. В моей практике были ситуации, когда у многих сотрудников были не заполнены адреса. Точнее заполнены неправильно. Из-за этого зарплатнице пришлось сильно попотеть, чтобы в кратчайшие сроки исправить все адреса. Уж лучше все делать сразу, но по немного, чем потом не по-детски надрываться и пытаться все поправить за одну ночь.

Теперь расскажу о проблеме, с которой мне недавно пришлось столкнуться. Дело было так. Подошла ко мне наша зарплатница и сообщила, что ей пришлось подправить в справочнике «Физические лица» имена и фамилии некоторых людей. Операция довольно простая и я не знаю, как с ней можно не справиться. Однако, как оказалось позже, тут есть свои нюансы. Дело в том, что когда зарплатница осуществляла правку, у нее уже были сформированны документы: «Опись сведений АДВ-6-2» и «Сведения о страховых взносах и стаже застрахованных лиц». Первый документ содержит пачки, с информацией о сотрудниках, которая должна быть передана в ПФ, а второй представляет собой ту самую пачку. Если следовать здравой логике, то после того как были внесены изменения в справочники «Физические лица»/«Сотрудники», нужно вернуться в документ и повторно выполнить выгрузку данных в XML файл (чтобы туда попала информация с учетом внесенных изменений).

Зарплатница мне сообщила, что пробовала делать выгрузку заново, но несмотря на внесенные изменения, в XML-файл ничего обновленного не попадало. Я сначала не поверил своим ушам. Зашел в базу, попробовал все сделать самостоятельно, но результат был такой же, как и у зарплатницы – никакой. Опускать руки – не мой стиль и я стал копать. Сначала попробовал самое простое решение – отменить проведение выгружаемых документов, провести их заново и вновь произвести выгрузку. Увы, на результат это решение не повлияло. В табличной части документа отображаются верные данные, а в xml попадает совсем не то.

Светлых идей в голове не было, а в код лезть не хотелось, поэтому я решил пойти и погуглить по этой теме. Вдруг кто-то уже сталкивался с подобной проблемой и давно опубликовал рабочее решение. Рыл, рыл и ничего не нарыл. Хотя нет, мне попадались подобные вопросы, но без ответов.

Поскольку ответа в инете я так и не нашел, то мне оставалось только запустить конфигуратор и начать ковыряться в коде. Нашел нужный документ (СведенияОТрудовомСтажеИЗаработкеСЗВ4), установил бряк и начал отладку. Вот тут и начало выясняться много всего интересного.

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

Ладно, отлаживаю дальше и натыкаюсь вот на такой код запроса (он немного большой, поэтому привожу малую часть):

ВЫБРАТЬ СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Ссылка, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.НомерСтроки, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.ФизЛицо КАК ФизЛицо, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.АдресДляИнформирования, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.СтраховойНомерПФР, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Фамилия, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Имя, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Отчество, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.НачисленоСтраховая, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.УплаченоСтраховая, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.НачисленоНакопительная, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.УплаченоНакопительная, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Ссылка.Организация, ВЫБОР КОГДА СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Ссылка.ТипСведенийСЗВ В (ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ.КОРРЕКТИРУЮЩАЯ), ЗНАЧЕНИЕ(Перечисление.ТипыСведенийСЗВ.ОТМЕНЯЮЩАЯ)) ТОГДА СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Ссылка.КорректируемыйПериод ИНАЧЕ СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Ссылка.ОтчетныйПериод КОНЕЦ КАК ОтчетныйПериод, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Ссылка.КатегорияЗастрахованныхЛиц ПОМЕСТИТЬ ВТЗастрахованныеЛица ИЗ Документ.СведенияОТрудовомСтажеИЗаработкеСЗВ4.РаботникиОрганизации КАК СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации ГДЕ СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Ссылка = &ДокументСсылка ИНДЕКСИРОВАТЬ ПО ФизЛицо … ///ВЫРЕЗАНО

Данный запрос выбирает все данные из табличной части документа (под данными подразумеваются ссылки на справочник «Сотрудники») и результат выполнения отправляться в процедуру, которая занимается формированием XML файла. Вроде все, как и должно быть, но мое внимание привлекли некоторые имена из выбираемых полей:

СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Фамилия, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Имя, СведенияОТрудовомСтажеИЗаработкеСЗВ4РаботникиОрганизации.Отчество

В табличной части данного документа я не видел одноименных полей. Напрашивается вывод, что соответствующие реквизиты есть, только они не вынесены в форму и недоступны для редактирования со стороны пользователя. Это логично, потому что они заполняются на основании элемента справочника «Сотрудники». Стоит пользователю добавить новый элемент в табличную часть, как сработает событие и выполнится код заполняющий данные реквизиты.

Собственно говоря, причина столь странной выгрузки в файл была перед моими глазами.

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

На мой взгляд, разработчики поступили некрасиво. Зачем пользователю выполнять полное перезаполнение содержимого табличной части, если он лишь внес изменения в наименование некоторых элементов? Кроме того, об этой особенности нигде не упоминается, следовательно, пользователь не сможет решить ее самостоятельно. Не уже ли нельзя было предусмотреть режим обновления добавленных в ТЧ документа записей? Да и можно было не жмотиться, а сделать возможность включения отображения скрытых полей. Так бы пользователь смог понять причину неправильной работы и сообщить нормальным языком программисту/администратору суть проблемы. Скажу честно, иногда у меня складывается ощущение, что многие типовые конфигурации от 1С были придуманы для того, чтобы чаще обращаться за помощью к франчам/программистам. Тут я говорю не про качество кода, а про юзабилити. Многие вещи непродуманны в интерфейсном плане, и порой очень тяжело сообразить, как и что должно работать. Инода проще залезть и посмотреть код, нежели думать о таинственном предназначении некоторых кнопочек.

А как же решение?

Я как-то резко ушел в сторону и совсем забыл привести решение проблемы. Если не хочется слишком много заморачиваться, то проще перезаполнить документ. На это не требуется много времени и эту операцию вполне можно себе позволить. Если же полностью перезаполнить документ нельзя, а записей подвергнувшихся правки немного, то можно просто найти их в ТЧ и выбрать заново. В результате этой нехитрой манипуляции произойдет обновление скрытых реквизитов.

📎📎📎📎📎📎📎📎📎📎