Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Импорт csv в 1с77
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
igmig65
Проблема вот в чем: При выгрузке с сайта данных в csv формате несколько полей выгружаются с разрывами строк. Тоесть на сайте есть поле Адрес, многострочное, так вот, если пользователь вносит алрес без ЕНТЕР, то строка автоматом переносится, и нет никаких разрывов строк. Но есть такие которые вносят адрес, и сами переносят строку (ЕНТЕР). Соответственно Адрес разрывается разрывом строк. И получается я должен получить строку с 25 полями, а получаю с 12, а следующую с 14.
Пытался удалить символ разрыва и заново сохранить файл, но сохраняется опять же таже строка, и 1с автоматом опять этот разрыв ставит.
Можно конечно же собирать строку из нескольких пока не получу нужное кол-во полей. Но а вдруг неполучу, тоесть сначала меньше будет, а потом больше. Может есть какой другой способ.
logist
А сайт на чем написан? Вероятно лучше на стороне сайта убрать из строки символы перевода строки (когда идет обработка формы ввода, POST)
Vofka
Вероятней нужно при записи в базу ещё проверять адрес на корявость.
igmig65
Цитата(logist)
А сайт на чем написан? Вероятно лучше на стороне сайта убрать из строки символы перевода строки (когда идет обработка формы ввода, POST)

Проблематично, хотя это было бы правильно
Цитата(Vofka)
Вероятней нужно при записи в базу ещё проверять адрес на корявость.

Так и пришлось, только не один адрес. Может кому интересно, вот как решил
    для сч = 2 по  ткТовар.КоличествоСтрок() Цикл
        текСтрока = ткТовар.ПолучитьСтроку(сч);
        Если СокрЛП(текСтрока)="" Тогда
            Продолжить;
        КонецЕсли;
        текСтрока = текСтрока + ";";
        текСпис.УдалитьВсе();
        Парсить(текСтрока,текСпис);
        Пока текСпис.РазмерСписка() < КвоПолей Цикл
            сч=сч+1;
            //удалим разрыв строки и ";"
            текСтрока = Лев(текСтрока,СтрДлина(текСтрока)-2);
            текСтрока = текСтрока+ткТовар.ПолучитьСтроку(сч)+";";
            текСпис.УдалитьВсе();
            Парсить(текСтрока,текСпис);
        КонецЦикла;
        Если текСпис.РазмерСписка() > КвоПолей Тогда
            Сообщить("Немогу получить строку с кол-вом полей "+КвоПолей);
            Возврат;
        КонецЕсли;
sava1
Если пользуете 1срр тогда смотрим в сторону Индексированная таблица.ИзФайла(стрИмяФайла, [чФормат = 1], [чСИменамиКолонок = 1])
mister-x
Цитата
Если пользуете 1срр тогда смотрим в сторону Индексированная таблица.ИзФайла(стрИмяФайла, [чФормат = 1], [чСИменамиКолонок = 1])
ви, мабуть, не зрозуміли - чоловік проблему вирішив
sava1
Это не решение, а изврат (имхо)
Vofka
Цитата
ви, мабуть, не зрозуміли - чоловік проблему вирішив

Решил или нет, человек предлагает новый вариант. Даже если автор решил проблему, может кто-нибудь воспользуется советом sava1.
mister-x
Цитата
Это не решение, а изврат (имхо)
а якщо чоловік не юзає додат. компонент, тоді норма
Цитата
Решил или нет, человек предлагает новый вариант. Даже если автор решил проблему, может кто-нибудь воспользуется советом sava1.
ок
igmig65
Цитата
Это не решение, а изврат (имхо)

В чем же изврат, без 1срр. Как собрать строку, если одно поле в строке файла многострочное.
sava1
Не пробовал, но должно пройти СтрЗаменить(,chr(10)," ")
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.