1с кодировка текста windows 1251

0

John83

12.01.11

10:12

Делаю выгрузку в прогу «Возмещение НДС», там нужна кодировка C1251 (по крайне мере так http://www.artlebedev.ru/tools/decoder/advanced/ сказал), но в 1С такой кодировки не нашел. Как тогда быть?

PS как можно задать эту кодировку в обычном текстовом документе?

PSS как еще можно определить кодировку? может ресурс ошибся…

1

John83

12.01.11

10:12

т.е. CP1251

2

ДенисЧ

12.01.11

10:12

Продам СП…

4

ДенисЧ

12.01.11

10:13

ТекстовыйДокумент.Записать (TextDocument.Write)
ТекстовыйДокумент (TextDocument)
Записать (Write)
Синтаксис:

Записать(<ИмяФайла>, <ТипФайла>, <РазделительСтрок>)
Параметры:

<ИмяФайла> (обязательный)

Тип: Строка. Имя файла для сохранения текста.
<ТипФайла> (необязательный)

Тип: КодировкаТекста; Строка. Тип кодировки файла. Тип файла может быть задан как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
Поддерживаемые названия кодировок:
UTF-8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UTF16_PlatformEndian
UTF16_OppositeEndian
UTF32_PlatformEndian
UTF32_OppositeEndian
UTF-7
IMAP-mailbox-name
SCSU
BOCU-1
CESU-8
ISO-8859-1
US-ASCII
gb18030
IBM367
iso-8859-2
iso-8859-3
iso-8859-4
iso-8859-5
iso-8859-6
iso-8859-7
iso-8859-8
iso-8859-9
iso-8859-13
iso-8859-15
cp932
Shift_JIS
EUC-JP
cp33722
windows-950
Big5
cp950
Big5-HKSCS
cp1386
GBK
GB2312
GB_2312-80
cp964
cp949
cp949c
EUC-KR
ibm-971
KSC_5601
ibm-1363
windows-949
windows-874
cp874
ibm-1162
cp437
cp737
cp775
cp850
cp851
cp852
cp855
cp856
cp857
cp858
cp860
cp861
cp862
cp863
cp864
cp865
cp866
ibm-867
CP868
cp869
KOI8-R
ibm-901
ibm-902
cp922
KOI8-U
ibm-4909
windows-1250
windows-1251
windows-1252
windows-1253
windows-1254
windows-1255
windows-1256
windows-1257
windows-1258
macintosh
x-mac-greek
x-mac-cyrillic
x-mac-centraleurroman
x-mac-turkish
hp-roman8
Adobe-Standard-Encoding
cp1006
cp1098
cp1124
cp1125
ibm-1129
cp1131
ibm-1133
ISO-2022-JP
JIS_Encoding
ISO-2022-JP-2
ISO_2022,locale=ja,version=3
ISO_2022,locale=ja,version=4
ISO-2022-KR
ISO_2022,locale=ko,version=1
ISO-2022-CN
ISO-2022-CN-EXT
HZ-GB-2312
windows-57002
windows-57003
windows-57011
windows-57010
windows-57007
windows-57004
windows-57005
windows-57008
windows-57009
LMBCS-1
LMBCS-2
LMBCS-3
LMBCS-4
LMBCS-5
LMBCS-6
LMBCS-8
LMBCS-11
LMBCS-16
LMBCS-17
LMBCS-18
LMBCS-19
IBM037
ebcdic-de
ebcdic-dk
IBM278
IBM280
IBM284
IBM285
IBM290
IBM297
IBM420
IBM424
IBM500
ibm-803
IBM-Thai
IBM870
IBM871
cp875
IBM918
cp930
cp933
cp935
cp937
cp939
cp1025
IBM1026
IBM1047
cp1097
cp1112
cp1122
cp1123
ibm-1130
ibm-1132
ibm-1137
IBM01140
IBM01141
IBM01142
IBM01143
IBM01144
IBM01145
IBM01146
IBM01147
IBM01148
IBM01149
ibm-1153
ibm-1154
ibm-1155
ibm-1156
ibm-1157
ibm-1158
ibm-1160
ibm-1164
ibm-1364
ibm-1371
ibm-1388
ibm-1390
ibm-1399
ibm-5123
ibm-8482
ibm-16684
ibm-4899
ibm-4971
ebcdic-he
ebcdic-ar
ibm-37_P100-1995,swaplfnl
ibm-1047_P100-1995,swaplfnl
ibm-1140_P100-1997,swaplfnl
ibm-1142_P100-1997,swaplfnl
ibm-1143_P100-1997,swaplfnl
ibm-1144_P100-1997,swaplfnl
ibm-1145_P100-1997,swaplfnl
ibm-1146_P100-1997,swaplfnl
ibm-1147_P100-1997,swaplfnl
ibm-1148_P100-1997,swaplfnl
ibm-1149_P100-1997,swaplfnl
ibm-1153_P100-1999,swaplfnl
ibm-12712_P100-1998,swaplfnl
ibm-16804_X110-1999,swaplfnl
ebcdic-xml-us

Значение по умолчанию: UTF8
<РазделительСтрок> (необязательный)

Тип: Строка. Задается строка, являющаяся разделителем строк, к которой при записи файла будет преобразован символ ПС. Если строка пустая, то разделители строк при записи не конвертируются.
Допустимуе варианты разделителей строк:
ВК;
ПС;
ВК+ПС (значение по умолчанию — может не указываться).
При использовании других строк в качестве разделителей, будет вызвано исключение.
Значение по умолчанию: ВК+ПС
Описание:

Записывает текстовый документ в файл с указанным именем.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

При работе на веб-клиенте вызов метода выполняет обращение к серверу.
Пример:

ТекстДок.Записать(«price.txt»);

5

Wobland

12.01.11

10:15

ТекстовыйДокумент (TextDocument)
УстановитьТипФайла (SetFileType)
Синтаксис:
УстановитьТипФайла(<Тип>)

6

John83

12.01.11

10:19

(4) windows-1251 = CP-1251?

7

John83

12.01.11

10:20

в PS под задать кодировку в текстовом документе, имелось в виду задать кодировку в том же блокноте, т.е. без 1С

8

ДенисЧ

12.01.11

10:20

(6) да
(7) Чё?

9

Дикообразко

12.01.11

10:21

(7) блокнот запоминает последнюю использованную кодировку

10

John83

12.01.11

10:31

всем спасибо

11

John83

12.01.11

12:18

хм… чего-то не работает

ТекстДокумент = Новый ТекстовыйДокумент;
ТекстДокумент.Прочитать(«Z:\04213015.txt»);
ТекстДокумент.УстановитьТипФайла(«windows-1251»);
ТекстДокумент.Записать(«Z:\04213015.txt», «windows-1251»);

текст должен получится что-то вроде:

?¤” ©«:4705*****************20110112095749
’ЁЇ?­д:Ќ„‘
Ђ¤аЋвЇа:188380, ѓЂ’—?Ќ‘Љ?‰ ђЂ‰ЋЌ, ЏЋ‘…‹ЋЉ ‚›ђ?–Ђ, ‘?‚…ђ‘ЉЋ… ?Ћ‘‘…, 168, ,
’Ґ«ЋвЇа:323-86-21
„®«¦­ЋвЇа:‡ ¬.Ј« ў­®Ј® ЎгеЈ «вҐа 
”?ЋЋвЇа:„¬ЁваЁзҐ­Є® Ћ«мЈ  ‚« ¤Ё¬Ёа®ў­ 
Љ®«„®Є:1
‚Ґаб”®а¬:3.06
‘«г¦?­д:1165316270    
@@@
?¤„®Є:20100423114813*******000000000001
@1
?ЌЌќЄбЇ:7826042134
ЉЏЏќЄбЇ:470501001
Ќ Ё¬ќЄбЇ:‡ЂЉђ›’Ћ… ЂЉ–?ЋЌ…ђЌЋ… ЋЃ™…‘’‚Ћ «’ЋђѓЋ‚›‰ „ЋЊ «ЉђЂ‘‘»
ЏаЁ§­ќЄбЇ:2
@@1
2
‚Ё¤Ќ «ЏҐаЁ®¤:1
Ќ «ЏҐаЁ®¤:201002
ЏаЁ§‚Ё¤„ҐЄ«:1
Ќ®¬ҐаЉ®аа:0
#1
ЏаЁ§­‚„ќЄбЇ:01
Ќ «Ѓ § ‚„:912809.5
‡ пў«Ќ„‘‘㬂„:111182.87
##1
#1
ЏаЁ§­‚„ќЄбЇ:02
Ќ «Ѓ § ‚„:3218925.6
‡ пў«Ќ„‘‘㬂„:437186.61
##1
@2
@3
#$
?¤Љ®­ва:201004231148130001
$1
„ в ‡ Є«Љ®­ва:13.10.2008
Ќ®¬ҐаЉ®­ва:151-ќ
ЏаЁ§­‚„ќЄбЇЉ®­:02
‘г¬Љ®­ва‚ «:RUB,12000000
‘г¬Џ‚ «:RUB,1674271
#1
Ќ Ё¬’®ў аЉ®­ва:‚…Ќ’?‹њ Љ‚-1Џ
Љ®«’®ў аЉ®­ва:796,20
##1
#1
Ќ Ё¬’®ў аЉ®­ва:‚›ЏђџЊ?’…‹њ „“ѓЂ-318 Њ1 220/380‚
Љ®«’®ў аЉ®­ва:796,1
##1
#1
Ќ Ё¬’®ў аЉ®­ва:‚›ЏђџЊ?’…‹њ „“ѓЂ-318 Њ1 220/380‚

12

Aprobator

12.01.11

12:32

о народ зажигает после нового года. И чего он таким должен получится? А самое главное — в чем?

13

John83

12.01.11

13:44

(12) в блокноте

14

Aprobator

12.01.11

13:50

(13) какой шрифт стоит в блокноте то? Не Terminal случаем? Он очень хорощо досовскую кодировку кушает.

15

John83

12.01.11

13:59

в общем вопрос закрыт

Распознавание голоса и речи на C#

UnmanagedCoder 05.05.2025

Интеграция голосового управления в приложения на C# стала намного доступнее благодаря развитию специализированных библиотек и API. При этом многие разработчики до сих пор считают голосовое управление. . .

Реализация своих итераторов в C++

NullReferenced 05.05.2025

Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их. . .

Разработка собственного фреймворка для тестирования в C#

UnmanagedCoder 04.05.2025

C# довольно богат готовыми решениями – NUnit, xUnit, MSTest уже давно стали своеобразными динозаврами индустрии. Однако, как и любой динозавр, они не всегда могут протиснуться в узкие коридоры. . .

Распределенная трассировка в Java с помощью OpenTelemetry

Javaican 04.05.2025

Микросервисная архитектура стала краеугольным камнем современной разработки, но вместе с ней пришла и головная боль, знакомая многим — отслеживание прохождения запросов через лабиринт взаимосвязанных. . .

Шаблоны обнаружения сервисов в Kubernetes

Mr. Docker 04.05.2025

Современные Kubernetes-инфраструктуры сталкиваются с серьёзными вызовами. Развертывание в нескольких регионах и облаках одновременно, необходимость обеспечения низкой задержки для глобально. . .

Создаем SPA на C# и Blazor

stackOverflow 04.05.2025

Мир веб-разработки за последние десять лет претерпел коллосальные изменения. Переход от традиционных многостраничных сайтов к одностраничным приложениям (Single Page Applications, SPA) — это. . .

Реализация шаблонов проектирования GoF на C++

NullReferenced 04.05.2025

«Банда четырёх» (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел. . .

C# и сети: Сокеты, gRPC и SignalR

UnmanagedCoder 04.05.2025

Сетевые технологии не стоят на месте, а вместе с ними эволюционируют и инструменты разработки. В . NET появилось множество решений — от низкоуровневых сокетов, позволяющих управлять каждым байтом. . .

Создание микросервисов с Domain-Driven Design

ArchitectMsa 04.05.2025

Архитектура микросервисов за последние годы превратилась в мощный архитектурный подход, который позволяет разрабатывать гибкие, масштабируемые и устойчивые системы. А если добавить сюда ещё и. . .

Многопоточность в C++: Современные техники C++26

bytestream 04.05.2025

C++ долго жил по принципу «один поток — одна задача» — как старательный солдатик, выполняющий команды одну за другой. В то время, когда процессоры уже обзавелись несколькими ядрами, этот подход стал. . .

Перекодирование строки в любую кодировку в 1С 8.3:

Функция ПерекодированиеСтроки(СтрокаДляПерекодирования, НужнаяКодировка = «windows-1251») Экспорт

   ПерекодированныйТекст = Новый ТекстовыйДокумент;
   ПерекодированныйТекст.УстановитьТипФайла(НужнаяКодировка);
   ПерекодированныйТекст.УстановитьТекст(СтрокаДляПерекодирования);

   // Возвращает перекодированную строку
   Возврат ПерекодированныйТекст.ПолучитьТекст();

КонецФункции

После корректной установки расширения, при настройке созданных конфигураций появляется возможность включить конвертацию кодировки в Windows-1251. Соответственно для использования необходимо:

  1. Установить расширение.
  2. Зайти в необходимые созданные ранее конфигурации и включить настройку конвертации.

Конвертация происходит в механизмах взаимодействия с 1С. Включать настройку необходимо только для версий 1С которые требуют данные в кодировке 1251.

Современные версии 1С не используют 1251, поэтому конвертация актуальна только для старых версий и только при наличии на стороне 1С непонятных символов, иероглифов.

Известные версии 1С в кодировке Windows-1251

Список известных версий 1С для которых совершенно точно необходимо расширение для конвертации кодировки из utf-8 в Windows-1251.

  • 1С Управление торговлей 10.3.x

Примечание

Если ваша версия 1С отсутствует в списке, но она тоже в кодировке 1251 — пожалуйста, сообщите нам по почте и мы добавим ее в список.

Приведение простых типов к типу Строка

Приведение простого типа к строке происходит неявным вызовом функции Строка(), которая использует текущие региональные настройки среды пользователя ОС, и поэтому в различных системах и различных сеансах может возвращать различные результаты, что самом по себе не приемлемо во многих задачах. Приведение к строке сложных типов вообще не дает представление о содержании, а содержит только краткое имя типа.

Функция Формат

Штатное приведение числового значения к строковому функцией Строка(…) выполняется быстрее всего, но оно выполняется в соответствии с региональными настройками представления чисел (в частности с разделителем разрядов непереносимым пробелом и локальным разделителем дробной части). Если подобные «вольности» преобразования числа недопустимы, следует использовать функцию Формат(<Значение>,<ФорматнаяСтрока>). Таблица содержит правила форматирования для типа Число:

ВИД ФОРМАТНОЙ СТРОКИ ФОРМАТ(<ПАРАМЕТРЫ>) = ОПИСАНИЕ
(1234567.89)

(0)

1 234 567,89 Отсутствие строки форматирования эквивалентно функции Строка(…)
ЧЦ (ND)

(число цифр)

(1234567.89,»ЧЦ=10;»)

(1234567.89,»ЧЦ=7;»)

(1234567.89,»ЧЦ=6;»)

1 234 568

1 234 568

999 999

общее число отображаемых десятичных разрядов целой и дробной частей. Исходное число округляется при этом в соответствии с правилами округления Окр15как20. Если указан этот параметр, то для отображения дробной части числа обязательно указание параметра ЧДЦ, иначе дробная часть отображаться не будет.
ЧВН ()

(число вывод нуля)

(1234567.89,»ЧЦ=9;ЧВН=;»)

(1234567.89,»ЧЦ=6;ЧВН=;»)

001 234 568

999 999

если параметр указан, лидирующие нули выводятся. Если не указан — лидирующие нули не выводятся. Значение параметра игнорируется.
ЧН (NZ)

(число ноль)

(0,»ЧН=;»)

(0,»ЧН=;ЧЦ=9;»)

(0,»ЧЦ=9;ЧН=;ЧВН=;»)

0

0

000 000 000

строка, представляющая нулевое значение числа. Если не задано, то представление в виде пустой строки. Если задано «ЧН=», то в виде «0». Не используется для числовых полей ввода.
ЧРГ (NGS)

(число разделитель групп)

(1234567.89,»ЧРГ=;»)

(1234567.89,»ЧРГ=«)

(1234567.89,»ЧРГ=+;»)

(1234567.89,»ЧРГ=0;»)

1 234 567,89

1234`567,89

1+234+567,89

102340567,89

символ-разделитель групп целой части числа. Если в качестве разделителя использовать пустую строку, то в этом случае разделителем будет символ неразрывного пробела.
ЧГ (NG)

число группа

(1234567.89,»ЧГ=;»)

(1234567.89,»ЧГ=0;»)

(1234567.89,»ЧГ=3;»)

(1234567.89,»ЧГ=3,2;»)

1234567,89

1234567,89

1234 567,89

12 34 567,89

порядок группировки разрядов числа. В качестве значения указываются числа, через запятую, обозначающие количество группируемых разрядов справа налево. Имеют смысл только два первых числа. Первое из них указывает первичную группировку, то есть ту, которая будет использована для наименее значимых разрядов целой части числа. Если второе число не указано, то будут сгруппированы только наименее значимые разряды. Если в качестве второго числа задан 0, то для всех разрядов целой части числа будет применено значение указанное для первичной группировки. Если в качестве второго числа используется значение, отличное от 0, то это значение будет использовано для группировки всех разрядов, кроме уже сгруппированных наименее значимых.
ЧРД (NDS)

число разделитель дробной части

(1234567.89,»ЧРД=;»)

(1234567.89,»ЧРД=.;»)

(1234567.89,»ЧРД=:;»)

1 234 567,89

1 234 567.89

1 234 567:89

символ-разделитель целой и дробной части.
ЧДЦ (NFD)

число десятичные цифры

(1234567.89,»ЧДЦ=0;»)

(1234567.89,»ЧДЦ=1;»)

(1234567.89,»ЧДЦ=3;»)

1 234 567

1 234 567,9

1 234 567,890

число десятичных разрядов в дробной части. Исходное число округляется при этом в соответствии с правилами округления Окр15как20.
ЧО (NN)

число отрицательные

(-1234567.89,»ЧО=0″)

(-1234567.89,»ЧО=1″)

(-1234567.89,»ЧО=2″)

(-1234567.89,»ЧО=3″)

(-1234567.89,»ЧО=4″)

(1 234 567,89)

-1 234 567,89

— 1 234 567,89

1 234 567,89-

1 234 567,89 —

представление отрицательных чисел.
ЧС (NS)

число сдвиг

(1234567.89,»ЧС=0;»)

(1234567.89,»ЧС=1;»)

(1234567.89,»ЧС=9;»)

(1234567.89,»ЧС=-6;»)

1 234 567,89

123 456,789

0,00123456789

1 234 567 890 000

сдвиг разрядов: положительный — деление, отрицательный — умножение. Другими словами, это означает, что исходное число будет умножено или поделено на 10*С, где С — значение параметра по модулю.
ЧФ (NF)

число формат

(1234567.89,»ЧФ=’Ч штук’;»)

(12345.89,»ЧФ=’Вес: Ч’;»)

(123,»ЧФ=’ЧЧЧ’;»)

1 234 567,89 штук

Вес: 12 345,89

123123123

шаблон форматирования числа. В строке можно использовать символ Ч(N) для указания позиции, в которую нужно вывести число. Число выводится с учетом остальных параметров, заданных в форматной строке. Остальные символы выводятся как есть. Символы, находящиеся между двойными или одинарными кавычками выводятся как есть. Шаблон форматирования не применяется к числу 0 (за исключением случая наличия в формате строки параметра «ЧН=»).
ФОРМАТИРОВАНИЕ ТИПА БУЛЕВО
БЛ (BF)

булево Ложь

(Истина,»БЛ=Неправда;»)

(Ложь,»БЛ=Неправда;»)

Да

Неправда

строка, представляющая логическое значение Ложь.
БИ (BT)

булево Истина

(Истина,»БИ=Правда;»)

(Ложь,»БИ=Правда;»)

Правда

Нет

строка, представляющая логическое значение Истина.
БИ=;БЛ=;

булево Истина и Ложь

(Истина,»БИ=Свет;БЛ=Тьма»)

(Ложь,»БИ=Свет;БЛ=Тьма»)

Свет

Тьма

комбинированная форматная строка для типа Булево
ПОЛЕЗНЫЕ КОМБИНИРОВАННЫЕ ФОРМАТНЫЕ СТРОКИ
ЧГ=;ЧН=;

ноль и числа без групп

(0,»ЧГ=;ЧН=;»)

(1234567,89,»ЧГ=;ЧН=;»)

0

-1234567,89

отменяет числовые группы и выводит «0»

для обычного отображения и экспорта в Ecxel

ЧРД=.;ЧГ=0;ЧН=;

точка, ноль, без групп

(0,»ЧРД=.;ЧГ=0;ЧН=;»)

(1234567.89,»ЧРД=.;ЧГ=0;ЧН=;»)

0

1234567.89

использует десятичную точку, отменяет числовые группы и выводит «0»

для вычисления в формулах, для обмена данными и сериализации

Для преобразования к строке типа Дата используют другие виды форматных строк:

ВИД ФОРМАТНОЙ СТРОКИ ФОРМАТ(<ПАРАМЕТРЫ>) = ОПИСАНИЕ
(‘00010101000000’)

(‘20060504010203’)

01.02.2003 4:05:06 Отсутствие строки форматирования эквивалентно функции Строка(…)
ДФ (DF)

(дата формат)

(‘20030201040506’, «ДФ=’дддд дд.ММ.гггг ЧЧ:мм:сс’»)

(‘20030201040506’, «ДФ=»»ддд дд ММММ гггг’г.’»»»)

(‘20030201040506’, «ДФ=’д.М.г Ч:м:с’»)

суббота 01.02.2003 04:05:06

Сб 01 февраля 2003г.

1.2.3 4:5:6

формат даты позволяет задать произвольный способ преобразоания

  • числа дня
    • д (d) — день месяца (цифрами) без лидирующего нуля;
    • дд (dd) — день месяца (цифрами) с лидирующим нулем;
    • ддд (ddd) — краткое название дня недели *);
    • дддд (dddd) — полное название дня недели *);
  • месяцы
    • М (M) — минута без лидирующего нуля;
    • ММ (MM) — минута с лидирующим нулем;
    • МММ (MMM) — краткое название месяца *);
    • ММММ (MMMM) — полное название месяца *);
  • к (q) — номер квартала в году;
  • год
    • г (y) — номер года без века и лидирующего нуля;
    • гг (yy) — номер года без века с лидирующим нулем;
    • гггг (yyyy) — номер года с веком;
  • часы
    • ч (h) — час в 12-часовом варианте без лидирующих нулей;
    • чч (hh) — час в 12-часовом варианте с лидирующим нулем;
    • Ч (H) — час в 24-часовом варианте без лидирующих нулей;
    • ЧЧ (HH) — час в 24-часовом варианте с лидирующим нулем;
  • минуты
    • м (m) — минута без лидирующего нуля;
    • мм (mm) — минута с лидирующим нулем;
  • секунды
    • с (s) — секунда без лидирующего нуля;
    • сс (ss) — секунда с лидирующим нулем;
  • вв (tt) — отображение половины дня AM/PM (действительно только для языков конфигурирования, поддерживающих 12 часовой вариант представления времени)
ДЛФ (DLF)

(дата локальный формат)

(‘20030201040506’,»ДЛФ=Д»)(‘20030201040506’,»ДЛФ=ДД»)

(‘20030201040506’,»ДЛФ=В»)

(‘20030201040506’,»ДЛФ=ДДВ»)

01.02.2003

1 февраля 2003 г.

4:05:06

1 февраля 2003 г. 4:05:06

локальный формат даты. Указывается вариант отображения частей даты.

  • Д (D) — дата (цифрами);
  • ДД (DD) — длинная дата (месяц прописью);
  • В (T) — полное время, дата может объединяться со временем;
  • ДВ (DT) — дата время.

Важно! Порядок следования опций форматной строки для ДЛФ <дата + время> (ДВ или ДДВ) не может быть изменен. При комбинировании ДФ и ДЛФ, приоритет получает ДФ, а ДЛФ игнорируется.

ДП (DE)

(дата пустая)

(‘00010101000000’, «ДЛФ=Д;ДП=’без даты’»)

(‘20030201040506’, «ДЛФ=Д;ДП=’без даты’»)

без даты

01.02.2003

формат пустой даты устанавливает текст представления пустой даты

///

Сериализация и десериализация

Понятие сериализации данных применяется, когда некоторые данные некоторого типа необходимо преобразовать в строковую последовательность, но не с целью представления, а для передачи средствами какого-либо потока. После прохождения сериализованной строковой последовательностью потока она должна быть точно преобразована к первоначальному или эквивалентному типу с эквивалентным значением.

Сериализация 1С

Платформа 1С реализует собственный формат сериализации, который может быть использован в модулях с компиляцией &НаСервере парой функций прямого и обратного преобразования:

  • ЗначениеВСтрокуВнутр(<Значение>)
  • ЗначениеИзСтрокиВнутр(<Строка>)

Пример сериализации реквизита типа СписокЗначений:

1

2

3

4

5

&НаСервере

СериализованныйСписок = ЗначениеВСтрокуВнутр(НачальныйСписок);

КонечныйСписок = ЗначениеИзСтрокиВнутр(СериализованныйСписок);

Значение сериализации при этом будет строкой вида:

1

2

3

4

5

6

{«#»,4772b3b4-f4a3-49c0-a1a5-8cb5961511a3,

{6,1e512aab-1b41-4ef6-9375-f0137be9dd91,0,0,

{2,

{

1e512aab-1b41-4ef6-9375-f0137be9dd91,

{«Сотня», 0, {«N»,100}, {4,0,{0},«»,1,1,0,0,«»} }

Сериализовать можно все простые типы, включая Массив, Структура и Соответствие, все типы коллекций. Поскольку прикладные типы могут включать каскады других прикладный типов непредсказуемой глубины, их сериализация выполняется только для ссылочного типа. Описание формата внутреннего представления данных 1С в контексте обмена данными //infostart.ru.

XML

Способ представления данных в формате XML можно назвать основным и нативным для 1С, поскольку он используется для внутреннего обмена через механизм XDTO между Клиентом и Сервером, он применим при любом типе компиляции метода и ко всем типам. Простейший способ сериализации произвольных данных использует метод глобального контекста ЗаписатьXML():

1

2

3

4

5

6

&НаСервере

ЗаписьXML = Новый ЗаписьXML;

ЗаписьXML.УстановитьСтроку();

ЗаписатьXML(ЗаписьXML, МоиДанные);

МояСериализация = ЗаписьXML.Закрыть();

Простейший способ десериализации использует метод глобального контекста ПрочитатьXML():

1

2

3

4

5

&НаСервере

ЧтениеXML = Новый ЧтениеXML;

ЧтениеXML.УстановитьСтроку(МояСериализация);

МоиДанные = ПрочитатьXML(ЧтениеXML);

Описанные методы глобального контекста доступны только на Сервере. Более совершенным способом сериализации, который доступен и на Клиенте, и который позволяет использовать сериализацию в неидентичных конфигурациях использует объект типа СериализаторXDTO, использующий описание собственных типов конфигурации:

1

2

3

4

5

6

7

&НаКлиентеНаСервере

СериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO);

ЗаписьXML = Новый ЗаписьXML();

ЗаписьXML.УстановитьСтроку();

СериализаторXDTO.ЗаписатьXML(ЗаписьXML, МоиДанные, НазначениеТипаXML.Явное);

МояСериализация = ЗаписьXML.Закрыть();

Десериализация использует методы объектов типа СериализаторXDTO и ЧтениеXML:

1

2

3

4

5

6

&НаКлиентеНаСервере

СериализаторXDTO = Новый СериализаторXDTO(ФабрикаXDTO);

ЧтениеXML = Новый ЧтениеXML();

ЧтениеXML.УстановитьСтроку(МояСериализация);

МоиДанные = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

Существует возможность использовать для сериализации не только тип Строка, но также файлы и потоки:

  • .УстановитьСтроку() — для использования сериализации типа Строка
  • .ОткрытьФайл() — для использования сериализации в файле
  • .ОткрытьПоток() — для использования сериализации типа Поток, ПотокВПамяти, ФайловыйПоток

FastInfoset

Способ является частным случаем XML, который используется при обновление классификатора КЛАДР в формате FastInfoSet в файлах .FI. Способ использует XML формат, но записанный в бинарном формате Fast Infoset (Recommendation X.891), поэтому сериализация не имеет строкового представления, а только файл или поток. Применяется совершенно аналогично способу XML, с той разницей, что типы ЧтениеFastInfoset и ЗаписьFastInfoset доступны только для компиляции на Сервере.

Пример кода преобразования бинарных данных FastInfoSet в xml-сериализацию:

1

2

3

4

5

6

7

8

9

10

&НаСервере

ЧтениеXML = Новый ЧтениеFastInfoSet;

ЧтениеXML.УстановитьДвоичныеДанные(МоиДвоичныеДанные);

ЗаписьXML = Новый ЗаписьXML;

ЗаписьXML.УстановитьСтроку();

Пока ЧтениеXML.Прочитать() Цикл

ЗаписьXML.ЗаписатьТекущий(ЧтениеXML);

КонецЦикла;

МояСериализация = ЗаписьXML.Закрыть();

JSON

Способ представления очень популярен и важен, поскольку является нативным для Java, поэтому платформа 1С поддерживает этот формат, подробно описанный тут //www.json.org и в Вики //ru.wikipedia.org.

Сериализация и десериализация JSON выполняется аналогично XML. Методы JSON также доступны в глобальном контексте при любом типе компиляции, но применимы не ко всем типам данных:

  • Неопределено — обратимо преобразуется в json-литерал null
  • Булево — обратимо преобразуется в json-литералы true или false
  • Число — обратимо преобразуется в число неограниченной длины с точностью до 27
  • Строка — обратимо преобразуется в строку в двойных кавычках (там где это необходимо используются escape-последовательности \’, \», \\, \/, \t, \n, \r, \f, \b или записываются шестнадцатеричные коды в кодировке Unicode в виде \uFFFF)
  • Дата — необратимо преобразуется в строку формата YYYY-MM-DDTHH:MM:SS, при десериализации будет получена Строка.
  • Массив — обратимо преобразуется в json-массив вида [значение 0, значение 1,…, значение N]
  • Структура — обратимо преобразуется в json-запись вида { «ключ а»: значение а, «ключ b»: значение b, …}
  • Соответствие — необратимо преобразуется в json-запись как Структура, в которой пары с ключом нарушающим правила идентификаторов полностью исключаются из преобразования, при десериализации вместо Соответствия будет получена Структура.

Попытка сериализации других типов приведет к исключению Передано значение недопустимого типа.

1

2

3

4

5

6

7

8

9

10

11

&НаКлиентеНаСервере

ЗаписьJSON = Новый ЗаписьJSON;

ЗаписьJSON.УстановитьСтроку(Новый ПараметрыЗаписиJSON(,Символы.Таб));

ЗаписатьJSON(ЗаписьJSON, МоиДанные);

МояСериализация = ЗаписьJSON.Закрыть();

ЧтениеJSON = Новый ЧтениеJSON;

УстановитьСтроку(МояСериализация);

МоиДанные = ПрочитатьJSON(ЧтениеJSON);

ЧтениеJSON.Закрыть();

//

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

&AtClient

Function JsonDump(Value)

JSONWriter = New JSONWriter;

JSONWriter.SetString();

WriteJSON(JSONWriter, Value);

Return JSONWriter.Close();

EndFunction

&AtClient

Function JsonLoad(Json)

JSONReader = New JSONReader;

JSONReader.SetString(Json);

Value = ReadJSON(JSONReader);

JSONReader.Close();

Return Value;

EndFunction

//

Base64

Этот широко распространенный стандарт кодирования преобразует двоичные данных в строковую последовательность, использующую только 64 символа ASCII, что позволяет упаковать любые двоичные данные в текст пригодный для внедрения в HTML или иной канал текстового обмена. Подробно стандарт Base64 описан на //ru.wikipedia.org

Для кодирования и обратного декодирование применяются три пары функций глобального контекста, доступных для любого типа компиляции, отличающиеся типом преобразуемых данных:

  • ДвоичныеДанные <<>> Строка
    • Base64Строка(<ДвоичныеДанные>) — возвращает строку сериализации base64
    • Base64Значение(<Строка>) — возвращает исходное значение типа ДвоичныеДанные
  • ДвоичныеДанные <<>> ДвоичныеДанные
    • ПолучитьBase64ДвоичныеДанныеИзДвоичныхДанных(<ДвоичныеДанные>)
    • ПолучитьДвоичныеДанныеИзBase64ДвоичныхДанных(<ДвоичныеДанные>)
  • БуферДвоичныхДанных <<>> БуферДвоичныхДанных
    • ПолучитьBase64БуферДвоичныхДанныхИзБуфераДвоичныхДанных(<Буфер>)
    • ПолучитьБуферДвоичныхДанныхИзBase64БуфераДвоичныхДанных(<Буфер>)


При использовании Base64 для упаковки тестовых данных большое значение имеет используемая кодировка текста. Платформа 1С предоставляет более 200 видов кодировки текста, по умолчанию использует кодировку UTF-8, а системной кодировкой Windows является ANSI. Для правильного декодирования данных необходимо точно знать и указать кодировку:

1

2

3

4

5

6

7

8

9

10

&НаКлиентеНаСервере

// кодирование в Base64

МоиДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки(МояСтрока, «UTF-8»);

МойBase64 = Base64Строка(МоиДвоичныеДанные);

// декодирование из Base64

МоиДвоичныеДанные = Base64Значение(МойBase64);

МояСтрока = ПолучитьСтрокуИзДвоичныхДанных(МоиДвоичныеДанные, «UTF-8»);

///

PHP

Способ сериализации используемый в PHP не поддерживается платформой 1С,

1 a:3:{i:1;a:0:{}i:2;a:2:{s:5:«title»;s:67:«(C) 2022. Управление тендерным отделом 2.0»;s:8:«nav_menu»;i:2;}s:12: ;i:1;}

///

Кодирование UTF-8, UTF-16, ANSI/CP1251, OEM/CP866, KOI8-R

Внутреннее кодирование строк 1С использует UNICODE. Для представление строк в различных кодировках и обратного преобразования применяется пара функций глобального контекста, доступных для компиляции на Сервере:

  • КодироватьСтроку(<Строка>, <СпособКодированияСтроки>, <КодировкаСтроки>)
  • РаскодироватьСтроку(<Строка>, <СпособКодированияСтроки>, <КодировкаСтроки>)
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

&НаСервере

//=»https://enter-it.ru/?s=code»

КодироватьСтроку(«https://enter-it.ru/?s=code», СпособКодированияСтроки.URLВКодировкеURL);

//=»https://enter-it.ru/?s=%D0%BA%D0%BE%D0%B4%D1%8B»

КодироватьСтроку(«https://enter-it.ru/?s=коды», СпособКодированияСтроки.URLВКодировкеURL);

//=»https%3A%2F%2Freks.biz%2F%3Fs%3Dcode»

КодироватьСтроку(«https://enter-it.ru/?s=code», СпособКодированияСтроки.КодировкаURL);

//=»https%3A%2F%2Freks.biz%2F%3Fs%3D%D0%BA%D0%BE%D0%B4%D1%8B»

КодироватьСтроку(«https://enter-it.ru/?s=коды», СпособКодированияСтроки.КодировкаURL);

//=»https://enter-it.ru/?s=%FF%FE%3A%04%FF%FE%3E%04%FF%FE%34%04%FF%FE%4B%04″

КодироватьСтроку(«https://enter-it.ru/?s=коды», СпособКодированияСтроки.URLВКодировкеURL,«UTF16»);

Параметр КодировкаСтроки, по умолчанию равный «UTF8», может быть установлен в «UTF16». При использовании «ANSI» или «OEM», вопреки справке, возникает исключение, однако нужный результат для русской кириллической кодировки можно получить используя значения «CP1251» и «CP866» соответственно, кроме того возможно использование значения «KOI8» или «KOI8-R».

Используя каскад Кодировать>>Раскодировать с отличающимися значениями параметра КодировкаСтроки удается даже реализовать перекодировку строк с исходной ошибкой в кодировке:

1

2

3

4

// «Є®¤л» кодировка cp866 ошибочно представленная как cp1251

РаскодироватьСтроку(

КодироватьСтроку(«Є®¤л», СпособКодированияСтроки.КодировкаURL,«cp1251»),

СпособКодированияСтроки.КодировкаURL,«cp866»); //=»коды»

1

2

3

4

// «ъюф√» — кодировка cp1251 ошибочно представленная как cp866

РаскодироватьСтроку(

КодироватьСтроку(«ъюф√», СпособКодированияСтроки.КодировкаURL,«cp866»),

СпособКодированияСтроки.КодировкаURL,«cp1251»); //=»коды»

MD5

Штатный механизм платформы позволяет хешировать строки и файлы при помощи алгоритмов MD5, SHA1, SHA256 и CRC32. Хеширование выполняется методами объекта типа ХешированиеДанных, доступного для компиляции на Сервере:

1

2

3

4

5

6

7

8

9

&НаСервере

ХешированиеСтроки = Новый ХешированиеДанных(ХешФункция.MD5);

ХешированиеСтроки.Добавить(МояСтрока);

ХешСтроки = ХешированиеСтроки.ХешСумма;

ХешированиеФайла = Новый ХешированиеДанных(ХешФункция.MD5);

ХешированиеФайла.ДобавитьФайл(МойФайл);

ХешФайла = ХешированиеФайла.ХешСумма;

Двоичные данные

В релизе платформы 8.3.16 были добавлены операции для работы с двоичными данными и буфером двоичных данных

  • тип ДвоичныеДанные
  • тип БуферДвоичныхДанных

функции

  • ПолучитьДвоичныеДанныеИзHexСтроки()
  • ПолучитьHexСтрокуИзДвоичныхДанных

Побитовые операции с целыми числами

В релизе платформы 8.3.11.2867 были добавлены побитовые операции с x32 числами без знака.

  • ПобитовоеИ()
  • ПобитовоеИли()
  • ПобитовоеНе()
  • ПобитовоеИНе()
  • ПобитовоеИсключительноеИли()
  • ПобитовыйСдвигВлево()
  • ПобитовыйСдвигВправо()
  • ПроверитьБит()
  • ПроверитьПоБитовойМаске()
  • УстановитьБит()

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как запустить настройки windows из командной строки
  • Pro tools 10 crack windows 10
  • Http injector для windows
  • Браузер для старого компьютера windows
  • Ru windows xp professional with service pack 3 x86 cd vl x14 74146 iso