|
Штрих-Код | ☑ | ||
---|---|---|---|---|
0
Skimes
17.04.12
✎
11:26
|
А можно в 1С в Штрих-код закодировать русские символы? С цифрами/английскими все в порядке, а вот русские не поместить.
|
|||
1
Ненавижу 1С
гуру
17.04.12
✎
11:26
|
смотря в какой штрихкод
|
|||
2
Mikeware
17.04.12
✎
11:29
|
если только в двухмерный...
|
|||
3
Skimes
17.04.12
✎
11:30
|
Таблица/Рисунки/ВставитьОбъект/ЭлементУправления/1С V8 печать штрихкодов. Вот такой. Или ты про тип?
|
|||
4
Ненавижу 1С
гуру
17.04.12
✎
11:32
|
(3) про стандарт, есть EAN-13, есть Code 128
|
|||
5
Ненавижу 1С
гуру
17.04.12
✎
11:33
|
+(4) там можно интерпретировать русские буквы
|
|||
6
Skimes
17.04.12
✎
11:36
|
Пишет "Ошибочный штрих-код!"
|
|||
7
Skimes
17.04.12
✎
11:38
|
(5) А как интерпретировать? Можно поподробнее? Или ссылку где бы почитать =)
|
|||
8
Skimes
17.04.12
✎
11:57
|
Ап
|
|||
9
n koretsky
17.04.12
✎
12:17
|
а кто пишет про ошибочный штрих-код?
что с контрольной цифрой? ну, и на крайняк, что мешает порешать вопрос с помощью транслита? |
|||
10
Skimes
17.04.12
✎
12:22
|
(9) Эсина пишет в отладчике.
Код без контрольной цифры Ну с помощью транслита это ясно. Просто транслит можно не всегда однозначно перевести туда и потом обратно |
|||
11
Serginio1
17.04.12
✎
12:29
|
Либо используй экранирование, с преобразованием кода символов. Либо кодируй в Base64
|
|||
12
Serginio1
17.04.12
✎
12:31
|
Экранирование
function СимволИзУникодаВАнси(Буква) Симв=КодСимвола(Буква); if (Симв<128) Тогда Возврат буква ИначеЕсли (Симв>=1040 и Симв<=1103)Тогда Возврат Символ(Симв-1040+192-128) ИначеЕсли Симв=КодСимвола("Ё") Тогда Возврат Символ(168-128); ИначеЕсли Симв=КодСимвола("ё") Тогда Возврат Символ(184-128) ИначеЕсли Симв=КодСимвола("№") Тогда Возврат Символ(185-128) else Сообщить(Символ(Симв)); КонецЕсли; Возврат "" КонецФункции function СимволАнсиТуУникоде(Буква) КодСимв=КодСимвола(Буква)+128; Если (КодСимв>=192 и КодСимв<=255) Тогда Возврат Символ(КодСимв+1040-192) ИначеЕсли КодСимв=168 Тогда возврат "Ё" ИначеЕсли КодСимв=184 Тогда возврат "ё" ИначеЕсли КодСимв=185 Тогда возврат "№" Иначе сообщить(КодСимв) КонецЕсли; Возврат "" КонецФункции Функция ПреобразоватьСтрокуДляКоде128(стр) экспорт ЭтоЛатиница=1; резулт=""; Для сч=1 по СтрДлина(стр) Цикл Буква=Сред(стр,сч,1); Если КодСимвола(Буква)>127 Тогда Если ЭтоЛатиница=1 Тогда Резулт=Резулт+Символ(15); ЭтоЛатиница=0; КонецЕсли; Резулт=Резулт+СимволИзУникодаВАнси(Буква)//Символ(КодСимв(Буква)-128) иначе Если ЭтоЛатиница=0 Тогда Резулт=Резулт+Символ(1); ЭтоЛатиница=1; КонецЕсли; Резулт=Резулт+Буква КонецЕсли; КонецЦикла; возврат резулт КонецФункции Функция ПреобразоватьСтрокуДляКоде128Обратно(стр) экспорт ЭтоЛатиница=1; резулт=""; Для сч=1 по СтрДлина(стр) Цикл Буква=Сред(стр,сч,1); Если КодСимвола(Буква)=15 Тогда Если ЭтоЛатиница=1 Тогда ЭтоЛатиница=0 Иначе ЭтоЛатиница=1 КонецЕсли; иначе Если ЭтоЛатиница=0 Тогда Резулт=Резулт+СимволАнсиТуУникоде(Буква)//Симв(КодСимв(Буква)+128); Иначе Резулт=Резулт+Буква КонецЕсли; КонецЕсли; КонецЦикла; возврат резулт КонецФункции |
|||
13
Mikeware
17.04.12
✎
12:34
|
а можно задать традиционный китайский вопрос?
|
|||
14
Skimes
17.04.12
✎
12:40
|
(12) Благодарю! Будем делать так, раз русские буквы нельзя)
|
|||
15
Skimes
17.04.12
✎
12:41
|
(13) Ну задавай=)
|
|||
16
Serginio1
17.04.12
✎
12:54
|
(14) На здоровие. Можешь через XMLСтрока и Хранилище значения. Минус в том, что нужно записывать в файл. 1С почему то не может преобразовать строку в двоичные данные. Или я ошибаюсь?
|
|||
17
Serginio1
17.04.12
✎
13:06
|
Ошибаююсь.
Сообщить(XMLСтрока(Новый ХранилищеЗначения("СтрокаТеста"))) Выдает AQEhAAAAAAAAAO+7v3siUyIsItCh0YLRgNC+0LrQsNCi0LXRgdGC0LAifQ== Достаточно большую строку. Экранирование экономичней |
|||
18
Mikeware
17.04.12
✎
13:13
|
(15) ТрадиционныйКитайскийВопрос™ гласит - "анахуа?"
|
|||
19
Ринат-СПб
17.04.12
✎
13:24
|
(18) *под мотив OST Крестный отец*
Давай покрасим холодильник в черный цвет анахуа а просто так! |
|||
20
Serginio1
17.04.12
✎
13:34
|
(18) А чтобы кодировать без ограничений. Кстати внутри Code 128 тоже используется экранирование.
|
|||
21
Mikeware
17.04.12
✎
13:39
|
(20) а какая такая крайняя необходимость использовать русские буквы? для внутреннего уникального ШК?
|
|||
22
Serginio1
17.04.12
✎
13:41
|
Номера документов с русскими префиксами и прочая хрень которую хотят вывести в ШК
|
|||
23
Mikeware
17.04.12
✎
13:43
|
(22) номер документа - недостаточно уникальный идентификатор.
насчет прочей хрени - она, видимо, у них где-то между теменной и лобной костями. И зачем ее в штрихкод? |
|||
24
Serginio1
17.04.12
✎
13:47
|
23 Ну почему. Номер дата и тип документа. Выгоднее чем Уникальный идентификатор и тип документа. в Code128 много данных не уместишь.
А ты спроси у тех кто хочет ШК. Я использую датаграмм и непарюсь. |
|||
25
Skimes
17.04.12
✎
13:48
|
Ну смысл в том, что для разных ситуаций-разные префиксы у кодов. Поэтому он принципиален.
|
|||
26
Mikeware
17.04.12
✎
13:50
|
(24) номер может меняться - например, при смене фирмы. дата - тоже.
у УИДа вполне можно поднять основание, и он укорачивается. а 1совцы в УТ11 вообще отожгли - опустили основание до 10, да фигачат в код128... |
|||
27
Serginio1
17.04.12
✎
13:56
|
Все зависит от политики фирмы. В том числе от существующих обменов итд. Там проще сделать грубо, чем мучаться с множеством настроек. Да и стоимость перекодировки незначительно. Единственно что символ с кодом внутри Code128 сам экранируется увеличивая длину штрих кода.
|
|||
28
Serginio1
17.04.12
✎
13:58
|
(26) Гуид могут быть и сторонними. Не забывай про обмены. Причем не 1С. Не суть есть возможность кодировать русские буквы. Нет других проблем.
|
|||
29
Mikeware
17.04.12
✎
14:00
|
(27) накладняк на длину и перекодировку - небольшой, им вообще можнопренебречь.
а потери уникальности - это серьезней. впрочем, у них город такой... |
|||
30
Serginio1
17.04.12
✎
14:00
|
(26) Кроме того в Шк нужен для сравнения текущего документа с его бумажной версией. В которой номера документов должны совпадать
|
|||
31
Mikeware
17.04.12
✎
14:01
|
(28) я ровно о том же. редкий дятел использует для идентификации кириллическую строку.
|
|||
32
Mikeware
17.04.12
✎
14:02
|
(30) если "номера не совпадают" - то ты этот документ уже не найдешь.
|
|||
33
Serginio1
17.04.12
✎
14:04
|
Номера уникальны. Это я еще с в 7 ке делал. Там как знаешь Гуидов не существует. А городить еще одно поле которое не стыкуется с другими базами нет смысла. Кроме того опять же писал номера документа, суммы должны совпадать с бумажными.
(32) Например по уникальному ИД. Тебе привести кучу вариаций где это необходимо. У меня практика богатая. |
|||
34
Serginio1
17.04.12
✎
14:07
|
(32) Как помнишь в 7 уже забыл 5 из 64 символов на инт ID и 3 значный суффикс.
|
|||
35
Mikeware
19.04.12
✎
10:25
|
(33) там существуют id и iddoc. Ну, и тип, ессно. по ним ты однозначно найдешь.
у меня практика тоже есть :-) (34) не понял твоей фразы - что ты помнишь, а что забыл. но напомн, что в клюшках id вполне себе 9-символьный, включая 3 символа кода иб, и он не в 64, а в 36-ричной системе. |
|||
36
Serginio1
19.04.12
✎
11:14
|
(35) Спасибо. Я сам уже семерку забыл. Уже больше 2 лет не касаюсь. А насчет 36 это они зря. Можно былобы и 64 символа использовать.
По IDDOC и типа не надо. Ну да это уже не суть. |
|||
37
Mikeware
19.04.12
✎
12:00
|
(36) 36 - цифры, и большая латиница.
можно было и 64, но в принципе и 36 хватает. Только один человек вроде жаловался, что достиг пределов нумерации. Не рассчитывала 1с, когда проектировала систему, на большие объемы :-) |
|||
38
Serginio1
19.04.12
✎
16:08
|
Ну по уму то если бы ID шли друг за другом то 36 в 6 вполне должно было хватать даже учитывая ограничения таблиц. Скорее всего проблема с удалением и автоинкрементом без использования удаленных ID
|
|||
39
Mikeware
19.04.12
✎
16:36
|
(38)Нету никаких проблем. Я ж говорю, до предела нумерации идов добрался только один человек. а уникальность поддерживается, и это гораздо более важно.
|
|||
40
Serginio1
19.04.12
✎
16:46
|
(39) Я разве говорил о проблемах? Я говорил о том как это товарищ этого добился.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |