Как найти и заменить данные, текст и код в 1С
Содержание
Найти значение в любом списке 1С 8.3 можно клавишей Ctrl+F (строка поиска) или Alt+F (расширенный поиск по конкретной колонке), а заменить сразу во многих документах — командой группового изменения реквизитов или через «Поиск и удаление дублей». В модулях Конфигуратора для этого служат Ctrl+F, Ctrl+H и глобальный поиск Ctrl+Shift+F.
Частое заблуждение — что в 1С «как в Word» есть одна кнопка «Найти и заменить» для всей базы. Такой кнопки нет. Поиск и замена в 1С устроены по-разному для пользователя, для администратора данных и для разработчика. Ниже — по каждому уровню отдельно.
Поиск в списках и формах 1С:Предприятия
В режиме 1С:Предприятие поиск работает в каждом списке: справочники, журналы документов, регистры. Интерфейс «Такси» (платформа 8.3) даёт три способа.
Строка поиска над списком
- Откройте список, например
Справочники → Контрагенты. - Нажмите
Ctrl+Fили щёлкните в поле «Поиск» справа над таблицей. - Наберите часть слова, ИНН, номер документа или сумму.
- Список отфильтруется по всем видимым колонкам.
Поиск ищет подстроку: «рога» найдёт «ООО Рога и копыта». Регистр не важен.
Расширенный поиск по одной колонке
Когда строка поиска находит слишком много, сузьте поиск до колонки:
- Встаньте на нужную колонку, например «Сумма».
- Нажмите
Alt+Fили выберите в менюЕщекоманду «Расширенный поиск». - Укажите значение и вариант сравнения: по началу строки, по любой части или точное совпадение.
- Нажмите «Найти».
Сверху появится плашка с условием отбора. Снять её — крестиком на плашке или 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) для этого есть готовые инструменты.
Перед любой массовой заменой сделайте резервную копию базы . Отменить групповое изменение одной кнопкой нельзя.
Групповое изменение реквизитов
Подходит, когда нужно у многих объектов одного вида поставить одинаковое значение реквизита.
- Откройте список, например справочник «Номенклатура».
- Выделите нужные строки:
Ctrl+ щелчок илиShift+ стрелки. Можно сначала отфильтровать список поиском, затем выделить всёCtrl+A. - В меню
Ещевыберите команду «Изменить выделенные». - В открывшейся обработке отметьте реквизиты, которые меняете, и задайте новые значения.
- Нажмите «Изменить реквизиты» и дождитесь отчёта о результате.
Ту же обработку можно открыть из раздела Администрирование → Обслуживание и отобрать объекты по условиям, не выделяя их в списке.
Замена одного элемента другим во всех ссылках
Когда в базе два элемента-дубля (два «Иванов И.И.», два одинаковых товара), нужно не поменять реквизит, а перенести все ссылки со старого элемента на правильный. Для этого служит обработка «Поиск и удаление дублей» в разделе Администрирование → Обслуживание.
- Выберите вид справочника и правила сравнения (по наименованию, ИНН и т. п.).
- Нажмите поиск — программа покажет группы похожих элементов.
- В каждой группе отметьте основной элемент — тот, что остаётся.
- Запустите замену: все документы, регистры и справочники, где был дубль, получат ссылку на основной элемент.
- Дубли будут помечены на удаление или удалены — в зависимости от выбранного варианта.
Замена ссылок перезаписывает документы, в том числе в закрытых периодах. Если в базе установлена дата запрета изменения, часть документов не перезапишется, и программа покажет их списком. Решайте с главбухом, открывать ли период, а не снимайте запрет молча.
Какой инструмент выбрать
Поиск и замена в Конфигураторе
Для разработчика поиск и замена в 1С — это работа с текстами модулей и с деревом метаданных.
В одном модуле
Ctrl+F— окно поиска. Флажки «Учитывать регистр» и «Слово целиком» сильно сокращают ложные совпадения.Ctrl+H— замена. Кнопка «Заменить» меняет текущее вхождение, «Заменить все» — все в модуле.- Можно ограничить замену выделенным фрагментом: выделите процедуру, затем откройте замену.
Во всей конфигурации
Глобальный поиск (Ctrl+Shift+F, меню Правка) ищет строку во всех модулях сразу. Результаты открываются в окне «Результаты поиска», двойной щелчок переносит к строке.
Для массовой правки в Конфигураторе есть команда глобальной замены в том же меню Правка. Пользуйтесь ей осторожно: сначала выполните глобальный поиск с теми же параметрами и просмотрите все результаты.
Поиск ссылок на объект метаданных
Чтобы узнать, где используется реквизит, регистр или общий модуль, щёлкните объект в дереве конфигурации правой кнопкой и выберите «Поиск ссылок на объект». Это точнее текстового поиска: находятся ссылки из форм, подписок на события, ролей, а не только из кода.
Перед переименованием реквизита сначала посмотрите ссылки на объект. Имя реквизита часто сидит в текстах запросов внутри строк, и обычный рефакторинг его не найдёт.
Ловушки при замене в коде 1С
Текстовая замена не знает ничего о синтаксисе. Отсюда типовые поломки.
- 🧩 Частичное совпадение имени. Замена
СумманаСуммаДокументабез флажка «Слово целиком» превратитСуммаНДСвСуммаДокументаНДС. - 📝 Тексты запросов. Имена полей в запросах — это строки. Глобальный поиск их найдёт, а переименование через свойства реквизита — нет. После переименования реквизита ищите старое имя по всем модулям.
- 🔗 Обработчики событий форм. Имя процедуры-обработчика записано в свойствах элемента формы. Переименуете процедуру в модуле — привязка оборвётся, событие перестанет срабатывать, а синтаксическая проверка ошибки не покажет.
- 🔒 Объекты на поддержке. В типовой конфигурации модули на замке. Замена в них молча пропустится, пока не включена возможность изменения. Для доработок типовых правильнее использовать расширение конфигурации , а не снимать конфигурацию с поддержки.
- 🌐 Строки интерфейса на нескольких языках. Замена текста в коде не тронет заголовки форм и команд — они хранятся в свойствах объектов.
После массовой замены запустите Конфигурация → Проверка конфигурации и синтаксический контроль модулей. Затем сохраните конфигурацию и только потом обновляйте конфигурацию базы данных.
Отличия поиска и замены в 1С 7.7
Версия 7.7 давно снята с поддержки, но базы на ней ещё встречаются. Главные отличия от 8.3:
| Возможность | 1С 8.3 | 1С 7.7 |
|---|---|---|
| Строка поиска над списком | есть, Ctrl+F | нет, быстрый поиск набором символов по колонке сортировки |
| Полнотекстовый поиск по данным | есть | нет |
| Групповое изменение реквизитов | типовая обработка БСП | только внешней обработкой .ert |
| Замена дублей с переносом ссылок | типовая обработка БСП | только внешней обработкой |
| Поиск ссылок на объект метаданных | есть | ограниченно |
Обработки от 8.3 в 7.7 не открываются: форматы файлов и язык запросов разные. Для разовой массовой замены в 7.7 обычно пишут свою внешнюю обработку под конкретную конфигурацию.
Автоматизация замены обработками
Когда типовых инструментов мало — например, заменить товар только в документах реализации за квартал, — пишут внешнюю обработку. Ниже рабочий пример для Бухгалтерии 3.0: замена номенклатуры в табличной части «Товары» документов «Реализация (акт, накладная, УПД)». Код выполняется на сервере.
&НаСервере
Процедура ЗаменитьНоменклатуруНаСервере(СтараяНоменклатура, НоваяНоменклатура, НачалоПериода, КонецПериода)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Т.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК Т
|ГДЕ
| Т.Номенклатура = &Старая
| И Т.Ссылка.Дата МЕЖДУ &Начало И &Конец";
Запрос.УстановитьПараметр("Старая", СтараяНоменклатура);
Запрос.УстановитьПараметр("Начало", НачалоПериода);
Запрос.УстановитьПараметр("Конец", КонецДня(КонецПериода));
Выборка = Запрос.Выполнить().Выбрать();
Изменено = 0;
Пока Выборка.Следующий() Цикл
ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
Для Каждого СтрокаТЧ Из ДокОбъект.Товары Цикл
Если СтрокаТЧ.Номенклатура = СтараяНоменклатура Тогда
СтрокаТЧ.Номенклатура = НоваяНоменклатура;
КонецЕсли;
КонецЦикла;
Попытка
Если ДокОбъект.Проведен Тогда
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Иначе
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
Изменено = Изменено + 1;
Исключение
Сообщить(СтрШаблон("Не записан %1: %2", Выборка.Ссылка, КраткоеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;
КонецЦикла;
Сообщить(СтрШаблон("Изменено документов: %1", Формат(Изменено, "ЧН=0; ЧГ=0")));
КонецПроцедуры
Что важно в этом примере:
- Документ перепроводится, если был проведён. Иначе в регистрах останется старый товар, а в документе — новый.
- Ошибки записи (дата запрета, незаполненные реквизиты) не обрывают обработку, а выводятся сообщением.
- Период ограничен, чтобы не трогать закрытые кварталы случайно.
Для замены текста внутри строковых реквизитов служит функция СтрЗаменить(). Например, убрать двойные пробелы в наименованиях:
Объект = Ссылка.ПолучитьОбъект();
Объект.Наименование = СтрЗаменить(Объект.Наименование, " ", " ");
Объект.Записать();
СтрЗаменить() меняет все вхождения за один вызов и учитывает регистр символов.
Внешнюю обработку сначала запускайте на копии базы. В рабочей базе — когда пользователи не проводят документы того же вида: перепроведение сотен документов занимает время и может конфликтовать с их работой по блокировкам.
Частые ошибки при поиске и замене
- ❌ Ищут по колонке, которой нет в списке. Строка поиска работает только по видимым колонкам. Нужное поле добавьте через
Еще → Изменить форму. - ❌ Забывают снять отбор. После поиска список показывает не все записи, и кажется, что документы «пропали». Проверьте плашку отбора над таблицей или нажмите
Ctrl+Q. - ❌ Меняют реквизит без перепроведения. Групповое изменение у документов меняет реквизит, но проводки и движения формируются заново только при проведении. Если реквизит влияет на учёт — перепроведите документы за период.
- ❌ Удаляют дубль вручную. Пометка на удаление без замены ссылок оставит «битые» ссылки в документах. Сначала замена, потом удаление.
Частые вопросы
Почему поиск в списке работает очень медленно?
Alt+F) или сначала поставьте отбор по периоду.Можно ли отменить групповое изменение реквизитов?
Кто может пользоваться «Поиском и удалением дублей»?
Ищет ли глобальный поиск Конфигуратора в расширениях?
Конфигурация → Расширения конфигурации и ищите внутри него.Как найти документ, если известна только сумма?
Alt+F с вариантом «точное совпадение».