Штрихкод в управляемой форме в толстом клиенте.
Всем привет.
Есть старая УТ 10.3 , есть в ней пара документов у которых на управляемых формах ( ну просто их проще дизайнить... )
Вот в одном из новых доков, потребовалось сделать печать этикетки со штрихкодом.
Думал , все по старинке сделаю, но встретил проблему.
Как делалось
Ну и разумеется ошибка начинается с этой части
{Документ.мд_Рекламация.Форма.ФормаДокумента.Форма(536)}: Значение не является значением объектного типа (ТипКода)
КомпонентШК.ТипКода = 4;
Прочел мега тону статей, понял, что в УФ это сделано через анус обезьяны и расстроился.
Теперь вопрос. Может кто делал такой изврат ... ? и поможет с кодом и компонентами для УТ...
Есть старая УТ 10.3 , есть в ней пара документов у которых на управляемых формах ( ну просто их проще дизайнить... )
Вот в одном из новых доков, потребовалось сделать печать этикетки со штрихкодом.
Думал , все по старинке сделаю, но встретил проблему.
Как делалось
&НаСервере
Функция ПечатьЭтикеткиНаСервере()
Об = РеквизитФормыВЗначение("Объект");
СтруктураВозврат = Новый Структура;
СтруктураВозврат.Вставить("Успех", Истина);
ПринтерДляПечати = МДО_ОбщийМодуль.ОпределитьПринтерДляПользователя(ПараметрыСеанса.ТекущийПользователь);
Если ПринтерДляПечати = "" Тогда
СтруктураВозврат.Успех = Ложь;
СтруктураВозврат.Вставить("Ошибка","Не задан принтер");
Возврат СтруктураВозврат;
КонецЕсли;
Макет = Об.ПолучитьМакет("Этикетка");
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ВысотаСтраницы = 370;
ТабДокумент.ШиринаСтраницы = 570;
ТабДокумент.ПолеСверху = 0;
ТабДокумент.ПолеСправа = 0;
ТабДокумент.ПолеСнизу = 0;
ТабДокумент.ПолеСлева = 0;
ТабДокумент.АвтоМасштаб = Истина;
ТабДокумент.ИмяПринтера = ПринтерДляПечати;
ТабДокумент.ВерхнийКолонтитул.Выводить = Ложь;
ТабДокумент.НижнийКолонтитул.Выводить = Ложь;
Область = Макет.ПолучитьОбласть("Этикетка");
Для Каждого Товар из Объект.Товары Цикл
Область.Параметры.Заполнить(Товар.Номенклатура);
КонецЦикла;
КомпонентШК = Область.Рисунки.Штрихкод.Объект;
КомпонентШК.ТипКода = 4;
КомпонентШК.АвтоТип = Ложь;
КомпонентШК.Сообщение = Объект.Номер;
ТабДокумент.Вывести(Область);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
СтруктураВозврат.Вставить("ТД",ТабДокумент);
Возврат СтруктураВозврат;
КонецФункции
&НаКлиенте
Процедура ПечатьЭтикетки(Команда)
Если Объект.Номер = "" Или Объект.Товары.Количество() = 0 Тогда
ПоказатьОповещениеПользователя("Ошибка печати",,"Неверный номере или пустая таблица товаров");
Возврат;
КонецЕсли;
Результат = ПечатьЭтикеткиНаСервере();
Если НЕ Результат.успех Тогда
ПоказатьОповещениеПользователя("Ошибка",,Результат.ошибка);
Возврат;
КонецЕсли;
ТабДокумент = Результат.ТД;
ТабДокумент.Показать();
КонецПроцедуры
ПоказатьНу и разумеется ошибка начинается с этой части
КомпонентШК = Область.Рисунки.Штрихкод.Объект;
КомпонентШК.ТипКода = 4;
{Документ.мд_Рекламация.Форма.ФормаДокумента.Форма(536)}: Значение не является значением объектного типа (ТипКода)
КомпонентШК.ТипКода = 4;
Прочел мега тону статей, понял, что в УФ это сделано через анус обезьяны и расстроился.
Теперь вопрос. Может кто делал такой изврат ... ? и поможет с кодом и компонентами для УТ...
По теме из базы знаний
Найденные решения
(3)
Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода() Экспорт
//Макет = ПолучитьМакет("КомпонентаПечатиШтрихкода");
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкода", "ШтрихКод", ТипВнешнейКомпоненты.Native);
// Создадим объект внешней компоненты
Если ПодключениеВыполнено Тогда
ВнешняяКомпонента = Новый("AddIn.ШтрихКод.Barcode");
Иначе
Возврат Неопределено;
КонецЕсли;
// Если нет возможности рисовать
Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда
// То картинку сформировать не сможем
Возврат Неопределено;
Иначе
// Установим основные параметры компоненты
// Если в системе установлен шрифт Tahoma
Если ВнешняяКомпонента.НайтиШрифт("Tahoma") = Истина Тогда
// Выбираем его как шрифт для формирования картинки
ВнешняяКомпонента.Шрифт = "Tahoma";
Иначе
// Шрифт Tahoma в системе отсутствует
// Обойдем все доступные компоненте шрифты
Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл
// Получим очередной шрифт, доступный компоненте
ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч);
// Если шрифт доступен
Если ТекущийШрифт <> Неопределено Тогда
// Они и будет шрифтом для формирования штри-кода
ВнешняяКомпонента.Шрифт = ТекущийШрифт;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Утановим размер шрифта
ВнешняяКомпонента.РазмерШрифта = 12;
Возврат ВнешняяКомпонента;
КонецЕсли;
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Тут все зависит от платформы.
У новых платформ не работает старая компонента штрихкода, только встроенная.
У меня платформа 8.3.18.1208
У меня вот так работает:
Функция получения штрихкода:
У новых платформ не работает старая компонента штрихкода, только встроенная.
У меня платформа 8.3.18.1208
У меня вот так работает:
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 110);
ПараметрыШтрихкода.Вставить("Высота", 20);
ПараметрыШтрихкода.Вставить("ТипКода", 1);//Автоопределение
ПараметрыШтрихкода.Вставить("РазмерШрифта", 8);
ПараметрыШтрихкода.Вставить("Штрихкод", СтрокаИзСписка.ШтрихКод);
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
ЭтикеткаОбласть.Рисунки.ШтрихКод.Картинка = ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода)
ПоказатьФункция получения штрихкода:
Функция ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) Экспорт
ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода();
Если ВнешняяКомпонента = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода!'");
КонецЕсли;
// Зададим размер картинки
ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина);
ВнешняяКомпонента.Высота = Окр(ПараметрыШтрихкода.Высота);
ВнешняяКомпонента.АвтоТип = Ложь;
ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода;
ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст;
ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта;
// Или установим код EAN-13
// ВнешняяКомпонента.ТипКода = 1;
//
// Тип смотрим в документации на внешнуюю компоненту
// Если код содержит контрольный символ, обязательно указываем
ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13;
// Если отображать контрольный символ не нужно
// ВнешняяКомпонента.ВидимостьКС = Ложь;
// Формируем картинку штрихкода
ВнешняяКомпонента.ЗначениеКода = ПараметрыШтрихкода.Штрихкод;
// Если установленная нами ширина меньше минимально допустимой для этого штрихкода
Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода + 10;
КонецЕсли;
// Сформируем картинку
ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод();
// Если картинка сформировалась
Если ДвоичныеДанныеКартинки <> Неопределено Тогда
// Формируем из двоичных данных
Возврат Новый Картинка(ДвоичныеДанныеКартинки);
КонецЕсли;
Возврат Неопределено;
КонецФункции
Показать
(2)
Была бы еще у меня новая =) Так ладно бы... а тут 1С:Предприятие 8.3 (8.3.8.2322) и УТ 10.3.13.2, старье =)
Работает и ладно =) Свое дело знает. Просто мне скучно и подавай УФ для документа.
Вот и ищу, как напечатать чудный ШК.
А где взяли ?
У меня платформа 8.3.18.1208
Была бы еще у меня новая =) Так ладно бы... а тут 1С:Предприятие 8.3 (8.3.8.2322) и УТ 10.3.13.2, старье =)
Работает и ладно =) Свое дело знает. Просто мне скучно и подавай УФ для документа.
Вот и ищу, как напечатать чудный ШК.
А где взяли ?
ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода();
(3)Тогда тебе надо добавить компоненту печати штрихкода.
Нужно создать общий макет тип Двоичные данные и загрузить этот файл:
Нужно создать общий макет тип Двоичные данные и загрузить этот файл:
Прикрепленные файлы:
КомпонентаПечатиШтрихкода.xml
(3)
Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода() Экспорт
//Макет = ПолучитьМакет("КомпонентаПечатиШтрихкода");
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкода", "ШтрихКод", ТипВнешнейКомпоненты.Native);
// Создадим объект внешней компоненты
Если ПодключениеВыполнено Тогда
ВнешняяКомпонента = Новый("AddIn.ШтрихКод.Barcode");
Иначе
Возврат Неопределено;
КонецЕсли;
// Если нет возможности рисовать
Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда
// То картинку сформировать не сможем
Возврат Неопределено;
Иначе
// Установим основные параметры компоненты
// Если в системе установлен шрифт Tahoma
Если ВнешняяКомпонента.НайтиШрифт("Tahoma") = Истина Тогда
// Выбираем его как шрифт для формирования картинки
ВнешняяКомпонента.Шрифт = "Tahoma";
Иначе
// Шрифт Tahoma в системе отсутствует
// Обойдем все доступные компоненте шрифты
Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл
// Получим очередной шрифт, доступный компоненте
ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч);
// Если шрифт доступен
Если ТекущийШрифт <> Неопределено Тогда
// Они и будет шрифтом для формирования штри-кода
ВнешняяКомпонента.Шрифт = ТекущийШрифт;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Утановим размер шрифта
ВнешняяКомпонента.РазмерШрифта = 12;
Возврат ВнешняяКомпонента;
КонецЕсли;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот