Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 01:38

Печать одного штрихкода

Автор sergey1981, 05 сен 2018, 23:17

0 Пользователей и 1 гость просматривают эту тему.

sergey1981

Как сделать печать одного штрикода из карточки номенклатуры? Сделал отбор по характеристике номенклатуры, выдает ошибку "По выбранным условиям отбора не найдено ни одного товара со штрихкодом". Конфигурация УТ 10.3.
Привожу код:
Процедура ПечатьЭтикетокBersek(Товар = Неопределено) Экспорт

ТЗТоваров = Неопределено;
ОбработкаПечати = Обработки.ПечатьЭтикетокBerSerk.Создать();
ОбработкаПечати.ЗаполнитьТовары(Товар,ТЗТоваров);
ОбработкаПечати.ПечатьBerserk(ТЗТоваров);

КонецПроцедуры// ПечатьЭтикеток()


Процедура ЗаполнитьТовары(ТоварыНоменклатуры, Товары) Экспорт

//++
ВнешнийЭлементНоменклатуры = Неопределено;
ФорматЭтикетки = 1;
ШиринаЭтикетки = 52;
ВысотаЭтикетки = 71;
ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
ПечататьЦену = Ложь;
ТипЦены = Справочники.ТипыЦенНоменклатуры.ПустаяСсылка();
Единица = Неопределено;
Качество = Неопределено;
Валюта = Неопределено;
ВВалютахЦен = Истина;
Характеристика = Неопределено;
Характеристики = Ложь;
ХарактеристикиЗаполненные = Ложь;
ТолькоВнутренние = Ложь;
Серии = Ложь;
СерииЗаполненные = Ложь;
//--

Если ПечататьЦену И Не ЗначениеЗаполнено(ТипЦены) Тогда
Если ВнешнийЭлементНоменклатуры <> Истина Тогда
Сообщить ("Не указан тип цен!");
КонецЕсли;
Возврат;
КонецЕсли;

ЗапросШтрихкоды = Новый Запрос;
ЗапросШтрихкоды.УстановитьПараметр("ТипШтрихкода", ТипШтрихкода);
ЗапросШтрихкоды.УстановитьПараметр("Владелец", ТоварыНоменклатуры);
ЗапросШтрихкоды.УстановитьПараметр("ХарактеристикаНоменклатуры", Характеристика);
ЗапросШтрихкоды.УстановитьПараметр("ЕдиницаПоКлассификатору", Единица);
ЗапросШтрихкоды.УстановитьПараметр("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
ЗапросШтрихкоды.УстановитьПараметр("Качество", Качество);
ЗапросШтрихкоды.УстановитьПараметр("ТипШтрихкода", ТипШтрихкода);
ЗапросШтрихкоды.УстановитьПараметр("ТипыШтрихкода", Новый Массив);//++ ЭлементыФормы.ТипШтрихкода.СписокВыбора
ЗапросШтрихкоды.УстановитьПараметр("ЭтоГруппа", Истина);
ЗапросШтрихкоды.УстановитьПараметр("Дата", ТекущаяДата());
ЗапросШтрихкоды.УстановитьПараметр("Валюта", Валюта);

Если НЕ ВВалютахЦен Тогда
Если НЕ ЗначениеЗаполнено(Валюта)Тогда
Предупреждение("Не указана валюта для заполнения цен!");
Возврат;
КонецЕсли;
КурсВалюты = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(ТекущаяДата(), Новый Структура("Валюта", Валюта));
Если КурсВалюты.Курс = 0 тогда
Предупреждение("Курс валюты отчета """ + Валюта.Наименование+""" на дату " +
строка(ТекущаяДата())+" не определен или нулевой. Формирование этикеток невозможно.");
Возврат;
КонецЕсли;

Если КурсВалюты.Кратность = 0 тогда
Предупреждение("Кратность курса валюты отчета """ + Валюта.Наименование+""" на дату " +
строка(ТекущаяДата())+" не определена или нулевая. Формирование этикеток невозможно.");
Возврат;
КонецЕсли;
ЗапросШтрихкоды.УстановитьПараметр("КурсВалюты", КурсВалюты.Курс);
КонецЕсли;


Если ТипЦены.Рассчитывается Тогда
ТипЦенБазовый = ТипЦены.БазовыйТипЦен;
ПорядокОкругления = ТипЦены.ПорядокОкругления;
ОкруглятьВБольшуюСторону = ТипЦены.ОкруглятьВБольшуюСторону;
ПроцентСкидкиНаценки = ТипЦены.ПроцентСкидкиНаценки;
ЗапросШтрихкоды.УстановитьПараметр("ТипЦены", ТипЦенБазовый);
ЗапросШтрихкоды.УстановитьПараметр("ТипЦенРасчетный", ТипЦены);
Иначе
ЗапросШтрихкоды.УстановитьПараметр("ТипЦены", ТипЦены);
КонецЕсли;

Текст = "ВЫБРАТЬ
| Штрихкоды.ТипШтрихкода,
| Штрихкоды.Штрихкод,
| Штрихкоды.ПредставлениеШтрихкода,
| Штрихкоды.Владелец КАК Номенклатура,
| Штрихкоды.ЕдиницаИзмерения,
| Штрихкоды.ХарактеристикаНоменклатуры КАК Характеристика,
| Штрихкоды.СерияНоменклатуры КАК Серия,
| Штрихкоды.Качество,
| ПОДСТРОКА(Штрихкоды.Владелец.Код, 4, 6) КАК SKU,
| Штрихкоды.ХарактеристикаНоменклатуры КАК SIZE,
| ВЫБОР
| КОГДА Цены.Цена ЕСТЬ NULL
| ИЛИ Цены.Цена = 0
| ТОГДА 0
| ИНАЧЕ Цены.Цена
| КОНЕЦ КАК Цена,
| Цены.ЕдиницаИзмерения КАК ЦеныЕдиница,
| Цены.Валюта КАК Валюта,
| Цены.ТипЦен КАК ТипЦен,
| 1 КАК Количество
|ИЗ
| РегистрСведений.Штрихкоды КАК Штрихкоды
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| Рег.Номенклатура.Ссылка КАК Номенклатура,
| Рег.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| Рег.ТипЦен.Ссылка КАК ТипЦен,
| Рег.Цена КАК Цена,
| Рег.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Рег.Валюта КАК Валюта
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦены) КАК Рег) КАК Цены
| ПО Штрихкоды.Владелец = Цены.Номенклатура
| И Штрихкоды.ХарактеристикаНоменклатуры = Цены.ХарактеристикаНоменклатуры
|ГДЕ
| Штрихкоды.Владелец.ЭтоГруппа <> &ЭтоГруппа
| И Штрихкоды.ТипШтрихкода = &ТипШтрихкода
| И Штрихкоды.Владелец = &Владелец
| И Штрихкоды.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
|
|УПОРЯДОЧИТЬ ПО
| Штрихкоды.Владелец
|АВТОУПОРЯДОЧИВАНИЕ";
ЗапросШтрихкоды.Текст = Текст;
Товары = ЗапросШтрихкоды.Выполнить().Выгрузить();
Если ЗначениеЗаполнено(ТипЦены) Тогда
Если ТипЦены.Рассчитывается Тогда
ВалютаРасчетная = ТипЦены.ВалютаЦены;
КонецЕсли;
КонецЕсли;
Курс = Неопределено;
Кратность = Неопределено;
Для Каждого СтрокаТовара ИЗ Товары Цикл
Если ЗначениеЗаполнено(ТипЦены) Тогда
Если ЗначениеЗаполнено(СтрокаТовара.Цена) Тогда
Если ТипЦены.Рассчитывается Тогда
ВалютаТекущая = СтрокаТовара.Валюта;
ПолученнаяЦена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(СтрокаТовара.Цена, ВалютаТекущая, ВалютаРасчетная, Курс, Кратность, ТекущаяДата());
ПроцентСкидкиНаценки = ? (НЕ ЗначениеЗаполнено(СтрокаТовара.ПроцентСкидкиНаценки),
ПроцентСкидкиНаценки, СтрокаТовара.ПроцентСкидкиНаценки);
ПолученнаяЦена = ПолученнаяЦена * (1 + ПроцентСкидкиНаценки / 100);

Иначе
ПолученнаяЦена = СтрокаТовара.Цена;
КонецЕсли;

ПолученнаяЦена = Ценообразование.ОкруглитьЦену(ПолученнаяЦена, ТипЦены.ПорядокОкругления, ТипЦены.ОкруглятьВБольшуюСторону);

СтрокаТовара.Цена = ПолученнаяЦена;
Если ТипЦены.Рассчитывается Тогда
СтрокаТовара.Валюта = ВалютаРасчетная;
КонецЕсли;

Если НЕ ВВалютахЦен
И Валюта <> СтрокаТовара.Валюта Тогда
ПолученнаяЦена = Ценообразование.ПересчитатьЦенуПриИзмененииВалюты(СтрокаТовара.Цена, СтрокаТовара.Валюта, Валюта, 0, 1, ТекущаяДата());
СтрокаТовара.Цена = ПолученнаяЦена;
СтрокаТовара.Валюта = Валюта;
КонецЕсли;

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

//++
//Товары.ЗаполнитьЗначения(КоличествоКопий, "Количество");
//--

Если Товары.Количество() = 0 тогда
Предупреждение("По выбранным условиям отбора не найдено ни одного товара со штрихкодом.");
КонецЕсли;

КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск