Имя: Пароль:
1C
1С v8
Запрос в форме списка. Обычные формы
0 Jamal77788
 
31.07.15
08:22
Здравствуйте, как лучше всего сделать следущее :
в форме списка документов добавить значение,которое получается запросом?
1 1Сергей
 
31.07.15
08:25
я бы сделал, через ПриПолученииДанных
2 Альбатрос
 
31.07.15
08:25
ПриПолученииДанных()
Запрос делаешь для всех строк
3 Andrewww123
 
31.07.15
08:27
Если данных не особо много, можно ПриОткрытии выполнить запрос, засунуть всё в соответствие, а в ПриПолученииДанных получать из в соответствия
4 1Сергей
 
31.07.15
08:28
(3) +1 При каждом получении данных выполнять запрос - не айс
5 asady
 
31.07.15
08:29
(0) я бы переделал на УФ - уж больно динамические списки хороши для такого
6 Альбатрос
 
31.07.15
08:29
(4) ну смотря какой...
7 Andrewww123
 
31.07.15
08:35
(6) При любом запросе будет подтормаживать когда будешь бежать по списку вверх или вниз
8 Альбатрос
 
31.07.15
08:37
(7) Ну хз... у нас в одном справочнике так организовано, тормозов нет. Но и запрос там простецкий. Но в целом ты прав конечно.
9 Jamal77788
 
31.07.15
08:48
(3) Реквизит документа новый создать или же реквизитом формы можно ограничиться?
10 Альбатрос
 
31.07.15
08:49
(9) колонка в ТП списка
11 Остап Сулейманович
 
31.07.15
08:50
(9) Нужно хранить - реквизит документа. Нужно только показать - реквизит формы.
12 Jamal77788
 
31.07.15
09:02
(9)
Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

        
    
    Запрос = Новый Запрос;
    Запрос.Текст =      "ВЫБРАТЬ
    |    ЗаявкиНаРасходованиеСредствОстаткиИОбороты.ЗаявкаНаРасходование,
    |    ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаРасход,
    |    ЗаявкиНаРасходованиеСредствОстаткиИОбороты.СуммаКонечныйОстаток
    |ИЗ
    |    РегистрНакопления.ЗаявкиНаРасходованиеСредств.ОстаткиИОбороты(, &КонецПериода, Период, , ЗаявкаНаРасходование = &Ссылка) КАК ЗаявкиНаРасходованиеСредствОстаткиИОбороты";
    Запрос.УстановитьПараметр("КонецПериода", ТекущаяДата());
    
    Запрос.УстановитьПараметр("Ссылка", ДанныеСтроки.Ссылка);
    Результат = Запрос.Выполнить().Выгрузить()[0];
    ДанныеСтроки.ОплаченоПоЗаявке = Результат.СуммаРасход;                

    
КонецПроцедуры
13 Jamal77788
 
31.07.15
09:03
Вот как результат вывести в реквизит формы?
14 Остап Сулейманович
 
31.07.15
09:05
(12)
"ДанныеСтроки.ОплаченоПоЗаявке = Результат.СуммаРасход;" - в топку.

ОформлениеСтроки.Ячейки.Имя_Колонки_Куда_вывести_результат.УстановитьТекст(...);
15 Jamal77788
 
31.07.15
09:06
(12) Огромное спасибо)))))))))
16 Andrewww123
 
31.07.15
09:07
(12) При выводе строки - это очень плохое решение, тормозить будет 100%
17 Jamal77788
 
31.07.15
09:08
(16) твои предложения?
18 Andrewww123
 
31.07.15
09:08
+ (16) Еще и запрос такой суровый.. Выгонят тебя с работы с такими запросами :)
19 Andrewww123
 
31.07.15
09:12
(17) ПриПолученииДанных, как писали выше
20 Jamal77788
 
31.07.15
09:13
(18) форма списка без ограничений по периоду открылась достаточно быстро, при пролистывании вниз-вверх может небольшие подтормаживания и есть, но они ооочень незначительны
21 Jamal77788
 
31.07.15
09:13
документов много, достаточно много
22 Andrewww123
 
31.07.15
09:16
(20) Ну, тебе виднее. Но я придерживаюсь мнения что нужно стараться делать оптимально, чтобы делание неоптимально не превратилось в привычку
23 Jamal77788
 
31.07.15
09:36
ок (22), как сделать при получении данных?))
24 Andrewww123
 
31.07.15
10:04
(23) ПриПолученииДанных(<ОформленияСтрок>)
Обходить коллекцию "ОформленияСтрок", собирать массив ссылок, потом запросом по всем этим ссылкам получить информацию, потом еще раз обойти коллекцию и установить нужный текст в каждой строке