1С8. Выгружаем документы - заказы поставщикам из 1С8 в CSV-файл

Пример выгрузки документов - заказов поставщику из 1С в файл-csv. Кодировка UTF-8. Разделитель "|".

Скачать пример выгрузки контрагентов из 1С в файл-csv (1c8_order_2_csv.epf упакован в архив 1c8_order_2_csv.rar). Замечания на J008@J008.ru

Весь процесс получения файла можно разделить на три шага:

  • Получить с помощью запроса данные о документах - заказов поставщикам. Получаем только "шапку документов". Табличные данные документов в этом примере не рассматриваем. Обратите внимание - в учебных целях выбираем только первую тысячу записей (в запросе фраза "ВЫБРАТЬ ПЕРВЫЕ 1000"). Функция ПолучитьЗаказы() выполняет запрос к справочнику Номенклатуры, - возвращает Таблицу Значений в основную функцию ВыгрузитьВCSV()
  • Из Таблицы Значений создаем текст-строку CSV -(текст заголовков и текст данных)
  • Строку CSV записываем в обычный текстовый файл с кодировкой UTF-8 и с расширением .csv

На выходе получаем:

Result_Результат_выгрузки
// выполним запрос - вернем таблицу значений
Функция ПолучитьЗаказы()
    Запрос = Новый Запрос;
    
    // запрос - выбрать "шапки документов" ЗаказПоставщику
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 1000
        |    *
        |ИЗ
        |    Документ.ЗаказПоставщику КАК ЗаказПоставщику";
    Результат = Запрос.Выполнить(); // выполним запрос
    
    ТаблицаЗначений = Результат.Выгрузить();
    возврат ТаблицаЗначений;
КонецФункции //    

// Создаем строку загоовков для CSV-файла
Функция СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель)
    //разделитель = "|";
    колонкиТЗ=ТаблицаЗначений.колонки;
    Для каждого колонка Из колонкиТЗ Цикл
        стрКолонки = "" + стрКолонки + колонка.Имя + разделитель ;
    КонецЦикла; 
    Возврат стрКолонки;
КонецФункции

// Создаем строку записи ТаблицыЗначений для CSV-файла
Функция СоздатьСтрокуCSV(записьТаблицаЗначений,разделитель)    
    стрЗапись = "";    
    Для каждого поле Из записьТаблицаЗначений Цикл
        стрЗапись = "" + стрЗапись + Строка(поле) + разделитель ;
    КонецЦикла; 
    Возврат стрЗапись;
КонецФункции


// Создаем текст CSV:
// текст заголовков и 
// текст данных - строки таблицы.
Функция СоздатьДанныеCSV(ТаблицаЗначений,разделитель)
    
    текстЗапись="";
    для каждого запись из ТаблицаЗначений Цикл
        если текстЗапись="" тогда
            текстЗапись=СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель) 
                + Символы.ПС;    
        КонецЕсли;    
        
        // выводим в панель состояний
        Состояние(запись);
        
        стрЗапись = СоздатьСтрокуCSV(запись,разделитель);            
        текстЗапись = текстЗапись + стрЗапись + Символы.ПС;
        
    КонецЦикла;        
    
    Возврат текстЗапись;

КонецФункции //

// Запишем данные в текстовый файл CSV 
Функция ЗаписатьCSV(текст,имяФайла)              
    //кодировка = КодировкаТекста.ANSI;
    кодировка = КодировкаТекста.UTF8; // задаем кодировку CSV файла 
    
    ТекстовыйФайлЗапись = Новый ЗаписьТекста(имяФайла,Кодировка);            
    ТекстовыйФайлЗапись.ЗаписатьСтроку(текст); 
    ТекстовыйФайлЗапись.Закрыть();    
    Возврат 0;

КонецФункции //

// Основная логика:
Функция ВыгрузитьВCSV(имяФайлаCSV);
    сообщить("Выгрузка документов - ""Заказов Поставщикам"" ...");
    разделитель = "|";
    ТаблицаЗначений = ПолучитьЗаказы();
    текст = СоздатьДанныеCSV(ТаблицаЗначений,разделитель);
    ЗаписатьCSV(текст,имяФайлаCSV);
    сообщить(имяФайлаCSV + " -[OK!]" );
КонецФункции

ВыгрузитьВCSV("C:\Temp\my.csv"); 

Запрос удобно редактировать с помощью конструктора запросов.Нажимаем правой кнопкой мыши на тексте запроса:

Конструктор запросов. Вызов

Конструктор запросов. Редактор

Открыть csv файл можно в текстовом редакторе в виде простого текста или в Excel в виде таблицы.




Рекламный блок:

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

Доработка и сопровождение 1С:

Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

Пишите: j008@j008.ru

Звоните: 8 916 710 83 51 Ольга