При работе в современных конфигурациях на платформе 1С:Предприятие 8.3, таких как 1С:ERP Управление предприятием, 1С:Комплексная автоматизация или 1С:Управление торговлей 11, разработчики и пользователи часто сталкиваются с ситуацией, когда система выдает ошибку о незаполненном поле, которого, на первый взгляд, нет в документе. Одной из таких классических проблем является ошибка: "Поле 'Поставщик' не заполнено" при проведении документа СписаниеБезналичныхДенежныхСредств. Рассмотрим подробно, почему это происходит и где искать корень проблемы.
Для начала проанализируем ключевое отличие архитектуры ERP от старых версий (например, 1С:Бухгалтерии или УПП). В ERP-системах понятия юридического и управленческого учета разделены:
В документе СписаниеБезналичныхДенежныхСредств (как и во многих других) заголовок поля на форме часто формируется динамически. Проанализируем механизм: если в документе выбрана хозяйственная операция Оплата поставщику, система программно меняет заголовок поля Партнер на Поставщик. Именно поэтому при проверке заполнения платформа сообщает о «Поставщике», хотя в метаданных реквизит называется Партнер.
Ситуация усложняется, когда данные переносятся из внешних систем (например, через КД 2.1). Разберем ситуацию: вы перенесли данные, видите элементы в списке справочника, но не можете выбрать их в документе, или список выбора открывается пустым. Рассмотрим причины:
Партнера есть скрытые отборы. На форме документа стоит программный фильтр, который показывает только тех партнеров, у которых установлен флаг НашПоставщик. Если этот флаг равен Ложь, партнер не попадет в выборку.Партнер (который на форме виден как Поставщик) пуст, проведение будет заблокировано.Партнер установлены связи параметров выбора. Система ограничивает список в зависимости от выбранного Контрагента или Организации.Если вы столкнулись с тем, что после загрузки данных из 1С:Бухгалтерии или другой системы документы не проводятся, выполним следующие шаги по исправлению:
Шаг 1. Сравнение с эталоном
Рассмотрим метод «золотого стандарта». Создадим в целевой базе ERP одного поставщика вручную через интерфейс. Затем с помощью консоли запросов или обработки «Групповое изменение реквизитов» сравним значения полей у «ручного» поставщика и у перенесенного программно. Особое внимание уделим реквизитам:
Поставщик (булево)Клиент (булево)Служебный (булево)РодительШаг 2. Проверка связей в КД 2.1
Если вы используете Конвертацию данных 2.1, выясним, как настроены правила. В ERP по умолчанию может быть включена опция «Независимое ведение партнеров и контрагентов». Если она включена, необходимо создавать две записи. Если выключена — система создает их в паре. При переносе важно убедиться, что у объекта Контрагент заполнен реквизит Партнер. Пример кода в ПКО (ПередЗагрузкой), если нужно программно дозаполнить признаки:
// В правилах конвертации для справочника Партнеры
Объект.Клиент = Ложь;
Объект.Поставщик = Истина;
Объект.ПрочиеОтношения = Ложь;
Шаг 3. Устранение технических «артефактов» формы
Иногда ошибка возникает из-за того, что при открытии формы документа отрабатывает сложная логика в общих модулях, которая скрывает или очищает поля. Посмотрим на код в модуле формы или в модуле менеджера. Проверка заполнения обычно вызывается из модуля объекта:
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Здесь система добавляет или удаляет реквизит Партнер из списка проверки
// в зависимости от хозяйственной операции
КонецПроцедуры
Если в форме выбора вы видите пустой список, хотя в справочнике данные есть, проверим настройки НСИ. Зайдем в НСИ и администрирование — Настройка НСИ и разделов — Семья и партнеры. Если настройки позволяют раздельное ведение, убедитесь, что при переносе вы не создали «пустых» партнеров без установленных ролей. Без установленного флага НашПоставщик партнер для системы закупок и оплат просто не существует.
Чтобы решить проблему с «невидимым» полем Поставщик, мы должны выполнить следующие действия:
Партнер в метаданных.Партнеры для соответствующего элемента установлен флаг Поставщик.Контрагенты и Партнеры, проверив корректность ссылок между ними после загрузки данных.Используя этот структурный подход, мы сможем не только исправить текущую ошибку проведения, но и предотвратить подобные проблемы при дальнейших миграциях данных в ERP-системы.