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

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)

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

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

ТОП-6 инструментов для разработчика 1С

Подборка лучших инструментов для разработчика 1С включает Toolkit, DCT, OneDebugger, PrintWizard, DataFormWizard и Infostart MCP. Любой инструмент со скидкой 20% при покупке от двух решений.

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    251685    1394    421    

1147

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    5933    316    shapa_pro    25    

68

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    17605    ovetgana    112    

108

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    10290    krasnoshchekovpavel    5    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    9630    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    16117    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    13753    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    10408    AlexeyPROSTO_1C    1    

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

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

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

Показать
cloner78; Virgo; user1203627; andy23; aleksey2; native-api; user1446146; Yan_Malyakov; Eugen-S; +9 Ответить
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 4913 10.08.21 18:27 Сейчас в теме
Столько плюсов за такую тривиальщину, разжёванную в куче руководств... И это притом, что автор совершенно не упоминает параметр формы "Отбор", и ничего не говорит о конфликте с возможно сохранёнными настройками, о тех прелестях, что могут поджидать в событиях самой открываемой формы, о фиксированных настройках.
Кусок примитивного кода, принятый "на ура". Если такое на ИС пользуется спросом, то очень грустно.
088011; native-api; +2 Ответить
6. Eugen-S 441 10.08.21 19:23 Сейчас в теме
(5)

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


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


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


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


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


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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

Предъявили, обоснуйте. Не можете обосновать, это не моя проблема.
gigansk; artbear; +2 Ответить
19. Yashazz 4913 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 441 19.08.21 18:57 Сейчас в теме
(19)
Итого, всего одна публикация, именно с Инфостарта, очень краткая, только для ОФ, то есть под УФ нужно будет адаптировать, и то в вызове метода "СкомпоноватьРезультат" забыли про расшифровку.

А судит пусть почтенная публика. Ставя "+" или "-".
native-api; +1 Ответить
21. Sirruf 196 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.
Взято с ИТС.
AndreySchel; WinnieJones; user1835472; seppe_sai; Lime_; natal_tihom; begemot; Aleasoft; wild83; SergeySol-82; smit1c; psvXXL; TSSV; Eugen-S; +14 Ответить
25. TSSV 1162 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
61. zykov_vitaliy 91 14.07.25 04:46 Сейчас в теме
(24) Вместо ФормаОбъекта нужно просто Форма, на ИТС ошибка
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 441 20.08.23 20:54 Сейчас в теме
(38)
Уважаемый, картинка и схема СКД - не нужны, так как описана общая концепция, пригодная для любого СКД отчёта.
Важно лишь знать какие у отчёта есть параметры и отборы (они индивидуальны для каждого отчёта).

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

Не правда. Я так и не смог понять, почему у меня пользовательские значения параметров всегда идут в приоритете тех, которых я по вашей статье задал кодом. Не много подробнее:
Есть отчет А. В нем я тыкаю на ресурсное поле и должен открываться отчет Б, который показывает все регистраторы которые образовали ресурсное поле отчета А. В отчете А есть параметр ДатаНачала и ДатаОкончания. Логично, что данные параметры передаются в отчет Б. С помощью вашей статьи и пытался организовать данную "передачу". В итоге в Отчет Б параметры из отчета А не передаются. Почему? не понял. В отчете Б всегда сохраняются значения ДатаНачала и ДатаОкончания лишь только те которые настроил пользователь. Да вы в вполне резонно скажете "Нуб иди учи СКД". И будите правы. Мой фи в комментарии выше был написан, после того как я понял что такие вещи как СКД лучше изучать обьемно по книгам или крусам а не по статейкам на итс
41. Eugen-S 441 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 441 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 441 21.08.23 10:56 Сейчас в теме
(44) при исполнении кода вот это условие отрабатывает?
 
Если ЗначениеЗаполнено(ПараметрДанных.ИдентификаторПользовательскойНастройки) Тогда
        
        ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
        ПользовательскийПараметр = ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
        ПользовательскийПараметр.Использование = Истина;
        ПользовательскийПараметр.Значение = Значение;
    КонецЕсли;


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

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

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

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

схемы компоновки данных?
DebilniySaytInfostat; +1 Ответить
51. DebilniySaytInfostat 21.08.23 11:41 Сейчас в теме
(50) Если речь про отчет б то следующее:
Прикрепленные файлы:
AfterEarth; +1 Ответить
52. Eugen-S 441 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 61 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) в ЕРП есть такой модуль, в БСП, да, нет такого
62. GKG 22 13.02.26 16:04 Сейчас в теме
Вот так заработало
но у меня отборы строго по "равно", другие варианты не рассматривал.
&НаКлиенте
Процедура УстановитьПользовательскийОтборСКД(КомпоновщикНастроек, ИмяОтбора, Значение, ВидСравнения = Неопределено)
	
	Перем	ПолеКД, Элем, ЭлементОтбора, Настройки, 
			ПользовательскиеНастройки, ПользовательскийОтбор;
	
			Настройки = КомпоновщикНастроек.Настройки;
			
			ПолеКД = Новый ПолеКомпоновкиДанных(ИмяОтбора);
			
			Для Каждого Элем Из Настройки.Отбор.Элементы Цикл
				
				Если Элем.ЛевоеЗначение = ПолеКД Тогда
					ЭлементОтбора = Элем;
					Прервать;
				КонецЕсли;
			КонецЦикла;
			
			Если ЭлементОтбора = Неопределено Тогда     
				
				Если  КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.количество()>0 Тогда   
					Для каждого элем из КомпоновщикНастроек.ПользовательскиеНастройки.Элементы Цикл 
						если сокрлп(элем.параметр) = имяОтбора Тогда           
							ЭлементОтбора = Элем;
							 элем.значение = Значение;
								Возврат;
						КонецЕсли;	
						
					КонецЦикла;	
				иначе	                                                                   
					
					Возврат;		                                                             
				КонецЕсли;
			КонецЕсли;		
			
			Если ЗначениеЗаполнено(ЭлементОтбора.ИдентификаторПользовательскойНастройки) Тогда
				
				ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки;
				ПользовательскийОтбор = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
				ПользовательскийОтбор.Использование = (Значение <> Неопределено);
				ПользовательскийОтбор.ВидСравнения = ?(ВидСравнения <> Неопределено, ВидСравнения, ВидСравненияКомпоновкиДанных.Равно); 
				ПользовательскийОтбор.ПравоеЗначение  = Значение;
			КонецЕсли;

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