|
Не заполняется объект из обработки заполнения ТЧ 🠗 (Serg_1960 14.05.2018 09:54) | ☑ | ||
---|---|---|---|---|
0
егаис
14.05.18
✎
08:58
|
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт Если ИдентификаторКоманды = "КорректировкаПени" Тогда Режим = РежимДиалогаВопрос.ДаНет; Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопросОЗаполненииТЧ", ЭтаФорма, Параметры); ПоказатьВопрос(Оповещение, "Заполнить табличную часть?", Режим, 0); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеОтветаНаВопросОЗаполненииТЧ(Результат, Параметры) Экспорт Если Результат = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; Если Не ВладелецФормы = Неопределено Тогда НовыйОбъект = ВладелецФормы.Объект; Иначе ВладелецФормы = ОткрытьФорму("Документ.КВП_КорректировкаНачислений.Форма.ФормаДокумента", Новый Структура("Ключ", Объект.Ссылка)); НовыйОбъект = ВладелецФормы.Объект; КонецЕсли; ВыполнитьРасчетИЗаполнениеНаСервере(НовыйОбъект); КопироватьДанныеФормы(НовыйОбъект, ВладелецФормы.Объект); КонецПроцедуры &НаСервере Процедура ВыполнитьРасчетИЗаполнениеНаСервере(ОбъектСТЧ) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | УПЖКХ_НачисленияОбороты.Услуга КАК Услуга, | УПЖКХ_НачисленияОбороты.ЛицевойСчет КАК ЛицевойСчет, | УПЖКХ_НачисленияОбороты.Договор КАК Договор, | УПЖКХ_НачисленияОбороты.СуммаНачисленияОборот КАК СуммаНачисленияОборот, | УПЖКХ_НачисленияОбороты.МесяцНачисления КАК МесяцНачисления, | УПЖКХ_НачисленияОбороты.ВидНачисления КАК ВидНачисления |ИЗ | РегистрНакопления.УПЖКХ_Начисления.Обороты( | &ДатаНачала, | &ДатаОкончания, | Период, | Организация = &Организация | И ЛицевойСчет = &ЛицевойСчет | И РазделУчета = ЗНАЧЕНИЕ(Перечисление.УПЖКХ_РазделыУчета.Пени)) КАК УПЖКХ_НачисленияОбороты"; Запрос.УстановитьПараметр("ДатаНачала", ОбъектСТЧ.ДатаНач); Запрос.УстановитьПараметр("ДатаОкончания", ОбъектСТЧ.ДатаКон); Запрос.УстановитьПараметр("ЛицевойСчет", ОбъектСТЧ.Объект); Запрос.УстановитьПараметр("Организация", ОбъектСТЧ.Организация); ТаблицаНачислений = Запрос.Выполнить().Выгрузить(); Для Каждого СтрокаНачисления Из ТаблицаНачислений Цикл НоваяСтрока = ОбъектСТЧ.Корректировки.Добавить(); НоваяСтрока.Услуга = СтрокаНачисления.Услуга; НоваяСтрока.ЛицевойСчет = СтрокаНачисления.ЛицевойСчет; НоваяСтрока.МесяцНачисления = СтрокаНачисления.МесяцНачисления; НоваяСтрока.ВидНачисления = СтрокаНачисления.ВидНачисления; НоваяСтрока.СуммаПени = - СтрокаНачисления.СуммаНачисленияОборот; КонецЦикла; КонецПроцедуры вот здесь КопироватьДанныеФормы(НовыйОбъект, ВладелецФормы.Объект); НовыйОбъект имеет заполненную табличную часть, проверил, но почему-то не передается в форму владельца Что упустил? |
|||
1
DrShad
14.05.18
✎
09:23
|
Окно упустил
|
|||
2
DrShad
14.05.18
✎
09:24
|
//Если пользователь дал разрешение на продолжение, то начнем перебирать все
//документы, у которых мы планируем заполнить табличную часть Для каждого Элемент из ОбъектыНазначенияМассив Цикл //Зададим ключ поиска документа, из которого вызвана данная обработка, //чтобы получить ссылку на редактирумый документ в удобном виде для //функции ОткрытьФорму() КлючПоиска = Новый Структура("Ключ", Элемент); //Но нам не надо открывать новую форму (окно) для изменяемого документа, а //Нам надо все изменения показать в уже открытых у клиента окнах Окна = ПолучитьОкна(); Для каждого Окно из Окна Цикл //Окно изменяемого документа будет точно не основным, а вспомогательным, поэтому //сразу пропускаем основное окно, а далее идем на не очень хороший способ поиска открытого окна //изменяемого документа. Мы просто переберем все окна, а в заголовке, которых будет встречаться //Наименование, номер и дата нужного документа - будем изменять Если НЕ Окно.Основное И Найти(Окно.Заголовок, Элемент) Тогда //Передадим ключ поиска (можно сказать ссылку на объект) и данные о найденном открытом окне //в функцию ОткрытьФорму() //Код находится в цикле на тот случай, если открытых окон изменяемого документа больше одного Форма = ОткрытьФорму("Документ.ЗаказКлиента.Форма.ФормаДокумента",КлючПоиска,,,Окно); //Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную //В объекте содержатся все реквизиты (элементы) формы НовыйОбъект = Форма.Объект; НовыйОбъект.Товары.Очистить(); //Мы помещаем объект формы в переменную, //так как должны передать её в процедуру на сервере, //где нельзя изменять объект формы, зато можно править переменную содержащую его ЗаполнитьОбъект(НовыйОбъект, ВыбранныЗнВ); //После выполнения процедуры на сервере мы получаем изменную переменную НовыйОбъект, //которую необходимо передать в уже полученную нами форму КопироватьДанныеФормы(НовыйОбъект, Форма.Объект); Форма.АвтоТест_ЗаполнитьЦеныПоСоглашению(Неопределено); КонецЕсли; КонецЦикла; КонецЦикла; |
|||
3
DrShad
14.05.18
✎
09:25
|
у меня так работает
не помню уже где нашел, но комментарии в коде как нельзя кстати |
|||
4
Franchiser
гуру
14.05.18
✎
09:30
|
Не владелецформы= неопределенно ???
|
|||
5
Serg_1960
14.05.18
✎
09:38
|
Понедельник, утро...
ВладелецФормы = ОткрытьФорму("Документ.КВП_КорректировкаНачислений.Форма.ФормаДокумента", Новый Структура("Ключ", Объект.Ссылка)); |
|||
6
Serg_1960
14.05.18
✎
09:53
|
(3) Если Вы не против, то перефразирую применительно к ветке автора:
Не помню уже где нашел, но комментарии к коду как нельзя кстати: "Вчера асфальт поднялся вертикально и ударил по морде. Пришлось спать стоя". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |