В 1С есть обработка которая подключается к firebird, вытагивает прайс и импортирует в csv. Экспорт проходит нормально, но с одной позицией проблема. При экспорте режит эту позицию пополом и получается не коректное отображение.
Вот код обработки
Функция ПолучитьНоменклатуру()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| PRAJS_LIST.KOD_USLUGI.KOD_PODGRUPPY_USLUGI.KOD_GRUPPY_USLUG.KOD_GRUPPY_USLUG КАК ВнутреннийКодГруппыУслуг,
| PRAJS_LIST.KOD_USLUGI.KOD_PODGRUPPY_USLUGI.KOD_GRUPPY_USLUG.NAZVANIYE_GRUPPY_USLUG КАК НазваниеГруппыУслуг,
| PRAJS_LIST.KOD_USLUGI.KOD_PODGRUPPY_USLUGI.KOD_PODGRUPPY_USLUG КАК ВнутреннийКодПодгруппыУслуг,
| PRAJS_LIST.KOD_USLUGI.KOD_PODGRUPPY_USLUGI.NAZVANIYE_PODGRUPPY_USLUG КАК НазваниеПодгруппыУслуг,
| PRAJS_LIST.KOD_USLUGI КАК ВнутреннийКодУслуги,
| PRAJS_LIST.KOD_USLUGI.NAZVANIYE_USLUGI КАК НазваниеУслуги,
| PRAJS_LIST.KASSOVYJ_KOD КАК КассовыйКодУслуги,
| PRAJS_LIST.CYENA КАК ЦенаУслуги
|ИЗ
| ВнешнийИсточникДанных.MEDUCHET.Таблица.PRAJS_LIST КАК PRAJS_LIST
|ГДЕ
| PRAJS_LIST.KASSOVYJ_KOD > 0
| И PRAJS_LIST.CYENA > 0
| И PRAJS_LIST.PRINTING = -1
| И PRAJS_LIST.DYEJSTVITYELNYJ = -1
|
|УПОРЯДОЧИТЬ ПО
| ВнутреннийКодГруппыУслуг";
Результат = Запрос.Выполнить();
ТаблицаЗначений = Результат.Выгрузить();
возврат ТаблицаЗначений;
КонецФункции //
Функция СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель)
разделитель = ";";
колонкиТЗ=ТаблицаЗначений.колонки;
Для каждого колонка Из колонкиТЗ Цикл
стрКолонки = "" + стрКолонки + колонка.Имя + разделитель;
КонецЦикла;
Возврат стрКолонки;
КонецФункции
Функция ЧислоВСтроку(Ч)
Возврат СтрЗаменить(Строка(Ч),Символы.НПП,"");
КонецФункции
Функция СоздатьДанныеCSV(ТаблицаЗначений,разделитель)
строка = СтрЗаменить(строка, Символы.НПП, "");
текст="";
для каждого запись из ТаблицаЗначений Цикл
если текст="" тогда
текст=СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель)
+ Символы.ПС;
КонецЕсли;
сообщить(запись.НазваниеУслуги);
текст = текст + ЧислоВСтроку(запись.ВнутреннийКодГруппыУслуг)
+ разделитель + запись.НазваниеГруппыУслуг
+ разделитель + ЧислоВСтроку(запись.ВнутреннийКодПодгруппыУслуг)
+ разделитель + запись.НазваниеПодгруппыУслуг
+ разделитель + ЧислоВСтроку(запись.ВнутреннийКодУслуги)
+ разделитель + запись.НазваниеУслуги
+ разделитель + ЧислоВСтроку(запись.КассовыйКодУслуги)
+ разделитель + ЧислоВСтроку(запись.ЦенаУслуги)
+ Символы.ПС;
КонецЦикла;
//сообщить(текст);
Возврат текст;
КонецФункции //
Функция ЗаписатьCSV(текст,имяФайла)
кодировка = КодировкаТекста.UTF8;
ТекстовыйФайлЗапись = Новый ЗаписьТекста(имяФайла,Кодировка);
ТекстовыйФайлЗапись.ЗаписатьСтроку(текст);
ТекстовыйФайлЗапись.Закрыть();
Возврат 0;
КонецФункции //
// Основная логика:
Функция ВыгрузитьВCSV(имяФайлаCSV);
разделитель = ";";
ТаблицаЗначений = ПолучитьНоменклатуру();
текст = СоздатьДанныеCSV(ТаблицаЗначений,разделитель);
ЗаписатьCSV(текст,имяФайлаCSV);
КонецФункции
То, что пишет Google, не пробовали?
"Как преобразовать файл Excel в CSV:
1. В рабочей книге Excel откройте вкладку Файл (File) и нажмите Сохранить как (Save as). Кроме этого, диалоговое окно Сохранение документа (Save as) можно открыть, нажав клавишу F12.
2. В поле Тип файла (Save as type) выберите CSV (разделители – запятые) (CSV (Comma delimited))."
А сохранять табличный документ в xls, надеюсь, умеет каждый.
Moloko, причем здесь "преобразовать файл Excel в CSV"?
kot488, возможно визуально символ на экране выглядит как пробел, но на самом деле то не пробел.
kot488 @ Сегодня, 10:08
,
Очищайте добавляемые значения от символов перевода строк и прочих. Также позаботьтесь о приведении к стандарту значений, содержащих разделитель.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua