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

Чтение TXT файла

Автор Тима22, 16 окт 2023, 12:04

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

Тима22

Есть заполненный TXT файл, нужно что бы при чтении данного TXT файла заполнялись реквизиты в Форме cписка справочника. Т.е. нажимаешь кнопку прочитать файл и реквизиты заполняются(путь к файлу указан в самом коде);

antoneus

И что не получается? Вообще, вопросы (желательно, чтобы все-таки пост был в форме вопроса, а не констатации факта - "мне тут надо то-то и то-то") желательно задавать в такой форме:
1) постановка задачи (это есть)
2) я сделал так-то и так-то
3) у меня получилось вот это, а нужно вот это
4) что я делаю не так?

В общем, что не получается-то?

Тима22

antoneus"В справочниках создать операции загрузки и выгрузки в(из) текстового файла" вот так выглядит ТЗ, который мне дали :D  . Я старался максимально понятно расписать задачу.
Загрузку в txt я реализовал

Текст = Новый ТекстовыйДокумент;
    // перебор элементов справочника     
    Выборка = Справочники.Абитуриенты.Выбрать();     
    Пока Выборка.Следующий() Цикл     
     // выводим в файл код и наименование, разделенные             
     Текст.ДобавитьСтроку(Выборка.Код + " | " + Выборка.Фамилия + " " +Выборка.Имя + " " + Выборка.Отчество + " | " + Выборка.ДатаРождения + " " + Выборка.СНИЛС);     
    КонецЦикла;     
    // запись в текстовый файл                                 
   Текст.Записать("D://новая папка/Абитуриенты.txt"); //Указываем название файла и путь к файлу, где будут сохраняться данные

А на выгрузке я застрял на пол дня.Уже голова кругом идет. Запутался

    Текст = Новый ТекстовыйДокумент;
   Текст.Прочитать("D://новая папка/Абитуриенты.txt");

   НачатьТранзакцию();

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

       Если НЕ ТекФЛ = Неопределено И НЕ ТекФЛ.Пустая() Тогда
          СпрОбъект = ТекФЛ.ПолучитьОбъект();
         СпрОбъект.Имя = Имя;
          СпрОбъект.Фамилия = Фам;
           СпрОбъект.Записать();
         КонецЕсли;
   КонецЦикла;
      
   ЗафиксироватьТранзакцию();

antoneus

Ну в выгрузке разделяем все:

Текст.ДобавитьСтроку(Выборка.Код + " | " + Выборка.Фамилия + " | " +Выборка.Имя + " | " + Выборка.Отчество + " | " + Выборка.ДатаРождения + " | " + Выборка.СНИЛС);
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
         Стр = Текст.ПолучитьСтроку(НомерСтроки);
         МассивСотр = СтрРазделить(Стр, "|");
         Код = СокрЛП(МассивСотр[0]);
       ТекФЛ = Справочники.Абитуриенты.НайтиПоКоду(Код);

       Если НЕ ТекФЛ.Пустая() Тогда
          СпрОбъект = ТекФЛ.ПолучитьОбъект();
       Иначе
          СпрОбъект = Справочники.Абитуриенты.СоздатьЭлемент();
          СпрОбъект.Код = Код
       КонецЕсли;
         СпрОбъект.Имя = СокрЛП(МассивСотр[2]);
          СпрОбъект.Фамилия = СокрЛП(МассивСотр[1]);
          //можно еще всякие другие данные заполнить
           СпрОбъект.Записать();
         КонецЕсли;
   КонецЦикла;

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

Рейтинг@Mail.ru

Поиск