Имя: Пароль:
1C
 
Как поймать клик по отчету-компановке
0 r1000
 
29.04.08
15:06
Выводиться стандартный отчет(сделаный через компановку).
Когда кликаешь по ячейке появляется стандартное меню(расшифорвать, открыть, отфильтровать...)
Нужно поймать этот момент, получить значений из ячейки и обработать это событие по своему. Как это сделать ?
Спасибо.
1 IronDemon
 
29.04.08
15:07
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
2 r1000
 
29.04.08
15:09
А как то по-подробней нельзя ли ?
3 IronDemon
 
29.04.08
15:11
Что делать будешь?
4 r1000
 
29.04.08
15:14
Отчет выводит список товаров которые рекомендуется заказать.
Манагер должен из этого списка выбрать нужные товары.
Тоесть кликает манагер по ячейке, а ему "Введите количество заказа", потом эта позиция попадает в уже открытый документ "Заказ поставщику" вместе с количеством. Вот.
5 IronDemon
 
29.04.08
15:24
Процедура ОбновитьОтчет() Экспорт
   
   ЭлементыФормы.Результат.Очистить();
   
   //ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
   ДанныеРасшифровки = Неопределено;
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   
   //Изменяем текст запроса, чтобы он нормально учитывал фильтры
   
   //Получаем настройки для запуска
   МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
   
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент();
   ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
   ПроцессорВывода.НачатьВывод();
   Пока Истина Цикл
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
       Если ЭлементРезультата = Неопределено Тогда
           Прервать;
       КонецЕсли;
       ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
   
КонецПроцедуры // ОбновитьОтчет()


Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
   
   Перем ВыполненноеДействие;

   // Запретим стандартную обработку расшифровки
   СтандартнаяОбработка = Ложь;

   // Создадим и инициализируем обработчик расшифровки
   ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
   
   СписокДействий = Новый СписокЗначений;
   СписокДействий.Добавить("ВедомостьПросроченныеВзаиморасчетыСКонтрагентами", "Ведомость по просроченным взаиморасчетам с контрагентами");
   СписокДействий.Добавить("ВедомостьВзаиморасчетыСКонтрагентами", "Ведомость по взаиморасчетам с контрагентами");
   
   ДоступныеДействия = Новый Массив();
   ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.ОткрытьЗначение);
   ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить);
   
   ИндексРасшифровки = Число(Расшифровка) + 1;
   Если ДанныеРасшифровки.Элементы.Количество() > ИндексРасшифровки И ТипЗнч(ДанныеРасшифровки.Элементы[ИндексРасшифровки]) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда
       ДоступныеДействия.Добавить(ДействиеОбработкиРасшифровкиКомпоновкиДанных.Расшифровать);
   КонецЕсли;
   
   // Осуществим выбор действия расшифровки пользователем
   Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка, ВыполненноеДействие, ДоступныеДействия, СписокДействий);
   
   Если Настройки <> Неопределено Тогда
       // Пользователь выбрал действие, для которого нужно менять настройки

       Если ВыполненноеДействие = ДействиеОбработкиРасшифровкиКомпоновкиДанных.Упорядочить Тогда
           
           // Если требется упорядочить - упорядочим в текущем отчете
           КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
           ДействияФормыСформировать(Неопределено);

       Иначе
           
           // При других действиях - создадим новый отчет, откроем форму, сформируем отчет в ней
           Отчет = Отчеты[Метаданные().Имя].Создать();
           Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
           Форма = Отчет.ПолучитьФорму();
           Форма.ДействияФормыСформировать(Неопределено);
           Форма.Открыть();

       КонецЕсли;
       
   КонецЕсли;
   
   // Отчет "Ведомость по взаиморасчетам с контрагентами"
   Если ВыполненноеДействие = "ВедомостьВзаиморасчетыСКонтрагентами" Тогда
6 r1000
 
29.04.08
15:36
Во-во, то что нада...
Спасибо.
7 r1000
 
29.04.08
19:02
Непонятно что дальше делать после:
Если ВыполненноеДействие = "ВедомостьВзаиморасчетыСКонтрагентами" Тогда
что тут...?
8 IronDemon
 
29.04.08
19:20
// Отчет "Ведомость по взаиморасчетам с контрагентами"
   Если ВыполненноеДействие = "ВедомостьВзаиморасчетыСКонтрагентами" Тогда
       
       Отчет = Отчеты[ВыполненноеДействие].Создать();
       
       Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент") = Неопределено
        И ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента") = Неопределено Тогда
           Возврат;
       КонецЕсли;
       
       ПараметрыНастройки = Новый Структура;
       ДатаОтчета = ЭтотОбъект.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДатаКон").Значение.Дата;
       ПараметрыНастройки.Вставить("ДатаКон", ДатаОтчета);  
       ПараметрыНастройки.Вставить("ДатаНач", ДобавитьМесяц(ДатаОтчета, - 3));
       ПараметрыНастройки.Вставить("ВыбранныеПоля", Новый Структура("Регистратор"));
       ПараметрыНастройки.Вставить("РаскрашиватьИзмерения", Истина);
       ПараметрыНастройки.Вставить("ВыводитьИтогиПоВсемУровням", Истина);
       
       ТаблицаОтбора = Новый ТаблицаЗначений;
       ТаблицаОтбора.Колонки.Добавить("Имя");
       ТаблицаОтбора.Колонки.Добавить("ВидСравнения");
       ТаблицаОтбора.Колонки.Добавить("Значение");
       ТаблицаОтбора.Колонки.Добавить("ЗначениеС");
       ТаблицаОтбора.Колонки.Добавить("ЗначениеПо");
       
       НоваяСтрока  = ТаблицаОтбора.Добавить();
       
       Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент") <> Неопределено Тогда
           НоваяСтрока.Имя = "Контрагент";
           Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент").Иерархия Тогда
               НоваяСтрока.ВидСравнения = ВидСравнения.ВИерархии;
               ПараметрыНастройки.Вставить("ГруппировкиСтрок", Новый Структура("Контрагент, ДоговорКонтрагента"));
           Иначе
               НоваяСтрока.ВидСравнения = ВидСравнения.Равно;
               ПараметрыНастройки.Вставить("ГруппировкиСтрок", Новый Структура("ДоговорКонтрагента"));
           КонецЕсли;
           НоваяСтрока.Значение = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("Контрагент").Значение;
           НоваяСтрока.ЗначениеС = Null;
           НоваяСтрока.ЗначениеПо = Null;
       ИначеЕсли ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента") <> Неопределено Тогда
           НоваяСтрока.Имя = "ДоговорКонтрагента";
           Если ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента").Иерархия Тогда
               НоваяСтрока.ВидСравнения = ВидСравнения.ВИерархии;
           Иначе
               НоваяСтрока.ВидСравнения = ВидСравнения.Равно;
           КонецЕсли;
           НоваяСтрока.Значение = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьРодителей()[0].ПолучитьПоля().Найти("ДоговорКонтрагента").Значение;
           НоваяСтрока.ЗначениеС = Null;
           НоваяСтрока.ЗначениеПо = Null;
       КонецЕсли;
       
       ПараметрыНастройки.Вставить("Отбор", ТаблицаОтбора);
       
       Отчет.Настроить(ПараметрыНастройки);
       
       Форма = Отчет.ПолучитьОсновнуюФорму();
       Форма.ОбновитьОтчет();
       Форма.Открыть();
       
   КонецЕсли;
9 r1000
 
29.04.08
19:46
Охренеть. Спасибо большое.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.