Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Некорректно отрабатывает функция "сообщить"

Некорректно отрабатывает функция "сообщить"
Я
   KamFolc
 
16.07.19 - 14:48
Коллеги, добрый день. Немного доработана обработка печать ценника. Цель была добавить в ценник штрих-код. Вроде все хорошо, но есть небольшая проблема. При формировании печатной формы, не все товары имеют штрих-код. Предполагается, что о номенклатуре без ШК будет выдано соответствующее оповещение. Но функция срабатывает немного не так как надо. Если в отборе 3 товара, два из которых не имеют ШК (1 и 3). Информация о отсутствии ШК будет выведена только по первому. В случае печати всех ценников без ШК (все 3 без ШК), все ок. Получается, что сообщение прерывается для номенклатуры которая находится после товара с штрих-кодом. Подскажите, как это можно исправить? Конфигурация: УТ 10.3

[spoiler] Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |    РегШК.Штрихкод КАК ШтрихКод,
        |    РегШК.ПредставлениеШтрихкода,
        |    РегШК.ТипШтрихкода
        |ИЗ
        |    РегистрСведений.Штрихкоды КАК РегШК
        |ГДЕ
        |    РегШК.Владелец = &Владелец");
        Запрос.УстановитьПараметр("Владелец", СтрокаТаблицы.Номенклатура);
        Результат = Запрос.Выполнить();
        Выборка=Результат.Выбрать();
        Штрихкод = "";
        ПредставлениеШтрихкода = "";
        ТипКода = "";
        Пока выборка.Следующий() Цикл
            Штрихкод = выборка.ШтрихКод;
            ПредставлениеШтрихкода = Выборка.ПредставлениеШтрихкода;
            ТипШтрихкода= Выборка.ТипШтрихкода;
        КонецЦикла;              
        ТипКода = ПолучитьЗначениеТипаШтрихкодаДляЭУ(ТипШтрихкода);

        
        Если  ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
            ОбластьЦенника.Рисунки.Штрихкод.Объект.ТипКода   = ТипКода;
            ОбластьЦенника.Рисунки.Штрихкод.Объект.Сообщение = ?(ПустаяСтрока(ПредставлениеШтрихкода),    Штрихкод, ПредставлениеШтрихкода);
            ОбластьЦенника.Рисунки.Штрихкод.Объект.ОтображатьТекст = истина;
        ИначеЕсли ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 тогда    
            ОбластьЦенника.Рисунки.Штрихкод.Объект.ТипКода   = ТипКода;
            ОбластьЦенника.Рисунки.Штрихкод.Объект.Сообщение = ?(ПустаяСтрока(ПредставлениеШтрихкода),    Штрихкод, ПредставлениеШтрихкода);
            ОбластьЦенника.Рисунки.Штрихкод.Объект.ОтображатьТекст = истина;
        ИначеЕсли  ТипШтрихкода <> ПланыВидовХарактеристик.ТипыШтрихкодов.Code39  или  ТипШтрихкода <> ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 тогда
            ОбластьЦенника.Рисунки.Штрихкод.Объект.ТипКода   = 1;
            ОбластьЦенника.Рисунки.Штрихкод.Объект.ОтображатьТекст = ложь;
            //ОбластьЦенника.Рисунки.Штрихкод.Объект.Сообщение = "123456789128";
            Сообщить("Для арт. " + СтрокаТаблицы.Артикул + " " + СтрокаТаблицы.Номенклатура + " штрихкод не задан или не соответствует типу EAN13 или Code39");
        КонецЕсли;
                //конец изменений    

                Если ТекСтолбец = 0 Тогда
                    ТабДокумент.Вывести(ОбластьЦенника);
                Иначе
                    ТабДокумент.Присоединить(ОбластьЦенника);
                КонецЕсли;

                ТекСтолбец = ТекСтолбец + 1;

                Если ТекСтолбец = 4 Тогда  
                    ТекСтрока  = ТекСтрока + 1;
                    ТекСтолбец = 0;
                КонецЕсли;

                Если ТекСтрока = 4 Тогда  
                    ТекСтрока = 0;
                    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
[/spoiler]
 
 
   Йохохо
 
1 - 16.07.19 - 14:54
проблема с Концами ЦИкла
   DmitriyDI
 
2 - 16.07.19 - 15:10
(0) Напиши так:

Вместо этого:
       Пока выборка.Следующий() Цикл 
            Штрихкод = выборка.ШтрихКод; 
            ПредставлениеШтрихкода = Выборка.ПредставлениеШтрихкода; 
            ТипШтрихкода= Выборка.ТипШтрихкода; 
        КонецЦикла;    

Так надо:

       Если выборка.Следующий() Тогда
            Штрихкод = выборка.ШтрихКод; 
            ПредставлениеШтрихкода = Выборка.ПредставлениеШтрихкода; 
            ТипШтрихкода= Выборка.ТипШтрихкода; 
Иначе
            Штрихкод = ""; 
            ПредставлениеШтрихкода = Неопределено; 
            ТипШтрихкода= Неопределено; 
        КонецЕсли;
   KamFolc
 
3 - 17.07.19 - 06:51
(2) Огромное спасибо за помощь!

Список тем форума
Рекламное место пустует  Рекламное место пустует
Основная теорема систематики: Новые системы плодят новые проблемы.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.