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

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

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