Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 17:03

Перевод текущей строки в начало списка

Автор HiVvich, 07 июл 2016, 15:48

0 Пользователей и 1 гость просматривают эту тему.

LexaK

а в управляемых формах, такая конструкция не работает

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


а программное "нажатие" кнопки работает отлично

&НаКлиенте
Процедура КомандаПерваяСтрока(Команда)

//устанавливаем фокус на таблицу списка
ЭтаФорма.ТекущийЭлемент = Элементы.ДокументСписок;
мГенераторКлавиш = Новый COMОбъект("Wscript.shell");
    мГенераторКлавиш.SendKeys("{Home}");

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


ни где не нашел примера как из динамического списка, в управляемых формах, получить данные данные, тем более если динамический список без текста запроса, а еще лучший пример, если динамический список это журнал документов. :dfbbdrfb:
если помогло нажмите: Спасибо!

HiVvich

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

LexaK

в общем, раскопал, получение данных из динамического списка для УФ, данная задача заработала и в таком варианте,
но там ге...орой еще тот.
Вот код который работает, но если у вас документов очень много, будет не реально тормозить.
Кому интересно сравните скорость позиционирование по кнопке Home и по получению ТЗ из динамического списка.




&НаКлиенте
Процедура КомандаПерваяСтрока(Команда)

Элементы.ДокументСписок.ТекущаяСтрока = ПолучитьСсылкуПервогоЭлемента();

////устанавливаем фокус на таблицу списка
//ЭтаФорма.ТекущийЭлемент = Элементы.ДокументСписок;
//мГенераторКлавиш = Новый COMОбъект("Wscript.shell");
//мГенераторКлавиш.SendKeys("{Home}");

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

&НаСервере
Функция ПолучитьСсылкуПервогоЭлемента()

лкСхема = Элементы.ДокументСписок.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); 
лкНастройки = Элементы.ДокументСписок.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

//почему-то по умолчанию, в динамических списках нет поля Ссылка, добавляем
лкПоля = лкНастройки.Структура[0].Выбор.Элементы;
лкПоле = лкПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
лкПоле.Поле = Новый ПолеКомпоновкиДанных("Ссылка");

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

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

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


Если лкРезультат.Количество() > 0  Тогда
лкСсылка = лкРезультат[0].Ссылка;
Иначе
лкСсылка = Неопределено;
КонецЕсли;

Возврат лкСсылка;

КонецФункции


если помогло нажмите: Спасибо!

cska-fanat-kz

Цитата: LexaK от 11 июл 2016, 15:21лкСхема = Элементы.ДокументСписок.ПолучитьИсполняемуюСхемуКомпоновкиДанных();  лкНастройки = Элементы.ДокументСписок.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

а еще стоит учесть что эти методы появились начиная с какой-то 8.3.х
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск