Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Дек 2017, 16:06
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: внешняя обработка  (Прочитано 7040 раз)

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

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
Помогите сделать импорт txt в 1с бухгалтерия 8.1 справочник номенклатура.
Опишите алгоритм который я должен сделать. А то я раньше с этим не сталкивался и пока не понимаю что нужно для загрузки txt файла в справочник.


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Гуглите на тему работы с объектом типа "ТекстовыйДокумент".
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
Этот код мне надо до вести до ума. Надо чтоб из текстового документа данные загружало в справочник номенклатура. Если нужно то конфигурация Бухгалтерия 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

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
Этот код мне надо до вести до ума. Надо чтоб из текстового документа данные загружало в справочник номенклатура. Если нужно то конфигурация Бухгалтерия 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

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
Наименование = МассивСтрок[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

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
как то странно код выкладывается...поэтому я выкладываю файл с текстом кода

Оффлайн chuevsf

  • Хочу! Хочу! Хочу! Мышь на палочке!
  • Глобальный модератор
  • *****
  • Сообщений: 1376
  • РЕПУТАЦИЯ: 345
  • КПД: 25%
  • Регистрация: 2010-07-08
    • Skype: chuevsf
  • Сайт: 
  • Профессия: Программист 1С
Есть там пара нюансов, а в остальном ничего сложного нет.
После занесения наименования и полного наименования и единицы измерения справочник надо обязательно записать. А только уже потом назначать ему "другие" единицы измерения...

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

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
поподробнее можно? а то я ничего не понимаю

Оффлайн sergejK74

  • *****
  • Сообщений: 1093
  • РЕПУТАЦИЯ: 458
  • КПД: 42%
  • Всегда готов помочь!
  • Регистрация: 2011-07-08
  • Сайт: 
  • Профессия: Ученик 1С
Нормально почти, кроме мусора в начале цикла. Условие на пустое наименование тоже какое-то сомнительное. Группы в справочнике есть?
Когда доходишь до заполнения реквизитов, то если это справочник или перечисление, то также ищешь его в соответствующем справочнике. Если примитивный тип - то повезло, сразу пишешь. Ты об этом хотел спросить?
Кнопочка Спасибо - слева!

Оффлайн djvjv

  • ****
  • Сообщений: 262
  • РЕПУТАЦИЯ: -2
  • Регистрация: 2012-03-15
  • Сайт: 
  • Профессия: Программист 8.1
короче у меня есть данные выгруженные в текстовый файл.
Я их перегнал в массив без разделителей. Теперь надо мне загрузить в справочник номенклатура который находится в 1с бухгалтерия 8.1.
Как сделать ума не приложу. Но при этом мне еще нужна проверка если код совпадает, то реквизит не писать.


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
184 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
40 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
29 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 719
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal