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

внешняя обработка

Автор djvjv, 28 мар 2012, 09:08

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

djvjv

Помогите сделать импорт txt в 1с бухгалтерия 8.1 справочник номенклатура.
Опишите алгоритм который я должен сделать. А то я раньше с этим не сталкивался и пока не понимаю что нужно для загрузки txt файла в справочник.

cska-fanat-kz

Гуглите на тему работы с объектом типа "ТекстовыйДокумент".
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

djvjv

Этот код мне надо до вести до ума. Надо чтоб из текстового документа данные загружало в справочник номенклатура. Если нужно то конфигурация Бухгалтерия 1.6. Мне начальник дал задание. Я до этого с текстовыми документами не работал. Прошу помогите с кодом. А то это задание на мне уже 3-й день висит.

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Текст = Новый ТекстовыйДокумент;

Текст.Прочитать("c:\text2.txt");


СимволРазделитель = "|";

Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
   Стр = Текст.ПолучитьСтроку(НомерСтроки);
   ТемпСтрока = Стр;
   НомерСимвола = Найти(ТемпСтрока,СимволРазделитель);
   Наименование = СокрЛП(Лев(ТемпСтрока,НомерСимвола - 1));
   ТемпСтрока = Сред(ТемпСтрока,НомерСимвола + 1);
   НомерСимвола = Найти(ТемпСтрока,СимволРазделитель);
   Наименование = СтрЗаменить(Наименование, "|", Символ(34));

   МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр, "|");
   
    Для каждого ЭлементМассива из МассивСтрок Цикл
      Сообщить(ЭлементМассива)
    КонецЦикла; 
   
   Наименование = МассивСтрок[0];
   Код = МассивСтрок[1];
   Артикул = МассивСтрок[2];
   ВидНоменклатуры = МассивСтрок[3];
   ЕдиницаИзмерения = МассивСтрок[4];
   НаименованиеПолное = МассивСтрок[5];
   Описание = МассивСтрок[6];
   СтавкаНДС = МассивСтрок[7];
   ЦеноваяГруппа = МассивСтрок[8];
   Услуга = МассивСтрок[9];
   Номинал = МассивСтрок[10];
   ИспользоватьСерийныеНомера = МассивСтрок[11];
   ТипСерийногоНомера = МассивСтрок[12];
   ДатаОкончанияДействия = МассивСтрок[13];
   ТипСрокаДействия = МассивСтрок[14];
   Периодичность = МассивСтрок[15];
   КоличествоПериодовДействия = МассивСтрок[16];
   ПодарочныйСертификат = МассивСтрок[17];
   Весовой = МассивСтрок[18];
   Вес = МассивСтрок[19];
   НаборУпаковок = МассивСтрок[20];
   ТипНоменклатуры = МассивСтрок[21];
   ФайлКартинки = МассивСтрок[22];
   НоменклатурнаяГруппа = МассивСтрок[23];
   СтранаПроисхождения = МассивСтрок[24];
   
   Товар = Справочники.Номенклатура.ПустаяСсылка();
   
    // Ищем товар по наименованию
    Если Наименование <> "" Тогда
      Товар = Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
    Конецесли;
   
    //Если не нашли создаем новый товар
    Если Товар.Пустая() Тогда
      Товар         = Справочники.Номенклатура.СоздатьЭлемент();
      Товар.Наименование  = Наименование;
     
      //....Заполняем остальные реквизиты
      Товар.Записать();
    Иначе
     
      //Если нашли, получим объект
      Товар = Товар.ПолучитьОбъект();
     
      //....Заполняем реквизиты  (если нужно)
    Конецесли;
   
КонецЦикла;
КонецПроцедуры

djvjv

Этот код мне надо до вести до ума. Надо чтоб из текстового документа данные загружало в справочник номенклатура. Если нужно то конфигурация Бухгалтерия 1.6. Мне начальник дал задание. Я до этого с текстовыми документами не работал. Прошу помогите с кодом. А то это задание на мне уже 3-й день висит.

Процедура КнопкаВыполнитьНажатие(Кнопка)
   Текст = Новый ТекстовыйДокумент;

Текст.Прочитать("c:\text2.txt");


СимволРазделитель = "|";

Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
   Стр = Текст.ПолучитьСтроку(НомерСтроки);
   ТемпСтрока = Стр;
   НомерСимвола = Найти(ТемпСтрока,СимволРазделитель);
   Наименование = СокрЛП(Лев(ТемпСтрока,НомерСимвола - 1));
   ТемпСтрока = Сред(ТемпСтрока,НомерСимвола + 1);
   НомерСимвола = Найти(ТемпСтрока,СимволРазделитель);
   Наименование = СтрЗаменить(Наименование, "|", Символ(34));

   МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Стр, "|");
   
    Для каждого ЭлементМассива из МассивСтрок Цикл
      Сообщить(ЭлементМассива)
    КонецЦикла; 
   
   Наименование = МассивСтрок[0];
   Код = МассивСтрок[1];
   Артикул = МассивСтрок[2];
   ВидНоменклатуры = МассивСтрок[3];
   ЕдиницаИзмерения = МассивСтрок[4];
   НаименованиеПолное = МассивСтрок[5];
   Описание = МассивСтрок[6];
   СтавкаНДС = МассивСтрок[7];
   ЦеноваяГруппа = МассивСтрок[8];
   Услуга = МассивСтрок[9];
   Номинал = МассивСтрок[10];
   ИспользоватьСерийныеНомера = МассивСтрок[11];
   ТипСерийногоНомера = МассивСтрок[12];
   ДатаОкончанияДействия = МассивСтрок[13];
   ТипСрокаДействия = МассивСтрок[14];
   Периодичность = МассивСтрок[15];
   КоличествоПериодовДействия = МассивСтрок[16];
   ПодарочныйСертификат = МассивСтрок[17];
   Весовой = МассивСтрок[18];
   Вес = МассивСтрок[19];
   НаборУпаковок = МассивСтрок[20];
   ТипНоменклатуры = МассивСтрок[21];
   ФайлКартинки = МассивСтрок[22];
   НоменклатурнаяГруппа = МассивСтрок[23];
   СтранаПроисхождения = МассивСтрок[24];
   
   Товар = Справочники.Номенклатура.ПустаяСсылка();
   
    // Ищем товар по наименованию
    Если Наименование <> "" Тогда
      Товар = Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
    Конецесли;
   
    //Если не нашли создаем новый товар
    Если Товар.Пустая() Тогда
      Товар         = Справочники.Номенклатура.СоздатьЭлемент();
      Товар.Наименование  = Наименование;
     
      //....Заполняем остальные реквизиты
      Товар.Записать();
    Иначе
     
      //Если нашли, получим объект
      Товар = Товар.ПолучитьОбъект();
     
      //....Заполняем реквизиты  (если нужно)
    Конецесли;
   
КонецЦикла;
КонецПроцедуры

djvjv

Наименование = МассивСтрок[0];
   Код = МассивСтрок[1];
   Артикул = МассивСтрок[2];
   ВидНоменклатуры = МассивСтрок[3];
   ЕдиницаИзмерения = МассивСтрок[4];
   НаименованиеПолное = МассивСтрок[5];
   Описание = МассивСтрок[6];
   СтавкаНДС = МассивСтрок[7];
   ЦеноваяГруппа = МассивСтрок[8];
   Услуга = МассивСтрок[9];
   Номинал = МассивСтрок[10];
   ИспользоватьСерийныеНомера = МассивСтрок[11];
   ТипСерийногоНомера = МассивСтрок[12];
   ДатаОкончанияДействия = МассивСтрок[13];
   ТипСрокаДействия = МассивСтрок[14];
   Периодичность = МассивСтрок[15];
   КоличествоПериодовДействия = МассивСтрок[16];
   ПодарочныйСертификат = МассивСтрок[17];
   Весовой = МассивСтрок[18];
   Вес = МассивСтрок[19];
   НаборУпаковок = МассивСтрок[20];
   ТипНоменклатуры = МассивСтрок[21];
   ФайлКартинки = МассивСтрок[22];
   НоменклатурнаяГруппа = МассивСтрок[23];
   СтранаПроисхождения = МассивСтрок[24];
   
   Товар = Справочники.Номенклатура.ПустаяСсылка();
   
    // Ищем товар по наименованию
    Если Наименование <> "" Тогда
      Товар = Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
    Конецесли;
   
    //Если не нашли создаем новый товар
    Если Товар.Пустая() Тогда
      Товар         = Справочники.Номенклатура.СоздатьЭлемент();
      Товар.Наименование  = Наименование;
     
      //....Заполняем остальные реквизиты
      Товар.Записать();
    Иначе
     
      //Если нашли, получим объект
      Товар = Товар.ПолучитьОбъект();
     
      //....Заполняем реквизиты  (если нужно)
    Конецесли;
   
КонецЦикла;
КонецПроцедуры

djvjv

как то странно код выкладывается...поэтому я выкладываю файл с текстом кода

chuevsf

Есть там пара нюансов, а в остальном ничего сложного нет.
После занесения наименования и полного наименования и единицы измерения справочник надо обязательно записать. А только уже потом назначать ему "другие" единицы измерения...

Но это так навскидку, что вспомнил.

djvjv

поподробнее можно? а то я ничего не понимаю

sergejK74

Нормально почти, кроме мусора в начале цикла. Условие на пустое наименование тоже какое-то сомнительное. Группы в справочнике есть?
Когда доходишь до заполнения реквизитов, то если это справочник или перечисление, то также ищешь его в соответствующем справочнике. Если примитивный тип - то повезло, сразу пишешь. Ты об этом хотел спросить?
Кнопочка Спасибо - слева!

djvjv

короче у меня есть данные выгруженные в текстовый файл.
Я их перегнал в массив без разделителей. Теперь надо мне загрузить в справочник номенклатура который находится в 1с бухгалтерия 8.1.
Как сделать ума не приложу. Но при этом мне еще нужна проверка если код совпадает, то реквизит не писать.

Теги:

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

Рейтинг@Mail.ru

Поиск