Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 09:34

АктивизацияСтроки В ТЧ

Автор Vasylii, 03 апр 2023, 15:28

0 Пользователей и 1 гость просматривают эту тему.

Vasylii

Сломал всю голову не выводит корректно данные при активизации строки, идет нормально если смотреть по отладке данные идут как нужно но вконце выкатывает не то значение что нужно
Процедура ТабличнаяДляАктивизации()

Для Каждого СТР из объект.Табличная Цикл

  Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
| РеализацияТоваровУслугУслуги.Номенклатура КАК Номенклатура,
| СУММА(1) КАК Количество
|ИЗ
| Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
|ГДЕ
| РеализацияТоваровУслугУслуги.Ссылка.ДоговорКонтрагента = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслугУслуги.Номенклатура
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура,
| СУММА(1)
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслугТовары.Номенклатура";

Запрос.УстановитьПараметр("Ссылка", СТР.ДоговорКонтрагента);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

объект.Систем_НоменклатураВыписываемаяВДокмуентах.Загрузить(РезультатЗапроса);
объект.Систем_НоменклатураВыписываемаяВДокмуентах.Сортировать("Количество УБЫВ");


Для каждого СтрокаТЧ из объект.Систем_НоменклатураВыписываемаяВДокмуентах  Цикл

Если СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("БП-00008475") ИЛИ
СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("БП-00011638") тогда

Для Каждого Стр Из Объект.Табличная Цикл
Если НЕ ЗначениеЗаполнено(Стр.ВидДоговораУУ) тогда
Стр.ВидДоговораУУ = Перечисления.Систем_ВидДоговораДляУУ.ОбращениеСТКО;
КонецЕсли;
КонецЦикла;

КонецЕсли;

СпособыВыставления = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("СпособВыставленияДокументов");
Если НЕ ЗначениеЗаполнено(СпособыВыставления) тогда
СпособыВыставления = Перечисления.СпособыВыставленияДокументов.Автоматически;
КонецЕсли;
КонецЦикла;

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

Запрос.УстановитьПараметр("Ссылка", СТР.ДоговорКонтрагента);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

объект.Систем_НоменклатурныеГруппыВыписываемыеВДокументах.Загрузить(РезультатЗапроса);
объект.Систем_НоменклатурныеГруппыВыписываемыеВДокументах.Сортировать("Количество УБЫВ");


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СУММА(1) КАК Количество,
| Систем_ОплатаРИРЦОплата.Ссылка.Контрагент КАК Контрагент
|ИЗ
| Документ.Систем_ОплатаРИРЦ.Оплата КАК Систем_ОплатаРИРЦОплата
|ГДЕ
| Систем_ОплатаРИРЦОплата.Договор = &Договор
|
|СГРУППИРОВАТЬ ПО
| Систем_ОплатаРИРЦОплата.Ссылка.Контрагент
|
|УПОРЯДОЧИТЬ ПО
| Количество УБЫВ";

Запрос.УстановитьПараметр("Договор", СТР.ДоговорКонтрагента);

РезультатЗапроса = Запрос.Выполнить().Выгрузить();
объект.Систем_ДокументыОплатаЧерезРИРЦ.Загрузить(РезультатЗапроса);

    КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура ТабличнаяПриАктивизацииСтроки(Элемент)

объект.Систем_НоменклатураВыписываемаяВДокмуентах.Очистить();
объект.Систем_ДокументыОплатаЧерезРИРЦ.Очистить();
объект.Систем_НоменклатурныеГруппыВыписываемыеВДокументах.Очистить();

ТД = Элементы.Табличная.ТекущиеДанные;

  ТабличнаяДляАктивизации();

КонецПроцедуры

Kvark5d

ПриАктивизацииСтроки предполагает действия зависящие от активизированной строки
в данном случае идет обработка всех строк Табличная.
надо на сервер передать данные текущей строки, и уже на сервере их обрабатывать
т.е.
ТабличнаяДляАктивизации(ТД);
в процедуре ТабличнаяДляАктивизации(ТД)
убрать обход всех строк (вот это Для Каждого СТР из объект.Табличная Цикл ... КонецЦикла)
в запросах параметр Ссылка = ТД.ДоговорКонтрагента

Vasylii

Kvark5d, так я изначально понял что должна передаваться ссылка договорконтрагентов но так оно тоже не корректно отображает

Vasylii

Kvark5d, так же прописал в параметрах тд.договорконтрагента но он находится в ТЧ и жалуется что не является объектного типа

Vasylii

Kvark5d, все разобрался спасибо за подсказку

Рейтинг@Mail.ru

Поиск