Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Расшифровка отчета
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
mavrik
Как реализовать расшифровку отчета,есть некий формируется список контрагентов и по нажатию на один из них выводит все услуги по нему,вот код
Перем Расшифровка;

Функция ФизВес(ДокОсн)
    ФВ=0;
    Если ПустоеЗначение(ДокОсн.ДокОснова)=0 Тогда
        ФВ=ДокОсн.ДокОснова.ФКількість;
    КонецЕсли;
    Возврат ФВ*100;
КонецФункции    

Процедура Сформировать()
    Запрос1 = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийДокумент = Документ.ВиконанняРобітПослуг.ТекущийДокумент;
    |Контрагент = Документ.ВиконанняРобітПослуг.Аналітика1;
    |ВидПослуг = Документ.ВиконанняРобітПослуг.ВидПослуг;
    |Группировка Контрагент;
    |Группировка ВидПослуг без групп;
    |Группировка ТекущийДокумент;
    |"//}}ЗАПРОС
;
    
    Пока Запрос1.Группировка(1)=1 Цикл
        Таб.ВывестиСекцию("Контрагент");
        Расшифровка.Установить("Контрагент",Запрос1.Контрагент);
        Расшифровка.Установить("ВидПослуг",Запрос1.ВидПослуг);
    КонецЦикла;    
КонецПроцедуры

Процедура розшифрстрок(зн)
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийДокумент = Документ.ВиконанняРобітПослуг.ТекущийДокумент;
    |Контрагент = Документ.ВиконанняРобітПослуг.Аналітика1;
    |ВидПослуг = Документ.ВиконанняРобітПослуг.ВидПослуг;
    |Группировка ВидПослуг без групп;
    |Группировка ТекущийДокумент;
    |"//}}ЗАПРОС
;        
КонецПроцедуры

Процедура ОбработкаЯчейкиТаблицы(Зн, Фл)
    Если ТипЗначенияСТр(Зн)="Документ" ТОгда
        Фл=1;
    ИначеЕсли ТипЗначенияСтр(Зн)="СписокЗначений" Тогда
        розшифрСтрок(зн);
    КонецЕсли;    
КонецПроцедуры  

Расшифровка=СоздатьОбъект("СписокЗначений");
Расшифровка.ДобавитьЗначение("","Контрагент");
Расшифровка.ДобавитьЗначение("","ВидПослуг");

Проблема в том что при выборе любого контрагента мне выводит все услуги всех контрагентов из списка.
5_kopeek
Процедура розшифрстрок(зн)
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    ТекКонтрагент=Зн.Получить("Контрагент");
    ТекВидУслг=Зн.Получить("ВидПослуг");
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийДокумент = Документ.ВиконанняРобітПослуг.ТекущийДокумент;
    |Контрагент = Документ.ВиконанняРобітПослуг.Аналітика1;
    |ВидПослуг = Документ.ВиконанняРобітПослуг.ВидПослуг;
    |Группировка ВидПослуг без групп;
    |Группировка ТекущийДокумент;
    |Условие (Контрагент в ТекКонтрагент);
    |Условие (ВидПослуг в ТекВидУслуг);
    |"//}}ЗАПРОС
;        
КонецПроцедуры
mavrik
Цитата(5_kopeek @ 27.01.12, 13:52) необходимо зарегистрироваться для просмотра ссылки
Процедура розшифрстрок(зн)
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    ТекКонтрагент=Зн.Получить("Контрагент");
    ТекВидУслг=Зн.Получить("ВидПослуг");
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийДокумент = Документ.ВиконанняРобітПослуг.ТекущийДокумент;
    |Контрагент = Документ.ВиконанняРобітПослуг.Аналітика1;
    |ВидПослуг = Документ.ВиконанняРобітПослуг.ВидПослуг;
    |Группировка ВидПослуг без групп;
    |Группировка ТекущийДокумент;
    |Условие (Контрагент в ТекКонтрагент);
    |Условие (ВидПослуг в ТекВидУслуг);
    |"//}}ЗАПРОС
;        
КонецПроцедуры

Не работает вывело по первому контрагенту все данные всех контрагентов а остальные контрагенты пустые
nysysimara
попробуйте вместо
Таб.ВывестиСекцию("Контрагент"); 
Расшифровка.Установить("Контрагент",Запрос1.Контрагент);
Расшифровка.Установить("ВидПослуг",Запрос1.ВидПослуг);

так
Расшифровка.Установить("Контрагент",Запрос1.Контрагент);
Расшифровка.Установить("ВидПослуг",Запрос1.ВидПослуг);
Таб.ВывестиСекцию("Контрагент");
5_kopeek
Цитата(nysysimara @ 27.01.12, 15:18) необходимо зарегистрироваться для просмотра ссылки
попробуйте вместо
Таб.ВывестиСекцию("Контрагент"); 
Расшифровка.Установить("Контрагент",Запрос1.Контрагент);
Расшифровка.Установить("ВидПослуг",Запрос1.ВидПослуг);

так
Расшифровка.Установить("Контрагент",Запрос1.Контрагент);
Расшифровка.Установить("ВидПослуг",Запрос1.ВидПослуг);
Таб.ВывестиСекцию("Контрагент");

Логично smile.gif И это как минимум smile.gif
mavrik
Цитата(5_kopeek @ 27.01.12, 15:23) необходимо зарегистрироваться для просмотра ссылки
Логично smile.gif И это как минимум smile.gif

Ничего вообще не выводит
5_kopeek
Цитата(mavrik @ 27.01.12, 15:48) необходимо зарегистрироваться для просмотра ссылки
Ничего вообще не выводит

Т.е. основной отчет выводит, а когда щелкаете по ячейке что происходит?
nysysimara
может так
Перем Расшифровка;

Функция ФизВес(ДокОсн)
    ФВ=0;
    Если ПустоеЗначение(ДокОсн.ДокОснова)=0 Тогда
        ФВ=ДокОсн.ДокОснова.ФКількість;
    КонецЕсли;
    Возврат ФВ*100;
КонецФункции    

Процедура Сформировать()
    Запрос1 = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийДокумент = Документ.ВиконанняРобітПослуг.ТекущийДокумент;
    |Контрагент = Документ.ВиконанняРобітПослуг.Аналітика1;
    |ВидПослуг = Документ.ВиконанняРобітПослуг.ВидПослуг;
    |Группировка Контрагент;
    |Группировка ВидПослуг без групп;
    |Группировка ТекущийДокумент;
    |"//}}ЗАПРОС
;
    
    Пока Запрос1.Группировка(1)=1 Цикл
        Расшифровка.Установить("Контрагент",Запрос1.Контрагент);
        Таб.ВывестиСекцию("Контрагент");
    КонецЦикла;    
КонецПроцедуры

Процедура розшифрстрок(зн)
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    ТекКонтрагент=Зн.Получить("Контрагент");
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийДокумент = Документ.ВиконанняРобітПослуг.ТекущийДокумент;
    |Контрагент = Документ.ВиконанняРобітПослуг.Аналітика1;
    |ВидПослуг = Документ.ВиконанняРобітПослуг.ВидПослуг;
    |Группировка ВидПослуг без групп;
    |Группировка ТекущийДокумент;
    |Условие (Контрагент в ТекКонтрагент);
    |"//}}ЗАПРОС
;        
КонецПроцедуры

Процедура ОбработкаЯчейкиТаблицы(Зн, Фл)
    Если ТипЗначенияСТр(Зн)="Документ" ТОгда
        Фл=1;
    ИначеЕсли ТипЗначенияСтр(Зн)="СписокЗначений" Тогда
        розшифрСтрок(зн);
    КонецЕсли;    
КонецПроцедуры  

Расшифровка=СоздатьОбъект("СписокЗначений");
Расшифровка.ДобавитьЗначение("","Контрагент");
alex040269
Цитата(mavrik @ 27.01.12, 13:39) необходимо зарегистрироваться для просмотра ссылки
Как реализовать расшифровку отчета,есть некий формируется список контрагентов и по нажатию на один из них выводит все услуги по нему,вот код
Перем Расшифровка;

Процедура розшифрстрок(зн)
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |ТекущийДокумент = Документ.ВиконанняРобітПослуг.ТекущийДокумент;
    |Контрагент = Документ.ВиконанняРобітПослуг.Аналітика1;
    |ВидПослуг = Документ.ВиконанняРобітПослуг.ВидПослуг;
    |Группировка ВидПослуг без групп;
    |Группировка ТекущийДокумент;
    |"//}}ЗАПРОС
;        
КонецПроцедуры



не вижу условий в запросе и не вижу где используется параметр процедуры ЗН?
5_kopeek
Цитата(alex040269 @ 27.01.12, 16:54) необходимо зарегистрироваться для просмотра ссылки
не вижу условий в запросе и не вижу где используется параметр процедуры ЗН?

Там много чего не видно, в том числе определения таблицы вывода, потребности в следующих за Контрагент группировках и пр. А зн даже не заметила, восприняла, что зн=расшифровка.
mavrik
Ребята списибО всем огромное,решил,взял только контрагента чтоб расшифровало,а уже в расшифроке вЫтЯнул запрос все что мне надо было
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.