Разработка и Конфигурация · 11 мин
Как открыть форму записи регистра сведений в 1С
Как открыть форму записи регистра сведений в 1С: способы в режиме предприятия, через код ОткрытьФорму, настройка формы записи и решение типичных проблем.
Регистр сведений в 1С хранит информацию в виде набора записей: цены номенклатуры, курсы валют, адреса контрагентов. По умолчанию пользователь видит этот набор как таблицу — форму списка. Но для редактирования одной конкретной записи часто нужна отдельная форма записи, где поля расположены удобно, а лишние строки не отвлекают. Понимание того, как открыть форму записи, требуется и пользователю в режиме «Предприятие», и разработчику, который вызывает её программно.
Способ открытия зависит от типа регистра. Для независимого регистра сведений каждая запись является отдельным объектом, и платформа умеет показывать её в собственной форме. Для регистра, подчинённого регистратору, отдельной формы записи не существует — строки редактируются через документ-регистратор, и это принципиальное ограничение платформы, которое нельзя обойти настройкой.
Ниже разобраны все рабочие варианты: открытие записи двойным щелчком из списка, программный вызов через ОткрытьФорму и ПоказатьЗначение, создание собственной формы записи в конфигураторе, а также типичные ошибки, из-за которых вместо формы записи открывается список или появляется сообщение об ошибке.
Когда открывается форма записи, а когда только список
Платформа 1С различает два режима хранения регистра сведений. Независимый регистр — это таблица, где каждая строка самостоятельна: у неё есть измерения, ресурсы и, при необходимости, период. Такая запись имеет собственный ключ записи и может быть открыта в отдельной форме. Примеры из типовых конфигураций — «Курсы валют», «Штрихкоды номенклатуры».
Подчинённый регистратору регистр сведений заполняется только движениями документов. Его записи не существуют вне документа, поэтому платформа не предоставляет для них форму записи. Попытка открыть её программно завершится ошибкой «Форма не найдена» или открытием формы списка. Чтобы изменить такую запись, нужно открыть сам документ-регистратор и скорректировать его движения.
Проверить режим подчинения можно в конфигураторе: откройте свойства регистра сведений и посмотрите поле «Режим записи». Значение «Независимый» означает, что форма записи доступна, «Подчинение регистратору» — что редактирование идёт только через документ.
Открытие формы записи в режиме «Предприятие»
Самый простой способ — открыть список регистра и дважды щёлкнуть по нужной строке. Если для регистра определена форма записи (стандартная или созданная разработчиком), она откроется в отдельном окне с полями измерений и ресурсов. Если формы записи нет, строка будет редактироваться прямо в таблице списка.
Найти регистр в интерфейсе можно через меню «Все функции» (в тонком клиенте открывается через кнопку с тремя полосками или сочетанием, зависящим от конфигурации), раздел «Регистры сведений». В типовых конфигурациях многие регистры вынесены в прикладные разделы: например, курсы валют — в раздел настроек или справочников.
Создание новой записи
Кнопка «Создать» в форме списка независимого регистра открывает пустую форму записи, если она есть, либо добавляет новую строку в таблицу. Для периодического регистра в форме записи обязательно заполняется поле «Период» — без него запись не сохранится. Измерения также должны быть заполнены, иначе платформа выдаст сообщение о нарушении уникальности ключа.
- 1Откройте «Все функции» → «Регистры сведений» и выберите нужный регистр
- 2Найдите нужную строку через поиск или отбор
- 3Дважды щёлкните по строке — откроется форма записи
- 4Измените значения ресурсов и нажмите «Записать и закрыть»
- 5Обновите список и убедитесь, что изменения сохранились
Программное открытие формы записи
Во встроенном языке для открытия формы записи используется метод ОткрытьФорму с указанием полного имени формы и параметра ключа записи. Ключ формируется через менеджер регистра: создаётся структура с измерениями (и периодом), из неё строится ключ записи, который передаётся в параметре «Ключ».
&НаКлиенте
Процедура ОткрытьЗаписьКурса(Команда)
ЗначенияКлюча = Новый Структура;
ЗначенияКлюча.Вставить("Период", ТекущаяДата());
ЗначенияКлюча.Вставить("Валюта", Валюта);
КлючЗаписи = ПолучитьКлючЗаписи(ЗначенияКлюча);
ПараметрыФормы = Новый Структура("Ключ", КлючЗаписи);
ОткрытьФорму("РегистрСведений.КурсыВалют.ФормаЗаписи", ПараметрыФормы);
КонецПроцедуры
&НаСервере
Функция ПолучитьКлючЗаписи(ЗначенияКлюча)
Возврат РегистрыСведений.КурсыВалют.СоздатьКлючЗаписи(ЗначенияКлюча);
КонецФункцииОбратите внимание: СоздатьКлючЗаписи — серверный метод, поэтому в тонком клиенте его вызывают через серверную функцию. Если передать ключ записи, которой ещё нет в базе, форма откроется в режиме создания новой записи с предзаполненными измерениями — это удобный приём для ввода данных из других объектов.
Открытие формы для новой записи
Для создания новой записи параметр «Ключ» не передаётся, а измерения заполняются через параметр «ЗначенияЗаполнения». Форма откроется пустой, но с уже подставленными значениями, и пользователю останется ввести ресурсы.
&НаКлиенте
Процедура НоваяЗапись(Команда)
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Номенклатура", Номенклатура);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
ОткрытьФорму("РегистрСведений.ШтрихкодыНоменклатуры.ФормаЗаписи", ПараметрыФормы);
КонецПроцедурыАльтернатива: ПоказатьЗначение
Если нужно просто показать пользователю запись без сложной логики, подходит ПоказатьЗначение — платформа сама определит, какую форму открыть для переданного ключа записи. Минус в том, что нельзя передать дополнительные параметры и обработать закрытие формы.
Создание собственной формы записи в конфигураторе
Если стандартной формы недостаточно — нужны дополнительные проверки, группировка полей, программная обработка ввода — создайте собственную форму записи. В конфигураторе откройте ветку регистра сведений, перейдите на закладку «Формы» и добавьте новую форму с видом «Форма записи». Конструктор предложит разместить измерения и ресурсы автоматически.
Чтобы форма использовалась по умолчанию, в свойствах регистра в поле «Основная форма записи» укажите созданную форму. После этого двойной щелчок в списке и программный вызов ОткрытьФорму без явного имени формы будут открывать именно её.
В модуле формы записи доступны стандартные события: ПриСозданииНаСервере, ПередЗаписью, ПослеЗаписи. В них удобно реализовывать контроль дублей, заполнение служебных полей и проверку прав. Основной реквизит формы называется «Запись» — обращение к полям идёт через него, например Запись.Валюта.
Типичные проблемы и их решение
Наиболее частая ситуация — вместо формы записи открывается форма списка. Причины: для регистра не назначена основная форма записи и платформа не может построить её автоматически (например, в динамическом списке переопределён запрос), либо регистр подчинён регистратору. Решение — создать форму записи явно и назначить её основной.
Вторая типичная ошибка — «Нарушение уникальности ключа записи» при сохранении. Она возникает, когда в базе уже есть запись с таким же набором измерений и периода. Перед записью стоит выполнить поиск существующей записи по ключу и предложить пользователю отредактировать её вместо создания дубля.
Третья проблема — программный вызов ОткрытьФорму падает с ошибкой «Ошибка передачи данных между клиентом и сервером» или возвращает «Неопределено». Чаще всего причина в том, что ключ записи сформирован с неправильным набором измерений: лишние или отсутствующие поля структуры. Состав структуры должен точно совпадать с измерениями регистра плюс период для периодического регистра.
Проверка результата и ограничения
После открытия формы записи убедитесь, что в ней отображаются именно те измерения, по которым строился ключ: значение валюты, номенклатуры, периода. Если поля пустые или подставлены другие значения — ключ сформирован неправильно. После записи и закрытия формы обновите список регистра и проверьте, что изменённая строка отображается с новыми данными.
Учитывайте права доступа: у пользователя должны быть права на просмотр и изменение регистра сведений. При их отсутствии форма откроется в режиме «только просмотр» или не откроется вовсе. В механизме RLS (ограничение доступа на уровне записей) часть записей может быть скрыта — программно сформированный ключ укажет на запись, которую пользователь не увидит.
Как проверить результат
Измерения и период совпадают с ключом, ресурсы показывают текущие значения
Поля пустые или подставлены другие значения — ключ сформирован неверно
Форма закрывается без сообщений, список показывает обновлённую строку
Ошибка уникальности ключа — запись с такими измерениями уже существует
Открылась форма записи с полями одной строки
Открылся список — форма записи не назначена или регистр подчинён регистратору
Частые вопросы
Почему при двойном щелчке по строке регистра ничего не открывается?
У регистра не назначена форма записи, и платформа не смогла сгенерировать её автоматически, либо регистр подчинён регистратору. Создайте форму записи в конфигураторе и укажите её как основную в свойствах регистра.
Можно ли открыть форму записи регистра, подчинённого регистратору?
Нет, платформа не поддерживает форму записи для таких регистров. Записи создаются и изменяются только движениями документа. Откройте документ-регистратор и скорректируйте его, затем перепроведите.
Как открыть форму записи в режиме только для чтения?
Передайте в параметрах формы ключ записи и параметр «ТолькоПросмотр» со значением Истина: Новый Структура("Ключ, ТолькоПросмотр", КлючЗаписи, Истина). Форма откроется без возможности редактирования.
Чем ОткрытьФорму отличается от ПоказатьЗначение для записи регистра?
ОткрытьФорму позволяет передать параметры, указать конкретную форму и получить оповещение о закрытии. ПоказатьЗначение просто открывает объект в форме по умолчанию — подходит для быстрого просмотра без дополнительной логики.
Форма открывается, но поля пустые, хотя запись в базе есть. В чём причина?
Структура ключа записи не совпадает с набором измерений регистра: пропущено измерение, лишнее поле или неверный тип значения. Для периодического регистра проверьте, что период передан с точностью, соответствующей периодичности регистра.
Как открыть форму записи из мобильного клиента?
Механизм тот же — ОткрытьФорму с именем формы записи и ключом. Убедитесь, что форма адаптирована под мобильный клиент: сложные управляемые формы с расширенными элементами могут отображаться некорректно, поэтому для мобильного решения часто создают отдельную упрощённую форму.
Что важно запомнить
Форма записи есть только у независимых регистров сведений. В интерфейсе она открывается двойным щелчком по строке, программно — через ОткрытьФорму с ключом записи, сформированным методом СоздатьКлючЗаписи на сервере. Если форма не открывается, проверьте режим записи регистра, назначение основной формы и точное совпадение структуры ключа с измерениями.