Узел

Язык запросов · Node

Синтаксис и применение Узел в платформе 1С:Предприятие. Описание и примеры кода.

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

Узел (Node)

Узел (Node)
Тип: ПланОбменаСсылка.<Имя плана обмена>.
Ссылка на узел плана обмена.

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

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

Прочитать Узел в изменениях собственного РегистрРасчета.УчебныеНачисленияНастроек.УчебнаяПроверка

Таблица изменений хранит регистрацию для узла, а не историю всех версий и не сами значения изменённых реквизитов.

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

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

Подготовка

  1. Работайте только в собственной пустой учебной конфигурации. В Конфигураторе создайте ПланВидовРасчета УчебныеВидыРасчета; не добавляйте эти учебные объекты в рабочую базу.

  2. Код — строковый длиной 10, наименование длиной 100. Для справочника, плана обмена и плана видов характеристик включите автонумерацию. Для счетов и видов расчёта код назначается явно в примере.

  3. Для плана видов расчёта не включайте зависимость от базового периода и действие по периоду. Регистры расчёта в этом уроке не нужны.

  4. Добавьте реквизиты Комментарий (Строка 100), Лимит (Число 15.2 с разрешённым отрицательным знаком), ЗапретУдаления (Булево). Не делайте их автоматически обязательными: дополнительные правила описаны отдельными обработчиками.

  5. Для этой диагностики дополнительно создайте документ УчебныйРасчетНастроек с разрешённым проведением. Создайте регистр расчёта УчебныеНачисленияНастроек, периодичность Месяц, план видов расчёта УчебныеВидыРасчета, регистратор УчебныйРасчетНастроек, ресурс Результат типа Число 12.2.

  6. У регистра УчебныеНачисленияНастроек создайте перерасчёт УчебнаяПроверка без измерений. Объект перерасчёта — документ УчебныйРасчетНастроек. Остальные механизмы расчёта не включайте.

  7. Источник сначала создаёт свой вид расчёта, документ и реальную запись результата 750. Затем записывает только свой набор перерасчёта по ссылке этого документа.

  8. Создайте отдельный план обмена УчебныйОбменИзменений: строковый код 10 без маски, наименование 100, Распределённая информационная база = Ложь. В состав включите именно РегистрРасчета.УчебныеНачисленияНастроек.УчебнаяПроверка; для перерасчёта выберите соответствующий регистр расчёта с его перерасчётом.

  9. У участвующего объекта в составе плана отключите автоматическую регистрацию: изменения регистрирует показанный код явно. Передачи данных, записи сообщения обмена, транспорта и синхронизации в примере нет.

  10. Обновите только свою пустую учебную базу. Код — собственный серверный общий модуль: основной блок и первый подготовительный блок исполняются подряд в одной процедуре, сначала подготовительный, затем основной.

  11. Новый узел создаётся при каждом запуске, а запрос ограничен его ссылкой. ЗарегистрироватьИзменения получает конкретные Данные, не объект метаданных и не пропущенный аргумент: массовая регистрация всех данных не выполняется.

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    Изменения.Узел КАК Узел,
|    Изменения.НомерСообщения КАК НомерСообщения,
|    Изменения.ОбъектПерерасчета КАК ОбъектПерерасчета
|ИЗ РегистрРасчета.УчебныеНачисленияНастроек.УчебнаяПроверка.Изменения КАК Изменения
|ГДЕ Изменения.Узел = &Узел";
Запрос.УстановитьПараметр("Узел", Узел.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщить("Узел: " + Строка(Выборка.Узел));
    Сообщить("НомерСообщения: " + Строка(Выборка.НомерСообщения));
    Сообщить("ОбъектПерерасчета: " + Строка(Выборка.ОбъектПерерасчета));
КонецЦикла;
Перед основным запросом в той же серверной процедуре: свой узел, данные и конкретная регистрация
Узел = ПланыОбмена.УчебныйОбменИзменений.СоздатьУзел();
Узел.Код = Лев(Строка(Новый УникальныйИдентификатор), 10);
Узел.Наименование = "Свой учебный приемник";
Узел.Записать();
ВидРасчета = ПланыВидовРасчета.УчебныеВидыРасчета.СоздатьВидРасчета();
ВидРасчета.Код = Лев(Строка(Новый УникальныйИдентификатор), 8);
ВидРасчета.Наименование = "Учебное начисление";
ВидРасчета.Записать();
Документ = Документы.УчебныйРасчетНастроек.СоздатьДокумент();
Документ.Дата = Дата(2026, 10, 14);
Документ.Записать();
Набор = РегистрыРасчета.УчебныеНачисленияНастроек.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Документ.Ссылка);
Запись = Набор.Добавить();
Запись.ПериодРегистрации = Дата(2026, 10, 1);
Запись.ВидРасчета = ВидРасчета.Ссылка;
Запись.Активность = Истина;
Запись.Результат = 750;
Набор.Записать();
Данные = РегистрыРасчета.УчебныеНачисленияНастроек.Перерасчеты.УчебнаяПроверка.СоздатьНаборЗаписей();
Данные.Отбор.ОбъектПерерасчета.Установить(Документ.Ссылка);
Пересчет = Данные.Добавить();
Пересчет.ОбъектПерерасчета = Документ.Ссылка;
Данные.Записать();
ПланыОбмена.ЗарегистрироватьИзменения(Узел.Ссылка, Данные);
Сообщить("Изменение зарегистрировано только для своего нового узла");

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

  1. Подготовка создаёт конкретный собственный новый узел и реальные данные указанного вида.

  2. ЗарегистрироватьИзменения вызывается для ссылки этого узла и конкретного объекта / набора, не для всей метадаты.

  3. Запрос выбирает зарегистрированный ключ по своему узлу; Следующий вызывается до чтения полей.

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

  1. Получены поля только своего нового узла. Для ещё не включённых в сообщение изменений НомерСообщения может быть Null; не выдавайте его за готовый номер отправленного сообщения.

  2. Ссылка / Регистратор / ОбъектПерерасчета относятся к реально созданным собственным данным. Запрос не открывает транспорт и не подтверждает доставку.

  3. Наличие записи регистрации не означает, что изменился рабочий товар или состоялась синхронизация; источник создаёт только собственные метаданные / данные.

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

Настоящая регистрация конкретных собственных данных прочитана из таблицы изменений с правильным для её вида ключом.

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

  1. Не пропускайте второй аргумент ЗарегистрироватьИзменения и не передавайте Метаданные целого объекта: это зарегистрирует все соответствующие данные.

  2. У независимого и подчинённого регистра сведений разные ключи таблицы изменений. Для неразделяющего общего реквизита такое поле таблицы изменений не появляется.

  3. Ничего не передаётся по сети; BSL, запись узлов и регистрация изменений при сборке HTML не выполнялись.

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

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

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

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

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