Имя: Пароль:
1C
1С v8
Программно заполнить ТЧ корректировки регистров.
0 Margo93
 
27.01.22
13:43
Всем привет ! Подскажите пожалуйста.

Создаю документ "Корректировка регистров", мне нужно программно заполнить ТЧ его данными запроса.
Но как мне в ТЧ этого документа создать строку определенного регистра ? Нужны строки РН "РаспределениеЗапасовДвижения"


//
Запрос с выборкой
//

    Док = Документы.КорректировкаРегистров.СоздатьДокумент();
    Док.Дата = ТекущаяДата();
    Док.УстановитьНовыйНомер("");  
    Док.Операция = Перечисления.ОперацииКорректировкиРегистров.РучнаяКорректировка;
    
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ТЧ = Док.ТаблицаРегистров.Добавить();
        ???????????
КонецЦикла;
1 Ёпрст
 
27.01.22
13:50
(0)
заполнитьЗначенияСвойств(ТЧ,Выборка) Или, еще проще, Док.ТаблицаРегистров.Загрузить(Запрос.Выполнить().Выгрузить());
2 Margo93
 
27.01.22
13:54
(1) А как можно без заполнить/загрузить ?
Как по принципу ТЧ документа:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        НС = Док.Товары.Добавить();
        НС.Номенклатура = Строка.Номенклатура;
        НС.КоличествоУпаковок = Строка.Количество;
        НС.Количество = Строка.Количество;
КонецЦикла;
3 Ёпрст
 
27.01.22
14:07
(2)

Либо так

Док.ТаблицаРегистров.Загрузить(Запрос.Выполнить().Выгрузить());

либо так:

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ТЧ = Док.ТаблицаРегистров.Добавить();
    ЗаполнитьЗначенияСвойств(ТЧ,ВыборкаДетальныеЗаписи);
КонецЦикла;

Либо так

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ТЧ = Док.ТаблицаРегистров.Добавить();
    ТЧ.Вася = ВыборкаДетальныеЗаписи.Федя;
    .....
КонецЦикла;
4 Жан Пердежон
 
27.01.22
14:10
в любой типовой наверное есть такой же или похожий документ
смотри, например, в БП документ ОперацияБух
5 Margo93
 
27.01.22
14:12
Либо так

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ТЧ = Док.ТаблицаРегистров.Добавить();
    ТЧ.Вася = ВыборкаДетальныеЗаписи.Федя;
    .....
КонецЦикла;

А как он поймёт какой регистр ?

Поле объекта не обнаружено (Номенклатура)
{ВнешняяОбработка.ПравкаЗапасов.Форма.Форма.Форма(41)}:        ТЧ.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
6 Kassern
 
27.01.22
14:14
(5) блин да создайте вы вручную данный документ и все станет ясно. Посмотрите структуру в конфигурации у этого документа, особенно ТЧ и что там хранится. В общем укажите в ТЧ имена нужных таблиц. Проводки добавляются через Док.Движения.ВашРегистр.ДобавитьПриход/расход()
7 Kassern
 
27.01.22
14:15
раз вы в этом не смогли сами разобраться, то пользоваться этим документом для правки учета не советую. Дороже потом будет исправлять.
8 Margo93
 
27.01.22
14:21
(6)     ТЧ = Док.Движения.РаспределениеЗапасовДвижения.Добавить();

мне вот эта строка и нужна было, благодарю!!

(7) Я пожалуй попробую)
9 АгентБезопасной Нацио
 
27.01.22
14:24
(7) "граната для обезъянки"© Ёпрст
(5) нет у коррктировки ТЧ.
надо записать док корректировки, а затем пейсать сразу в регистр (через менеджер записи или набор записей), подчиняя записи этому доку...
10 Margo93
 
27.01.22
14:51
Докуент создается, но ТЧ пустая((



    ///Запрос -
    Док = Документы.КорректировкаРегистров.СоздатьДокумент();
    Док.Дата = КонецДня(Дата("20220125"));
    Док.УстановитьНовыйНомер("");
    Док.Операция = Перечисления.ОперацииКорректировкиРегистров.РучнаяКорректировка;

    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ТЧ = Док.Движения.РаспределениеЗапасовДвижения.Добавить();
        ТЧ.ДатаПоступления = КонецДня(Дата("20220125"));
        ТЧ.Активность = ИСТИНА;
        ТЧ.Период = КонецДня(Дата("20220125"));
        ТЧ.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        ТЧ.Склад = ВыборкаДетальныеЗаписи.Склад;
        ТЧ.Сторно = Ложь;
        ТЧ.ИгнорироватьРезервыПриКонтролеОстатков = Ложь;
    КонецЦикла;
        
        Док.Записать(РежимЗаписиДокумента.Запись);
11 Kassern
 
27.01.22
14:54
(10) вам точно нельзя пользоваться этим документом)) А для чего, как вы думаете, у этого документа есть табличная часть "ТаблицаРегистров" с реквизитом имя?
12 Kassern
 
27.01.22
14:55
(10) "Посмотрите структуру в конфигурации у этого документа, особенно ТЧ и что там хранится" вот это я для кого писал?)
13 Kassern
 
27.01.22
14:56
"ТЧ = Док.Движения.РаспределениеЗапасовДвижения.Добавить();" - это не ТЧ! Здесь нет никакого обращения к табличной части. Вы создаете движение в определенной таблице движений.
14 Dmitrii
 
гуру
27.01.22
14:57
ОФФ. А Margo93 - оказывается мужик. Расходимся парни.
15 Kassern
 
27.01.22
14:59
(14) по умолчанию создается акк мужского рода, скорее всего дело в этом.
16 Nolan
 
27.01.22
15:02
Корректировка = Документы.КорректировкаРегистров.СоздатьДокумент();
Корректировка.ТаблицаРегистров.Добавить().Имя = "ТоварыКПоступлению";

Вот так сделай еще
17 Nolan
 
27.01.22
15:04
Корректировка.Движения.ТоварыКПоступлению.Записывать = Истина;
18 Kassern
 
27.01.22
15:14
(17) у нее ТЧ не заполнено, поэтому на форме нужная таблица проводок не выводится
19 Margo93
 
27.01.22
15:58
(11) Не знаю))

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

И как мне теперь заполнять движения ? (
20 Margo93
 
27.01.22
16:02
пока остановилась на этом)

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

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

        
    КонецЦикла;
21 Margo93
 
27.01.22
16:05
Заработало ! пошла взрывать гранату))

    ///Запрос -
    Док = Документы.КорректировкаРегистров.СоздатьДокумент();
        ТЧ = Док.ТаблицаРегистров.Добавить();
        ТЧ.Имя = "РаспределениеЗапасовДвижения";
        
    Док.Дата = КонецДня(Дата("20220125"));
    Док.УстановитьНовыйНомер("");

    Док.Операция = Перечисления.ОперацииКорректировкиРегистров.РучнаяКорректировка;

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

        
    КонецЦикла;