ПоследовательностьНаборЗаписей.<Имя последовательности>.ОбменДанными

Свойства · DataExchange

Тип: ПараметрыОбменаДанными. Используется для управления обменом данных. С помощью данного свойства настраивается состав узлов-получателей, для которых будут регистрироваться изменения данных, узел-отправитель, из которого получена записываемая информация, а также устанавливается режим Загрузка, указывающий, что выполняется перенос информации.

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

ПоследовательностьНаборЗаписей.<Имя последовательности>.ОбменДанными (SequenceRecordSet.<Sequence name>.DataExchange)

ПоследовательностьНаборЗаписей.<Имя последовательности> (SequenceRecordSet.<Sequence name>)

ОбменДанными (DataExchange)

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

Использование:
Только чтение.
Описание:
Тип: ПараметрыОбменаДанными.
Используется для управления обменом данных.
С помощью данного свойства настраивается состав узлов-получателей, для которых будут регистрироваться изменения данных, узел-отправитель, из которого получена записываемая информация, а также устанавливается режим Загрузка, указывающий, что выполняется перенос информации.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

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

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

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

Временно изменить Загрузка у своего набора и восстановить именно исходное значение

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

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

Полный серверный общий модуль УчебныеНаборыПоследовательности85 собственной новой конфигурации УчебныеПоследовательности85. Платформа 8.5.1.1343, тонкий/толстый управляемый клиент с серверным вызовом. Только собственные объекты памяти; 1С здесь не запускалась.

Подготовка

  1. Создайте новую отдельную пустую базу 8.5.1.1343, не копию рабочей УТ/КА2. Имя конфигурации УчебныеПоследовательности85, язык встроенного языка Русский, ОсновнойРежимЗапуска=УправляемоеПриложение, режим совместимости Не использовать. Расширений, подписок и обработчиков записи нет.

  2. В Документы создайте единственный документ УчебнаяРегистрация85: проведение запрещено, реквизитов и табличных частей нет, движения регистров не назначены, модули объекта и менеджера пусты. Документы этого вида в уроке не создаются и не записываются.

  3. В Последовательности создайте единственную УчебнаяОчередь85. В составе Документы выберите только свой УчебнаяРегистрация85. Измерений, зависимых регистров в составе Движения и дополнительных индексов нет. ПеремещениеГраницыПриПроведении=НеПеремещать. Модуль набора пуст. Структура записей поэтому содержит только Период и Регистратор.

  4. Не создавайте в стенде справочников и регистров. Для учебного пользователя разрешите собственные метаданные, общую форму и команды. Обновите только эту новую конфигурацию. Проверка имени и состава схемы выполняется до создания набора; она не доказывает отсутствия записей базы и не делает рабочую базу безопасной.

  5. В Общие → Общие модули создайте УчебныеНаборыПоследовательности85: Сервер=Истина, ВызовСервера=Истина, Глобальный=Ложь, клиентские флаги выключены. Полный основной модуль одного выбранного урока вставьте на верхнем уровне целиком. Все помощники предоставлены ниже в том же модуле.

  6. В Общие → Общие формы создайте управляемую форму УчебныйЗапускПоследовательности85. Добавьте команду ВыполнитьУрок с действием ВыполнитьУрок, ИзменяетСохраняемыеДанные=Ложь и кнопку Выполнить урок. Полный модуль формы:
    &НаКлиенте
    Процедура ВыполнитьУрок(Команда)
    ВыполнитьУрокНаСервере();
    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ВыполнитьУрокНаСервере()
    УчебныеНаборыПоследовательности85.ВыполнитьПример();
    КонецПроцедуры

  7. В Общие → Общие команды создайте ОткрытьНаборПоследовательности85 без параметра и включите в свой учебный раздел. Полный модуль общей команды:
    &НаКлиенте
    Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    ОткрытьФорму("ОбщаяФорма.УчебныйЗапускПоследовательности85");
    КонецПроцедуры
    Откройте свою форму этой командой и выполните её кнопку. Два вспомогательных модуля не вставляйте в основной серверный модуль.

  8. Плановые ссылки создаются ПолучитьСсылку на собственные новые UUID. Непустая ссылка не означает существующий документ; реквизиты ссылок не читаются. Это идентификаторы собственных незаписанных черновых строк, не готовые записи для сохранения в базу.

  9. Здесь нет Прочитать, Записать, проведения, восстановления или изменения границы. Добавить/Загрузить/Удалить/Очистить действуют только на принадлежащий уроку экземпляр набора в памяти. Этот пример нельзя превращать в исправление последовательности добавлением Записать.

  10. Статически проверены исходный код и установленная справка. Компиляция и выполнение в 1С здесь не проверялись; ожидаемые результаты далее нужно подтвердить самостоятельным запуском только в подготовленной новой учебной базе.

Процедура ВыполнитьПример() Экспорт
    Если Метаданные.Последовательности.Количество() <> 1 Или Метаданные.Документы.Количество() <> 1 Тогда
        ВызватьИсключение "В своём стенде нужны ровно одна последовательность и один вид документа";
    КонецЕсли;
    МетаОчереди = Метаданные.Последовательности.Найти("УчебнаяОчередь85");
    МетаДокумента = Метаданные.Документы.Найти("УчебнаяРегистрация85");
    Если МетаОчереди = Неопределено Или МетаДокумента = Неопределено Тогда
        ВызватьИсключение "Не подготовлена собственная схема урока";
    КонецЕсли;
    Если МетаОчереди.Измерения.Количество() <> 0 Или МетаОчереди.Движения.Количество() <> 0
        Или МетаОчереди.Документы.Количество() <> 1 Тогда
        ВызватьИсключение "Нужна собственная очередь без измерений и зависимых регистров";
    КонецЕсли;
    Участвует = Ложь;
    Для Каждого МетаУчастника Из МетаОчереди.Документы Цикл
        Участвует = МетаУчастника = МетаДокумента;
    КонецЦикла;
    Если Не Участвует Тогда
        ВызватьИсключение "Единственный участник должен быть своим УчебнаяРегистрация85";
    КонецЕсли;
    Если МетаОчереди.ПеремещениеГраницыПриПроведении <> Метаданные.СвойстваОбъектов.ПеремещениеГраницыПриПроведении.НеПеремещать Тогда
        ВызватьИсключение "Проверьте подготовку политики границы собственной очереди";
    КонецЕсли;
    Набор = Последовательности.УчебнаяОчередь85.СоздатьНаборЗаписей();
    Если Набор.Количество() <> 0 Или Набор.Метаданные() <> МетаОчереди Тогда
        ВызватьИсключение "Ожидался новый пустой набор собственной последовательности";
    КонецЕсли;
    Ссылки = Новый Массив;
    Для Номер = 1 По 3 Цикл
        Ссылки.Добавить(Документы.УчебнаяРегистрация85.ПолучитьСсылку(Новый УникальныйИдентификатор));
    КонецЦикла;
    ДобавитьСвоюЗапись(Набор, Дата(2026, 1, 1), Ссылки[0]);
    ДобавитьСвоюЗапись(Набор, Дата(2026, 2, 1), Ссылки[1]);
    ДобавитьСвоюЗапись(Набор, Дата(2026, 3, 1), Ссылки[2]);
    ПроверитьТриСвоиСтроки(Набор, Ссылки);
    ПараметрыОбмена = Набор.ОбменДанными;
    Если ТипЗнч(ПараметрыОбмена) <> Тип("ПараметрыОбменаДанными")
        Или ТипЗнч(ПараметрыОбмена.Загрузка) <> Тип("Булево") Тогда
        ВызватьИсключение "Ожидались реальные параметры обмена и булев флаг";
    КонецЕсли;
    ИсходнаяЗагрузка = ПараметрыОбмена.Загрузка;
    ВременнаяЗагрузка = Не ИсходнаяЗагрузка;
    Попытка
        ПараметрыОбмена.Загрузка = ВременнаяЗагрузка;
        Если ТипЗнч(Набор.ОбменДанными.Загрузка) <> Тип("Булево")
            Или Набор.ОбменДанными.Загрузка <> ВременнаяЗагрузка Тогда
            ВызватьИсключение "Свой экземпляр не принял временный флаг";
        КонецЕсли;
        ПроверитьТриСвоиСтроки(Набор, Ссылки);
    Исключение
        ПараметрыОбмена.Загрузка = ИсходнаяЗагрузка;
        ВызватьИсключение;
    КонецПопытки;
    ПараметрыОбмена.Загрузка = ИсходнаяЗагрузка;
    Если ТипЗнч(Набор.ОбменДанными.Загрузка) <> Тип("Булево")
        Или Набор.ОбменДанными.Загрузка <> ИсходнаяЗагрузка Тогда
        ВызватьИсключение "Не восстановлен исходный флаг собственного экземпляра";
    КонецЕсли;
    ПроверитьТриСвоиСтроки(Набор, Ссылки);
    Сообщить("Исходная Загрузка: " + Строка(ИсходнаяЗагрузка));
    Сообщить("Временная Загрузка: " + Строка(ВременнаяЗагрузка));
    Сообщить("Конечная Загрузка: " + Строка(Набор.ОбменДанными.Загрузка));
    Сообщить("Исходный флаг восстановлен; все три строки памяти неизменны, обмена не было");
КонецПроцедуры

Процедура ДобавитьСвоюЗапись(Набор, Период, Регистратор)
    Если ТипЗнч(Период) <> Тип("Дата") Или ТипЗнч(Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
        ВызватьИсключение "Переданы неверные собственные ключи строки";
    КонецЕсли;
    Запись = Набор.Добавить();
    Запись.Период = Период;
    Запись.Регистратор = Регистратор;
КонецПроцедуры

Процедура ПроверитьСвоюЗапись(Запись, Период, Регистратор)
    Если ТипЗнч(Запись.Период) <> Тип("Дата") Или ТипЗнч(Запись.Регистратор) <> Тип("ДокументСсылка.УчебнаяРегистрация85") Тогда
        ВызватьИсключение "Типы фактической собственной записи не совпали";
    КонецЕсли;
    Если Запись.Период <> Период Или Запись.Регистратор <> Регистратор Тогда
        ВызватьИсключение "Период или регистратор собственной записи не совпал";
    КонецЕсли;
КонецПроцедуры

Процедура ПроверитьТриСвоиСтроки(Набор, Ссылки)
    Если Набор.Количество() <> 3 Или Ссылки.Количество() <> 3 Тогда
        ВызватьИсключение "Изменилось число собственных строк или плановых ссылок";
    КонецЕсли;
    Для ИндексСтроки = 0 По 2 Цикл
        ПроверитьСвоюЗапись(Набор[ИндексСтроки], Дата(2026, ИндексСтроки + 1, 1), Ссылки[ИндексСтроки]);
    КонецЦикла;
КонецПроцедуры

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

  1. Подготовьте свой отдельный набор и три плановые строки в памяти. ПроверитьТриСвоиСтроки проверяет все даты/ссылки и их типы до изменения настройки.

  2. Набор.ОбменДанными возвращает реальный ПараметрыОбменаДанными. Такой объект не создаётся самостоятельным конструктором. Проверьте его конкретный тип и булев тип свойства Загрузка.

  3. Сохраните настоящий ИсходнаяЗагрузка. Не приписывайте ему default Ложь: дальнейшая логика корректна и для исходной Истина. ВременнаяЗагрузка вычисляется как Не ИсходнаяЗагрузка.

  4. В защищённой ветви присвойте флаг содержимому возвращённых параметров. Через Набор.ОбменДанными заново прочитайте установленный флаг и проверьте, что он точно совпадает с противоположным исходному.

  5. Проверьте все три строки после переключения. Никакой Записать/Удалить не вызывается, поэтому уменьшение проверок при сохранении и обработчики обмена этим опытом не проверяются.

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

  7. При успехе также восстановите ИсходнаяЗагрузка, отдельно проверьте конечный булев тип, точное равенство и каждую собственную строку. Только после всех проверок выведите исходный, временный и конечный флаг.

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

  1. При фактической исходной Ложь три сообщения дают Ложь → Истина → Ложь; при фактической исходной Истина — Истина → Ложь → Истина. Каждый флаг имеет тип Булево; конечный равен исходному, временный противоположен.

  2. Все три даты и ссылки остаются 01.01.2026/Ссылки[0], 01.02.2026/Ссылки[1], 01.03.2026/Ссылки[2]; Количество=3 до, во время и после переключения. Урок не создаёт узлы, сообщения обмена или документы базы.

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

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

Реальный флаг прошёл исходное значение → противоположное → исходное; конечное состояние проверено через тот же собственный набор. Все шесть значений трёх строк сохранились. Проверки записи, реальная загрузка данных и обмен не выполнялись.

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

  1. Readonly-свойства Отбор, Регистратор и ОбменДанными нельзя заменить присваиванием. У возвращённого Отбор меняются его элементы, у ПараметрыОбменаДанными — разрешённый флаг Загрузка.

  2. Отбор набора последовательности допустим только на равенство. Это условие будущего чтения или записи, а не команда удаления неподходящих строк уже заполненного экземпляра памяти.

  3. Плановая непустая ссылка из ПолучитьСсылку не подтверждает существование документа. УстановитьСсылкуНового задаёт ссылку для будущей записи; ПолучитьСсылкуНового возвращает именно этот план, а не доказательство записи.

  4. Регистратор набора — связь экземпляра с документом; Регистратор отдельной строки — поле этой строки. Не переносите автоматически значение одного свойства в другое и не меняйте readonly-регистратор набора.

  5. Загрузка=Истина сокращает проверки при записи/удалении данных. Это не разрешение пропускать бизнес-проверки в рабочей базе и не проверка корректности импортируемой информации.

  6. В уроках нет записи, чтения базы, обмена сообщениями, проведения, восстановления и переноса границ. Локальные строки и временный флаг нельзя объявлять результатом обмена или исправлением последовательности.

  7. Флаг восстанавливается по реально прочитанному исходному значению, а не безусловно в Ложь. Ветвь исключения не превращается в успешный результат: после восстановления ошибка передаётся вызывающему коду.

  8. Статические проверки не исполняют платформу. Код и ожидаемые результаты требуется отдельно подтвердить в собственной новой базе 8.5.1.1343; 1С здесь не запускалась.

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

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

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

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

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