1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
first_may 26.11.20 - 20:39 | Добрый вечер.
Конфигурация 1С:ERP Управление предприятием 2 (2.4.6.174). Есть типовой отчет "Ведомость по партиям товаров". В нем есть сохраненная настройка, например Тест. Подскажите пож, как в своей обработке программно вызвать этот отчет с этой настройкой и результат получить в таблицу значений? | ||
first_may 1 - 26.11.20 - 20:50 | Ну может просто подскажите, как загрузить настройки отчета? | ||
МихаилМ 2 - 26.11.20 - 20:53 | |||
first_may 3 - 26.11.20 - 20:58 | |||
first_may 4 - 26.11.20 - 21:00 | (2) пароль просит | ||
mikecool 5 - 26.11.20 - 21:45 | дык, если программно, то в качестве настройки берешь из вариантов, они все в схеме доступны | ||
Cthulhu 6 - 26.11.20 - 21:57 | (4): на этом ресурсе пароль... кхм, вот при регистрации ты с правилами согласился - не читая их при том. и тут вдруг оказывается, что их прочитать надо. не потому что они интересные, а потому что там ответ на твой вопрос есть. ))) | ||
mikecool 7 - 26.11.20 - 21:59 | +5 как вариант
пСхемаКомпоновкиДанных = пФорма.СхемаКомпоновкиДанных;
пКомпоновщикНастроек = пФорма.КомпоновщикНастроек;
пКомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(пСхемаКомпоновкиДанных));
пКомпоновщикНастроек.ЗагрузитьНастройки(пСхемаКомпоновкиДанных.ВариантыНастроек.ПоОшибкам.Настройки); | ||
Вафель 8 - 26.11.20 - 22:03 | настройка не предопределеная, а сохраненная как я понял | ||
first_may 9 - 26.11.20 - 23:03 | (8) да да.. настройка сохраненная | ||
first_may 10 - 26.11.20 - 23:03 | получается вот так  // получаю настройки из макета Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет"); Настройки = Макет.ПолучитьТекст();  // сохраняю в файл ИмяФайлаXML = ПолучитьИмяВременногоФайла("xml"); Файл = Новый ЗаписьТекста(ИмяФайлаXML); Файл.ЗаписатьСтроку(Настройки); Файл.Закрыть();  // читаю в найстройки СКД ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайлаXML); НастройкиКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); | ||
first_may 11 - 26.11.20 - 23:04 | // получаем схему компоновки данных Схема = Отчеты.ВедомостьПоПартиямТоваров.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");  // получаем настройки по умолчанию компоновки  //Настройки = Схема.НастройкиПоУмолчанию;  // создаем новый компановщик настроек компановки данных КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных);  // заполняем параметр "Период" Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период"); Параметр.Использование = Истина; Параметр.Значение.ДатаНачала = НачалоДня('20200701000000'); Параметр.Значение.ДатаОкончания = КонецДня('20200731235959'); | ||
first_may 12 - 26.11.20 - 23:04 | // получим макет компоновки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;  //Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки(), , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.ПолучитьНастройки()); Макет.ЗначенияПараметров.ТекущаяДата.Значение = ТекущаяДата(); Макет.ЗначенияПараметров.Валюта.Значение = Справочники.Валюты.НайтиПоКоду("643"); Макет.ЗначенияПараметров.НачалоПериода.Значение = НачалоДня('20200701000000'); Макет.ЗначенияПараметров.НачалоПериода22.Значение = НачалоДня('20200701000000'); Макет.ЗначенияПараметров.П.Значение = НачалоДня('20200701000000'); Макет.ЗначенияПараметров.КонецПериода.Значение = КонецДня('20200731235959'); Макет.ЗначенияПараметров.КонецПериода21.Значение = КонецДня('20200731235959'); Макет.ЗначенияПараметров.П2.Значение = КонецДня('20200731235959');  // через процессор компоновки получим результат ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет);  //ТаблицаРезультат = Новый ТаблицаЗначений;  //  //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;  //ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);  //ПроцессорВывода.Вывести(ПроцессорКомпоновки); ТабличныйДокумент = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ТабличныйДокумент.Записать("D:\Zharikov Sergey\Отчет1.xls", ТипФайлаТабличногоДокумента.XLS); | ||
first_may 13 - 26.11.20 - 23:04 | Открываю Отчет1.xls, но в нем только шапка. | ||
first_may 14 - 26.11.20 - 23:06 | Хорошо бы в ТаблицаЗначений, но и так пусто.
Что то не так. | ||
first_may 15 - 27.11.20 - 14:17 | Подскажет кто? Есть ли ошибка в коде? | ||
Greeen 16 - 27.11.20 - 14:58 | Вот кусок кода, может быть поможет СКД = ЗначениеОбъект.ПолучитьМакет("Макет"); АдресСхемы = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор); ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы); КомпоновщикНастроек= Новый КомпоновщикНастроекКомпоновкиДанных; НастройщикКомпоновкиФИ.Инициализировать(ИсточникНастроек); НастройщикКомпоновкиФИ.ЗагрузитьНастройки(ЗначениеОбъект.ХранилищеНастроекОтбора.Получить()); НастройкиКомпоновщика = КомпоновщикНастроек.Настройки; ПараметрыНастройки = НастройкиКомпоновщика.ПараметрыДанных; <Тут устанавливаем настройки, отборы> КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД, КомпоновщикНастроек.Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ТаблицаРезультат = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Вот так в таблицу значений будет | ||
Greeen 17 - 27.11.20 - 15:00 | НастройщикКомпоновкиФИ заменить на КомпоновщикНастроек Криво скопировал =) | ||
first_may 18 - 27.11.20 - 21:09 | (17) спасибо, пригодилось..
а так сам виноват.. не правильно параметр отчета заполнял.. все получилось спасибо всем! | ||
first_may 19 - 27.11.20 - 21:31 | Да, чуть не забыл.. Решение, может пригодиться кому :) ОсновнаяСхемаКомпоновкиДанныхНастройки - текстовый макет, в котором вставлен текст настроек из отчета в предприятии ОсновнаяСхемаКомпоновкиДанных - сам отчет  // получаю настройки из макета Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанныхНастройки"); Настройки = Макет.ПолучитьТекст();  // сохраняю настройки в файл ИмяФайлаXML = ПолучитьИмяВременногоФайла("xml"); Файл = Новый ЗаписьТекста(ИмяФайлаXML); Файл.ЗаписатьСтроку(Настройки); Файл.Закрыть();  // читаю в найстройки СКД ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.ОткрытьФайл(ИмяФайлаXML); НастройкиКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); ЧтениеXML.Закрыть(); УдалитьФайлы(ИмяФайлаXML);  // параметры отчета Д1 = НачалоДня(объект.Дата1); Д2 = КонецДня(объект.Дата2);  // получаем схему компоновки данных  //Схема = Отчеты.ВедомостьПоПартиямТоваров.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); Схема = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");// заменил ТекущаяДатаСеанса() на ТекущаяДата()  // создаем новый компановщик настроек компановки данных КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)); КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Период"); Параметр.Использование = Истина; Параметр.Значение.ДатаНачала = Д1; Параметр.Значение.ДатаОкончания = Д2; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода"); Параметр.Использование = Истина; Параметр.Значение = Д1; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода22"); Параметр.Использование = Истина; Параметр.Значение = Д1; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода"); Параметр.Использование = Истина; Параметр.Значение = Д2; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода21"); Параметр.Использование = Истина; Параметр.Значение = Д2; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТекущаяДата"); Параметр.Использование = Истина; Параметр.Значение = ТекущаяДата(); Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Валюта"); Параметр.Использование = Истина; Параметр.Значение = Справочники.Валюты.НайтиПоКоду("643"); Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ПоПредприятию"); Параметр.Использование = Истина; Параметр.Значение = Истина; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДанныеПУ21"); Параметр.Использование = Истина; Параметр.Значение = Ложь; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ДанныеПУ22"); Параметр.Использование = Истина; Параметр.Значение = Истина; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТекстЗапросаВес"); Параметр.Использование = Истина; Параметр.Значение = 0; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ТекстЗапросаОбъем"); Параметр.Использование = Истина; Параметр.Значение = 0;  // получим макет компоновки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.Настройки);// для ТабличныйДокумент  //МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроек.Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); // для ТаблицаЗначений  // через процессор компоновки получим результат ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ТабличныйДокумент = Новый ТабличныйДокумент; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент); ПроцессорВывода.Вывести(ПроцессорКомпоновки); ТабличныйДокумент.Записать("D:\....\Отчет1.xls", ТипФайлаТабличногоДокумента.XLS);  //ТаблицаРезультат = Новый ТаблицаЗначений;  //  //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;  //ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат);  //ПроцессорВывода.Вывести(ПроцессорКомпоновки); |
|
Список тем форума |