Имя: Пароль:
1C
 
Изменить дату в регистре
0 Slaifer
 
25.11.22
16:11
Добрый день, нужно в регистре менять дату на начало месяца.
написал запрос, а обойти строки не получается. Помогите написать цикл, буду очень благодарен

    ТекДата = ТекущаяДата();
    ДатаЗапретаНовая   = НачалоМесяца(ТекДата);

    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
                    |     ДатыЗапретаИзменения.Пользователь КАК Пользователь,
                    |    ДатыЗапретаИзменения.ДатаЗапрета КАК ДатаЗапрета
                    |ИЗ
                    |    РегистрСведений.ДатыЗапретаИзменения КАК ДатыЗапретаИзменения";
        
    ТЗ = Запрос.Выполнить().Выгрузить();
       ДЛя Каждого  Стр Из ТЗ.Колонки цикл
            ОбъектБД = Стр.Ссылка.ПолучитьОбъект();
            ОбъектБД.ДатаЗапрета = ДатаЗапретаНовая;
            ОбъектБД.Записать();
            ОбъектБД.Записать(РежимЗаписиДокумента.Проведение);
            КонецЦикла;
1 vicof
 
25.11.22
16:13
Регистры это не объектные сущности.
2 Kassern
 
25.11.22
16:20
(0) есть как минимум 2 варианта
1) Через Набор:
Набор=РегистрСведений.ДатыЗапретаИзменения.СоздатьНабор();
Устанавливаете отбор какой нужен, читаете строки и правите как надо. После записываете набор. Можно загрузить готовую таблицу в набор.

2) Через менеджер записи:
Менеджер=РегистрСведений.ДатыЗапретаИзменения.СоздатьМенеджерЗаписи();
Заполняете все поля менеджера и записываете - если такая строчка с такой же связкой измерений была, то просто перезапишутся ресурсы, иначе запишется новая строка в регистр.
3 vicof
 
25.11.22
16:21
И обходить надо строки, а не колонки
4 Slaifer
 
25.11.22
16:32
Пока Выборка.Следующий() Цикл
        НаборЗаписей = РегистрыСведений.ДатыЗапретаИзменения.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.ДатаЗапрета;
        НаборЗаписей.Прочитать();
        Для каждого Запись Из НаборЗаписей Цикл
            Запись.ДатаЗапрета = ДатаЗапретаНовая;
        КонецЦикла;
        НаборЗаписей.Записать();
    КонецЦикла;
что-то типа этого?
5 Serg_1960
 
25.11.22
16:34
Что-то типа этого:

НаборЗаписей = РегистрыСведений.ДатыЗапретаИзменения.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
     Запись.ДатаЗапрета = ДатаЗапретаНовая;
КонецЦикла;
НаборЗаписей.Записать();
6 Kassern
 
25.11.22
16:34
(4) Отбор работает только с измерениями вроде. У вас дата запрета скорее всего ресурс.
7 Slaifer
 
25.11.22
16:50
Спасибо огромное, все получилось!
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший