1с скд тз как параметр
Перейти к содержимому

1с скд тз как параметр

  • автор:

1с скд тз как параметр

Создание нового внешнего отчета

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

Создание предопределенной процедуры

Внутри этой процедуры будем собирать данные и формировать отчет.
В процедуре ПриКомпоновкеРезультата отключаем стандартную обработку. СтандартнаяОбработка = Ложь;
Затем формируем таблицу значений произвольным образом. Имена колонок таблицы значений должны совпадать с будущими полями набора данных в СКД.:

Для примера добавим три строки данных. Далее по шагам создаем вывод отчета.

  • Из схемы получаем настройки по умолчанию.
  • В соответствующую переменную отправляем данные о расшифровке.
  • Формируем макет с помощью компоновщика макета.
  • Передаём в макет компоновки схему, настройки и данные расшифровки.
  • Выполняем компоновку с помощью процессора компоновки. Для этого выполняем метод процессора компоновки данных Инициализировать(). В качестве параметров передаём макет компоновки данных, внешние наборы данных (тип: Структура, ключ структуры должен совпадать с именем объекта в схеме компоновки данных , значение — сформированная таблица значений), данные расшифровки.
  • Очищаем поле табличного документа.
  • Выводим результат в табличный документ.
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); //Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // - Если сделать так, как показано выше(рекомендуют на некоторых ресурсах), то при изменении настроек в режиме клиента // этих изменений Вы не увидите, потому что настройки всегда будут по умолчанию. Как правильно - вариант ниже Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", ТЗВывод); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); 

Добавляем макет схемы компоновки. Название можем оставить по умолчанию.

Добавление нового макета СКД

Создаем набор данных. Для этого добавляем новый набор данных типа Объект. В поле Имя объекта, содержащего данных помещаем то название, которое мы указали в качестве ключа при создании структуры ВнешийНаборДанных. Затем добавляем поля. Имена должны точно совпадать с именами колонок в таблице значений. Далее можем указать допустимые значения, форматы и т.д.

Создание набора данных и полей отчета СКД

Добавляем ресурсы, если это необходимо. По ним будут считаться итоги. В нашем случае это поля Количество и Сумма.

Добавление ресурсов набора данных СКД

В закладке Настройки с помощью конструктора настроек формируем вариант отчета по умолчанию

Настройка варианта отчета СКД

Сохраняем наш отчет. Запускаем его в клиенте и формируем. Пример выполнения отчета СКД с использованием данных из таблицы значений приведен на картинке.

Пример отчета СКД с данными из таблицы значений

Вот и все. Достаточно просто, не правда ли?

Получившийся отчет для примера можно скачать тут

1с скд тз как параметр

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

Возьми левое, выкинь все что получилось Null при соединении, не вариант?
Долго работать будет, выполняя соединение. Очень много строк в том что справа.

Я в подобных случаях делаю набор данных сам, вообще не в СКД, а потом уже готовый для вывода туда запихиваю.

а почему просто тупо не присвоить ТЗ параметру СКД?

Дело в том, что если в запросе есть 1 такой запрос из пакета

то при сохранении отчета и при открытии одинаково рунается так

Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
<(16, 2)>: Неверные параметры «ТаблЗн»
>&ТаблЗн КАК ВремТабл

(5) Формируй сразу источник данных и отдавай его СКД
(6) Что именно Вы имеете ввиду?

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

(0) На сколько я понял СКД — никак. Можно ТЗ передать в СКД только как независимый источник данных, но использовать его тут же в запросе этого же СКД нельзя.

(8) для фильтрации можно использовать колонку этой таблицы. Колонка — это массив. А массив можно передать как параметр.

(2) а так он что без соединения работает или внутреннее соединение быстрее левого? При выводе Отбор и все.

Использование внешних таблиц значений в отчете 1С на СКД на реальном примере.

До данной версии использовать внешние таблицы в запросе СКД можно было только путем передачи внешнего источника данных, поля которого необходимо было описывать в схеме СКД вручную.
Теперь можно полностью создать стандартный отчет на СКД, отладить его, а при необходимости добавить в него какие-то внешние, дополнительно обработанные данные.
Относительно несложно например взять типовой 1С отчет и через объединение с внешней таблицей (а может даже и не одной) вывести в отчет дополнительные поля, не анализируя и не пытаясь изменить (иногда с риском нарушения работоспособности) изначальный текст запроса.
Т.е. польза данного нововведения в первую очередь в менее трудозатратной доработке какого-либо уже существующего решения, либо более быстрой разработе сложных отчетов, в случае если не все данных удается получить стандартным запросом.

Таблицы в Систему компоновки данных можно передавать через Менеджер временных таблиц, как и в обычный запрос. Пример: мы ходим получить данные сотрудника в виде строки (или как-то еще обработать), чтобы потом в отчете по сотрудникам вывести эти данные в отдельный столбец. Тогда в процедуре модуля ПриКомпоновкеРезультата пишем что-то типа:

МВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос. МенеджерВременныхТаблиц = МВТ;
Запрос.Текст color: #3366ff;»>ВЫБРАТЬ
| ТекущиеКадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
| ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
| ТекущиеКадровыеДанныеСотрудников.ТекущаяДолжность КАК ТекущаяДолжность
| ИЗ
| РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников»;
НашаТаблица = Запрос. Выполнить() . Выгрузить() ;

// добавили колонку под наши новые данные
НашаТаблица. Колонки . Добавить( «КадровыеДанныеСтрокой», Новый ОписаниеТипов( «Строка», , Новый КвалификаторыСтроки( 100 ))) ;

// здесь обрабатываем НашаТаблица
// .
// .

// и далее передаем в Менеджер временных таблиц через новый запрос

Запрос_2 = Новый Запрос ;
Запрос_2. МенеджерВременныхТаблиц = МВТ;
Запрос_2.Текст color: #3366ff;»>ВЫБРАТЬ * ПОМЕСТИТЬ НашаТаблица ИЗ &НашаТаблица КАК НашаТаблица»;
Запрос_2. УстановитьПараметр( «НашаТаблица», НашаТаблица ) ;
Запрос_2. Выполнить() ;
ПроцессорКомпоновкиДанных . Инициализировать( МакетКомпоновкиДанных
,ВнешниеНаборыДанных,ДанныеРасшифровки. МВТ ) ;

Все!
Теперь в тексте запроса СКД доступна выборка из нашей таблицы, например добавление к данным регистра ВидыЗанятости:

ВЫБРАТЬ
ВидыЗанятостиСотрудников.Сотрудник КАК Сотрудник,
НашаТаблица.КадровыеДанныеСтрокой,
ВидыЗанятостиСотрудников.ВидЗанятости КАК ВидЗанятости
ИЗ
РегистрСведений.ВидыЗанятостиСотрудников КАК ВидыЗанятостиСотрудников
ЛЕВОЕ СОЕДИНЕНИЕ НашаТаблица КАК НашаТаблица
ПО НашаТаблица.Сотрудник = ВидыЗанятостиСотрудников.Сотрудник

Блог

Изменение стоимости «Управление IT-отделом 8», поддержки, обновлений и дополнений

Изменение стоимости «Управление IT-отделом 8», поддержки, обновлений и дополнений

Планируется повышение стоимости на программный продукт «Управление IT-отделом 8», поддержку, обновления и дополнительные сервисы конфигурации. Повышение цен произойдет 1 апреля 2024 года.

Виталий Барилко
Время на чтение: ~ 1 мин

Обновление «Управление IT-отделом 8» релиз 3.1.19.5

Обновление

Выполнен ряд работ по улучшению подсистемы «База знаний»
Добавлен поиск с выводом списка страниц, содержащих искомый текст

Виталий Барилко
Время на чтение: ~ 1 мин

Обновление «Управление IT-отделом 8» релиз 3.1.19.4

Обновление

Выполнены работы по стабилизации работы подсистемы «База знаний»
Отшлифованы шероховатости мешающие комфортной работе

Виталий Барилко
Время на чтение: ~ 8 мин

Почему тормозит 1С? Чек-лист быстрой работы

Почему тормозит 1С? Чек-лист быстрой работы

Документы стали долго проводиться, а формирование отчёта длится целую вечность? Возникает логичный вопрос почему так произошло и как исправить.
Постараемся разобраться в основных причинах и перечислим возможные способы устранения.

Изображение автора статьи

Дмитрий Матреско
Время на чтение: ~ 4 мин

Обновление «Управление IT-отделом 8» релиз 3.1.19.3

Обновление

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

Виталий Барилко
Время на чтение: ~ 2 мин

Как установить платформу 1С на Ubuntu Linux

Как установить платформу 1С на Ubuntu Linux

Статья о том как установить платформу 1С на компьютер с операционной системой Ubuntu Linux.

Изображение автора статьи

Михаил Апанасенко
Время на чтение: ~ 5 мин

Настройка PostgreSQL для 1С

Настройка PostgreSQL для 1С

Предлагаем ознакомиться с базовыми действиями первоначальной оптимизации СУБД PostgreSQL для использования с платформой 1С. Мы рассмотрим основные аспекты настройки файла postgresql.conf и поделимся своим мнением относительно вопроса оптимизации.

Изображение автора статьи

Дмитрий Матреско
Время на чтение: ~ 8 мин

Кровь, пот и тесты. Тестирование в 1С

Кровь, пот и тесты. Тестирование в 1С

В данной статье будут рассмотрены основные проблемы связанные с тестированием в 1С. Поделимся своим опытом: с какими проблемами столкнулись, а также пути их решения. Будет немного крови, пота и слез, в том числе и радости. Также, кратко рассмотрим, что такое «Vanessa», экспортные сценарии и как заставить Vanessa выучить новые фишки.

Михаил Синельников
Время на чтение: ~ 1 мин

Как вернуть значки каналов на YouTube

Как вернуть значки каналов на YouTube

Инструкция как вернуть в браузере иконки (значки или аватарки) для YouTube-каналов. Мелочь, но вызывает небольшой дискомфорт при просмотре видео.

Виталий Барилко
Время на чтение: ~ 2 мин

Удаленный доступ к Linux: RDP клиент и сервер

Удаленный доступ к Linux: RDP клиент и сервер

Новый выпуск из серии статей о создании и настройки сервера на базе Linux! На этот раз мы рассмотрим как реализовать удаленное управление машиной на базе Linux с использованием протокола RDP. Мы изучим основные преимущества и недостатки этого способа подключения, а также объясним, как правильно настроить и использовать сервис xRDP для получения удаленного доступа к Linux-системе. Если вы заинтересованы в удаленном управлении своими Linux-машинами, эта статья точно для вас!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *