Имя: Пароль:
1C
1C 7.7
v7: Таблица значений
,
0 eshtrey
 
14.02.14
18:00
Стр = 0;
            ТемпДоходы.ВыбратьСтроки();
            Пока ТемпДоходы.ПолучитьСтроку() = 1 Цикл
                ТемпДоходы.Итоги.ВыбратьСтроки();
                Пока ТемпДоходы.Итоги.ПолучитьСтроку() = 1 Цикл
                    Сообщить("3-"+ТемпДоходы.Итоги.Податам.Итог("Сумма"));
                КонецЦикла;
            КонецЦикла;
            Если ТемпДоходы.НайтиЗначение("грВыручка", Стр, "Группа") = 1 Тогда
                ТемпДоходы.ПолучитьСтрокуПоНомеру(Стр);
                Статьи.ПоДатам.Загрузить(ТемпДоходы.ПоДатам);
                Статьи.Итоги.Загрузить(ТемпДоходы.Итоги);
                
                ПоДатам = Статьи.ПоДатам;
                ПоДатам.ВыбратьСтроки();
                Пока ПоДатам.ПолучитьСтроку()=1 Цикл
                    ПроцентТО = 0;
                    ПолучитьАтрибут(ПрефиксРеквизита+ДатаМесяц(ПоДатам.Месяц),ПроцентТО);
                    ПоДатам.Сумма = Окр(ПоДатам.Сумма*ПроцентТО/100,2);
                КонецЦикла;    
                
                Статьи.Итоги.ВыбратьСтроки();
                Пока Статьи.Итоги.ПолучитьСтроку()=1 Цикл
                    //ПоДатам = Статьи.Итоги.ПоДатам;
                    Статьи.Итоги.ПоДатам.ВыбратьСтроки();
                    Пока Статьи.Итоги.ПоДатам.ПолучитьСтроку()=1 Цикл
                        ПроцентТО = 0;
                        ПолучитьАтрибут(ПрефиксРеквизита+ДатаМесяц(Статьи.Итоги.ПоДатам.Месяц),ПроцентТО);
                        Статьи.Итоги.ПоДатам.Сумма = Окр(Статьи.Итоги.ПоДатам.Сумма*ПроцентТО/100,2);
                    КонецЦикла;    
                    
                    //Расшифровка = Статьи.Итоги.Расшифровка;
                    Статьи.Итоги.Расшифровка.ВыбратьСтроки();
                    Пока Статьи.Итоги.Расшифровка.ПолучитьСтроку()=1 Цикл
                        Статьи.Итоги.Расшифровка.Расшифровка.УдалитьСтроки();
                        //ПоДатам = Статьи.Итоги.Расшифровка.ПоДатам;
                        Статьи.Итоги.Расшифровка.ПоДатам.ВыбратьСтроки();
                        Пока Статьи.Итоги.Расшифровка.ПоДатам.ПолучитьСтроку()=1 Цикл
                            ПроцентТО = 0;
                            ПолучитьАтрибут(ПрефиксРеквизита+ДатаМесяц(Статьи.Итоги.Расшифровка.ПоДатам.Месяц),ПроцентТО);
                            Статьи.Итоги.Расшифровка.ПоДатам.Сумма = Окр(Статьи.Итоги.Расшифровка.ПоДатам.Сумма*ПроцентТО/100,2);
                        КонецЦикла;
                    КонецЦикла;
                КонецЦикла;    
            КонецЕсли;
            ТемпДоходы.ВыбратьСтроки();
            Пока ТемпДоходы.ПолучитьСтроку() = 1 Цикл
                ТемпДоходы.Итоги.ВыбратьСтроки();
                Пока ТемпДоходы.Итоги.ПолучитьСтроку() = 1 Цикл
                    Сообщить("4-"+ТемпДоходы.Итоги.Податам.Итог("Сумма"));
                КонецЦикла;
            КонецЦикла;
1 antoneus
 
14.02.14
18:01
Ах вот оно что.
2 Wobland
 
14.02.14
18:03
теперь про запросы что-нибудь
3 eshtrey
 
14.02.14
18:04
Добрый день! Приведен отрывок процедуры.
Суть проблемы такова, есть ТЗ Статьи со сложной структурой.
Есть ТЗ темпДоходы, это таблица получена путем Статьи.Выгрузить(ТемпДоходы).
Проблема в том, что в приведенном отрывке меняются значения таблицы Статьи, а в итоге получается, что и в исходной ТЗ ТемпДоходы значения тоже изменились.
4 eshtrey
 
14.02.14
18:05
Что не понятно, еще поясню
5 eshtrey
 
14.02.14
18:06
К примеру
Сообщить("3-"+ТемпДоходы.Итоги.Податам.Итог("Сумма"));
выводит 1000
а
Сообщить("4-"+ТемпДоходы.Итоги.Податам.Итог("Сумма"));
выводит уже 500.
6 viktor_vv
 
14.02.14
18:08
А точно получена через выгрузить, а не через присвоение значения переменной ?
7 Mikeware
 
14.02.14
18:08
(5) "продолжайте наблюдения"©
8 viktor_vv
 
14.02.14
18:09
Хотя таки даже при выгрузить, выгрузятся ссылки на вложенные таблицы значений, а не сами таблицы значений. Так что вполне закономерно ведет себя.
9 eshtrey
 
14.02.14
18:10
(8) Как побороть эти связи?
10 Mikeware
 
14.02.14
18:11
(9) понять, чем отличается таблица от ссылки на нее.
11 viktor_vv
 
14.02.14
18:12
Это тебе надо не выгрузить, а циклом обходить, для вложенных таблиц значений в новой ТемпДоходы в ячейку писать СоздатьОбъект("ТаблицаЗначений") и загружать из источника.
А вообще поставь 1С++ используй индексированную таблицу и не мучайся.
12 viktor_vv
 
14.02.14
18:19
(11)+ Либо пралельно со Статьям формируй ТемпДоходы, либо получай плоскую таблицу статей, выгружай в плоскую ТемпДоходы, потом можно использовать для группировки обеих

http://infostart.ru/public/14140/

это если с 1С++ не заморачиваться.
13 eshtrey
 
14.02.14
18:23
(12)Спасибо, наверно буду параллельно формировать.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.