8.х Из csv в 1С

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем KRUGER99, 20 ноя 2011.

  1. TopicStarter Overlay
    KRUGER99
    Offline

    KRUGER99

    Регистрация:
    20 ноя 2011
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Добрый день! Столкнулся с необходимостью загрузки из csv в 1с. Файл типа много строк с составо примерно
    кока кола|мандарин|апельсин
    Подскажите может у кого есть какие наработки? Или может умные мысли в какую сторону двигаться? Я програмирую недавно, поэтому немного теряюсь.
    Есть следующий текст , но он не удовлетворяет требованиям.

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Текст = Новый ТекстовыйДокумент();

    //Открываем наш файл, обязательно правильно указать кодировку файла
    Текст.Прочитать(ИмяФайла, КодировкаТекста.ANSI);


    //Заполним разделитель в файле
    СимволРазделитель = "|";

    //Перебираем строки файла и заполняем документ
    Для а = 1 по Текст.КоличествоСтрок() Цикл

    //Получим очередную строку
    Стр = Текст.ПолучитьСтроку(а);

    //Занесем строку во временную переменную
    //с ней и будем работать
    ТекСтрока = Стр;

    //Найдем разделитель
    НомерСимвола = Найти(ТекСтрока,СимволРазделитель);

    //значение до разделителя выбираем
    ТНаименование = СокрЛП(Лев(ТекСтрока,НомерСимвола - 1));

    //обрезаем строку до первого символа после разделителя
    ТекСтрока = Сред(ТекСтрока,НомерСимвола + 1);

    //Ищем следующий разделитель
    //если это поледний реквизит можно просто взять оставшуюся строку
    НомерСимвола = Найти(ТекСтрока,СимволРазделитель);
    ТИзм = Лев(ТекСтрока,НомерСимвола - 1);
    //Если наименование пустое, считаем строку пустой
    //сообщим об этом пользователю
    Если тНаименование = "" Тогда
    Сообщить("Пустая строка " + Строка(а));
    Продолжить;
    КонецЕсли;


    Товар = Справочники.Номенклатура.ПустаяСсылка();

    // Ищем товар по наименованию
    Если ТНаименование <> "" Тогда
    Товар = Справочники.Номенклатура.НайтиПоНаименованию(ТНаименование);
    Конецесли;

    //Если не нашли создаем новый товар
    Если Товар.Пустая() Тогда
    Товар = Справочники.Номенклатура.СоздатьЭлемент();
    Товар.Наименование = ТНаименование;
    Товар.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТИзм);
    //....Заполняем остальные реквизиты
    Товар.Записать();
    Иначе

    //Если нашли, получим объект
    Товар = Товар.ПолучитьОбъект();
    Товар.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию(ТИзм);
    //....Заполняем реквизиты (если нужно)
    Конецесли;
    КонецЦикла;
    //Если цена не пустая, добавим в документ новую строку

    Сообщить("ЗАГРУЗКА ЗАВЕРШЕНА");

    Во первых не удовлетворяет потому как нужно явно знать количество полей.Может поможете?
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.987
    Симпатии:
    398
    Баллы:
    104

Поделиться этой страницей