Отображение и редактирование на формах, и хранение в базе, Unicode-строк в 1С 7.7

16.04.10

Разработка - Механизмы платформы 1С

Как известно 1С 7.7 вообще не поддерживает Unicode, а бывают случаи, когда надо или хочется. Один из характерных примеров – это наименования и коды импортных товаров (Китай, Япония), как они идут у поставщика, а это иероглифы на самом деле. Опять же, необходимость их вводить, хранить и редактировать в базе может возникнуть, если мы хотим формировать заказы поставщику из 1С сразу с теми наименованиями, что приняты у поставщика, на его родном языке, так сказать. Вот этот пример и призван показать один, из возможных, способов это сделать в 1С 7.7.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
SupportUnicode.zip
.zip 120,90Kb
56
56 Скачать (1 SM) Купить за 1 850 руб.

Естественно, что потом возникнет необходимость и выводить эти Unicode-строки на печать, при печати документа заказа поставщику с такими товарами, но этот вопрос также имеет массу возможных решений. Например, вывод документа сразу в файл, это может быть html, а может быть и Excel. Как это сделать в Excel, довольно подробно, описано тут: //infostart.ru/public/65242/

Но вернемся к нашей теме… В zip-архиве Вы можете скачать демо-базу, в которой реализовано все о чем мы будем говорить. Код открыт, как говориться;-)

Результат, которого мы будем добиваться, примерно, таков (см. рис. 1):

Рис. 1

Т.е. фактически мы даем возможность пользователю работать с Unicode-строкой, как с обычным текстовым реквизитом справочника, просматривать, редактировать и хранить его в базе 1С.

Естественно, что применение этого способа не ограничивается только реквизитами справочников и формами справочников, но покажем мы его, на примере справочника товаров, в котором будут два реквизита «поддерживающих» Unicode-строки (см. рис. 1).


Отображать Unicode-символы мы будем с помощью ActiveX’са на форме Internet Explorer. Поэтому он должен быть установлен в системе (Internet Explorer) и также нам понадобятся внешние компоненты 1С++ (http://www.1cpp.ru) и FormEx (http://www.dorex.ru), чтобы добавить и отобразить на форме этот ActiveX.

Сразу оговорюсь, мы будем выполнять JavaScript локально на машине, поэтому политики безопасности Internet Explorer должны быть настроены соответственно. А также в операционной системе должны быть необходимые шрифты для отображения Unicode-символов, иероглифов, например. Хотя, например, в Windows XP шрифтов этих хватает, на самом деле.

Итак, суть идеи, примерно, такова. В базе 1С Unicode-строки будем хранить как коды символов, разделенных точкой с запятой, в строковом поле неограниченной длины. На форме справочника будет AxtiveX-контрол IE, куда мы, при открытии формы справочника, подгружаем заготовленный html-код с JavaScript’овыми функциями (он записан в первой ячейке общей таблицы демо-конфигурации). Эти JavaScript’овые функции мы будет потом вызывать из 1С. Они и реализуют интерфейс между INPUT’ом html-кода (в котором и будут отображаться Unicode-строки) и строковым реквизитом справочника в базе 1С (с кодами Unicode-символов разделенных точкой с запятой). JavaScript’овые функции позволяют передать в них строку с кодами символов и отобразить эти символы в INPUT’е AxtiveX-контрола IE, преобразовав их из кодов в символы. И наоборот, преобразуют Unicode-строку из  INPUT’а AxtiveX-контрола IE в строку кодов символов разделенных точкой с запятой и возвращают ее в 1С. Таким образом, при открытии формы нам нужно прочитать соответствующий строковый реквизит справочника и вызвать соответствующие JavaScript’овые функции, передав им эту строку в качестве параметра. Они преобразуют коды в символы и отобразят их в AxtiveX-контроле в INPUT’е как Unicode-строку. А при записи элемента справочника, наоборот, вызвать соответствующие JavaScript’овые функции, которые вернут строку, с преобразованными в коды символами Unicode-строки, разделенными точкой с запятой, и записать эту строку в базу 1С в соответствующий реквизит. Это, если упрощенно, конечно.

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


В демо-конфигурации есть справочник «Товары». В форме элемента этого справочника вводим или редактируем реквизиты, в том числе и Unicode-строки (поля «поддерживающие» Unicode – беленькие). А в форме списка только просмотр полей текущего элемента (поля «поддерживающие» Unicode – серенькие). См. рис. 2.

 

Рис. 2

Единственно, чтобы вставить из буфера или скопировать в буфер обмена, что либо из/в эти поля («поддерживающие» Unicode), нужно выделить мышкой текст в этом поле и нажав правую кнопку мышки выбрать соответствующий пункт контекстного меню, т.е. «Вставить» или «Копировать». См. рис. 3.

 

Рис. 3

Больше особых неудобств замечено не было при работе со стороны пользователя...

См. также

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

В статье расписаны примеры из жизни использования "Виртуального" работника. Разобраны вопросы, возникающие при работе с ним.

28.11.2021    1864    user707242_Gold_karas    18    

5

Механизмы платформы 1С Программист Платформа 1С v7.7 Абонемент ($m)

Пример построения программного кода для достижения функционала обратных вызовов (call back) во внешних обработках исключительно штатными средствами. Тестировалось на платформе 1с77 релиз 027. Конфигурация значения не имеет.

1 стартмани

06.10.2018    7803    Vortigaunt    5    

11

Механизмы платформы 1С Программист Оперативный учет 7.7 Абонемент ($m)

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    10482    Vortigaunt    26    

5

Механизмы платформы 1С Программист Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    95958    Serginio    116    

188

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

В 1С 8 наличие картинок товаров предусмотрено изначально, а в 7.7 такого нет. Проблема существует и ее исправляют, но это, как правило, частные случаи, касающиеся, например, печати прайса http://infostart.ru/public/289876/ , показу картинок в справочнике номенклатура http://infostart.ru/public/17125/, файловый менеджер картинок товара http://infostart.ru/public/15239/ или просто конфигурации работы с картинками http://infostart.ru/public/21142/ (не стремился дать полный обзор, поэтому не попавшие не обижайтесь :). Что не устроило – информация разбросана по статьям, необходимость дополнительно напрягаться, чтобы это заработало. Здесь я попытался собрать все «до кучи», а так же дать необходимые ссылки для желающих «копнуть вглубь».

1 стартмани

18.11.2014    44842    95    kitminsk    18    

20

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    24253    tomvlad    5    

14

Механизмы платформы 1С Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

02.07.2012    18985    maxpiter    62    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. venger 2124 16.04.10 22:18 Сейчас в теме
(0) Как бы из реальной жизни пример;-)
2. Ёпрст 1065 19.04.10 10:25 Сейчас в теме
Как-бы всё выгялит не очень, неудачный активикс выбрал..

3. venger 2124 19.04.10 10:54 Сейчас в теме
(2) Зато у подавляющего большинства он уже есть в системе, да и под это дело лучше "заточенные" АктивИксы писать, так как кроме поля, еще бы и в таблицах, списках отражать.
4. CheHu 19.07.11 10:26 Сейчас в теме
Саша, что-то у меня не получается ввести буквы с диакритикой :(
Причем, букву "ё" - ввожу, а вот такое: "ââ ăă şş öö" - не удается...
Имею в качестве результата следующее: "^^a^^a ??a??a ¸¸s¸¸s ¨¨o¨¨o".

Вышеуказанные буквы с диакритикой вводятся с использованием мертвой кнопки (есть такие раскладки клавиатуры, например, "Канадская многоязычная"). Результаты моих экспериментов приводят меня к выводу, что при вводе мертвая кнопка не обрабатывается как "мертвая", а считывается как самостоятельный символ...

Вот только где дальше копать я не очень соображу...
Может поделишься мыслями?
Или кто из форумчан с таким сталкивался?..

Да еще:
Если я в 1С Предприятии создаю текстовый файл и набираю в нем, то получаю аналогичное: "^^a^^a ??a??a ¸¸s¸¸s ¨¨o¨¨o".
А рядышком в Блокноте (или в любом другом текстовом редакторе с поддержкой юникода) получаю нормальное: "ââ ăă şş öö".
Во как.

И еще немного:
С помощью "скопировать/вставить" я могу внести данные символы с поле и они в дальнейшем корректно отображаются.
То есть проблема только с непосредственным вводом символов с клавиатуры.
Вот пока такие наблюдения...
5. abdullayev707 19.09.11 09:40 Сейчас в теме
Спасибо огромное! Нужная вещь)
6. dizraelli 24.10.11 16:36 Сейчас в теме
А как внутренними командами 1С 7.7 вставлять символ в кодировке ANSI или Unicode; и есть ли вообще такой механизм в 1С (запуск Exel, фреймворков и прочего нежелателен)?
7. selesta 18 29.03.12 23:55 Сейчас в теме
а для печатных форм будет работать?
необходимо было сделать бланк на чешском языке, пока пришлось сделать шаблон в екселе и заполнять его по оле
8. makus 16.12.15 11:03 Сейчас в теме
Спасибо большое!

Поздно пишу, конечно, тем не менее, не подскажете, есть способ получить в 7.7 код символа unicode? Функция КодСимв() подойдёт для этого?
Нужно для работы с штрихкодом PDF417.
Оставьте свое сообщение