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