Имя: Пароль:
1C
1С v8
Печать этикеток. Вывести Артикул товара
,
0 reznik911
 
20.02.14
09:39
Конфигурация УТП для Казахстана 2.0.3.6. задачой была вывести в этикетки артикул. В типовой это не предусмотрено. Нашел обработку ПечатьЭтикеток. сделал внешней, а макет в общий. в макете добавил поле с текстом Артикул идентично как для номенклатуры. Отредактировал координаты областей. Вылазит ошибка при печати

{Форма.Форма.Форма(368)}: Поле объекта не обнаружено (ГраницаСправа)
        ОбластьГраницаСправа.Рисунки.ГраницаСправа.Высота = ВысотаЭтикетки*1.09;

Координаты перепроверил все сходится. Подскажите пжлста где ошибка и как ее решить

// Процедура печати этикеток
//
// Параметры:
//  ТаблицаТоваров     - Таблица значений, содержащая информацию о печатаемых этикетках.
//
Процедура Печать(ТаблицаТоваров) Экспорт

    КолвоПереданныхТоваров = ТаблицаТоваров.Количество();

    Если КолвоПереданныхТоваров = 0 Тогда
        Предупреждение("В списке нет ни одного товара со штрихкодом, заполните список товаров,"
                       + Символы.ПС + "для которых надо распечатать этикетки. ");
        Возврат;
    КонецЕсли;

    ПечататьБезЦены        = Ложь;
    Если ПечататьЦену Тогда
        Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
            Если СтрокаИзСписка.Цена = 0 И СтрокаИзСписка.Количество > 0 Тогда
                Ответ = Вопрос("У некоторых товаров не указаны цены! Печатать этикетки для этих товаров?",
                               РежимДиалогаВопрос.ДаНетОтмена);
                Если Ответ = КодВозвратаДиалога.Отмена Тогда
                    Возврат;
                ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
                    ПечататьБезЦены = Истина;
                ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
                    ПечататьБезЦены = Ложь;
                КонецЕсли;
                Прервать;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
    ТекКолонка = 1;
    ТекСтрока  = 1;

    Таб                     = Новый ТабличныйДокумент;
    Таб.ИмяПараметровПечати =     "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка"+СокрЛП(ИмяКомпьютера());
    
    Макет                   = ПолучитьОбщийМакет("Этикетка");
        
    ЭтикеткаОбласть         = Макет.ПолучитьОбласть(1,1,5,2);

    ОбластьНоменклатура     = ЭтикеткаОбласть.Области.Номенклатура;
    //Сухраб от
    ОбластьАртикул          = ЭтикеткаОбласть.Области.Артикул;
    //Сухраб до

    ОбластьШтрихкод         = ЭтикеткаОбласть.Области.ОбластьШтрихкод;
    РисунокШтрихкод         = ЭтикеткаОбласть.Рисунки.Штрихкод;
    ОбластьЦена             = ЭтикеткаОбласть.Области.Цена;
    
    
    ОбластьНоменклатура.ВысотаСтроки = ВысотаЭтикетки * 2.65 * 0.3;
    //Сухраб от
    ОбластьАртикул.ВысотаСтроки      = ВысотаЭтикетки * 2.65 * 0.2;
    //Сухраб до

    ОбластьШтрихкод.ВысотаСтроки     = ВысотаЭтикетки * 2.65 * 0.5;
    РисунокШтрихкод.Расположить(ОбластьШтрихкод);
    ОбластьЦена.ВысотаСтроки         = ВысотаЭтикетки * 2.65 * 0.2;

    ЭтикеткаОбласть.Область(2,2,2,2).ШиринаКолонки = ШиринаЭтикетки*0.53;

    Если ФорматЭтикетки  = 1 Тогда //принтер этикеток.
        ВсегоСтрок       = 1;
        КоличествоКолонок=1;
    ИначеЕсли ФорматЭтикетки = 2 Тогда //А4 по колонкам.

        ОбластьГраницаСправа      = Макет.ПолучитьОбласть(2,4,5,4);
        ОбластьНизГраницыСправа   = Макет.ПолучитьОбласть(6,4,6,4);
        ОбластьГраницаСнизу       = Макет.ПолучитьОбласть(7,2,7,2);
        ОбластьНачалоГраницыСнизу = Макет.ПолучитьОбласть(7,1,7,1);

        ОбластьГраницаСправа.Рисунки.ГраницаСправа.Высота = ВысотаЭтикетки*1.09;
        ОбластьГраницаСнизу.Рисунки.ГраницаСнизу.Ширина   = ШиринаЭтикетки;

        ОбластьГраницаСправа.Область(1,1,1,1).ВысотаСтроки = ВысотаЭтикетки*2.65;
        ОбластьГраницаСнизу.Область(1,1,1,1).ШиринаКолонки = ШиринаЭтикетки*0.53;

        ВсегоСтрок        = 22;
        КоличествоКолонок = 5;
    КонецЕсли;

    ВсегоКолонок = КоличествоКолонок;
    Если ВсегоКолонок > 1 Тогда
        ВсегоКолонок = ВсегоКолонок+ВсегоКолонок - 1; //добавляем разделители колонок.
    КонецЕсли;

    ВывелиХотяБыОдинШтрихКод = Ложь;
    Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
        Если ПечататьЦену И СтрокаИзСписка.Цена = 0
           И Не ПечататьБезЦены Тогда
            Продолжить;
        КонецЕсли;
        
        ТипКода = ПолучитьЗначениеТипаШтрихкодаДляЭУ(СтрокаИзСписка.ТипШтрихкода);
        Если ТипКода = -1 Тогда
            ОбщегоНазначения.СообщитьОбОшибке("Для штрихкода формата """ + СтрокаИзСписка.ТипШтрихкода
                             + """ не существует соответствующего типа в ЭУ ""1С:Печать штрихкодов"".
                             | Позиция будет пропущена");
            Продолжить;
        КонецЕсли;
                
        Если УправлениеРозничнойТорговлей.ПроверитьШтрихКод(СтрокаИзСписка.ШтрихКод, СтрокаИзСписка.ТипШтрихкода) Тогда
            ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.ТипКода = ТипКода;
            ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.Сообщение = СтрокаИзСписка.ШтрихКод;
            ОбластьНоменклатура.Текст = СокрЛП(СтрокаИзСписка.Номенклатура) + ФормированиеПечатныхФорм.ПредставлениеСерий(СтрокаИзСписка);
            //Сухраб от
            ОбластьАртикул.Текст=СтрокаИзСписка.Артикул;
            //Сухраб до
            Если ПечататьЦену И СтрокаИзСписка.Цена <> 0 Тогда
                ОбластьЦена.Текст = "Цена: " + ОбщегоНазначения.ФорматСумм(СтрокаИзСписка.Цена,СтрокаИзСписка.Валюта)
                   + " за " + СтрокаИзСписка.ЕдиницаИзмерения;
            КонецЕсли;
            Для Копий = 1 По СтрокаИзСписка.Количество Цикл
                Если ТекКолонка > ВсегоКолонок Тогда //новая строка.
                    Если ВсегоСтрок <> 1 Тогда //выведем разделитель.
                        Для Сч = 1 по ВсегоКолонок Цикл
                            Если Сч = 1 Тогда
                                Таб.Вывести(ОбластьНачалоГраницыСнизу);
                            Иначе
                                Таб.Присоединить(ОбластьНачалоГраницыСнизу);
                            КонецЕсли;
                            Таб.Присоединить(ОбластьГраницаСнизу);
                            Таб.Присоединить(ОбластьНизГраницыСправа);
                            Сч = Сч + 1;
                        КонецЦикла;
                        ТекСтрока = ТекСтрока + 1;
                    КонецЕсли;
                    Если ТекСтрока/ВсегоСтрок = Цел(ТекСтрока/ВсегоСтрок) Тогда
                        Таб.ВывестиГоризонтальныйРазделительСтраниц();
                    КонецЕсли;
                    ТекСтрока = ТекСтрока + 1;
                    ТекКолонка=1;
                КонецЕсли;
                Если ТекКолонка<>1 Тогда //выведем разделитель.
                    Таб.Присоединить(ОбластьГраницаСправа);
                    ТекКолонка = ТекКолонка + 1;
                    Таб.Присоединить(ЭтикеткаОбласть);
                    ТекКолонка = ТекКолонка + 1;
                Иначе
                    Таб.Вывести(ЭтикеткаОбласть);
                    ТекКолонка = ТекКолонка + 1;
                КонецЕсли;
                    
                ВывелиХотяБыОдинШтрихКод = Истина;
            КонецЦикла;
        Иначе
            ТекстСообщения = "У товара """ + СтрокаИзСписка.Номенклатура + """ штрихкод не задан или имеет неверный формат!";
            Если КолвоПереданныхТоваров = 1 Тогда
                Предупреждение(ТекстСообщения);
            Иначе
                Сообщить(ТекстСообщения,СтатусСообщения.БезСтатуса);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;

    Если ВывелиХотяБыОдинШтрихКод Тогда
        УниверсальныеМеханизмы.НапечататьДокумент(Таб, 1, СразуНаПринтер, "Этикетки");
    Иначе
        Сообщить("На печать не выведено ни одной этикетки!");
    КонецЕсли;

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

макет Этикетка
http://s020.radikal.ru/i706/1402/e9/f8191ef606eb.png
1 reznik911
 
20.02.14
09:41
2 Wobland
 
20.02.14
09:43
ошибка в 368й строке, решается заданием границы справа рисунку или области
3 reznik911
 
20.02.14
09:48
(2) ВысоткаЭтикетки* УжеДругоеЧисло так?
4 Wobland
 
20.02.14
09:49
нет же
5 reznik911
 
20.02.14
10:01
(4) а как. я просто это      ОбластьГраницаСправа.Рисунки.ГраницаСправа.Высота = ВысотаЭтикетки*1.09;
так и не понял как он вычисляет
6 Wobland
 
20.02.14
10:07
он это не успевает начать вычислять, т.к. ты не объясняешь ему, к какому рисунку это применять
7 reznik911
 
20.02.14
10:17
(6) вот здесь ОбластьГраницаСправа      = Макет.ПолучитьОбласть(2,4,5,4);

задает координаты так?
8 Wobland
 
20.02.14
10:18
получается область по заданным координатам
9 reznik911
 
20.02.14
10:23
(8) потом в этой области получает рисунок Границасправа пунктирный и вот здесь вылазит ошибка?
10 Wobland
 
20.02.14
10:23
(9) какой рисунок из трёхсот имеется в виду?
11 reznik911
 
20.02.14
10:25
(10) то что на макете я ж ссылку скинул сюда
12 reznik911
 
20.02.14
10:25
(1)
13 Wobland
 
20.02.14
10:29
(11) где ты об этом сказал платформе?
14 Шапокляк
 
20.02.14
10:29
ОбластьГраницаСправа.Рисунки.МойОфигенскийРисунок.ГраницаСправа=Истина
15 reznik911
 
20.02.14
10:35
(14) почему истина? че т не понял к чему это?
16 Wobland
 
20.02.14
10:38
(15) такова природа границ справа - она булева
17 reznik911
 
20.02.14
10:40
(16) сделал ошибка терь с (14)
18 Wobland
 
20.02.14
10:43
(17) ну уж с этой-то ты справишься, у тебя есть текст ошибки, а по-русски ты понимаешь
19 reznik911
 
20.02.14
10:56
(18) ну ошибка то не изменилась