|
Вывод результатов запроса в файл (1C:Предприятие 8.2) | ☑ | ||
---|---|---|---|---|
0
dp118m
08.08.11
✎
17:20
|
Здравствуйте!
Мне нужно сделать запрос (все элементы справочника), а потом пройтись по результатам и каждый из них выписать в файл. Насколько я понимаю, выполнение запроса происходит на сервере, а запись в файл - на клиенте. Вот это не работает: НАЧАЛО КОДА &НаКлиенте Процедура ExportToDot(Команда) // Когда пользователь нажимает на кнопку, вызывается процедура ExportToDot Цели = КонцепцияДляЭкспортаВДот(); // Здесь будет цикл для вывода результатов запроса (переменная Цели) в текстовый файл. КонецПроцедуры &НаСервереБезКонтекста Функция КонцепцияДляЭкспортаВДот() Результат = Справочники.Концепция.Выбрать(); Возврат Результат; // Здесь вылетает ошибка - неправильный тип данных (непригоден для передачи на клиент) КонецФункции КОНЕЦ КОДА Вопрос: Как мне сделать запрос типа "SELECT * FROM Справочник" таким образом, чтобы результаты запроса можно было передать на клиент? Заранее благодарен Дмитрий Писаренко |
|||
1
mikecool
08.08.11
✎
17:22
|
выведи в табличный документ, а его сохрани в файл
|
|||
2
asady
08.08.11
✎
17:26
|
(0) ключевое слово: Хранилище
|
|||
3
dp118m
08.08.11
✎
19:59
|
> ключевое слово: Хранилище
Спасибо. Я сделал вот так: &НаСервере Процедура КонцепцияДляЭкспортаВДот(Адрес) Перем СодержимоеФайла; Выборка = Справочники.Концепция.Выбрать(); СодержимоеФайла = "digraph G фвыа"; Пока Выборка.Следующий() Цикл СодержимоеФайла = СодержимоеФайла + Выборка.Код; КонецЦикла; ПоместитьВоВременноеХранилище(СодержимоеФайла, Адрес); КонецПроцедуры &НаКлиенте Процедура ExportToDot(Команда) Перем Адрес; КонцепцияДляЭкспортаВДот(Адрес); Сообщить("Адрес: " + Адрес); ТекстФайла = ПолучитьИзВременногоХранилища(Адрес); Сообщить("Текст: " + ТекстФайла); КонецПроцедуры При вызове ТекстФайла = ПолучитьИзВременногоХранилища(Адрес); я получаю ошибку "неправильное количество аргументов". Как ее устранить? Спасибо Дмитрий |
|||
4
dp118m
08.08.11
✎
21:03
|
Изменил код на
&НаСервере Функция КонцепцияДляЭкспортаВДот(Адрес) Перем СодержимоеФайла; Выборка = Справочники.Концепция.Выбрать(); СодержимоеФайла = "digraph G фвыа"; Пока Выборка.Следующий() Цикл СодержимоеФайла = СодержимоеФайла + Выборка.Код; КонецЦикла; Файл = Новый ОписаниеПередаваемогоФайла(СодержимоеФайла, ); Возврат ПоместитьВоВременноеХранилище(Файл, Адрес); КонецФункции &НаКлиенте Процедура ExportToDot(Команда) Перем Адрес; Адрес = КонцепцияДляЭкспортаВДот(Адрес); Сообщить("Адрес: " + Адрес); Файл = ПолучитьИзВременногоХранилища(Адрес); Сообщить("Это тест: " + Файл); КонецПроцедуры Теперь на клиент поступает ОписаниеПередаваемогоФайла. Осталось только вычитать текст из него. |
|||
5
dp118m
08.08.11
✎
22:41
|
Если кому интересно, вот окончательный вариант:
&НаСервере Функция КонцепцияДляЭкспортаВДот(Адрес) Перем СодержимоеФайла; Выборка = Справочники.Концепция.Выбрать(); СодержимоеФайла = "digraph G {"; Пока Выборка.Следующий() Цикл СодержимоеФайла = СодержимоеФайла + Выборка.Код; КонецЦикла; СодержимоеФайла = СодержимоеФайла + "}"; Файл = Новый ОписаниеПередаваемогоФайла(СодержимоеФайла, ); Возврат ПоместитьВоВременноеХранилище(СодержимоеФайла, Адрес); КонецФункции &НаКлиенте Процедура ExportToDot(Команда) Перем Адрес; Адрес = КонцепцияДляЭкспортаВДот(Адрес); ТекстФайла = ПолучитьИзВременногоХранилища(Адрес); Текст = Новый ТекстовыйДокумент; Текст.УстановитьТекст(ТекстФайла); Текст.Записать("C:\Users\DP118M\Desktop\daily stuff\dottest.txt",КодировкаТекста.UTF8); КонецПроцедуры |
|||
6
Лефмихалыч
08.08.11
✎
22:46
|
зачем изобретать велосипед при наличии XML-сериализации?.. жить скучно?
|
|||
7
dp118m
08.08.11
✎
22:49
|
XML-сериализация бесполезна, если мне надо сделать диаграмму (graphviz) из данных справочника.
|
|||
8
Buster007
08.08.11
✎
23:24
|
а зачем помещать в хранилище текстовые данные? или не ищем легких путей?
|
|||
9
dp118m
08.08.11
✎
23:43
|
> а зачем помещать в хранилище текстовые данные?
Я уже говорил выше, что мне надо сделать из строк справочника текстовый файл в неком формате. asady предложил использовать для этого временное хранилище, что я сделал и теперь это работает. > или не ищем легких путей? А у Вас есть лучшее решение, чем то, что здесь приведено? Если есть, код в студию. |
|||
10
Buster007
08.08.11
✎
23:48
|
&НаСервере
Функция КонцепцияДляЭкспортаВДот() Перем СодержимоеФайла; Выборка = Справочники.Концепция.Выбрать(); СодержимоеФайла = "digraph G {"; Пока Выборка.Следующий() Цикл СодержимоеФайла = СодержимоеФайла + Выборка.Код; КонецЦикла; СодержимоеФайла = СодержимоеФайла + "}"; Возврат СодержимоеФайла; КонецФункции &НаКлиенте Процедура ExportToDot(Команда) Текст = Новый ТекстовыйДокумент; Текст.УстановитьТекст(КонцепцияДляЭкспортаВДот()); Текст.Записать("C:\Users\DP118M\Desktop\daily stuff\dottest.txt",КодировкаТекста.UTF8); КонецПроцедуры не? |
|||
11
Dethmont
09.08.11
✎
01:08
|
А почему на сервере то не получилось записать?
&НаКлиенте
|
|||
12
Buster007
09.08.11
✎
09:13
|
(11) пробовал?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |