Реализацию задачи по поиску аналогов разбиваем на 3 части:
- Подключение к базе TecDoc.
- Формирование запросов к нужным данным из базы TecDoc.
- Отображение картинок запчастей и брендов из базы на форме обработки.
Первая и самая простая часть это подключение к базе, нашел довольно быстро в интернете:
Процедура ПодключитьсяTECDOC() Экспорт
Если ЗначениеНеЗаполнено(СтрокаПодключения) Тогда
СтрокаПодключения = "Driver=Transbase ODBC TECDOC CD 2_2015;SERVER=localhost;Database=TECDOC_CD_2_2015;Uid=tecdoc;PWD=tcd_error_0;";
КонецЕсли;
Connection = Новый COMОбъект("ADODB.Connection");
Connection.CommandTimeOut= 30;
Попытка
Connection.Open(СтрокаПодключения);
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
RS = Новый COMОбъект("ADODB.Recordset");
Исключение
Сообщить("Не могу подключиться к базе TECDOC !!!");
Возврат;
КонецПопытки;
КонецПроцедуры
Со второй частью пришлось повозиться немного дольше. Нужно было понять, к каким таблицам нужно обращаться и какие данные вытаскивать из базы. Поиск в интернете дал свои результаты – программу, с помощью которой удалось отловить запросы TecDoc-а (ODBC Monitor):
Дойдя до третьей части, я уже думал, что там осталось понтик работы - отобразить картинки на форме. С картинками брендов действительно все легко получилось:
ЭлементыФормы.КартинкаЛого.Картинка = Новый Картинка(Base64Значение(ВСтрокуBase64(ТД.ДанныеКартинкаЛого)));
Преобразовали из двоичных данных в картинку и вывели на форме, а вот с картинками запчастей, оказалось все намного сложнее – в двоичном виде в базе лежат картинки формата jp2 (JPEG2000), и как отобразить такую бяку - непонятно.
В итоге, как оказалось, это можно сделать даже несколькими способами:
- Сохранить в файл, и воспользоваться какой-нибудь утилитой для конвертирования.
- Найти ActiveX компонент для отображения графических изображений с поддержкой jp2.
Что первый, что второй способ подразумевает кроме самой обработки таскать еще конвертер с собой или устанавливать ActiveX компоненту (ActiveX, чтобы была бесплатной и поддерживала jp2, так и не нашел, но с демо версиями пробовал – использовать можно – но неудобно)
В итоге решил отображать такие картинки в «Поле HTML Документа» средствами HTML+JavaScript.
Добавил в обработку макет с javascript библиотекой OpenJPEG, и макет самой HTML страничкой.
Еще нюанс, чтобы сам js движок в «Поле HTML Документа» поддерживал функции javascript библиотеки OpenJPEG, дописал в HTML тег:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
И сама процедура выглядит так:
Процедура ВывестиКартинкуВHTML(Куда,Данные)
КодСкрипта = "var array_data = window.atob('"+стрЗаменить(ВСтрокуBase64(Данные),Символы.ПС,"'+"+Символы.ПС+"'")+"');DecodeAndDraw(base64ToArrayBuffer(array_data));";
Страничка = СтрЗаменить(ПолучитьМакет("html").ПолучитьТекст(),"ЗаменитьНаЛибу",ПолучитьМакет("Openjpeg_js").ПолучитьТекст());
Страничка = СтрЗаменить(Страничка,"ЗаменитьНаКод",КодСкрипта);
Куда.УстановитьТекст(Страничка);
КонецПроцедуры