|   |   | 
| 
 | Запись файла на клиенте. Волшебник, Amra, Lazy Stranger, Somebody, wolk, ivanov-i-i, Многолетний Апельсин, lirt82, maxab72, DemonShinji2, d4rkmesa, Ногаминебить, АгентБезопаснойНацио, User33, laeg, unenu, Skylark, Prog_man, strange2007, Мультук, crotnn, denk32, zzz_zzz_zzz, Kigo_Kigo, ALCAPONA, Ненавижу 1С, Vstur, Климов Сергей, vis, tir654, H A D G E H O G s, phabeZ, Timon1405, Kongo2019, ads55, maxar, WintLib, Толич, abfm, banco, boozin, Галахад, bmitkin, Garykom, Sneer, formista2000, takefive, Доминошник, comp2006, Fish, Terrixus, PuhUfa, okmail, Гипервизор, AlexKimp | ☑ | ||
|---|---|---|---|---|
| 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) возвращаете в клиентскую процедуру, откуда вызвали     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |