РежимЗамещения.Слияние

Свойства · Merge

Будет выполнено слияние записей из набора записей с существующими записями регистра: Существующие записи регистра, совпадающие по значениям ключевых полей с записями из набора записей, будут перезаписаны. Записи набора, для которых нет соответствия среди существующих записей регистра, будут добавлены. Допускается использование только для независимого регистра сведений. При попытке использовать эти значения для регистра сведений, подчиненного регистратору будет сгенерировано исключение.

Полное описание, параметры и ограничения

РежимЗамещения.Слияние (ReplacementMode.Merge)

РежимЗамещения (ReplacementMode)

Слияние (Merge)

Доступен, начиная с версии 8.3.25.

Описание:
Будет выполнено слияние записей из набора записей с существующими записями регистра:
Существующие записи регистра, совпадающие по значениям ключевых полей с записями из набора записей, будут перезаписаны.

Записи набора, для которых нет соответствия среди существующих записей регистра, будут добавлены.

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

Доступен, начиная с версии 8.3.25.

Методическая информация

Практические примеры

Прикладной пример: РежимЗамещения.Слияние

Конкретный собственный регистр / внешний источник / карта маршрута и точное применение системного значения.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. В собственной отдельной учебной базе создайте независимый непериодический регистр сведений УчебныеРежимыЗаписи: измерения КлючЭксперимента Строка 36 и КодКниги Строка 40, ресурс Количество Число 12.2.

  2. Основной блок — тело процедуры собственной серверной обработки / кнопки обычной формы, толстый клиент. Дополнительную функцию разместите в том же модуле.

  3. Каждый опыт получает новый UUID-ключ; отбор по нему установлен у всех записываемых / читаемых наборов. Нельзя убирать этот отбор или подменять регистр рабочим. По завершении и при исключении собственная транзакция откатывается.

Если ТранзакцияАктивна() Тогда
    ВызватьИсключение "Запускайте отдельно, вне чужой транзакции";
КонецЕсли;
Ключ = Строка(Новый УникальныйИдентификатор);
НачатьТранзакцию();
Попытка
    НачальныйНабор = УчебныйНабор(Ключ, "BOOK-001", 3);
    НачальныйНабор.Записать(РежимЗамещения.Добавление);
    Изменение = УчебныйНабор(Ключ, "BOOK-002", 5);
    Изменение.Записать(РежимЗамещения.Слияние);
    Проверка = РегистрыСведений.УчебныеРежимыЗаписи.СоздатьНаборЗаписей();
    Проверка.Отбор.КлючЭксперимента.Установить(Ключ);
    Проверка.Прочитать();
    Сообщить("Своих записей до отката: " + Строка(Проверка.Количество()));
    Сообщить("Своё количество до отката: " + Строка(Проверка.Итог("Количество")));
    ОтменитьТранзакцию();
Исключение
    ОтменитьТранзакцию();
    ВызватьИсключение;
КонецПопытки;
Тот же модуль: набор с явным собственным отбором и одной книгой
Функция УчебныйНабор(КлючЭксперимента, КодКниги, Количество)
    Набор = РегистрыСведений.УчебныеРежимыЗаписи.СоздатьНаборЗаписей();
    Набор.Отбор.КлючЭксперимента.Установить(КлючЭксперимента);
    Запись = Набор.Добавить();
    Запись.КлючЭксперимента = КлючЭксперимента;
    Запись.КодКниги = КодКниги;
    Запись.Количество = Количество;
    Возврат Набор;
КонецФункции

Разбор по шагам

  1. Подготовьте указанную собственную схему и данные.

  2. Разместите основной блок и необходимые дополнительные части в точном модуле.

  3. Сравните фактические строки / точки / режим с указанными ограничениями.

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

  1. До изменения создана своя BOOK-001, количество 3. Добавление / Слияние добавляют BOOK-002, количество 5: две записи, итог 8. Замещение оставляет BOOK-002: одна запись, итог 5.

  2. Обновление меняет существующую BOOK-001 на 5; для отсутствующего ключа этот режим вызывает исключение, а не молча вставляет новую запись. Удаление удаляет только совпавшую собственную BOOK-001: ноль строк.

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

Ожидаемый результат

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

На что обратить внимание

  1. Эти самостоятельные опыты не запускаются в рабочей базе.

  2. BSL, транзакции, SQL-соединение и старт процессов при сборке HTML не выполнялись.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.