База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как загрузить текстовый файл без разделителей в ТаблицуЗначений 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня, 4 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
23 октября 2025 в 19:15 #33865
OdineskiУчастникнапиши код загрузки в таблицу значений из текстового файла заголовок таблицы:
│ Наименование МЦ │ Группа товара │Код группы│Номен.номер│ ОКДП │Учетн.единица│
строки в таблице идут без разделителей:
Светильник OPL/R414HF1 СВЕТИЛЬНИКИ ВСТРАИВАЕМЫЕ 00420 420875 шт. -
23 октября 2025 в 19:15 #33866
Odin — ОдинэсникУчастникПавел, вот пример кода на 1С для загрузки данных из текстового файла в ТаблицуЗначений, где строки идут без явных разделителей, а поля фиксированной ширины. В вашем примере поля идут с фиксированной позицией и шириной, поэтому для разбора строки используем функцию Сред(Строка, Начало, Длина).
1С (Код)12345678910111213141516171819202122232425262728293031323334353637383940414243441CФункция ЗагрузитьТаблицуИзФайла(ИмяФайла) Экспорт// Создаем таблицу значений с нужными колонкамиТаблица = Новый ТаблицаЗначений;Таблица.Колонки.Добавить("НаименованиеМЦ", Новый ОписаниеТипов("Строка", 100));Таблица.Колонки.Добавить("ГруппаТовара", Новый ОписаниеТипов("Строка", 100));Таблица.Колонки.Добавить("КодГруппы", Новый ОписаниеТипов("Строка", 20));Таблица.Колонки.Добавить("НоменНомер", Новый ОписаниеТипов("Строка", 20));Таблица.Колонки.Добавить("ОКДП", Новый ОписаниеТипов("Строка", 20));Таблица.Колонки.Добавить("УчетнЕдиница", Новый ОписаниеТипов("Строка", 20));// Открываем файл для чтенияПоток = Новый ТекстовыйДокумент;Поток.Прочитать(ИмяФайла, КодировкаТекста.UTF8);// Пропускаем заголовок (первую строку)Строки = Поток.Строки;Если Строки.Количество() < 2 ТогдаВозврат Таблица; // Нет данныхКонецЕсли;Для НомерСтроки = 2 По Строки.Количество() ЦиклСтрока = Строки[НомерСтроки];// Разбор строки по фиксированным позициям (примерные позиции, подкорректируйте под ваш файл)// В вашем примере:// Наименование МЦ: с 1 по 30 символ// Группа товара: с 31 по 60 символ// Код группы: с 61 по 66 символ// Номен.номер: с 67 по 73 символ// ОКДП: с 74 по 83 символ// Учетн.единица: с 84 по конец строкиНоваяСтрока = Таблица.Добавить();НоваяСтрока.НаименованиеМЦ = СтрЗаменить(СокрЛП(Сред(Строка, 1, 30)), " ", " ");НоваяСтрока.ГруппаТовара = СокрЛП(Сред(Строка, 31, 30));НоваяСтрока.КодГруппы = СокрЛП(Сред(Строка, 61, 6));НоваяСтрока.НоменНомер = СокрЛП(Сред(Строка, 67, 7));НоваяСтрока.ОКДП = СокрЛП(Сред(Строка, 74, 10));НоваяСтрока.УчетнЕдиница = СокрЛП(Сред(Строка, 84));КонецЦикла;Возврат Таблица;КонецФункцииОбъяснение:
— Используем фиксированные позиции для полей, так как в файле нет разделителей.
— ФункцияСокрЛПубирает лишние пробелы слева и справа.
— Первая строка файла — заголовок, пропускаем.
— Позиции и длины полей нужно подкорректировать под реальный формат вашего файла, здесь примерные.Если нужно, могу помочь с уточнением позиций по вашему файлу.
Рекомендую посмотреть здесь: https://infostart.ru/public/1695607/ (пример работы с табличными документами и текстовыми файлами с фиксированной шириной полей).
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.