Имя: Пароль:
1C
1С v8
Проблемы с реализацией расшифровки в отчете...
0 MeGa_BALANCE
 
26.09.12
10:35
Прошу помочь тех кто с этим работал...
В отчете присоединяются много горизонтальных группировок
Процедура ВывестиМассив(СтВыв, ТабДок, Макет, НомП)
   ОблГЛ = Макет.ПолучитьОбласть("Строка|Лево");
   ОблГП = Макет.ПолучитьОбласть("Строка|Право");
   СтруктураРас=Новый Структура;
   СтруктураРас.Вставить("Номенклатура",НомП);
   //ТабДок.Присоединить(ОблГЛ);
   ТипВыв="";
   ММин=0;
   Для каждого СтМ из СтВыв цикл
       Если Найти(СтМ.Ключ,"Остаток")>0 Тогда
           ОблШапкаОС = Макет.ПолучитьОбласть("Строка|Остаток");
           ОблШапкаОС.Параметры.ОстатокС=СтМ.Значение;
           СтруктураРасшифровки = СтруктураРас;
           СтруктураРасшифровки.Вставить("Склад",ВывестиСкладИзМассива(СтМ.Ключ));
           СтруктураРасшифровки.Вставить("Регистр","Остаток");        
           ОблШапкаОС.Параметры.РасшифровкаО=СтруктураРасшифровки;
           ТабДок.Присоединить(ОблШапкаОС);            
       ИначеЕсли Найти(СтМ.Ключ,"Резерв_")>0 Тогда    
           Если ТипВыв <> "Резерв" Тогда
               ТипВыв = "Резерв";
               ТабДок.Присоединить(ОблГЛ);
               ТабДок.Присоединить(ОблГП);
           КонецЕсли;    
           ОблШапкаР = Макет.ПолучитьОбласть("Строка|Резерв");
           ОблШапкаР.Параметры.РезервС=СтМ.Значение;
           СтруктураРасшифровки = СтруктураРас;
           СтруктураРасшифровки.Вставить("Склад",ВывестиСкладИзМассива(СтМ.Ключ));
           СтруктураРасшифровки.Вставить("Регистр","Резерв");
           ОблШапкаР.Параметры.РасшифровкаР=СтруктураРасшифровки;
           ТабДок.Присоединить(ОблШапкаР);            
       ИначеЕсли Найти(СтМ.Ключ,"РезервО_")>0 Тогда    
           Если ТипВыв <> "РезервО" Тогда
               ТипВыв = "РезервО";
               ТабДок.Присоединить(ОблГЛ);
               ТабДок.Присоединить(ОблГП);
           КонецЕсли;    
           ОблШапкаОР = Макет.ПолучитьОбласть("Строка|РезервО");
           ОблШапкаОР.Параметры.РезервОС=СтМ.Значение;
           СтруктураРасшифровки = СтруктураРас;
           СтруктураРасшифровки.Вставить("Склад",ВывестиСкладИзМассива(СтМ.Ключ));
           СтруктураРасшифровки.Вставить("Регистр","Резерв");
           ОблШапкаОР.Параметры.РасшифровкаО = СтруктураРасшифровки;
           ТабДок.Присоединить(ОблШапкаОР);            
       ИначеЕсли Найти(СтМ.Ключ,"ВнуреннийЗаказ_")>0 Тогда    
           Если ТипВыв <> "ВнуреннийЗаказ" Тогда
               ТипВыв = "ВнуреннийЗаказ";
               ТабДок.Присоединить(ОблГЛ);
               ТабДок.Присоединить(ОблГП);
           КонецЕсли;    
           ОблШапкаВР = Макет.ПолучитьОбласть("Строка|ВнуреннийЗаказ");
           ОблШапкаВР.Параметры.ВнтрЗак=СтМ.Значение;
           СтруктураРасшифровки = СтруктураРас;
           СтруктураРасшифровки.Вставить("Склад",ВывестиСкладИзМассива(СтМ.Ключ));
           СтруктураРасшифровки.Вставить("Регистр","Резерв");
           ОблШапкаВР.Параметры.РасшифровкаО = СтруктураРасшифровки;
           ТабДок.Присоединить(ОблШапкаВР);            
       ИначеЕсли Найти(СтМ.Ключ,"ЗаказаноВнутр_")>0 Тогда    
           Если ТипВыв <> "ЗаказаноВнутр_" Тогда
               ТипВыв = "ЗаказаноВнутр_";
               ТабДок.Присоединить(ОблГЛ);
               ТабДок.Присоединить(ОблГП);
           КонецЕсли;    
           ОблШапкаЗВ = Макет.ПолучитьОбласть("Строка|ЗаказаноВнутр");
           ОблШапкаЗВ.Параметры.ЗакВнутр=СтМ.Значение;
           СтруктураРасшифровки = СтруктураРас;
           СтруктураРасшифровки.Вставить("Склад",ВывестиСкладИзМассива(СтМ.Ключ));
           СтруктураРасшифровки.Вставить("Регистр","Резерв");
           ОблШапкаЗВ.Параметры.РасшифровкаО = СтруктураРасшифровки;
           ТабДок.Присоединить(ОблШапкаЗВ);            
       ИначеЕсли Найти(СтМ.Ключ,"Заказ_")>0 Тогда    
           Если ТипВыв <> "Заказ" Тогда
               ТипВыв = "Заказ";
               ТабДок.Присоединить(ОблГЛ);
               ТабДок.Присоединить(ОблГП);
           КонецЕсли;    
           ОблШапкаЗ = Макет.ПолучитьОбласть("Строка|Заказ");
           ОблШапкаЗ.Параметры.ЗаказС=СтМ.Значение;
           СтруктураРасшифровки = СтруктураРас;
           СтруктураРасшифровки.Вставить("Склад",ВывестиСкладИзМассива(СтМ.Ключ));
           СтруктураРасшифровки.Вставить("Регистр","Заказ");
           ОблШапкаЗ.Параметры.РасшифровкаЗ = СтруктураРасшифровки;
           ТабДок.Присоединить(ОблШапкаЗ);            
       ИначеЕсли Найти(СтМ.Ключ,"ЛимитМи_")>0 Тогда    
           ММин = СтМ.Значение;
       ИначеЕсли Найти(СтМ.Ключ,"ЛимитМа_")>0 Тогда
           Если ТипВыв <> "ЛимитМа" Тогда
               ТипВыв = "ЛимитМа";
               ТабДок.Присоединить(ОблГЛ);
               ТабДок.Присоединить(ОблГП);
           КонецЕсли;    
           ОблШапкаЛим = Макет.ПолучитьОбласть("Строка|Лимит");
           ОблШапкаЛим.Параметры.МинС=ММин;
           ОблШапкаЛим.Параметры.МаксС=СтМ.Значение;
           Если НеУчитыватьМин Тогда
               ОблШапкаЛим.Параметры.МинС="---";
           КонецЕсли;
           Если НеУчитыватьМакс Тогда
               ОблШапкаЛим.Параметры.МаксС="---";
           КонецЕсли;
           ТабДок.Присоединить(ОблШапкаЛим);
       ИначеЕсли Найти(СтМ.Ключ,"Необходимо_")>0 Тогда    
           Если ТипВыв <> "Необходимо" Тогда
               ТипВыв = "Необходимо";
               ТабДок.Присоединить(ОблГЛ);
               ТабДок.Присоединить(ОблГП);
           КонецЕсли;    
           Если СтМ.Значение<0 Тогда
               ОблШапкаН = Макет.ПолучитьОбласть("Излишки|Необходимо");
           Иначе
               ОблШапкаН = Макет.ПолучитьОбласть("Строка|Необходимо");
           КонецЕсли;
           ОблШапкаН.Параметры.НеобходимоС=СтМ.Значение;
           ТабДок.Присоединить(ОблШапкаН);            
       Иначе
           Сообщить("Параметр структуры не определен для " + СтМ.Ключ);
       КонецЕсли;    
       
   КонецЦикла;    
   ТабДок.Присоединить(ОблГЛ);
   
КонецПроцедуры

После того как по отладчику СтруктураРасшифровки были поделены по складам и типу рассшифровки...
при выводе:

Процедура ОбрРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
   Если ТипЗнч(Расшифровка) = Тип("Структура") Тогда
       Форма=ПолучитьФорму("ФормаДокументы");
       Если Форма.Открыта() Тогда
           Форма.Закрыть();
       КонецЕсли;
       СтандартнаяОбработка = Ложь; //переписать
       Форма=ПолучитьФорму("ФормаДокументы");
       Форма.Номенклатура=Расшифровка.Номенклатура;
       Форма.Склад=Расшифровка.Склад;
       Форма.НаДату=КонецДня(НаДату);
       Форма.Регистр=Расшифровка.Регистр;
       Форма.Открыть();
   КонецЕсли;
КонецПроцедуры

В параметр расшифровки попадает последнее значение склада и регистра выведеного на строке, при этом расшифровка ведется по "Ячейкам"...

Есть предположение что функция .Присодинить() обединяет расшифровки и устанавливает туда последнюю...
1 MeGa_BALANCE
 
26.09.12
10:47
ТабДок.Присоединить - Обединяет расшифровки?
2 MeGa_BALANCE
 
26.09.12
11:10
можно коненечно переписать все по адрессам ячеек определять параметры.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.