Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

РИБ. Регистрация изменений для !периодического! регистра

РИБ. Регистрация изменений для !периодического! регистра
Я
   new_hope
 
03.07.20 - 10:52
Доброго всем!
Подскажите, как зарегистрировать изменения для ! пиериодического регистра сведений? Както не получилось "нагуглить" никакого примера, ИТС имеет пример НЕпериодического, и все прекрасно работает,
Для периодичского ошибка Ошибка: "Недопустимое значение параметра (параметр номер "2")"

Вот проимер с ИТС:
Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ РАЗЛИЧНЫЕ
            |    КомплектующиеНоменклатуры.Номенклатура,
            |    КомплектующиеНоменклатуры.ХарактеристикаНоменклатуры
            |ИЗ
            |    РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры";
        Выборка = Запрос.Выполнить().Выбрать();
        Набор = РегистрыСведений.КомплектующиеНоменклатуры.СоздатьНаборЗаписей();
        Пока Выборка.Следующий() Цикл
            Набор.Отбор.Номенклатура.Значение = Выборка.Номенклатура;
            Набор.Отбор.Номенклатура.Использование = Истина;
            Набор.Отбор.ХарактеристикаНоменклатуры.Значение = Выборка.ХарактеристикаНоменклатуры;
            Набор.Отбор.ХарактеристикаНоменклатуры.Использование = Истина;
            
            ПланыОбмена.ЗарегистрироватьИзменения(Узел, Набор);
        КонецЦикла;

   new_hope
 
1 - 03.07.20 - 10:54
Небольшое уточнение - мне нужно (вернее достаточно) зарегистрировать данные регистра "срез последних" - тоесть - последнее актуальное значение (в моем отборе)
   Admin_Net_1C
 
2 - 03.07.20 - 11:10
(0) раз регистр периодический, то где отбор по периоду? И набор у тебя пустой, нет Набор.Прочитать()
   new_hope
 
3 - 03.07.20 - 11:27
(2) Код, что в (0) - это код с ИТС для НЕпериодического регистра, и он работает!
Подобный код не работает, если регистр периодический. Регистр сведений стандартный - "ФИОФизЛиц"

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

   DJ Anthon
 
4 - 03.07.20 - 11:34
так а чему тут работать? ты указал отбор. а записи где?
   Василий Алибабаевич
 
5 - 03.07.20 - 11:39
(3) Попробуй еще раз прочитать (2). Если что не понятно - задай вопрос.
   Franchiser
 
6 - 03.07.20 - 11:42
(3) отбор на период укажи
   new_hope
 
7 - 03.07.20 - 11:52
Вот так вроде заработало:
Добавил отбор по периоду!

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

   new_hope
 
8 - 03.07.20 - 11:57
(2) "Набор.Прочитать()" - работает и без этого. Тоесть метод "ЗарегистрироватьИзменения" сам считывает данные по отбору?

Список тем форума
Рекламное место пустует  Рекламное место пустует
Программист всегда исправляет последнюю ошибку.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.