реквизит Объекта (тип ТаблицаЗначений) преобразовывает в тип ДанныеФормыКоллекция

1. egorover 113 01.06.15 13:46 Сейчас в теме
Обработка, в модуле объекта присваиваю значение реквизиту (тип ТаблицаЗначений), хочу его использовать в модуле управляемой формы, а там уже ДанныеФормыКоллекция, и никакие методы нельзя применить, есть ли из данной ситуации какой либо выход?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ture 608 01.06.15 13:52 Сейчас в теме
(1) egorover, там на клиенте есть похожие методы.

Вам какого не хватило?
4. egorover 113 01.06.15 14:01 Сейчас в теме
(2) ture, ооо приветствую Вас...
переделываю с 8.2 на 8.3, в модуле формы прописана расшифровка из таблицы, заполнение расшифровок этой таблицы в модуле объекта

РасшПериод = тт_пер.Скопировать(); //копирую ТаблицуЗначений тт_пер в РасшПериод

теперь в модуле формы хочу обратится к реквизиту объекта РасшПериод, но он уже ДанныеФормыКоллекция

и методы типа фф=РасшПериод.Найти(Отб.Период); уже не действуют
5. Meteorage 21 01.06.15 14:03 Сейчас в теме
(4) egorover, Объект.РасшПериод.... пробуй
10. Boneman 301 01.06.15 14:15 Сейчас в теме
(4) egorover,
Чтобы получить нормальную таблицу значений,
делаем примерно следующее
&НаСервере
Процедура ОбработатьТЗ()
    ТЗ = ДанныеФормыВЗначение(ИмяРеквизитаТипаТаблицаЗначений, Тип("ТаблицаЗначений"));
    // или
    ТЗ = РеквизитФормыВЗначение("ИмяРеквизитаТипаТаблицаЗначений");
// вызовем функцию, обрабатывающую/изменяющую нашу ТЗ 
    Результат = ФункцияОбработатьНашуТЗ(ТЗ); 
    // и обработанную ТЗ обратно на форму
    ЗначениеВРеквизитФормы(Результат, "ИмяРеквизитаТипаТаблицаЗначений");
КонецПроцедуры
Показать
12. egorover 113 01.06.15 14:30 Сейчас в теме
(10) Boneman, Да делаю так ТЗ = ДанныеФормыВЗначение("РасшПериод"), Несоответствие типов (параметр номер '1')
&НаСервере
Процедура ВывестиТЗНаФормуРеквизит()
	
	ТекущаяТаблица = Новый ТаблицаЗначений;
	ТекущаяТаблица = РеквизитФормыВЗначение(Объект.Расш); 
	
	//ВывестиТЗНаФорму(ТекущаяТаблица);
	
КонецПроцедуры
Показать
13. Boneman 301 01.06.15 14:41 Сейчас в теме
(12) egorover, не путай операторы.
Я же даже синтаксис привел.
РеквизитФормы в значение - там реквизит надо в кавычках, оно даже само выбирается.
А двнные формы в значение- там обязательно надо указывать тип.
и новый не надо, оно само заполнится.
15. egorover 113 01.06.15 15:13 Сейчас в теме
(13) Boneman,
ТекущаяТаблица = Новый ТаблицаЗначений;
ТекущаяТаблица = РеквизитФормыВЗначение("Объект.Расш");

так то же пустая ТекущаяТаблица
17. Boneman 301 01.06.15 15:17 Сейчас в теме
(15) egorover, зачем лепишь ТекущаяТаблица = Новый ТаблицаЗначений;? Я же в(13) еще писал.
вообще не нужна эта строка!
У тебя в принципе
ТекущаяТаблица = РеквизитФормыВЗначение("Объект.Расш"); вернет ТЗ, со всеми колонками, как оно у тебя на форме.
14. egorover 113 01.06.15 15:09 Сейчас в теме
(10) Boneman, ТекущаяТаблица = ДанныеФормыВЗначение(Объект.Расш, Тип("ТаблицаЗначений"));
ТекущаяТаблица получается пустая
3. Meteorage 21 01.06.15 14:00 Сейчас в теме
(1) egorover, можно же к контексте сервера писать: <ИмяТЗ>.Добавить() и так далее, что мешает?
6. egorover 113 01.06.15 14:06 Сейчас в теме
(3) Meteorage, да я уже с клиента обращаюсь к реквизиту РасшПериод, 1С уходит в исключение

&НаСервере
Функция тт_расшНайтиСтроки(Знач СтруктураНайти)

Рез = Неопределено;

Рез = Объект.РасшПериод.НайтиСтроки(СтруктураНайти);

Возврат Рез;


КонецФункции
7. Meteorage 21 01.06.15 14:08 Сейчас в теме
потому что Найти() доступно: Сервер, толстый клиент, внешнее соединение.
Задача то какая стоит? тебе заполнить эту таблицу значений нужно или что?
8. egorover 113 01.06.15 14:08 Сейчас в теме
проверяю в модуле объекта при копировании РасшПериод=тт_пер.Скопировать(); все передается
9. egorover 113 01.06.15 14:11 Сейчас в теме
ТаблицаЗначений РасшПериод заполняется при сформировать отчет, теперь я получил отчет, нажимаю на области ТабличногоДокумента и получаю расшифровку в виде другого отчета
11. egorover 113 01.06.15 14:25 Сейчас в теме
в зависимости где нажал там и обращаюсь к значениям в Объект.РасшПериод
16. egorover 113 01.06.15 15:15 Сейчас в теме
РеквизитФормыВЗначение("Объект.Расш"); - вот тут реквизит чего?
19. Boneman 301 01.06.15 15:19 Сейчас в теме
(16) egorover, реквизит формы, типа "таблицаЗначений".
В УФ, на форме, это не есть натуральная таблица значений, а ее интерпретация.
Для того тебе и надо ее преобразовать в нормальную ТЗ, а дальше с ней и работать.
21. egorover 113 01.06.15 15:26 Сейчас в теме
(19) Boneman, реквизит формы, типа "таблицаЗначений" - где путь к данным Объект.Расш?

ТекущаяТаблица = РеквизитФормыВЗначение("ОбъектРасш");// т.е. "ОбъектРасш" реквизит формы, который Объект.Расш

по причине:
Недопустимое значение параметра (параметр номер '1')
18. egorover 113 01.06.15 15:19 Сейчас в теме
20. Boneman 301 01.06.15 15:22 Сейчас в теме
(18) egorover,
покажи скриншот, своих реквизитов формы.
Объекта или Формы?

блин, как объяснить то.
Реквизит формы, это - то, что ты видишь на форме, на вкладке реквизита. А вот путь к данным у них может быть как к объекту, так и просто так.
Т.е. и "Объект.Реквизит", и просто добавленный на форму "реквизит" - оба они являются реквизитами формы.

А вот, если будешь программно к объекту обращатся, то там уже будут только реквизиты объекта и все.
22. egorover 113 01.06.15 15:30 Сейчас в теме
(20) Boneman,
Прикрепленные файлы:
23. Boneman 301 01.06.15 15:37 Сейчас в теме
(22) egorover, на твоем скрине я не вижу самого главного, расположения в дереве твоего реквизита.
Если в подчинении "Объект", то куда ты дел точку ?
Вообще не понимаю как можно с таким примитивным синтаксисом не разобраться, оно же все подсказывает, и помогает заполнять.
см.скрин
Прикрепленные файлы:
24. egorover 113 01.06.15 15:42 Сейчас в теме
(23) Boneman, он в подчинении Объекту,
так тоже не работает РеквизитФормыВЗначение("Объект.Расш");
Вообще не понимаю как можно с таким примитивным синтаксисом не разобраться, оно же все подсказывает, и помогает заполнять - сам не понимаю, кстати да, - помогает...
25. egorover 113 01.06.15 15:52 Сейчас в теме
в модуле объекта заполняет, а при
ТЗ = РеквизитФормыВЗначение("Объект.Расш"); получаем пустую таблицу значений
Прикрепленные файлы:
26. Boneman 301 01.06.15 15:58 Сейчас в теме
(25) egorover, странно.
Ты это делаешь в модуле формы, в процедуре с директивой &НаСервере, и нет никаких других переменных с таким же именем ?
nadezhda075; +1 Ответить
29. egorover 113 01.06.15 16:09 Сейчас в теме
(26) Boneman, заполняю в модуле объекта с директивой
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
черт там же функция

	РасшПериод=тт_пер.Скопировать();
	Расш=тт_рег.Скопировать();

	
	Возврат Таб;
КонецФункции
31. Boneman 301 01.06.15 16:23 Сейчас в теме
(29) egorover, да при чем тут модуль объекта ?
Полное ощущение что мы на разных языках говорим.
тебе надо делать.
По пунктам
1. Получаем в модуле ФОРМЫ на СЕРВЕРЕ, таблицу значений, из данных формы в объект прикладного типа (таблицу значений), способом как уже разжевано выше.
2. Передаем эту таблицу значений, в процедуру модуля ОБЪЕКТА, и делаем с ней все что нужно
3. Возвращаем результат на ФОРМУ, и в ее модуле, НА СЕРВЕРЕ, передаем ТЗ обратно в данные формы.

в каком именно месте затык ?
32. egorover 113 01.06.15 16:47 Сейчас в теме
(31) Boneman,
1. таблица значений Расш, реквизит Объекта, своего рода хранилище
2. из ФОРМЫ вызываем функцию модуля ОБЪЕКТА он возвращает (Таб) результатов отчета, и в ней же (функции модуля ОБЪЕКТА ) делаем заполнение таблица значений Расш
3. теперь получили данные (Таб) на ФОРМЕ, но не можем получить таблица значений Расш.
33. Boneman 301 01.06.15 16:56 Сейчас в теме
(32) egorover, ты хоть вчитайся что тебе пишут, и как нужно применять методы.
Иван в (30) уже тебе кодом написал, как сделать мои 3 пункта.

Данные формы, в модуле объекта, ты не получишь никогда, потому-что формы там просто нет и не может быть.
Туда ты должен передавать готовые для переваривания объекты.

Изучай мат.часть, чесн. говоря - все что можно было рассказать по этой теме, уже в топике изложено. Я даже затрудняюсь что-либо добавить,
осталось только взять и сделать.
34. egorover 113 01.06.15 16:59 Сейчас в теме
(33) Boneman, IvanAlekseev будем делать, спасибо за терпение
27. IvanAlekseev 78 01.06.15 16:06 Сейчас в теме
(25) после заполнения в модуле обработки вы не использовали "обратный" метод "ЗначениеВРеквизитФормы(<Значение>, <ИмяРеквизита>)" для реквизита формы "Объект", поэтому "Объект" (коллекция формы) хранит старые значения (незаполненную коллекцию табличной части).
28. IvanAlekseev 78 01.06.15 16:09 Сейчас в теме
(25) egorover, если нет обратного преобразования, то надо использовать:

Тз = Объект.Расш.Выгрузить();
30. IvanAlekseev 78 01.06.15 16:20 Сейчас в теме
+ (28) точнее надо использовать название переменной объекта, с помощью которой вызывался метод модуля объекта: например,

Процедура Заполнение()

ТзРасш = РеквизитФормыВЗначение("Объект.Расш");
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.ЗаполнитьТЧПоТз(ТзРасш);



ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект");
ТЗ = РеквизитФормыВЗначение("Объект.Расш");
или
ТЗ = обработкаОбъект.Расш.Выгрузить();

КонецПроцедуры
Показать
Nataly_g; +1 Ответить
Оставьте свое сообщение

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