8.х При расшифровке создать свой отчет программно

Тема в разделе "Система компоновки данных (СКД)", создана пользователем web.num, 13 авг 2015.

  1. TopicStarter Overlay
    web.num
    Offline

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    918
    Симпатии:
    4
    Баллы:
    29
    Привет всем, подскажите пожалуйста можно ли при клике на рашифровку ЕСЛИ Поле = Подразделение создать абсолютно новый, в дереве конфы не существующий) отчет программно, с другим запросом и вывести в окно рашифровки? Гугл не так уж богат на эти темы.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    ээээ.....расшифровка - это либо тот же отчет, либо другой объект, доступ к которому можно получить программным способом.

    Если отчет будет внешним и файл будет доступен с сервера/клиента, то - можно.
    Посмотри типовые отчеты на предмет обработки расшифровки.
  3. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Отчет какой на СКд или обычный
    --- Объединение сообщений, 14 авг 2015 ---
    по большому счету можно сделать и так и так. только если на СКд то помуторней
  4. Speaker1982
    Offline

    Speaker1982 Опытный в 1С

    Регистрация:
    12 май 2011
    Сообщения:
    223
    Симпатии:
    5
    Баллы:
    29
    Могу только помочь с открытием другого отчета (уже созданного) по расшифровке...как то так:
    Код:
    Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
        ОбработкаРасшифровки(ЭтотОбъект, ЭтаФорма, Расшифровка, СтандартнаяОбработка);
    КонецПроцедуры
    
    Процедура ОбработкаРасшифровки (ОтчетОбъект, ФормаОтчета, Расшифровка, СтандартнаяОбработка)
        СтандартнаяОбработка = Ложь;
       
        МассивПолей = ТиповыеОтчеты.ПолучитьМассивПолейРасшифровки(Расшифровка, ФормаОтчета.ДанныеРасшифровки, , истина);
        Расшифровать = 0;
       
        ЗначениеРасшифровки = ПолучитьЗначениеРасшифровки(Расшифровка);
        Если ТипЗнч(ЗначениеРасшифровки) = ТипЗнч(Число("123")) Тогда
            Расшифровать = 1;   
            НачалоПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение.ДатаНачала;
            КонецПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[0].Значение.ДатаОкончания;
        КонецЕсли;   
       
        Если Расшифровать=1 Тогда
            Для Каждого Элемент Из МассивПолей Цикл
                Если ТипЗнч(Элемент) = Тип("ЗначениеПоляРасшифровкиКомпоновкиДанных") Тогда
                    Если Элемент.Поле = "Статья_ПиС" Тогда
                        СтатьяУПР = Элемент.Значение;
                    КонецЕсли;
                    Если Элемент.Поле = "ПодразделениеУПР" Тогда
                        ПодразделениеУПР = Элемент.Значение;
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
           
        Форма=ПолучитьФорму("Отчет.АнализРасшифровкаПоДокументам.Форма");
        Форма.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода")).Значение=НачалоПериода;
        Форма.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода")).Значение=КонецПериода;
        Форма.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПодразделениеУПР")).Значение=ПодразделениеУПР;
        Форма.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СтатьяУпр")).Значение=СтатьяУпр;
        ПараметрыФормы = Новый Структура;
        ПараметрыФормы.Вставить("СформироватьПриОткрытии",Истина);
       
        Форма.Открыть();
        КонецЕсли;
       
       
        //ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпановкиДанных (ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(Отчет));
       
    КонецПроцедуры
    
    Функция ПолучитьЗначениеРасшифровки(Расшифровка)
    
        КоллекцияПолей = ДанныеРасшифровки.Элементы[расшифровка].ПолучитьПоля();
        Если КоллекцияПолей.Количество () > 0 Тогда
            Возврат КоллекцияПолей[0].Значение;   
        КонецЕсли;   
    КонецФункции // ПолучитьЗначениеРасшифровки()
    
    
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    ТипЗнч(ЗначениеРасшифровки) = ТипЗнч(Число("123")) - опять полет мыслей.......
  6. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    У табличного поля есть ОбработкаРасшифровки, то что Вы используете, а есть еще ОбработкаДополнительнойРасшифровки, можно там сделать
    Т.е по стандарту, щулкнул левой кнопкой получил стандарную, правой - дополнительная как раз вот меню можно сформировать и там уже настроить действия
  7. TopicStarter Overlay
    web.num
    Offline

    web.num Опытный в 1С Команда форума

    Регистрация:
    6 окт 2011
    Сообщения:
    918
    Симпатии:
    4
    Баллы:
    29
    Из всего вышесказанного напрашивается вывод: Что можно сделать в текущем отчете второй макет СКД, и вызывать его в "ОбработкаДополнительнойРасшифровки" !? Наверное так и сделаю! :)

Поделиться этой страницей