Текст = Новый ТекстовыйДокумент; // открытие файла Текст.Прочитать("D:/test.csv"); // перебор строк текстового документа Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл // получить строку файла с указанным номером Стр = Текст.ПолучитьСтроку(НомерСтроки); // «распарсивание» строки // ищем позицию символа-разделителя Позиция = Найти (Стр,";"); // создаем новый элемент справочника Спр=Справочники.Accounts.СоздатьЭлемент(); // в код записывается подстрока от первого символа до позиции // символа-разделителя Спр.Код = Сред(Стр,1,Позиция-1); // за символом-резделителем – наименование клиента Спр.Наименование = Сред (Стр, Позиция+1); Спр.Записать(); КонецЦикла;
Так вот проблема в том что чтение строки происходит до первой ; (точки с запятой) и в итоги зиписывается только 1 2 3. Что не так с кодом??? _
Живет на форуме
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661
Для начала я бы все-таки распарсил полностью строку ( список/массив/структура....) для примера функция - (автор E_Migachev)
глРазложить(Стр,Разделитель)
Параметры: Стр - строка, которую необходимо разложить на подстроки. Параметр передается по значению. Разделитель - строка-разделитель, по умолчанию - запятая.
Возвращаемое значение: список значений, элементы которого - подстроки
Описание: Функция "расщепляет" строку на подстроки, используя заданный разделитель. Разделитель может иметь любую длину. Если в качестве разделителя задан пробел, рядом стоящие пробелы считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр игнорируются.
Пример:
глРазложить(",ку,,,му", ",")
возвратит список значений из пяти элементов, три из которых - пустые строки, а
глРазложить(" ку му", " ")
возвратит список значений из двух элементов
Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт СЗ = Новый СписокЗначений; Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда СЗ.Добавить(Стр); Возврат СЗ; КонецЕсли; СЗ.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда СЗ.Добавить(Стр); Возврат СЗ; КонецЕсли; СЗ.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции
Причина редактирования: Используйте теги для выделения кода. Vofka.
Текст = Новый ТекстовыйДокумент; // открытие файла Текст.Прочитать("D:/test.csv"); // перебор строк текстового документа Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл // получить строку файла с указанным номером Стр = Текст.ПолучитьСтроку(НомерСтроки); // «распарсивание» строки // ищем позицию символа-разделителя Позиция = Найти (Стр,";"); // создаем новый элемент справочника Спр=Справочники.Accounts.СоздатьЭлемент();
Живет на форуме
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661
А дальше проходим отладчиком по коду, который в цикле - смотрим значения, присваемые реквизитам справочника. Если они заполнены - смотреть на типы, если нет - искать в строке....
А дальше проходим отладчиком по коду, который в цикле - смотрим значения, присваемые реквизитам справочника. Если они заполнены - смотреть на типы, если нет - искать в строке....
Старейшина
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0
Точного имени функции Вы тут не дождетесь. Просто знание этих функций - основа любого языка программирования. И уж если Вы про такие основы читать отказываетесь...
Сообщение отредактировал pablo - 30.11.11, 12:40
Правильно поставленный вопрос содержит до 90% ответа.
та така червоненько-синенька функція, можна і заплутатись )). В синтакс-помічнику функции встренного языка для простих типів.
Для складних типів (довідник, документ, регистрСведений ....) треба створити або знайти елемент, документ.... по коду чи по найменуванню, записати. Лише потім його присвоювати реквізиту його поточне значення.
Текст = Новый ТекстовыйДокумент; // открытие файла Текст.Прочитать("D:/test.csv"); // перебор строк текстового документа Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл // получить строку файла с указанным номером Стр = Текст.ПолучитьСтроку(НомерСтроки); // «распарсивание» строки // ищем позицию символа-разделителя Позиция = Найти (Стр,";"); // создаем новый элемент справочника //Спр = Справочники.Accounts.СоздатьЭлемент(); Спр = Справочники.Accounts.Выбрать().ПолучитьОбъект();
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!