Имя: Пароль:
1C
1С v8
Заполнение данных из запроса в форму УФ
0 Kurbash
 
11.02.14
07:35
Такая ситуация-есть форма на которой расположены две ТЧ (см.аттач)http://zalil.ru/34960841
В левой ТЧ у меня контрагенты и суммы , на которые с ними прошла реализация. В правою же хочу без кнопки вывести данные на какие товары прошла реализация по данному контрагенту. Вот тут засада-на обработчик какого события повесить эту процедуру? вешаю на активация строки-1с начинает долго висеть даже при запуске отчета, наверное часто срабатывает активация строки. При Выборе строки тоже не вариант-пользователь хочет чтобы ткнул на контрагента и правая тч заполнилась. Что делать?

ниже код:

&НаКлиенте
Процедура ПродажиКонтрагентыОбщееПриАктивизацииСтроки(Элемент)
        ПродажиКонтрагентовПодробно.Очистить();
    контрагентик= Элементы.ПродажиКонтрагентыОбщее.ТекущиеДанные;
    Если контрагентик=Неопределено Тогда
    Иначе    
    контрагент=строка(контрагентик.ПродажиКонтрагентыОбщееКонтрагент);
КонецЕсли;
ЗаполнитьПродажиПоКонтрагентуНаСервере(контрагент);
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПродажиПоКонтрагентуНаСервере(контрагент)
Запрос=новый запрос();
запрос.Текст="ВЫБРАТЬ
                                 |    СУММА(РеализацияТоваровУслугТовары.Сумма) КАК Сумма,
                                 |    РеализацияТоваровУслугТовары.Номенклатура.Родитель КАК родитель
                                 |ИЗ
                                 |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                                 |ГДЕ
                                 |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
                                 |    И РеализацияТоваровУслугТовары.Ссылка.Проведен = &Проведен
                                 |    И РеализацияТоваровУслугТовары.Ссылка.Контрагент.Наименование = &Ответственный
                                 |
                                 |СГРУППИРОВАТЬ ПО
                                 |    РеализацияТоваровУслугТовары.Номенклатура.Родитель";
                        Запрос.УстановитьПараметр("Дата1",НачалоДня(ДатаС));
                        Запрос.УстановитьПараметр("Дата2",КонецДня(ДатаПО));
                        Запрос.УстановитьПараметр("Проведен",Истина);
                        Запрос.УстановитьПараметр("Ответственный",контрагент);
Результат=Запрос.Выполнить().Выбрать();
пока результат.Следующий()цикл;
    ст=ПродажиКонтрагентовПодробно.Добавить();
    ст.ГруппаТоваров=Результат.Родитель;
    ст.Сумма=Результат.Сумма;
конеццикла;
КонецПроцедуры
1 Kurbash
 
11.02.14
07:36
сразу скажу что понимаю выборка из доков нот гуд, но это один из вариантов с запросом такая же песня
2 romashov
 
11.02.14
07:37
Сделать динамический список и выборе строки контрагента устанавливать фильтр.
3 Kurbash
 
11.02.14
07:38
а чем мой код плох? может все таки не на активацию строки код ставить?
4 Kurbash
 
11.02.14
07:39
потому что при открытии формы он срабатывает
5 Cube
 
11.02.14
07:40
(2) +100
6 Cube
 
11.02.14
07:41
(3) Скоростью.
7 Cube
 
11.02.14
07:43
(0) "РеализацияТоваровУслугТовары.Ссылка.Проведен = &Проведен"
Можно проще:
"РеализацияТоваровУслугТовары.Ссылка.Проведен"

"РеализацияТоваровУслугТовары.Ссылка.Контрагент.Наименование = &Ответственный"
Расстрелять!
8 Cube
 
11.02.14
07:44
+(7) Имеется ввиду расстрел за строку "РеализацияТоваровУслугТовары.Ссылка.Контрагент.Наименование = &Ответственный"
9 Kurbash
 
11.02.14
07:52
(8) да понял уже:) сделал так:

РеализацияТоваровУслугТовары.Ссылка.Контрагент = &Ответственный.

Про динамический список: можно подробнее-в правую тч заполнять всеми знаечниями без учета контрагентов а на активация строки вешать отбор по нему?
10 Kurbash
 
11.02.14
08:09
ау?
11 shpioleg
 
11.02.14
08:14
(10) Попробуй еще проверять
ИначеЕсли контрагентик=ПредыдущийАктивныйКонтрагентик Тогда
Возврат;

Насколько я помню, не рекомендуется вешать вызов запросов в событие ПриАктивизацииСтроки, потому что событие срабатывает не только когда ты курсором по строкам бегаешь.
12 Kurbash
 
11.02.14
08:17
вот, и я про тоже-мне кажется эта активация то и дело срабатывает
13 shpioleg
 
11.02.14
08:20
(12) А что кажется. Отладчик включи и играйся.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.