1С8. Пример: выгрузка остатков на складах из 1с в CSV-файл. Кодировка UTF-8

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

Скачать пример выгрузки остатков из 1С в файл-csv 1c8_ostatki_2_csv.rar. Замечания пишите на J008@J008.ru

Выгрузка в файл-csv часто используется для загрузки данных на интернет - сайты, интернет-магазины. Вообще, удобно в 1С организовать специальный склад типа "Мнтернет-Магазин" и ассоциировать его с ресурсами интернет-магазина. Товары именно этого склада и следует выгружать. Документами "перемещения товаров" и "Отчет о розничных продажах" отражать ситуацию в интернет-магазине.

выгрузка остатков на складах из 1с в CSV-файл

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

  • 1. Получить таблицу значений с помощью запроса к регистру накопления (РегистрНакопления.ТоварыНаСкладах.Остатки). Это делает функция ПолучитьДанные()
  • 2. Из таблицы значений создаем две строки текста CSV -(текст заголовков и текст данных)
  • 3. Строки CSV записываем в обычный текстовый файл с кодировкой UTF-8 и с расширением .csv

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

выгрузка остатков на складах из 1с в CSV-файл


// Выполним запрос к регистру 
// Результат Таблицазначений  
Функция ПолучитьДанные()
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ 
		|	ТоварыНаСкладахОстатки.Склад,
		|	ТоварыНаСкладахОстатки.Номенклатура,
		|	ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
		|	ТоварыНаСкладахОстатки.СерияНоменклатуры,		
		|	ТоварыНаСкладахОстатки.КоличествоОстаток
		|ИЗ
		|	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";
	Результат = Запрос.Выполнить();
	ТаблицаЗначений = Результат.Выгрузить();
	возврат ТаблицаЗначений;
КонецФункции //	


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

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


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

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

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

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

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

штампДаты = Формат(ТекущаяДата(),"ДФ=ddMMyyyy_hhmm");
ВыгрузитьОстаткиПоВсемСкладам_В_CSV("C:\Temp\ostatki_" + штампДаты + ".csv"); 

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




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

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

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

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

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

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

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