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

Запись в регистр сведений информации из txt файла

Автор retker, 13 авг 2014, 10:23

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

retker

Доброго дня подскажите, а то не совсем понял. У меня стоит задача прочитать текстовые файлы в каталоге и записывать определенные строчки (пока что первые 4) в регистр сведений.
Пример текстового файла:
Е009
IvanovRR
110814_173916_698
Active window: Инструменты и справка по AutoIt - Windows Internet Explorer

В регистр сведений должно попасть так:
Е009 - измерение
IvanovRR - измерение
110814_173916_698 - реквизит
Active window: Инструменты и справка по AutoIt - Windows Internet Explorer -реквизит

Вот код:
Процедура Загрузить(Команда)
    МассивФаилов = НайтиФайлы("C:\spy\unsorted\IakovlevEE\", "*.txt");
    Текст = Новый ТекстовыйДокумент;
    Для Каждого Фаил из МассивФаилов Цикл
        Текст.Прочитать(Фаил.ПолноеИмя);
        Для НомерСтроки = 1 по 5 Цикл
            Стр = Текст.ПолучитьСтроку(НомерСтроки);
            Сообщить(Стр);
      Если НомерСтроки = 1 Тогда
         //записываем в регистр
      КонецЕсли;

      Если НомерСтроки = 2 Тогда
         //записываем в регистр
      КонецЕсли;
      //....         
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Подскажите как правильно прописать запись в регистр?

freez1301

рег = РегистрыСведений.НазваниеРегистра.СоздатьМенеджерЗаписи();
дальше присваиваете что надо и записываете

retker

Цитата: freez1301 от 13 авг 2014, 10:43
рег = РегистрыСведений.НазваниеРегистра.СоздатьМенеджерЗаписи();
дальше присваиваете что надо и записываете
Спасибо понял. А еще подскажите как можно получить количество записей в регистре сведения?

DmitriyF

Цитата: retker от 13 авг 2014, 14:47
Цитата: freez1301 от 13 авг 2014, 10:43
рег = РегистрыСведений.НазваниеРегистра.СоздатьМенеджерЗаписи();
дальше присваиваете что надо и записываете
Спасибо понял. А еще подскажите как можно получить количество записей в регистре сведения?
Так не пробовали какойтотамрегистр.количество()

retker

Цитата: DmitriyF от 13 авг 2014, 16:29
Так не пробовали какойтотамрегистр.количество()
Пробовал, писал РегистрыСведений.МойРегистр... А далее в выпадающем меню по Ctrl+_ фунции КоличествоСтрок нету. Поэтому и спросил.

LexaK

попробуйте через запрос

выбрать количество(1) как Количество из РегистрСведений.НазваниеРегистра
если помогло нажмите: Спасибо!

retker

Цитата: freez1301 от 13 авг 2014, 10:43
рег = РегистрыСведений.НазваниеРегистра.СоздатьМенеджерЗаписи();
дальше присваиваете что надо и записываете


Процедура КнопкаВыполнитьНажатие(Кнопка)
индекс = 1;
Попытка
    МассивФаилов = НайтиФайлы("C:\spy\unsorted\Evgen\", "*.txt");
Исключение
Сообщить("Фаилов нет!");
КонецПопытки;
    Текст = Новый ТекстовыйДокумент;

//Получить последнюю строку регистра ее номер, пока не реализованна поэтому чищу реестр перед каждым заполнением

Для Каждого Фаил из МассивФаилов Цикл
    Текст.Прочитать(Фаил.ПолноеИмя);

Для НомСтр = 2 по 4 Цикл
    Стр = Текст.ПолучитьСтроку(НомСтр);

Если НомСтр = 2 Тогда
Компьютер = Стр;
КонецЕсли;

Если НомСтр = 3 Тогда
Пользователь = Стр;
КонецЕсли;

Если НомСтр = 4 Тогда
ДатаФаила = Стр;
КонецЕсли;
КонецЦикла;

Для НомСтр = 5 по Текст.КоличествоСтрок() Цикл
Стр = Текст.ПолучитьСтроку(НомСтр);
СтрРег = РегистрыСведений.ПосещениеСайтов.СоздатьМенеджерЗаписи();

СтрРег.Строчка = индекс;
СтрРег.Компьютер = Компьютер;
СтрРег.Пользователь = Пользователь;
СтрРег.ДатаВремя = ДатаФаила;
СтрРег.АктивноеОкно = Стр;

СтрРег.Записать();
индекс = индекс + 1; КонецЦикла;
     КонецЦикла;
КонецПроцедуры


Заполняется в регистр все кроме полей Компьютер и Пользователь, они в регистре являются измерениям, ссылающиеся на соответствующие справочники. Строчка тоже измерение, но это число, оно заполняется. Подскажите как надо присваивать значения.

TreeDogNight

Раз измерения ссылочного типа, то и записывать в них надо естесственно ссылки.
КомпьютерСсылка = Справочники.Компьютеры.НайтиПоНаименованию(Компьютер);
ПользовательСсылка = Справочники.Пользователи.НайтиПоНаименованию(Пользователь);
СтрРег.Компьютер        = КомпьютерСсылка;
СтрРег.Пользователь     = ПользовательСсылка;
Cегодня не все могут провести завтрашним числом. Вернее, не только лишь все - мало кто может это сделать.

Теги: txt 

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

Рейтинг@Mail.ru

Поиск