|
Как передать параметры во внешний отчет. | ☑ | ||
---|---|---|---|---|
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) имя отчета обязательное должно быть другое. Не как в типовом. А то будет путаница с настройками. И форму отчета перенесите копипастом из общих форм в сам отчет, желательно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |