Я перешел на 1с 8.3 и начал переписывать свои обработки из 7.7 и столкнулся с такой проблемой, код немного отличается и когда я пытаюсь сам разобраться у меня ничего не получается. Уважаемые пользователи не могли бы мне подсказать как данный код будет примерно выглядеть в версии 8.3. Заранее спасибо! Процедура Сформировать() Текст = СоздатьОбъект("Текст"); Каталог = "c:\temp"; ФС.УстТекКаталог(Каталог); ИмяФайла = ФС.НайтиПервыйФайл("*.txt"); Пока ПустаяСтрока(ИмяФайла)= 0 Цикл Текст.Открыть("C:\temp" +"\"+ ИмяФайла); Если Текст.КоличествоСтрок() = 0 Тогда Предупреждение("Текст пустой!"); Возврат; КонецЕсли; Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл Час1 = 0; Мин1 = 0; Сек1 = 0; Стр = Текст.ПолучитьСтроку(НомерСтроки); Сз = СоздатьОбъект("СписокЗначений"); Сз.ИзСтрокиСРазделителями(Стр); Код = ?(СтрДлина(Сз.ПолучитьЗначение(6))=0,Сз.ПолучитьЗначение(2),СокрЛП(Сз.ПолучитьЗначение(6))); ДатаСоб = Сз.ПолучитьЗначение(3); Час1 = Число(Сред(Сз.ПолучитьЗначение(4),1,2)); Мин1 = Число(Сред(Сз.ПолучитьЗначение(4),4,2)); Сек1 = Число(Сред(Сз.ПолучитьЗначение(4),7,2)); Время = Час1*3600+Мин1*60+Сек1; Тип = Сз.ПолучитьЗначение(5); ТЧ.НоваяСтрока(); ТЧ.Филиал = Лев(ИмяФайла,Найти(ИмяФайла,"_") - 1); ТЧ.Код = СокрЛП(Код); ТЧ.ДатаСоб = ДатаСоб; ТЧ.Время = Время; ТЧ.Тип = Тип; ИмяФайла = ФС.НайтиСледующийФайл(); КонецЦикла; КонецЦикла; КонецПроцедуры;
Алгоритм никак не поменяется. Изменится лишь синтаксис. А примеры работы со строками и файлами можно найти на любом ресурсе, в том числе и в синтаксис-помощнике.
Если еще актуально, то вот примерный код, работающий в 8.3 Код: &НаКлиенте Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции &НаКлиенте Процедура Сформировать(Команда) Каталог = "c:\temp"; НайденныеФайлы = НайтиФайлы(Каталог, "*.txt"); Для Каждого Файл Из НайденныеФайлы Цикл Текст = Новый ЧтениеТекста(Файл.ПолноеИмя, КодировкаТекста.Системная); Стр = Текст.ПрочитатьСтроку(); Пока Стр <> Неопределено Цикл Час1 = 0; Мин1 = 0; Сек1 = 0; Сз = РазложитьСтрокуВМассивПодстрок(Стр,";"); Код = ?(СтрДлина(Сз[5])=0,Сз[1],СокрЛП(Сз[5])); ДатаСоб = Сз[2]; Час1 = Число(Сред(Сз[3],1,2)); Мин1 = Число(Сред(Сз[3],4,2)); Сек1 = Число(Сред(Сз[3],7,2)); Время = Час1*3600+Мин1*60+Сек1; Тип = Сз[4]; НоваяСтрока = Объект.ТЧ.Добавить(); НоваяСтрока.Филиал = Лев(Файл.Имя,Найти(Файл.Имя,"_") - 1); НоваяСтрока.Код = СокрЛП(Код); НоваяСтрока.ДатаСоб = ДатаСоб; НоваяСтрока.Время = Время; НоваяСтрока.Тип = Тип; Стр = Текст.ПрочитатьСтроку(); КонецЦикла; КонецЦикла; КонецПроцедуры; --- Объединение сообщений, 13 мар 2017 --- Если без дополнительной функции, то так: Код: &НаКлиенте Процедура Сформировать(Команда) Каталог = "c:\temp"; НайденныеФайлы = НайтиФайлы(Каталог, "*.txt"); Для Каждого Файл Из НайденныеФайлы Цикл Текст = Новый ЧтениеТекста(Файл.ПолноеИмя, КодировкаТекста.Системная); Стр = Текст.ПрочитатьСтроку(); Пока Стр <> Неопределено Цикл Час1 = 0; Мин1 = 0; Сек1 = 0; Сз = СтрЗаменить(Стр,";",Символы.ПС); Код = ?(СтрДлина(СтрПолучитьСтроку(Сз, 6))=0,СтрПолучитьСтроку(Сз,2),СокрЛП(СтрПолучитьСтроку(Сз,6))); ДатаСоб = СтрПолучитьСтроку(Сз,3); Час1 = Число(Сред(СтрПолучитьСтроку(Сз,4),1,2)); Мин1 = Число(Сред(СтрПолучитьСтроку(Сз,4),4,2)); Сек1 = Число(Сред(СтрПолучитьСтроку(Сз,4),7,2)); Время = Час1*3600+Мин1*60+Сек1; Тип = СтрПолучитьСтроку(Сз,5); НоваяСтрока = Объект.ТЧ.Добавить(); НоваяСтрока.Филиал = Лев(Файл.Имя,Найти(Файл.Имя,"_") - 1); НоваяСтрока.Код = СокрЛП(Код); НоваяСтрока.ДатаСоб = ДатаСоб; НоваяСтрока.Время = Время; НоваяСтрока.Тип = Тип; Стр = Текст.ПрочитатьСтроку(); КонецЦикла; КонецЦикла; КонецПроцедуры;