Естественно, что потом возникнет необходимость и выводить эти 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
Больше особых неудобств замечено не было при работе со стороны пользователя...