Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 06:52

Экспорт данных из 1С в документ .txt.

Автор bandit541, 04 апр 2013, 07:30

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

bandit541

Здравствуйте. Сделал 11 отчетов, готовых, который формируют данные.
Помогите пожалуйста в следующем:
Все эти отчеты объединить в один файл (обработку), чтобы экспорт (выгрузка) данных происходила в файлы с расширением .txt в количестве 11 штук с определенным наименованием (наименования тоже есть).
Не получается домыслить куда и как прилепить код.
Находил примеры готовых процедур типа:       но что то неполучилось
Помогите пожалуйста :)
v8.x: Пример выгрузки данных в Текстовый файл, документ
Код 1C v 8.х

Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогСохраненияФайла.ПолноеИмяФайла = "Выгрузка_"+Формат(ПериодРегистрации,"ДФ=M_yy");
Фильтр = "Текст(*.txt)|*.txt";                 
ДиалогСохраненияФайла.Фильтр = Фильтр;
ДиалогСохраненияФайла.МножественныйВыбор = Ложь;
ДиалогСохраненияФайла.Заголовок = "Выберите файл";
Если ДиалогСохраненияФайла.Выбрать() Тогда
   ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла;
   // выбрали файл, сохраняем в него Проводки
   ТекДок = Новый ТекстовыйДокумент;
   Для Каждого Стр Из Проводки Цикл
      Состояние("Выгружаю строку: "+Строка(Стр.НомерСтроки));
      ТекДок.ДобавитьСтроку(Строка(стр.СчетДт)+"~"+Строка(стр.СчетКт)+"~"+Строка(стр.Физлицо.Код)+"~"+Формат(стр.СуммаВыгр,"ЧГ=0"));
   КонецЦикла;   
КонецЕсли;   
ТекДок.Записать(ПутьКФайлу);   

____________________________________________________________________________________________
Пример кода одного из отчетов:

Процедура КнопкаСформироватьНажатие(Кнопка)
   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Макет = ПолучитьМакет("Макет");
   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ТоварыНаСкладахОстатки.Номенклатура.Код КАК code,
      |   ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК art,
      |   Штрихкоды.Штрихкод КАК barcode,
      |   ТоварыНаСкладахОстатки.Номенклатура КАК name,
      |   ТоварыНаСкладахОстатки.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК pack,
      |   ЦеныНоменклатурыКонтрагентов.Цена КАК price,
      |   88 КАК manfid
      |ИЗ
      |   РегистрСведений.Штрихкоды КАК Штрихкоды
      |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура.ОсновнойПоставщик = &Поставщик) КАК ТоварыНаСкладахОстатки
      |      ПО Штрихкоды.Владелец = ТоварыНаСкладахОстатки.Номенклатура,
      |   РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов";

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

   Результат = Запрос.Выполнить();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

   ТабДок = ЭлементыФормы.ТабДок ;
   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
      ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
   КонецЦикла;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);

   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
                         

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

В этом отчете вывод данных происходит в ТабДок, сейчас нужно это убрать и сделать просто экспорт данных.

wise

Цитироватьнужно это убрать и сделать просто экспорт данных
ну, дык, и выводи поля в текст...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

has

Та же самая процедура, просто вместо всяких ТабДок.Вывести() необходимо писать в файл

Klyacksa

У табличного документа есть метод Записать(), который позволяет сохранить ТабДок во внешний файл, с выбранным форматом.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

bandit541

Цитата: has от 04 апр 2013, 16:05
Та же самая процедура, просто вместо всяких ТабДок.Вывести() необходимо писать в файл
Писать в файл, как эта процедура наглядно выглядеть должна. Правильный синтаксис
?????
Покажите пожалуйста на примере с кодом отчета который в теме.

has

А вариант Klyacksa Вам не подходит?

UPD:
навскидку

Процедура КнопкаСформироватьНажатие(Кнопка)
   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   ТоварыНаСкладахОстатки.Номенклатура.Код КАК code,
      |   ТоварыНаСкладахОстатки.Номенклатура.Артикул КАК art,
      |   Штрихкоды.Штрихкод КАК barcode,
      |   ТоварыНаСкладахОстатки.Номенклатура КАК name,
      |   ТоварыНаСкладахОстатки.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент КАК pack,
      |   ЦеныНоменклатурыКонтрагентов.Цена КАК price,
      |   88 КАК manfid
      |ИЗ
      |   РегистрСведений.Штрихкоды КАК Штрихкоды
      |      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура.ОсновнойПоставщик = &Поставщик) КАК ТоварыНаСкладахОстатки
      |      ПО Штрихкоды.Владелец = ТоварыНаСкладахОстатки.Номенклатура,
      |   РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов";

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

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

  ТекДок.Записать(ПутьКФайлу);   
                         
КонецПроцедуры     

Теги:

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

Рейтинг@Mail.ru

Поиск