|
QR-коды: проблемы с хранением в регистре сведений | ☑ | ||
---|---|---|---|---|
0
slafor
18.01.22
✎
21:35
|
1С:Розница 2.3. Добавил расширение, в котором создал новые регистр сведений для хранения QR-кодов (чисто для печати, без связи со стандартными объектами).
Струкутуру РС сделал такую же, как в типовом регистре Штрихкодов - QRКод, Номенклатура и пр. - все в измерениях. Сразу возникла проблема с загрузкой QR-кодов из текстового файла (для каждой номенклатуры дают отдельные текстовые файла со списком QR-кодов). Загружал коды в массив, потом пытался передать массив на сервер, и система показывала ошибку: "Текст XML содержит недопустимый символ в позиции 31 : 010468011226064421"H"?pTbPJkPhc91806392UNdKI8AF+rYzGs5CZAhPiLFG3mfssEYOjeJVcZ2UEqnquB/fQtzl3J/JUAsnLcVTKWIw0DZShUNHktKac8G0vw==". Проблему решил, как обычно, с помощью "костылей" (иначе не назовешь): с клиента на сервер переносил массив не текстовых строк, а двоичных данных текста этих строк (ПолучитьДвоичныеДанныеИзСтроки), а на сервере уже переделывал их обратно в текст (ПолучитьСтрокуИзДвоичныхДанных). Заработало. |
|||
1
Смотрящий
18.01.22
✎
21:39
|
(0) Хвастаешься ?
|
|||
2
slafor
18.01.22
✎
21:39
|
(0) А теперь вот такая же проблема со списком регистра сведений. Как только пытаюсь открыть форму списка - опять такая же ошибка. Сделал свой запрос динамического списка, где вместо QR-кода написал просто строку "QRКод" ) - то есть он сам не выводится - в итоге в списке его нет, но опять появляется такая же ошибка, и в описании ошибки он опять пишется полностью: https://disk.yandex.ru/i/oaFHWI6IuJfiGA .
Как с этим можно справиться? Уже возникла мысли не хранить текстовые данные в регистре, а сразу переделывать их в двоичные... Но дело в том, что мне потом искать нужно по этим значениям. |
|||
3
slafor
18.01.22
✎
21:40
|
(1) Я просто случайно нажал не Enter, а Ctrl+Enter, сообщение раньше отправилось )
|
|||
4
slafor
18.01.22
✎
21:41
|
+(2) И опять эта злосчастная позиция 31...
|
|||
5
Смотрящий
18.01.22
✎
21:47
|
(3) У тебя не QR-код а Datamatrix
Вырежи https://helpf.pro/faq8/view/1044.html Судя по (0) datamatrix до кучи упакован в base64. раскодируй |
|||
6
slafor
18.01.22
✎
23:52
|
(5) А как ты понял, что он упакован в base64?
|
|||
7
arsik
гуру
19.01.22
✎
00:22
|
(6) Там же все на поверхности
https://i.imgur.com/u3Q1KMl.png |
|||
8
Сергиус
19.01.22
✎
01:10
|
(7)В чем прикол? это в каждом base64 такое?
|
|||
9
Salimbek
19.01.22
✎
07:50
|
(0) Я у себя изначально решил хранить упакованное в base64, а для поиска можешь первую часть (010468011226064421"H"?pTbPJkPhc) хранить отдельно. И ее выводить в список и проч...
|
|||
10
Смотрящий
19.01.22
✎
08:37
|
(6) Опыт, о юный падаван ))
(9) Излишне это. |
|||
11
lodger
19.01.22
✎
09:49
|
(2) полный вид датамарки со всеми символами не получится хранить в явном виде.
это всегда будет какой-то хеш(base64 хотя бы) или хранилищезначения. с упаковкой-распаковкой при записи-чтении. для просмотра и индексации можно вытащить отдельно GTIN и Serial = это ключ уникальности записи. либо чикать непечатные символы перед записью, а для печати расставлять их обратно. |
|||
12
lodger
19.01.22
✎
09:51
|
(11) ах да, забыл уточнить. если писать GTIN и Serial в строковые измерения, то в запросах всегда будет смешная коллизия вида <<Serial = SERiaL>>
|
|||
13
Смотрящий
19.01.22
✎
09:54
|
(11) Лучше резать, вставлять не обязательно - ну не получишь M+ в чеке, лишь бы по ЧЗ двигалось
|
|||
14
slafor
19.01.22
✎
18:50
|
В продолжение темы. Вот тут вроде описаны все стандарты кодов, применяемые в 1С: https://disk.yandex.ru/i/U4lv1Z9rtE2j4Q .
Как узнать, какой именно у них используется? |
|||
15
slafor
19.01.22
✎
18:52
|
(5) Datamatix-ов, как оказалось, великое множество... Есть еще GS1, но не написано, что это Datamatrix. А хотели именно GS1 Datamatrix. И в Notepad++ тоже GS выводится...
|
|||
16
slafor
20.01.22
✎
05:44
|
(9) Спасибо, Salimbek, совет действительно хороший! Я почти так и сделал: в РС у меня в измерении первая часть кода, а в ресурсе - хранилище значений с полным кодом в двоичных данных. Теперь и поиск работает, и полную строку могу в любой момент получить.
Когда идет перенос полной строки с недопустимыми в XML символами между процедурами на сервере, никаких ошибок не возникает, ошибки были, когда эта же строка переносилась с клиента на сервер... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |