Вход | Регистрация
 

Модификация запроса динамического списка

Модификация запроса динамического списка
Я
   AAA
 
07.01.22 - 18:19
Всем доброго вечера и хорошего настроения!
Пните в нужном направлении, можно ли, а если можно, то как проще это сделать. В формах списков различных документов в расширении модифицировал запросы списков. Все отлично работает, использую съему запроса, компактно и не трогая руками текст запроса. Но вот понадобилось сделать тоже самое еще для одного вида документов и ..облом. У этого списка запрос не произвольный, а с заданной основной таблицей. В этом случае в ПриСозданииНаСервере формы списка нет никакого текста запроса и нечего модифицировать )) Как поступить в этом случае?
   hhhh
 
1 - 07.01.22 - 18:24
(0) в свойствах динамического списка поставить галку ПроизвольныйЗапрос, не?
   AAA
 
2 - 07.01.22 - 18:30
(1)это самый последний, хирургический вариант. Модификация запросов для других документов работает даже без добавления в расширения формы списка, все делалось с использованием общего модуля МодификацияКонфигурацииПереопределяемый
   shuhard
 
3 - 07.01.22 - 18:35
(2) модификация запроса выходит за пределы отборов ?
   AAA
 
4 - 07.01.22 - 18:37
(3)не понял вопроса. В запрос добавляется связка с регистром сведений для извлечения нужного признака.
   RomanYS
 
5 - 07.01.22 - 18:39
(2) Так что мешает это сделать кодом там же
Форма.ДС.ПроизвольныйЗапрос = Истина;
   pechkin
 
6 - 07.01.22 - 18:40
(2) в чем проблема поставить галку програмно?
   AAA
 
7 - 07.01.22 - 18:42
(5)Пока ничего не мешает, потому и спрашиваю. Очень редко с этим имею дело. А текст как получить, чтобы его модифицировать ?
   pechkin
 
8 - 07.01.22 - 18:45
(7) с 0 писать. Есть один нюанс. Псевдонимы полей Ссылка, Дата, Номер по умолчанию задаются на английском. Если напишешь по русски, то придется колонки перепривязывать
   RomanYS
 
9 - 07.01.22 - 18:48
(7)     РеквизитДС = ЭтотОбъект.ДС;
    РеквизитДС.ПроизвольныйЗапрос = Истина;
    РеквизитДС.ТекстЗапроса = "Выбрать * из "+РеквизитДС.ОсновнаяТаблица;
   RomanYS
 
10 - 07.01.22 - 18:49
(0)>> Все отлично работает, использую съему запроса, компактно и не трогая руками текст запроса
Показал бы пример, интересно
   AAA
 
11 - 07.01.22 - 18:51
(10) вот что то такое:

Процедура МодификацияЗапросаСписка(Форма, ИмяСписок) Экспорт
    
    ТекстЗапроса = Форма[ИмяСписок].ТекстЗапроса;
    
    СхемаЗапроса = Новый СхемаЗапроса;
    СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);
        
//    при создании схема содержит один пакет и один оператор в пакете.

    Пакет    = СхемаЗапроса.ПакетЗапросов[0];
    Оператор = Пакет.Операторы[0];
        
    ОсновнойИсточник = Оператор.Источники[0];
    НовыйИсточник = Оператор.Источники.Добавить("РегистрСведений.РазрешениеНаРедактирование", "РазрешениеНаРедактирование");
    ОсновнойИсточникПсевдоним = ОсновнойИсточник.Источник.Псевдоним;
       НовыйИсточник.Соединения.Добавить(ОсновнойИсточник, ОсновнойИсточникПсевдоним + ".Ссылка = РазрешениеНаРедактирование.Ссылка");
       Для Каждого стрСоед из НовыйИсточник.Соединения Цикл
           стрСоед.ТипСоединения = ТипСоединенияСхемыЗапроса.ПравоеВнешнее;    
    КонецЦикла;
        
    Оператор.ВыбираемыеПоля.Добавить("ВЫБОР
    |КОГДА РазрешениеНаРедактирование.Ссылка ЕСТЬ NULL
    |        ТОГДА ЛОЖЬ
    |ИНАЧЕ РазрешениеНаРедактирование.Редактирование
    |КОНЕЦ");

    Пакет.Колонки[Пакет.Колонки.Количество() - 1].Псевдоним = "Редактирование";        
    
    Форма[ИмяСписок].ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();                    
    
КонецПроцедуры
   AAA
 
12 - 07.01.22 - 19:12
(9)Спасибо, получилось. Только у этой таблицы еще одна особенность - нет обработчика "Выбор", который мне нужен, чтобы обработать щелчки на добавленной колонке. С этим вроде разбирался  год назад, но нифига не помню ))
   RomanYS
 
13 - 07.01.22 - 19:16
(12) что-то типа УстановитьДействие должно помочь, только вот с размещением самого обработчика могут проблемы возникнуть
   AAA
 
14 - 07.01.22 - 19:18
(13)а сейчас, при пустом "Выбор" как форма списка понимает, что при двойном щелчке надо открыть форму документа ?
   pechkin
 
15 - 07.01.22 - 19:19
(14) это платформенное
   AAA
 
16 - 08.01.22 - 04:42
Всем спасибо. Все получилось.
В расширении, для нужной формы списка в &После ПриСозданииНаСервере написал УстановитьДействие("Выбор", "СписокВыбор"), Процедуру "СписокВыбор" определил в этом же модуле формы расширения. Кроме этого, в некоторые формы программно добавляются элементы с обработчиками. С визуальным добавлением элементов уже огребал неприятности, когда добрая половина формы куда то сьезжает или пропадает.
Непонятно одно, почему разработчики УТ 11 к разным формам списка применяют разные техники и по разному называют списки, где просто "Список", а где то и "ПриходныеКассовыеОрдераСписок" ))
Хотелось вообще обойтись без переноса форм списков в расщирение, но это видимо пока не судьба
   МимохожийОднако
 
17 - 08.01.22 - 06:25
(16) Вопрос "Почему разработчики" в большинстве случаев риторические. Можно погадать, что разные команды разработчиков в разное время имели разную квалификацию и другие стандарты кодирования. Но ты молодЦа. )

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.