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