Имя: Пароль:
1C
1С v8
Как все записи регистра накопления повесить на 1 регистратор?
0 Zombi
 
08.05.14
08:56
Пытаюсь все записи регистра накопления повесить на 1 регистратор, как только не изощрялся уже. Дошел вот до какого кода:

Процедура КнопкаВыполнитьНажатие(Кнопка)

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

        ТаблицаЗаписей.ЗаполнитьЗначения(Отчет, "Регистратор");

        НаборЗаписей.Загрузить(ТаблицаЗаписей);
        
        НаборЗаписей.Записать();
        
    КонецЦикла; //Пока    
    
КонецПроцедуры

Этот код затирает все записи и ничего не добавляет. Ткните, как нужно сделать.
1 Godofsin
 
08.05.14
08:58
Ну наверное не пользоваться вот этим методом: НаборЗаписей.Загрузить(ТаблицаЗаписей);
2 Godofsin
 
08.05.14
08:58
Сформируй полную ТаблицуЗаписей по всем регистраторам, а потом загрузи ее
3 Irbis
 
08.05.14
08:59
(0) Собрать все во временное хранилище. Удалить поочереди наборы по старым регистраторам, записать новый набор из временного хранилища.
4 Wobland
 
08.05.14
08:59
>НаборЗаписей.Отбор.Регистратор.Установить(Отчет);
это какое-то новаторское понимание термина Отчёт?
5 Zombi
 
08.05.14
09:02
(4) Это переменная на форме
6 rphosts
 
08.05.14
09:07
(0) а если сначала записывать в новый а потом очищать?
7 nufnufcheg
 
08.05.14
09:17
1. получить все записи запросом в таблицу значений.
2. пройтись по всем существующим регистраторам и записать для них пустой набор записей.
3. создать набор записей, загрузить в нее таблицу и п1, установить регистратор, записать.
8 Zombi
 
08.05.14
09:17
Процедура КнопкаВыполнитьНажатие(Кнопка)

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

        ТаблицаЗаписей.ЗаполнитьЗначения(Отчет, "Регистратор");

        НаборЗаписейНовый.Загрузить(ТаблицаЗаписей);
        
        НаборЗаписейНовый.Записать();
        
    КонецЦикла; //Пока    
    
КонецПроцедуры


такой код тоже все тупо очистил
9 Wobland
 
08.05.14
09:19
НаборЗаписей.Очистить();
НаборЗаписей.Записать();

ожидаемо
10 Zombi
 
08.05.14
09:23
(9) Ну вроде как перед очищением отбирал по регистратору
11 Zombi
 
08.05.14
09:26
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    ЗапросЗаписи = Новый Запрос;
    ЗапросЗаписи.Текст = "ВЫБРАТЬ
                         |    ПродажиПоДисконтнымКартам.Период,
                         |    ПродажиПоДисконтнымКартам.Регистратор,
                         |    ПродажиПоДисконтнымКартам.НомерСтроки,
                         |    ПродажиПоДисконтнымКартам.Активность,
                         |    ПродажиПоДисконтнымКартам.ДисконтнаяКарта,
                         |    ПродажиПоДисконтнымКартам.ВладелецДисконтнойКарты,
                         |    ПродажиПоДисконтнымКартам.завДисконтнаяГруппа,
                         |    ПродажиПоДисконтнымКартам.Сумма
                         |ИЗ
                         |    РегистрНакопления.ПродажиПоДисконтнымКартам КАК ПродажиПоДисконтнымКартам";
                        
    ТаблицаЗаписей = ЗапросЗаписи.Выполнить().Выгрузить();
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПродажиПоДисконтнымКартам.Регистратор
                   |ИЗ
                   |    РегистрНакопления.ПродажиПоДисконтнымКартам КАК ПродажиПоДисконтнымКартам";
                  
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        НаборЗаписей = РегистрыНакопления.ПродажиПоДисконтнымКартам.СоздатьНаборЗаписей();
        
        НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
        
        НаборЗаписей.Прочитать();
        
        //ТаблицаЗаписей = НаборЗаписей.Выгрузить();
        
        НаборЗаписей.Очистить();
        
        НаборЗаписей.Записать();
        
    КонецЦикла; //Пока
    
    НаборЗаписейНовый = РегистрыНакопления.ПродажиПоДисконтнымКартам.СоздатьНаборЗаписей();
    
    НаборЗаписейНовый.Отбор.Регистратор.Установить(Отчет);

    ТаблицаЗаписей.ЗаполнитьЗначения(Отчет, "Регистратор");

    НаборЗаписейНовый.Загрузить(ТаблицаЗаписей);
    
    НаборЗаписейНовый.Записать();
    
КонецПроцедуры


Вот так все получилось, всем спасибо. (7) В частности :)