![]() |
![]() |
![]() |
|
Запись файла на клиенте. | ☑ | ||
---|---|---|---|---|
0
lirt82
18.08.25
✎
09:16
|
Есть внешняя обработка, в модуле ее формы есть рабочий код.
Можно ли из процедуры листинг ниже, отмеченные фрагменты (отмеченные *) перенести на выполнение в процедуры с директивой &НаКлиенте с использованием оповещения? &НаСервере Процедура ТаблицаЗначенийВCSV(ТЗРез, Разделитель) //Преобразуем Таблицу значений в Табличный документ ТабличныйДокумент = ТаблицаЗначенийВТабличныйДокумент(ТЗРез); ОбластьПоиска = ТабличныйДокумент.Область(1,1,1,1); Пока Истина Цикл ОбластьПоиска = ТабличныйДокумент.НайтиТекст(Символы.Таб, ОбластьПоиска); Если ОбластьПоиска = Неопределено Тогда Прервать; КонецЕсли; ОбластьПоиска.Текст = СтрЗаменить(ОбластьПоиска.Текст, Символы.Таб, "<$СимволТабуляции$/>"); КонецЦикла; // Сохраняем Табличный документ как текст, в полученном текстовом документе значения каждой ячейки разделяются через символ табуляции *ТабличныйДокумент.Записать(Объект.ПутьКФайлу, ТипФайлаТабличногоДокумента.TXT); *//как перенести запись в процедуру &НаКлиенте //Извлекаем полученный Текстовый документ ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.Прочитать(Объект.ПутьКФайлу, КодировкаТекста.UTF8, Символы.ПС); Текст = ТекстовыйФайл.ПолучитьТекст(); //Заменяем сформированные символы табуляции на символ разделитель csv файла переданный параметром функции Текст = СтрЗаменить(Текст, Символы.Таб, Разделитель); // Востанавливаем ранее экранированные символы табуляции в самих данных Текст = СтрЗаменить(Текст, "<$СимволТабуляции$/>", Символы.Таб); // Сохраняем сформированный текст csv-файла ТекстовыйФайл.УстановитьТекст(Текст); *ТекстовыйФайл.Записать(Объект.ПутьКФайлу, , Символы.ПС); *//как перенести запись в процедуру &НаКлиенте КонецПроцедуры |
|||
1
Ненавижу 1С
гуру
18.08.25
✎
09:12
|
Нужно табличный/текстовый документ вернуть с сервера и записать на клиенте
|
|||
2
lirt82
18.08.25
✎
09:15
|
(1) пример
|
|||
3
lirt82
18.08.25
✎
09:23
|
(1) желательно не таскать табличный документ как объект а использовать ВременноеХранилище
|
|||
4
Мультук
гуру
18.08.25
✎
09:26
|
(2)
google: 1с передать файл с сервера на клиент пример кода Результат: https://its.1c.ru/db/intgr83#content:194:hdoc "Получение нескольких файлов с сервера" |
|||
5
Волшебник
18.08.25
✎
09:26
|
(3) Сделайте функцию, которая возвращает csv в виде строки
|
|||
6
Толич
18.08.25
✎
09:45
|
(5) + 1
|
|||
7
lirt82
18.08.25
✎
09:59
|
(5) я использовал табличный документ вместо конкатенации строк, а понял сериализовать в строку, эту строку передать на клиент, на клиенте обратно и записать.
|
|||
8
Волшебник
18.08.25
✎
09:58
|
(7) Вы молодец.
|
|||
9
lirt82
18.08.25
✎
10:24
|
(5)
&НаСервере Процедура ТаблицаЗначенийВCSV(ТЗРез, Разделитель) //Преобразуем Таблицу значений в Табличный документ ТабличныйДокумент = ТаблицаЗначенийВТабличныйДокумент(ТЗРез); ОбластьПоиска = ТабличныйДокумент.Область(1,1,1,1); Пока Истина Цикл ОбластьПоиска = ТабличныйДокумент.НайтиТекст(Символы.Таб, ОбластьПоиска); Если ОбластьПоиска = Неопределено Тогда Прервать; КонецЕсли; ОбластьПоиска.Текст = СтрЗаменить(ОбластьПоиска.Текст, Символы.Таб, "<$СимволТабуляции$/>"); КонецЦикла; // Сохраняем Табличный документ как текст, в полученном текстовом документе значения каждой ячейки разделяются через символ табуляции //*ТабличныйДокумент.Записать(Объект.ПутьКФайлу, ТипФайлаТабличногоДокумента.TXT); //как перенести запись в процедуру &НаКлиенте СериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO); СтрокаТабличногоДокумента = СериализаторXDTO.ЗаписатьXML(ТабличныйДокумент); ПередатьИСохранитьНаКлиенте(СтрокаТабличногоДокумента); //Извлекаем полученный Текстовый документ ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.Прочитать(Объект.ПутьКФайлу, КодировкаТекста.UTF8, Символы.ПС); Текст = ТекстовыйФайл.ПолучитьТекст(); //Заменяем сформированные символы табуляции на символ разделитель csv файла переданный параметром функции Текст = СтрЗаменить(Текст, Символы.Таб, Разделитель); // Востанавливаем ранее экранированные символы табуляции в самих данных Текст = СтрЗаменить(Текст, "<$СимволТабуляции$/>", Символы.Таб); // Сохраняем сформированный текст csv-файла ТекстовыйФайл.УстановитьТекст(Текст); *ТекстовыйФайл.Записать(Объект.ПутьКФайлу, , Символы.ПС); *//как перенести запись в процедуру &НаКлиенте КонецПроцедуры &НаКлиенте Процедура ПередатьИСохранитьНаКлиенте(СтрокаТабличногоДокумента) СериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO); ТабличныйДокумент = СериализаторXDTO.ПрочитатьXML(СтрокаТабличногоДокумента); ТабличныйДокумент.НачатьЗапись( , Объект.ПутьКФайлу); КонецПроцедуры Процедура или функция с указанным именем не определена (ПередатьИСохранитьНаКлиенте) <<?>>ПередатьИСохранитьНаКлиенте(СтрокаТабличногоДокумента); (Проверка: Сервер) |
|||
10
Волшебник
18.08.25
✎
10:27
|
(9) Сделайте серверную функцию, которая возвращает csv в виде строки
|
|||
11
lirt82
18.08.25
✎
10:32
|
Цель: процедуру ТаблицаЗначенийВCSV(ТЗРез, Разделитель) которая выполняется на сервере, необходимо ускорить.
т.е. действия сохранение табличного документа в файл необходимо перенести на клиент, далее сохраненный на клиенте файл табличного документа необходимо преобразовать и сохранить в формате csv. Используя асинхронные вызовы. |
|||
12
Волшебник
18.08.25
✎
10:33
|
(11) Сделайте серверную функцию, которая возвращает csv в виде строки
|
|||
13
maxab72
18.08.25
✎
10:36
|
(11) это какое-то задание на собеседовании?
|
|||
14
lirt82
18.08.25
✎
10:39
|
(12) т.е. в эту серверную функцию я передаю табличный документ, там его сериализую в строку и возвращаю эту строку куда?)
|
|||
15
Волшебник
18.08.25
✎
10:40
|
(14) возвращаете в клиентскую процедуру, откуда вызвали
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |