|
Есть файл txt со всеми разделителями, как положено, проблема в том, что после формирования ТЗ нужно пройтись по строчкам и при определенных условиях свернуть ту или иную строчку, причем не известно сколько строк нужно сварачивать, 1,2 или 3. это можно выбрать условием.
Процедура ЧтениеТХТФайла(Элемент)
// Проверка на наличие имени файла
Если ПустаяСтрока(ИмяФайла) Тогда
Предупреждение("Для запуска обработки необходимо предварительно выбрать файл данных.");
Возврат;
КонецЕсли;
// Открыть файл, создать текстовый документ, прочитать
ПотокСтрок = ПолучитьПотокЧтенияСтрок(ИмяФайла);
// Очистить предыдущие значения
ТаблицаДокумента.Очистить();
ТаблицаДокумента.Колонки.Очистить();
// Создать колонки табличного документа
//ТаблицаДокумента.Колонки.Добавить("Номер",,"Номер",5);
ТаблицаДокумента.Колонки.Добавить("Номенклатура",,"Номенклатура",);
ТаблицаДокумента.Колонки.Добавить("Код",,"Код",);
ТаблицаДокумента.Колонки.Добавить("УсловноеОбозначение",,"УсловноеОбозначение",);
ТаблицаДокумента.Колонки.Добавить("Количество",,"Количество",);
ТаблицаДокумента.Колонки.Добавить("Цена",,"Цена",);
ТаблицаДокумента.Колонки.Добавить("Стоимость",,"Стоимость",);
ТаблицаДокумента.Колонки.Добавить("СуммаАкциза",,"СуммаАкциза",);
ТаблицаДокумента.Колонки.Добавить("НДС",,"НДС",);
ТаблицаДокумента.Колонки.Добавить("СуммаНалога",,"СуммаНалога",);
ТаблицаДокумента.Колонки.Добавить("СтоимостьСНДС",,"СтоимостьСНДС",);
ТаблицаДокумента.Колонки.Добавить("ЦифровойКод",,"ЦифровойКод",);
ТаблицаДокумента.Колонки.Добавить("СтранаПроисхождения",,"СтранаПроисхождения",);
ТаблицаДокумента.Колонки.Добавить("НТД",,"НТД",);
// Последовательное чтение строк текстового файла
КоличествоСтрок = ПотокСтрок.КоличествоСтрок();
Для Строка = 28 По КоличествоСтрок Цикл
// Обработка нажатия Ctrl + Break
ОбработкаПрерыванияПользователя();
// Чтение строки из файла тхт / csv
СтрокаИзФайла = ПотокСтрок.ПолучитьСтроку(Строка);
Если СтрокаИзФайла = "+----------------------------------------+---+---------+------+---------+------------+------+---+---------+-----------+----+---------------+----------------------------" Тогда
Прервать;
КонецЕсли;
// Разбор строки в массив, используя в качествен символа-разделителя "¦"
МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СтрокаИзФайла,"¦");
// Добавить данные в табличную часть экранной формы
Стр=ТаблицаДокумента.Добавить();
//Стр.Номер = СокрЛП(Строка);
Стр.Номенклатура = СокрЛП(МассивСтрок[1]);
Стр.Код = СокрЛП(МассивСтрок[2]);
Стр.УсловноеОбозначение = СокрЛП(МассивСтрок[3]);
Стр.Количество = СокрЛП(МассивСтрок[4]);
Стр.Цена = СокрЛП(МассивСтрок[5]);
Стр.Стоимость = СокрЛП(МассивСтрок[6]);
Стр.СуммаАкциза = СокрЛП(МассивСтрок[7]);
Стр.НДС = СокрЛП(МассивСтрок[8]);
Стр.СуммаНалога = СокрЛП(МассивСтрок[9]);
Стр.СтоимостьСНДС = СокрЛП(МассивСтрок[10]);
Стр.ЦифровойКод = СокрЛП(МассивСтрок[11]);
Стр.СтранаПроисхождения = СокрЛП(МассивСтрок[12]);
Стр.НТД = СокрЛП(МассивСтрок[13]);
// Отобразить информацию о ходе выполнения обработки
Состояние("Обработка строки файла : "
+ "строка " + Строка + " из " + КоличествоСтрок);
КонецЦикла;
МояТЗ = Новый ТаблицаЗначений;
Для сч = 0 По ТаблицаДокумента.Количество()-1 Цикл
Сообщить("123");
КонецЦикла;
// Отобразить результаты загрузки в форме элемента
ЭлементыФормы.ТаблицаДокумента.Значение = МояТЗ;
ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки();
КонецПроцедуры // ЧтениеTXTФайла(Элемент)
Функция ПолучитьПотокЧтенияСтрок(Файл)
Попытка
// Используется для доступа к параметрам файлов или каталогов.
ТекстовыйФайл = Новый Файл(Файл);
Если ТекстовыйФайл.Существует() = Ложь Тогда
Сообщить("Файла "+Файл+" не существует!");
Возврат Неопределено;
КонецЕсли;
// Текстовый документ предназначен для работы с текстами.
// Объект позволяет получать и сохранять текст в файле,
// работать со строками
ПотокЧтенияСтрок = Новый ТекстовыйДокумент();
ПотокЧтенияСтрок.Прочитать(Файл);
Исключение
Сообщить("Файл не прочитан.", СтатусСообщения.Внимание);
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
// Возвращает текст, извлеченный из файла
Возврат ПотокЧтенияСтрок;
КонецФункции // ПолучитьПотокЧтенияСтрок |
|