Всем привет ! Во внешней обработке [Не отчете !] создал программно отчет в СКД, вывел его в табличный документ на форме. Как можно сделать кнопку по которой бы открывались настройки отчета [Такие же как если создавать отчет в СКД стандартным образом, настройки группировки, сортировки и т.д.] ?
---
sky.xn, НастройкиДляКомпоновкиМакета.ПараметрыДанных.ДатаНачала = ДатаРучная ?
хотя скорее всего только для чтения. Тогда:
УстановитьЗначениеПараметра(<Параметр>, <Значение>)

```1c
    НастройкиДляКомпоновкиМакета.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", ДатаРучная);
```
---
Конфигурация - Бухгалтерия 3.0
---
есть уже типовой шаблон СКД с диска ИТС, там все уже есть

Естественно что его можно дорабатывать для своих нужд

Обычно так и делают
---
Swetlana, не знал, не подскажете как он точно называется ?
---
Подскажет кто нибудь ???
---
так и называется- типовой шаблон СКД, давно видела, правда под 8.2

под 8.3 не пробовала ещё, может и под него есть.
---
кстати- нашла на инфостарте http://infostart.ru/public/242708/ и как раз под управляемые формы
---
Swetlana, Посмотрел, это все не то. Мне бы хотя бы теоретически понять как можно открыть стандартную форму пользовательской настройки отчета на скд, который сформирован полностью программным способом
---
Не указана конфигурация. Типовая на БСП?
Смотреть в сторону общих форм "ФормаНастроекОтчета".
---
spacecraft, указал во втором сообщении. Да, типовая Бух 3.0 на БСП ! Подскажите чуть подробнее про "ФормуНастроекОтчета", хотя бы на теоретическом уровне ?
---
spacecraft, Я так понял эта форма просто для отбора ((( А как вывести стандартную форму настроек отчета на СКД зашитую в платформу ?
---
Это "КомпановщикНастроекПользователскиеНастройки" имеется ввиду?
Он так и называется - в любом стандартном отчете в форме можно посмотреть как называется и на что ссылается
---
besica, как открыть стандартную форму где пользователь смог бы редактировать группировки, отборы и сортировку ? Вот в чем вопрос
---
Если в отчете нет формы, то подключается общая форма "ФормаОтчета". и в ней настройки открывают общую форму "ФормаНастроекОтчета".
Там кода... мало не покажется.

А в СКД нужно внести выбранные поля и отбор, чтоб в настройках появилось.

Или делать свою форму и свои настройки рисовать.
---
spacecraft, я же говорю у меня не отчет, а внешняя обработка ...
---
На форме в обработке можно добавить реквизит с типом компоновщик настроек компоновки данных. И программно при создании прицеплять его к вашей компоновке.
---
просто добавить группу и определить настройки компоновки туда
---
На форме в обработке можно добавить реквизит с типом компоновщик настроек компоновки данных. И программно при создании прицеплять его к вашей компоновке.

А поподробнее можно чуть ? Я создал реквизит, выбрал тип - КомпоновщикНастроекКомпоновкиДанных. Как теперь его на форму вывести ?

просто добавить группу и определить настройки компоновки туда

Мне бы чуть подробнее ((
---
Хелп ми плиз ! Ну подскажите хоть кто нибудь ((
---
Создаешь группу или страницу и туда выводишь Реквизит - Настройки
Только не забудь этот реквизит к своей СКД подключить.
Вот тут есть немного:
http://infostart.ru/public/255063/
---
spacecraft, Настройки на форму вывел. Подключить не получается, может кто нибудь скинуть примерный код ?
---
Добавляю вознаграждение, помогите !
---
Попробовал вот так:

Реквизит.ЗагрузитьНастройки(НастройкиКомпоновкиДанных);

В этом реквизите вышла только группировка и все, причем менять ее не получается, т.к. не видно полей выбора, отбор как делать не нашел ...
---
sky.xn, а выбранные поля и отбор в СКД настроен?
---
spacecraft, в макете настроены выбранные поля, условия отбора тоже есть, но эти параметры не появляются ...
---
sky.xn, на форму нужно вывести РеквизитКомпоновщикНастроек.Настройки.Отбор.
 Это для отбора.
---
spacecraft, Вот смотри, у меня в запросе в макете указаны параметры отбора:

ГДЕ Документ.Дата >= ДатаНачала
И Документ.Дата <= ДатаОкончания

В "РеквизитКомпоновщикНастроек.Настройки.Отбор" они не появляются ...
---
sky.xn, вот пример из типовой по подключению компоновщика:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
    Возврат;
    КонецЕсли;

    ЗакрыватьПриЗакрытииВладельца = Истина;

    Заголовок = Параметры.Заголовок;

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

    Параметры.Свойство("ПериодДанных", ПериодДанных);

    Если Параметры.ВыборПериода Тогда
    ВыгружатьЗаПериод = Истина;
    Иначе
    ВыгружатьЗаПериод = Ложь;
    // Отключаем выбор периода совсем
    Элементы.ПериодДанных.Видимость = Ложь;
    КонецЕсли;

    КонецПроцедуры
```
---
sky.xn, если не появляются значит дата у тебя параметр
---
spacecraft, Так, вру, кажется появляются, но на форме их вручную нужно вытягивать, т.е. щелкать правой кнопкой, нажимать "Добавить", выбирать параметр и только потом забивать ... Как сделать, чтобы они сразу выходили ?
---
sky.xn, включать в пользовательские настройки?
---
spacecraft, Вот я олух, точно, теперь появляются, но отчет почему то не формируется ... Вернее пустой получается, как будто настройки не влияют.
(42) orfos, Да, параметр, уже разобрался, осталось только понять как сделать чтоб эти параметры действовали
---
sky.xn, Вот что пишут 1С:
---
sky.xn, они будут сразу выходить. там важно в разделе данные указать нужный тип данных. Для параметров вот такой: КомпоновщикНастроек.Настройки.ПараметрыДанных
---
Покажу пример как вывести настройки и отбор на ту же форму, где отображается результат, аналогично разделить это по разным формам не составит труда.
1)Добавляешь в обработку макет СКД
2)Создаешь у обработки реквизит Компоновщик типа КомпоновщикНастроекКомпоновкиДанных
3)В режиме редактирования формы выводишь КомпоновщикНастроекНастройкиОтбор и КомпоновщикНастроекНастройкиПараметрыДанных из реквизита Компоновщик (это его вложенные поля)

```1c
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

    КонецПроцедуры

    &НаСервере
    Процедура СформироватьСКД()
    СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы);

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ТЗ.Загрузить(ТаблицаЗначений);

    КонецПроцедуры

    //Функция в модуле обработки
    Функция ПолучитьСхемуСКД () Экспорт
    Схема = ПолучитьМакет("Макет");
    Возврат Схема;
    КонецФункции // ()
```
---
в книге по скд от Хрусталевой где-то в конце по этому вопросу есть.
Счас посмотрю.
---
в последней главе посмотрите "Культура создания отчетов"
в инете эту книгу запросто найти
Разработка сложных отчетов....
---
Chameleon1980, А как книга точно называется ?

(24) bezplana, Что за необъявленный реквизит ТЗ ? Можете скинуть какую нибудь уже рабочую обработку откуда можно выдернуть код ? Не увидел также в коде реквизита "Компоновщик", хотя вы его описали, а вопрос у меня именно с ним и связан.
---
Е.Ю.Хрусталева
Разработка сложных отчетов в 1С:Предприятии 8
система компоновки данных

даже диск от книги в инете есть
---
Chameleon1980, Спасибо, сейчас скачаю, погляжу, может там что нибудь путное будет.
---
Подскажет еще кто нибудь ?
---
Добавь на форму "ТабличноеПоле" в качестве данных укажи тип "КомпоновщикНастроек.Настройки.ПараметрыДанных" или "КомпоновщикНастроек.Настройки.Отбор". Я так делал именно в обработке правда под 8.2. Мне кажется в 8.3 тоже самое можно сделать.
---
не совсем то автору нужно, как мне показалось
Ему в обработке (не в отчете) нужно открыть все настройки скд.
в книге не нашли?
---
Chameleon1980, ага в обработке нужно открыть настройки СКД для редактирования их пользователем. В книге не нашел, к сожалению (((31)

orfos, Пробовал так я, параметры остаются пустыми ... Хотя в макете СКД они есть. Если скинете готовую обработку посмотреть, буду благодарен.
---
На форме имею ввиду не появляются
---
Понял, у меня в процедуре ПриСозданииНаСервере -

```1c
    СхемаСКД = РеквизитФормыВЗначение("Объект").ПолучитьСхемуСКД();
    АдресСхемы = ПоместитьВоВременноеХранилище(СхемаСКД,Новый УникальныйИдентификатор);
    КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаСКД.НастройкиПоУмолчанию);
```

А в команде на формирование отчета следующее -

```1c
    СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы);
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , ,);
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
```

Так вот в строке СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы); "АдресСхемы" это реквизит формы с типом "Произвольный", на какой тип его поменять или как сделать иначе, ума не приложу ...
---
sky.xn, тип "Строка"
---
spacecraft, ага, поставил тип "Строка", но не помогает, дело похоже не в этом. Если убрать параметры в макете СКД то все формируется, если поставить то ничего не формируется ...
---
sky.xn, вот так попробуй:

```1c
    СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы);
    НастройкиДляКомпоновкиМакета = КомпоновщикНастроек.ПолучитьНастройки();
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиДляКомпоновкиМакета, , ,);
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
```
---
spacecraft, А как в твоем примере передать вручную параметр ДатаНачала и ДатаОкончания в скд ? НастройкиДляКомпоновкиМакета.ДатаНачала = ДатаРучная, как то так ?
---
sky.xn, НастройкиДляКомпоновкиМакета.ПараметрыДанных.ДатаНачала = ДатаРучная ?
хотя скорее всего только для чтения. Тогда:
УстановитьЗначениеПараметра(<Параметр>, <Значение>)

```1c
    НастройкиДляКомпоновкиМакета.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", ДатаРучная);
```
---
spacecraft, Спасибо, сейчас попробую !
---
А ннннеет, теперь и так и так не формируется ... ппц, дурацкий СКД
---
Все таки это не СКД дурацкий, а я олень. Камрады, все получилось, спасибо всем огромное !!! Остался только один маленький вопрос, как можно параметры заполнить программно ? Вот текущий код:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

    КонецПроцедуры
```

```1c
    &НаСервере
    Процедура ЭкспрессПроверкаНаСервере()

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

    КонецПроцедуры
```

Помогите, плз !
---
```1c
    //Функция в модуле обработки
    Функция ПолучитьСхемуСКД () Экспорт
    Схема = ПолучитьМакет("Макет1");
    Возврат Схема;
    КонецФункции // ()
```
---
Получилось вот так:
```1c
    КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", Объект.НачалоПериода);
```

В итоге, может кто наткнется, понадобится:

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

    КонецПроцедуры
```

```1c
    &НаСервере
    Процедура ЭкспрессПроверкаНаСервере()
    КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаНачала", Объект.НачалоПериода);
    КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ДатаОкончания", Объект.КонецПериода);
    СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы);
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , ,);
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    //ТЗ.Загрузить(ТаблицаЗначений);

    КонецПроцедуры
```

```1c
    //Функция в модуле обработки
    Функция ПолучитьСхемуСКД () Экспорт
    Схема = ПолучитьМакет("Макет1");
    Возврат Схема;
    КонецФункции // ()
```
---
Камрады, всем большое спасибо ! К сожалению, на всех вознаграждение не разделишь, поэтому отдаю его самому активному участнику дискуссии :)