Конференция

Фильтр
Пометить все
Отобразить только
 
 

КНИГИ БУКЛЕТЫ:
Книга «Разработка интерфейса прикладных решений на платформе «1С:Предприятие 8»»
Книга «1С:Программирование для начинающих. Детям и родителям, менеджерам и руководителям. Разработка в системе "1С:Предприятие 8.3"»
Книга «Облачные технологии «1С:Предприятия»»
Комплексная автоматизация организаций дополнительного образования
Книга «Настольная книга 1С:Эксперта по технологическим вопросам. 2 издание (артикул 4601546118530)»
Книга «Книга "101 совет начинающим разработчикам в системе "1С:Предприятие 8" (артикул 4601546117618)»
Книга «1С:Предприятие 8.3. Версия для обучения программированию (артикул 4601546109996)»
Книга «Hello, 1C. Пример быстрой разработки приложений на платформе "1С:Предприятие 8.3". Мастер-класс (+CD). Версия 3 (артикул 4601546109774)»
Книга «1C:Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы (артикул 4601546108722)»
Книга «Язык запросов "1С:Предприятия 8" (+диск) (артикул 4601546108029)»
Книга «Профессиональная разработка в системе 1С:Предприятие 8" (+DVD-ROM). Издание 2 (артикул 4601546101853)»
Книга «Разработка сложных отчетов в "1С:Предприятии 8.2". Система компоновки данных". Издание 2 (+ CD) (артикул 4601546097569)»
Книга «Решение специальных прикладных задач в "1С:Предприятии 8.2". Серия "1С:Профессиональная разработка" (артикул 4601546092694)»
Книга «Архитектура и работа с данными "1С:Предприятия 8.2". Серия "1С:Профессиональная разработка" (артикул 4601546090690)»
Книга «Инструменты для создания тиражируемых приложений "1С:Предприятия 8.2". Серия "1С:Профессиональная разработка" (артикул 4601546090706)»
Книга «Реализация прикладных задач в системе "1С:Предприятие 8.2" (+CD). Серия "1С:Профессиональная разработка" (артикул 4601546080479)»
Книга «Технологии интеграции 1С:Предприятия (+CD). Серия "1С:Профессиональная разработка" (артикул 4601546087195)»
Книга «Разработка управляемого интерфейса (+CD). Серия "1С:Профессиональная разработка" (артикул 4601546069634)»
Книга «Как настраивать 1С:Предприятие 8.2 при внедрении (+CD) (артикул 4601546069641)»
Книга «1С:Предприятие 8.2. Версия для обучения программированию (артикул 4601546070821)»
Книга «1С:Предприятие 8.2. Практическое пособие разработчика. Примеры и типовые приемы (артикул 4601546069627). Электронная версия»
Книга «1С:Предприятие 8.2. Коротко о главном. Новые возможности версии 8.2 (артикул 4601546069610)»
Книга «Hello, 1C. Пример быстрой разработки приложений на платформе 1С:Предприятие 8.2. Мастер-класс (+CD). Версия 2 (артикул 4601546071576)»
Книга «1С:Предприятие 8.1. Простые примеры разработки (артикул 4601546047045)»
Книга «Разработка сложных отчетов в 1С:Предприятии 8. Система компоновки данных (+CD) (артикул 4601546053091)»
Книга «1C:Enterprise 8.0. A Practical Developer's Guide. Examples and Standard Techniques (с приложением на CD-ROM) (артикул 4601546027368)»
Книга «Комплект вопросов сертификационного экзамена на знание основных механизмов платформы "1С:Предприятие 8" с примерами решений (февраль 2014) (артикул 4601546110077)»
Платформа «1С:Предприятие» как средство разработки бизнес-приложений [С.Нуралиев / "PC Magazine/RE", №11, 2006]



© ЗАО "1С"

 Платформа 8.2  расшифровка в отчете СКД

«« Платформа 8.2: Диалог печати Практ. пособие: Ошибка »»
Сортировка: Более поздние сообщения отображаются ниже  /  выше
расшифровка в отчете СКД
12.09.2018 14:53
Дмитрий
655312

добрый день, коллеги

 

сделал отчет на СКД с расшифровкой

расшифровка реализована в виде вызова другого отчета с передачей ему параметров

при этом отчет расшифровки имеет несколько вариантов, один из которых выбирается при его вызове...

все работает, однако есть одна странность:

если я вызываю расшифровку с одним вариантом, а затем с другим, то она отрабатывает только со второго раза: первый раз она выдает пустую таблицу без параметров, передаваемых из основного отчета, со второго раза - все работает хорошо, параметры передаются и расшифровка выполняется.

если же вызвать расшифровку с тем же вариантом (даже по другой строке отчета), то она сразу отрабатывает верно

 

кто-нибудь сталкивался с чем-то подобным?

 

привожу код процедур общего модуля, запускающих расшифровку

 

 

Функция ПолучитьПараметрПользовательскойНастройки(ПользовательскиеНастройки, ИмяНастройки)
    ПолеКомпановкиПараметр = Новый ПараметрКомпоновкиДанных(ИмяНастройки);    
    ЭлементОтбора = Неопределено;     Для Каждого Элемент Из ПользовательскиеНастройки.Элементы Цикл       
      Если ТипЗнч(Элемент) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") и Элемент.Параметр = ПолеКомпановкиПараметр Тогда           
            Возврат Новый Структура("Значение, Использование",Элемент.Значение, Элемент.Использование);           
            Прервать;       
          КонецЕсли;   
    КонецЦикла; КонецФункции

Процедура УстановитьПараметрПользовательскойНастройки(ПользовательскиеНастройки, ИмяНастройки, Параметр)     ПолеКомпановкиПараметр = Новый ПараметрКомпоновкиДанных(ИмяНастройки);   
    ЭлементОтбора = Неопределено;     Для Каждого Элемент Из ПользовательскиеНастройки.Элементы Цикл
        Если ТипЗнч(Элемент) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") и Элемент.Параметр = ПолеКомпановкиПараметр Тогда
            Элемент.Значение = Параметр.Значение;
            Элемент.Использование = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла; КонецПроцедуры

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

что нужно сделать, чтобы форма приняла передаваемые параметры сразу?

 

Re: расшифровка в отчете СКД
13.09.2018 09:17
Дмитрий
655315

коллеги, если кому интересно, нашел недоработку в своей процедуре

 

1. можно убрать условие в коде. оно ничего не меняет. установка ключа варианта остается

 

//Если НЕ ПустаяСтрока(КлючВарианта) Тогда      
   ПараметрыОбработки.КлючВарианта = КлючВарианта;
//КонецЕсли;

 

2. при первом получении формы нужно указать вариант

3. нужно указать уникальность формы, чтобы не происходил поиск открытого окна отчета-расшифровки

 

   Форма = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки_ +".Форма", Новый Структура("КлючВарианта", КлючВарианта),, Истина);

 

4. нужно убрать код проверки на открытость и закрытие формы

 

//Если Форма.Открыта() Тогда
//       Форма.Закрыть();
//КонецЕсли;

 

5 при втором получении формы нужно также указать уникальность

 

Форма = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки_ +".Форма", ПараметрыОбработки,, Истина);

 

после этих изменений процедура отлично отрабатывает вызовы внешних отчетов с параметрами.

с вопросами обращайтесь


«« Платформа 8.2: Диалог печати Практ. пособие: Ошибка »»