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