Записать данные в реквизит формы

1. denis-sqluev 24.05.19 14:25 Сейчас в теме
Здравствуйте!

УТ 11.4 клиент-сервер
делаю внешнюю обработку, она создает файл экселя и заполняет списком номенклатуры.
Файлик создается на клиенте, не могу понять как полученные данные с сервера и передать на клиент.

На форме создал реквизит "ВремТабЗнач" с типом ТаблицаЗначений. У него добавил колонку "Код" с типом Строка неограниченной длины.

Вызываю процедуру на сервере, делаю запрос к данным. Далее записываю в реквизит формы:
ЗапросНом = Новый Запрос;
ЗапросНом.Текст = "ВЫБРАТЬ
| СпрНоменклатура.Код КАК Код
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура";
РезультатЗапроса = ЗапросНом.Выполнить().Выбрать();

Пока РезультатЗапроса.Следующий() Цикл
СТР = ВремТабЗнач.Добавить();
СТР.Код = Строка(РезультатЗапроса.Код);
КонецЦикла;

и далее на клиенте не могу понять как прочитать данные из этого реквизита. делаю так
Для Каждого СТР Из ВремТабЗнач Цикл
Лист1.Cells (СтрокаЛиста,1).Value = СТР.Код;
КонецЦикла;

РеквизитФормыВЗначение("ВремТабЗнач") пробовал, но он только на сервере выполняется.

Может есть лучше способ сделать?

Спасибо!
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
7. SlavaKron 24.05.19 14:44 Сейчас в теме
(6) Возможно, результат запроса пустой. По приведённому коду всё должно работать.
8. tusv 211 24.05.19 14:52 Сейчас в теме
(1)
ВремТабЗнач.Загрузить(ЗапросНом.Выполнить().Выгрузить());
12. independ 1520 24.05.19 15:12 Сейчас в теме
(10) в отладчике в конце процедуры ЗаполнитьНоменклатуру проверьте что возвращает ЗапросНом.Выполнить.Выгрузить(); в окне ВычислитьВыражение ALT+F9
15. tusv 211 24.05.19 15:55 Сейчас в теме
(13)НаСервереБезКонтекста не доступны. А так все загружается
&НаСервере
Процедура ЗаполнитьТЧНаСервере()
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Номенклатура.Код КАК Код
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура";
	
	Тч.Загрузить(Запрос.Выполнить().Выгрузить());

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

&НаКлиенте
Процедура ЗаполнитьТЧ(Команда)
	ЗаполнитьТЧНаСервере();
КонецПроцедуры
Показать
Прикрепленные файлы:
темп.epf
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. tusv 211 24.05.19 14:52 Сейчас в теме
(1)
ВремТабЗнач.Загрузить(ЗапросНом.Выполнить().Выгрузить());
10. denis-sqluev 24.05.19 15:05 Сейчас в теме
(8)вставил это в процедуру по запросу номенклатуры, но на клиенте пусто
делаю Вычислить выражение для ВремТабЗнач и пусто

может обращаюсь неправильно к данным
12. independ 1520 24.05.19 15:12 Сейчас в теме
(10) в отладчике в конце процедуры ЗаполнитьНоменклатуру проверьте что возвращает ЗапросНом.Выполнить.Выгрузить(); в окне ВычислитьВыражение ALT+F9
2. SlavaKron 24.05.19 14:29 Сейчас в теме
Всё правильно делаете. Что именно не получается?
3. denis-sqluev 24.05.19 14:32 Сейчас в теме
(2)не могу понять как прочитать данные из этого реквизита на клиенте. мне нужно их записать в эксель. То что делаю не работает.

ЗапросНоменклатуры(); - это вызов процедуры для получения списка номенклатуры и записи в реквизит формы.
далее пишу:
Для Каждого СТР Из ВремТабЗнач Цикл
Лист1.Cells (СтрокаЛиста,1).Value = СТР.Код;
КонецЦикла;

и этот кусок кода отладчик пропускает, то ли данных нет, то ли читаю не так
4. denis-sqluev 24.05.19 14:34 Сейчас в теме
(2)может из-за того, что реквизит имеет тип ДанныеФормыКоллекция
Прикрепленные файлы:
5. SlavaKron 24.05.19 14:38 Сейчас в теме
(4) Всё правильно, ДанныеФормыКоллекция и должно быть. Процедура ЗапросНоменклатуры() точно работает с реквизитом формы, а не с локальной переменной? Директива ЗапросНоменклатуры() &НаСервере?
6. denis-sqluev 24.05.19 14:41 Сейчас в теме
(5)да, это реквизит формы, не реквизит обработки.
и на картинке код, который мне нужен (выше в вопросе указал упрощенный вариант)
Прикрепленные файлы:
7. SlavaKron 24.05.19 14:44 Сейчас в теме
(6) Возможно, результат запроса пустой. По приведённому коду всё должно работать.
9. denis-sqluev 24.05.19 15:02 Сейчас в теме
(7)запрос отдельно проверял, данные есть
Прикрепленные файлы:
11. alex-l19041 8 24.05.19 15:06 Сейчас в теме
(9) сделайте ВремТабЗнач реквизитом Объекта и заполняйте на сервере
13. alex-l19041 8 24.05.19 15:13 Сейчас в теме
(6) на сервере реквизиты формы не доступны
14. denis-sqluev 24.05.19 15:17 Сейчас в теме
(13)а как тогда лучше передать данные запроса на клиент?
15. tusv 211 24.05.19 15:55 Сейчас в теме
(13)НаСервереБезКонтекста не доступны. А так все загружается
&НаСервере
Процедура ЗаполнитьТЧНаСервере()
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Номенклатура.Код КАК Код
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура";
	
	Тч.Загрузить(Запрос.Выполнить().Выгрузить());

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

&НаКлиенте
Процедура ЗаполнитьТЧ(Команда)
	ЗаполнитьТЧНаСервере();
КонецПроцедуры
Показать
Прикрепленные файлы:
темп.epf
16. schweigen 24.05.19 15:58 Сейчас в теме
Попробуй так
&НаКлиенте
Процедура ЗаполнитьТЗ(Команда)
	ЗаполнитьВремТабЗначНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьВремТабЗначНаСервере()
	
	ТЗ = РеквизитФормыВЗначение("ВремТабЗнач", Тип("ТаблицаЗначений"));	
	ЗаполнитьТЗ(ТЗ);
	ЗначениеВРеквизитФормы(ТЗ, "ВремТабЗнач");
	
КонецПроцедуры
Показать


еще можно сформировать тз на сервере и вернуть его на клиент, предварительно упаковав в массив или структуру. наверно.
alex-l19041; +1 Ответить
17. denis-sqluev 27.05.19 07:55 Сейчас в теме
спасибо всем за помощь!

сделал через реквизит формы
заполнение реквизита ВремТабЗнач.Загрузить(ЗапросНом.Выполнить().Выгрузить());
и с параметром запроса была ошибка
Прикрепленные файлы:
ВыгрузкаВЭксель.epf
Оставьте свое сообщение

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