Имя: Пароль:
1C
1С v8
Штрих-Код
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) Я разве говорил о проблемах? Я говорил о том как это товарищ этого добился.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший