Есть обработка которая формирует ярлыки:
////////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ
// Переменные для заполнения при вызове обработки из документа.
Перем мВнешняяТаблицаТоваров Экспорт;
Перем мВнешнийЭлементНоменклатуры Экспорт;
Перем мИспользоватьСерии;
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ
// Возвращает значение типа штрихкода для использования в ЭУ
// "1С:Печать штрихкодов"
//
// Параметры
// ТипКода - ПланыВидовХарактеристик.ТипыШтрихкодов - тип, значение для которого
// нужно получить
//
// Возвращаемое значение:
// Число, которое может быть присвоено свойству ЭУ "ТипКода"
//
Функция ПолучитьЗначениеТипаШтрихкодаДляЭУ(ТипКода)
Перем Значение;
Если ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8 Тогда
Значение = 0;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
Значение = 1;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
Значение = 2;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
Значение = 3;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128 Тогда
Значение = 4;
Иначе
Значение = -1;
КонецЕсли;
Возврат Значение;
КонецФункции // ПолучитьЗначениеТипаШтрихкодаДляЭУ()
// Процедура управления пометками кнопок командной панели.
//
Процедура УправлениеПометкамиКнопокКоманднойПанели()
Если ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Верх Тогда
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Отбор.Пометка = Ложь;
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Отбор.Пометка = Ложь;
Иначе
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Отбор.Пометка = Истина;
ЭлементыФормы.КоманднаяПанельФормы.Кнопки.Подменю.Кнопки.Отбор.Пометка = Истина;
КонецЕсли;
КонецПроцедуры // УправлениеПометкамиКнопокКоманднойПанели()
// Процедура заполнения таблицы товаров
// Заполняет табличную часть информацией из регистра "Штрихкоды" с указанными
// условиями отбора.
//
Процедура Заполнить()
Если ПечататьЦену И Не ЗначениеЗаполнено(ТипЦены) Тогда
Сообщить ("Не указан тип цен!");
Возврат;
КонецЕсли;
ЗапросШтрихкоды = Новый Запрос;
ЗапросШтрихкоды.УстановитьПараметр("ТипШтрихкода", ТипШтрихкода);
Если ЗначениеЗаполнено(ЭлементыФормы.Номенклатура.Значение) Тогда
ЗапросШтрихкоды.УстановитьПараметр("Владелец", ЭлементыФормы.Номенклатура.Значение);
КонецЕсли;
ЗапросШтрихкоды.УстановитьПараметр("ЕдиницаПоКлассификатору", Единица);
ЗапросШтрихкоды.УстановитьПараметр("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
ЗапросШтрихкоды.УстановитьПараметр("Качество", Качество);
ЗапросШтрихкоды.УстановитьПараметр("ТипШтрихкода", ТипШтрихкода);
ЗапросШтрихкоды.УстановитьПараметр("ТипыШтрихкода", ЭлементыФормы.ТипШтрихкода.СписокВыбора);
ЗапросШтрихкоды.УстановитьПараметр("ЭтоГруппа", Истина);
ЗапросШтрихкоды.УстановитьПараметр("Дата", ТекущаяДата());
ЗапросШтрихкоды.УстановитьПараметр("Валюта", Валюта);
Если НЕ ВВалютахЦен Тогда
Если НЕ ЗначениеЗаполнено(Валюта)Тогда
Предупреждение("Не указана валюта для заполнения цен!");
Возврат;
КонецЕсли;
КурсВалюты = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ТекущаяДата(), Новый Структура("Валюта", Валюта));
Если КурсВалюты.Курс = 0 тогда
Предупреждение("Курс валюты отчета """ + Валюта.Наименование+""" на дату " +
строка(ТекущаяДата())+" не определен или нулевой. Формирование этикеток невозможно.");
Возврат;
КонецЕсли;
Если КурсВалюты.Кратность = 0 тогда
Предупреждение("Кратность курса валюты отчета """ + Валюта.Наименование+""" на дату " +
строка(ТекущаяДата())+" не определена или нулевая. Формирование этикеток невозможно.");
Возврат;
КонецЕсли;
ЗапросШтрихкоды.УстановитьПараметр("КурсВалюты", КурсВалюты.Курс);
КонецЕсли;
Если ТипЦены.Рассчитывается Тогда
ТипЦенБазовый = ТипЦены.БазовыйТипЦен;
ПорядокОкругления = ТипЦены.ПорядокОкругления;
ОкруглятьВБольшуюСторону = ТипЦены.ОкруглятьВБольшуюСторону;
ПроцентСкидкиНаценки = ТипЦены.ПроцентСкидкиНаценки;
ЗапросШтрихкоды.УстановитьПараметр("ТипЦены", ТипЦенБазовый);
ЗапросШтрихкоды.УстановитьПараметр("ТипЦенРасчетный", ТипЦены);
Иначе
ЗапросШтрихкоды.УстановитьПараметр("ТипЦены", ТипЦены);
КонецЕсли;
Текст = "ВЫБРАТЬ
| Штрихкоды.ТипШтрихкода,
| Штрихкоды.Штрихкод,";
Текст = Текст + "
| Штрихкоды.Владелец КАК Номенклатура,
| Штрихкоды.ЕдиницаИзмерения,
| Штрихкоды.ХарактеристикаНоменклатуры КАК Характеристика,
| Штрихкоды.СерияНоменклатуры КАК Серия,
| Штрихкоды.Качество,
| ВЫБОР КОГДА Цены.Цена ЕСТЬ NULL
| ИЛИ Цены.Цена = 0 ТОГДА 0
| ИНАЧЕ
| Цены.Цена
| КОНЕЦ КАК Цена,
| Цены.ЕдиницаИзмерения КАК ЦеныЕдиница,
| Цены.Валюта КАК Валюта,
| Цены.ТипЦен КАК ТипЦен,";
Если ТипЦены.Рассчитывается Тогда
Текст = Текст + "
| Цены.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,";
КонецЕсли;
Текст = Текст + "
| 1 КАК Количество
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
| ЛЕВОЕ СОЕДИНЕНИЕ
| (ВЫБРАТЬ
| Рег.Номенклатура.Ссылка КАК Номенклатура,
| Рег.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| Рег.ТипЦен.Ссылка КАК ТипЦен,
| Рег.Цена КАК Цена,
| Рег.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Рег.Валюта КАК Валюта";
Если ТипЦены.Рассчитывается Тогда
Текст = Текст + ",
| ВЫБОР КОГДА ВложенныйЗапрос.ПроцентСкидкиНаценки = 0
| ИЛИ ВложенныйЗапрос.ПроцентСкидкиНаценки ЕСТЬ NULL
| ТОГДА
| 0
| ИНАЧЕ
| ВложенныйЗапрос.ПроцентСкидкиНаценки
| КОНЕЦ КАК ПроцентСкидкиНаценки
|";
КонецЕсли;
Текст = Текст + "
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = (&ТипЦены)) КАК Рег";
Если ТипЦены.Рассчитывается Тогда
Текст = Текст + "
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
| ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|
| ГДЕ
| ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦенРасчетный) КАК ВложенныйЗапрос
| ПО Рег.Номенклатура = ВложенныйЗапрос.Номенклатура И Рег.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры
|";
КонецЕсли;
Текст = Текст + "
| ) КАК Цены
| ПО(Штрихкоды.Владелец = Цены.Номенклатура)
| И (Штрихкоды.ХарактеристикаНоменклатуры = Цены.ХарактеристикаНоменклатуры)
|
|ГДЕ
| Штрихкоды.Владелец.ЭтоГруппа <> &ЭтоГруппа";
Если ЗначениеЗаполнено(ТипШтрихкода) Тогда
Текст = Текст+" И
| Штрихкоды.ТипШтрихкода = &ТипШтрихкода";
Иначе
Текст = Текст+" И
| Штрихкоды.ТипШтрихкода В (&ТипыШтрихкода)";
КонецЕсли;
Если ТолькоВнутренние Тогда
Текст = Текст + " И
| ПОДСТРОКА(Штрихкоды.Штрихкод, 1, 1) = ""2""";
КонецЕсли;
Если ЗначениеЗаполнено(ЭлементыФормы.Номенклатура.Значение) Тогда
Текст = Текст+" И
| Штрихкоды.Владелец ";
Если ПолеВидаСравненияНоменклатура = ВидСравнения.Равно Тогда
Текст = Текст+"=";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеРавно Тогда
Текст = Текст+"<>";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.ВСписке Тогда
Текст = Текст+"В";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеВСписке Тогда
Текст = Текст+"НЕ В";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.ВИерархии Тогда
Текст = Текст+"В ИЕРАРХИИ";
ИначеЕсли ПолеВидаСравненияНоменклатура = ВидСравнения.НеВИерархии Тогда
Текст = Текст+"НЕ В ИЕРАРХИИ";
КонецЕсли;
Текст = Текст+" (&Владелец)";
КонецЕсли;
Если ЗначениеЗаполнено(Единица) Тогда
Текст = Текст+" И
| Штрихкоды.ЕдиницаИзмерения.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору";
КонецЕсли;
Если Характеристики Тогда
Текст = Текст+" И
| Штрихкоды.ХарактеристикаНоменклатуры";
Если Не ХарактеристикиЗаполненные Тогда
Текст = Текст+" = ";
Иначе
Текст = Текст+" <> ";
КонецЕсли;
Текст = Текст+"ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)";
КонецЕсли;
Если Серии Тогда
Текст = Текст+" И
| Штрихкоды.СерияНоменклатуры";
Если Не СерииЗаполненные Тогда
Текст = Текст+" = ";
Иначе
Текст = Текст+" <> ";
КонецЕсли;
Текст = Текст+"&ПустаяСерия";
КонецЕсли;
Если ЗначениеЗаполнено(Качество) Тогда
Текст = Текст+" И
| Штрихкоды.Качество = &Качество";
КонецЕсли;
Текст = Текст+"
|УПОРЯДОЧИТЬ ПО
| Владелец
|АВТОУПОРЯДОЧИВАНИЕ";
ЗапросШтрихкоды.Текст = Текст;
Товары = ЗапросШтрихкоды.Выполнить().Выгрузить();
Если ЗначениеЗаполнено(ТипЦены) Тогда
Если ТипЦены.Рассчитывается Тогда
ВалютаРасчетная = ТипЦены.ВалютаЦены;
КонецЕсли;
КонецЕсли;
Курс = Неопределено;
Кратность = Неопределено;
Для Каждого СтрокаТовара ИЗ Товары Цикл
Если ЗначениеЗаполнено(ТипЦены) Тогда
Если ЗначениеЗаполнено(СтрокаТовара.Цена) Тогда
Если ТипЦены.Рассчитывается Тогда
ВалютаТекущая = СтрокаТовара.Валюта;
ПолученнаяЦена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(СтрокаТовара.Цена, ВалютаТекущая, ВалютаРасчетная, Курс, Кратность, ТекущаяДата());
ПроцентСкидкиНаценки = ? (НЕ ЗначениеЗаполнено(СтрокаТовара.ПроцентСкидкиНаценки),
ПроцентСкидкиНаценки, СтрокаТовара.ПроцентСкидкиНаценки);
ПолученнаяЦена = ПолученнаяЦена * (1 + ПроцентСкидкиНаценки / 100);
Иначе
ПолученнаяЦена = СтрокаТовара.Цена;
КонецЕсли;
ПолученнаяЦена = Ценообразование.ОкруглитьЦену(ПолученнаяЦена, ТипЦены.ПорядокОкругления, ТипЦены.ОкруглятьВБольшуюСторону);
СтрокаТовара.Цена = ПолученнаяЦена;
Если ТипЦены.Рассчитывается Тогда
СтрокаТовара.Валюта = ВалютаРасчетная;
КонецЕсли;
Если НЕ ВВалютахЦен
И Валюта <> СтрокаТовара.Валюта Тогда
ПолученнаяЦена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(СтрокаТовара.Цена, СтрокаТовара.Валюта, Валюта, 0, 1, ТекущаяДата());
СтрокаТовара.Цена = ПолученнаяЦена;
СтрокаТовара.Валюта = Валюта;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Товары.ЗаполнитьЗначения(КоличествоКопий, "Количество");
Если Товары.Количество() = 0 тогда
Предупреждение("По выбранным условиям отбора не найдено ни одного товара со штрихкодом.");
КонецЕсли;
КонецПроцедуры
// Процедура печати этикеток
//
// Параметры:
// ТаблицаТоваров - Таблица значений, содержащая информацию о печатаемых этикетках.
//
Процедура Печать(ТаблицаТоваров) Экспорт
КолвоПереданныхТоваров = ТаблицаТоваров.Количество();
Если КолвоПереданныхТоваров = 0 Тогда
Предупреждение("В списке нет ни одного товара со штрихкодом, заполните список товаров,"
+ Символы.ПС + "для которых надо распечатать этикетки. ");
Возврат;
КонецЕсли;
ПечататьБезЦены = Ложь;
Если ПечататьЦену Тогда
Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
Если СтрокаИзСписка.Цена = 0 И СтрокаИзСписка.Количество > 0 Тогда
Ответ = Вопрос("У некоторых товаров не указаны цены! Печатать этикетки для этих товаров?",
РежимДиалогаВопрос.ДаНетОтмена);
Если Ответ = КодВозвратаДиалога.Отмена Тогда
Возврат;
ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
ПечататьБезЦены = Истина;
ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
ПечататьБезЦены = Ложь;
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ТекКолонка = 1;
ТекСтрока = 1;
Таб = Новый ТабличныйДокумент;
Таб.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка"+СокрЛП(ИмяКомпьютера());
Макет = ПолучитьОбщийМакет("Этикетка");
ЭтикеткаОбласть = Макет.ПолучитьОбласть(1,1,4,2);
ОбластьНоменклатура = ЭтикеткаОбласть.Области.Номенклатура;
ОбластьШтрихкод = ЭтикеткаОбласть.Области.ОбластьШтрихкод;
РисунокШтрихкод = ЭтикеткаОбласть.Рисунки.Штрихкод;
ОбластьЦена = ЭтикеткаОбласть.Области.Цена;
ОбластьНоменклатура.ВысотаСтроки = ВысотаЭтикетки * 2.65 * 0.3;
ОбластьШтрихкод.ВысотаСтроки = ВысотаЭтикетки * 2.65 * 0.5;
РисунокШтрихкод.Расположить(ОбластьШтрихкод);
ОбластьЦена.ВысотаСтроки = ВысотаЭтикетки * 2.65 * 0.2;
ЭтикеткаОбласть.Область(2,2,2,2).ШиринаКолонки = ШиринаЭтикетки*0.53;
Если ФорматЭтикетки = 1 Тогда //принтер этикеток.
ВсегоСтрок = 1;
КоличествоКолонок=1;
ИначеЕсли ФорматЭтикетки = 2 Тогда //А4 по колонкам.
ОбластьГраницаСправа = Макет.ПолучитьОбласть(2,4,4,4);
ОбластьНизГраницыСправа = Макет.ПолучитьОбласть(5,4,5,4);
ОбластьГраницаСнизу = Макет.ПолучитьОбласть(6,2,6,2);
ОбластьНачалоГраницыСнизу = Макет.ПолучитьОбласть(6,1,6,1);
ОбластьГраницаСправа.Рисунки.ГраницаСправа.Высота = ВысотаЭтикетки*1.09;
ОбластьГраницаСнизу.Рисунки.ГраницаСнизу.Ширина = ШиринаЭтикетки;
ОбластьГраницаСправа.Область(1,1,1,1).ВысотаСтроки = ВысотаЭтикетки*2.65;
ОбластьГраницаСнизу.Область(1,1,1,1).ШиринаКолонки = ШиринаЭтикетки*0.53;
ВсегоСтрок = 19;
КоличествоКолонок = 5;
КонецЕсли;
ВсегоКолонок = КоличествоКолонок;
Если ВсегоКолонок > 1 Тогда
ВсегоКолонок = ВсегоКолонок+ВсегоКолонок - 1; //добавляем разделители колонок.
КонецЕсли;
ВывелиХотяБыОдинШтрихКод = Ложь;
Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
Если ПечататьЦену И СтрокаИзСписка.Цена = 0
И Не ПечататьБезЦены Тогда
Продолжить;
КонецЕсли;
ТипКода = ПолучитьЗначениеТипаШтрихкодаДляЭУ(СтрокаИзСписка.ТипШтрихкода);
Если ТипКода = -1 Тогда
ОбщегоНазначения.СообщитьОбОшибке("Для штрихкода формата """ + СтрокаИзСписка.ТипШтрихкода
+ """ не существует соответствующего типа в ЭУ ""1С:Печать штрихкодов"".
| Позиция будет пропущена");
Продолжить;
КонецЕсли;
Если УправлениеРозничнойТорговлей.ПроверитьШтрихКод(СтрокаИзСписка.ШтрихКод, СтрокаИзСписка.ТипШтрихкода) Тогда
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.ТипКода = ТипКода;
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.Сообщение = СтрокаИзСписка.ШтрихКод;
ОбластьНоменклатура.Текст = СокрЛП(СтрокаИзСписка.Номенклатура) + ФормированиеПечатныхФорм.ПредставлениеСерий(СтрокаИзСписка);
Если ПечататьЦену И СтрокаИзСписка.Цена <> 0 Тогда
ОбластьЦена.Текст = "Цена: " + ОбщегоНазначения.ФорматСумм(СтрокаИзСписка.Цена,СтрокаИзСписка.Валюта)
+ " за " + СтрокаИзСписка.ЕдиницаИзмерения;
КонецЕсли;
Для Копий = 1 По СтрокаИзСписка.Количество Цикл
Если ТекКолонка > ВсегоКолонок Тогда //новая строка.
Если ВсегоСтрок <> 1 Тогда //выведем разделитель.
Для Сч = 1 по ВсегоКолонок Цикл
Если Сч = 1 Тогда
Таб.Вывести(ОбластьНачалоГраницыСнизу);
Иначе
Таб.Присоединить(ОбластьНачалоГраницыСнизу);
КонецЕсли;
Таб.Присоединить(ОбластьГраницаСнизу);
Таб.Присоединить(ОбластьНизГраницыСправа);
Сч = Сч + 1;
КонецЦикла;
ТекСтрока = ТекСтрока + 1;
КонецЕсли;
Если ТекСтрока/ВсегоСтрок = Цел(ТекСтрока/ВсегоСтрок) Тогда
Таб.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТекСтрока = ТекСтрока + 1;
ТекКолонка=1;
КонецЕсли;
Если ТекКолонка<>1 Тогда //выведем разделитель.
Таб.Присоединить(ОбластьГраницаСправа);
ТекКолонка = ТекКолонка + 1;
Таб.Присоединить(ЭтикеткаОбласть);
ТекКолонка = ТекКолонка + 1;
Иначе
Таб.Вывести(ЭтикеткаОбласть);
ТекКолонка = ТекКолонка + 1;
КонецЕсли;
ВывелиХотяБыОдинШтрихКод = Истина;
КонецЦикла;
Иначе
ТекстСообщения = "У товара """ + СтрокаИзСписка.Номенклатура + """ штрихкод не задан или имеет неверный формат!";
Если КолвоПереданныхТоваров = 1 Тогда
Предупреждение(ТекстСообщения);
Иначе
Сообщить(ТекстСообщения,СтатусСообщения.БезСтатуса);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ВывелиХотяБыОдинШтрихКод Тогда
УниверсальныеМеханизмы.НапечататьДокумент(Таб, 1, СразуНаПринтер, "Этикетки");
Иначе
Сообщить("На печать не выведено ни одной этикетки!");
КонецЕсли;
КонецПроцедуры // Печать()
// Процедура управления доступностью элементов
//
Процедура ДоступностьЭлементов();
Если Характеристики Тогда
ЭлементыФормы.ХарактеристикиЗаполненные.Доступность = Истина;
ЭлементыФормы.ХарактеристикиНеЗаполненные.Доступность = Истина;
Иначе
ЭлементыФормы.ХарактеристикиЗаполненные.Доступность = Ложь;
ЭлементыФормы.ХарактеристикиНеЗаполненные.Доступность = Ложь;
КонецЕсли;
Если Серии Тогда
ЭлементыФормы.СерииЗаполненные.Доступность = Истина;
ЭлементыФормы.СерииНеЗаполненные.Доступность = Истина;
Иначе
ЭлементыФормы.СерииЗаполненные.Доступность = Ложь;
ЭлементыФормы.СерииНеЗаполненные.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
// Обработчик события "ПередОткрытием"формы.
//
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить(ВидСравнения.Равно);
СписокВыбора.Добавить(ВидСравнения.НеРавно);
СписокВыбора.Добавить(ВидСравнения.ВСписке);
СписокВыбора.Добавить(ВидСравнения.НеВСписке);
СписокВыбора.Добавить(ВидСравнения.ВИерархии);
СписокВыбора.Добавить(ВидСравнения.НеВИерархии);
ЭлементыФормы.ПолеВидаСравненияНоменклатура.СписокВыбора = СписокВыбора;
ЭлементыФормы.Номенклатура.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
ЭлементыФормы.ПолеВидаСравненияНоменклатура.Значение = ВидСравнения.ВИерархии;
ПолеВидаСравненияНоменклатураПриИзменении(ЭлементыФормы.ПолеВидаСравненияНоменклатура);
Попытка
КомпонентШК = Новый COMОбъект("V8.Barcod.1");
Макет = ПолучитьОбщийМакет("Этикетка");
ЭтикеткаОбласть = Макет.ПолучитьОбласть(1,1,4,2);
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.Сообщение = "1111111111116";
Исключение
Сообщить("Компонента 1С:Печать штрихкодов не установлена на данном компьютере!", СтатусСообщения.Важное);
Отказ = Истина;
КонецПопытки;
КонецПроцедуры
// Процедура - обработчик события "ПриОткрытии" формы
//
Процедура ПриОткрытии()
Если мВнешняяТаблицаТоваров = Неопределено Тогда
мВнешняяТаблицаТоваров = Новый ТаблицаЗначений;
КонецЕсли;
ЭлементыФормы.ТипШтрихКода.СписокВыбора.ЗагрузитьЗначения(ПолучитьСписокТиповШтрихКодов());
ЭлементыФормы.ФорматЭтикетки.СписокВыбора.Добавить(1,"Принтер этикеток");
ЭлементыФормы.ФорматЭтикетки.СписокВыбора.Добавить(2,"А4");
Если УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ПринтерЭтикеток") = Истина Тогда
ФорматЭтикетки = 1;
ВысотаЭтикетки = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ПринтерЭтикетокВысота");
ШиринаЭтикетки = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ПринтерЭтикетокШирина");
ИначеЕсли НЕ ЗначениеЗаполнено(ФорматЭтикетки) Тогда
ФорматЭтикетки = 2;
ШиринаЭтикетки = 38;
ВысотаЭтикетки = 20;
ЭлементыФормы.ШиринаЭтикетки.Доступность = Ложь;
ЭлементыФормы.ВысотаЭтикетки.Доступность = Ложь;
ИначеЕсли ФорматЭтикетки = 2 Тогда
ЭлементыФормы.ШиринаЭтикетки.Доступность = Ложь;
ЭлементыФормы.ВысотаЭтикетки.Доступность = Ложь;
КонецЕсли;
Если УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ПечататьЦену") = Истина Тогда
ПечататьЦену = Истина;
КонецЕсли;
Если УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "СразуНаПринтер") = Истина Тогда
СразуНаПринтер = Истина;
КонецЕсли;
КоличествоКопий = 1;
Если НЕ ВВалютахЦен И НЕ ЗначениеЗаполнено(Валюта) Тогда
ВВалютахЦен = Истина;
КонецЕсли;
Если мВнешняяТаблицаТоваров.Количество()>0 Тогда
Товары = мВнешняяТаблицаТоваров;
ИначеЕсли ЗначениеЗаполнено(мВнешнийЭлементНоменклатуры) Тогда
ЭлементыФормы.Номенклатура.Значение = мВнешнийЭлементНоменклатуры;
Заполнить();
КонецЕсли;
Если мИспользоватьСерии Тогда
ЭлементыФормы.Серии.Доступность = Истина;
ЭлементыФормы.ТабличноеПолеТовары.Колонки.Серия.Видимость = Истина;
Иначе
ЭлементыФормы.Серии.Доступность = Ложь;
ЭлементыФормы.ТабличноеПолеТовары.Колонки.Серия.Видимость = Ложь;
Конецесли;
ДоступностьЭлементов();
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ДЕЙСТВИЯ КОМАНДНЫХ ПАНЕЛЕЙ ФОРМЫ
// Процедура вызывается при нажатии кнопки "Печать" командной панели формы
//
Процедура КоманднаяПанельФормыПечатать(Кнопка)
Печать(Товары);
КонецПроцедуры // КоманднаяПанельФормыПечатать()
// Процедура вызывается при нажатии кнопки "Заполнить" командной панели формы
// Заполняет табличную часть информацией из регистра "Штрихкоды" с указанными
// условиями отбора.
//
Процедура КоманднаяПанельФормыЗаполнить(Элемент)
Если Товары.Количество() = 0 Тогда
Ответ = КодВозвратаДиалога.Да;
Иначе
Ответ = Вопрос("Перед заполнением табличная часть будет очищена." + Символы.ПС + "Продолжить?", РежимДиалогаВопрос.ДаНет);
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
Заполнить();
КонецЕсли;
КонецПроцедуры // КоманднаяПанельФормыЗаполнить()
// Процедура вызывается при нажатии кнопки "Отбор" командной панели формы
//
Процедура КоманднаяПанельФормыОтбор(Кнопка)
Если НЕ ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Верх Тогда
ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Верх;
Иначе
ЭлементыФормы.ПанельОтбор.Свертка = РежимСверткиЭлементаУправления.Нет;
КонецЕсли;
УправлениеПометкамиКнопокКоманднойПанели();
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ РЕКВИЗИТОВ ШАПКИ
// Процедура - обработчик события "ПриИзменении" поля выбора формата этикетки.
//
Процедура ФорматЭтикеткиПриИзменении(Элемент)
Если Элемент.Значение = 2 Тогда
ШиринаЭтикетки = 38;
ВысотаЭтикетки = 20;
ЭлементыФормы.ШиринаЭтикетки.Доступность = Ложь;
ЭлементыФормы.ВысотаЭтикетки.Доступность = Ложь;
Иначе
ЭлементыФормы.ШиринаЭтикетки.Доступность = Истина;
ЭлементыФормы.ВысотаЭтикетки.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
// Процедура - обработчик события "ПриИзменении" поля "ПолеВидаСравненияНоменклатура".
//
Процедура ПолеВидаСравненияНоменклатураПриИзменении(Элемент)
Если Элемент.Значение = ВидСравнения.ВСписке
ИЛИ Элемент.Значение = ВидСравнения.НеВСписке Тогда
Значение = Неопределено;
Если ЭлементыФормы.Номенклатура.ТипЗначения <> Новый ОписаниеТипов("СписокЗначений")Тогда
Значение = ЭлементыФормы.Номенклатура.Значение;
ЭлементыФормы.Номенклатура.ТипЗначения = Новый ОписаниеТипов("СписокЗначений");
ЭлементыФормы.Номенклатура.ТипЗначенияСписка = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
КонецЕсли;
Если ЗначениеЗаполнено(Значение) Тогда
ЭлементыФормы.Номенклатура.Значение.Добавить(Значение);
КонецЕсли;
ИначеЕсли Элемент.Значение = ВидСравнения.Равно
ИЛИ Элемент.Значение = ВидСравнения.ВИерархии
ИЛИ Элемент.Значение = ВидСравнения.НеРавно
ИЛИ Элемент.Значение = ВидСравнения.НеВИерархии
Тогда
Значение = Неопределено;
Если ЭлементыФормы.Номенклатура.ТипЗначения = Новый ОписаниеТипов("СписокЗначений")Тогда
Если ЭлементыФормы.Номенклатура.Значение.Количество()>0 Тогда
Значение = ЭлементыФормы.Номенклатура.Значение[0].Значение;
ЭлементыФормы.Номенклатура.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Значение) Тогда
ЭлементыФормы.Номенклатура.Значение = Значение;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Процедура - обработчик события "ПриИзменении" поля "ТипЦены".
//
Процедура ТипЦеныПриИзменении(Элемент)
Если ЗначениеЗаполнено(ТипЦены) Тогда
Ответ = Вопрос("Перезаполнить цены?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
ПерезаполнитьЦены();
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ТипЦеныПриИзменении()
// Процедура - обработчик события "ПриИзменении" поля "Характеристики".
//
Процедура ХарактеристикиПриИзменении(Элемент)
ДоступностьЭлементов();
КонецПроцедуры
// Процедура - обработчик события "ПриИзменении" поля "Серии".
//
Процедура СерииПриИзменении(Элемент)
ДоступностьЭлементов();
КонецПроцедуры
// Процедура вызывается при обновлении формы или при изменении данных формы
//
// Параметры
// Нет
//
Процедура ОбновлениеОтображения()
Если ФорматЭтикетки = 2 Тогда
ЭлементыФормы.ШиринаЭтикетки.Доступность = Ложь;
ЭлементыФормы.ВысотаЭтикетки.Доступность = Ложь;
Иначе
ЭлементыФормы.ШиринаЭтикетки.Доступность = Истина;
ЭлементыФормы.ВысотаЭтикетки.Доступность = Истина;
КонецЕсли;
Если ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
Если Не ЭлементыФормы.ТолькоВнутренние.Доступность Тогда
ЭлементыФормы.ТолькоВнутренние.Доступность = Истина;
ТолькоВнутренние = Истина;
КонецЕсли;
Иначе
Если ЭлементыФормы.ТолькоВнутренние.Доступность Тогда
ЭлементыФормы.ТолькоВнутренние.Доступность = Ложь;
ТолькоВнутренние = Ложь;
КонецЕсли;
КонецЕсли;
ЭлементыФормы.Валюта.Доступность = Не ВВалютахЦен;
КонецПроцедуры // ОбновлениеОтображения()
///////////////////////////////////////////////////////////////////////////////
//// ПРОЦЕДУРЫ И ФУНКЦИИ
// Возвращает массив, содержащий все предопределенные элементы ПВХ "ТипыШтрихКодов".
//
// Возвращаемое значение:
// Массив.
//
Функция ПолучитьСписокТиповШтрихКодов()
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ТипыШтрихкодов.Ссылка КАК ТипШтрихкода
|ИЗ
| ПланВидовХарактеристик.ТипыШтрихкодов КАК ТипыШтрихкодов
|ГДЕ
| ТипыШтрихкодов.Предопределенный
|УПОРЯДОЧИТЬ ПО
| ТипыШтрихкодов.Код
|");
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТипШтрихкода");
КонецФункции // ПолучитьСписокТиповШтрихКодов()
// Обработчик события "Нажатие" кнопки "Перезаполнить цены".
//
Процедура КоманднаяПанельФормыПерезаполнитьЦены(Кнопка)
ПерезаполнитьЦены();
КонецПроцедуры // КоманднаяПанельФормыПерезаполнитьЦены()
// Процедура перезаполняет цены в табличной части.
//
Процедура ПерезаполнитьЦены()
Если Не ЗначениеЗаполнено(ТипЦены) Тогда
Предупреждение("Не указан тип цен!");
Возврат;
КонецЕсли;
Если Не (ВВалютахЦен Или ЗначениеЗаполнено(Валюта)) Тогда
Предупреждение("Не указана валюта!");
Возврат;
КонецЕсли;
СтруктураЗначений = Новый Структура;
СтруктураЗначений.Вставить("НовыйТипЦен", ТипЦены);
ЗапросПоЦенам = Ценообразование.СформироватьЗапросПоЦенам(СтруктураЗначений,
Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры,
Товары.ВыгрузитьКолонку("Номенклатура"),
РабочаяДата,
Неопределено).Выгрузить();
ЗапросПоЦенам.Индексы.Добавить("Номенклатура");
ПустаяХарактеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
ТипЦенРассчитывается = ТипЦены.Рассчитывается;
СтруктураКурса = МодульВалютногоУчета.ПолучитьКурсВалюты(Валюта, РабочаяДата);
Курс = СтруктураКурса.Курс;
Кратность = СтруктураКурса.Кратность;
Для Каждого СтрокаТовара Из Товары Цикл
ХарактеристикаНоменклатуры = СтрокаТовара.Характеристика;
СтруктураПоиска = Новый Структура("Номенклатура", СтрокаТовара.Номенклатура);
СтрокиЦен = ЗапросПоЦенам.НайтиСтроки(СтруктураПоиска);
СтрокаБезХарактеристики = Неопределено;
СтрокаСХарактеристикой = Неопределено;
Для Каждого СтрокаЦен Из СтрокиЦен Цикл
Если СтрокаЦен.ХарактеристикаНоменклатуры = ПустаяХарактеристика Тогда
СтрокаБезХарактеристики = СтрокаЦен;
ИначеЕсли СтрокаЦен.ХарактеристикаНоменклатуры = ХарактеристикаНоменклатуры Тогда
СтрокаСХарактеристикой = СтрокаЦен;
КонецЕсли;
КонецЦикла;
Если СтрокаСХарактеристикой <> Неопределено Тогда
НайденнаяСтрока = СтрокаСХарактеристикой;
ИначеЕсли СтрокаБезХарактеристики <> Неопределено Тогда
НайденнаяСтрока = СтрокаБезХарактеристики;
Иначе
НайденнаяСтрока = Неопределено;
КонецЕсли;
Если (НайденнаяСтрока <> Неопределено) И (НайденнаяСтрока.Цена <> 0) Тогда
Цена = НайденнаяСтрока.Цена * (1 + ?(ТипЦенРассчитывается, НайденнаяСтрока.ПроцентСкидкиНаценки / 100, 0));
Цена = Ценообразование.ОкруглитьЦену(Цена, ТипЦены.ПорядокОкругления, ТипЦены.ОкруглятьВБольшуюСторону);
Цена = Ценообразование.ПересчитатьЦенуПриИзмененииЕдиницы(Цена, НайденнаяСтрока.ЕдиницаИзмеренияЦены, СтрокаТовара.ЕдиницаИзмерения);
Если ВВалютахЦен Тогда
СтрокаТовара.Валюта = НайденнаяСтрока.ВалютаЦены;
Иначе
Цена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(Цена, НайденнаяСтрока.ВалютаЦены, Валюта, Курс, Кратность);
СтрокаТовара.Валюта = Валюта;
КонецЕсли;
//СтрокаТовара.ЕдиницаИзмерения = НайденнаяСтрока.ЕдиницаИзмеренияЦены;
Иначе
Цена = 0;
КонецЕсли;
СтрокаТовара.Цена = Цена;
КонецЦикла;
КонецПроцедуры // ПерезаполнитьЦены()
// Обработчик события "Нажатие" кнопки "Перезаполнить цены".
//
Процедура УстановитьКоличествоКопийНажатие(Элемент)
Ответ = Вопрос("Установить количество для всех позиций?", РежимДиалогаВопрос.ДаНет);
Если Ответ = КодВозвратаДиалога.Да Тогда
Для Каждого СтрокаТЧ Из Товары Цикл
СтрокаТЧ.Количество = КоличествоКопий;
КонецЦикла;
КонецЕсли;
КонецПроцедуры // УстановитьКоличествоКопийНажатие()
мИспользоватьСерии = Константы.ИспользоватьСерииНоменклатуры.Получить();
Результат формирования в 1с
[del]
после сохранения в Ексель
[del]
как сделать чтоб штрих код оставался таким как в 1с
1с8.1 управление торговлей
Причина редактирования: [del], п.11. Log
1С 8.1 Бухгалтерия конфиг. 1,25,2