Программное открытие отчета СКД с параметрами и отбором

19.08.21

Разработка - СКД

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

 

Пример для обычных форм

Пример для управляемых форм

Резюме / полезные ссылки

________________________________________________________________________

Сформируем тестовый отчёт СКД, задав его параметр "Период" и отбор "Водитель" в обычном приложении с использованием обычных форм.

Для этого нам понадобится:

  1. Получить объект отчёта;
  2. Из объекта отчёта получить КомпоновщикНастроек СКД;
  3. При помощи вспомогательной процедуры "УстановитьПараметрСКД", в настройках СКД установить необходимые параметры отчёта;
  4. При помощи вспомогательной процедуры "УстановитьОтборСКД", в настройках СКД установить необходимые отборы отчёта;
  5. При помощи метода "ПолучитьФорму", объекта отчёта, получить форму отчёта;
  6. При помощи метода "СкомпоноватьРезультат", сформировать отчёт, в качестве первого параметра данного метода нужно указать элемент табличного поля формы отчёта, в котором отображается результат;
  7. Открыть форму отчёта.

 

 

Процедура ОткрытьОтчётСОтборомНажатие(Элемент)
	
	Перем ОбъектОтчёта, КомпоновщикНастроек, Период, ФормаОтчёта; 
	
	ОбъектОтчёта = Отчеты.ТестовыйОтчёт.Создать();
	КомпоновщикНастроек = ОбъектОтчёта.КомпоновщикНастроек;
	
	Период = Новый СтандартныйПериод();
	Период.ДатаНачала = Дата(2021,08,01);
	Период.ДатаОкончания = Дата(2021,08,31,23,59,59);
	
	УстановитьПараметрСКД(КомпоновщикНастроек, "Период", Период);
	УстановитьОтборСКД(КомпоновщикНастроек, "Водитель", "Петров");

	ФормаОтчёта = ОбъектОтчёта.ПолучитьФорму("ФормаОтчета");
	ОбъектОтчёта.СкомпоноватьРезультат(ФормаОтчёта.ЭлементыФормы.Результат, ФормаОтчёта.ДанныеРасшифровки);
	ФормаОтчёта.Открыть();
	
КонецПроцедуры //  ОткрытьОтчётСОтборомНажатие

Процедура УстановитьПараметрСКД(КомпоновщикНастроек, ИмяПараметра, Значение)
	
	Перем ПараметрДанных;
	
	ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
	
	ПараметрДанных.Использование = Истина;
	ПараметрДанных.Значение = Значение;
	
КонецПроцедуры  //  УстановитьПараметрСКД

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

КонецПроцедуры //  УстановитьОтборСКД

Результат выполнения кода:

 

________________________________________________________________________

Сформируем тестовый отчёт СКД, задав его параметр "Период" и отбор "Водитель" в управляемом приложении с использованием управляемых форм.

Для этого нам понадобится:

  1. Получить форму отчёта;
  2. Из реквизита "Отчет", формы отчёта, получить КомпоновщикНастроек СКД;
  3. При помощи вспомогательной процедуры "УстановитьПользовательскийПараметрСКД", в настройках СКД установить необходимые параметры отчёта;
  4. При помощи вспомогательной процедуры "УстановитьПользовательскийОтборСКД", в настройках СКД установить необходимые отборы отчёта;
  5. Сформировать параметры формы;
  6. Открыть форму отчёта.
&НаКлиенте
Процедура КомандаОткрытьОтчётСОтбором(Команда)
	
	Перем ФормаОтчёта, КомпоновщикНастроек, Период, ПараметрыФормы;
	
	ФормаОтчёта = ПолучитьФорму("Отчет.ТестовыйОтчёт.Форма");
	КомпоновщикНастроек = ФормаОтчёта.Отчет.КомпоновщикНастроек;
	
	Период = Новый СтандартныйПериод();
	Период.ДатаНачала = Дата(2021,08,01);
	Период.ДатаОкончания = Дата(2021,08,31,23,59,59);
	
	УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, "Период", Период);
	УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, "Водитель", "Петров");
	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
	ПараметрыФормы.Вставить("КлючВарианта", "Основной");
	ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки); 
	
	ОткрытьФорму("Отчет.ТестовыйОтчёт.Форма", ПараметрыФормы, ЭтаФорма);
	
КонецПроцедуры //  КомандаОткрытьОтчётСОтбором

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

&НаКлиенте
Процедура УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, ИмяОтбора, Значение, ВидСравнения = Неопределено)
	
	Перем	ПолеКД, Элем, ЭлементОтбора, Настройки, 
			ПользовательскиеНастройки, ПользовательскийОтбор;
	
	Настройки = КомпоновщикНастроек.Настройки;
	
	ПолеКД = Новый ПолеКомпоновкиДанных(ИмяОтбора);
	
	Для Каждого Элем Из Настройки.Отбор.Элементы Цикл
		
		Если Элем.ЛевоеЗначение = ПолеКД Тогда
			ЭлементОтбора = Элем;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если ЭлементОтбора = Неопределено Тогда
		Возврат;		
	КонецЕсли;		
	
	Если ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) Тогда
		
		ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
 		ПользовательскийОтбор = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
		ПользовательскийОтбор.Использование = (Значение <> Неопределено);
		ПользовательскийОтбор.ВидСравнения = ?(ВидСравнения <> Неопределено, ВидСравнения, ВидСравненияКомпоновкиДанных.Равно); 
		ПользовательскийОтбор.ПравоеЗначение  = Значение;
	КонецЕсли;

КонецПроцедуры //  УстановитьПользовательскийОтборСКД

Результат выполнения кода:

 

 

________________________________________________________________________

Представленные реализации не претендуют на «истину в последней инстанции», безусловно данная задача может иметь и другие варианты реализации, например:

Как программно открыть типовые отчеты (Карточку счета, Анализ счета, ОСВ по счету) с отбором, не изменяя сам отчет, в конфигурации БП 3.0

1С СКД. Программный запуск отчета с открытием и настройкой (Данная ссылка была предоставлена Yashazz)

А ссылка ниже – краткое руководство по составным частям компоновщика настроек СКД и программной работе с ними:

Программная работа с настройками СКД
 

открыть отчет СКД

См. также

SALE! %

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    161924    895    399    

875

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    9191    implecs_team    6    

47

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    7283    56    obmailok    21    

79

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3214    5    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    11013    24    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    8321    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. cleaner_it 209 09.08.21 09:25 Сейчас в теме
Мне нравится ваш вариант, спасибо)
ErrorEd88; Eugen-S; +2 Ответить
2. Drivingblind 233 09.08.21 13:21 Сейчас в теме
Для новых конфигураций на БСП, где вывод отчетов (в т.ч. внешних) реализован через общую форму "ФормаОтчета", а добавление кнопок отчетов на формы объектов через подключаемые команды и программную дорисовку элементов, такой подход, к сожалению, работать не будет.
native-api; +1 Ответить
26. mongiilol 20.02.23 17:08 Сейчас в теме
(2) Добрый день

А существует ли какое-то известное решение для этого варианта? Когда Форма - "ФормаОтчета" общая
27. mongiilol 23.02.23 21:25 Сейчас в теме
(26) В общем и целом, если кому то будет интересно, пример привожу из ЕРП 2.5. Я немного изучил типовой общий модуль "КомпоновкаДанныхКлиентСервер", и на основе этого написал такую функцию, попытался максимально универсально для своих нужд.

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

Показать
user1203627; andy23; aleksey2; native-api; user1446146; Yan_Malyakov; Eugen-S; +7 Ответить
28. mongiilol 23.02.23 21:38 Сейчас в теме
(27) Дополню такой информацией

В (24) Приведен пример, который будет не актуален для сложных отборов где данные через точку, так как в структуру нельзя добавить ключ "Ссылка.СвойствоСсылки.СвойствоСсылкиСсылки"

А в моем примере абсолютно не важна глубина вложенности для отбора
29. mongiilol 24.02.23 19:50 Сейчас в теме
(27) Если вы планируете открывать форму Универсального отчета, то рекомендую сначала создать нужные варианты отчетов, и тогда метод описанный выше будет отличаться только в моменте получения формы. И уже на нужный вариант отчетов можно накладывать отборы.

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


Наложение отборов остается без изменений;
3. SiAl 76 10.08.21 11:16 Сейчас в теме
Зачем такие сложности? В пользовательских настройках варианта отчета уже можно указать все значения параметров и отборов. Для ссылочных параметров или полей нельзя корректно заполнить значения в Конфигураторе, но никто не мешает пользовательские настройки сделать в 1С:Предприятие через какую-нибудь консоль СКД, выгрузить настройки в файл и файл настроек уже загрузить в схему СКД в Конфигураторе.
4. Altez 258 10.08.21 13:57 Сейчас в теме
(3) Если речь способе программно открыть типовой отчет с произвольными отборами, хотелось бы подробностей в виде кода. Сами пользуетесь этим методом?
8. SiAl 76 11.08.21 06:32 Сейчас в теме
(4) Причем тут типовой отчет, если у Вас в коде:
Отчеты.Тестовый
?
Я бы вместо установки значений параметров коде просто загрузил бы настройки сразу в схему компоновки данных.
9. TerveRus 19.08.21 10:07 Сейчас в теме
(8) какие заранее подготовленные настройки ты бы загрузил, если на входе постоянно разные отборы, а значит параметры?
11. SiAl 76 19.08.21 10:32 Сейчас в теме
(9) В примере отборы прописаны в коде. Кто мешает установить эти отборы просто интерактивно?
5. Yashazz 4796 10.08.21 18:27 Сейчас в теме
Столько плюсов за такую тривиальщину, разжёванную в куче руководств... И это притом, что автор совершенно не упоминает параметр формы "Отбор", и ничего не говорит о конфликте с возможно сохранёнными настройками, о тех прелестях, что могут поджидать в событиях самой открываемой формы, о фиксированных настройках.
Кусок примитивного кода, принятый "на ура". Если такое на ИС пользуется спросом, то очень грустно.
native-api; +1 Ответить
6. Eugen-S 410 10.08.21 19:23 Сейчас в теме
(5)

Кусок примитивного кода, принятый "на ура". Если такое на ИС пользуется спросом, то очень грустно.


Yashazz, согласитесь, люди имеют право на своё мнение, и если они добавляют эту публикацию к себе в закладки, значит находят её полезной для себя.


И это притом, что автор совершенно не упоминает параметр формы "Отбор"


Про параметр формы "Отбор" написано на ИТС, но параметр формы "Отбор", работает только на УФ. И к тому же отбор, заданный через этот параметр попадает в фиксированные настройки и никак не отображается в пользовательских.


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


Про остальные сложности, я доходчиво написал в резюме:


Представленные реализации не претендуют на «истину в последней инстанции», безусловно данная задача может иметь и другие варианты реализации


В конфигурации на ОФ мне понадобилось из одного нетипового отчёта СКД открывать обычную форму другого нетипового отчёта СКД, чтобы в ней сразу формировался отчёт, с параметрами первого отчёта.

Найти в ИТС тот самый "примитивный кусок кода" я не смог, и мне пришлось потратить определённое время на "изобретение велосипеда".

Чтобы в следующий раз не заниматься "изобретением велосипеда" столкнувшись с подобной задачей, я и решил написать эту статью.

Основная концепция данной публикации - дать простое решение, без излишних теоретических рассуждений, которое будет работать в подавляющем большинстве случаев с чистыми СКД отчётами (под чистыми, понимаются отчёты состоящие из СКД и формы отчёта без наворотов или же вовсе без формы).
Sun_Storm; xnd; Рамзес; natal_tihom; ErrorEd88; user1252779; artbear; +7 Ответить
7. Yashazz 4796 10.08.21 21:28 Сейчас в теме
(6)
если они добавляют эту публикацию к себе в закладки, значит находят её полезной для себя
Видимо, да.
(6)
Чтобы в следующий раз не заниматься "изобретением велосипеда" столкнувшись с подобной задачей, я и решил написать эту статью.
Понимаю. К вам-то никаких претензий, как напоминалочка для "сделать по-быстрому" это очень даже пригодно.

Вероятно, я просто настолько уже на автомате делаю подобные действия, что в голову не приходит, что кому-то это без образца тяжело. Может быть...
10. TerveRus 19.08.21 10:08 Сейчас в теме
(5) приведешь пример гениального кода по решаемой задаче, или ты просто чешешь свое ЧСВ?
Сам то что-то выложил полезное, или только обплевывать критикой умеешь?
12. пользователь 19.08.21 12:34
Сообщение было скрыто модератором.
...
13. Yashazz 4796 19.08.21 17:36 Сейчас в теме
Кстати, всё это ещё и баян, т.к. было много раз. Вот, навскидку: https://infostart.ru/1c/articles/345249/
14. Eugen-S 410 19.08.21 17:44 Сейчас в теме
(13)
Материал по приведённой ссылке про формирование типовых отчётов на УФ.

Ну и где в этом "навскидку" пример для обычных форм?

Тема баяна, не раскрыта.

Публика ждёт ссылок на реальный эквивалент данной публикации, чтобы с примерами для ОФ и УФ в рамках одной публикации, и в примере для УФ, чтобы непременно в открытом отчёте можно было изменять параметры и отборы (примеры с фиксированными настройками, зачтены не будут).
ErrorEd88; +1 Ответить
15. Yashazz 4796 19.08.21 17:46 Сейчас в теме
(14) Если не использовать "Отбор", то работа с отчётами на УФ и ОФ практически однотипна. А учить вас пользоваться поиском я буду только за почасовую оплату)
16. Eugen-S 410 19.08.21 18:11 Сейчас в теме
(15)
А учить вас пользоваться поиском я буду только за почасовую оплату)

Уважаемый, а Вы часом берега не попутали?
С какой радости, я должен доказывать Ваше утверждение, что эта публикация "баян".
За язык Вас никто не тянул.
Сказали, отвечайте за сказанное. Не хотите, ну что же - это Ваше право.

Окружающие оценят по достоинству Ваш уход в отказ.
Sun_Storm; artbear; +2 Ответить
17. Yashazz 4796 19.08.21 18:20 Сейчас в теме
(16) Я уже всё сказал. ИС - свободный ресурс, и в рамках правил все вольны высказываться. Поэтому возьмите себя в руки и прекратите хамить. Окружающие по достоинству оценят как то, что я уже сказал по делу, так и ваше поведение. Не умеете адекватно реагировать - заведите свой блог и там можете посетителям затыкать рот, грубить, итд, а тут не надо.
18. Eugen-S 410 19.08.21 18:31 Сейчас в теме
(17)
Поэтому возьмите себя в руки и прекратите хамить. Окружающие по достоинству оценят как то, что я уже сказал по делу, так и ваше поведение.

Вам никто не хамит.

Отправлять искать доказательство своего утверждения других, разве не наглость?

Моя реакция вполне адекватна.

И рот Вам никто не затыкает, а как раз таки наоборот.

Предъявили, обоснуйте. Не можете обосновать, это не моя проблема.
19. Yashazz 4796 19.08.21 18:43 Сейчас в теме
(18) https://infostart.ru/1c/articles/286563/ и там комментарии докучи.
https://forum.mista.ru/topic.php?id=700949
https://codexp.ru/interesnoe/zametki-po-1s/33-otkrytie-otcheta-na-skd-s-zadanym-otborom
https://wiki.programstore.ru/1s-skd-programmnyj-zapusk-otcheta-s-otkrytiem-i-nastrojkoj/
Хватит, или ещё?))

Обосновать... Мы тут не в суде и не на стрелке. Так что - теперь жду вашего ответа по каждой приведённой ссылке. А то вдруг я не угадал, да ещё и наглость очередную выдал, а?)))
20. Eugen-S 410 19.08.21 18:57 Сейчас в теме
(19)
Итого, всего одна публикация, именно с Инфостарта, очень краткая, только для ОФ, то есть под УФ нужно будет адаптировать, и то в вызове метода "СкомпоноватьРезультат" забыли про расшифровку.

А судит пусть почтенная публика. Ставя "+" или "-".
native-api; +1 Ответить
21. Sirruf 195 08.02.22 19:49 Сейчас в теме
ПолучитьФорму() не лучшее решение, так как в этом случае будут автоматом восстанавливаться сохраненные пользовательские настройки...
22. Kitsunedie 11.07.22 14:53 Сейчас в теме
Здравствуйте. Пользовался вашей статьей для создания своего отчета. Начал кодить в 1С недавно и поэтому есть вопросы. Есть такой код
СтандартнаяОбработка = Ложь;
	СхемаСКД = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	КомпановщикМакетаКД = Новый КомпоновщикМакетаКомпоновкиДанных;
	НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
	ПарамПериод = НастройкиКомпоновки.ПараметрыДанных.Элементы.Найти("Период");
	
	Период = ПарамПериод.Значение;
	ДатаНач = Период.ДатаНачала;
	ДатаКон = Период.ДатаОкончания;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	
	"ВЫБРАТЬ
	|	ЗаказПоставщику.Ссылка КАК Ссылка
	|ИЗ
	|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	|ГДЕ
	|	ЗаказПоставщику.Дата МЕЖДУ &ДатаНач И &ДатаКон";
	
	Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
	Запрос.УстановитьПараметр("ДатаКон", ДатаКон);
	
	РезультатЗапроса = Запрос.Выполнить();
	тз = РезультатЗапроса.Выгрузить();
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	
	"ВЫБРАТЬ
	|	&Ссылка КАК ЗаказПоставщикуСсылка,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеТоваровУслуг
	|				ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеТоваровУслуг)
	|		КОНЕЦ) КАК ПриобретениеТоваровУслуг,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ЗаявкаНаРасходованиеДенежныхСредств
	|				ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ЗаявкаНаРасходованиеДенежныхСредств)
	|		КОНЕЦ) КАК ЗаявкаНаРасходованиеДенежныхСредств,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
	|				ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.СписаниеБезналичныхДенежныхСредств)
	|		КОНЕЦ) КАК СписаниеБезналичныхДенежныхСредств,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеУслугПрочихАктивов
	|				ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеУслугПрочихАктивов)
	|		КОНЕЦ) КАК ПриобретениеУслугПрочихАктивов,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеТоваровУслуг
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеТоваровУслуг).Проведен
	|	КОНЕЦ КАК ПриобретениеТоваровУслугПроведен,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеУслугПрочихАктивов
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеУслугПрочихАктивов).СуммаДокумента
	|	КОНЕЦ КАК ПриобретениеТоваровУслугСуммаДокумента,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ЗаявкаНаРасходованиеДенежныхСредств
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ЗаявкаНаРасходованиеДенежныхСредств).Проведен
	|	КОНЕЦ КАК ЗаявкаНаРасходованиеДенежныхСредствПроведен,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ЗаявкаНаРасходованиеДенежныхСредств
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ЗаявкаНаРасходованиеДенежныхСредств).СуммаДокумента
	|	КОНЕЦ КАК ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.СписаниеБезналичныхДенежныхСредств).Проведен
	|	КОНЕЦ КАК СписаниеБезналичныхДенежныхСредствПроведен,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.СписаниеБезналичныхДенежныхСредств).СуммаДокумента
	|	КОНЕЦ КАК СписаниеБезналичныхДенежныхСредствСуммаДокумента,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеУслугПрочихАктивов
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеУслугПрочихАктивов).Проведен
	|	КОНЕЦ КАК ПриобретениеУслугПрочихАктивовПроведен,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеУслугПрочихАктивов
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеУслугПрочихАктивов).СуммаДокумента
	|	КОНЕЦ КАК ПриобретениеУслугПрочихАктивовСуммаДокумента,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.РасходныйКассовыйОрдер
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.РасходныйКассовыйОрдер)
	|	КОНЕЦ КАК РасходныйКассовыйОрдер,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.РасходныйКассовыйОрдер
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.РасходныйКассовыйОрдер).Проведен
	|	КОНЕЦ КАК РасходныйКассовыйОрдерПроведен,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.РасходныйКассовыйОрдер
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.РасходныйКассовыйОрдер).СуммаДокумента
	|	КОНЕЦ КАК РасходныйКассовыйОрдерСуммаДокумента
	|ПОМЕСТИТЬ ВТЗ
	|ИЗ
	|	КритерийОтбора.СвязанныеДокументы(&Ссылка) КАК СвязанныеДокументы
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаРасходованиеДенежныхСредств КАК ЗаявкаНаРасходованиеДенежныхСредств
	|		ПО СвязанныеДокументы.Ссылка = ЗаявкаНаРасходованиеДенежныхСредств.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
	|		ПО СвязанныеДокументы.Ссылка = ПриобретениеТоваровУслуг.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриобретениеУслугПрочихАктивов КАК ПриобретениеУслугПрочихАктивов
	|		ПО СвязанныеДокументы.Ссылка = ПриобретениеУслугПрочихАктивов.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеБезналичныхДенежныхСредств КАК СписаниеБезналичныхДенежныхСредств
	|		ПО СвязанныеДокументы.Ссылка = СписаниеБезналичныхДенежныхСредств.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
	|		ПО СвязанныеДокументы.Ссылка = РасходныйКассовыйОрдер.Ссылка
	|ГДЕ
	|	(СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеТоваровУслуг
	|			ИЛИ СвязанныеДокументы.Ссылка ССЫЛКА Документ.ЗаявкаНаРасходованиеДенежныхСредств
	|			ИЛИ СвязанныеДокументы.Ссылка ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
	|			ИЛИ СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеУслугПрочихАктивов)
	|	И НЕ СвязанныеДокументы.Ссылка = ЗНАЧЕНИЕ(Документ.ЗаявкаНаРасходованиеДенежныхСредств.ПустаяСсылка)
	|	И НЕ СвязанныеДокументы.Ссылка = ЗНАЧЕНИЕ(Документ.СписаниеБезналичныхДенежныхСредств.ПустаяСсылка)
	|	И НЕ СвязанныеДокументы.Ссылка = ЗНАЧЕНИЕ(Документ.ПриобретениеУслугПрочихАктивов.ПустаяСсылка)
	|
	|СГРУППИРОВАТЬ ПО
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеТоваровУслуг
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеТоваровУслуг).Проведен
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеУслугПрочихАктивов
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеУслугПрочихАктивов).СуммаДокумента
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ЗаявкаНаРасходованиеДенежныхСредств
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ЗаявкаНаРасходованиеДенежныхСредств).Проведен
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ЗаявкаНаРасходованиеДенежныхСредств
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ЗаявкаНаРасходованиеДенежныхСредств).СуммаДокумента
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.СписаниеБезналичныхДенежныхСредств).Проведен
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.СписаниеБезналичныхДенежныхСредств).СуммаДокумента
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеУслугПрочихАктивов
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеУслугПрочихАктивов).Проведен
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.РасходныйКассовыйОрдер
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.РасходныйКассовыйОрдер)
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.РасходныйКассовыйОрдер
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.РасходныйКассовыйОрдер).Проведен
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.РасходныйКассовыйОрдер
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.РасходныйКассовыйОрдер).СуммаДокумента
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА СвязанныеДокументы.Ссылка ССЫЛКА Документ.ПриобретениеУслугПрочихАктивов
	|			ТОГДА ВЫРАЗИТЬ(СвязанныеДокументы.Ссылка КАК Документ.ПриобретениеУслугПрочихАктивов).СуммаДокумента
	|	КОНЕЦ
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ВТЗ.ЗаказПоставщикуСсылка КАК ЗаказПоставщикуСсылка,
	|	ЕСТЬNULL(ВТЗ.ПриобретениеТоваровУслуг, ЗНАЧЕНИЕ(Документ.ПриобретениеТоваровУслуг.ПустаяСсылка)) КАК ПриобретениеТоваровУслуг,
	|	ВТЗ.ЗаявкаНаРасходованиеДенежныхСредств КАК ЗаявкаНаРасходованиеДенежныхСредств,
	|	ВТЗ.СписаниеБезналичныхДенежныхСредств КАК СписаниеБезналичныхДенежныхСредств,
	|	ВТЗ.ПриобретениеУслугПрочихАктивов КАК ПриобретениеУслугПрочихАктивов,
	|	ВТЗ.ПриобретениеТоваровУслугПроведен КАК ПриобретениеТоваровУслугПроведен,
	|	ВТЗ.ПриобретениеТоваровУслугСуммаДокумента КАК ПриобретениеТоваровУслугСуммаДокумента,
	|	ВТЗ.ЗаявкаНаРасходованиеДенежныхСредствПроведен КАК ЗаявкаНаРасходованиеДенежныхСредствПроведен,
	|	ВТЗ.ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента КАК ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента,
	|	ВТЗ.СписаниеБезналичныхДенежныхСредствПроведен КАК СписаниеБезналичныхДенежныхСредствПроведен,
	|	ВТЗ.СписаниеБезналичныхДенежныхСредствСуммаДокумента КАК СписаниеБезналичныхДенежныхСредствСуммаДокумента,
	|	ВТЗ.ПриобретениеУслугПрочихАктивовПроведен КАК ПриобретениеУслугПрочихАктивовПроведен,
	|	ВТЗ.ПриобретениеУслугПрочихАктивовСуммаДокумента КАК ПриобретениеУслугПрочихАктивовСуммаДокумента,
	|	ВТЗ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер,
	|	ВТЗ.РасходныйКассовыйОрдерПроведен КАК РасходныйКассовыйОрдерПроведен,
	|	ВТЗ.РасходныйКассовыйОрдерСуммаДокумента КАК РасходныйКассовыйОрдерСуммаДокумента,
	|	ЗаказПоставщику.Партнер КАК ЗаказПоставщикуПартнер,
	|	ЗаказПоставщику.Статус КАК ЗаказПоставщикуСтатус,
	|	ЗаказПоставщику.Проведен КАК ЗаказПоставщикуПроведен,
	|	ЗаказПоставщику.СуммаДокумента КАК ЗаказПоставщикуСуммаДокумента,
	|	ЗаказПоставщику.Комментарий КАК ЗаказПоставщикуКомментарий
	|ИЗ
	|	ВТЗ КАК ВТЗ
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК ЗаказПоставщику
	|		ПО ВТЗ.ЗаказПоставщикуСсылка = ЗаказПоставщику.Ссылка";
	
	ИтогТЗ = Новый ТаблицаЗначений;
	ИтогТЗ.Колонки.Добавить("ЗаказПоставщикуСсылка");
	ИтогТЗ.Колонки.Добавить("ПриобретениеТоваровУслуг");
	ИтогТЗ.Колонки.Добавить("ЗаявкаНаРасходованиеДенежныхСредств");
	ИтогТЗ.Колонки.Добавить("СписаниеБезналичныхДенежныхСредств");
	ИтогТЗ.Колонки.Добавить("ПриобретениеУслугПрочихАктивов");
	ИтогТЗ.Колонки.Добавить("ПриобретениеТоваровУслугПроведен");
	ИтогТЗ.Колонки.Добавить("ПриобретениеТоваровУслугСуммаДокумента");
	ИтогТЗ.Колонки.Добавить("ЗаявкаНаРасходованиеДенежныхСредствПроведен");
	ИтогТЗ.Колонки.Добавить("ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента");
	ИтогТЗ.Колонки.Добавить("СписаниеБезналичныхДенежныхСредствПроведен");
	ИтогТЗ.Колонки.Добавить("СписаниеБезналичныхДенежныхСредствСуммаДокумента");
	ИтогТЗ.Колонки.Добавить("РасходныйКассовыйОрдер");
	ИтогТЗ.Колонки.Добавить("РасходныйКассовыйОрдерПроведен");
	ИтогТЗ.Колонки.Добавить("РасходныйКассовыйОрдерСуммаДокумента");
	ИтогТЗ.Колонки.Добавить("ЗаказПоставщикуПартнер");
	ИтогТЗ.Колонки.Добавить("ЗаказПоставщикуСтатус");
	ИтогТЗ.Колонки.Добавить("ЗаказПоставщикуПроведен");
	ИтогТЗ.Колонки.Добавить("ЗаказПоставщикуСуммаДокумента");
	ИтогТЗ.Колонки.Добавить("ЗаказПоставщикуКомментарий");
	ИтогТЗ.Колонки.Добавить("ПриобретениеУслугПрочихАктивовПроведен");
	ИтогТЗ.Колонки.Добавить("ПриобретениеУслугПрочихАктивовСуммаДокумента");
	
	Для каждого Строка из тз Цикл
		
		Запрос.УстановитьПараметр("Ссылка", Строка.Ссылка);
		ТЗДок = Запрос.Выполнить().Выгрузить();
		
		Для каждого СтрокаТЗДок Из ТЗдок Цикл
			СтрокаИтогТЗ = ИтогТЗ.Добавить();
			ЗаполнитьЗначенияСвойств(СтрокаИтогТЗ, СтрокаТЗДОК);
		КонецЦикла;
		
	КонецЦикла;
	
	Итог = Новый ТаблицаЗначений;
	Итог.Колонки.Добавить("ЗаказПоставщикуСсылка");
	Итог.Колонки.Добавить("ПриобретениеТоваровУслуг");
	Итог.Колонки.Добавить("ЗаявкаНаРасходованиеДенежныхСредств");
	Итог.Колонки.Добавить("СписаниеБезналичныхДенежныхСредств");
	Итог.Колонки.Добавить("ПриобретениеУслугПрочихАктивов");
	Итог.Колонки.Добавить("ПриобретениеТоваровУслугПроведен");
	Итог.Колонки.Добавить("ПриобретениеТоваровУслугСуммаДокумента");
	Итог.Колонки.Добавить("ЗаявкаНаРасходованиеДенежныхСредствПроведен");
	Итог.Колонки.Добавить("ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента");
	Итог.Колонки.Добавить("СписаниеБезналичныхДенежныхСредствПроведен");
	Итог.Колонки.Добавить("СписаниеБезналичныхДенежныхСредствСуммаДокумента");
	Итог.Колонки.Добавить("РасходныйКассовыйОрдер");
	Итог.Колонки.Добавить("РасходныйКассовыйОрдерПроведен");
	Итог.Колонки.Добавить("РасходныйКассовыйОрдерСуммаДокумента");
	Итог.Колонки.Добавить("ЗаказПоставщикуПартнер");
	Итог.Колонки.Добавить("ЗаказПоставщикуСтатус");
	Итог.Колонки.Добавить("ЗаказПоставщикуПроведен");
	Итог.Колонки.Добавить("ЗаказПоставщикуСуммаДокумента");
	Итог.Колонки.Добавить("ЗаказПоставщикуКомментарий");
	Итог.Колонки.Добавить("ПриобретениеУслугПрочихАктивовПроведен");
	Итог.Колонки.Добавить("ПриобретениеУслугПрочихАктивовСуммаДокумента");
	
	СчетчикИтогТЗ = 0;
	СчетчикИтог = Неопределено;
	
	Для каждого Строка из ИтогТЗ Цикл
		СчетчикИтогТЗ = СчетчикИтогТЗ + 1;
		Если СчетчикИтог = Неопределено Тогда
			СчетчикИтогТЗ = СчетчикИтогТЗ;
			НоваяСтрока = Итог.Добавить();
			СчетчикИтог = 0;
			НоваяСтрока.ЗаказПоставщикуСсылка = Строка.ЗаказПоставщикуСсылка;
			НоваяСтрока.ЗаказПоставщикуПартнер = Строка.ЗаказПоставщикуПартнер;
			НоваяСтрока.ЗаказПоставщикуСтатус = Строка.ЗаказПоставщикуСтатус;
		    НоваяСтрока.ЗаказПоставщикуПроведен = Строка.ЗаказПоставщикуПроведен;
		    НоваяСтрока.ЗаказПоставщикуСуммаДокумента = Строка.ЗаказПоставщикуСуммаДокумента;
			НоваяСтрока.ЗаказПоставщикуКомментарий = Строка.ЗаказПоставщикуКомментарий;
			Если НЕ Строка.ПриобретениеТоваровУслуг = Документы.ПриобретениеТоваровУслуг.ПустаяСсылка() Тогда
				НоваяСтрока.ПриобретениеТоваровУслуг = Строка.ПриобретениеТоваровУслуг;
				НоваяСтрока.ПриобретениеТоваровУслугПроведен = Строка.ПриобретениеТоваровУслугПроведен;
				НоваяСтрока.ПриобретениеТоваровУслугСуммаДокумента = Строка.ПриобретениеТоваровУслугСуммаДокумента;
			ИначеЕсли НЕ Строка.ЗаявкаНаРасходованиеДенежныхСредств = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПустаяСсылка() Тогда
				НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредств = Строка.ЗаявкаНаРасходованиеДенежныхСредств;
				НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредствПроведен = Строка.ЗаявкаНаРасходованиеДенежныхСредствПроведен;
				НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента = Строка.ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента;
			ИначеЕсли НЕ Строка.СписаниеБезналичныхДенежныхСредств =  Документы.СписаниеБезналичныхДенежныхСредств.ПустаяСсылка() Тогда
				НоваяСтрока.СписаниеБезналичныхДенежныхСредств = Строка.СписаниеБезналичныхДенежныхСредств;
				НоваяСтрока.СписаниеБезналичныхДенежныхСредствПроведен = Строка.СписаниеБезналичныхДенежныхСредствПроведен;
				НоваяСтрока.СписаниеБезналичныхДенежныхСредствСуммаДокумента = Строка.СписаниеБезналичныхДенежныхСредствСуммаДокумента;
			ИначеЕсли НЕ Строка.ПриобретениеУслугПрочихАктивов = Документы.ПриобретениеУслугПрочихАктивов.ПустаяСсылка() Тогда
				НоваяСтрока.ПриобретениеУслугПрочихАктивов = Строка.ПриобретениеУслугПрочихАктивов;
				НоваяСтрока.ПриобретениеУслугПрочихАктивовПроведен = Строка.ПриобретениеУслугПрочихАктивовПроведен;
				НоваяСтрока.ПриобретениеУслугПрочихАктивовСуммаДокумента = Строка.ПриобретениеУслугПрочихАктивовСуммаДокумента;
			ИначеЕсли НЕ Строка.РасходныйКассовыйОрдер = Документы.РасходныйКассовыйОрдер.ПустаяСсылка() Тогда
				НоваяСтрока.РасходныйКассовыйОрдер = Строка.РасходныйКассовыйОрдер;
				НоваяСтрока.РасходныйКассовыйОрдерПроведен = Строка.РасходныйКассовыйОрдерПроведен;
				НоваяСтрока.РасходныйКассовыйОрдерСуммаДокумента = Строка.РасходныйКассовыйОрдерСуммаДокумента;
			КонецЕсли;
		Иначе
			Если Итог[СчетчикИтог].ЗаказПоставщикуСсылка = ИтогТЗ[СчетчикИтогТЗ-1].ЗаказПоставщикуСсылка Тогда
				Если НЕ Строка.ПриобретениеТоваровУслуг = Документы.ПриобретениеТоваровУслуг.ПустаяСсылка() Тогда
					НоваяСтрока.ПриобретениеТоваровУслуг = Строка.ПриобретениеТоваровУслуг;
					НоваяСтрока.ПриобретениеТоваровУслугПроведен = Строка.ПриобретениеТоваровУслугПроведен;
					НоваяСтрока.ПриобретениеТоваровУслугСуммаДокумента = Строка.ПриобретениеТоваровУслугСуммаДокумента;
				ИначеЕсли НЕ Строка.ЗаявкаНаРасходованиеДенежныхСредств = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПустаяСсылка() Тогда
					НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредств = Строка.ЗаявкаНаРасходованиеДенежныхСредств;
					НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредствПроведен = Строка.ЗаявкаНаРасходованиеДенежныхСредствПроведен;
					НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента = Строка.ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента;
				ИначеЕсли НЕ Строка.СписаниеБезналичныхДенежныхСредств =  Документы.СписаниеБезналичныхДенежныхСредств.ПустаяСсылка() Тогда
					НоваяСтрока.СписаниеБезналичныхДенежныхСредств = Строка.СписаниеБезналичныхДенежныхСредств;
					НоваяСтрока.СписаниеБезналичныхДенежныхСредствПроведен = Строка.СписаниеБезналичныхДенежныхСредствПроведен;
					НоваяСтрока.СписаниеБезналичныхДенежныхСредствСуммаДокумента = Строка.СписаниеБезналичныхДенежныхСредствСуммаДокумента;
				ИначеЕсли НЕ Строка.ПриобретениеУслугПрочихАктивов = Документы.ПриобретениеУслугПрочихАктивов.ПустаяСсылка() Тогда
					НоваяСтрока.ПриобретениеУслугПрочихАктивов = Строка.ПриобретениеУслугПрочихАктивов;
					НоваяСтрока.ПриобретениеУслугПрочихАктивовПроведен = Строка.ПриобретениеУслугПрочихАктивовПроведен;
					НоваяСтрока.ПриобретениеУслугПрочихАктивовСуммаДокумента = Строка.ПриобретениеУслугПрочихАктивовСуммаДокумента;
				ИначеЕсли НЕ Строка.РасходныйКассовыйОрдер = Документы.РасходныйКассовыйОрдер.ПустаяСсылка() Тогда
					НоваяСтрока.РасходныйКассовыйОрдер = Строка.РасходныйКассовыйОрдер;
					НоваяСтрока.РасходныйКассовыйОрдерПроведен = Строка.РасходныйКассовыйОрдерПроведен;
					НоваяСтрока.РасходныйКассовыйОрдерСуммаДокумента = Строка.РасходныйКассовыйОрдерСуммаДокумента;
				КонецЕсли;
			Иначе
			  	НоваяСтрока = Итог.Добавить();
				СчетчикИтог = СчетчикИтог + 1;
				НоваяСтрока.ЗаказПоставщикуСсылка = Строка.ЗаказПоставщикуСсылка;
				НоваяСтрока.ЗаказПоставщикуПартнер = Строка.ЗаказПоставщикуПартнер;
				НоваяСтрока.ЗаказПоставщикуСтатус = Строка.ЗаказПоставщикуСтатус;
			    НоваяСтрока.ЗаказПоставщикуПроведен = Строка.ЗаказПоставщикуПроведен;
			    НоваяСтрока.ЗаказПоставщикуСуммаДокумента = Строка.ЗаказПоставщикуСуммаДокумента;
				НоваяСтрока.ЗаказПоставщикуКомментарий = Строка.ЗаказПоставщикуКомментарий;
				Если НЕ Строка.ПриобретениеТоваровУслуг = Документы.ПриобретениеТоваровУслуг.ПустаяСсылка() Тогда
					НоваяСтрока.ПриобретениеТоваровУслуг = Строка.ПриобретениеТоваровУслуг;
					НоваяСтрока.ПриобретениеТоваровУслугПроведен = Строка.ПриобретениеТоваровУслугПроведен;
					НоваяСтрока.ПриобретениеТоваровУслугСуммаДокумента = Строка.ПриобретениеТоваровУслугСуммаДокумента;
				ИначеЕсли НЕ Строка.ЗаявкаНаРасходованиеДенежныхСредств = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПустаяСсылка() Тогда
					НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредств = Строка.ЗаявкаНаРасходованиеДенежныхСредств;
					НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредствПроведен = Строка.ЗаявкаНаРасходованиеДенежныхСредствПроведен;
					НоваяСтрока.ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента = Строка.ЗаявкаНаРасходованиеДенежныхСредствСуммаДокумента;
				ИначеЕсли НЕ Строка.СписаниеБезналичныхДенежныхСредств =  Документы.СписаниеБезналичныхДенежныхСредств.ПустаяСсылка() Тогда
					НоваяСтрока.СписаниеБезналичныхДенежныхСредств = Строка.СписаниеБезналичныхДенежныхСредств;
					НоваяСтрока.СписаниеБезналичныхДенежныхСредствПроведен = Строка.СписаниеБезналичныхДенежныхСредствПроведен;
					НоваяСтрока.СписаниеБезналичныхДенежныхСредствСуммаДокумента = Строка.СписаниеБезналичныхДенежныхСредствСуммаДокумента;
				ИначеЕсли НЕ Строка.ПриобретениеУслугПрочихАктивов = Документы.ПриобретениеУслугПрочихАктивов.ПустаяСсылка() Тогда
					НоваяСтрока.ПриобретениеУслугПрочихАктивов = Строка.ПриобретениеУслугПрочихАктивов;
					НоваяСтрока.ПриобретениеУслугПрочихАктивовПроведен = Строка.ПриобретениеУслугПрочихАктивовПроведен;
					НоваяСтрока.ПриобретениеУслугПрочихАктивовСуммаДокумента = Строка.ПриобретениеУслугПрочихАктивовСуммаДокумента;
				ИначеЕсли НЕ Строка.РасходныйКассовыйОрдер = Документы.РасходныйКассовыйОрдер.ПустаяСсылка() Тогда
					НоваяСтрока.РасходныйКассовыйОрдер = Строка.РасходныйКассовыйОрдер;
					НоваяСтрока.РасходныйКассовыйОрдерПроведен = Строка.РасходныйКассовыйОрдерПроведен;
					НоваяСтрока.РасходныйКассовыйОрдерСуммаДокумента = Строка.РасходныйКассовыйОрдерСуммаДокумента;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;	
	
	СоответствиеТипов = ПолучитьСоответствиеТипов();

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


Есть результат его выполнения на скриншоте.
И собственно вопрос. Как при нажатии на Элемент колонки Заказ поставщику сделать переход по ссылке на документ.
В стандартных отчетах без программного скармливания таблицы значений в СКД все работает, а тут нет, видимо нужно что-то дописать. А как сформулировать правильно вопрос или где прочитать найти не могу. Был бы признателен какому-нибудь тонкому намеку в сторону решения.
Прикрепленные файлы:
23. nikonorov_ag 18 17.08.22 12:19 Сейчас в теме
Спасибо! Все просто и понятно. В УТ11 заработало сразу. Заменил имя отчета, передаваемый период и передаваемый отбор на свои. В самом открываемом отчете на СКД не написал ни строчки кода!
24. kaaasteeen 01.11.22 13:49 Сейчас в теме
Есть более простой и лаконичный способ открытия СКД отчета с заполненными параметрами(отборами).

УсловияОтбора = Новый Структура("<ИмяПараметра>", <ЗначениеПараметра>); // Тут может быть как параметр, так и отбор.
ПараметрыФормы = Новый Структура("Отбор, СформироватьПриОткрытии", УсловияОтбора, Истина);
ОткрытьФорму("Отчет.<ИмяВашегоОтчета>.ФормаОбъекта", ПараметрыФормы);


P.S.
Взято с ИТС.
begemot; Aleasoft; wild83; SergeySol-82; smit1c; psvXXL; TSSV; Eugen-S; +8 Ответить
25. TSSV 1151 21.12.22 14:26 Сейчас в теме
(24) Приведенный в статье способ для управляемых форм у меня в УТ 11.5 не сработал, в отличие от Вашего, спасибо.
kaaasteeen; Eugen-S; +2 Ответить
30. ХамитоваРайса 18.04.23 13:55 Сейчас в теме
(24)Не передается отбор в новый отчет. Параметр СформироватьПриОткрытии передается, а отбор как будто не передаю даже. Пыталась таким способом открыть "Карточку счета" в БУ с фильтром по номенклатуре и счету учета.
31. AfterEarth 16.05.23 13:46 Сейчас в теме
(30) Райса - сам долго мучался так! Нужно сделать:
                ОтчетДвижениеСерийТоваров = Отчеты["ДвиженияСерийТоваров"].Создать(); 
		Форма = ОтчетДвижениеСерийТоваров.ПолучитьФорму("Отчет.ДвиженияСерийТоваров.Форма");
		
		Форма.УстановитьТекущийВариант("ДвиженияСерииТовара"); 

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

Показать


Где:

&НаСервереБезКонтекста
Функция ПолучитьНастройки(КомпоновщикНастроек, ЗначенияРасшифровки)
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	
	ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
	
	////Настройки = СКДДвиженияСерииТовара.ВариантыНастроек["ДвиженияСерииТовара"].Настройки;
	
	//////Настройки = ОтчетДвижениеСерийТоваров.СхемаКомпоновкиДанных.ВариантыНастроек.ДвиженияСерииТовара.Настройки;
	
	Для Каждого ЭлементОтбора Из Настройки.Отбор.Элементы Цикл
		ЭлементОтбора.Использование = Ложь;
	КонецЦикла;
	Для Каждого ЭлементПоляРасшифровки Из ЗначенияРасшифровки Цикл
		Если ЭлементПоляРасшифровки.Ключ = "Серия" Тогда
			Для Каждого ЭлементОтбора Из Настройки.Отбор.Элементы Цикл
				Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Серия") Тогда
					ЭлементОтбора.ПравоеЗначение = ЭлементПоляРасшифровки.Значение;
					ЭлементОтбора.Использование = Истина;  
					
					Если ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) Тогда
				 		ПользовательскийОтбор = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
						ПользовательскийОтбор.Использование = Истина;
						ПользовательскийОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; 
						ПользовательскийОтбор.ПравоеЗначение  = ЭлементПоляРасшифровки.Значение;                      
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
		ИначеЕсли ЭлементПоляРасшифровки.Ключ = "Номенклатура" Тогда
			Для Каждого ЭлементОтбора Из Настройки.Отбор.Элементы Цикл
				Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура") Тогда
					ЭлементОтбора.ПравоеЗначение = ЭлементПоляРасшифровки.Значение;
					ЭлементОтбора.Использование = Истина;
					
					Если ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) Тогда
				 		ПользовательскийОтбор = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
						ПользовательскийОтбор.Использование = Истина;
						ПользовательскийОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; 
						ПользовательскийОтбор.ПравоеЗначение  = ЭлементПоляРасшифровки.Значение;                      
					КонецЕсли;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;     
	КонецЦикла;
	
	Для Каждого ЭлементОтбора Из Настройки.Отбор.Элементы Цикл
		Если ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладскаяОперация") Тогда
			ЭлементОтбора.ПравоеЗначение = Перечисления.СкладскиеОперации.ПриемкаОтПоставщика;
			ЭлементОтбора.Использование = Истина;
					
			Если ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) Тогда
		 		ПользовательскийОтбор = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
				ПользовательскийОтбор.Использование = Истина;
				ПользовательскийОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; 
				ПользовательскийОтбор.ПравоеЗначение  = Перечисления.СкладскиеОперации.ПриемкаОтПоставщика;                      
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
	Возврат Настройки;
КонецФункции
Показать
32. ХамитоваРайса 16.05.23 14:16 Сейчас в теме
AfterEarth, спасибо большое за способ. Я уже, вроде, как сделала. Не знаю, так или по-другому. Но, думаю, что примерно так же. Но на всякий случай сохраню себе эту статью и комментарий. Если кому надо, то могу прислать внешний отчет, который сделала, и там открывается "Карточка счета" и с нужным отбором, и с нужными параметрами.
(31)
33. AfterEarth 26.05.23 12:55 Сейчас в теме
(32) Райса, буду очень признателен!
34. ХамитоваРайса 26.05.23 13:42 Сейчас в теме
(33)Ivan Alexeev, никогда не отвечала в личку. Напишите, как отправить Вам внешний отчет с расшифровкой. Хотела здесь прикрепить файл, но чёт не прикрепляется.
Прикрепленные файлы:
ОборачиваемостьЗапасов_с_количествомХРР.erf
35. ХамитоваРайса 26.05.23 13:43 Сейчас в теме
Ан нет, прикрепилось) Работает железно.
36. AfterEarth 02.06.23 18:09 Сейчас в теме
(35) Райса - огромное Вам спасибо!
37. vika64 75 15.08.23 13:08 Сейчас в теме
38. DebilniySaytInfostat 20.08.23 20:44 Сейчас в теме
Максимально не понятная статья. Автор привел какой то кусок кода не понятно откуда вызывающийся, нет картинки схемы скд вызывающегося отчета. 2 часа пытался разобраться и понять о чем пишет автор. Стоял кейс расшифровки ресурса отчета регистратором(пользователь тыкает на ресурс и открывается отчет со всеми регистраторами которые образовали этот ресурс)В итоге время в пустую потрачено. Залайкали по всей видимости люди с большим опытом.
Если новичек смело пропускай статью. Лучше проходить курсы а не читать делитантов у которых нет преподовательского опыта
39. Eugen-S 410 20.08.23 20:54 Сейчас в теме
(38)
Уважаемый, картинка и схема СКД - не нужны, так как описана общая концепция, пригодная для любого СКД отчёта.
Важно лишь знать какие у отчёта есть параметры и отборы (они индивидуальны для каждого отчёта).

P.S. Слово "новичок" - пишется через букву "О", так что, прежде чем заниматься 1С, следует подтянуть русский язык ;)
DebilniySaytInfostat; +1 Ответить
40. DebilniySaytInfostat 21.08.23 07:48 Сейчас в теме
Важно лишь знать какие у отчёта есть параметры и отборы (они индивидуальны для каждого отчёта).
(39)

Не правда. Я так и не смог понять, почему у меня пользовательские значения параметров всегда идут в приоритете тех, которых я по вашей статье задал кодом. Не много подробнее:
Есть отчет А. В нем я тыкаю на ресурсное поле и должен открываться отчет Б, который показывает все регистраторы которые образовали ресурсное поле отчета А. В отчете А есть параметр ДатаНачала и ДатаОкончания. Логично, что данные параметры передаются в отчет Б. С помощью вашей статьи и пытался организовать данную "передачу". В итоге в Отчет Б параметры из отчета А не передаются. Почему? не понял. В отчете Б всегда сохраняются значения ДатаНачала и ДатаОкончания лишь только те которые настроил пользователь. Да вы в вполне резонно скажете "Нуб иди учи СКД". И будите правы. Мой фи в комментарии выше был написан, после того как я понял что такие вещи как СКД лучше изучать обьемно по книгам или крусам а не по статейкам на итс
41. Eugen-S 410 21.08.23 08:59 Сейчас в теме
(40) Отчёт Б типовой или нет?
Если отчёт "Б" нетиповой, я бы даже не заморачивался, сделал бы там два реквизита объекта, которые бы заполнял в событии "ПриСозданииНаСервере" из параметров формы, а далее перед формированием отчёта проверял, если эти реквизиты заполнены, то подставлял бы их в параметры отчёта в процедуре "ПриКомпоновкеРезультата" модуля объекта отчёта "Б".
DebilniySaytInfostat; +1 Ответить
42. DebilniySaytInfostat 21.08.23 09:48 Сейчас в теме
(41)
не типовой, сам сделал. Хотел передать значения параметров именно вашим способом написанным в статье. Почему они не передаются в форму отчета Б так и осталось для меня загадкой. Думаю какую-то галочку в схеме компоновке не нажал или наоборот какую-то лишнюю, потому, что отчет Б открывается со значениями параметров которые пользователь задал в прошлый раз, а не с переданными из отчета А.
Вот код, который находится в событии РезультатОбработкаРасшифровки отчета А
Функция ПолучитьДанныеОтбора(Расшифровка) 
ПараметрыОтчета = Новый Структура("Номенклатура, Контрагент, ДатаНачала, ДатаОкончания",Неопределено, Неопределено, Неопределено, Неопределено);	
ДанныеОтчета = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
ПараметрыОтчета.ДатаНачала = Дата(2000,01,01);
ПараметрыОтчета.ДатаОкончания = ДанныеОтчета.Настройки.ПараметрыДанных.Элементы[0].Значение;  
ПолеРасшифровки = ДанныеОтчета.Элементы.Получить(Расшифровка).ПолучитьПоля()[0];  
шаг = -1;
Счетчик = Расшифровка + Шаг;
Пока Счетчик >= 0 цикл   
	ПолеРасшифровки = ДанныеОтчета.Элементы.Получить(Счетчик).ПолучитьПоля()[0];
	Если ТипЗнч(ПолеРасшифровки.Значение) = Тип("СправочникСсылка.Номенклатура") И  ПараметрыОтчета.Номенклатура = Неопределено тогда 
	 ПараметрыОтчета.Номенклатура = ПолеРасшифровки.Значение;
	ИначеЕсли  ТипЗнч(ПолеРасшифровки.Значение) = Тип("СправочникСсылка.Контрагенты") И  ПараметрыОтчета.Контрагент = Неопределено тогда
	 ПараметрыОтчета.Контрагент = ПолеРасшифровки.Значение;
    КонецЕсли;
	Если НЕ ПараметрыОтчета.Номенклатура = Неопределено И НЕ ПараметрыОтчета.Контрагент = Неопределено Тогда 
	 Возврат ПараметрыОтчета;
	КонецЕсли;
	Счетчик =  Счетчик+Шаг;
КонецЦикла;	
КонецФункции

&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)  
СтандартнаяОбработка=ЛОЖЬ;	
ДанныеОтбора=ПолучитьДанныеОтбора(Расшифровка);  

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

НайденныйПарНачало = ПараметрыДанных.Найти("ДатаНачала");

	Если ЗначениеЗаполнено(НайденныйПарНачало.ИдентификаторПользовательскойНастройки) Тогда
		
		ПользовательскиеНастройки = КомпоновщикНастроекНовый.ПользовательскиеНастройки;
		ПользовательскийПараметр = ПользовательскиеНастройки.Элементы.Найти(НайденныйПарНачало.ИдентификаторПользовательскойНастройки);
		ПользовательскийПараметр.Использование = Истина;
		ПользовательскийПараметр.Значение = Дата(2000,01,01);
	КонецЕсли;

 

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

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

//Отбор = новый Структура("Контрагент, Номенклатура, ДатаНачала, ДатаОкончания",ДанныеОтбора.Контрагент, ДанныеОтбора.Номенклатура, ДанныеОтбора.ДатаНачала, ДанныеОтбора.ДатаОкончания);
//		ПараметрыФормы = Новый Структура("СформироватьПриОткрытии, Отбор", Истина, Отбор) ;
//		ОткрытьФорму("Отчет.ТоварыВАрендеТест.Форма",ПараметрыФормы,,Истина);
КонецПроцедуры
Показать
43. Eugen-S 410 21.08.23 10:26 Сейчас в теме
(42)
Вот эта конструкция меня поражает:
//УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек,"ДатаНачала",ДанныеОтбора.ДатаНачала,"ДатаОкночания",ДанныеОтбора.ДатаОкончания);


Вам надо было просто вызвать процедуру УстановитьПользовательскийПараметрСКД дважды, например вот так:

УстановитьПользовательскийПараметрСКД(КомпоновщикНастроекНовый, "ДатаНачала", ДатаНачала);
УстановитьПользовательскийПараметрСКД(КомпоновщикНастроекНовый, "ДатаОкночания", ДатаОкночания);


(В переменных ДатаНачала и ДатаОкончания, соответственно должны быть нужные Вам "ДатаНачала" и "ДатаОкончания")
DebilniySaytInfostat; +1 Ответить
54. DebilniySaytInfostat 21.08.23 12:00 Сейчас в теме
(40)Отвечу сам себе на данный комментарий. Я был не прав. Статья мне помогла. Удалось решить поставленную задачу с помощью данной статьи. Написал я фигню в первом комментарии. Большое спасибо автору .
44. DebilniySaytInfostat 21.08.23 10:51 Сейчас в теме
А смысл? результат тот же самый. В отчете Б значения параметров из отчета А не передаются!
Код переделал согласно вашим инструкциям
&НаСервере
Функция ПолучитьДанныеОтбора(Расшифровка) 
ПараметрыОтчета = Новый Структура("Номенклатура, Контрагент, ДатаНачала, ДатаОкончания",Неопределено, Неопределено, Неопределено, Неопределено);	
ДанныеОтчета = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
ПараметрыОтчета.ДатаНачала = Дата(2000,01,01);
ПараметрыОтчета.ДатаОкончания = ДанныеОтчета.Настройки.ПараметрыДанных.Элементы[0].Значение;  
ПолеРасшифровки = ДанныеОтчета.Элементы.Получить(Расшифровка).ПолучитьПоля()[0];  
шаг = -1;
Счетчик = Расшифровка + Шаг;
Пока Счетчик >= 0 цикл   
	ПолеРасшифровки = ДанныеОтчета.Элементы.Получить(Счетчик).ПолучитьПоля()[0];
	Если ТипЗнч(ПолеРасшифровки.Значение) = Тип("СправочникСсылка.Номенклатура") И  ПараметрыОтчета.Номенклатура = Неопределено тогда 
	 ПараметрыОтчета.Номенклатура = ПолеРасшифровки.Значение;
	ИначеЕсли  ТипЗнч(ПолеРасшифровки.Значение) = Тип("СправочникСсылка.Контрагенты") И  ПараметрыОтчета.Контрагент = Неопределено тогда
	 ПараметрыОтчета.Контрагент = ПолеРасшифровки.Значение;
    КонецЕсли;
	Если НЕ ПараметрыОтчета.Номенклатура = Неопределено И НЕ ПараметрыОтчета.Контрагент = Неопределено Тогда 
	 Возврат ПараметрыОтчета;
	КонецЕсли;
	Счетчик =  Счетчик+Шаг;
КонецЦикла;	
КонецФункции
//Процедура УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, ДатаНачала, ДатаНачалаЗначение,ДатаОкончания, ДатаОкончанияЗначение)     
//Настройки = КомпоновщикНастроек.Настройки;  
//ПараметрыДанных = Настройки.ПараметрыДанных.Элементы;
//Для Каждого Параметр из ПараметрыДанных цикл

// Сообщить(Параметр.Значение); 
//КонецЦикла;
&НаКлиенте
Процедура УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, ИмяПараметра, Значение)
	
	Перем ПараметрДанных, Настройки, ПользовательскиеНастройки, ПользовательскийПараметр;
	
	Настройки = КомпоновщикНастроек.Настройки;
	
	ПараметрДанных = Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
	
	Если ЗначениеЗаполнено(ПараметрДанных.ИдентификаторПользовательскойНастройки) Тогда
		
		ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
		ПользовательскийПараметр = ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
		ПользовательскийПараметр.Использование = Истина;
		ПользовательскийПараметр.Значение = Значение;
	КонецЕсли;
	
КонецПроцедуры
//КонецПроцедуры	
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)  
СтандартнаяОбработка=ЛОЖЬ;	
ДанныеОтбора=ПолучитьДанныеОтбора(Расшифровка);  

ФормаОтчета=ПолучитьФорму("Отчет.ТоварыВАрендеТест.Форма.ФормаОтчета");
КомпоновщикНастроекНовый=ФормаОтчета.Отчет.КомпоновщикНастроек; 
      

УстановитьПользовательскийПараметрСКД(КомпоновщикНастроекНовый, "ДатаНачала", ДанныеОтбора.ДатаНачала);
УстановитьПользовательскийПараметрСКД(КомпоновщикНастроекНовый, "ДатаОкончания", ДанныеОтбора.ДатаОкончания);



	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);  
	ПараметрыФормы.Вставить("КлючВарианта", "Основной");
	ПараметрыФормы.Вставить("КомпоновщикНастроек", КомпоновщикНастроекНовый);
	ОткрытьФорму("Отчет.ТоварыВАрендеТест.Форма.ФормаОтчета", ПараметрыФормы, , Истина);
 Сообщить("--");
КонецПроцедуры
Показать
45. Eugen-S 410 21.08.23 10:56 Сейчас в теме
(44) при исполнении кода вот это условие отрабатывает?
 
Если ЗначениеЗаполнено(ПараметрДанных.ИдентификаторПользовательскойНастройки) Тогда
        
        ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
        ПользовательскийПараметр = ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
        ПользовательскийПараметр.Использование = Истина;
        ПользовательскийПараметр.Значение = Значение;
    КонецЕсли;


Пользовательскому параметру присваивается значение?
DebilniySaytInfostat; +1 Ответить
46. DebilniySaytInfostat 21.08.23 11:09 Сейчас в теме
(45)
Да, как при ДатаНачало так и при ДатаОкончания
Прикрепленные файлы:
47. Eugen-S 410 21.08.23 11:13 Сейчас в теме
(46)
А что в модуле формы отчёта Б, там есть какой-нибудь код?
Есть ли у объекта отчёта Б реквизиты?
Есть ли в модуле объекта отчёта Б процедура "ПриКомпоновкеРезультата" ?
DebilniySaytInfostat; +1 Ответить
48. DebilniySaytInfostat 21.08.23 11:18 Сейчас в теме
(47)
А что в модуле формы отчёта Б, там есть какой-нибудь код?

Нет, там ничего нет, кроме сообщить("тест");
Есть ли у объекта отчёта Б реквизиты?

Нету
Есть ли в модуле объекта отчёта Б процедура "ПриКомпоновкеРезультата" ?

Так же нету
50. Eugen-S 410 21.08.23 11:31 Сейчас в теме
(48)
А что на вкладке "Параметры" схемы компоновки данных
Что на вкладке "Настройки" (Вкладка "параметры" в середине формы)

схемы компоновки данных?
DebilniySaytInfostat; +1 Ответить
51. DebilniySaytInfostat 21.08.23 11:41 Сейчас в теме
(50) Если речь про отчет б то следующее:
Прикрепленные файлы:
AfterEarth; +1 Ответить
52. Eugen-S 410 21.08.23 11:50 Сейчас в теме
(51)
У Вас
    ПараметрыФормы = Новый Структура();
    ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);  
    ПараметрыФормы.Вставить("КлючВарианта", "Основной");
    ПараметрыФормы.Вставить("КомпоновщикНастроек", КомпоновщикНастроекНовый);


У меня в статье:
ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
	ПараметрыФормы.Вставить("КлючВарианта", "Основной");
	ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки); 


Нужно передавать пользовательские настройки, а не компоновщик настроек
У вас вместо этой строки:

ПараметрыФормы.Вставить("ПользовательскиеНастройки", КомпоновщикНастроек.ПользовательскиеНастройки); 
(44)

Вот эта:
    ПараметрыФормы.Вставить("КомпоновщикНастроек", КомпоновщикНастроекНовый);
AfterEarth; +1 Ответить
53. DebilniySaytInfostat 21.08.23 11:55 Сейчас в теме
Госпади...точно
Теперь получилось.
Евгений. Прошу прощения за мой первый комментарий. Увы сайт не дает его редактировать или удалить сейчас(
Все сказанные слова в первом комментарии беру обратно, они были написаны вчера после безуспешных попыток справиться с поставленной задачей.
Дизлайков не ставил. А вот лайков щас поставлю!!
55. СтарПом 05.09.23 09:09 Сейчас в теме
В варианте для обычных форм в процедуру УстановитьОтборСКД в цикл добавил проверку типа элемента на группу:

	Для Каждого Элем Из Настройки.Отбор.Элементы Цикл
		
		Если Тип(Элем) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
			Продолжить;
		КонецЕсли;


иначе в строке "Если Элем.ЛевоеЗначение = ПолеКД Тогда" ругается на "Элем.ЛевоеЗначение", которого у группы отбора нет.
AfterEarth; +1 Ответить
56. Student1C 58 14.09.23 14:40 Сейчас в теме
А как к этому добавить выбор полей и настройку структуры?
57. valkor 31.10.23 13:46 Сейчас в теме
Пример вдруг кому придется открывать универсальный отчет со своим ключом и отбором через точку

ПараметрыОткрытия = Новый Структура("Ключ, СформироватьПриОткрытии", "Ключ", Истина);
			ФормаОтчета = ПолучитьФорму("Отчет.УниверсальныйОтчет.Форма", ПараметрыОткрытия, Неопределено, Истина);
			
			КомпоновщикНастроек = ФормаОтчета.Отчет.КомпоновщикНастроек;
			
			Период = Новый СтандартныйПериод();
			Период.ДатаНачала = Дата(1,1,1);
			Период.ДатаОкончания = КонецДня(ТекущаяДата());
			
			УстановитьПользовательскийПараметрСКД(КомпоновщикНастроек, "Период", Период);
			УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, "АналитикаУчетаНоменклатуры.Номенклатура", Номенклатура); 
			
			ФормаОтчета.Открыть();
Показать
AfterEarth; +1 Ответить
58. FaithNoMore 15.11.23 15:33 Сейчас в теме
Вообще, если дело происходит в дополнительном отчёте в типовой конфигурации, достаточно поместить в его модуль 2 процедуры и задействовать Форма.ФормаПараметры.Отбор. Сюда можно вставлять и параметры и элементы отбора. Не знаю, если это уже всё было в простыне обсуждений выше, то извините.
Пример:

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

Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
	
	ИдентификаторКоманды 	= Форма.Параметры.ИдентификаторКоманды;
	ОбъектыНазначения		= Форма.Параметры.ОбъектыНазначения;
	
	// 1. Запускаем нужный вариант отчёта.
	//
	Форма.Параметры.КлючВарианта = ИдентификаторКоманды;
	
	Если ИдентификаторКоманды = "ЛК_Движения" Тогда
			
		// 2. Устанавливаем нужный период (это - параметр). Если фильтруем по ссылке,
		//	период устанавливаем пустым - текст запроса составлен так, что в этом случае
		//	фильтрации по периоду не будет.
		//
		Период = Новый СтандартныйПериод;
		Форма.ФормаПараметры.Отбор.Вставить("Период", Период);
		
		// 3. Фильтруем по ссылке на документ (отбор).
		//
		Форма.ФормаПараметры.Отбор.Вставить("Регистратор", ОбъектыНазначения);
		
	ИначеЕсли ИдентификаторКоманды = "ЛК_Остатки" Тогда
		
		// 2. Устанавливаем нужный период (это - параметр). Если фильтруем по ссылке,
		//	период устанавливаем пустым - текст запроса составлен так, что в этом случае
		//	фильтрации по периоду не будет.
		//
		Период = ПериодПоОбъектамНазначения(ОбъектыНазначения);
		Форма.ФормаПараметры.Отбор.Вставить("Период", Период);
		
		// 3. Фильтруем по физическим лицам из документа.
		//
		Если ОбъектыНазначения.Количество() > 0 Тогда
			
			ФизическиеЛица = ФизическиеЛицаПоОбъектамНазначения(ОбъектыНазначения);
			
			Форма.ФормаПараметры.Отбор.Вставить("ФизическоеЛицо", ФизическиеЛица);
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры
Показать
59. Stipank 04.04.24 12:21 Сейчас в теме
Поясните плиз.
КомпоновкаДанныхКлиентСервер - не могу найти такой модуль, вроде как типовой, но ни в одной конфе не вижу такого..
где его можно найти вообще? в БСП не нашел тоже особо такого.. может кто-то скинуть его может? если он не сильно зависит от остальных модулей
60. SadrA 08.11.24 18:27 Сейчас в теме
(59) в ЕРП есть такой модуль, в БСП, да, нет такого
Оставьте свое сообщение