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

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

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

Тоже самое, если я делаю его внешним. Он появляется в списке отчетов у покупателя, но формируется пустым. Отчет один в один с типовым. Не могу сообразить, как передать в открываемый отчет параметры. Я вижу, что при формировании типовый отчет берет параметры из компоновщика. Но не могу найти, где заполняется компоновщик. Отчет без формы.
1 AlvlSpb
 
09.06.21
00:21
В модуле объекта отчета смотрел?
2 hhhh
 
09.06.21
01:47
(0) берется форма по умолчанию. Щелкаешь на корне конфигурации Свойства и там находишь, форма отчета, форма настроек отчета, форма вариантов отчета.
3 DrZombi
 
гуру
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 В
            |                (ВЫБРАТЬ
            |                    тт.Номенклатура
            |                ИЗ
            |                    ТаблицаТовары КАК тт)
            |        И ТИПЗНАЧЕНИЯ(ХозрасчетныйОбороты.Регистратор) = ТИП(Документ.ОперацияБух)) КАК ВнЗ
            |
            |СГРУППИРОВАТЬ ПО
            |    ВнЗ.Организация,
            |    ВнЗ.Номенклатура
            |";
            
            НаборДанных.Запрос = СтрЗаменить(НаборДанных.Запрос, ИскомыйТекст,ТекстЗапроса);
            
        КонецЕсли;
        
        ОтчетИнициализирован = Истина;
        
    КонецЕсли;
    
    //Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    
    //пПользовательскиеНастройкиМодифицированы = Ложь;
    //
    ////Заполним параметры нужными значениями...
    //ПараметрВключен = Ложь;
    //Период = ПолучитьЗначениеПараметра(Настройки,"Период",Неопределено,ПараметрВключен);
    //Если Период = Неопределено Тогда
    //    ДатаОстатков = ТекущаяДата();
    //Иначе
    //    //&Период.ДатаНачала
    //    //&Период.ДатаОкончания
    //    ДатаНачала = НачалоДня(Период.ДатаОкончания);
    //    ДатаОстатков = КонецДня(Период.ДатаОкончания);
    //КонецЕсли;
    //
    //Если Не ЗначениеЗаполнено(ДатаОстатков) или ПараметрВключен <> Истина Тогда
    //    ДатаОстатков = ТекущаяДата();
    //КонецЕсли;
    //
    //УстановитьПараметр(Настройки,"ТекДата",ДатаОстатков,Истина,пПользовательскиеНастройкиМодифицированы);
    //
    ////ПараметрВключен = Ложь;
    ////ДатаОстатков = ПолучитьЗначениеПараметра(Настройки,"ДатаНачала",Неопределено,ПараметрВключен);
    ////ДатаОстатков = ПолучитьЗначениеПараметра(Настройки,"ДатаОстатков",Неопределено,ПараметрВключен);
    //
    //Если ПараметрВключен = Истина Тогда
    //    УстановитьПараметр(Настройки,"ДатаНачала",ДатаНачала,Истина,пПользовательскиеНастройкиМодифицированы);
    //    УстановитьПараметр(Настройки,"ДатаОстатков",ДатаОстатков,Истина,пПользовательскиеНастройкиМодифицированы);
    //КонецЕсли;
    //
    //КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
    //Если пПользовательскиеНастройкиМодифицированы = Истина Тогда
    //    КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки);
    //    КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ПользовательскиеНастройкиМодифицированы",Истина);
    //КонецЕсли;
    
КонецПроцедуры

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

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

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

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

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


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

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

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


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

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

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

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

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