К статье
Практический материал

Справочники и Данные · 11 мин

Как изменить значение справочника в 1С

Как изменить значение справочника в 1С: ручное редактирование, групповая обработка, изменение через код. Проверка прав, типичные ошибки и ответы на вопросы.

Справочники в 1С хранят нормативно-справочную информацию: номенклатуру, контрагентов, сотрудников, склады, договоры. Изменение значения справочника — одна из самых частых операций, но у неё есть важная особенность: отредактированный элемент автоматически обновляется во всех документах и отчётах, где на него есть ссылки. Поэтому перед правкой нужно понимать, что именно вы меняете — отображаемое наименование, реквизит или сам объект.

Способ изменения зависит от задачи. Если нужно поправить один элемент — достаточно открыть его карточку. Если требуется заменить значение у сотен позиций — разумнее использовать групповую обработку. Программное изменение через встроенный язык применяют разработчики при автоматизации обмена и загрузки данных. Ниже разобраны все три подхода с условиями их применения.

Важно учитывать права доступа: в типовых конфигурациях редактирование многих справочников ограничено ролями. Если кнопка «Записать» недоступна или поле неактивно, проблема почти всегда в настройках прав, а не в самой базе.

Что проверить перед изменением элемента справочника

Прежде чем править данные, убедитесь, что у вас есть права на редактирование конкретного справочника. В типовых конфигурациях (1С:Бухгалтерия, Управление торговлей, ERP) часть справочников доступна только на просмотр для рядовых пользователей. Признак недостатка прав — неактивные поля, отсутствие кнопки записи или сообщение «Нарушение прав доступа» при попытке сохранить.

Второй момент — проверка связей. Элемент справочника может использоваться в проведённых документах, регистрах и других справочниках. Изменение реквизита (например, ставки НДС у номенклатуры или расчётного счёта у контрагента) повлияет на новые документы, а в некоторых конфигурациях — и на перепроведение старых. Найти все места использования можно через «Ещё → Найти ссылки на объект» или стандартный отчёт о местах использования.

Третья проверка — режим работы базы. В клиент-серверном варианте элемент может быть заблокирован другим пользователем, тогда при записи появится сообщение о конфликте блокировок. Дождитесь завершения сеанса коллеги или попросите его закрыть карточку элемента.

Как изменить значение через карточку элемента

Это базовый способ, подходящий для точечной правки одного или нескольких элементов. Откройте нужный справочник через главное меню или раздел (например, «Справочники → Номенклатура» или «Покупки → Контрагенты» — расположение зависит от конфигурации). Найдите элемент поиском по наименованию, коду или артикулу.

Дважды щёлкните по элементу или нажмите «Изменить» (F2 в ряде конфигураций) — откроется форма элемента. Внесите правки в нужные поля: наименование, реквизиты, табличные части. Затем нажмите «Записать» (сохраняет без закрытия формы) или «Записать и закрыть». Если поле не редактируется, проверьте, не является ли оно служебным или заполняемым автоматически из другого источника.

Некоторые поля доступны только через отдельные формы: например, история изменения значений (периодические реквизиты вроде юридического адреса) открывается по гиперссылке «История». В этом случае добавляйте новую строку с датой начала действия, а не затирайте старое значение — иначе документы прошлых периодов будут показывать некорректные данные.

Порядок действий при ручной правке
  1. 1
    Откройте справочник и найдите нужный элемент через поиск
  2. 2
    Откройте карточку двойным щелчком или кнопкой «Изменить»
  3. 3
    Отредактируйте нужные поля, не трогая служебные реквизиты
  4. 4
    Нажмите «Записать и закрыть»
  5. 5
    Откройте связанный документ или отчёт и убедитесь, что отображается новое значение

Как изменить значения у группы элементов

Когда править нужно десятки или сотни элементов — например, изменить группу продаж, признак использования или ответственного у части номенклатуры — ручная правка неэффективна. В типовых конфигурациях на управляемых формах есть встроенная обработка «Групповое изменение реквизитов». Она находится в разделе «Администрирование → Обслуживание → Корректировка данных» либо вызывается из списка справочника через «Ещё → Изменить выделенные».

Порядок работы: выделите элементы в списке (через Ctrl или по отбору), откройте обработку, выберите изменяемый реквизит и задайте новое значение. Перед выполнением проверьте предпросмотр — обработка показывает, сколько элементов будет изменено. После выполнения она выводит отчёт об успешных и неудачных записях с причинами ошибок.

Ограничения способа: обработка недоступна пользователям без соответствующих прав, а часть реквизитов (служебные, ключевые) в ней скрыта. Также не стоит менять так реквизиты, влияющие на учётные механизмы, — например, вид номенклатуры, если настроены счета учёта по видам: последствия для проводок будут неочевидны.

Как изменить значение программно через встроенный язык

Разработчики и администраторы меняют элементы справочников через встроенный язык 1С — в обработках, регламентных заданиях, обменах данными. Типовой шаблон: получить ссылку на элемент, создать объект, изменить реквизиты, записать.

ЭлементСсылка = Справочники.Номенклатура.НайтиПоКоду("000000123");

Если Не ЭлементСсылка.Пустая() Тогда

ЭлементОбъект = ЭлементСсылка.ПолучитьОбъект();

ЭлементОбъект.Наименование = "Новое наименование";

ЭлементОбъект.Записать();

КонецЕсли;

Ключевые правила безопасного программного изменения. Во-первых, работайте через объект (ПолучитьОбъект), а не через ссылку — реквизиты ссылки доступны только для чтения. Во-вторых, оборачивайте массовую запись в транзакцию, чтобы при ошибке не осталось частично обновлённых данных. В-третьих, учитывайте подписки на события и бизнес-логику: метод Записать() вызывает обработчики ПередЗаписью и ПриЗаписи, которые могут выполнять проверки и дозаполнение.

Если нужно записать элемент без срабатывания проверок (например, при загрузке из внешнего источника), используйте УстановитьПометкуУдаления или запись в режиме ОбменДанными.Загрузка = Истина — но только при полном понимании последствий, так как этот режим отключает контроль целостности.

bsl
ЭлементОбъект = Ссылка.ПолучитьОбъект();
ЭлементОбъект.Реквизит = НовоеЗначение;
ЭлементОбъект.Записать();

Выбор способа в зависимости от задачи

Разные ситуации требуют разных инструментов, и неправильный выбор стоит времени или данных. Одиночная правка через форму безопаснее всего: платформа выполняет все штатные проверки заполнения. Групповая обработка оправдана при массовой смене однотипных реквизитов. Программный способ — при интеграциях, загрузках из файлов и регламентных операциях.

Сравнение способов изменения

Ручное редактирование в форме

Подходит для 1–5 элементов. Максимум штатных проверок, минимальный риск. Не масштабируется.

Групповое изменение реквизитов

Для массовой правки однотипных полей. Быстро, но без отката и с ограниченным списком реквизитов.

Программное изменение

Для автоматизации и интеграций. Требует навыков разработки и понимания бизнес-логики конфигурации.

Отдельный случай — изменение значения, которое на самом деле является ссылкой на другой справочник (например, замена контрагента в договоре). Здесь меняется не «текст», а связь между объектами. Убедитесь, что новый элемент существует и не помечен на удаление, иначе получите битую ссылку в данных.

Как проверить результат изменения

После записи убедитесь, что изменение отразилось там, где ожидалось. Откройте заново карточку элемента — значения должны соответствовать внесённым. Если правили наименование или реквизит, выводимый в документах, откройте любой документ с этим элементом и проверьте отображение.

Для массовых изменений сверьте количество обработанных элементов с ожидаемым и постройте отчёт или отбор по новому значению реквизита — все целевые элементы должны в него попасть. Если часть записей не изменилась, смотрите протокол ошибок обработки: типичные причины — блокировки, права, незаполненные обязательные поля.

Контрольные точки

Как проверить результат

Карточка элемента после записи
Норма

Поля содержат новые значения, ошибок при открытии нет

Тревожный признак

Значения старые или появляется сообщение о нарушении прав

Документы, использующие элемент
Норма

Отображается актуальное значение реквизита

Тревожный признак

Показываются старые данные или битая ссылка

Отбор по новому значению в списке
Норма

Все изменённые элементы попадают в отбор

Тревожный признак

Часть элементов отсутствует — правка не применилась

Типичные ошибки и как их избежать

Самая распространённая ошибка — попытка изменить реквизит ссылки напрямую (Ссылка.Наименование = "...") в программном коде. Платформа выдаст ошибку «Поле объекта недоступно для записи», потому что ссылка предназначена только для чтения. Решение — работа через ПолучитьОбъект().

Вторая частая проблема — дубли элементов. Вместо изменения существующего элемента пользователь создаёт новый с похожим наименованием, и в базе появляются два «ООО Ромашка». Используйте поиск дублей («Администрирование → Обслуживание → Поиск и удаление дублей») и заменяйте использования на один правильный элемент, а не плодите новые.

Третья ошибка — правка периодических реквизитов «в лоб», без указания даты. Это искажает исторические данные: старые документы начинают показывать новое значение. Всегда добавляйте запись в историю с датой начала действия.

Типичные ошибки
01
Правка элемента без проверки мест использования — меняются данные в неожиданных документах и отчётах
02
Создание нового элемента вместо редактирования существующего — появляются дубли и путаница в отчётах
03
Групповое изменение без резервной копии — при ошибке откатить правку невозможно
04
Затирание истории периодического реквизита — искажаются документы прошлых периодов

Частые вопросы

Почему поле в карточке справочника недоступно для редактирования?

Чаще всего причина в правах доступа: роль пользователя не включает право изменения этого справочника или конкретного реквизита. Реже поле заблокировано настройками формы, является служебным или заполняется автоматически из другого объекта. Обратитесь к администратору для проверки ролей и профилей групп доступа.

Изменятся ли старые документы после правки элемента справочника?

Отображаемые значения (наименование, реквизиты) в старых документах обновятся автоматически, так как документ хранит ссылку на элемент, а не копию его данных. Однако проводки и движения регистров не пересчитаются, пока документ не перепроведён. Именно поэтому правка учётно значимых реквизитов в закрытом периоде требует согласования.

Как изменить значение сразу у нескольких тысяч элементов?

Используйте обработку «Групповое изменение реквизитов» с отбором по условию — она справится с большими объёмами. При очень больших выборках или сложной логике замены лучше написать программную обработку с транзакциями и пакетной записью. Перед запуском обязательно сделайте резервную копию.

Что делать, если при записи появляется ошибка конфликта блокировок?

Элемент уже открыт на редактирование другим пользователем или фоновым процессом. Узнайте через «Администрирование → Активные пользователи», кто работает с базой, и попросите закрыть карточку. Если блокировка «зависла» после аварийного завершения сеанса, администратор может завершить сеанс принудительно через консоль кластера или список активных пользователей.

Можно ли отменить изменение элемента справочника?

Штатной кнопки «отменить» нет. Варианты: вернуть старое значение вручную, восстановить данные из резервной копии или из архивной копии базы, а при включённом версионировании объектов — откатиться к предыдущей версии через историю изменений. Рекомендуется заранее включить версионирование для ключевых справочников, если конфигурация это поддерживает.

Чем изменение элемента отличается от пометки на удаление?

Пометка на удаление не стирает элемент, а исключает его из большинства отборов и запрещает выбор в новых документах — это способ «вывести из оборота» устаревшую позицию. Изменение элемента правит его данные, и он остаётся активным. Если элемент больше не используется, но нужен для истории, правильнее пометить его на удаление, а не менять значения.

Итог

Что важно запомнить

Для одиночной правки открывайте карточку элемента и записывайте изменения, для массовой — используйте групповое изменение реквизитов, для автоматизации — программный код через ПолучитьОбъект(). Перед правкой проверяйте права, места использования и делайте резервную копию при массовых операциях.