Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как передать параметры во внешний отчет.

Как передать параметры во внешний отчет.
Я
   squall84
 
08.06.21 - 21:03
1с УНФ.
Есть типовый отчет акт сверки.
Нужно этот отчет переделать. Т.е. взять копию и изменить макет, чтобы затем из покупателей этот отчет открывался и формировался, как типовый. Собственно с изменением макета проблем нет.

Но я не пойму, как в этот отчет передается контекст. В самом отчете нельзя зайти в настройки, их там нет. Как мне сказали, вроде бы его переписывали, но не в этом суть.

Я копирую отчет, он у меня появляется в отчетах покупателей, но при открытии не формируется сразу. После формирования вручную, он формируется пустым.

Тоже самое, если я делаю его внешним. Он появляется в списке отчетов у покупателя, но формируется пустым. Отчет один в один с типовым. Не могу сообразить, как передать в открываемый отчет параметры. Я вижу, что при формировании типовый отчет берет параметры из компоновщика. Но не могу найти, где заполняется компоновщик. Отчет без формы.
 
 Партнерская программа EFSOL Oblako
   AlvlSpb
 
1 - 09.06.21 - 00:21
В модуле объекта отчета смотрел?
   hhhh
 
2 - 09.06.21 - 01:47
(0) берется форма по умолчанию. Щелкаешь на корне конфигурации Свойства и там находишь, форма отчета, форма настроек отчета, форма вариантов отчета.
   DrZombi
 
3 - 09.06.21 - 06:11
(0) Смотря какая конфигурация.
в БП3 это просто, есть ряд предопределённых процедур, которые вызываются в зависимости от указанных параметров.

Вот тут настройки задаются.
// Для общей формы "Форма отчета" подсистемы "Варианты отчетов".

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

    
КонецПроцедуры




А вот тут полный модуль одного из отчета....
Просто я вот так делаю, в последнее время :)
...Запрос там подменяется для обхода блокировок безопасности в СКД...
...Думаю надо начать переделывать такое на СхемеЗапросоа... но это потом...



Пример:


#Область ОписаниеПеременных


Перем ОтчетИнициализирован;

#КонецОбласти



#Область ПрограммныйИнтерфейс


Функция СведенияОВнешнейОбработке() Экспорт
    
    ИмяОтчета = ЭтотОбъект.Метаданные().Имя; 
    Синоним = ЭтотОбъект.Метаданные().Синоним; 
    Версия =  ЭтотОбъект.Метаданные().Комментарий;
    Синоним = ?(ЗначениеЗаполнено(Синоним),Синоним, ИмяОтчета);         
    
    //ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); (на память...)

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("1.0.0.0");
    
    ПараметрыРегистрации.Наименование     = Синоним;
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
    ПараметрыРегистрации.Версия = Версия; 
    ПараметрыРегистрации.Информация = "Расшифровка запасов на дату оценки по видам";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    
    //Документы...

    //ПараметрыРегистрации.Назначение.Добавить("Документ.АвансовыйОтчет");

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

    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    
    Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьТаблицуКоманд()
    
    // Создадим пустую таблицу команд и колонки в ней

    Команды = Новый ТаблицаЗначений;
    
    // Как будет выглядеть описание печатной формы для пользователя

    Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); 
    
    // Имя нашего макета, что бы могли отличить вызванную команду в обработке печати

    Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
    
    // Тут задается, как должна вызваться команда обработки

    // Возможные варианты:

    // - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система

    // - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки

    // - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки

    Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
    
    // Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы

    Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
    
    // Для печатной формы должен содержать строку ПечатьMXL 

    Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
    
    Возврат Команды;
    
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование = "ОткрытиеФормы", ПоказыватьОповещение = Ложь, Модификатор = "ПечатьMXL")
    
    // Добавляем команду в таблицу команд по переданному описанию.

    // Параметры и их значения можно посмотреть в функции ПолучитьТаблицуКоманд

    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = Представление;
    НоваяКоманда.Идентификатор = Идентификатор;
    НоваяКоманда.Использование = Использование;
    НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
    НоваяКоманда.Модификатор = Модификатор;
    
КонецПроцедуры 

Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения = Неопределено, ПараметрыВыполнения = Неопределено) Экспорт
    
    //Если ИмяКоманды = "ЗаменитьСпособыОтраженияЗарплаты" Тогда

    
    //КонецЕсли;

    
КонецПроцедуры

#КонецОбласти



Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    //Отключим всякого рода проверки безопасности от 1С... оно тут лишнее...

    УстановитьОтключениеБезопасногоРежима(Истина);
    УстановитьПривилегированныйРежим(Истина);
    
    ИнициализироватьОтчет();
    
    СтандартнаяОбработка=Ложь;
    
    //ИнициализироватьОтчет();

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


#Область СлужебныеПроцедурыИФункции


Функция ПолучитьЗначениеПараметра(Настройки_Основные,ИмяПараметра,ЗначениПоУмолчанию,ПараметрВключен=Ложь)
    
    РезФункц = ЗначениПоУмолчанию;
    
    НайденПараметр = Настройки_Основные.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
    Если НайденПараметр <> Неопределено Тогда 
        РезФункц = НайденПараметр.Значение;
        ПараметрВключен = НайденПараметр.Использование;
    КонецЕсли;
    
    Возврат РезФункц;
КонецФункции

Процедура УстановитьПараметр(Настройки_Основные,ИмяПараметра,Знач ЗначениеПоУмолчанию, Знач УстановитьНовоеЗначение=Ложь,
                            пПользовательскиеНастройкиМодифицированы=Ложь, ВозвращаемоеЗначениеПараметра=Неопределено)
    
    НайденПараметр = Настройки_Основные.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
    Если НайденПараметр = Неопределено Тогда 
        ВозвращаемоеЗначениеПараметра = ЗначениеПоУмолчанию;//Не нашли, но вернем его...

        Возврат;
    КонецЕсли;
    
    пЗначение = НайденПараметр.Значение;
    Если УстановитьНовоеЗначение = Истина или Не ЗначениеЗаполнено(пЗначение) Тогда
        НайденПараметр.Значение = ЗначениеПоУмолчанию;
        пЗначение = ЗначениеПоУмолчанию;
    КонецЕсли;
    
    ВозвращаемоеЗначениеПараметра = пЗначение;
    
    НайденПараметр.Использование = Истина;
    
    //Для пользовательского интерфейса...

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

Процедура ИнициализироватьОтчет() Экспорт
    
    Если Не ОтчетИнициализирован Тогда
        
        //Установим значения по умолчанию....

        Настройки = КомпоновщикНастроек.ПолучитьНастройки();
        
        пПользовательскиеНастройкиМодифицированы = Ложь;
        
        ПараметрВключен = Ложь;
        ЗначениеПараметра = ПолучитьЗначениеПараметра(Настройки,"Счет10",Неопределено,ПараметрВключен);
        Если ЗначениеПараметра = Неопределено или Не ЗначениеЗаполнено(ЗначениеПараметра) Тогда 
            ЗначениеПараметра = Новый СписокЗначений;
            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.Материалы);//Сч 10

        КонецЕсли;
        УстановитьПараметр(Настройки,"Счет10",ЗначениеПараметра,Истина,пПользовательскиеНастройкиМодифицированы);
        
        ПараметрВключен = Ложь;
        ЗначениеПараметра = ПолучитьЗначениеПараметра(Настройки,"Счет41",Неопределено,ПараметрВключен);
        Если ЗначениеПараметра = Неопределено или Не ЗначениеЗаполнено(ЗначениеПараметра) Тогда 
            ЗначениеПараметра = Новый СписокЗначений;
            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.Товары);//Сч 41

        КонецЕсли;
        УстановитьПараметр(Настройки,"Счет41",ЗначениеПараметра,Истина,пПользовательскиеНастройкиМодифицированы);
        
        ПараметрВключен = Ложь;
        ЗначениеПараметра = ПолучитьЗначениеПараметра(Настройки,"Счет10_41",Неопределено,ПараметрВключен);
        Если ЗначениеПараметра = Неопределено или Не ЗначениеЗаполнено(ЗначениеПараметра) Тогда 
            ЗначениеПараметра = Новый СписокЗначений;
            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.Товары);//Сч 41

            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.СырьеИМатериалы);//Сч 10

            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.ГСМ);//Сч 10

            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.Тара);//Сч 10

            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.ЗапасныеЧасти);//Сч 10

            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежности);//Сч 10

            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаНаСкладе);//Сч 10

            ЗначениеПараметра.Добавить(ПланыСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаВЭксплуатации);//Сч 10

        КонецЕсли;
        УстановитьПараметр(Настройки,"Счет10_41",ЗначениеПараметра,Истина,пПользовательскиеНастройкиМодифицированы);
        
        КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
        Если пПользовательскиеНастройкиМодифицированы = Истина Тогда
            КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки);
            КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПользовательскиеНастройкиМодифицированы",Истина);
        КонецЕсли;
        
        //Счет10_41

        //ПланСчетов.Хозрасчетный.Товары

        //ПланСчетов.Хозрасчетный.СырьеИМатериалы

        //ПланСчетов.Хозрасчетный.ГСМ

        //ПланСчетов.Хозрасчетный.Тара

        //ПланСчетов.Хозрасчетный.ЗапасныеЧасти

        //ПланСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежности

        //ПланСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаНаСкладе

        //ПланСчетов.Хозрасчетный.СпецоснасткаИСпецодеждаВЭксплуатации        

        
        //Счет10

        //ПланСчетов.Хозрасчетный.Материалы

        
        //Счет41

        //ПланСчетов.Хозрасчетный.Товары

        //....

        
        
        НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Найти("РасчетТранспортногоНалога");
        Если НаборДанных <> Неопределено Тогда 
            
            //.....№ 1

            ИскомыйТекст = "ПОМЕСТИТЬ ТаблицаДаты_Док";
            
            ТекстЗапроса = 
            "
            |ПОМЕСТИТЬ ТаблицаДаты_Док
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |    ВнЗ.Организация,
            |    ВнЗ.Номенклатура,
            |    МАКСИМУМ(НАЧАЛОПЕРИОДА(ВнЗ.ДатаПостановкиНаБаланс, ДЕНЬ))
            |ИЗ
            |    (ВЫБРАТЬ
            |        ХозрасчетныйОбороты.Организация КАК Организация,
            |        ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Номенклатура) КАК Номенклатура,
            |        ХозрасчетныйОбороты.Регистратор.Дата КАК ДатаПостановкиНаБаланс,
            |        ХозрасчетныйОбороты.Регистратор КАК Регистратор,
            |        ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот,
            |        ХозрасчетныйОбороты.КоличествоОборот КАК КоличествоОборот
            |    ИЗ
            |        РегистрБухгалтерии.Хозрасчетный.Обороты(&ПериодНачалоБазы, КОНЕЦПЕРИОДА(&Период, ДЕНЬ), Регистратор, Счет В ИЕРАРХИИ (&Счет10_41), &ВидНоменклатура, , , ) КАК ХозрасчетныйОбороты
            |    ГДЕ
            |        ХозрасчетныйОбороты.Субконто1 В
            |                (ВЫБРАТЬ
            |                    тт.Номенклатура
            |                ИЗ
            |                    ТаблицаТовары КАК тт)
            |        И (ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.АвансовыйОтчет)
            |                ИЛИ ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.ВводНачальныхОстатков)
            |                ИЛИ ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.ОприходованиеТоваров)
            |                ИЛИ ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.ПоступлениеДопРасходов)
            |                ИЛИ ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
            |                ИЛИ ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.ТребованиеНакладная))) КАК ВнЗ
            |
            |СГРУППИРОВАТЬ ПО
            |    ВнЗ.Организация,
            |    ВнЗ.Номенклатура
            |";
            
            НаборДанных.Запрос = СтрЗаменить(НаборДанных.Запрос, ИскомыйТекст,ТекстЗапроса);
            
            //.....№ 2

            ИскомыйТекст = "ПОМЕСТИТЬ ТаблицаДаты_Опер";
            
            ТекстЗапроса = 
            "
            |ПОМЕСТИТЬ ТаблицаДаты_Опер
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |    ВнЗ.Организация,
            |    ВнЗ.Номенклатура,
            |    МАКСИМУМ(НАЧАЛОПЕРИОДА(ВнЗ.ДатаПостановкиНаБаланс, ДЕНЬ))
            |ИЗ
            |    (ВЫБРАТЬ
            |        ХозрасчетныйОбороты.Организация КАК Организация,
            |        ВЫРАЗИТЬ(ХозрасчетныйОбороты.Субконто1 КАК Справочник.Номенклатура) КАК Номенклатура,
            |        ХозрасчетныйОбороты.Регистратор.Дата КАК ДатаПостановкиНаБаланс,
            |        ХозрасчетныйОбороты.Регистратор КАК Регистратор,
            |        ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот,
            |        ХозрасчетныйОбороты.КоличествоОборот КАК КоличествоОборот
            |    ИЗ
            |        РегистрБухгалтерии.Хозрасчетный.Обороты(&ПериодНачалоБазы, КОНЕЦПЕРИОДА(&Период, ДЕНЬ), Регистратор, Счет В ИЕРАРХИИ (&Счет10_41), &ВидНоменклатура, , , ) КАК ХозрасчетныйОбороты
            |    ГДЕ
            |        ХозрасчетныйОбороты.Субконто1 В
            |                (ВЫБРАТЬ
            |                    тт.Номенклатура
            |                ИЗ
            |                    ТаблицаТовары КАК тт)
            |        И ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.ОперацияБух)) КАК ВнЗ
            |
            |СГРУППИРОВАТЬ ПО
            |    ВнЗ.Организация,
            |    ВнЗ.Номенклатура
            |";
            
            НаборДанных.Запрос = СтрЗаменить(НаборДанных.Запрос, ИскомыйТекст,ТекстЗапроса);
            
        КонецЕсли;
        
        ОтчетИнициализирован = Истина;
        
    КонецЕсли;
    
    //Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    
    //пПользовательскиеНастройкиМодифицированы = Ложь;

    //

    ////Заполним параметры нужными значениями...

    //ПараметрВключен = Ложь;

    //Период = ПолучитьЗначениеПараметра(Настройки,"Период",Неопределено,ПараметрВключен);

    //Если Период = Неопределено Тогда

    //    ДатаОстатков = ТекущаяДата();

    //Иначе 

    //    //&Период.ДатаНачала

    //    //&Период.ДатаОкончания

    //    ДатаНачала = НачалоДня(Период.ДатаОкончания);

    //    ДатаОстатков = КонецДня(Период.ДатаОкончания);

    //КонецЕсли;

    //

    //Если Не ЗначениеЗаполнено(ДатаОстатков) или ПараметрВключен <> Истина Тогда

    //    ДатаОстатков = ТекущаяДата();

    //КонецЕсли;

    //

    //УстановитьПараметр(Настройки,"ТекДата",ДатаОстатков,Истина,пПользовательскиеНастройкиМодифицированы);

    //

    ////ПараметрВключен = Ложь;

    ////ДатаОстатков = ПолучитьЗначениеПараметра(Настройки,"ДатаНачала",Неопределено,ПараметрВключен);

    ////ДатаОстатков = ПолучитьЗначениеПараметра(Настройки,"ДатаОстатков",Неопределено,ПараметрВключен);

    //

    //Если ПараметрВключен = Истина Тогда 

    //    УстановитьПараметр(Настройки,"ДатаНачала",ДатаНачала,Истина,пПользовательскиеНастройкиМодифицированы);

    //    УстановитьПараметр(Настройки,"ДатаОстатков",ДатаОстатков,Истина,пПользовательскиеНастройкиМодифицированы);

    //КонецЕсли;

    //

    //КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

    //Если пПользовательскиеНастройкиМодифицированы = Истина Тогда

    //    КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки);

    //    КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПользовательскиеНастройкиМодифицированы",Истина);

    //КонецЕсли;

    
КонецПроцедуры

// Для общей формы "Форма отчета" подсистемы "Варианты отчетов".

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

    
КонецПроцедуры

// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.

//
// Параметры:

//   Форма - УправляемаяФорма - Форма отчета.
//   Отказ - Передается из параметров обработчика "как есть".

//   СтандартнаяОбработка - Передается из параметров обработчика "как есть".
//

// См. также:
//   "УправляемаяФорма.ПриСозданииНаСервере" в синтакс-помощнике.

//
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
    
    ИнициализироватьОтчет();
    ЗначениеВДанныеФормы(ЭтотОбъект, Форма.Отчет);
    
КонецПроцедуры

//Вызывается в универсальной форме отчетов БСП...

Процедура БыстрыеНастройкиЗагрузитьНастройкиВКомпоновщик(ЭтотОбъект, ПараметрыЗаполнения) Экспорт 
    
    ИнициализироватьОтчет();//обновить некоторые данные...

    
КонецПроцедуры

// Вызывается перед загрузкой новых настроек. Используется для изменения схемы компоновки.

//
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт
    
    Если КлючСхемы <> "СхемаИнициализирована" Тогда
        
        ИнициализироватьОтчет();
        
        КлючСхемы = "СхемаИнициализирована";
        
    КонецЕсли;
    
КонецПроцедуры

#КонецОбласти


#Область Инициализация


ОтчетИнициализирован = Ложь;

#КонецОбласти
   DrZombi
 
4 - 09.06.21 - 06:17
(0) И да, Утро, не обессудь...


Как программно открыть типовые отчеты (Карточку счета, Анализ счета, ОСВ по счету) с отбором, не изменяя сам отчет, в конфигурации БП 3.0
https://infostart.ru/1c/articles/345249/
   DrZombi
 
5 - 09.06.21 - 06:17
+ На примере можно и свой намострячить ;)
   DrZombi
 
6 - 09.06.21 - 06:20
+(0)Вот еще, смотри последний пост.
https://forum.infostart.ru/forum9/topic146568/
   DrZombi
 
7 - 09.06.21 - 06:22
+(0)Вариантов много, ты только выбери правильный :)
https://clck.ru/VPQuK
   squall84
 
8 - 09.06.21 - 15:13
(6) К сожалению, у меня нет формы отчета. Используется общая форма УНФ.

Даже если я не добавляю отчет в дополнительные, а просто открываю, сначала запускается процедура общей формы ПриСозданииНаСервере.

В ней есть некоторая структура - параметры, со значение Данные формы структура. К сожалению, что это за параметры и откуда берутся я не смог найти, не так давно на УФ работаю. Если открываю типовый отчет, то в параметрах есть свойства отбора, где и указан ключ и значение.

При открытии внешнего или скопированного типового отчета, в параметрах этого свойства нет. Судя по всему, нужно как-то передать это свойств в параметры. А вот как передать непонятно.

Я уже много ссылок перерыл, но в целом, выходит, что проще написать отчет с нуля. Тогда скорее всего все заработает. Но хотелось бы взять и именно типовый, с минимальными изменениями.
   squall84
 
9 - 09.06.21 - 15:28
(2) Все выставлено, как в типовом. Хранилища настроек нет.
Я так понял, при вызове отчета из контрагента не передается ссылка контрагента, откуда я открываю отчет.
   hhhh
 
10 - 09.06.21 - 18:35
(9) имя отчета обязательное должно быть другое. Не как в типовом. А то будет путаница с настройками. И форму отчета перенесите копипастом из общих форм в сам отчет, желательно.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.