Обработка двоичных файлов
22.02.2006
13:14
#1
Есть ли в 1С возможность читать двоичный файл? Если его читать как текстовый - читается только одна строка 8 байт. Версия 1С 7.7
26.02.2006
07:59
#2
"Я не совсем понял, что есть двоичный файл?
Есть двоичная система исчисления. Если нужно, можно написать процедуру или функцию по конвертации символа полученого из текстового файла, например из десятичной системы в двоичную (т.к КодСимв("А") возвращает десятичный код символа):
Сначала нужно получить нужный символ из строки (Ч).
Можно использовать цикл с функцией "Ч=Сред(,,)"
Функция Перекодировка10в2(Ч)
Если Ч=0 Тогда Возврат "0000000000000000";
ИначеЕсли Ч=1 Тогда Возврат "0000000000000001";
ИначеЕсли Ч=2 Тогда Возврат "0000000000000010";
ИначеЕсли Ч=3 Тогда Возврат "0000000000000011";
.................................
................................. //Здесь нужно учесть, что после 16 сл. число 20! и т.д.
.................................
ИначеЕсли Ч=255 Тогда возврат "1111111111111111"
КонецЕсли;
КонецФункции
Можно, в целях оптимизации функции, разбить слово на два байта и отдельно каждый байт перекодировать.Например:
............
А=Лев(Ч,1);
Б=Прав(Ч,1);
В=Перекодировка8в2(А)+Перекодировка8в2(Б);
............
где "Ч" - это код символа, извлекаемого из текстового файла в 16-и ричном формате. Здесь, походу, придется, написать еще функцию перекодировки из десятичной системы в шестнадцатиричную.
Конкретной встроенной функции в конфигураторе нет."
Есть двоичная система исчисления. Если нужно, можно написать процедуру или функцию по конвертации символа полученого из текстового файла, например из десятичной системы в двоичную (т.к КодСимв("А") возвращает десятичный код символа):
Сначала нужно получить нужный символ из строки (Ч).
Можно использовать цикл с функцией "Ч=Сред(,,)"
Функция Перекодировка10в2(Ч)
Если Ч=0 Тогда Возврат "0000000000000000";
ИначеЕсли Ч=1 Тогда Возврат "0000000000000001";
ИначеЕсли Ч=2 Тогда Возврат "0000000000000010";
ИначеЕсли Ч=3 Тогда Возврат "0000000000000011";
.................................
................................. //Здесь нужно учесть, что после 16 сл. число 20! и т.д.
.................................
ИначеЕсли Ч=255 Тогда возврат "1111111111111111"
КонецЕсли;
КонецФункции
Можно, в целях оптимизации функции, разбить слово на два байта и отдельно каждый байт перекодировать.Например:
............
А=Лев(Ч,1);
Б=Прав(Ч,1);
В=Перекодировка8в2(А)+Перекодировка8в2(Б);
............
где "Ч" - это код символа, извлекаемого из текстового файла в 16-и ричном формате. Здесь, походу, придется, написать еще функцию перекодировки из десятичной системы в шестнадцатиричную.
Конкретной встроенной функции в конфигураторе нет."
26.02.2006
08:29
#3
Если открывать как текстовый то читается до кода "0" - что является признаком конца текстового файла.
Насколько мне известно такого варианта нет. выхода 2
1) написать свою компоненту
2) в двоичном файле заменить все встечающиеся коды "0" на "13" а для
правильной обработки создаёшь 2-ой файл, в котором будут прописываться
положения земены. т.е. смещение, где была замена
Насколько мне известно такого варианта нет. выхода 2
1) написать свою компоненту
2) в двоичном файле заменить все встечающиеся коды "0" на "13" а для
правильной обработки создаёшь 2-ой файл, в котором будут прописываться
положения земены. т.е. смещение, где была замена
26.02.2006
09:36
#5
Вспомнил.
Можно использовать UUE кодирование.
А лучше немного по другому.
пишем небольшую програмку, которая на входе получает имя файла, а на выходе
пишет в текстовый.
Из 1С запускаем эту прогу и впадаем в спячку на некоторое время. Так как при запуске
приложения из 1С нет никаких средств для определения завершонности, то лучший выход
это ждать появления нужного нам текстового файла, как появиться так читать.
Можно использовать UUE кодирование.
А лучше немного по другому.
пишем небольшую програмку, которая на входе получает имя файла, а на выходе
пишет в текстовый.
Из 1С запускаем эту прогу и впадаем в спячку на некоторое время. Так как при запуске
приложения из 1С нет никаких средств для определения завершонности, то лучший выход
это ждать появления нужного нам текстового файла, как появиться так читать.
Вопрос к фирме 1С: Когда появится комплексная конфигурация с новой формой отчета 2-НДФЛ?РазделительУчета
Читают тему
(гостей: 1)