0
Mr_SlavaN
23.01.16
✎
17:22
|
Доброго всем дня!
Есть периодический независимый регистр сведений. В качестве измерений ссылка на документ и куча булевых реквизитов.
Есть обработка на которой имеется 3 дин.списка на разных закладках с настроенными отборами для отображения данных из регистра.
Задача. По полученной ссылке найти в каком из списков присутствует документ, переключиться на этот список и выделить строку с документом.
Строка с документом в любом списке только 1. Списки обрабатываются по порядку кода. Если нашли - больше не ищем.
Пытался сделать следующее. Получаю для 1 списка схему и настройки КД, через расширение табличной части формы. Получаю копию набора данных списка т.к. кроме преднастроенных отборов у пользователя ещё и свои настроены. Дальше набор выгружаю в ТЗ и ищу строку со ссылкой. Если нашёл, то создаю ключ записи регистра со структурой отбора по данным строки и элементу формы список1 устанавливаю текущую строку.
Но... Видимо полученный из регистра ключ записи не соответствует таковому в списке: ни позиционирования, ни выделения строки не происходит.
Код поиска
&НаСервере
Функция ДанныеЕстьВСписке(дСписокЭлементФормы, ДокСсылка, Позиция)
Результат = Ложь;
// получаем копию дин.списка с пользовательскими отборами и настройками
времСКД = Элементы[дСписокЭлементФормы].ПолучитьИсполняемуюСхемуКомпоновкиДанных();
времНКД = Элементы[дСписокЭлементФормы].ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
// формируем и инициализируем макет для вывода в тз
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
времМКД = КомпоновщикМакета.Выполнить(времСКД, времНКД,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцКомпоновки = Новый ПроцессорКомпоновкиДанных();
ПроцКомпоновки.Инициализировать(времМКД);
// выводим редультат в тз
ПроцВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
времТЗ = ПроцВывода.Вывести(ПроцКомпоновки);
стр = времТЗ.Найти(ДокСсылка, "Документ");
Если стр <> Неопределено Тогда
Результат = Истина;
Если дСписокЭлементФормы <> "ДокументыДляВыдачи" Тогда
Позиция = ПолучитьКлючЗаписи(стр);
Иначе
Позиция = стр.Документ;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ПолучитьКлючЗаписи(ДанныеОтбора)
Отбор = Новый Структура;
Отбор.Вставить("Период", ДанныеОтбора.Период);
Отбор.Вставить("ДокументРеализации", ДанныеОтбора.Документ);
Возврат РегистрыСведений.УчетДокументовРеализации.СоздатьКлючЗаписи(Отбор);
КонецФункции
дСписокЭлементФормы - имя элемента динамического списка на форме
Заранее благодарен за любые подсказки!
|
|