Как найти и заменить данные, текст и код в 1С

· 9 мин

Содержание

Найти значение в любом списке 1С 8.3 можно клавишей Ctrl+F (строка поиска) или Alt+F (расширенный поиск по конкретной колонке), а заменить сразу во многих документах — командой группового изменения реквизитов или через «Поиск и удаление дублей». В модулях Конфигуратора для этого служат Ctrl+F, Ctrl+H и глобальный поиск Ctrl+Shift+F.

Частое заблуждение — что в 1С «как в Word» есть одна кнопка «Найти и заменить» для всей базы. Такой кнопки нет. Поиск и замена в 1С устроены по-разному для пользователя, для администратора данных и для разработчика. Ниже — по каждому уровню отдельно.

Поиск в списках и формах 1С:Предприятия

В режиме 1С:Предприятие поиск работает в каждом списке: справочники, журналы документов, регистры. Интерфейс «Такси» (платформа 8.3) даёт три способа.

Строка поиска над списком

  1. Откройте список, например Справочники → Контрагенты.
  2. Нажмите Ctrl+F или щёлкните в поле «Поиск» справа над таблицей.
  3. Наберите часть слова, ИНН, номер документа или сумму.
  4. Список отфильтруется по всем видимым колонкам.

Поиск ищет подстроку: «рога» найдёт «ООО Рога и копыта». Регистр не важен.

Расширенный поиск по одной колонке

Когда строка поиска находит слишком много, сузьте поиск до колонки:

  1. Встаньте на нужную колонку, например «Сумма».
  2. Нажмите Alt+F или выберите в меню Еще команду «Расширенный поиск».
  3. Укажите значение и вариант сравнения: по началу строки, по любой части или точное совпадение.
  4. Нажмите «Найти».

Сверху появится плашка с условием отбора. Снять её — крестиком на плашке или Ctrl+Q.

Глобальный поиск по базе

В верхней части главного окна есть поле поиска по всей информационной базе. Оно ищет и команды меню, и данные. Чтобы находились слова внутри документов и справочников, должен быть включён полнотекстовый поиск и обновлён его индекс. Настройка — в разделе Администрирование → Общие настройки.

Если глобальный поиск «не видит» документ, созданный сегодня, индекс просто не обновлён. Обновите его в той же настройке или дождитесь регламентного задания.

Горячие клавиши для поиска и замены

Одна таблица на все режимы — удобно держать под рукой.

ДействиеГде работаетКлавиши
Строка поиска в списке1С:ПредприятиеCtrl+F
Расширенный поиск по колонке1С:ПредприятиеAlt+F
Отменить поиск1С:ПредприятиеCtrl+Q
Найти в тексте модуляКонфигураторCtrl+F
Найти следующее вхождениеКонфигураторF3
Заменить в тексте модуляКонфигураторCtrl+H
Глобальный поиск по конфигурацииКонфигураторCtrl+Shift+F
Перейти к определению процедурыКонфигураторF12

Несколько приёмов, о которых знают не все:

  • 🔎 В поле ввода ссылки (контрагент, номенклатура) можно сразу печатать часть наименования или кода — 1С предложит подходящие варианты, открывать форму выбора не нужно.
  • 📋 Выделите слово в модуле и нажмите Ctrl+F — оно само подставится в поле поиска.
  • ⌨️ В форме выбора поиск по введённым символам срабатывает по колонке, на которой стоит курсор.

Массовая замена значений в справочниках и документах

Это главный пользовательский сценарий: «у 300 товаров поменять ставку НДС», «во всех документах заменить одного контрагента на другого». Вручную это часы работы и риск пропустить строку. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) для этого есть готовые инструменты.

Перед любой массовой заменой сделайте резервную копию базы . Отменить групповое изменение одной кнопкой нельзя.

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

Подходит, когда нужно у многих объектов одного вида поставить одинаковое значение реквизита.

  1. Откройте список, например справочник «Номенклатура».
  2. Выделите нужные строки: Ctrl + щелчок или Shift + стрелки. Можно сначала отфильтровать список поиском, затем выделить всё Ctrl+A.
  3. В меню Еще выберите команду «Изменить выделенные».
  4. В открывшейся обработке отметьте реквизиты, которые меняете, и задайте новые значения.
  5. Нажмите «Изменить реквизиты» и дождитесь отчёта о результате.

Ту же обработку можно открыть из раздела Администрирование → Обслуживание и отобрать объекты по условиям, не выделяя их в списке.

Замена одного элемента другим во всех ссылках

Когда в базе два элемента-дубля (два «Иванов И.И.», два одинаковых товара), нужно не поменять реквизит, а перенести все ссылки со старого элемента на правильный. Для этого служит обработка «Поиск и удаление дублей» в разделе Администрирование → Обслуживание.

  1. Выберите вид справочника и правила сравнения (по наименованию, ИНН и т. п.).
  2. Нажмите поиск — программа покажет группы похожих элементов.
  3. В каждой группе отметьте основной элемент — тот, что остаётся.
  4. Запустите замену: все документы, регистры и справочники, где был дубль, получат ссылку на основной элемент.
  5. Дубли будут помечены на удаление или удалены — в зависимости от выбранного варианта.

Замена ссылок перезаписывает документы, в том числе в закрытых периодах. Если в базе установлена дата запрета изменения, часть документов не перезапишется, и программа покажет их списком. Решайте с главбухом, открывать ли период, а не снимайте запрет молча.

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

Что нужно заменить?

Поиск и замена в Конфигураторе

Для разработчика поиск и замена в 1С — это работа с текстами модулей и с деревом метаданных.

В одном модуле

  • Ctrl+F — окно поиска. Флажки «Учитывать регистр» и «Слово целиком» сильно сокращают ложные совпадения.
  • Ctrl+H — замена. Кнопка «Заменить» меняет текущее вхождение, «Заменить все» — все в модуле.
  • Можно ограничить замену выделенным фрагментом: выделите процедуру, затем откройте замену.

Во всей конфигурации

Глобальный поиск (Ctrl+Shift+F, меню Правка) ищет строку во всех модулях сразу. Результаты открываются в окне «Результаты поиска», двойной щелчок переносит к строке.

Для массовой правки в Конфигураторе есть команда глобальной замены в том же меню Правка. Пользуйтесь ей осторожно: сначала выполните глобальный поиск с теми же параметрами и просмотрите все результаты.

Поиск ссылок на объект метаданных

Чтобы узнать, где используется реквизит, регистр или общий модуль, щёлкните объект в дереве конфигурации правой кнопкой и выберите «Поиск ссылок на объект». Это точнее текстового поиска: находятся ссылки из форм, подписок на события, ролей, а не только из кода.

Перед переименованием реквизита сначала посмотрите ссылки на объект. Имя реквизита часто сидит в текстах запросов внутри строк, и обычный рефакторинг его не найдёт.

Ловушки при замене в коде 1С

Текстовая замена не знает ничего о синтаксисе. Отсюда типовые поломки.

  • 🧩 Частичное совпадение имени. Замена Сумма на СуммаДокумента без флажка «Слово целиком» превратит СуммаНДС в СуммаДокументаНДС.
  • 📝 Тексты запросов. Имена полей в запросах — это строки. Глобальный поиск их найдёт, а переименование через свойства реквизита — нет. После переименования реквизита ищите старое имя по всем модулям.
  • 🔗 Обработчики событий форм. Имя процедуры-обработчика записано в свойствах элемента формы. Переименуете процедуру в модуле — привязка оборвётся, событие перестанет срабатывать, а синтаксическая проверка ошибки не покажет.
  • 🔒 Объекты на поддержке. В типовой конфигурации модули на замке. Замена в них молча пропустится, пока не включена возможность изменения. Для доработок типовых правильнее использовать расширение конфигурации , а не снимать конфигурацию с поддержки.
  • 🌐 Строки интерфейса на нескольких языках. Замена текста в коде не тронет заголовки форм и команд — они хранятся в свойствах объектов.

После массовой замены запустите Конфигурация → Проверка конфигурации и синтаксический контроль модулей. Затем сохраните конфигурацию и только потом обновляйте конфигурацию базы данных.

Перед глобальной заменой в коде
Выполнено: 0 / 5

Отличия поиска и замены в 1С 7.7

Версия 7.7 давно снята с поддержки, но базы на ней ещё встречаются. Главные отличия от 8.3:

Возможность1С 8.31С 7.7
Строка поиска над спискоместь, Ctrl+Fнет, быстрый поиск набором символов по колонке сортировки
Полнотекстовый поиск по данныместьнет
Групповое изменение реквизитовтиповая обработка БСПтолько внешней обработкой .ert
Замена дублей с переносом ссылоктиповая обработка БСПтолько внешней обработкой
Поиск ссылок на объект метаданныхестьограниченно

Обработки от 8.3 в 7.7 не открываются: форматы файлов и язык запросов разные. Для разовой массовой замены в 7.7 обычно пишут свою внешнюю обработку под конкретную конфигурацию.

Автоматизация замены обработками

Когда типовых инструментов мало — например, заменить товар только в документах реализации за квартал, — пишут внешнюю обработку. Ниже рабочий пример для Бухгалтерии 3.0: замена номенклатуры в табличной части «Товары» документов «Реализация (акт, накладная, УПД)». Код выполняется на сервере.

&НаСервере
Процедура ЗаменитьНоменклатуруНаСервере(СтараяНоменклатура, НоваяНоменклатура, НачалоПериода, КонецПериода)

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	Т.Ссылка КАК Ссылка
	|ИЗ
	|	Документ.РеализацияТоваровУслуг.Товары КАК Т
	|ГДЕ
	|	Т.Номенклатура = &Старая
	|	И Т.Ссылка.Дата МЕЖДУ &Начало И &Конец";
	Запрос.УстановитьПараметр("Старая", СтараяНоменклатура);
	Запрос.УстановитьПараметр("Начало", НачалоПериода);
	Запрос.УстановитьПараметр("Конец", КонецДня(КонецПериода));

	Выборка = Запрос.Выполнить().Выбрать();
	Изменено = 0;

	Пока Выборка.Следующий() Цикл
		ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
		Для Каждого СтрокаТЧ Из ДокОбъект.Товары Цикл
			Если СтрокаТЧ.Номенклатура = СтараяНоменклатура Тогда
				СтрокаТЧ.Номенклатура = НоваяНоменклатура;
			КонецЕсли;
		КонецЦикла;
		Попытка
			Если ДокОбъект.Проведен Тогда
				ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
			Иначе
				ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
			КонецЕсли;
			Изменено = Изменено + 1;
		Исключение
			Сообщить(СтрШаблон("Не записан %1: %2", Выборка.Ссылка, КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
		КонецПопытки;
	КонецЦикла;

	Сообщить(СтрШаблон("Изменено документов: %1", Формат(Изменено, "ЧН=0; ЧГ=0")));

КонецПроцедуры

Что важно в этом примере:

  1. Документ перепроводится, если был проведён. Иначе в регистрах останется старый товар, а в документе — новый.
  2. Ошибки записи (дата запрета, незаполненные реквизиты) не обрывают обработку, а выводятся сообщением.
  3. Период ограничен, чтобы не трогать закрытые кварталы случайно.

Для замены текста внутри строковых реквизитов служит функция СтрЗаменить(). Например, убрать двойные пробелы в наименованиях:

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

СтрЗаменить() меняет все вхождения за один вызов и учитывает регистр символов.

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

Частые ошибки при поиске и замене

  • ❌ Ищут по колонке, которой нет в списке. Строка поиска работает только по видимым колонкам. Нужное поле добавьте через Еще → Изменить форму.
  • ❌ Забывают снять отбор. После поиска список показывает не все записи, и кажется, что документы «пропали». Проверьте плашку отбора над таблицей или нажмите Ctrl+Q.
  • ❌ Меняют реквизит без перепроведения. Групповое изменение у документов меняет реквизит, но проводки и движения формируются заново только при проведении. Если реквизит влияет на учёт — перепроведите документы за период.
  • ❌ Удаляют дубль вручную. Пометка на удаление без замены ссылок оставит «битые» ссылки в документах. Сначала замена, потом удаление.

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

Почему поиск в списке работает очень медленно?
В большой базе строка поиска перебирает все видимые колонки. Сузьте поиск расширенным поиском по одной колонке (Alt+F) или сначала поставьте отбор по периоду.
Можно ли отменить групповое изменение реквизитов?
Кнопки отмены нет. Вернуть прежние значения можно повторным групповым изменением, если вы их помните, или восстановлением из резервной копии.
Кто может пользоваться «Поиском и удалением дублей»?
Обычно пользователь с полными правами или с правом администрирования данных. Рядовому бухгалтеру обработка может быть не видна — это настраивается профилями групп доступа.
Ищет ли глобальный поиск Конфигуратора в расширениях?
Расширения — отдельные конфигурации. Откройте нужное расширение через Конфигурация → Расширения конфигурации и ищите внутри него.
Как найти документ, если известна только сумма?
Откройте журнал документов или нужный список, встаньте на колонку «Сумма» и выполните расширенный поиск Alt+F с вариантом «точное совпадение».