Версия для печати темы (http://pro1c.org.ua/index.php?s=81d3a5c048616170d83366409ed8fbf4&showtopic=43004)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ При экспорте в CVS обрезает строку

Автор: kot488 28.12.17, 9:32

В 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);
    КонецФункции



Должно быть в одну строку, а делает пополам



В источнике никаких символов кроме пробела нет, подскажите пожалуйста в чем может быть проблема?

Автор: Moloko 28.12.17, 9:51

То, что пишет Google, не пробовали?
"Как преобразовать файл Excel в CSV:
1. В рабочей книге Excel откройте вкладку Файл (File) и нажмите Сохранить как (Save as). Кроме этого, диалоговое окно Сохранение документа (Save as) можно открыть, нажав клавишу F12.
2. В поле Тип файла (Save as type) выберите CSV (разделители – запятые) (CSV (Comma delimited))."
А сохранять табличный документ в xls, надеюсь, умеет каждый.

Автор: Vofka 28.12.17, 10:01

Moloko, причем здесь "преобразовать файл Excel в CSV"? faceoff.gif

kot488, возможно визуально символ на экране выглядит как пробел, но на самом деле то не пробел.

Автор: kot488 28.12.17, 10:08

Цитата(Moloko @ 28.12.17, 9:51) *
То, что пишет Google, не пробовали?
"Как преобразовать файл Excel в CSV:
1. В рабочей книге Excel откройте вкладку Файл (File) и нажмите Сохранить как (Save as). Кроме этого, диалоговое окно Сохранение документа (Save as) можно открыть, нажав клавишу F12.
2. В поле Тип файла (Save as type) выберите CSV (разделители – запятые) (CSV (Comma delimited))."
А сохранять табличный документ в xls, надеюсь, умеет каждый.



Если бы нужно было это делать единожды, то и код не нужен быд бы.

Автор: Petre 28.12.17, 10:26

kot488 @ Сегодня, 10:08 * ,
Очищайте добавляемые значения от символов перевода строк и прочих. Также позаботьтесь о приведении к стандарту значений, содержащих разделитель.

Автор: kot488 04.01.18, 10:27

Цитата(Vofka @ 28.12.17, 10:01) *
возможно визуально символ на экране выглядит как пробел, но на самом деле то не пробел.



Спасибо. Переделали позицию и все норм стало

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua