Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 фев 2026, 02:34

сохранить данные в файл

Автор sali, Вчера в 09:21

0 Пользователей и 1 гость просматривают эту тему.

sali

не могу найти информацию как сохранить данные в файл и сохранить его на компьютере - рабочем столе. может кто подсказать. мне json в txt записать надо

Максим75

sali, как то так

&НаСервере
Процедура СериализоватьМногоНаСервере()

ПараметрыJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб);
ЗаписьJSONОбщий = Новый ЗаписьJSON;

ЗаписьJSONОбщий.УстановитьСтроку(ПараметрыJSON);
//Вариант 2 - запись в файл
ЗаписьJSONОбщий.ОткрытьФайл("Путь к файлу и само имя файла", , , ПараметрыJSON);


Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             | ЧекККМ.Ссылка КАК Ссылка
             |ИЗ
             | Документ.ЧекККМ КАК ЧекККМ
             |ГДЕ
             | ЧекККМ.Дата МЕЖДУ &ДатаНач И &ДатаКон
             | И ЧекККМ.СтатусЧекаККМ = ЗНАЧЕНИЕ(Перечисление.СтатусыЧековККМ.Пробитый)";

Запрос.УстановитьПараметр("ДатаНач",НачалоДня(ЗаДату));
Запрос.УстановитьПараметр("ДатаКон",КонецДня(ЗаДату));

Выборка = Запрос.Выполнить().Выбрать();
МассивДоков = Новый Массив;

Пока Выборка.Следующий() цикл

ЗаписьJSONОдин = Новый ЗаписьJSON;
ЗаписьJSONОдин.УстановитьСтроку(ПараметрыJSON);

СериализуемоеЗначение = Выборка.Ссылка.ПолучитьОбъект();
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSONОдин, СериализуемоеЗначение, НазначениеТипаXML.Явное);
ОдинДок = ЗаписьJSONОдин.Закрыть();
МассивДоков.Добавить(ОдинДок);

КонецЦикла;


ЗаписьJSONОбщий.ЗаписатьНачалоМассива();
Для каждого Стр из МассивДоков цикл
ЗаписьJSONОбщий.ЗаписатьЗначение(Стр);
КонецЦикла;                               
ЗаписьJSONОбщий.ЗаписатьКонецМассива();


ЗаписьJSONОбщий.Закрыть();

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

только можно и нужно сразу в файл джисона писать, зачем с текстовым мучаться.
потом этот же джисоновсикй файл читается и работаете с данными в нем.

sali

Цитата: Максим75 от Вчера в 09:32только можно и нужно сразу в файл джисона писать, зачем с текстовым мучаться.
учту
Цитата: Максим75 от Вчера в 09:32ЗаписьJSONОбщий.ОткрытьФайл("Путь к файлу и само имя файла", , , ПараметрыJSON);
а это уже в существующий файл записывается или создается и записывается?

antoneus

Ну неинтересно даже. ЗаписьТекста. Синтакс-помощник.

sali

antoneus, ну извините, но мне надо знать. потому что имя файла будет меняться в зависимости от периода
пример названия файла
Sales_16,02,2025-22,02,2025.txt

antoneus

ЗаписьТекста.Открыть(ИмяФайла). Все в справке, чувак.

Максим75

sali, создастся и запишется. перезапишется, если уже такой есть.

sali

Максим75, спасибо. я сделал немного по-другому (потому что надо отобразить документы за период, только потом писать в json)
вот идет заполнение структуры
&НаСервере
Процедура СоздатьФайлНаСервере()

МассивЧеков = Новый Массив;

ДанныеДокументов = Новый Структура;

Для Каждого СтрокаТабличнойЧасти ИЗ Объект.Документы Цикл           
Для Каждого Строка Из СтрокаТабличнойЧасти.Документ.Запасы Цикл 
ПараметрыДокумента = Новый Структура;
ПараметрыДокумента.Вставить("Checkout", СтрокаТабличнойЧасти.Документ.Организация);
ПараметрыДокумента.Вставить("Store", СтрокаТабличнойЧасти.Документ.КассаККМ);
....
ДанныеДокументов.Вставить("Sales", МассивЧеков);
ПодготовитьТелоЗапросаJSON(ДанныеДокументов);


потом запись
&НаСервере
Функция ПодготовитьТелоЗапросаJSON(Данные)

// Создать объект записи и открыть файл, в который будет выполняться запись.
ЗаписьJSONОбщий = Новый ЗаписьJSON;
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);
ЗаписьJSONОбщий.ОткрытьФайл("C:\SalesKG_" + Формат(ДатаНачала, "ДФ=dd.MM.yyyy") + "-" +  Формат(ДатаКонец, "ДФ=dd.MM.yyyy") + ".txt", , , ПараметрыЗаписиJSON);
ЗаписьJSONОбщий.УстановитьСтроку(ПараметрыЗаписиJSON);

// Выполнить запись данных (Данные) с помощью объекта записи (Запись).
ЗаписатьJSON(ЗаписьJSONОбщий, Данные);

Возврат ЗаписьJSONОбщий.Закрыть();

КонецФункции
но выдает ошибку. И вопрос, если он должен создать документ и записать, почему ошибка?
ЦитироватьОшибка при вызове метода контекста (ОткрытьФайл)
{ЗагрузкаЧековВXML Обработка.СохранениеЧековВФайл.Форма.Форма.Форма(130)}:   ЗаписьJSONОбщий.ОткрытьФайл("C:\SalesKG_" + Формат(ДатаНачала, "ДФ=dd.MM.yyyy") + " - " +  Формат(ДатаКонец, "ДФ=dd.MM.yyyy") + ".txt", , , ПараметрыЗаписиJSON);
{ЗагрузкаЧековВXML Обработка.СохранениеЧековВФайл.Форма.Форма.Форма(79)}:   ПодготовитьТелоЗапросаJSON(ДанныеДокументов);
{ЗагрузкаЧековВXML Обработка.СохранениеЧековВФайл.Форма.Форма.Форма(9)}:   СоздатьФайлНаСервере();
по причине:
Ошибка доступа к файлу 'C:\SalesKG_05.09.2023 - 06.09.2023.txt'

sali

о а вот так нет ошибки, но и не записал туда ничего
ЗаписьJSONОбщий.ОткрытьФайл("D:\базы\SalesKG_" + Формат(ДатаНачала, "ДФ=dd.MM.yyyy") + "-" +  Формат(ДатаКонец, "ДФ=dd.MM.yyyy") + ".txt", , , ПараметрыЗаписиJSON);

а знает кто, как на ftp клиентам сразу сохранять файл?

sali

я сделал почти всё как и вы, но пустой, почему?
&НаСервере
Процедура ПодготовитьТелоЗапросаJSON(Данные)
   
    // Создать объект записи и открыть файл, в который будет выполняться запись.
    ЗаписьJSONОбщий = Новый ЗаписьJSON;
    ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);
    ЗаписьJSONОбщий.ОткрытьФайл("D:\базы\SalesKG_" + Формат(ДатаНачала, "ДФ=dd.MM.yyyy") + "-" +  Формат(ДатаКонец, "ДФ=dd.MM.yyyy") + ".txt", , , ПараметрыЗаписиJSON);
    ЗаписьJSONОбщий.УстановитьСтроку(ПараметрыЗаписиJSON);
   
    // Выполнить запись данных (Данные) с помощью объекта записи (Запись).
    ////////ЗаписатьJSON(ЗаписьJSONОбщий, Данные); 
    МассивДоков = НОВЫЙ МАССИВ;
    ДЛЯ КАЖДОГО СТРДОК ИЗ Данные.Sales ЦИКЛ 
        ЗаписьJSONОдин = Новый ЗаписьJSON;
        ЗаписьJSONОдин.УстановитьСтроку(ПараметрыЗаписиJSON);

        СериализуемоеЗначение = СТРДОК;
        СериализаторXDTO.ЗаписатьJSON(ЗаписьJSONОдин, СериализуемоеЗначение, НазначениеТипаXML.Явное);
        ОдинДок = ЗаписьJSONОдин.Закрыть();
        МассивДоков.Добавить(ОдинДок);
    КОНЕЦЦИКЛА;
   
    ЗаписьJSONОбщий.ЗаписатьНачалоМассива();
    Для каждого Стр из МассивДоков цикл
        ЗаписьJSONОбщий.ЗаписатьЗначение(Стр);     
    КонецЦикла; 
    ЗаписьJSONОбщий.ЗаписатьКонецМассива();
   ЗаписьJSONОбщий.Закрыть();
       
КонецПроцедуры


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск