Имя: Пароль:
1C
 
Однобайтовая кодировка в ЭДО
,
0 ssalikoff
 
04.04.24
11:49
Добрый день! Получил жалобу от клиентов, что при просмотре представления электронного документа УПД некоторые символы не отображаются корректно, будучи заменены на символ «?». Стал разбираться. Оказывается, 1С (в частности УТ 11) формирует xml-документы в кодировке windows-1251! Кто-нибудь в курсе, что это за хрень — однобайтовые кодировки в 21 веке? И, если кто сталкивался, как это можно исправить/настроить с минимальным вмешательством в конфигурацию?
1 asady
 
04.04.24
13:19
(0) вообще-то 1с 8 кодировка везде по умолчанию utf8
2 Chai Nic
 
04.04.24
13:22
(1) Может у них самописная выгрузка. Или обработка от оператора.
3 ssalikoff
 
04.04.24
13:25
(2) У кого самописная? Это стандартный модуль ЭДО. Провайдер КалугаАстрал. Никаких внешних обработок, это стандартные функции БСП
4 ssalikoff
 
04.04.24
13:26
(1) Я бы не делал таких заявлений без проверки. Предлагаю зайти в конфигуратор, Правка - Глобальный поиск и ввести текст "windows-1251". Изучите результаты
5 Chai Nic
 
04.04.24
13:33
Хм. Действительно. Попробовал из БП выгрузить УПД - тоже <?xml version="1.0" encoding="WINDOWS-1251"?>. И что-то нигде нет никаких опций на эту тему.
6 ssalikoff
 
04.04.24
14:01
Сделал экперимент. Извлёк запись из регистра ДвоичныеДанныеФайлов, в котором хранится xml-файл, закодированный в Base64. Изменил кодировку текста, изменил строку <?xml version="1.0" encoding="WINDOWS-1251"?> на <?xml version="1.0" encoding="utf-8"?>, всё запаковал и засунул обратно в регистр. В результате в форме просмотра представления электронного документа вместо табличного документа с нарисованным УПД лишь ссылка на xml-файл. То есть представление перестало формироваться.
7 Garykom
 
гуру
04.04.24
14:07
(6) смотри сюда
https://www.consultant.ru/document/cons_doc_LAW_152657/c774f9aebea0ae7b1dbdde5b30a8525aee678b08/

Параметры первой строки файла обмена

Первая строка XML файла должна иметь следующий вид:

<?xml version ="1.0" encoding ="windows-1251"?>
8 ssalikoff
 
04.04.24
14:09
(7) Спасибо, теперь всё понятно!
Значит, одинэсники не виноваты, это закон такой дурацкий
9 ssalikoff
 
04.04.24
14:11
Таким образом этот приказ ФНС неявно запрещает использовать в наименовании номенклатуры символы, отличные от базовой кириллицы и латиницы. Но это же бред
10 Chai Nic
 
04.04.24
14:13
(9) Наверное это они для совместимости с древним софтом на клиппере, который до сих пор где-то крутится.
11 Garykom
 
гуру
04.04.24
14:17
(10) clipper'у глубоко пофиг на кодировку, ибо оно один хрен не умеет xml из коробки
а банально как текст там можно в любой кодировке писать
12 Chai Nic
 
04.04.24
14:36
(11) Ну, формировать в досовской программе текст в UTF - не очень простая задача.
13 Garykom
 
гуру
04.04.24
14:44
(12) iconv.exe -f cp1251 -t utf-8 source.txt > result.txt
14 Chai Nic
 
04.04.24
14:46
(13) iconv под DOS вообще есть с поддержкой юникода? Не консольный под винду..
15 Garykom
 
гуру
04.04.24
14:46
(14) скомпилить можно но смысл?
16 ssalikoff
 
04.04.24
14:49
(11) То есть вы предлагаете писать в заголовке xml кодировку windows-1251, при этом сам файл будет в utf-8
Надо экспериментировать, но кажется, работать не будет
17 Garykom
 
гуру
04.04.24
14:51
(16) нет я такого не предлагаю
речь шла про совместимость со старым софтом
как на нем писать в utf-8
18 DrZombi
 
гуру
04.04.24
15:00
(9) Добро пожаловать в зазеркалье. :)
19 Chai Nic
 
04.04.24
15:05
Как вариант, можно с контрагентом договориться и нужные юникодные строки запихивать в инфополя.
20 ssalikoff
 
04.04.24
15:35
(19) у нас уникодные символы в наименовании номенклатуры. Придётся со всеми контрагентами на свете договариваться. Это не вариант
21 Chai Nic
 
04.04.24
15:52
(20) А по другому никак, если не вносить изменений в НПА.
22 Garykom
 
гуру
04.04.24
17:02
(20) Транслитерацию делайте
23 ssalikoff
 
04.04.24
18:34
(22) Для примера:
Отвод для внутренней канализации RTP, полипропилен, ППР, PP-R, ⌀50×87°
Стержень 100 мм ± 2 мм
Вот вам ещё немного полезных символов, которые никак через windows-1251 не передать:
‰ промилле
→←↑↓ стрелочки
≈ приблизительно
15⁄28 дроби
« » кавычки
и куча других
Можно, конечно, вместо м² писать м2, вместо ℃ писать град.Цельсия и так далее, но это всё выглядит уродливо и не для всех символов можно найти костыльную замену
24 Garykom
 
гуру
04.04.24
18:47
(23) "⌀50×87°" прекрасно заменяется на "D50x87Г" - всем понятно
Аналогично все прочее "±" = "+/-"
И т.д.
Если нельзя одним то заменить на несколько символов - обычная транслитерация.
25 Garykom
 
гуру
04.04.24
18:55
Фактически вы от азбуки (алфавитное письмо) перешли частично на пиктографическое письмо (иероглифы-смайлики).
И не хотите обратно, ибо так привычней.

Но как известно алфавит круче чем пиктограммы - про НТР и где она произошла же в курсе?
Ибо учить легче, слова новые проще и т.д.
26 Garykom
 
гуру
04.04.24
18:52
вместо м² писать м2

Общепринятое "кв.м"
27 MWWRuza
 
гуру
04.04.24
22:32
(16) То есть вы предлагаете писать в заголовке xml кодировку windows-1251, при этом сам файл будет в utf-8
Надо экспериментировать, но кажется, работать не будет

Не будет. Я это проходил, когда свое ЭДО делал. Тут где-то была тема. Сервер не принимает, ошибки выдает.
28 ssalikoff
 
05.04.24
07:16
(25) Вы правы, иероглифы — проклятие китайцев и, по моему мнению, одна из важнейших причин тормозов в развитии. Но сейчас, в XXI веке, перед китайцами, благодаря компьютерам, такой проблемы больше нет и им нет нужды переходить на алфавитное письмо и делать они это не собираются. Что касается смайликов и пиктограмм — можно их рассматривать как символы расширенного алфавита, чем они в принципе и являются. Агитировать за национальные кодировки в наше время — очень плохой тон. Ведь если рассуждать в вашем стиле, то можно было бы до сих пор продолжать пользовататься библиотектой Мошкова (кто помнит такую?) в которой все книги были собраны в формате txt
29 Chai Nic
 
05.04.24
08:52
(25) А если они продают какое-нибудь изделие по госзаказу, где в контракте прописано именно с "иероглифами" согласно ГОСТу? И нужно посимвольное соответствие, иначе не примут. Как тогда быть?