По теме из базы знаний
- Работа с файлами (обычная и управляемая форма)
- Загрузка данных из файла .CSV
- Наука о чеках. Глава 2. Обработка для просмотра структуры и значений параметров кассовых чеков в json-файле
- Анализ и редактирование файлов выгрузки EnterpriseData (синхронизация данных через универсальный формат)
- Тест загрузки большого файла
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот процедура загоняющая данные из текстового файла записанные через разделитель в таблицу значений
выдрал кусок со своей настройки, работоспособность выдраного куска не проверял... )))
выдрал кусок со своей настройки, работоспособность выдраного куска не проверял... )))
Код |
---|
// ===============================
Процедура ДанныеВТбЗн(ИмяФайла,ТбЗн,Разделитель,ПропуститьСтрок)
Т = СоздатьОбъект("Текст");
Если ФС.СуществуетФайл(ИмяФайла)=0 Тогда
Предупреждение("Не могу найти файл данных "+ ИмяФайла + РазделительСтрок +
"Проверьте каталог импорта.");
Возврат;
КонецЕсли;
Т.Открыть(ИмяФайла);
Если Т.КоличествоСтрок()=0 Тогда
Предупреждение("Файл данных "+ИмяФайла+" пуст!");
Возврат;
КонецЕсли;
НомСтр=0;
Для С=1 По Т.КоличествоСтрок() Цикл
Если С <= ПропуститьСтрок Тогда
Продолжить;
КонецЕсли;
Данные=Т.ПолучитьСтроку(С);
Если СокрЛП(Данные)<>"" Тогда
СтрТмп = Данные;
НомСтр=НомСтр+1;
ТбЗн.НоваяСтрока(НомСтр);
НомКол = 0;
Пока СтрДлина(СтрТмп) <> 0 Цикл
Поз = Найти(СтрТмп,Разделитель);
Если Поз <> 0 Тогда
НомКол = НомКол + 1;
Попытка
ТбЗн.УстановитьЗначение(НомСтр,НомКол, Сред(СтрТмп,1,Поз-1));
Исключение
Сообщить("Не загружена колонка "+СокрЛП(Строка(НомКол))+", недостаточно колонок в таблице значений.");
КонецПопытки;
СтрТмп = Сред(СтрТмп,Поз+1,СтрДлина(СтрТмп)-Поз);
Иначе
НомКол = НомКол + 1;
ТбЗн.УстановитьЗначение(НомСтр, НомКол, СтрТмп);
СтрТмп = "";
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ФайлИмпорта = "C:\import.txt";
Разделитель = ",";
КоличествоКолонок = 10;
ПропуститьСтрок = 0; // если есть шапка (описание полей) указать сколько строк пропустить
ТбЗн = СоздатьОбъект("ТаблицаЗначений");
ТбЗн.КоличествоКолонок(КоличествоКолонок);
ДанныеВТбЗн(ФайлИмпорта,ТбЗн,Разделитель,ПропуститьСтрок);
Показать полностью |
СтрТмп = Сред(СтрТмп,Поз+1,СтрДлина(СтрТмп)-Поз);
Узнается почерк 1С-вских фирмачей!
Стр=Т.ПолучитьСтроку(А);
Стр=СтрЗаменить(Стр,",",РазделительСтрок) // получили многострочную
Ном=СтрПолучитьСтроку(Стр,1);
ФИО=СтрПолучитьСтроку(Стр,2);
и т.д. и т.п.
Узнается почерк 1С-вских фирмачей!
Стр=Т.ПолучитьСтроку(А);
Стр=СтрЗаменить(Стр,",",РазделительСтрок) // получили многострочную
Ном=СтрПолучитьСтроку(Стр,1);
ФИО=СтрПолучитьСтроку(Стр,2);
и т.д. и т.п.
cbr777, хочу заметить, что Абадонна предложил универсальный метод - можешь смело положить в основу универсальной процедуры в глобальнике. Но что касается конкретно твоего случая:
"001","Васильев Федор Степанович","Менеджер"
видно невооруженным взглядом, что это было получено с помощью ВСтрокуСРазделителями, значит и обратно в список значений, как два пальца:
Стр=Т.ПолучитьСтроку(А);
сз.ИзСтрокиСРазделителями(Стр)
А дальше из СЗ по номеру выбираешь, что надо 1 - "001", 2 - "Васильев Федор Степанович" и т.д. (кавычек уже не будет).
"001","Васильев Федор Степанович","Менеджер"
видно невооруженным взглядом, что это было получено с помощью ВСтрокуСРазделителями, значит и обратно в список значений, как два пальца:
Стр=Т.ПолучитьСтроку(А);
сз.ИзСтрокиСРазделителями(Стр)
А дальше из СЗ по номеру выбираешь, что надо 1 - "001", 2 - "Васильев Федор Степанович" и т.д. (кавычек уже не будет).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот