Имя: Пароль:
1C
1С v8
Загрузка информации из текстового документа txt в справочник
, ,
0 Ник-Виталик
 
03.11.16
15:25
Всем привет!Помогите, пожалуйста!
Нужно загрузить данные из txt в справочники Товары и Производители.
В текстовом документе соответственно Товары и Производители стоят через табуляцию. С записью данных из документа проблем нет, но проблема в том что много наименований там повторяются, а нужно отследить их на уникальность. Уже всё перепробовал. Вот то что я написал, но как бы я не пробовал ставить условие, записываются сразу либо все строки текстового документа, либо ничего. Помогите!

Текст = Новый ТекстовыйДокумент;                                                                                                      
Текст.Прочитать("C://1.txt");
Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл
Стр = СокрЛП(Текст.ПолучитьСтроку(НомерСтроки));
Позиция = Найти (Стр, "    ");
Спр=Справочники.Товары.СоздатьЭлемент();
Спр.Наименование = Сред(Стр,1,Позиция-1);
НайденнаяСтрока = Справочники.Товары.НайтиПоНаименованию(Стр);
Если НайденнаяСтрока.Пустая() Тогда Сообщить("Элемента еще нет!");    Спр.Записать();
Иначе Сообщить("Элемент уже есть!");
КонецЕсли;
КонецЦикла
1 Numerus Mikhail
 
03.11.16
15:26
НайденнаяСтрока = Справочники.Товары.НайтиПоНаименованию(Стр);
замени на
НайденнаяСтрока = Справочники.Товары.НайтиПоНаименованию(Сред(Стр,1,Позиция-1));
2 iITmenedger
 
03.11.16
15:28
(0)я бы сначала в ТЗ выгрузил файл, обработал бы ТЗ, а потом уже в документ
3 Ник-Виталик
 
03.11.16
17:06
Numerus Mikhail, да, спасибо большое) В этом было и дело)
4 Ник-Виталик
 
03.11.16
18:46
Теперь другая проблема. Я занес из документа отдельно наименования элементов справочников Товары и Производители. Теперь в справочнике Товары нужно заполнить реквизит Производители в соответствии с текстовым документом. Здесь задача потяжелее. Есть у кого-нибудь идеи?
5 Злопчинский
 
03.11.16
18:50
(0) вообще то табуляция это совсем не пробелы
6 Ник-Виталик
 
03.11.16
19:03
Это здесь отобразились пробелы. В обработке у меня стоит табуляция и все работает. К чему это вообще? Я же не на пробелы жаловался
7 Besometr
 
03.11.16
19:09
я бы сделал (2)
потом сгруппировал бы производителям, убрал дубли, запросом бы сопоставил товары и производителей с уже имеющимися, а остальное насоздавал.
8 Злопчинский
 
03.11.16
19:10
(6) я так думаю что нужно указать специсмвол явным образом а не ставить в ковычки табулятор которого не видать
А то при копипастинге куда нить он запросто випробел пиевратится
9 bootini
 
03.11.16
19:13
(4) Сразу на одном проходе цикла заполняй и номенклатуру, и производителя.
10 Ник-Виталик
 
03.11.16
20:22
Сразу на одном проходе цикла заполнить не получается. Причину я нашел в том что реквизит Производитель в спр.товары имеет тип СправочникСсылка.Производители. Т.е. выход только писать обработку, которая выберет из уже имеющихся наименований производителей нужных производителей. Не совсем представляю, как это сделать, тем более что для одного и того же товара могут быть 2 разных производителя, т.е. придется еще и дублировать наименование товара при необходимости. Может, я чего-то не учел и ошибаюсь.
11 bootini
 
03.11.16
20:56
(10) Тогда создавай таблицу значений, с двумя колонками Номенклатура и Производитель, типа строка. Просто заполняй её данными из файла, передавай в запрос как параметр и вяжи со справочником номенклатура по двум полям Номенклатура.Наименование и Поставщик.Наименование.

На выходе получишь таблицу с найденной номенклатурой и стой которую надо создать.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.