Имя: Пароль:
1C
1С v8
Как в форму регистра добавить колонку?
0 mdv92
 
21.09.11
16:18
Ну, т.е., например, есть реквизит Договор, а я хочу в форме списка вывести еще и контрагента? (такого реквизита нет и не будет)
1 mdv92
 
21.09.11
16:19
в смысле - владельца вывести!
2 Amra
 
21.09.11
16:24
Без фото не взлетит. Не надоело вопросы в пустоту задавать?
3 Error pro
 
21.09.11
16:28
(0) а че ты курил?
4 Шапокляк
 
21.09.11
16:32
Добавьте колонку в форме списка и используйте обработчик ПриВыводеСтроки. Примеров в конфигурациях полно.
5 zbv
 
21.09.11
16:32
добавить колонку и заполнять ее в процедуре "ПриПолученииДанных"
6 Сергей Д
 
21.09.11
16:33
Автору - делай как (5) и не делай как (4).
7 mdv92
 
21.09.11
16:39
Я ее никак обозвать не могу! И, кстати, примера тоже не могу найти. С журналами документов, вроде, разобралась (и то не помню, а перетаскиваю каждый раз кусок), а с регистром -
Процедура РегистрНакопленияСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Элемент.Колонки.ПапкаСтатьи.Данные=ДанныеСтроки.Статья.Родитель;
КонецПроцедуры
Не работает!
8 ilkoder
 
21.09.11
16:43
Процедура РегистрНакопленияСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

ОформлениеСтроки.Ячейки.ПапкаСтатьи.Текст=ДанныеСтроки.Статья.Родитель;
       ОформлениеСтроки.Ячейки.ПапкаСтатьи.ОтображатьТекст = истина;

КонецПроцедуры
9 Шапокляк
 
21.09.11
16:44
(6) обоснуй.
10 unregistered
 
21.09.11
16:47
(9) А что тут обосновывать?

ПриПолученииДанных работает в разы быстрее, чем ПриВыводеСтроки.
11 ilkoder
 
21.09.11
16:47
(10) +100500...
12 mdv92
 
21.09.11
16:49
(8) Спасибо!!! Работает!!!
13 mdv92
 
21.09.11
16:51
РегистрНакопленияСписокПриПолученииДанных(Элемент, ОформленияСтрок)
- тут не предлагается данныестроки - как тогда сделать?
14 unregistered
 
21.09.11
16:54
Остатки в форме списка справочника Номенклатура:

Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
 // Соответствие создается для заполнения остатков в строках табличного поля
 Соответствие = Новый Соответствие;
 // Заполнение параметра - массива значений ссылками на отображаемые строки табличного поля
 СсылкиМассив = Новый Массив;
 Для каждого Стр из ОформленияСтрок Цикл
    СсылкиМассив.Добавить(Стр.ДанныеСтроки.Ссылка);
    Соответствие.Вставить(Стр.ДанныеСтроки.Ссылка, Стр);
 КонецЦикла;
 // Сформировать запрос для получения остатков
 ЗапросОстатка = Новый Запрос;
 ЗапросОстатка.Текст = "ВЫБРАТЬ
 | УчетНоменклатурыОстатки.Номенклатура,
 | УчетНоменклатурыОстатки.КоличествоОстаток
 |ИЗ
 | РегистрНакопления.УчетНоменклатуры.Остатки(, Номенклатура В (&Номенклатура)) КАК УчетНоменклатурыОстатки";
 ЗапросОстатка.УстановитьПараметр("Номенклатура", СсылкиМассив);
 Выборка = ЗапросОстатка.Выполнить().Выбрать();
 //Вывести остаток в строку, найденную в соответствии по номенклатуре из запроса
 Пока Выборка.Следующий() Цикл
   Соответствие.Получить(Выборка.Номенклатура).Ячейки.Остаток.Значение = Выборка.КоличествоОстаток;
 КонецЦикла;
КонецПроцедуры
15 hhhh
 
21.09.11
16:55
(13) предлагаются там данные строки
16 Шапокляк
 
21.09.11
16:57
(14) Спасибо, буду иметь в виду. Правда, по своему опыту и поиску по сайту существенной разницы обнаружить не удалось.
17 mzelensky
 
21.09.11
17:00
"ПриПолученииДанных работает в разы быстрее, чем ПриВыводеСтроки." - а точно быстрее ????
18 hhhh
 
21.09.11
17:02
(17) ну если случай

ОформлениеСтроки.Ячейки.ПапкаСтатьи.Текст=ДанныеСтроки.Статья.Родитель;

то одинаково работают.
19 mzelensky
 
21.09.11
17:05
Вот случай:

//РАСЧИТЫВАЕМ ЦЕНУ
Процедура НоменклатурныеПозицииПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    Вставить содержимое обработчика.
   Если РассчитыватьЦену тогда
       Если ДанныеСтроки<>Неопределено и ДанныеСтроки.Номенклатура<>неопределено и ЗначениеЗаполнено(ВладелецФормы.ДоговорКонтрагента)  тогда
           ТипПоДоговору=ВладелецФормы.ТипЦен;
           ТипЦены=ОбщийМодуль.ПолучитьТипЦеныНоменклатуры(ДанныеСтроки.Номенклатура, ВладелецФормы.ДоговорКонтрагента, ТекущаяДата(), ТипПоДоговору);
           ОформлениеСтроки.ячейки.цена.УстановитьТекст(Строка(  ОбщийМодуль.ПолучитьЦенуНоменклатуры(ДанныеСтроки.Номенклатура,ТипЦены, ТекущаяДата())  ));
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры



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


Что будет быстрее ???
20 acsent
 
21.09.11
17:07
(19) Одинаково
21 unregistered
 
21.09.11
17:07
(16) >> поиску по сайту

Сто раз обсасывалось на форуме :)

При скролинге по списку ПриПолученииДанных обрабатывает только те строки, которые появляются при пролистывании, а ПриВыводеСтроки - все видимые строки.

То есть в массиве ОформленияСтрок будет меньше строк, чем мы видим на экране.

Ну и кроме того ПриПолученииДанных вызывается один раз, а ПриВыводеСтроки - столько раз сколько строк. Соответственно в ПриПолученииДанных можно одним запросом получить все дополнительные данные (см. пример с остатками из (14)) и их вывести в нужные поля, а ПриВыводеСтроки - по сути запрос в цикле.
22 hhhh
 
21.09.11
17:14
(21) но бывает наоборот, при открытии форм журналов и списков документов ПриПолученииДанных вызывается 2 раза. Особенно типовая БП этим грешит.
23 Goggy
 
21.09.11
17:18
(22) Но даже 2 раза это не вызов на каждую строку и к тому же в нашем случае не списки документов.
24 Шапокляк
 
21.09.11
18:44
(21) Вы про скроллинг по списку говорите? И что, приПолученииДанных вызывается реже ПриВыводеСтроки в этом случае? Я уж не говорю о том, что сама процедура ПриПолученииДанных по времени работы соизмерима с ПриВыводеСтроки.