Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 19:25

Убрать пробел в числе при экспорте в CSV

Автор kot488, 22 дек 2017, 16:41

0 Пользователей и 1 гость просматривают эту тему.

kot488

Подскажите пожалуйста, как можно убрать пробелы между числами, что бы не было 1 000 а было 1000.
Делается запрос к внешнему источнику данных и потом формируется 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 КАК ЦенаУслуги,
| PRAJS_LIST.PRINTING КАК Печатать
|ИЗ
| ВнешнийИсточникДанных.MEDUCHET.Таблица.PRAJS_LIST КАК PRAJS_LIST
|ГДЕ
| PRAJS_LIST.KASSOVYJ_KOD > 0
| И PRAJS_LIST.CYENA > 0
| И PRAJS_LIST.PRINTING = 0
|
|УПОРЯДОЧИТЬ ПО
| ВнутреннийКодГруппыУслуг";

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

текст="";
для каждого запись из ТаблицаЗначений Цикл
если текст="" тогда
текст=СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель)
+ Символы.ПС;
КонецЕсли;

сообщить(запись.НазваниеУслуги);
текст = текст + запись.ВнутреннийКодГруппыУслуг
+ разделитель + запись.НазваниеГруппыУслуг
+ разделитель + запись.ВнутреннийКодПодгруппыУслуг
+ разделитель + запись.НазваниеПодгруппыУслуг
+ разделитель + запись.ВнутреннийКодУслуги
+ разделитель + запись.НазваниеУслуги
+ разделитель + запись.КассовыйКодУслуги
+ разделитель + запись.ЦенаУслуги
+ Символы.ПС;
КонецЦикла;

    //сообщить(текст);
Возврат текст;

КонецФункции //
Функция ЗаписатьCSV(текст,имяФайла)         
кодировка = КодировкаТекста.UTF8;

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

КонецФункции //
// Основная логика:
Функция ВыгрузитьВCSV(имяФайлаCSV);
    разделитель = ";";
ТаблицаЗначений = ПолучитьНоменклатуру();
текст = СоздатьДанныеCSV(ТаблицаЗначений,разделитель);
ЗаписатьCSV(текст,имяФайлаCSV);


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

alex0402

Цитата: kot488 от 22 дек 2017, 16:41Подскажите пожалуйста, как можно убрать пробелы между числами, что бы не было 1 000 а было 1000.
Формат(Число,"ЧГ=0")
Спасибо за Сказать спасибо

kot488

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

AIFrame

Можно выгрузить эти колонки из результата запроса, отформатировать значения и загрузить в ТЧ обратно.
Либо не выгружая обойти все строки в ТЧ и поправить.
Вместо Формата еще можно использовать
строка = СтрЗаменить(строка, Символы.НПП, "");

kot488

Цитата: AIFrame от 22 дек 2017, 18:27
Можно выгрузить эти колонки из результата запроса, отформатировать значения и загрузить в ТЧ обратно.
Либо не выгружая обойти все строки в ТЧ и поправить.
Вместо Формата еще можно использовать
строка = СтрЗаменить(строка, Символы.НПП, "");

Если не тяжело, можете на примере показать как реализовать?

Дмитрий@

Или например "Строка = СтрЗаменить(Строка,Символ(160),"")"

ilyay

А если у вас ";" встретится внутри строки?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск