Имя: Пароль:
1C
1С v8
При записи программно созданного документа КорректировкаРегистров чистятся движения
0 IvanGorbunov
 
26.11.18
15:58
УТ 11.4.5 (8.3.10.2561)
Создаю программно документ Корректировка регистров, добавляю движения, но при записи движения пропадают
Вот код:

    //инициализируем создание документа
    ДокКорректировка = Документы.КорректировкаРегистров.СоздатьДокумент();
    ДокКорректировка.Ответственный = Пользователи.ТекущийПользователь();
    ДокКорректировка.Дата          = Дата;
    
    //таб.часть с названиями регистров
    СтрокаТаблицаРегистров = ДокКорректировка.ТаблицаРегистров.Добавить();
    СтрокаТаблицаРегистров.Имя = "ВыручкаИСебестоимостьПродаж";

    //записываем документ
    ДокКорректировка.Записать();
    
    нбВыручкаИСебестоимостьПродаж = ДокКорректировка.Движения.ВыручкаИСебестоимостьПродаж;
    нбВыручкаИСебестоимостьПродаж.Записывать = Истина;

    //добавляем одну запись    
    НовДвижение = нбВыручкаИСебестоимостьПродаж.Добавить();
    НовДвижение.Активность  = Истина;
    НовДвижение.Регистратор = ДокКорректировка.Ссылка;

    //пишем запись с движением
    нбВыручкаИСебестоимостьПродаж.Записать();

    //снова записываем документ (без этого тоже движения пустые)
    ДокКорректировка.Записать();
1 Cyberhawk
 
26.11.18
15:59
Не делай так
2 Cyberhawk
 
26.11.18
16:01
Ты выбери что-то одно - или использовать независимый НЗ (и тогда записывать тоже отдельно), или использовать коллекцию движений документа.
3 IvanGorbunov
 
26.11.18
16:25
(2) Почему такой код не работает?) Не создает записи, ошибками не ругается

    НаборВыручкаИСебестоимостьПродаж = РегистрыНакопления.ВыручкаИСебестоимостьПродаж.СоздатьНаборЗаписей();
    НаборВыручкаИСебестоимостьПродаж.Отбор.Регистратор.Установить(Регистратор.Ссылка);
    
    НаборВыручкаИСебестоимостьПродаж.Записывать = Истина;
    
    НовДвижение = НаборВыручкаИСебестоимостьПродаж.Добавить();
    НовДвижение.Активность   = Истина;
    НовДвижение.РасчетПартий = Истина;
    
    НаборВыручкаИСебестоимостьПродаж.Записать();
4 Михаил Козлов
 
26.11.18
16:43
(3) Не используйте набор записей регистра: сформируйте нужны движения и запишите документ.
Т.е. вместо набора используйте Движения.ВыручкаИСебестоимостьПродаж.
5 IvanGorbunov
 
26.11.18
16:49
(4) та не получается никак, вот так пробую - ничего.

    НаборВыручкаИСебестоимостьПродаж = Регистратор.Движения.ВыручкаИСебестоимостьПродаж;
        
    НаборВыручкаИСебестоимостьПродаж.Записывать = Истина;
        
    НовДвижение = НаборВыручкаИСебестоимостьПродаж.Добавить();
    НовДвижение.Активность   = Истина;
    НовДвижение.РасчетПартий = Истина;
    
    Регистратор.Записать();
6 youalex
 
26.11.18
16:56
Регистратор.Движения.Записать()
7 Cyberhawk
 
26.11.18
17:04
(3) Отказ пади взводится, а ты не видишь. ЖР хоть глянь, если уровень регистрации максимальный