Универсальная замена значений в документах, справочниках и регистрах (1С 8.3)
Задачи пользователя - Корректировка данных
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Зачем это нужно
Типовая «замена ссылок» рассчитана на одну ссылку «по всей базе». На практике обычно иначе:
- заменить контрагента А на Б и одновременно номенклатуру X на Y;
- пройти только реализацию и поступления за квартал, а не все 400 документов конфигурации;
- сначала увидеть масштаб (сколько объектов), и только потом писать;
- не трогать устаревшие объекты
Удалить*.
Полный перебор информационной базы для этого избыточен. Обработка ищет совпадения запросом по реквизитам, измерениям и ресурсам, в тип которых входит выбранный тип значения (в том числе через определяемые типы).
Что умеет
- Правила: тип значения → вид объекта (справочник, документ, перечисление, ПВХ) или строка → искомое / новое. Пока тип не выбран, поля значений недоступны.
- Несколько правил за один прогон, в том числе одного типа (А→X и B→Y в одном поле).
- Режим только подсчёт: ничего не записывается, в протоколе — число кандидатов по каждому объекту метаданных. Кнопка при этом называется «Подсчитать».
- Области: документы, справочники, регистры сведений, регистры накопления. На отдельных страницах отмечаются конкретные виды. По умолчанию отмечены все; «Снять все» и отметить нужные — чтобы не обходить всю конфигурацию.
- Период (дата документа / период регистра), табличные части, пропуск объектов и реквизитов
Удалить*. - Запись пачками в транзакции. Если пачка упала — откат и повтор по одному объекту.
- Привилегированный режим (без RLS) и запись с
ОбменДанными.Загрузка = Истина. - Перед запуском — вопрос со списком правил (тип, что ищется, на что меняется) и кратким составом выбранных видов.
Форма в конфигураторе пустая: реквизиты, команды и элементы создаются программно при открытии.
Как пользоваться
- Сделайте копию базы.
- В таблице правил выберите тип (например, «Справочник»), вид («Контрагенты»), затем искомое и новое.
- Включите нужные области и на страницах видов оставьте только те объекты, которые надо обойти.
- При необходимости задайте период.
- Оставьте Только подсчёт, нажмите Подсчитать, проверьте протокол.
- Снимите подсчёт и выполните замену.
Примеры
- Контрагент А → Б: тип «Справочник», вид «Контрагенты».
- Заполнить пустую ставку НДС: вид справочника или перечисления, флаг «Искать пустые», новое = нужная ставка.
- Очистить реквизит: искомое заполнено, новое пустое.
Тип Строка затронет все строковые реквизиты выбранных объектов. Его лучше сначала прогонять в режиме подсчёта.
Как это устроено
Для каждого выбранного объекта метаданных собираются поля, в ОписаниеТипов которых входит тип правила.
Кандидаты выбираются одним запросом: подзапросы по шапке и табличным частям объединяются через ОБЪЕДИНИТЬ ВСЕ, уникальность считает СУБД. Выборка идёт потоком, без сбора всех ссылок в массив.
Независимые регистры сведений пишутся наборами по измерениям (и периоду, если регистр периодический). Подчинённые регистратору — набором по регистратору. Непериодические РС без поля Период в отбор по периоду не попадают.
Если у независимого РС совпало только измерение (ключ записи), регистр пропускается: смену ключа автоматически делать нельзя.
Ограничения
- Запись в режиме загрузки: нет перепроведения, типовых проверок и регистрации в планах обмена. Шапка документа и движения совпадут, только если в том же прогоне включены и документы, и регистры.
- Не обрабатываются стандартные реквизиты (
Родитель,Владелец), общие реквизиты, константы, бухгалтерия, задачи, бизнес-процессы. - У регистра по регистратору читается весь набор. При ограниченном периоде в набор могут попасть и строки вне периода.
- Правила выполняются по порядку строк. Если первое делает А→B, а второе B→C, в этом поле А станет C.
- Если на странице видов ничего не отмечено, эта область не обрабатывается.
- Запускать лучше без других пользователей: пачки удерживают блокировки.
Внимание!
В обработке используется привилегированный режим и должна быть использована только специалистами которые понимаю, для чего ее предназначение!
Для кого
Администраторы и внедренцы 1С 8.3, которым нужна контролируемая массовая замена в оперативном контуре — с отбором по видам объектов и подсчётом «до», а не сюрпризом «после».
1.0.1 - Релиз
1.0.2 - Доработан интерфейс и добавлен выбор метаданных где искать и заменять значения
Обработка универсальная для управляемых форм
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.6.1.61
- 1С:Комплексная автоматизация 2, релизы 2.6.1.61
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.206.19
Вступайте в нашу телеграмм-группу Инфостарт