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

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

Как заменить в 1С: значения, дубли и текст в коде

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

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

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

Определяем, какая именно замена нужна

Прежде чем открывать обработки, важно понять природу задачи. Если контрагент переименовался или у группы товаров нужно поменять ставку НДС — это замена значения реквизита, и объекты остаются самостоятельными. Если в справочнике «Номенклатура» завели два одинаковых товара и по обоим уже есть документы — это устранение дубля: один элемент поглощает другой, и все ссылки в документах перенаправляются на оставшийся.

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

Маршрут решения

Как выбрать инструмент

Нужно поменять значение реквизита у многих объектов (ставка НДС, ответственный, группа)Используйте «Групповое изменение реквизитов» в разделе Администрирование
В справочнике завелись одинаковые элементы с документами по каждомуИспользуйте «Поиск и удаление дублей»
Нужно заменить текст, имя метода или строку в коде конфигурацииРаботайте через глобальный поиск и замену в конфигураторе
Замена разовая, в одном объектеОткройте объект и отредактируйте вручную — обработки не нужны

Массовая замена значений через «Групповое изменение реквизитов»

В типовых конфигурациях на библиотеке стандартных подсистем обработка называется «Групповое изменение реквизитов» и находится в разделе «Администрирование» → «Обслуживание» либо в «НСИ и администрирование» → «Администрирование». В некоторых конфигурациях она доступна по прямому поиску в меню «Все функции». Для запуска нужны права администратора или права на использование этой обработки.

Порядок работы: выберите тип объектов (например, «Номенклатура» или «Документы → Реализация товаров и услуг»), задайте отбор — какие именно элементы будут затронуты. Отбор критически важен: без него обработка изменит все элементы справочника или все документы за всё время. Затем в таблице реквизитов отметьте нужный, укажите новое значение и нажмите «Изменить реквизиты».

Порядок массовой замены реквизита
  1. 1
    Сделайте резервную копию базы или выгрузку через конфигуратор
  2. 2
    Откройте Администрирование → Групповое изменение реквизитов
  3. 3
    Выберите тип объектов и задайте отбор по нужным элементам
  4. 4
    Проверьте количество отобранных объектов — оно должно совпадать с ожиданием
  5. 5
    Отметьте реквизит, укажите новое значение, запустите изменение
  6. 6
    Дождитесь отчёта: обработка покажет, сколько объектов изменено и где были ошибки
  7. 7
    Откройте несколько изменённых объектов и убедитесь в корректности

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

Замена дублей в справочниках

Дубли контрагентов, номенклатуры и физических лиц — частая проблема после обменов и ручного ввода. Просто удалить лишний элемент нельзя: на него ссылаются документы, и удаление оставит битые ссылки. Правильный путь — обработка «Поиск и удаление дублей» в разделе «Администрирование» → «Обслуживание» → «Корректировка данных».

Запустите поиск, указав справочник и правила сравнения: по наименованию, ИНН и КПП для контрагентов, по артикулу для товаров. Обработка покажет группы совпадений. В каждой группе отметьте «оригинал» — элемент, который останется. Все ссылки из документов, регистров и других справочников будут автоматически перенаправлены на оригинал, а дубли помечены на удаление.

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

Замена текста и кода в конфигураторе

Разработчику для замены строк, имён переменных и вызовов процедур служит глобальный поиск: меню «Правка» → «Глобальный поиск» (Ctrl+Shift+F) и «Глобальная замена» (Ctrl+Shift+H). Укажите строку поиска, область (вся конфигурация или выбранные объекты) и при необходимости включите поиск по слову целиком и с учётом регистра — это защитит от случайной замены совпадающих подстрок.

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

bsl
// Пример: замена значения реквизита запросом и обходом выборки
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ СтавкаНДС = &СтараяСтавка");
Запрос.УстановитьПараметр("СтараяСтавка", Перечисления.СтавкиНДС.НДС18);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Объект = Выборка.Ссылка.ПолучитьОбъект();
    Объект.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
    Объект.Записать();
КонецЦикла;

Если замена касается данных, а штатной обработки под рукой нет (самописная конфигурация), программный обход с записью объектов — рабочий вариант, но выполнять его стоит через внешнюю обработку в тестовой базе. Прямая правка запросами к таблицам СУБД в обход платформы недопустима: она нарушает логику контроля ссылочной целостности и версионирования.

Поиск мест использования значения перед заменой

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

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

Проверка результата и типичные ошибки

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

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

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

Отчёт обработки о замене
Норма

Число изменённых объектов равно числу отобранных, ошибок нет

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

Есть пропущенные объекты с ошибками блокировки или проверки заполнения

Поиск старого значения
Норма

Старое значение не находится ни в одном объекте

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

Значение встречается в объектах, не попавших в отбор

Открытие документов после замены дублей
Норма

Документы открываются, ссылка указывает на оригинал

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

Появились битые ссылки вида «Объект не найден»

Проверка конфигурации после замены в коде
Норма

Проверка завершается без ошибок

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

Ошибки «Процедура или функция не обнаружена»

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

Ограничения и когда привлекать специалиста

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

Также к специалисту стоит обратиться, если база работает в клиент-серверном режиме с большим числом пользователей, замена затрагивает миллионы записей или требуется замена в закрытых периодах с последующим восстановлением последовательности проведения. Самостоятельные эксперименты в таких условиях рискуют надолго остановить работу компании.

Итог

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

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

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

Можно ли отменить групповое изменение реквизитов?

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

Почему обработка изменила не все объекты?

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

Что происходит с документами при замене дубля контрагента?

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

Как заменить значение только в одном документе, а не массово?

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

Опасно ли пользоваться глобальной заменой в конфигураторе?

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

Нужны ли особые права для обработок замены?

Да. «Групповое изменение реквизитов» и «Поиск и удаление дублей» обычно доступны пользователям с ролью администратора или с отдельно выданным правом на эти обработки. Если пункт меню не виден, обратитесь к администратору базы — это ограничение прав, а не отсутствие функции в конфигурации.