Есть задача хранить справочник с соответствиями к Должности и Подразделению, но связь эта задается по условиям, т.е. справочник Должности содержит слово ... , а Подразделение В иерархии, например, и т.д.
Я могу задать эти условия в форме, например, и хранить текстом, а получать таблицу соответствий в Модуле объекта. Но в запросе как таблицу это не используешь.
Пытаюсь вспомнить в типовых что-то подобное, но не получается..
Может есть у кого идеи или где-то видели решение такое?
---
1. Создать СКД с твоим запросом.
2. Создать справочник Соответствия. В форме элемента открыть СКД на редактирование, добавить нужные отборы (условия), сохранить отборы (настройки скд) в реквизит элемента с типом хранилище.
3. В модуле справочника Соответствия прописать код, который получает СКД, получает сохраненные настройки из реквизита элемента, формирует Результат
4. В нужных местах получаешь ТвойЭлементСправочникаСоответствияОбъект.ПолучитьРезультат()
---
Храни таблицу в ХранилищеЗначений. На вскидку можно использовать РС Сохраненные настройки.
---
zShamaNz, Как вариант, можно добавить 2 свойства справочнику и хранить соответствия в них. В запросе легко выбирается.
---
Использовать свойства и/или категории смотря что больше подходит.
+ в большинстве стандартных отчетов по ним можно делать отбор.
Выбор из регистра сведений "Значение свойств объектов".
---
1. Создать СКД с твоим запросом.
2. Создать справочник Соответствия. В форме элемента открыть СКД на редактирование, добавить нужные отборы (условия), сохранить отборы (настройки скд) в реквизит элемента с типом хранилище.
3. В модуле справочника Соответствия прописать код, который получает СКД, получает сохраненные настройки из реквизита элемента, формирует Результат
4. В нужных местах получаешь ТвойЭлементСправочникаСоответствияОбъект.ПолучитьРезультат()
---
spezc, мне нра идея, тоже о подобной думал, но исполнение, казалось, содержит подводные камни. Надеюсь, что прокатит..
---
zShamaNz, подводных камней нет, схему реализовывал не раз (в том числе для получения движений по гибким условиям при проведении документов).
Единственный нюанс - это сама скд, ведь нужно скд программно открыть, потом получить настройки и сохранить. А потом еще СКД программно сформировать. Если с СКД на "ты", то проблем не возникнет. Если на "вы", то тем более рекомендую реализовать эту схему, ибо если реализуюешь - это +5см к длине.
---
Я СКД знаю неплохо, но в основном пользуюсь шаблонами отчетов. Поэтому программно это все вызывать будет заморочно. Есть готовый код?))
---
Программное выполнение СКД

```1c
    КомпоновщикНастроекКомпоновкиДанных = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД));
    КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СтруктураПараметров.КомпоновщикНастроек.Настройки);
    //НастройкаКомпоновки = КомпоновщикНастроекКомпоновкиДанных.Настройки;
    //вместо этого получить ранее сохраненные настройки из хранилища
    НастройкаКомпоновки = ПолучитьНастройкиИзРеквизитаСправочника();
    ПараметрСКД = НастройкаКомпоновки.ПараметрыДанных.Элементы.Найти("Период");
    ПараметрСКД.Значение = СтруктураПараметров.Период;
    ПараметрСКД.Использование = Истина;

    Дерево = Новый ДеревоЗначений;

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

    ПроцессорВывода.НачатьВывод();
    Пока Истина Цикл
    ЭлементРезультатаКомпоновкиДанных =
    ПроцессорКомпоновкиДанных.Следующий();
    Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда
    Прервать;
    КонецЕсли;
    ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных);
    КонецЦикла;

    ПроцессорВывода.ЗакончитьВывод();

    Возврат Дерево;
```
---
Редактирование схемы. Этот код можно вызывать из формы элемента справочника Соответствия

```1c
    Процедура ОсновныеДействияФормыНастройки(Кнопка)

    Конструктор = Новый КонструкторСхемыКомпоновкиДанных;
    Конструктор.УстановитьСхему(СхемаКомпоновкиДанных);
    Конструктор.Редактировать(ЭтаФорма);

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

    Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)

    Если ТипЗнч(Источник) = Тип("КонструкторСхемыКомпоновкиДанных") Тогда

    СхемаКомпоновкиДанных = Источник.ПолучитьСхему();
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию; // это те настройки которые нужно сохранить
    КонецЕсли;

    КонецПроцедуры
```
---
Это вывод результата же? я подумал в форме сделать КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор и его сохранять. ну а вывод можно сделать с помощью ТиповыеОтчеты.СформироватьТиповойОтчет(ЭтотОбъект, Результат, ДанныеРасшифровки, ВыводВФормуОтчета) в таблицу значений или ТабДок. По форме есть код? по открытию и сохранению в ХранЗнач?
---
Ок, спасибо, сейчас попробую.