Как правильно заменить вызов получения картинки штрихкода в УТ 11.5?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как правильно заменить вызов получения картинки штрихкода в УТ 11.5?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38521
      Фото аватараOdineski
      Участник

        Функция СформироватьПечатнуюФормуЭтикетка(МассивОбъектов, ОбъектыПечати, ПараметрыПечати, КомплектыПечати = Неопределено) Экспорт

        ТабличныйДокумент = Новый ТабличныйДокумент;
        ТабличныйДокумент.АвтоМасштаб = Ложь;
        ТабличныйДокумент.ПолеСверху = 0;
        ТабличныйДокумент.ПолеСнизу = 0;
        ТабличныйДокумент.ПолеСправа = 0;
        ТабличныйДокумент.ПолеСлева= 0;
        ТабличныйДокумент.РазмерКолонтитулаСверху = 0;
        ТабличныйДокумент.РазмерКолонтитулаСнизу = 0;
        //ТабличныйДокумент.ИмяПараметровПечати = «ПАРАМЕТРЫ_ПЕЧАТИ_НОМЕНКЛАТУРА_Этикетка»;

        ВызовИзОбработки = Ложь;
        Если МассивОбъектов.Количество()>0 Тогда
        ВызовИзОбработки = ТипЗнч(МассивОбъектов[0])=Тип(«Структура»);
        КонецЕсли;

        Запрос = Новый Запрос;
        Если ВызовИзОбработки Тогда//вызов из обработки печати этикеток

        ТаблицаДанных = Новый ТаблицаЗначений;
        ТаблицаДанных.Колонки.Добавить(«Номенклатура», Новый ОписаниеТипов(«СправочникСсылка.Номенклатура»));
        ТаблицаДанных.Колонки.Добавить(«Характеристика», Новый ОписаниеТипов(«СправочникСсылка.ХарактеристикиНоменклатуры»));
        ТаблицаДанных.Колонки.Добавить(«Упаковка», Новый ОписаниеТипов(«СправочникСсылка.УпаковкиЕдиницыИзмерения»));
        ТаблицаДанных.Колонки.Добавить(«Штрихкод», ОбщегоНазначения.ОписаниеТипаСтрока(200));
        ТаблицаДанных.Колонки.Добавить(«КоличествоЭтикеток», ОбщегоНазначения.ОписаниеТипаЧисло(10));

        Для каждого СтруктураДанных Из МассивОбъектов Цикл
        НоваяСтрока = ТаблицаДанных.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураДанных);
        КонецЦикла;

        Запрос.Текст = «
        |ВЫБРАТЬ
        | Номенклатура,
        | Характеристика,
        | Упаковка,
        | Штрихкод,
        | КоличествоЭтикеток
        |ПОМЕСТИТЬ ТаблицаДанных
        |ИЗ
        | &ТаблицаДанных КАК ТаблицаДанных
        |;
        |ВЫБРАТЬ
        | СправочникНоменклатура.Артикул КАК Артикул,
        | ТаблицаДанных.Номенклатура КАК Номенклатура,
        | ПРЕДСТАВЛЕНИЕ(ТаблицаДанных.Номенклатура) КАК Наименование,
        | ТаблицаДанных.Характеристика КАК Характеристика,
        | ПРЕДСТАВЛЕНИЕ(ТаблицаДанных.Характеристика) КАК ХарактеристикаНаименование,
        | ТаблицаДанных.Упаковка КАК Упаковка,
        | ПРЕДСТАВЛЕНИЕ(ТаблицаДанных.Упаковка) КАК УпаковкаНаименование,
        | ТаблицаДанных.Штрихкод КАК Штрихкод,
        | ТаблицаДанных.КоличествоЭтикеток КАК КоличествоЭтикеток
        |ИЗ
        | ТаблицаДанных КАК ТаблицаДанных

        | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
        | ПО ТаблицаДанных.Номенклатура = СправочникНоменклатура.Ссылка

        |;УНИЧТОЖИТЬ ТаблицаДанных
        |»;

        Запрос.УстановитьПараметр(«ТаблицаДанных», ТаблицаДанных);

        Иначе
        Запрос.Текст = «
        |ВЫБРАТЬ
        | СправочникНоменклатура.Артикул КАК Артикул,
        | СправочникНоменклатура.Ссылка КАК Номенклатура,
        | ПРЕДСТАВЛЕНИЕ(СправочникНоменклатура.Ссылка) КАК Наименование,
        | ШтрихкодыНоменклатуры.Характеристика КАК Характеристика,
        | ПРЕДСТАВЛЕНИЕ(ШтрихкодыНоменклатуры.Характеристика) КАК ХарактеристикаНаименование,
        | ШтрихкодыНоменклатуры.Упаковка КАК Упаковка,
        | ПРЕДСТАВЛЕНИЕ(ШтрихкодыНоменклатуры.Упаковка) КАК УпаковкаНаименование,
        | ЕСТЬNULL(ШтрихкодыНоменклатуры.Штрихкод, «»»») КАК Штрихкод,
        | 1 КАК КоличествоЭтикеток
        |ИЗ
        | Справочник.Номенклатура КАК СправочникНоменклатура
        | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
        | ПО СправочникНоменклатура.Ссылка = ШтрихкодыНоменклатуры.Номенклатура
        |ГДЕ
        | СправочникНоменклатура.Ссылка В (&МассивОбъектов)
        |»;

        Запрос.УстановитьПараметр(«МассивОбъектов», МассивОбъектов);
        КонецЕсли;

        Макет = ПолучитьМакет(«ПФ_MXL_Этикетка»);
        ОбластьМакета = Макет.ПолучитьОбласть(«Этикетка»);

        й = 0;
        Выборка = Запрос.Выполнить().Выбрать();
        Пока Выборка.Следующий() Цикл
        Для к=1 По Выборка.КоличествоЭтикеток Цикл

        й = й + 1;
        Если й > 1 Тогда
        ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;

        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;

        ОбластьМакета.Параметры.Заполнить(Выборка);
        ОбластьМакета.Параметры.Наименование = ?(ЗначениеЗаполнено(Выборка.УпаковкаНаименование), «(«+СокрЛП(Выборка.УпаковкаНаименование)+»), «, «»)
        + СокрЛП(Выборка.Наименование)
        + ?(ЗначениеЗаполнено(Выборка.ХарактеристикаНаименование), «, «+СокрЛП(Выборка.ХарактеристикаНаименование), «»);

        Эталон = ПолучитьМакет(«Эталон»);
        КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;

        ПараметрыШтрихкода = Новый Структура;
        ПараметрыШтрихкода.Вставить(«Ширина», Окр(ОбластьМакета.Рисунки.КартинкаШтрихкода.Ширина / КоличествоМиллиметровВПикселе));
        ПараметрыШтрихкода.Вставить(«Высота», Окр(ОбластьМакета.Рисунки.КартинкаШтрихкода.Высота / КоличествоМиллиметровВПикселе));
        ПараметрыШтрихкода.Вставить(«Штрихкод», Выборка.Штрихкод);
        ПараметрыШтрихкода.Вставить(«ТипВходныхДанных», 0); // Штрихкод — это строка
        Если СтрДлина(Выборка.Штрихкод)=14 тогда
        ПараметрыШтрихкода.Вставить(«ТипКода», 11); // 0-24
        ПараметрыШтрихкода.Вставить(«АвтоТип», Истина); // EAN13
        иначе
        ПараметрыШтрихкода.Вставить(«ТипКода», 1); // 0-24
        ПараметрыШтрихкода.Вставить(«АвтоТип», Истина); // EAN13

        конецесли;
        ПараметрыШтрихкода.Вставить(«ОтображатьТекст», Истина);
        ПараметрыШтрихкода.Вставить(«РазмерШрифта», 10);

        ОбластьМакета.Рисунки.КартинкаШтрихкода.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);

        ТабличныйДокумент.Вывести(ОбластьМакета);

        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Выборка.Номенклатура);

        КонецЦикла;
        КонецЦикла;

        Возврат ТабличныйДокумент;
        КонецФункции

      • #38522
        bot_avaOdin — Одинэсник
        Участник

          В УТ 11.5.27.68 метода
          МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода
          нет, поэтому возникает ошибка «Метод объекта не обнаружен».

          Чтобы исправить, нужно заменить вызов получения картинки штрихкода на корректный для УТ 11.5.

          Как сделать правильно:

          1. В УТ 11.5 используется внешний компонент печати штрихкодов, подключаемая через общий макет и общий модуль.

          2. Создайте в общем модуле (например, ОбщийМодуль.МенеджерОборудования) функцию, которая возвращает картинку штрихкода, используя внешний компонент:

          3. В вашей функции СформироватьПечатнуюФормуЭтикетка замените строку:

          на

          4. Убедитесь, что общий модуль с функцией ПолучитьКартинкуШтрихкода подключён к вашей внешней обработке.

          Дополнительно:

          — Проверьте, что в вашей базе есть макет «КомпонентаПечатиШтрихкодов» (обычно в типовых конфигурациях УТ 11 он есть).
          — Если макета нет, его можно взять из типовой конфигурации или скачать с инфостарта.
          — Вызов внешней компоненты должен работать и в 64-битном клиенте.

          Если нужно, могу помочь с готовым модулем и макетом для печати штрихкодов в УТ 11.5.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С