В современных релизах конфигурации 1С:Бухгалтерия предприятия 3.0 (начиная с версии 3.0.70 и выше) пользователи часто сталкиваются с критической ошибкой при попытке провести или сохранить документ «Авансовый отчет». Система выдает сообщение: «Поле "Вид операции" не заполнено». При этом на самой форме документа этого поля просто не существует, и добавить его через «Изменить форму» невозможно. Рассмотрим подробно, почему возникает эта ситуация и как её исправить различными методами.
Проанализируем техническую сторону вопроса. В последних обновлениях разработчики фирмы «1С» изменили концепцию работы с авансовыми отчетами. Ранее пользователь должен был вручную выбирать вид операции (например, «Закупка товаров» или «Оплата поставщику»), что определяло состав закладок документа. Теперь форма стала универсальной, а реквизит ВидОперации был переведен в разряд служебных.
В норме этот реквизит заполняется автоматически программными алгоритмами в зависимости от того, в какие табличные части пользователь вносит данные. Однако автоматика может дать сбой в следующих случаях:
Разберем самый эффективный и быстрый способ решения задачи, который не требует программирования. Поскольку поле скрыто, нам понадобится встроенный инструмент для работы с объектами базы данных на низком уровне.
Выполним следующие шаги:
Авансовый отчет.Вид операции. Теперь он должен быть доступен.Важно: Данную операцию должен выполнять пользователь с правами «Администратор», так как рядовым бухгалтерам доступ к изменению служебных полей обычно закрыт настройками прав доступа (RLS).
Проанализируем ситуацию, когда у пользователя с правами «Бухгалтер» отсутствует возможность использовать групповую обработку для скрытых полей. Если проблема носит массовый характер, а выдавать полные права администратора рядовым сотрудникам нельзя, рассмотрим альтернативные варианты.
Для корректной работы без участия администратора можно использовать механизм расширений конфигурации. Рассмотрим пример логики, которую можно внедрить в расширение, чтобы поле стало доступным:
&НаСервере
Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Делаем реквизит видимым, если он не заполнен
Если Объект.ВидОперации.Пустая() Тогда
Элементы.ВидОперации.Видимость = Истина;
Элементы.ВидОперации.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
Такой подход позволит пользователю увидеть проблемное поле непосредственно в документе и заполнить его вручную, не прибегая к сложным инструментам корректировки данных.
Иногда отсутствие реквизита в списке или ошибки при его заполнении связаны с некорректной работой локального кэша пользователя. Посмотрим, как это исправить:
Проанализируем также значения перечисления ВидыОперацийАвансовогоОтчета. Если вы работаете в версии КОРП, убедитесь, что при заполнении вида операции также корректно указано подразделение, так как в КОРП-версиях эти поля тесно связаны на уровне налогового учета.
Рассмотрим, как избежать появления этой ошибки в будущем. Если вы используете внешние обработки для загрузки данных в авансовые отчеты, проконтролируйте, чтобы в коде создания документа обязательно присутствовала инициализация вида операции. Пример правильного программного заполнения:
НовыйОтчет = Документы.АвансовыйОтчет.СоздатьДокумент();
НовыйОтчет.Дата = ТекущаяДата();
// Обязательное заполнение служебного реквизита
НовыйОтчет.ВидОперации = Перечисления.ВидыОперацийАвансовогоОтчета.ЗакупкаТоваровБилетов;
НовыйОтчет.Записать(РежимЗаписиДокумента.Запись);
Помните, что простое визуальное скрытие поля на форме не означает его отсутствие в структуре базы данных. Служебные реквизиты играют ключевую роль в формировании проводок и движений по регистрам накопления, поэтому их корректное заполнение является обязательным условием для правильной работы программы 1С:Бухгалтерия 3.0.