Имя: Пароль:
1C
 
Как перебрать реквизиты РегистрНакопленияЗапись?
0 pro3ri
 
08.08.15
09:56
добрый день.
Пишу универсальный механизм для сторно:

Наборы = Документ.ПолучитьОбъект().Движения;
    Для каждого Движение Из Наборы Цикл
    
        Движение.Прочитать();
        Для каждого Запись Из Движение Цикл
        
            Проводка = Движения[СтрЗаменить(Прав(Строка(типзнч(Движение)),(СтрДлина(Строка(типзнч(Движение)))-Найти(Строка(типзнч(Движение)),":")-1)), " ", "")].Добавить();
            ЗаполнитьЗначенияСвойств(Проводка, Запись);
            Проводка.Период = Дата;
            Для каждого Реквизит Из Запись Цикл     ОШИБКА ТУТ!!
                
                Если ТипЗнч(Реквизит) = Тип("Число") Тогда
                
                        
                
                КонецЕсли;         
            
            КонецЦикла;
            
            
        КонецЦикла;
    
    КонецЦикла;
1 ДенисЧ
 
08.08.15
10:00
Ошибка в другом месте...
Но, к сожалению, на современном уровне биотехнологий её не исправить
2 RomanYS
 
08.08.15
10:21
метаданные
или выгрузить в ТЗ и перебирать колонки
3 pro3ri
 
08.08.15
10:37
(2) Наборы = Документ.ПолучитьОбъект().Движения;
    Для каждого Движение Из Наборы Цикл
    
        Движение.Прочитать();
        ТЗ = Движение.Выгрузить();
        Для каждого СтрокаТЧ Из ТЗ Цикл
        
            Для каждого РеквизитЧисловой Из Движение.метаданные().Ресурсы Цикл
            
                СтрокаТЧ[Строка(РеквизитЧисловой)] = -СтрокаТЧ[Строка(РеквизитЧисловой)];
                СтрокаТЧ.Период = Дата;
                СтрокаТЧ.МоментВремени = МоментВремени();
            КонецЦикла;    
        
        КонецЦикла;
        
        РегистрДвиженийТекДок = Движения[Движение.Метаданные().Имя];
        ЗаполнитьЗначенияСвойств(РегистрДвиженийТекДок, Движение);
        РегистрДвиженийТекДок.Загрузить();
        РегистрДвиженийТекДок.Записать();
        
        
    КонецЦикла;

теперь у регистров РегистрДвиженийТекДок и Движение разный набор колонок, и не идет запись...
4 hhhh
 
08.08.15
12:10
РегистрДвиженийТекДок = Движения[Движение.Метаданные().Имя];
        ЗаполнитьЗначенияСвойств(РегистрДвиженийТекДок, Движение);
        РегистрДвиженийТекДок.Загрузить()


Что это? На каком языке? Вот так пробуй

       Движение.Загрузить(ТЗ);
        Движение.Записать();
5 pro3ri
 
08.08.15
12:17
(4) спасибо, заработало!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший