Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Не заполняется объект из обработки заполнения ТЧ

↓ [Serg_1960, 14.05.18 - 09:54]
Не заполняется объект из обработки заполнения ТЧ
Я
   егаис
 
14.05.18 - 08:58
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
    Если ИдентификаторКоманды = "КорректировкаПени" Тогда
        Режим = РежимДиалогаВопрос.ДаНет;
        Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопросОЗаполненииТЧ", ЭтаФорма, Параметры);
        ПоказатьВопрос(Оповещение, "Заполнить табличную часть?", Режим, 0); 
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПослеОтветаНаВопросОЗаполненииТЧ(Результат, Параметры) Экспорт
    
    Если Результат = КодВозвратаДиалога.Нет Тогда
        Возврат;
    КонецЕсли;
    
    Если Не ВладелецФормы = Неопределено Тогда
        НовыйОбъект = ВладелецФормы.Объект;
    Иначе    
        ВладелецФормы = ОткрытьФорму("Документ.КВП_КорректировкаНачислений.Форма.ФормаДокумента", Новый Структура("Ключ", Объект.Ссылка));
        НовыйОбъект = ВладелецФормы.Объект;
    КонецЕсли;
    ВыполнитьРасчетИЗаполнениеНаСервере(НовыйОбъект);
    КопироватьДанныеФормы(НовыйОбъект, ВладелецФормы.Объект);
    
КонецПроцедуры

&НаСервере
Процедура ВыполнитьРасчетИЗаполнениеНаСервере(ОбъектСТЧ)
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    УПЖКХ_НачисленияОбороты.Услуга КАК Услуга,
        |    УПЖКХ_НачисленияОбороты.ЛицевойСчет КАК ЛицевойСчет,
        |    УПЖКХ_НачисленияОбороты.Договор КАК Договор,
        |    УПЖКХ_НачисленияОбороты.СуммаНачисленияОборот КАК СуммаНачисленияОборот,
        |    УПЖКХ_НачисленияОбороты.МесяцНачисления КАК МесяцНачисления,
        |    УПЖКХ_НачисленияОбороты.ВидНачисления КАК ВидНачисления
        |ИЗ
        |    РегистрНакопления.УПЖКХ_Начисления.Обороты(
        |            &ДатаНачала,
        |            &ДатаОкончания,
        |            Период,
        |            Организация = &Организация
        |                И ЛицевойСчет = &ЛицевойСчет
        |                И РазделУчета = ЗНАЧЕНИЕ(Перечисление.УПЖКХ_РазделыУчета.Пени)) КАК УПЖКХ_НачисленияОбороты";
    
    Запрос.УстановитьПараметр("ДатаНачала", ОбъектСТЧ.ДатаНач);
    Запрос.УстановитьПараметр("ДатаОкончания", ОбъектСТЧ.ДатаКон);
    Запрос.УстановитьПараметр("ЛицевойСчет", ОбъектСТЧ.Объект);
    Запрос.УстановитьПараметр("Организация", ОбъектСТЧ.Организация);
    
    ТаблицаНачислений =  Запрос.Выполнить().Выгрузить();
    Для Каждого СтрокаНачисления Из ТаблицаНачислений Цикл
        НоваяСтрока = ОбъектСТЧ.Корректировки.Добавить();
        НоваяСтрока.Услуга = СтрокаНачисления.Услуга; 
        НоваяСтрока.ЛицевойСчет = СтрокаНачисления.ЛицевойСчет; 
        НоваяСтрока.МесяцНачисления = СтрокаНачисления.МесяцНачисления; 
        НоваяСтрока.ВидНачисления = СтрокаНачисления.ВидНачисления; 
        НоваяСтрока.СуммаПени = - СтрокаНачисления.СуммаНачисленияОборот; 
    КонецЦикла;    
 
КонецПроцедуры    



вот здесь
    КопироватьДанныеФормы(НовыйОбъект, ВладелецФормы.Объект);
НовыйОбъект имеет заполненную табличную часть, проверил, но почему-то не передается в форму владельца
Что упустил?
 
 
   DrShad
 
1 - 14.05.18 - 09:23
Окно упустил
   DrShad
 
2 - 14.05.18 - 09:24
//Если пользователь дал разрешение на продолжение, то начнем перебирать все

        //документы, у которых мы планируем заполнить табличную часть

        Для каждого Элемент из ОбъектыНазначенияМассив Цикл

            //Зададим ключ поиска документа, из которого вызвана данная обработка,

            //чтобы получить ссылку на редактирумый документ в удобном виде для

            //функции ОткрытьФорму()

            КлючПоиска = Новый Структура("Ключ", Элемент);

            //Но нам не надо открывать новую форму (окно) для изменяемого документа, а

            //Нам надо все изменения показать в уже открытых у клиента окнах

            Окна = ПолучитьОкна();
            Для каждого Окно из Окна Цикл

                //Окно изменяемого документа будет точно не основным, а вспомогательным, поэтому

                //сразу пропускаем основное окно, а далее идем на не очень хороший способ поиска открытого окна

                //изменяемого документа. Мы просто переберем все окна, а в заголовке, которых будет встречаться

                //Наименование, номер и дата нужного документа - будем изменять

                Если НЕ Окно.Основное
                    И Найти(Окно.Заголовок, Элемент) Тогда
                    //Передадим ключ поиска (можно сказать ссылку на объект) и данные о найденном открытом окне

                    //в функцию ОткрытьФорму()

                    //Код находится в цикле на тот случай, если открытых окон изменяемого документа больше одного

                    Форма = ОткрытьФорму("Документ.ЗаказКлиента.Форма.ФормаДокумента",КлючПоиска,,,Окно);

                    //Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную

                    //В объекте содержатся все реквизиты (элементы) формы

                    НовыйОбъект = Форма.Объект;
                    НовыйОбъект.Товары.Очистить();

                    //Мы помещаем объект формы в переменную,

                    //так как должны передать её в процедуру на сервере,

                    //где нельзя изменять объект формы, зато можно править переменную содержащую его

                    ЗаполнитьОбъект(НовыйОбъект, ВыбранныЗнВ);

                    //После выполнения процедуры на сервере мы получаем изменную переменную НовыйОбъект,

                    //которую необходимо передать в уже полученную нами форму

                    КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
                    Форма.АвтоТест_ЗаполнитьЦеныПоСоглашению(Неопределено);
                КонецЕсли;
            КонецЦикла;

        КонецЦикла;
   DrShad
 
3 - 14.05.18 - 09:25
у меня так работает
не помню уже где нашел, но комментарии в коде как нельзя кстати
   Franchiser
 
4 - 14.05.18 - 09:30
Не владелецформы= неопределенно ???
   Serg_1960
 
5 - 14.05.18 - 09:38
Понедельник, утро...

ВладелецФормы = ОткрытьФорму("Документ.КВП_КорректировкаНачислений.Форма.ФормаДокумента", Новый Структура("Ключ", Объект.Ссылка));
   Serg_1960
 
6 - 14.05.18 - 09:53
(3) Если Вы не против, то перефразирую применительно к ветке автора:

Не помню уже где нашел, но комментарии к коду как нельзя кстати:
"Вчера асфальт поднялся вертикально и ударил по морде. Пришлось спать стоя".

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует