При работе с зарплатными проектами в программе 1С:Зарплата и Управление Персоналом 3.1 пользователи часто сталкиваются с необходимостью использования внешних обработок, предоставленных банком (в данном случае ВТБ). Однако после очередного обновления конфигурации типовая обработка может перестать функционировать, выдавая техническую ошибку: Поле не найдено Кадровая История Сотрудников СрезПоследних. В рамках этой статьи мы подробно разберем причины возникновения этой ситуации и рассмотрим несколько способов её решения — от простого обновления файла до глубокой программной правки кода.
Для начала проанализируем ситуацию с точки зрения архитектуры 1С. В последних релизах ЗУП 3.1 (начиная с версий 3.1.13 и выше) фирма «1С» провела масштабную оптимизацию механизмов получения кадровых данных. Ранее разработчики часто обращались напрямую к виртуальным таблицам регистра сведений КадроваяИсторияСотрудников.СрезПоследних. Однако в современных версиях структура хранения данных была пересмотрена для повышения производительности системы.
Многие поля, которые раньше были доступны в «срезе последних» этого регистра, теперь вынесены в другие структуры или требуют обращения через специализированные программные интерфейсы (функции общего назначения). Банковская обработка, созданная под старые релизы (например, 3.1.6), продолжает «стучаться» в те места базы данных, которых в прежнем виде больше не существует. Именно поэтому система выдает сообщение о том, что поле не найдено.
Самый простой и правильный путь для обычного пользователя или бухгалтера — получить актуальную версию обработки. Банк ВТБ регулярно выпускает обновленные версии своего «Модуля интеграции ВТБ с 1С». Рассмотрим, где и как найти нужные файлы:
Как показывает практика (и сообщения пользователей на форумах), установка свежей версии обработки, датированной текущим годом, полностью снимает проблему несовместимости полей.
Проанализируем современный подход к взаимодействию с банками. Использование внешних файлов-обработок постепенно уходит в прошлое. В 1С реализован механизм DirectBank, который позволяет отправлять реестры на открытие счетов и выпуск карт напрямую из интерфейса программы нажатием одной кнопки.
Разберем по шагам, как настроить этот функционал для ВТБ:
Преимущество этого метода в том, что механизмы обмена DirectBank поддерживаются самой фирмой «1С» в составе типовой конфигурации. Когда 1С меняет структуру своих регистров, она одновременно обновляет и код обмена, что исключает появление ошибок типа Поле не найдено.
Если по каким-то причинам банк задерживает выпуск обновления, а реестр нужно отправить срочно, мы можем самостоятельно внести правки в код внешней обработки. Разберем, что именно нужно изменить в тексте запроса.
Вместо прямого обращения к РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних, рекомендуется использовать универсальные представления, которые 1С предоставляет для извлечения кадровых данных. Проанализируем пример изменения кода:
Было в старой версии:
ВЫБРАТЬ
КадроваяИсторияСотрудниковСрезПоследних.Должность,
КадроваяИсторияСотрудниковСрезПоследних.Подразделение
ИЗ
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&Период, ) КАК КадроваяИсторияСотрудниковСрезПоследних
Как следует сделать сейчас:
Для корректной работы в новых версиях ЗУП 3.1 следует использовать временную таблицу Представления_КадровыеДанныеСотрудников. Для этого в коде обработки перед выполнением основного запроса нужно вызвать программный интерфейс кадрового учета:
ПараметрыПолученияДанных = КадровыйУчет.ПараметрыПолученияКадровыхДанных();
ПараметрыПолученияДанных.СоставПолей = "Должность, Подразделение, ПодразделениеНаИмя";
ПараметрыПолученияДанных.ДатаПериода = Объект.ДатаРеестра;
КадровыйУчет.СоздатьВременнуюТаблицуКадровыхДанныхСотрудников(
Запрос.МенеджерВременныхТаблиц,
Истина, // Признак того, что нужны данные на дату
ПараметрыПолученияДанных,
"ВТ_Сотрудники" // Ваша таблица со списком сотрудников
);
После этого в самом тексте запроса мы просто соединяемся с таблицей ВТ_КадровыеДанныеСотрудников. Это гарантирует, что даже при изменении структуры метаданных, системные функции 1С корректно «подтянут» нужные значения.
Даже если программная ошибка исправлена, реестр может быть отклонен банком на этапе загрузки из-за некорректного заполнения данных. Проанализируем типичные ошибки, о которых упоминалось в сообщениях форума:
+7. Использование «8» в начале номера часто приводит к отказу в регистрации заявления на карту.770-001). Некоторые старые версии обработок могли «терять» этот символ при выгрузке.Чтобы избежать подобных ситуаций в будущем, рассмотрим алгоритм действий при обновлении 1С:ЗУП:
Поле не найдено, не ждите, пока база «сломается» у бухгалтера в день выдачи зарплаты. Свяжитесь с поддержкой банка заранее или подготовьте исправленную версию обработки.Таким образом, решение проблемы кроется в понимании того, что конфигурации 1С динамично развиваются, и внешние инструменты требуют своевременного обслуживания. Мы рассмотрели все варианты — от простого скачивания файла до изменения логики запросов в коде, что позволит вам оперативно восстановить процесс выпуска банковских карт.