helpf.pro
Регистрация

v8: Преобразование формата записи

rmel
27.11.2013 00:16Прочитано: 1494
Добрый день ! Подскажите как можно реализовать следующую идею.
Есть текстовый файл, который формируется устройством учета рабочего времени, в файле данные в таком формате:
66008FB6,CLOCK IN,20131114142039000
66008FA5,CLOCK OUT,20131114142041000
Хочется сделать обработку в 1с с такой логикой работы: указываем текстовый файл с данными (см. выше).
Обработка форматировала записи из файла в такой формат:
66008FB6 1 14.11.2013 20:39:00 0
66008FA5 2 14.11.2013 20:41:00 0

Вместо запятых были пробелы, clock in заменялся цифрой 1, clock out заменялся цифрой 2, и дата в таком формате 14.11.2013 20:39:00

Реально ли такое сделать можно это сделать как-то проще?

Заранее спасибо за ответы.
Yandex
Возможно, вас также заинтересует
Реклама на портале
asdfr1
27.11.2013 08:39Ответ № 1
Сделать реально. Заменить CLOCK IN, преобразовать в читаемый формат дату и заменить запятые
Jonsony
27.11.2013 10:22Ответ № 2
(0) rmel, всё реально и очень просто, штатным образом языка 1С

смотри в сторону обмена данными через текстовый файл, там всё понятно
наглядный пример загрузка данных из off-line ККМ
Изменено 27.11.13 10:30:25
Jonsony
27.11.2013 10:28Ответ № 3
и да, ещё момент, тебе данные эти сразу куда-то загружать? или просто преобразовать из исходного в файл с другим форматом?
rmel
27.11.2013 11:20Ответ № 4
Есть готовая обработка которая данные обрабатывает дальше Система учета рабочего времени. Но в ней что-то ковырять пока сложно для меня.

Для начала попробовать бы преобразовать файл.

Спасибо за совет, буду пробовать на примере "наглядный пример загрузка данных из off-line ККМ"
Jonsony
27.11.2013 13:34Ответ № 5
используя функции языка для работы со строкой:

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>)
СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>)
СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>)
Найти(<Строка>, <ПодстрокаПоиска>)
Лев(<Строка>, <ЧислоСимволов>)

предположим что считываем построчно файл с данными твоего типа
66008FB6,CLOCK IN,20131114142039000
66008FA5,CLOCK OUT,20131114142041000

66008FA5,1,20131114142041000
...
Код 1C v 8.2 УП
 Если СтрЧислоВхождений(ТекСтр, "CLOCK IN") Тогда 
СтрЗаменить(ТекСтр, "CLOCK IN", "1");
ИначеЕсли СтрЧислоВхождений(ТекСтр, "CLOCK OUT") Тогда
СтрЗаменить(ТекСтр, "CLOCK OUT", "2");
КонецЕсли;

//только если 20131114142041000 это 2013(год) 11(месяц) 14(число) 14(час) 20(минута) 41(сек) 000 (иначе доведи до формата нужного)
ДатаВремя=Сред(ТекСтр, 17, 2)+"."+Сред(ТекСтр, 15, 2)+"."+Сред(ТекСтр, 11, 4)+"."+Сред(ТекСтр, 15, 2)+" "+Сред(ТекСтр, 19, 2)+":"+Сред(ТекСтр, 21, 2)+":"+Сред(ТекСтр, 23, 2)
//(при текущем получим из "20131114142041000" - "14.11.2013 14:20:41"

ВыхСтрока=Лев(ТекСтр, 8)+Сред(ТекСтр, 8, 3)+ДатаВремя;
СтрЗаменить(ВыхСтрока, ",", " ")
// тут как бы получим "66008FA5 2 14.11.2013 14:20:41"

Изменено 27.11.13 13:43:20
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.