При работе в современных конфигурациях на платформе 1С:Предприятие 8.3 (таких как 1С:Бухгалтерия 3.0, 1С:Зарплата и управление персоналом 3.1 или 1С:ERP 2) пользователи часто сталкиваются с крайне неприятной ошибкой при попытке записать новое физическое лицо или сотрудника. Программа выдает лаконичное, но малоинформативное сообщение: «Поле "Имя" не заполнено!!!». Ситуация усложняется тем, что ФИО в карточке заполнено полностью, а при попытке открыть историю изменений система может завершить работу аварийно.
В этой статье мы подробно разберем, почему возникает эта ошибка с технической точки зрения, проанализируем взаимосвязь справочников и регистров сведений, а также рассмотрим пошаговые сценарии решения проблемы без банального (и небезопасного!) назначения пользователю полных прав администрирования.
Чтобы понять природу ошибки, давайте заглянем «под капот» конфигураций 1С. В старых версиях (например, в 1С:ЗиК 7.7 или старых редакциях 1С 8) ФИО физического лица хранилось непосредственно в реквизитах самого справочника ФизическиеЛица. В современных решениях архитектура изменилась.
Теперь справочник ФизическиеЛица содержит лишь ссылку, а фамилия, имя и отчество хранятся в периодическом регистре сведений. В зависимости от конфигурации он может называться ФИОФизическихЛиц или ФамилияИмяОтчествоФизическихЛиц.
Когда мы заполняем строку «ФИО» на форме элемента и нажимаем кнопку «Записать», платформа выполняет транзакцию, состоящую из двух ключевых шагов:
ФизическиеЛица.ФИОФизическихЛиц записывается новая строка с указанием даты начала действия записи (по умолчанию это дата рождения физлица или текущая дата компьютера).Если на втором шаге запись в регистр сведений по какой-то причине блокируется системой, транзакция прерывается либо завершается некорректно. В итоге элемент справочника создан, но связанной записи в регистре сведений нет. При проверке заполнения реквизитов перед окончательной фиксацией программа пытается прочитать имя физлица из регистра, видит пустое значение и выдает ошибку: «Поле "Имя" не заполнено».
Давайте разберем основные причины, почему запись в регистр сведений ФИО может не происходить.
---
Очень часто ошибка возникает у рядовых сотрудников (кадровиков, бухгалтеров), в то время как под учетной записью администратора все записывается без проблем. Дело в том, что у пользователя могут быть права на создание элементов справочника ФизическиеЛица, но отсутствовать права на запись или чтение периодического регистра сведений ФИОФизическихЛиц. Для проверки текущих полномочий можно использовать отчет по пользователям, ролям и профилям доступа.
В этот момент также может возникнуть сопутствующая аппаратная ошибка:
{ОбщийМодуль.РедактированиеПериодическихСведенийКлиентСервер.Модуль(10)}: Итератор для значения не определен Для Каждого КлючЗначение Из Форма[ИмяРегистра + "Прежняя"] Цикл
Давайте проанализируем, почему это происходит. Программа пытается динамически считать на форме коллекцию прежних значений регистра для сравнения изменений:
// Фрагмент кода, вызывающий системный сбой при нехватке прав:
ИмяРегистра = "ФИОФизическихЛиц";
// Если у пользователя нет прав на этот регистр,
// следующая конструкция возвращает Неопределено вместо Структуры:
Для Каждого КлючЗначение Из Форма[ИмяРегистра + "Прежняя"] Цикл
// Здесь платформа выдает ошибку итератора
КонецЦикла;
Так как у пользователя ограничены права доступа к регистру, переменная на форме принимает значение Неопределено. Попытка обойти её циклом Для каждого закономерно вызывает критический сбой системы.
Конечно, самым простым решением кажется предоставление пользователю полных прав. Но с точки зрения безопасности это грубейшее нарушение. Вместо этого выполним правильную настройку:
Чтение данных физических лиц зарплата кадрыДобавление и изменение данных физических лиц зарплата кадры---
Эта проблема наиболее актуальна при переносе данных из старых конфигураций (например, при переходе с 1С:ЗиК 7.7 на 1С:ЗУП 3.1) или при повторном приеме на работу давно уволенных сотрудников.
Когда мы создаем сотрудника на базе перенесенного физического лица, программа пытается записать историю его ФИО. Датой начала действия этой записи система автоматически пытается установить дату рождения физлица (которая может быть 30-50 лет назад) либо дату первоначального приема на работу (которая находится в далеком закрытом периоде).
Если в информационной базе включена Дата запрета изменения данных (например, закрыт прошлый год или прошлый месяц), механизм контроля запрета редактирования блокирует создание записи в регистре сведений ФИОФизическихЛиц на «историческую» дату. При этом сам элемент справочника система разрешает записать, что и приводит к рассинхронизации данных и ошибке незаполненного имени.
Давайте разберем по шагам, как решить эту проблему:
---
Иногда пользователи создают новые элементы справочника простым копированием существующего физлица (клавишей F9). При этом копируется только сам элемент справочника ФизическиеЛица, но связанные записи в периодических регистрах автоматически не дублируются платформой.
В результате на форме мы видим скопированное имя, но в базе данных запись в регистре сведений для нового физлица отсутствует. При нажатии кнопки «Записать» программа выдает ошибку.
Если физическое лицо уже создано, но повреждено (выдается ошибка при попытке создать сотрудника), нам необходимо восстановить целостность данных:
Физические лица и найдем карточку проблемного человека.Таким образом, мы детально разобрали все возможные причины возникновения ошибки «Поле "Имя" не заполнено». Понимание внутренней архитектуры хранения данных в 1С позволяет быстро локализовать проблему и решить её корректными методами, сохраняя безопасность и права доступа в информационной базе на должном уровне. Для выявления учетных записей с избыточными полномочиями можно использовать инструмент для аудита опасных прав.