helpf.pro
Регистрация

v8: загрузка тхт

novichok20
10.11.2014 09:33Прочитано: 1972

Всем доброе утро!

извиняюсь за глупый вопрос.загрузил txt в табличное поле.а теперь туплю как каждую строку записать как элемент спр.?  

Yandex
Возможно, вас также заинтересует
Реклама на портале
Wertuoz
10.11.2014 09:54Ответ № 1

Создаем элемент справочника и в наименование кидем строку... записываем...

Wertuoz
10.11.2014 09:56Ответ № 2

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

novichok20
10.11.2014 10:02Ответ № 3

а можно пример?

E_Migachev
10.11.2014 19:35Ответ № 4

Ниже код, который загружает запчасти в справочник из текстового файла вида:

Код Batch File (DOS, CMD, BAT)
 TOKICO	A3091	АМОРТИЗАТОР ПОДВЕСКИ	1	1699.76
VOLVO 973444 ДЕТАЛЬ 1 223.46
VOLKSWAGEN 1U6809605G ДЕТАЛЬ 1 6919.89
Knecht OC606 ФИЛЬТР МАСЛЯНЫЙ 1 184.47
CHERY A212909060 ДЕТАЛЬ 2 190.23
DEPO 2121654L3AE УКАЗАТЕЛЬ ПОВОРОТА 1 157.74
FEBEST 0223K12F СТАБИЛИЗАТОР 1 300.37
FEBEST MAB023 ДЕТАЛЬ 2 171.48
FEBEST MAB051 ДЕТАЛЬ 4 311.55
FEBEST TAB326 ДЕТАЛЬ 2 380.28
FEBEST TMB13 ДЕТАЛЬ 1 326.44
HONDA 13343RNAA01 ДЕТАЛЬ 1 346.61
HONDA 14721PG6000 КЛАПАН ВЫПУСКНОЙ ГРМ 1 987.08
HONDA 14781PV1004 КЛАПАНА СУХАРЬ 2 51.99
HONDA 16010SAA000 ФИЛЬТР ТОПЛИВНЫЙ 2 1013.17

коды загрузки из txt файла и импорта в справочник

Код 1C v 8.х
 Процедура КнопкаВыполнитьНажатие(Кнопка)
// Загружаем
ВсегоКол = ТаблицаДокумента.Количество(); н=0; шаг=50; ТекШаг = шаг;
для каждого стр из ТаблицаДокумента Цикл
н=н+1; 
//Проверка Производитель
Производитель = Справочники.Производитель.НайтиПоНаименованию(СокрЛП(стр.Производитель));
Если Производитель = Справочники.Производитель.ПустаяСсылка() Тогда
НовЭлем = Справочники.Производитель.СоздатьЭлемент();
НовЭлем.Наименование = СокрЛП(стр.Производитель);
НовЭлем.Записать();
Производитель = НовЭлем.Ссылка;
КонецЕсли;

//Проверка Запчасти
Наим = СокрЛП(стр.Производитель)+"-"+СокрЛП(стр.КодАртикул);
Номенк = Справочники.Номенклатура.НайтиПоНаименованию(Наим);
Если Номенк = Справочники.Номенклатура.ПустаяСсылка() Тогда
НовЭлем = Справочники.Номенклатура.СоздатьЭлемент();
НовЭлем.Наименование = Наим;
НовЭлем.Производитель = Производитель;
НовЭлем.Поставщик = Поставщик;
НовЭлем.ВидТовара = ВидТовара;
НовЭлем.КодАртикул = СокрЛП(стр.КодАртикул);
НовЭлем.Описание = "";
НовЭлем.Цена = Число(стр.Цена);
НовЭлем.Остаток = Число(стр.Остаток);
НовЭлем.НаименованиеТекст = СокрЛП(стр.Наименование);
НовЭлем.Записать();
Номенк = НовЭлем.Ссылка;
Иначе //Исправим  Цены и Остаток
НовЭлем = Номенк.ПолучитьОбъект();
Если СтрДлина(НовЭлем.Наименование)< СтрДлина(Наим) Тогда
НовЭлем.Наименование = Наим;
КонецЕсли;
НовЭлем.Производитель = Производитель;
НовЭлем.Цена = Число(стр.Цена);
НовЭлем.Остаток = Число(стр.Остаток);
НовЭлем.Записать(); 
КонецЕсли;

Если н = ТекШаг Тогда
ТекШаг = ТекШаг+шаг;
Состояние("Обработано "+Строка(н)+" из "+Строка(ВсегоКол));
КонецЕсли;
КонецЦикла;
Предупреждение("Загружено!");
КонецПроцедуры


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


Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
// Отключение стандартной обработки
СтандартнаяОбработка = Ложь;
 
// Выбор файла Microsoft Excel
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.Фильтр = "Документы (*.*)|*.*";
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.ПолноеИмяФайла = ИмяФайла;
Выбор = ВыборФайла.Выбрать();
Если НЕ Выбор Тогда
 
Возврат;
 
КонецЕсли;
 
ИмяФайла = ВыборФайла.ВыбранныеФайлы[0];
ТолькоИмяФайла = СтрЗаменить(ВыборФайла.ПолноеИмяФайла,ВыборФайла.Каталог,"");
Выборка = Справочники.Поставщики.Выбрать();
Пока Выборка.Следующий() Цикл
Если СокрЛП(Выборка.Файл)=СокрЛП(ТолькоИмяФайла) Тогда
Поставщик=Выборка.Ссылка;
ВидТовара = Перечисления.ВидТовара.parts;
Прервать;  
КонецЕсли;  
КонецЦикла;


КонецПроцедуры


Процедура ЧтениеТХТФайла(Элемент)

// Проверка на наличие имени файла
Если ПустаяСтрока(ИмяФайла) Тогда
Предупреждение("Для запуска обработки необходимо предварительно выбрать файл данных.");
Возврат;
КонецЕсли;

// Открыть файл, создать текстовый документ, прочитать
ПотокСтрок = ПолучитьПотокЧтенияСтрок(ИмяФайла);

// Очистить предыдущие значения
ТаблицаДокумента.Очистить();
ТаблицаДокумента.Колонки.Очистить();

// Создать колонки табличного документа
ТаблицаДокумента.Колонки.Добавить("Номер",,"Номер");
ТаблицаДокумента.Колонки.Добавить("Производитель",,"Производитель");
ТаблицаДокумента.Колонки.Добавить("КодАртикул",,"КодАртикул");
ТаблицаДокумента.Колонки.Добавить("Наименование",,"Наименование");
ТаблицаДокумента.Колонки.Добавить("Остаток",,"Остаток");
ТаблицаДокумента.Колонки.Добавить("Цена",,"Цена");

// Последовательное чтение строк текстового файла
КоличествоСтрок = ПотокСтрок.КоличествоСтрок();
н=0;
Для Строка = 1 По КоличествоСтрок Цикл
// Обработка нажатия Ctrl + Break
ОбработкаПрерыванияПользователя();

// Чтение строки из файла тхт / csv
СтрокаИзФайла = ПотокСтрок.ПолучитьСтроку(Строка);

// Разбор строки в массив, используя в качествен символа-разделителя "|"
СтрокаИзФайла = СтрЗаменить(СтрокаИзФайла, Символы.Таб,";");
МассивСтрок = РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,";");

// Добавить данные в табличную часть экранной формы
Стр=ТаблицаДокумента.Добавить();
Стр.Номер = Строка;
Стр.Производитель = МассивСтрок[0];
Стр.КодАртикул = МассивСтрок[1];
Стр.Наименование = МассивСтрок[2];
Стр.Остаток = МассивСтрок[3];
Стр.Цена = МассивСтрок[4];
// Отобразить информацию о ходе выполнения обработки

Если н=100 Тогда
Состояние("Обработка строки файла : "
+ "строка " + Строка + " из " + КоличествоСтрок);
н=0;
КонецЕсли;
н=н+1;
КонецЦикла;

// Отобразить результаты загрузки в форме элемента
ЭлементыФормы.ТаблицаДокумента.Значение = ТаблицаДокумента;
ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки();
 
 КонецПроцедуры // ЧтениеTXTФайла(Элемент)
novichok20
11.11.2014 15:25Ответ № 5

СПАСИБО ВАМ БОЛЬШОЕ

novichok20
11.11.2014 15:53Ответ № 6

Получить Поток Чтения Строк  ?

E_Migachev
11.11.2014 17:25Ответ № 7

Вот

Код 1C v 8.х
 Функция ПолучитьПотокЧтенияСтрок(Файл)
Попытка
// Используется для доступа к параметрам файлов или каталогов. 
ТекстовыйФайл = Новый Файл(Файл);
Если ТекстовыйФайл.Существует() = Ложь Тогда
Сообщить("Файла "+Файл+" не существует!");
Возврат Неопределено;
КонецЕсли;
// Текстовый документ предназначен для работы с текстами. 
// Объект позволяет получать и сохранять текст в файле, 
// работать со строками
ПотокЧтенияСтрок = Новый ТекстовыйДокумент();
ПотокЧтенияСтрок.Прочитать(Файл);
Исключение
Сообщить("Файл не прочитан.", СтатусСообщения.Внимание);
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
// Возвращает текст, извлеченный из файла
Возврат ПотокЧтенияСтрок;
КонецФункции 
novichok20
18.11.2014 08:14Ответ № 8
Вопрос закрыт!
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.