В обработке настроить макет отчета на СКД, по нажатию кнопки вывести отчет в табличный документ 08.01.22 08.01.22
Информация
Программный запуск отчета на скд https://wiki.programstore.ru/1s-skd-programmnyj-zapusk-otcheta-s-otkrytiem-i-nastrojkoj/
в тч программная установка параметров
Вот поиск "1С отчет СКД в обработке" google
Вот два решения
Вывод результата СКД в обработке http://disk1c.ru
СКД программно для обработки (не отчета) + программное восстановление значений полей из настроек для управляемых форм
Публикация № 255063, Александр Медведев (anig99) , Рейтинг: 2795 https://infostart.ru/1c/articles/255063/
Делал по образцу, как в варианте 1, ничего не работало
Выводит ошибки
{Обработка.Обработка1.Форма.Форма.Форма(17,29)}: Ожидается выражение
Об = РеквизитФормыВЗначение(<<?>>«Объект»); (Проверка: Сервер) // РСА Потому что нужны нормальные кавычки - такие ", а не такие "<<" ">>" {Обработка.Обработка1.Форма.Форма.Форма(17,6)}: Недостаточно фактических параметров (РеквизитФормыВЗначение) Об = <<?>>РеквизитФормыВЗначение(«Объект»); (Проверка: Сервер) {Обработка.Обработка1.Форма.Форма.Форма(18,34)}: Ожидается выражение
Когда первую фигню кода убрал, далее выводит ошибки:
{Обработка.Обработка1.Форма.Форма.Форма(18,34)}: Ожидается выражение
Схема = Обработка1.ПолучитьМакет(<<?>>«Макет»); (Проверка: Сервер) // РСА Потому что надо Обработки.Обработка1.ПолучитьМакет("Макет") {Обработка.Обработка1.Форма.Форма.Форма(18,34)}: Ожидается выражение Схема = Обработка1.ПолучитьМакет(<<?>>«Макет»); (Проверка: Тонкий клиент)
Правил код с учетом примера 2 - не выполнялось из-за клиент-серверных дел
&НаКлиенте Процедура СформироватьОтчет(Команда) // Вставить содержимое обработчика. СформироватьНаСервере(); КонецПроцедуры &НаСервере Процедура СформироватьНаСервере() // Об = РеквизитФормыВЗначение(«Объект»); Схема = Обработки.Обработка1.ПолучитьМакет("Макет"); Настройки = Схема.НастройкиПоУмолчанию; КомпоновщикНастроекДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)); КомпоновщикНастроекДанных.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); //Параметр = КомпоновщикНастроекДанных.Настройки.ПараметрыДанных.Элементы.Найти(«НекоторыйПараметр»); //Параметр.Использование = Истина; //Параметр.Значение = 12345; //Очищаем поле табличного документа Результат = Новый ТабличныйДокумент(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроекДанных.ПолучитьНастройки()); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; // Результат.Очистить(); ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Результат.ОтображатьЗаголовки = Ложь; // РСА ДОбавил, т. к. ничего иначе не выводилось Результат.ОтображатьСетку = Ложь; Результат.Показать(); КонецПроцедуры
Выводило ошибку:
Метод недоступен на сервере
{Обработка.Обработка1.Форма.Форма.Форма(43)}:Результат.Показать();
{Обработка.Обработка1.Форма.Форма.Форма(10)}:СформироватьНаСервере();
по причине:
Метод недоступен на сервере
Вот такое решение нашлось
Вот пишут https://forum.infostart.ru/forum9/topic164064/
13. antz 16.12.16 14:43
Формируйте табличный документ на сервере в функции и возвращайте на клиент, делов-то.
&НаКлиенте
Процедура Сформировать(Команда)
Табдок().Показать()
КонецПроцедуры
&НаСервере
Функция ТабДок()
Результат = Новый ТабличныйДокумент;
Результат.Область(1,1,1,1).Текст = "Ура, получилось!";
Возврат Результат
КонецФункции //()
Исходный вопрос был такой:
Вот исходный вопрос
ТабДок.Показать() в управляемом приложении
1С:Бухгалтерия 3.0 Платформа 1С v8.3
Конфигурация- управление ЖКХ, управляемое приложение.
Есть стандартный отчёт, где данные выводятся в табличный документ.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Сформировать(ДокументРезультат); КонецПроцедуры //это работает- ТабДокумент выводиться Процедура Сформировать(ТабДокумент) Макет = ПолучитьМакет("Макет"); ТабДокумент.Очистить(); ......//различные запросы для вывода данных ТабДокумент.Вывести(ОбластьПодвал);
Пытаюсь сделать на клиенте ТабДокумент.Показать(), к сожалению вообще ничего не получается.
//это не получается &НаКлиенте Процедура Печать1() ТабДокумент = Новый ТабличныйДокумент; Сформировать(ТабДокумент); ТабДокумент.Показать("Тест"); КонецПроцедуры
Хотелось бы иметь возможность редактировать печатную форму табличного документа. Подскажите пожалуйста, как правильно обратиться к этому табличному документу из другой процедуры или функции. Благодарю за помощь.
Итоговый код, который по нажатию кнопки в обработке выводит отчет на СКД в табличный документ.
Пример из учебной базы
В учебной базе в обработке в макетах сделан макет отчета на СКД. Далее код, который по нажатию кнопки выводит отчет в табличный документ.
// Перем Результат; // Сюда выводим табличный документ отчета.. Это объявление вроде не нужное, но пока мучился - писало, что переменная не определена
&НаКлиенте Процедура СформироватьОтчет(Команда) СформироватьНаСервере().Показать(); // Результат=СформироватьНаСервере(); Результат.Показать(); - не работало! КонецПроцедуры &НаСервере Функция СформироватьНаСервере() Схема = Обработки.Обработка1.ПолучитьМакет("Макет"); Настройки = Схема.НастройкиПоУмолчанию; // Не нужная строка, далее напрямую написано: "ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);" КомпоновщикНастроекДанных = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема)); КомпоновщикНастроекДанных.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию); Результат = Новый ТабличныйДокумент(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(Схема, КомпоновщикНастроекДанных.ПолучитьНастройки()); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(Результат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); Возврат(Результат); КонецФункции // КонецПроцедуры - с процедурой не работало. Процедура должна сохранить результат в реквизит формы или в объявленную переменную, что ли?
Остались вопросы
ЗначениеВРеквизитФормы - что такое?
Об = РеквизитФормыВЗначение(«Объект»); - что такое в исходном примере?
По кнопке вызывается функция на сервере, которая возвращает табличный документ, к которому сразу применяется "Показать()".
А если бы была процедура на сервере, тогда процедура должна была бы сохранить результат в реквизит формы или в объявленную переменную, что ли? И как потом управление передалось бы на форму, чтобы на форме вывести полученный результат?
По примеру вопросы:
В этом примере https://forum.infostart.ru/forum9/topic164064/ используется:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Сформировать(ДокументРезультат); КонецПроцедуры
Что за процедуре "ПриКомпоновкеРезультата"? Это для Объект.Отчет? А если отчет сделан как макет внутри обработки, оно будет работать?
"ТабличныйДокумент" может быть:
переменной, созданной "на сервере"?
реквизитом формы?
"Либо вызовите контекст НаСервере и сформируйте Табличный документ там, либо попробуйте запихнуть во временное хранилище, вынуть и показать то, что вынули) " - ничего не понятно!