Имя: Пароль:
1C
1С v8
8.1 Расшифровка в СКД
0 umnick
 
19.11.12
22:57
Добрый вечер!

Пробую переписать расшифровки из отчета "СборкаСистемныйБлоков" из книги Хрусталевой. В примере после расшифровки у отчета много столбцов, а у меня только один. Форму отчета создал мастеров.

Пожалуйста подскажите, что я мог упустить.
1 XLife
 
19.11.12
23:02
мысль?
2 umnick
 
19.11.12
23:25
Что я не так спросил?
3 mistеr
 
20.11.12
01:35
Все что угодно мог упустить. Код покажи.
4 umnick
 
20.11.12
09:44
перем Настройки, ПроцессорКомпоновкиДанных, ПроцессорВывода;

Процедура ПриОткрытии()
   СхемаКомпоновкиДанных = Отчеты.СостояниеЗаказовПлит.ПолучитьМакет("СКД");
   Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
   УстановитьНастройки();
   СформироватьОтчет();
   
   Склад = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Склад");
   Склад.Значение = Справочники.Склады.НайтиПоНаименованию("Заречный");
   Склад.Использование=Истина;
   
   Период = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период");
   Период.Значение = КонецДня(ТекущаяДата());
   Период.Использование=Истина;    
КонецПроцедуры

Процедура СформироватьОтчет() Экспорт
   Настройки =    КомпоновщикНастроек.Настройки;
   ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
     
   ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);
   
   ЭлементыФормы.Результат.Очистить();
   ДокументРезультат = ЭлементыФормы.Результат;
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   
   ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры

Процедура УстановитьНастройки()
   //ПараметрДанныхНачалоПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1];
   ////ПараметрДанныхНачалоПериода.Значение = НачалоМесяца(ДобавитьМесяц(РабочаяДата,-1));
   //ПараметрДанныхНачалоПериода.Значение = НачалоГода(РабочаяДата);
   //ПараметрДанныхНачалоПериода.Использование = Истина;

   //ПараметрДанныхКонецПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[2];
   ////ПараметрДанныхКонецПериода.Значение = КонецМесяца(ДобавитьМесяц(РабочаяДата,-1));
   //ПараметрДанныхКонецПериода.Значение = КонецМесяца(РабочаяДата);
   //ПараметрДанныхКонецПериода.Использование = Истина;
   //
   //ПорядокНомер = КомпоновщикНастроек.Настройки.Порядок.Элементы[1];
   //ПорядокНомер.Использование = Ложь;
   
   Настройки = КомпоновщикНастроек.Настройки;
КонецПроцедуры

Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
   Перем ВыполненноеДействие;
   
   // Запретим стандартную обработку расшифровки
   СтандартнаяОбработка = Ложь;
   // Создадим и инициализируем обработчик расшифровки
   ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   
   ДоступныеДействия = Новый Массив();
   ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
   ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить);
   ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать);
   
   // Осуществим выбор действия расшифровки пользователем
   Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия);
   Если Настройки <> Неопределено Тогда
       // Пользователь выбрал действие, для которого нужно менять настройки
       
       Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить Тогда
           КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
           СформироватьОтчет();
       Иначе
           // При других действиях - создадим новый отчет, откроем форму, сформируем отчет в ней
           Отчет = Отчеты.СостояниеЗаказовПлит.Создать();
           Форма = Отчет.ПолучитьФорму("ФормаОтчета");
           Форма.Открыть();
           Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
           Форма.СформироватьОтчет();
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
5 mistеr
 
20.11.12
20:24
Хм, вроде все правильно.
Добавь на форму кнопку со стандартным действием редактирования настроек, и смотри что там накручено после расшифровки.
6 umnick
 
20.11.12
21:30
Первоначальный отчет сгруппирован по датам окончательного выполнения заказа. В каждой дате может быть от одного и больше заказа. В каждом заказе есть перечень изделий которое осталось изготовить по каждому заказу.

Когда нажимаю расшифровку по изделию ставиться фильтр по заказу, дате и материалу и отображается только тот материал который расшифровывается.
7 mistеr
 
20.11.12
21:38
Ну. А что не так?
8 umnick
 
20.11.12
21:46
Я думал что должно было вывести движение расшифровываемого материала по данному заказу в разрезе дат.
9 mistеr
 
20.11.12
22:10
Если результатом расшифровки должен быть отчет другого вида, чемо основной, нужно это сделать самому. Загрузить нужные настройки, донастроить, сформировать.
10 umnick
 
20.11.12
22:30
Просто почему возник вопрос. В приведенном примере из книги Хрусталевой в отчете "Сборка системных блоков" при расшифровке все колонки остаются на месте, а у меня остается только та в которой материал отображается.
11 mistеr
 
21.11.12
10:20
Ну я же говорю, изучай настройки после расшифровки. Загрузи их в консоль отчетов, там все видно.