Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выгрузка содержимого файла в справочник , Помогите выгрузить содержимое файла в справочник 2 страниц V   1 2 >          
feitosa Подменю пользователя
сообщение 22.11.11, 14:13
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

Есть файл test.csv в нем 3 строки :

1;Kill agency;Kill mad dog;600;22.11.2011 0:00:00;Ivanov;1
2;Clean service;Clean home;100;24.11.2011 0:00:00;Sidorov;2
3;Transport ink;Odessa kiev;7 000;24.11.2011 0:00:00;Petrov;3

Ну собственно код :

Текст = Новый ТекстовыйДокумент;
// открытие файла
Текст.Прочитать("D:/test.csv");
// перебор строк текстового документа
Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
// получить строку файла с указанным номером
Стр = Текст.ПолучитьСтроку(НомерСтроки);
// «распарсивание» строки
// ищем позицию символа-разделителя
Позиция = Найти (Стр,";");
// создаем новый элемент справочника
Спр=Справочники.Accounts.СоздатьЭлемент();
// в код записывается подстрока от первого символа до позиции
// символа-разделителя
Спр.Код = Сред(Стр,1,Позиция-1);
// за символом-резделителем – наименование клиента
Спр.Наименование = Сред (Стр, Позиция+1);
Спр.Записать();
КонецЦикла;


Так вот проблема в том что чтение строки происходит до первой ; (точки с запятой) и в итоги зиписывается только 1 2 3.
Что не так с кодом???
_

sava1 Подменю пользователя
сообщение 22.11.11, 14:33
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

А отладчик-то что говорит ?

feitosa Подменю пользователя
сообщение 22.11.11, 14:34
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

Нет !

sava1 Подменю пользователя
сообщение 22.11.11, 14:43
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

Для начала я бы все-таки распарсил полностью строку ( список/массив/структура....)
для примера функция - (автор E_Migachev)

глРазложить(Стр,Разделитель)

Параметры:
Стр - строка, которую необходимо разложить на подстроки.
Параметр передается по значению.
Разделитель - строка-разделитель, по умолчанию - запятая.

Возвращаемое значение:
список значений, элементы которого - подстроки

Описание:
Функция "расщепляет" строку на подстроки, используя заданный разделитель.
Разделитель может иметь любую длину.
Если в качестве разделителя задан пробел, рядом стоящие пробелы
считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
игнорируются.

Пример:
глРазложить(",ку,,,му", ",")
возвратит список значений из пяти элементов,
три из которых - пустые строки, а
глРазложить(" ку му", " ")
возвратит список значений из двух элементов

Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт
    СЗ = Новый СписокЗначений;
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                СЗ.Добавить(Стр);
                Возврат СЗ;
            КонецЕсли;
            СЗ.Добавить(Лев(Стр,Поз-1));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                СЗ.Добавить(Стр);
                Возврат СЗ;
            КонецЕсли;
            СЗ.Добавить(Лев(Стр,Поз-1));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
КонецФункции
Причина редактирования: Используйте теги для выделения кода. Vofka.

Vofka Подменю пользователя
сообщение 22.11.11, 14:51
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

Люди, учитесь пользоваться поиском в конце то концов!

Спасибо сказали: feitosa,

feitosa Подменю пользователя
сообщение 22.11.11, 15:13
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

написал что-то типа :

Текст = Новый ТекстовыйДокумент;
// открытие файла
Текст.Прочитать("D:/test.csv");
// перебор строк текстового документа
Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
// получить строку файла с указанным номером
Стр = Текст.ПолучитьСтроку(НомерСтроки);
// «распарсивание» строки
// ищем позицию символа-разделителя
Позиция = Найти (Стр,";");
// создаем новый элемент справочника
Спр=Справочники.Accounts.СоздатьЭлемент();

Спр.Код = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.id = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.firm_id = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.servise_id = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.summ = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.date_of = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.user_id = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.doc_no = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.Записать();


Вписывает только значения ЧИСЛО (id, сумму, код), а вот вполя где СТРОКА пусто sad.gif

sava1 Подменю пользователя
сообщение 22.11.11, 15:45
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2697
Из: Проскуров
Спасибо сказали: 682 раз
Рейтинг: 661

А дальше проходим отладчиком по коду, который в цикле - смотрим значения, присваемые реквизитам справочника.
Если они заполнены - смотреть на типы, если нет - искать в строке....

feitosa Подменю пользователя
сообщение 22.11.11, 15:50
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(sava1 @ 22.11.11, 15:45) *
А дальше проходим отладчиком по коду, который в цикле - смотрим значения, присваемые реквизитам справочника.
Если они заполнены - смотреть на типы, если нет - искать в строке....


Я новичек в 1С поэтому мало что понял =(

pablo Подменю пользователя
сообщение 22.11.11, 15:53
Сообщение #9

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Тогда почитайте про преобразование типов данных в 1с.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

feitosa Подменю пользователя
сообщение 22.11.11, 15:59
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

Ну а все-таки, прошу, напишите как это должнол выглядеть!

pablo Подменю пользователя
сообщение 22.11.11, 16:12
Сообщение #11

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Как-то так:
Спр.servise_id = Функция_Преобразования_Типа(Лев(Стр, Найти(Стр, ";")-1));


Сообщение отредактировал pablo - 22.11.11, 16:13


Signature
Правильно поставленный вопрос содержит до 90% ответа.

feitosa Подменю пользователя
сообщение 29.11.11, 15:55
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(pablo @ 22.11.11, 16:12) *
Как-то так:
Спр.servise_id = Функция_Преобразования_Типа(Лев(Стр, Найти(Стр, ";")-1));


Чето я немогу догнать icon_cuss.gif =) как все это должно быть ? =)

feitosa Подменю пользователя
сообщение 30.11.11, 9:20
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(feitosa @ 29.11.11, 15:55) *
Чето я немогу догнать icon_cuss.gif =) как все это должно быть ? =)



Ну... Я про функцию =)

Домовик Подменю пользователя
сообщение 30.11.11, 9:48
Сообщение #14

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

имя функции такое. красным просто выделелось. это не синтаксиз.

pablo Подменю пользователя
сообщение 30.11.11, 12:39
Сообщение #15

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Точного имени функции Вы тут не дождетесь. Просто знание этих функций - основа любого языка программирования. И уж если Вы про такие основы читать отказываетесь...

Сообщение отредактировал pablo - 30.11.11, 12:40


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Домовик Подменю пользователя
сообщение 30.11.11, 13:49
Сообщение #16

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

та така червоненько-синенька функція, можна і заплутатись )). В синтакс-помічнику функции встренного языка для простих типів.

Для складних типів (довідник, документ, регистрСведений ....) треба створити або знайти елемент, документ.... по коду чи по найменуванню, записати. Лише потім його присвоювати реквізиту його поточне значення.

feitosa Подменю пользователя
сообщение 30.11.11, 16:13
Сообщение #17

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

Попытка номер два =)

Текст = Новый ТекстовыйДокумент;
// открытие файла
Текст.Прочитать("D:/test.csv");
// перебор строк текстового документа
Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
// получить строку файла с указанным номером
Стр = Текст.ПолучитьСтроку(НомерСтроки);
// «распарсивание» строки
// ищем позицию символа-разделителя
Позиция = Найти (Стр,";");
// создаем новый элемент справочника
//Спр = Справочники.Accounts.СоздатьЭлемент();
Спр = Справочники.Accounts.Выбрать().ПолучитьОбъект();

Спр.Код = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.id = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

пр = Лев(Стр, Найти(Стр, ";")-1);
Сообщить(пр);
Спр.firm_id = пр;
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.servise_id = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.summ = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.date_of = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.user_id = Лев(Стр, Найти(Стр, ";")-1);
Стр = Прав(Стр, СтрДлина(Стр) - Найти(Стр, ";"));

Спр.doc_no = Стр;

Спр.Записать();


Пишет "Элемент не выбран!"
Слушаю Вас что тут не так.......

Ну и КонецЦикла . Просто забыл дописать

Zaval Подменю пользователя
сообщение 30.11.11, 16:14
Сообщение #18

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Спр = Справочники.Accounts.Выбрать().ПолучитьОбъект();


Не слушать надо, а посмотреть в Отладчике результат выполнения этого действа.

feitosa Подменю пользователя
сообщение 30.11.11, 16:20
Сообщение #19

Общительный
**
Группа: Пользователи
Сообщений: 34
Спасибо сказали: 0 раз
Рейтинг: 0

Пля.... icon_cuss.gif Сделайти КНОПКУ Редактировать

Цитата(Zaval @ 30.11.11, 16:14) *
Спр = Справочники.Accounts.Выбрать().ПолучитьОбъект();


Не слушать надо, а посмотреть в Отладчике результат выполнения этого действа.


блин! РаскАжиТЕ как пользоваться этим Отладчиком! Куда нажимать и что смотреть?

Товарищ Vofka не сочтите это за нарушение правил =)

Zaval Подменю пользователя
сообщение 30.11.11, 16:21
Сообщение #20

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(feitosa @ 30.11.11, 16:15) *
Пля.... icon_cuss.gif Сделайти КНОПКУ Редактировать


Ппц, приехали. "Изменить" - выбрать вид редактирования... чем не устраивает?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.24, 2:51
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!