Загрузка и выгрузка из CSV в 1С
Меню

Загрузка и выгрузка из CSV в 1С

Содержание статьи
  1. Загрузка CSV в 1С 8.3
  2. Выгрузка в CSV из 1С 8.3

Формат CSV распространен в современном информационном мире достаточно широко, поэтому взаимодействовать с ним рано или поздно придется любому разработчику в среде 1С.

Наиболее часто импорт CSV используют, чтобы получить в 1С данные с сайта. Несмотря на то, что часто в него выгружают таблицы, важно понимать, что это текстовый формат со специальными разделителями

В их роли могут выступать различные знаки препинания или специальные символы – табуляция и другие.

Загрузка CSV в 1С 8.3

Самостоятельных функций работы с CSV-файлами в платформе 1С Предприятие 8.3 нет. Разработчикам приходится работать с ним как с текстовым форматом, впоследствии разбивая полученные данные на отдельные столбцы. Это немного сложнее и требует от неопытных программистов некоторого времени на теоретическую подготовку. Впрочем, если у вас простой формат данных, то можно воспользоваться текстом универсальной обработки выгрузки и загрузки информации.

Настроим обмен 1С с любым CMS по выгодным тарифам

В первую очередь необходимо нужный файл разместить в каталоге, доступном 1С. Также придется выбрать символ – разделитель, который отделяет данные различных столбцов в строке текстового документа. Проследите, чтобы в значениях не встречался выбранный символ-разделитель, так как это помешает корректной обработке при загрузке данных. В большинстве случаев алгоритм загрузки CSV файла в 1С состоит из следующих этапов:

  • Считываем данные на клиенте в текстовый документ, указав путь к файлу формата CSV;
    
    ПрочитанныйФайл = Новый текстовыйДокумент;
    ПрочитанныйФайл.Прочитать("D:\20190227_144335.csv");
    
  • Передаем прочитанный текстовый документ в процедуру на сервере;
    
    ЗагрузитьДанныеНаСервере(ПрочитанныйФайл);
    
  • В серверной процедуре создаем таблицу значений, в которую впоследствии будут загружены данные и задаем разделитель, используемый в конкретном CSV. Очень важно, чтобы это был уникальный символ, не используемый в значениях. Часто используют знаки препинания или специальные знаки;
    
    ДанныеИзФайла = новый ТаблицаЗначений;
    Разделитель = ";";
    
  • Если в файле присутствует шапка таблицы, то считываем ее и разделяем на отдельные значения в массив по символу-разделителю. Используется стандартная функция платформы «СтрРазделить», с которой можно ознакомиться в синтакс-помощнике. Если в файле не было названий столбцов, то эти команды нужно убрать;
    
    Шапка = ПрочитанныйФайл.ПолучитьСтроку(1);
    МассивКол = СтрРазделить(Шапка, Разделитель);
    
  • Задаем столбцы в ТЗ, которую создали, попутно приравнивая их к единому формату. Кроме этого, в названии столбцов таблицы значений не допускается пробелов, поэтому их нужно убирать;
    
    Для Каждого ИмяСт Из МассивКол Цикл
    ИмяБП = СтрЗаменить(ИмяСт," ","");
    ДанныеИзФайла.Колонки.Добавить(ИмяБП,, ИмяСт);
    КонецЦикла;
    
  • В цикле проходим построчно весь текстовый файл и каждую строку разделяем на столбцы с помощью выбранного разделителя. Во вложенном цикле заполняем каждый столбец значением из строки текстового документа.
    
    Для НомерСтроки=2 по ПрочитанныйФайл.КоличествоСтрок() Цикл
    Строка = ПрочитанныйФайл.ПолучитьСтроку(НомерСтроки);
    МассивКол = СтрРазделить(Строка,Разделитель);
    НоваяСтрочка= ДанныеИзФайла.Добавить();
    Для НомерСтолбца= 1 по МассивКол.Количество() Цикл
    ТекущееЗначение = МассивКол[НомерСтолбца-1];
    ИмяКолонки = ДанныеИзФайла.Колонки[НомерСтолбца-1].Имя;
    НоваяСтрочка[ИмяКолонки] = ТекущееЗначение;
    КонецЦикла;
    КонецЦикла;
    

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

Также в работе часто приходится выгружать данные из 1С для разнообразных программ. Формат CSV отлично подходит для этого, так как с ним работает большинство приложений. Единственный момент – разделяющий символ нужно заранее продумать и согласовать, чтобы принимающему данные программисту было легче обрабатывать файлы.

Выгрузка в CSV из 1С 8.3

Перед тем как настраивать экспорт в CSV, стоит определиться с каталогом, в который будут выгружаться данные. У пользователя, который будет выгружать данные, должен быть доступ на запись в выбранную папку. Обработка для CSV будет состоять из нескольких функций – так намного нагляднее и понятнее, чем одна большая процедура:

  1. Процедура запуска выгрузки в файл. Указываем путь к файлу, который нужно создать;
    
    Процедура СоздатьCSV(Команда)
            	ВыгрузитьВCSV("D:\Nomenklatura.csv");
    КонецПроцедуры
    
  2. Задаем разделитель и вызываем последовательно все функции – запроса данных, их обработки и записи;
    
    Процедура ВыгрузитьВCSV(имяФайлаCSV);
              Разделитель = "|";
              ТаблицаЗначений = Получитьданные();
              Текст = СоздатьДанныеCSV(ТаблицаЗначений,разделитель);
              ЗаписатьCSV(текст,имяФайлаCSV);
    КонецПроцедуры
    
  3. Функция получения данных, которые необходимо сохранить в CSV. Информация выгружается из базы данных в таблицу значений с помощью запроса;
    
    Функция Получитьданные()      	
            	Запрос = Новый Запрос;
            	Запрос.Текст =
                       	"ВЫБРАТЬ
                       	|       	Номенклатура.Код КАК Код,
                       	|       	Номенклатура.Наименование КАК Наименование,
                       	|       	Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
                       	|       	Номенклатура.Родитель КАК Родитель
                       	|ИЗ
                       	|       	Справочник.Номенклатура КАК Номенклатура";     	
            	РезультатЗапроса = Запрос.Выполнить().Выгрузить();  
            	Возврат РезультатЗапроса;
    КонецФункции
    
  4. Формирование текста для нового файла с учетом разделителей, заголовков и переноса строк;
    
    Функция СоздатьДанныеCSV(ТаблицаЗначений,разделитель)
    Текст="";
    для каждого запись из ТаблицаЗначений Цикл
            	если Текст="" тогда
                Текст=СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель) + Символы.ПС;   	
    КонецЕсли;  
    Текст = Текст + запись.Код + разделитель + запись.ЕдиницаИзмерения
    + разделитель + запись.Наименование + разделитель + запись.Родитель + Символы.ПС;         	
    КонецЦикла;
    Возврат текст;
    КонецФункции
    
  5. Процедура записи полученной текстовой строки в конечный файл с указанием нужной кодировки.
    
    Процедура ЗаписатьCSV(текст,имяФайла)                 	
              кодировка = КодировкаТекста.ANSI;
              ТекстовыйФайлЗапись = Новый ЗаписьТекста(имяФайла,Кодировка);           
              ТекстовыйФайлЗапись.ЗаписатьСтроку(текст);
              ТекстовыйФайлЗапись.Закрыть();         	
    КонецПроцедуры
    

Файл CSV
Файл CSV

Чтобы представить полученный файл в виде таблицы в Excel, можно воспользоваться мастером импорта текста. На вкладке «Данные» есть кнопка «Текст по столбцам». Необходимо выделить наш текст, который по умолчанию сохраняется в первый столбец, и нажать на эту кнопку. После простой настройки, в течение которой вы укажете разделитель, перед нами появится таблица.

Настройка Текст по столбцам
Настройка Текст по столбцам

Таблица
Таблица

Это код универсальной выгрузки данных, которая применима в большинстве случаев. Важно помнить, что выбранный символ разделителя не должен встречаться в данных, иначе придется обрабатывать конечный файл. Поэтому, перед тем как выгружать данные, проведите их анализ и определите наилучший вариант. Платформа 1С Предприятие 8.3 предоставляет широкий выбор, поэтому вряд ли возможна ситуация, когда в данных встречаются все спецсимволы.

Уверенная работа с CSV позволит вам зарекомендовать себя не только как опытного разработчика 1С, но и интегратора. На текущий момент большинство задач для 1С от крупных компаний связано именно с обменом данными между системами. Конечно, не во всех случаях подойдет приведенный выше алгоритм, но поняв его принцип, вы с легкостью доработаете его при необходимости.

Рассказать друзьям
Предыдущая статья статья
Настройка итогов в СКД 1С 8.3
Следующая статья статья
Внешняя обработка 1С: запуск, параметры, вызов
Комментарии