Как в 1С 7.7 прочитать данные из текстового файла и записать их в справочник по кнопке на форме

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При автоматизации процессов в платформе 1С 7.7 часто возникает задача импорта данных из внешних текстовых файлов. Разберем типичную ситуацию: необходимо прочитать строку из файла на диске, показать результат пользователю и записать полученное значение в реквизит справочника при нажатии на кнопку формы.

Шаг 1. Настройка формы внешней обработки и размещение кнопки

Рассмотрим, где размещать код и как связать его с пользовательским интерфейсом. Для реализации этой задачи лучше всего использовать внешнюю обработку (ERT-файл) или форму справочника.

  1. Откроем конфигуратор 1С 7.7 и создадим новую внешнюю обработку или форму.
  2. На форму добавим новую кнопку.
  3. Откроем свойства кнопки (правой кнопкой мыши по кнопке — Свойства).
  4. В поле Формула укажем имя процедуры, которая должна выполняться при нажатии, например: Сформировать() или ЧтениеТекстаИзФайла().
  5. Перейдем в модуль формы обработки и опишем соответствующую процедуру.

Шаг 2. Чтение данных из текстового файла

Для работы с текстовыми файлами в 1С 7.7 применяется агрегатный объект Текст. Проанализируем базовый код для чтения первой строки файла и вывода ее на экран:


Процедура Сформировать()
    Текст = СоздатьОбъект("Текст");
    Текст.Открыть("C:\TIME\1.txt");
    
    Если Текст.КоличествоСтрок() > 0 Тогда
        Стр = Текст.ПолучитьСтроку(1);
        Сообщить(Стр);
    Иначе
        Сообщить("Файл пуст!");
    КонецЕсли;
КонецПроцедуры

Метод Открыть() загружает файл в память, ПолучитьСтроку() извлекает строку по указанному номеру, а функция Сообщить() выводит полученный текст в окно сообщений платформы.

Шаг 3. Запись полученной строки в справочник

После успешного чтения строки нам необходимо создать новый элемент в справочнике и заполнить его реквизит. Для работы со справочниками используется объект Справочник.

Рассмотрим итоговый код процедуры, который считывает файл и сохраняет значение в справочник ФИО:


Процедура Сформировать()
    // 1. Проверяем существование файла на диске
    Если ФС.СуществуетФайл("C:\TIME\1.txt") = 0 Тогда
        Предупреждение("Файл C:\TIME\1.txt не найден!");
        Возврат;
    КонецЕсли;

    // 2. Читаем текстовый файл
    Текст = СоздатьОбъект("Текст");
    Текст.Открыть("C:\TIME\1.txt");

    Если Текст.КоличествоСтрок() = 0 Тогда
        Предупреждение("Файл не содержит строк для чтения!");
        Возврат;
    КонецЕсли;

    Стр = Текст.ПолучитьСтроку(1);
    Сообщить("Считано значение: " + Стр);

    // 3. Записываем данные в справочник ФИО
    Спр = СоздатьОбъект("Справочник.ФИО");
    Спр.Новый();
    Спр.Фамилия = Стр;
    Спр.Записать();

    Сообщить("Запись в справочник успешно выполнена!");
КонецПроцедуры

Важные технические нюансы при работе с файлами в 1С 7.7

При реализации загрузки следует учитывать несколько критических особенностей платформы 1С 7.7:

  1. Проверка существования файла: Использование объекта ФС и его метода ФС.СуществуетФайл() позволяет избежать аварийного завершения программы, если файл отсутствует по указанному пути.
  2. Кодировка текста: Стандартный объект Текст работает с кодировками Windows-1251 (ANSI) и CP866 (DOS). Для переключения кодировки применяется метод Текст.КодоваяСтраница(0) (0 — Windows, 1 — DOS). Если исходный файл сохранен в UTF-8, штатный объект Текст прочитает его с искажением знаков. Для файлов UTF-8 рекомендуется использовать COM-объект ADODB.Stream.
  3. Контроль дубликатов: Чтобы при повторных нажатиях кнопки не плодить одинаковые записи в базовом справочнике, перед вызовом Спр.Новый() стоит выполнить поиск элемента методом Спр.НайтиПоРеквизиту("Фамилия", Стр, 1, 1).
  4. Пути к файлам: В современных ОС прямое чтение с корня диска C:\ может ограничиваться правами доступа. По возможности храните файлы во временных папках или каталоге информационной базы, получаемом через функцию КаталогИБ().
← На главную