Замена данных в 1С 8.3: дубли справочников, реквизиты документов, константы и обработки

· 9 мин

Содержание

Заменить объект в 1С 8.3 проще всего штатными обработками. Дубль справочника меняют на правильный элемент через Администрирование → Обслуживание → Корректировка данных → Поиск и удаление дублей. Одно значение во многих документах меняют там же, обработкой «Групповое изменение реквизитов». Пути даны для типовых конфигураций на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.

Если штатных средств не хватает, остаются три пути. Константу правят в форме настроек или через «Функции для технического специалиста». Ссылки по всей базе заменяет код с методом НайтиПоСсылкам(). Внешнюю обработку меняют загрузкой нового файла в её карточку.

Что именно вы заменяете: выбор инструмента

Под словами «заменить в 1С» прячутся разные задачи. Сначала определите свою — от этого зависит и инструмент, и риск.

ЗадачаИнструментРиск
Два одинаковых контрагента или номенклатуры, нужен один«Поиск и удаление дублей»Средний: меняются ссылки во всех документах
Сменить склад, статью затрат, ответственного в сотне документов«Групповое изменение реквизитов»Средний: нужно перепровести документы
Сменить значение общей настройкиФорма настроек или список константНизкий, если менять через форму
Заменить ссылку там, куда штатная обработка не достаётКод на НайтиПоСсылкам()Высокий: нужна копия базы и тест
Подложить новую версию внешней обработки или отчётаКарточка дополнительной обработкиНизкий

Перед любой массовой заменой выгрузите копию базы : Конфигуратор → Администрирование → Выгрузить информационную базу. Выгрузка .dt требует монопольного доступа, поэтому делайте её, когда пользователи вышли из программы. В файловом варианте достаточно скопировать каталог базы с файлом 1Cv8.1CD, тоже при закрытой программе.

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

Как заменить элемент справочника на другой

Типичный случай: менеджер завёл контрагента «Ромашка ООО», хотя в базе уже был «ООО Ромашка». Документы разнесены по обоим. Удалить лишний нельзя — на него ссылаются документы. Сначала все ссылки переводят на правильный элемент, потом лишний удаляют.

Через «Поиск и удаление дублей»

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

Если в группу попал элемент, который на самом деле не дубль, снимите с него флажок. Например, два «ИП Иванов» с разными ИНН — это разные люди.

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

Как проверить, где используется объект

Перед заменой полезно посмотреть, что именно изменится. Для этого есть стандартная функция Поиск ссылок на объект:

  1. Откройте главное меню (кнопка с тремя полосками слева вверху) → Функции для технического специалиста.
  2. В ветке Стандартные выберите Поиск ссылок на объект.
  3. Укажите элемент — получите список документов, справочников и записей регистров, где он встречается.

Если команды «Функции для технического специалиста» нет, включите её: главное меню → Сервис → Параметры → флажок «Отображать команду «Функции для технического специалиста»». В платформах до 8.3.14 этот же пункт называется «Все функции».

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

Задача другая: элемент не дубль, но в документах указан не тот. Например, за квартал все реализации оформили со склада «Основной», а товар шёл со склада «Филиал». Здесь нужна групповая обработка.

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

  1. Откройте Администрирование → Обслуживание → Корректировка данных → Групповое изменение реквизитов.
  2. В поле «Изменять» выберите вид объектов, например Реализация (акты, накладные, УПД).
  3. Задайте отбор: период, организация, текущее значение склада. Без отбора обработка затронет все документы этого вида.
  4. В таблице реквизитов найдите нужный (Склад) и укажите новое значение.
  5. Если реквизит в табличной части, переключитесь на её вкладку. Там свои реквизиты строк.
  6. Нажмите Изменить реквизиты. Программа отчитается, сколько объектов обработано и где были ошибки.

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

Обработка меняет реквизиты, а движения документов остаются старыми. Остатки по складам, обороты и проводки обновятся только после перепроведения. В Бухгалтерии 3.0 для этого есть обработка «Групповое перепроведение документов» в разделе Операции.

Что делать с проведёнными документами

Способ записиЧто будет с движениямиКогда подходит
Запись с перепроведениемДвижения сразу пересчитаютсяНемного документов, период открыт
Запись без проведения, затем групповое перепроведениеДвижения пересчитаются после второго шагаСотни документов, нужен контроль
Только запись реквизитаДвижения останутся старымиРеквизит не влияет на учёт (комментарий, ответственный)

Ответственный, комментарий и подобные поля на движения не влияют. Их можно менять без перепроведения.

Замена констант и общих настроек

Константа в 1С хранит одно значение на всю базу: основная валюта, флажок «Вести учёт по складам», дата начала ведения учёта по какому-либо механизму. Меняют её двумя путями.

Через формы настроек. Почти все константы выведены в разделы Администрирование и Главное → Функциональность. Это правильный путь: форма проверяет, можно ли переключить флажок, и меняет связанные настройки. Например, отключить учёт по складам не получится, если остатки уже разнесены по складам.

Через список констант. Главное меню → Функции для технического специалиста → ветка Константы. Здесь видны все константы конфигурации, их можно открыть и поменять значение напрямую.

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

Учётная политика и сведения об организации — не константы. Это справочники и регистры сведений. Их меняют в карточке организации и в форме учётной политики, обычно новой записью с датой начала действия.

Программная замена: консоль запросов и код

Штатная обработка не всегда подходит. Нужно заменить ссылку только в части документов. Или конфигурация нетиповая и обработки «Поиск и удаление дублей» в ней нет. Тогда работают с запросом и кодом.

Шаг 1. Найти объекты консолью запросов

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

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

Сохраните результат. После замены выполните тот же запрос с новым значением и сравните количество строк.

Шаг 2. Заменить ссылки кодом

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

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

	СписокСсылок = Новый Массив;
	СписокСсылок.Добавить(Старая);
	Найденные = НайтиПоСсылкам(СписокСсылок);

	Для Каждого Строка Из Найденные Цикл

		Если Не Метаданные.Документы.Содержит(Строка.Метаданные)
			И Не Метаданные.Справочники.Содержит(Строка.Метаданные) Тогда
			Продолжить; // регистры обновятся при перепроведении
		КонецЕсли;

		Объект = Строка.Данные.ПолучитьОбъект();
		Изменен = Ложь;

		Для Каждого Реквизит Из Строка.Метаданные.Реквизиты Цикл
			Если Объект[Реквизит.Имя] = Старая Тогда
				Объект[Реквизит.Имя] = Новая;
				Изменен = Истина;
			КонецЕсли;
		КонецЦикла;

		Для Каждого ТабЧасть Из Строка.Метаданные.ТабличныеЧасти Цикл
			Для Каждого СтрокаТЧ Из Объект[ТабЧасть.Имя] Цикл
				Для Каждого Реквизит Из ТабЧасть.Реквизиты Цикл
					Если СтрокаТЧ[Реквизит.Имя] = Старая Тогда
						СтрокаТЧ[Реквизит.Имя] = Новая;
						Изменен = Истина;
					КонецЕсли;
				КонецЦикла;
			КонецЦикла;
		КонецЦикла;

		Если Изменен Тогда
			Объект.ОбменДанными.Загрузка = Истина;
			Объект.Записать();
		КонецЕсли;

	КонецЦикла;

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

Что важно знать про этот код:

  • 🔹 ОбменДанными.Загрузка = Истина отключает проверки и обработчики при записи. Документ запишется, но движения останутся старыми — после замены перепроведите документы за период.
  • 🔹 Стандартные реквизиты (Владелец, Родитель) в коллекцию Реквизиты не входят. Если меняете группу или владельца, добавьте их проверку отдельно.
  • 🔹 Регистры сведений с измерением-ссылкой код пропускает. Записи в них придётся переписать отдельно или заменить штатной обработкой.
  • 🔹 В типовых конфигурациях на БСП есть готовая функция ОбщегоНазначения.ЗаменитьСсылки(). Она учитывает регистры и обмены, и для типовой базы надёжнее самописного кода.

Сначала прогоните код на копии базы. Выполните проверочный запрос из шага 1 и сравните остатки и обороты до и после.

Как заменить внешнюю обработку или отчёт

Разработчик прислал исправленный файл .epf или .erf. Регистрировать его заново не нужно — достаточно обновить уже подключённый.

  1. Откройте Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
  2. Найдите в списке нужную обработку и откройте её карточку.
  3. В командной панели карточки выберите загрузку из файла и укажите новый файл.
  4. Программа сравнит сведения о внешней обработке в новом файле со старыми. Если вид совпадает, она заменит файл и обновит список команд.
  5. Проверьте вкладку «Размещение»: разделы, где видна обработка, и пользователей, которым она доступна. Обычно они сохраняются, но после смены команд их стоит проверить.
  6. Нажмите Записать и закрыть.

Если раздела нет, включите его флажком «Дополнительные отчеты и обработки» в Администрирование → Печатные формы, отчеты и обработки.

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

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

Внешняя обработка и конфигурация — разные вещи. Замена файла .cf целиком делается в Конфигураторе командой загрузки конфигурации из файла. После неё программа предложит обновить конфигурацию базы данных — для этого нужен монопольный доступ.

Ошибки при замене данных и как их исправить

Диагностика: выберите симптом

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

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

Можно ли отменить замену дублей?
Кнопки отмены нет. Вернуть состояние можно только загрузкой копии базы, сделанной до замены.
Почему обработки «Поиск и удаление дублей» нет в моей базе?
Её дают типовые конфигурации на БСП. В нетиповой или старой базе её может не быть — тогда замену делают кодом на копии базы.
Сколько длится замена на большой базе?
Зависит от числа ссылок. Элемент с десятками тысяч упоминаний может обрабатываться час и больше. Запускайте такие операции вне рабочего времени.
Нужно ли перепроводить документы после замены комментария или ответственного?
Нет. Эти поля не формируют движений, перепроведение ничего не изменит.
Можно ли заменить значение в закрытом периоде без снятия даты запрета?
Нет. Дата запрета блокирует запись документов в закрытом периоде для всех, кроме тех, кому администратор дал исключение.