Регистрация изменений в узле для набора записей

1. LE()N 15.04.14 00:23 Сейчас в теме
Платформа 8.3.4.465

Исходные данные:
Есть независимый регистр сведений с 4 измерениями, для каждого измерения установлен основной отбор.
План обмена, авторегистрация для регистра сведений отключена.

Проблема:
С помощью кода ниже изменения не регистрируются.

НаборЗаписей = РегистрСведений.<Имя>.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.<ИмяИзмерения1>.Установить(Значение1);
НаборЗаписей.Отбор.<ИмяИзмерения2>.Установить(Значение2);
НаборЗаписей.Отбор.<ИмяИзмерения3>.Установить(Значение3);
НаборЗаписей.Отбор.<ИмяИзмерения4>.Установить(Значение4);

ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, НаборЗаписей);
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
12. AlX0id 16.04.14 09:38 Сейчас в теме
(1) LE()N,
Я, наверное, тупой вопрос задам, но чем черт не шутит - в план обмена регистр включен?
14. LE()N 16.04.14 14:41 Сейчас в теме
(12) AlX0id, Включен, проверял много раз :)
2. adva 45 15.04.14 06:36 Сейчас в теме
Может быть после установки отбора надо Прочитать() ? Потому как у Вас наборзаписей еще не записан.
3. LE()N 15.04.14 14:32 Сейчас в теме
(2) adva, Прочитать() тоже использовал, не помогает. А набор уже записан, я пытаюсь зарегистрировать изменения для вновь создаваемого узла.
4. adva 45 15.04.14 14:47 Сейчас в теме
(3) может период еще надо указать?
5. LE()N 15.04.14 14:52 Сейчас в теме
(4) adva, регистр непериодический
6. spezc 788 15.04.14 14:58 Сейчас в теме
регистр периодический?
7. spezc 788 15.04.14 14:59 Сейчас в теме
Все ли измерения, с галкой "основной отбор" указываются при отборе? после "почитать" в отладчике в НаборЗаписей есть что-нибудь?
8. LE()N 15.04.14 15:06 Сейчас в теме
(7) spezc, все измерения с этой галкой используются в отборе (если указать не все, то появится конфигураторская ошибка). Прочитать() возвращает одну запись
9. spezc 788 15.04.14 15:13 Сейчас в теме
вот рабочий фрагмент кода с другого форума:
Фрагмент кода:

 Отбор = Новый Структура("Номенклатура", Товар.Номенклатура);
        Выборка = РегистрыСведений.КомплектующиеНоменклатуры.Выбрать(Отбор);
        Пока Выборка.Следующий() Цикл
            Набор = РегистрыСведений.КомплектующиеНоменклатуры.СоздатьНаборЗаписей(); 
            
            Набор.Отбор.Номенклатура.Установить(Выборка.Номенклатура, Истина);
            Набор.Отбор.ТоварТара.Установить(Перечисления.ТоварТара.Товар, Истина);
            Набор.Отбор.ХарактеристикаНоменклатуры.Установить(Выборка.ХарактеристикаНоменклатуры, Истина);
            Набор.Отбор.Комплектующая.Установить(Выборка.Комплектующая, Истина);
            Набор.Отбор.ХарактеристикаКомплектующей.Установить(Выборка.ХарактеристикаКомплектующей, Истина);
            
            Набор.Прочитать();
            ПланыОбмена.ЗарегистрироватьИзменения(Узел, Набор);
        КонецЦикла;
Показать
10. LE()N 15.04.14 16:33 Сейчас в теме
(9) spezc, Спасибо, но и это тоже не работает, пробовал вариант .Установить(<>) и .Установить(<>, Истина). К сожалению, безрезультатно...
11. adva 45 15.04.14 16:58 Сейчас в теме
(10) может какие-нить правила регистрации заворачивают, или подписки на события, Вы сразу после регистрации попробуйте в запросе вернуть значение, которое регистрируете. Если вернется, то значит где-то еще копаться надо (но тут уже не подскажу)
13. LE()N 16.04.14 14:40 Сейчас в теме
(11) adva, подписка на событие есть, она выполняется перед записью.. в моем случае я ничего не записываю. После выполнения кода изменений для таблицы регистра нет
15. LE()N 16.04.14 14:43 Сейчас в теме
Пока сделал так: при добавлении узла читаю и перезаписываю набор записей, всё работает. Но это неправильно...
16. adva 45 16.04.14 14:54 Сейчас в теме
(15) может с первым параметром чего не так? Узел не в том виде передается (как какой нить реквизит формы, или еще чего). Вроде там ссылку надо передавать
17. LE()N 16.04.14 14:58 Сейчас в теме
(16) adva, да, надо передавать ссылку, и у меня заполняется ссылкой.. не знаю, может баг платформы
18. tt77 08.12.16 23:46 Сейчас в теме
Нужно установить отбор по всем измерениям
19. pirm2 14.11.17 09:57 Сейчас в теме
Лучше поздно, чем никогда.
https://its.1c.ru/db/metod8dev#content:2267:hdoc

  Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ РАЗЛИЧНЫЕ
            |    КомплектующиеНоменклатуры.Номенклатура,
            |    КомплектующиеНоменклатуры.ХарактеристикаНоменклатуры
            |ИЗ
            |    РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры";
        Выборка = Запрос.Выполнить().Выбрать();
        Набор = РегистрыСведений.КомплектующиеНоменклатуры.СоздатьНаборЗаписей();
        Пока Выборка.Следующий() Цикл
            Набор.Отбор.Номенклатура.Значение = Выборка.Номенклатура;
            Набор.Отбор.Номенклатура.Использование = Истина;
            Набор.Отбор.ХарактеристикаНоменклатуры.Значение = Выборка.ХарактеристикаНоменклатуры;
            Набор.Отбор.ХарактеристикаНоменклатуры.Использование = Истина;
            
            ПланыОбмена.ЗарегистрироватьИзменения(Узел, Набор);
        КонецЦикла;
Показать
user591389_aska_rabota; TelsDevelopUser; alesgood79; ПрестарелыйЗаяц; NN2P; ITMS; eeeio; +7 Ответить
20. Csar 15.11.18 11:37 Сейчас в теме
Обращу ваше внимание на момент из-за которого у меня не регистрировались изменения в плане обмена:
"если регистр сведений является периодическим и Период включен в основной отбор, то Период также должен участвовать в отборе"
21. user669459_oudesu 14.07.19 13:24 Сейчас в теме
Короче выход следующий
 
НЗ = РегистрыСведений.ВашРегистр.СоздатьНаборЗаписей();
НЗ.Отбор.Измерение_1.Установить(ЗначениеИзмерения_1);
НЗ.Отбор.Измерение_2.Установить(ЗначениеИзмерения_2);
.............
НЗ.Отбор.Измерение_n.Установить(ЗначениеИзмерения_n);

НоваяСтрока = НЗ.Добавить();
НоваяСтрока.Измерение_1          = ЗначениеИзмерения_1;
НоваяСтрока.Измерение_2          = ЗначениеИзмерения_2;
.............
НоваяСтрока.Измерение_n          = ЗначениеИзмерения_n;
НоваяСтрока.Ресурс_1                 = ЗначениеРесурса_1;
НоваяСтрока.Ресурс_2                 = ЗначениеРесурса_2;
НоваяСтрока.Ресурс_n                 = ЗначениеРесурса_n;

НЗ.Записать();
////////КЛЮЧЕВАЯ СТРОКА//////////////
НЗ.Очистить();
/////////////////////////////////////////////////////////
ПланыОбмена.ЗарегистрироватьИзменения(Узел, НЗ);


Показать
22. pepper62 12.11.19 09:47 Сейчас в теме
Если ТипЗнч(Источник) = Тип("РегистрСведенийНаборЗаписей.КакойтоРегистрСведений") Тогда
	// опционально можно вставить анализ отборов, например, для регистрации определенных свойств в РС ЗначенияСвойствОбъектов
	// Если Источник.Отбор[КакоетоИмяотбора].Значение = КакоетоЗначениеОтбора Тогда ...

	Для Каждого Узел Из КакиетоУзлыВКоторыхНадоРегистрировать Цикл
		Источник.ОбменДанными.Получатели.Добавить(Узел);
	КонецЦикла;
Показать
23. esqado 16.06.22 15:47 Сейчас в теме
(22)
Параметры:
<Узлы> (обязательный)
Тип: ПланОбменаСсылка.<Имя плана обмена>, Массив.
Одиночное значение типа ПланОбменаСсылка.<Имя плана обмена> или массив таких значений, показывающие для пересылки в какие узлы регистрируются изменения.

Нужен ли цикл?
24. pepper62 06.07.22 18:09 Сейчас в теме
(23)
Нужен.

НаборУзлов (NodeSet)
Добавить (Add)
Синтаксис:
Добавить(<Узел>)
Параметры:
<Узел> (обязательный)
Тип: ПланОбменаСсылка.<Имя плана обмена>.
Ссылка на узел плана обмена, который надо добавить к набору узлов.
Описание:
Добавляет узел к набору узлов. Если узел уже входит в набор, то он не будет добавлен.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот