Имя: Пароль:
1C
1С v8
Ошибка при печати штрихкодов
0 sergqwert
 
04.09.18
21:47
При печати штрихкодов из карточки номенклатуры возникает ошибка: По выбранным условиям отбора не найдено ни одного товара со штрихкодом. В чем причина?

Процедура ПечатьЭтикетокBersek(Товар = Неопределено) Экспорт

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

КонецПроцедуры
1 Михаил Козлов
 
04.09.18
21:57
Причина в том, что по выбранным условиям отбора не найдено ни одного товара со штрихкодом.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший