Имя: Пароль:
1C
1С v8
Расшифровка Табличного документа
0 withoutname
 
04.03.13
10:41
Есть такая процедура. Подскажите, почему в Расшифровку добавляется только последняя сформированная ТЗ?
Процедура ВывестиМодельТО(Модель)
   МакетТО = ПолучитьМакет("МакетТО");
   ОбластьШапка = МакетТО.ПолучитьОбласть("ТО");
   ЭлементыФормы.ТаблицаТО.Вывести(ОбластьШапка);
   
   
   ТЗСостав = Новый ТаблицаЗначений;
   ТЗСостав.Колонки.Добавить("Товар");
   ТЗСостав.Колонки.Добавить("Количество");
   ТЗСостав.Колонки.Добавить("Цена");
   ин=0;
   
   ЗапросПоМодели = Новый Запрос;
   ЗапросПоМодели.Текст =
   "ВЫБРАТЬ
   |    МодельТО.Ссылка,
   |    МодельТО.Модель
   |ИЗ
   |    Справочник.МоделиТО КАК МодельТО
   |ГДЕ
   |    МодельТО.Модель = &Модель
   |
   |СГРУППИРОВАТЬ ПО
   |    МодельТО.Ссылка,
   |    МодельТО.Модель";
   ЗапросПоМодели.УстановитьПараметр("Модель", Справочники.Модели.НайтиПоКоду(Модель));
   ЗапросМоделиТО = ЗапросПоМодели.Выполнить().Выбрать();
   Пока ЗапросМоделиТО.Следующий() Цикл
       ОбластьМодель = МакетТО.ПолучитьОбласть("Модель");
       
       ОбластьМодель.Параметры["Модель"] = ЗапросМоделиТО.Ссылка;
       строка = 1;
       Для каждого СтрокаАвтоработы Из ЗапросМоделиТО.Ссылка.Автоработы Цикл
           ТЗСостав.Очистить();
           //для Розничная ИП, Ремзона ИП, ТО №
           ЦенаАвтоработыТО = орПолучитьЦенуАвтоработы(Справочники.ТипыЦен.НайтиПоКоду("ЦБ000005"), СтрокаАвтоработы.Авторабота, Справочники.Модели.НайтиПоКоду(Модель), ,Справочники.Цеха.НайтиПоКоду("ЦБ000002"), Справочники.ВидыРемонта.НайтиПоНаименованию("ТО "+строка));
           СтрокаТЗ = ТЗСостав.Добавить();
           СтрокаТЗ.Товар = СтрокаАвтоработы.Авторабота;
           СтрокаТЗ.Количество = 1;
           СтрокаТЗ.Цена = ЦенаАвтоработыТО.Цена;
           
           ЗапросСвязанныхРабот = Новый Запрос;
           ЗапросСвязанныхРабот.Текст =
           "ВЫБРАТЬ
           |    СвязанныеРаботы.Авторабота,
           |    СвязанныеРаботы.СвязаннаяРабота,
           |    СвязанныеРаботы.Количество
           |ИЗ
           |    РегистрСведений.СвязанныеРаботы КАК СвязанныеРаботы
           |ГДЕ
           |    СвязанныеРаботы.Авторабота = &Авторабота";
           ЗапросСвязанныхРабот.УстановитьПараметр("Авторабота",СтрокаАвтоработы.Авторабота);
           ВыборкаСоставТО = ЗапросСвязанныхРабот.Выполнить().Выбрать();
           СуммаВсего = ЦенаАвтоработыТО.Цена;
           Пока ВыборкаСоставТО.Следующий() Цикл
               ОбработкаПрерыванияПользователя();
               
               ЦенаЗапчасти = обПолучитьЦену(Справочники.ТипыЦен.НайтиПоКоду("ЦБ000005").Ссылка,ВыборкаСоставТО.СвязаннаяРабота,,,Константы.ВалютаРегламентированногоУчетаОрганизаций.Получить(),,,,Справочники.ПодразделенияКомпании.НайтиПоКоду("ЦБ000002"));
               СуммаВсего = СуммаВсего + ЦенаЗапчасти*ВыборкаСоставТО.Количество;
               СтрокаТЗ = ТЗСостав.Добавить();
               СтрокаТЗ.Товар = ВыборкаСоставТО.СвязаннаяРабота;
               СтрокаТЗ.Количество = ВыборкаСоставТО.Количество;
               СтрокаТЗ.Цена = ЦенаЗапчасти;
           КонецЦикла;
           
           ОбластьМодель.Параметры["Стоимость"+строка] = СуммаВсего;
           ОбластьМодель.Параметры["СтоимостьРасшифровка"+строка] = ТЗСостав;
           //ОбластьМодель.Область("Стоимость"+строка).Текст = СуммаВсего;
           //ОбластьМодель.Область("Стоимость"+строка).Расшифровка = ТЗСостав;
           строка=строка+1;
       КонецЦикла;
       ЭлементыФормы.ТаблицаТО.Присоединить(ОбластьМодель);
   КонецЦикла;
   
КонецПроцедуры
1 Wobland
 
04.03.13
10:43
добавляются все. просто ты показываешь только крайнюю область
2 withoutname
 
04.03.13
10:46
(1) нет, после вызова процедуры еще строчки есть :)

ВывестиМодельТО("TA");
ЭлементыФормы.ТаблицаТО.ТолькоПросмотр = Истина;
ЭлементыФормы.ТаблицаТО.Показать();
3 Галахад
 
гуру
04.03.13
10:50
(1) +1.
4 Wobland
 
04.03.13
10:51
(2) просто ты показываешь ОбластьМодель только один раз
5 withoutname
 
04.03.13
11:07
у меня параметры этой области заполняются в цикле, как заполнились все параметры, я ее вывожу.
6 withoutname
 
04.03.13
11:12
7 Wobland
 
04.03.13
11:22
(6) 1) пока 2) получить область 3) заполнить параметры 4) конец цикла 5) вывести область
иными словами:
цикл
любовь с новой областью
конеццикла
вывод области
8 withoutname
 
04.03.13
11:43
(7) чем отличается от моего?
у меня получается вот такая табличка (http://i51.fastpic.ru/big/2013/0304/c2/25f727562376f5e92efe9937f6e8edc2.png)
по какой бы области я не тыкал у меня появляется одна и та же ТЗ.
9 Wobland
 
04.03.13
11:43
я устал, я ухожу
10 withoutname
 
04.03.13
12:30
ну что не так?
11 Галахад
 
гуру
04.03.13
12:32
ОбластьМодель.Параметры["СтоимостьРасшифровка"+строка] = ТЗСостав.Скопировать()
12 withoutname
 
04.03.13
13:04
(11) спасибо
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший