Выгрузка таблицы значений в табличную часть внешней обработки

1. 5225688vd 02.03.23 13:33 Сейчас в теме
Коллеги, добрый день всем, подскажите пожалуйста, суть в чем, в модуле формы внешней обработке присутствует таблица значений, как мне выгрузить эту ТЗ в табличную часть внешней обработки и показать выгруженные данные на форме, вот код:
СКД = РеквизитФормыВЗначение("Объект").ПолучитьМакет("МакетПравила");
    НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, НастройкиКомпоновки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТЗ = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТЗ);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТЗ", ТЗ);
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТЗ.Номенклатура КАК Номенклатура
                   |ПОМЕСТИТЬ втТЗ
                   |ИЗ
                   |    &ТЗ КАК ТЗ
                   |;
                   |
                   |////////////////////////////////////////////////////////////­////////////////////
                   |ВЫБРАТЬ
                   |    втТЗ.Номенклатура КАК Номенклатура
                   |ИЗ
                   |    втТЗ КАК втТЗ";
    Результат = Запрос.Выполнить().Выгрузить();
    
        
    Для Каждого Строка ИЗ Результат Цикл
        Таб = Объект.ТаблицаОтбораПоПравилам.Добавить();

        Таб.Номенклатура = Строка.Номенклатура.Ссылка;
        
        КонецЦикла;
Показать



По отладчику все выгружается, а на форме я не вижу данные, процедура отрабатывает по команде записать, подскажите что не так делаю?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. HanterVol 9 02.03.23 13:40 Сейчас в теме
(1)
процедура отрабатывает по команде записать,
возможно в этом проблема? может нужно перед записью?
3. 5225688vd 02.03.23 13:41 Сейчас в теме
(2)Возможно, сейчас попробую
5. Sashares 33 02.03.23 14:01 Сейчас в теме
(1)
Таб.Номенклатура = Строка.Номенклатура.Ссылка;

Не надо так делать.
8. 5225688vd 02.03.23 14:10 Сейчас в теме
(5)Почему так нельзя делать?
25. Sashares 33 02.03.23 14:30 Сейчас в теме
(8)Почему нельзя? Можно.
Еще можно так:
Таб.Номенклатура = Строка.Номенклатура.Ссылка.Ссылка.Ссылка.Ссылка.Ссылка; 
27. karamazoff 124 02.03.23 14:35 Сейчас в теме
(25)Крутяк!!!! я бы еще пару ссылок добавил
9. spacecraft 02.03.23 14:13 Сейчас в теме
(1) э... я правильно понял, что ТЗ загружаете в запрос, чтобы эти же данные получить из запроса в виде ТЗ?
Зачем?
10. 5225688vd 02.03.23 14:15 Сейчас в теме
(9)Потому-что в ТЗ которая получается из компоновщика в ней не только номенклатура, а мне нужна только номенклатура
11. spacecraft 02.03.23 14:16 Сейчас в теме
(10) Скопировать чем не устаивает?
13. 5225688vd 02.03.23 14:17 Сейчас в теме
14. spacecraft 02.03.23 14:18 Сейчас в теме
(13) НовТЗ = ТЗ.Скопировать(,"Номенклатура");
12. 5225688vd 02.03.23 14:16 Сейчас в теме
(9)Например отбор компонуется по реквизиту номенклатуры, и в ТЗ попадают эти реквизиты, плюс отбор сгруппированный
4. 5225688vd 02.03.23 13:46 Сейчас в теме
6. karamazoff 124 02.03.23 14:04 Сейчас в теме
(4)есть,во первых так
ЭтаФорма.Записать();
ПоказатьЗначение(,Объект.Ссылка);

во вторых загнать тз из запроса в цикл, и все из него перегнать
7. 5225688vd 02.03.23 14:10 Сейчас в теме
(6)Можно поподробнее? Не совсем понял, ЭтаФормаЗаписать(); у меня табличная часть на другой форме находится
15. 5225688vd 02.03.23 14:18 Сейчас в теме
Еще раз, во внешней обработке две формы, есть основная и дополнительная, в дополнительной форме компоновщик из которого я и получаю ТЗ, так вот эту ТЗ мне надо выгрузить в табличную часть обработки и показать выгруженные данные на основной форме
17. spacecraft 02.03.23 14:20 Сейчас в теме
(15) как хотите никак. Каждая форма в обработке это отдельная сущность со своим объектом и соответственно со своими табличными частями. При открытии формы создается новый объект обработки.
Только передачей значений из одной формы в другую.
karamazoff; +1 Ответить
18. 5225688vd 02.03.23 14:24 Сейчас в теме
(17)Не подскажите как это сделать?
20. spacecraft 02.03.23 14:26 Сейчас в теме
(18) как открываете формы?
Из основной открываете дополнительную?
Передать ТЗ нужно из дополнительной при ее закрытии?
21. 5225688vd 02.03.23 14:27 Сейчас в теме
(20)
Из основной открываете дополнительную?

Да из основной открываю дополнительную
26. spacecraft 02.03.23 14:33 Сейчас в теме
(21) вариантов много.
Можно использовать параметр формы Владелец. В доп форме это будет основная форма, откуда ее открыли, если ее указать как владелец при открытии доп формы.
Можно данные поместить во временное хранилище и передавать только адрес.
Можно передавать в параметре метода Закрыть из доп формы и ловить в основной.
Вариантов масса.
28. 5225688vd 02.03.23 14:36 Сейчас в теме
(26)Будьте добры, хотя бы один вариант поподробнее описать, очень надо
29. karamazoff 124 02.03.23 14:39 Сейчас в теме
(28)Ну уже-же сказали, коли ручки не умеют, выгружаешь результат запроса в тз и через цикл переводишь его куда нада
30. spacecraft 02.03.23 14:52 Сейчас в теме
(28) см. пример

в основной форме:
&НаКлиенте
Процедура КомандаОткрыть(Команда)
    ОткрытьФорму("ВнешняяОбработка.ТестПередачиДанныхМеждуФормами.Форма.Форма1",,ЭтаФорма,,,,Новый ОписаниеОповещения("ПриЗакрытииДопФормы", ЭтаФорма),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытииДопФормы(Результат, ДопПараметры) Экспорт
    Если ЭтоАдресВременногоХранилища(Результат) Тогда
        ЗагрузитьТЧ(Результат);
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьТЧ(Адрес)
    Объект.ТЧ1.Загрузить(ПолучитьИзВременногоХранилища(Адрес));
КонецПроцедуры
Показать


В доп. форме:
&НаКлиенте
Процедура КомандаЗакрыть(Команда)
    Закрыть(ПоместитьВоВремХран());
КонецПроцедуры

&НаСервере
Функция ПоместитьВоВремХран()
    Возврат ПоместитьВоВременноеХранилище(ТЗ1.Выгрузить(,"Реквизит1"));
КонецФункции
Показать
Прикрепленные файлы:
ТестПередачиДанныхМеждуФормами.epf
31. 5225688vd 02.03.23 14:57 Сейчас в теме
(30)Спасибо вам огромное! Дай бог вам здоровья!
23. 5225688vd 02.03.23 14:29 Сейчас в теме
(20)
Передать ТЗ нужно из дополнительной при ее закрытии?

Можно при закрытии, не принципиально, самое главное чтобы данные отображались
19. karamazoff 124 02.03.23 14:26 Сейчас в теме
(17)заведите в обработке реквизит ТЗ, туда сохраняйте ваши стразы, а потом используйте их как вам надо
22. spacecraft 02.03.23 14:27 Сейчас в теме
(19) у двух форм обработки будут свои данные в реквизитах и одна форма ничего не будет знать о реквизитах из другой формы.
24. karamazoff 124 02.03.23 14:30 Сейчас в теме
(22)ну, вообще-то можно, но здесь я учить не буду без обид!
16. karamazoff 124 02.03.23 14:19 Сейчас в теме
ну вот еще ОповеститьОбИзменении и ссылка на объект
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот