Выгрузка товаров с ценами и остатками в CSV (УТ 11, КА 2, ERP 2, УНФ, Розница)
Формат CSV — текстовый формат, предназначенный для представления табличных данных. Каждая строка представляет собой описание товара с заданным разделителем. Подробно прочитать о формате файла Вы можете на странице Википедии .
Если у Вас возникла необходимость выгрузки номенклатуры в csv-файл — обратите внимание на нашу разработку « Конструктор прайс-листов «. Он позволяет выгружать номенклатуру по произвольному отбору в файл csv. В дальнейшем Вы сможете использовать этот файл для загрузки товаров на Ваш сайт. Возможности конструктора прайс-листов:
Выгрузка в CSV
Может ли кто поделится обработкой которая может выгружать данные в CSV-файл? Чтобы выгружались данные в отдельные файлы. Т.е. указываешь каталог для выгрузки, выбираешь организацию, период выгрузки и жмешь кнопку выгрузить. На выходе получаешь несколько файлов. Например:
— Продажи
— Остаток
— Поступление
Пытаюсь сам сделать, но что-то не получается. Конфигурация "Бухгалтерия для Казахстана" 2.0.22.20. Совместимость с платформой 8.2.13
P.S. Можно ли в параметрах виртуальной таблицы (регистр накопления, остатки) как либо указать параметры реквизита Количество > 0?
тс, а открыть и посмотреть внутрь CSV религия запрещает?!
там же, фактически, никакого формата нет
Есть затыки, посмотрите что не так делаю:
http://rgho.st/7syY2JCnp
РегистрНакопления.ТоварыОрганизацийБУ.Остатки(, Организация = <<?>>&Организация) КАК ТоварыОрганизацийБУОстатки
<ВнешняяОбработка.ВыгрузкаДанныхДляСайта.МодульОбъекта(13)>: Ошибка при вызове метода контекста (Выполнить)
РезультатОстатки = ЗапросОстатка.Выполнить();
по причине:
<(7, 64)>: Не задано значение параметра "Организация"
РегистрНакопления.ТоварыОрганизацийБУ.Остатки(, Организация = <<?>>&Организация) КАК ТоварыОрганизацийБУОстатки
Код:
ЗапросОстатка = Новый Запрос;
ЗапросОстатка.Текст =
"ВЫБРАТЬ
| ТоварыОрганизацийБУОстатки.Организация,
| ТоварыОрганизацийБУОстатки.Товар КАК Номенклатура,
| ТоварыОрганизацийБУОстатки.НомерГТД,
| ТоварыОрганизацийБУОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыОрганизацийБУ.Остатки(, Организация = &Организация) КАК ТоварыОрганизацийБУОстатки";
ЗапросОстатка.УстановитьПараметр("Огранизация", Организация);
РезультатОстатки = ЗапросОстатка.Выполнить();
ТаблицаОстатков = РезультатОстатки.Выгрузить();
Возврат ТаблицаОстатков;
Теперь внимательно прочитай. Попей кофе. Поспи. Протрезвей.
Скачал обработку из примера, но в ней тоже выгружается пустой файл, подскажите что в примере или у меня не так?
Кроме того при выборе каталога показывает не полный путь.
https://snag.gy/MgchVr.jpg
Путь: D:\Users\nihi1ist\
// Выполним запрос к регистру
// Результат Таблицазначений
Функция ПолучитьДанные()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Склад,
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
| ТоварыНаСкладахОстатки.СерияНоменклатуры,
| ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";
Результат = Запрос.Выполнить();
ТаблицаЗначений = Результат.Выгрузить();
возврат ТаблицаЗначений;
КонецФункции //
// Создаем строку заголвков для CSV-файла.
// Цикл по колонкам таблицы значений
Функция СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель)
//разделитель = "|";
колонкиТЗ=ТаблицаЗначений.колонки;
Для каждого колонка Из колонкиТЗ Цикл
стрКолонки = "" + стрКолонки + колонка.Имя + разделитель ;
КонецЦикла;
Возврат стрКолонки;
КонецФункции
// Создаем строку записи ТаблицыЗначений для CSV-файла
Функция СоздатьСтрокуCSV(записьТаблицаЗначений,разделитель)
стрЗапись = "";
Для каждого поле Из записьТаблицаЗначений Цикл
стрЗапись = "" + стрЗапись + Строка(поле) + разделитель ;
КонецЦикла;
Возврат стрЗапись;
КонецФункции
// Создаем текст CSV:
// текст заголовков и
// текст данных
Функция СоздатьДанныеCSV(ТаблицаЗначений,разделитель)
текстЗапись="";
для каждого запись из ТаблицаЗначений Цикл
// начало цикла по строкам таблицы значений
// если не сформирована строка CSV с заголовками полей
// контактной информации — создаем
если текстЗапись="" тогда
текстЗапись=СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель)
+ Символы.ПС;
КонецЕсли;
// для каждой записи создаем строку CSV
стрЗапись = СоздатьСтрокуCSV(запись,разделитель);
// выводим сообщение в панель состояний
Сообщить(запись[0]);
Состояние(стрЗапись);
текстЗапись = текстЗапись + стрЗапись + Символы.ПС;
// Запишем данные в файл
Функция ЗаписатьCSV(текст,имяФайла)
//кодировка = КодировкаТекста.ANSI;
кодировка = КодировкаТекста.UTF8;
ТекстовыйФайлЗапись = Новый ЗаписьТекста(имяФайла,Кодировка);
ТекстовыйФайлЗапись.ЗаписатьСтроку(текст);
ТекстовыйФайлЗапись.Закрыть();
Возврат 0;
// Основная логика:
Функция ВыгрузитьОстаткиПоВсемСкладам_В_CSV(имяФайлаCSV);
сообщить("Выгрузить Контактную Информацию Контрагентов в формате CSV в " +
имяФайлаCSV);
ТаблицаЗначений = ПолучитьДанные();
текст = СоздатьДанныеCSV(ТаблицаЗначений,разделительCSV);
ЗаписатьCSV(текст,имяФайлаCSV);
сообщить(имяФайлаCSV + " -[OK!]" );
КонецФункции
штампДаты = Формат(ТекущаяДата(),"ДФ=ddMMyyyy_hhmm");
ВыгрузитьОстаткиПоВсемСкладам_В_CSV("C:\Temp\ostatki_" + штампДаты + ".csv");
(24) отладчик ничего не показывает. Просто сохраняет пустой файл.
Вот код из моего поделия.
//Запрос в регистр накопления ТоварыОрганизацийБУ
Функция ПолучитьОстатки()
ЗапросОстатка = Новый Запрос;
ЗапросОстатка.Текст =
"ВЫБРАТЬ
| ТоварыОрганизацийБУОстатки.Организация,
| ТоварыОрганизацийБУОстатки.Товар КАК Номенклатура,
| ТоварыОрганизацийБУОстатки.НомерГТД,
| ТоварыОрганизацийБУОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыОрганизацийБУ.Остатки(, Организация = &Организация) КАК ТоварыОрганизацийБУОстатки";
ЗапросОстатка.УстановитьПараметр("Организация", Организация);
РезультатОстатки = ЗапросОстатка.Выполнить();
ТаблицаОстатков = РезультатОстатки.Выгрузить();
Возврат ТаблицаОстатков;
КонецФункции
// Создаем заголовок для файла с остатками
// Цикл по колонкам ТаблицаОстатков
Функция СоздатьЗаголовокФайлаОстатков(ТаблицаОстатков,Разделитель)
КолонкиТО = ТаблицаОстатков.Колонки;
Для Каждого Колонка ИЗ КолонкиТО Цикл
СтрКолонки = "" + СтрКолонки + Колонка.Имя + Разделитель;
КонецЦикла;
Возврат СтрКолонки;
КонецФункции
// Создаем строку записи для
Функция СоздатьСтрокуФайлаОстатков(ТаблицаОстатков,Разделитель)
СтрОстатки = "";
Для Каждого Поле ИЗ ТаблицаОстатков Цикл
СтрОстатки = "" + СтрОстатки + Строка(Поле) + Разделитель;
КонецЦикла;
Возврат СтрОстатки;
КонецФункции
// Создаем текст CSV-файла: заголовок и сами данные
Функция СоздатьДанныеОстатки(ТаблицаОстатков,Разделитель)
ТекстОст = "";
Для Каждого Запись ИЗ ТаблицаОстатков Цикл
// Начало цикла по строкам ТаблицаОстатков
// если не сформирована строка CSV с заголовками полей
// контактной информацией — создаем
Если ТекстОст = "" Тогда
ТекстОст = СоздатьЗаголовокФайлаОстатков(ТаблицаОстатков,Разделитель) + Символы.ПС;
КонецЕсли;
// Для каждой записи создаем строку
СтрОстатки = СоздатьСтрокуФайлаОстатков(Запись,Разделитель);
// Выводим сообщение в панель состояний
ТекстОст = ТекстОст + СтрОстатки + Символы.ПС;
КонецЦикла;
Возврат ТекстОст;
КонецФункции
// Запись данных в файл
Функция ЗаписатьДанныеОстатокВФайл(ТекстФайлаОст,ИмяФайлаОстатки)
Кодировка = КодировкаТекста.UTF8;
ТекстФайлОстаток = Новый ЗаписьТекста(ИмяФайлаОстатки,Кодировка);
ТекстФайлОстаток.ЗаписатьСтроку(ТекстФайлаОст);
ТекстФайлОстаток.Закрыть();;
Возврат 0;
КонецФункции
// Основная логика
Функция ВыгрузитьОстатки(ИмяФайлаОстатки) Экспорт
Сообщить("Выгрузить Контактную Информацию Контрагентов в формате CSV в " + ИмяФайлаОстатки);
Разделитель = "|";
ТекДатаСтр = Формат(ТекущаяДата(),"ДФ = ddMMyyyy_hhmm");
КаталогВыгрузки = КаталогВыгрузкиДанных;
ИмяФайлаОстатки = КаталогВыгрузки + "\" + "Остаток" + ТекДатаСтр + ".csv";
ТаблицаОстатков = ПолучитьОстатки();
ТекстФайлаОст = СоздатьДанныеОстатки(ТаблицаОстатков,Разделитель);
ЗаписатьДанныеОстатокВФайл(ТекстФайлаОст,ИмяФайлаОстатки);
КонецФункции
(25) Тайну великую открою тебе, о падаван юный.
Отладчик показывать не может ничего.
На этой строке ЗаписатьДанныеОстатокВФайл(ТекстФайлаОст,ИмяФайлаОстатки);
поставь точку останова и посмотри на ТекстФайлаОст.
Что находится там?
Не находится там ничего если, то в функцию СоздатьДанныеОстатки() смотри пошагово, почему не записывается результат.
ЗЫ. А ещё лучше — позови программиста. Он путь тебе истинный покажет, и дорогу на сторону светлую укажет.
если совсем просто — нужно добавить несколько строк в работающий отчет
Процедура Отчет() Экспорт
//БС> bs 05.01.2017 12:27:43
ТекстЗапись Новый ЗаписьТекста(Путь,КодировкаТекста.UTF8);
Разделитель = "|";
//БС< 05.01.2017 12:27:47
// <<КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(Отчет)
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Склад,
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад) КАК ТоварыНаСкладахОстатки";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
//БС> bs 05.01.2017 12:28:36
СтрокаТекста = "" + Выборка.Склад + Разделитель
+ Выборка.Номенклатура + Разделитель
+ Выборка.КоличествоОстаток;
ТекстЗапись.ЗаписатьСтроку(СтрокаТекста);
//БС< 05.01.2017 12:28:37
КонецЦикла;
//>>КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ
//БС> bs 05.01.2017 12:34:20
ТекстЗапись.Закрыть();
//БС< 05.01.2017 12:34:25
КонецПроцедуры
(26) ТС "новичок" больше 4-х лет. Ему программист не укажет дорогу, ему больше нужны "двое из ларца одинаковы с лица"
(.. вы что, и за меня кодить будете?
— ДА!
— совсем ламеры о. )
или "что, хозяин, надо?" (кольцо Скарабеи там их, вроде, 3 шт. было)
(27) за 2 дня можно было уже накропать простую запись в CSV (дочке пендаля выдал, она мне за 2 часа сделала выгрузку в CSV при уровне знаний "Прочитала ЖКК", только показал как выбрать данные запросом — обход выборки и запись сама)
1С 8.3 CSV — Программист 1С Минск. Автоматизация бизнеса.

//*** Если есть шапка таблицы ***
ШапкаCSV = ФайлCSV . ПолучитьСтроку ( 1 );
// Чтение и разделение на отдельные значения в массив (по разделителю)
МассивCSV = СтрРазделить ( ШапкаCSV , ИспользуемыйРазделитель );
//***************************
Для Каждого СтрокаНом Из МассивCSV Цикл
// Удаляем пробелы т.к. в названии столбцов они не допускаются
ИмяБП = СтрЗаменить ( СтрокаНом , » » , «» );
ТЗ . Колонки . Добавить ( ИмяБП ,, СтрокаНом );
Для НомерСтроки = 2 По ФайлCSV . КоличествоСтрок () Цикл // Если без шапки, то начинаем с первой строчки
// Получаем строку по-порядку
СтрокаCSV = ФайлCSV . ПолучитьСтроку ( НомерСтроки );
// Разделяем с помощью выбранного разделителя каждую строку на столбцы
МассивCSV = СтрРазделить ( СтрокаCSV , ИспользуемыйРазделитель );
НоваяСтрочка = ТЗ . Добавить (); // Добавляем строку в ТЗ
Для НомСтолбца = 1 По МассивCSV . Количество () Цикл
ТекЗначениеCSV = МассивCSV [ НомСтолбца — 1 ];
ИмяКолонкиCSV = ТЗ . Колонки [ НомСтолбца — 1 ]. Имя ;
НоваяСтрочка [ ИмяКолонкиCSV ] = ТекЗначениеCSV ;
&НаСервере
Процедура ВыгрузкаВФайлCSVСоздание ();
ИспользуемыйРазделитель = «;» ;
ФайлCSV = «D:\import_21092020.csv» ;
//*** Получаем данные из запроса ***
Запрос = Новый Запрос ;
Запрос . Текст =
«ВЫБРАТЬ
| ВнутреннийПрайс.Код КАК Код,
| ВнутреннийПрайс.Наименование КАК Наименование,
| ВнутреннийПрайс.ЗакупочнаяЦена КАК ЗакупочнаяЦена,
| ВнутреннийПрайс.РозничнаяЦена КАК РозничнаяЦена,
| ВнутреннийПрайс.ОптоваяЦена КАК ОптоваяЦена
|ИЗ
| Справочник.Цены КАК ВнутреннийПрайс» ;
РезультатЗапроса = Запрос . Выполнить (). Выгрузить ();
ТЗ = РезультатЗапроса ;
//**********************************
ТекстCSV = «» ; // Текст с учетом заголовков, разделителей и переноса строк
Для Каждого СтрокаТЗ Из ТЗ Цикл
Если ТекстCSV = «» Тогда
СтрокаКол = «» ;
КолонкиТЗ = ТЗ . Колонки ;
Для Каждого Колонка Из КолонкиТЗ Цикл
СтрокаКол = «» + СтрокаКол + Колонка . Имя + ИспользуемыйРазделитель ;
КонецЦикла;
ТекстCSV = СтрокаКол + Символы . ПС ;
ТекстCSV = ТекстCSV + СтрокаТЗ . Код + ИспользуемыйРазделитель + СтрокаТЗ . Наименование
+ ИспользуемыйРазделитель + СтрокаТЗ . ЗакупочнаяЦена + ИспользуемыйРазделитель + СтрокаТЗ . РозничнаяЦена
+ ИспользуемыйРазделитель + СтрокаТЗ . ОптоваяЦена + Символы . ПС ;
КодANSI = КодировкаТекста . ANSI ;
ТекстовыйФайлЗапись = Новый ЗаписьТекста ( ФайлCSV , КодANSI ); // Создание файла CSV
ТекстовыйФайлЗапись . ЗаписатьСтроку ( ТекстCSV ); // Запись информации в файл
ТекстовыйФайлЗапись . Закрыть (); // Обязательно закрываем, иначе зависает в процессе
Бесплатный способ выгрузить данные из 1С в Интернет магазин
В бесплатных скриптах интернет магазинов, о которых мы рассказываем (см. Каталог скриптов на нашем сайте) есть практически всё для организации электронной коммерции: они русифицированны, богаты функционалом и бесплатны. Но вот, к сожалению, практически все они не Российские и не умеют загружать данные из популярной в России программы «1С:Управление торговлей».
Для загрузки данных из программы 1С существуют дополнительные платные модули для скриптов. Но всё же имеется возможность, оставить бесплатный скрипт бесплатным: можно штатными средствами скриптов и 1С осуществить обмен данными. В этом посте мы расскажем нашим читателям, как можно своими силами: быстро и бесплатно загрузить информацию о товарах из 1С в интернет магазин.
Для обмена данными воспользуемся тем, что практически во всех скриптах интернет магазинов имеется модуль загрузки данных в CSV формате. CSV — это обычный текстовый файл, информация в котором разграниченна, каким нибудь символом. Обычно это запятая. Например информаця о товарах может выглядеть так:
- Товар, Количество, Цена
- Кроссовки, 10, 1800
- Вентилятор, 150, 350
Как вы видите, это посути таблица: в каждой строке новый товар и информация о его цене и количестве, а первая строка это заголовки столбцов.
Для того что бы осуществить обмен данными нам нужно подготовить такой файл с данными в формате CSV и загрузить его в интернет магазин.
Осталось только выгрузить информацию о товарах из 1С в CSV формате. К сожалению 1С напрямую не умеет выгружать данные в CSV формате. Можно написать дополнительный модуль для 1С (обработку), которая выгрузила бы нужные нам данные в этом формате, но существует более простой способ это сделать.
Суть нашего простого способа в том, что в 1С можно сформировать отчет о товарах, а затем этот отчет сохранить в формате XLS (документ Excel). Затем этот файл открыть в Excel и заново сохранить уже в формате CSV. Excel умеет сохранять данные в этом формате.
Подробная инструкци по выгрузке данных из 1С в CSV формате:
- В программе «1С:Управление торговлей» сформируйте отчет: Стоимостная оценка склада в ценах номенклатуры. Но находится в меню: Отчеты -> Запасы.
- Когда отчет будет сформирован, сохраните его: Файл -> Сохранить Копию.
- При сохранении укажите формат сохраняемого файла «Лист Excel (*.xls)».
- Откройте сохранённый файл в программе Excel.
- В программе Excel заново сохраните файл: Файл -> Сохранить как
- При сохранении укажите формат сохраняемого файла: CSV.
Что бы загрузить полученный файл с данными в интернет магазин, вам нужно в админке интернет магазина найти раздел, который может называться примерно так: Импорт в формате CSV. Затем выбрать наш файл с данными и нажать кнопку Загрузить. После этого вам нужно будет сопоставить названия столбцов в вашем файле с названиями полей базы данных в интернет магазине.
Если вы разбираетесь в 1С можно написать дополнительный отчет который выдаст всю необходимую информацию для интернет магазина (не только остаток и цену). Можно написать обработку которая будет сохранять данные сразу в CSV формат. В ближайшее время на нашем сайте появится урок по написанию такой обработки.