Внешняя печатная форма

Версия для печатиPDF-версия

Платформа:

Добрый день. Подскажите, пожалуйста, создаю внешнюю печатную форму для печати товарного чека. Выдает такую ошибку в функции СформироватьЗапросКТабличнойЧастиДокумента:

{ВнешняяОбработка.ТоварныйЧекВнешняяФорма.МодульОбъекта(305)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(2, 2)}: Поле не найдено "ЧекККМТовары"
<<?>>ЧекККМТовары.(
И еще, как можно присоединить к этому запросу данные по штрихкоду?
Спасибо.

 

Прикреплённые файлы: 

Точку забыли поставить в запросе после "ЧекККМ" в строках 286 и 302 в модуле объекта обработки. Это по поводу ошибки.

Для присоединения штрихкодов нужно будет изменить запрос. Делать запрос не к таблице документов Чек ККМ, а непосредственно к самой табличной части Товары. И левым соединением присоединить таблицу регистра сведений ШтрихкодыНоменклатуры. Только тут может возникнуть ситуация, что у одной и той же номенклатуры в базе заведено несколько штрихкодов. В таком случае строки в печатной форме будут задваиваться. Текст запроса примерно такой:

ВЫБРАТЬ
	ЧекККМТовары.НомерСтроки КАК НомерСтроки,
	ЧекККМТовары.Номенклатура.Артикул КАК Артикул,
	ЧекККМТовары.Номенклатура.Наименование КАК Наименование,
	ЧекККМТовары.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
	ЧекККМТовары.Серия.Наименование КАК Серия,
	ЧекККМТовары.Номенклатура.Вес КАК Вес,
	ЧекККМТовары.Количество КАК Количество,
	ЧекККМТовары.Цена КАК Цена,
	ЧекККМТовары.Сумма КАК Сумма,
	ЧекККМТовары.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
ИЗ
	Документ.ЧекККМ.Товары КАК ЧекККМТовары
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
		ПО (ЧекККМТовары.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура)
			И (ЧекККМТовары.Характеристика = ШтрихкодыНоменклатуры.Характеристика)
			И (ЧекККМТовары.Упаковка = ШтрихкодыНоменклатуры.Упаковка)
ГДЕ
	ЧекККМТовары.Ссылка = &ТекущийДокумент

УПОРЯДОЧИТЬ ПО
	НомерСтроки

Точки поставила, а таблица не заполняется, и даже если со штрихкодом выборку делать все равно таблица на форме не заполняется ((

А если условие по документу убрать заполняется?

А можно как-нибудь отладчиком внешнюю форму проверить? У меня не получается

Можно добавить в обработку основную форму и из неё вызывать команду печати с нужными параметрами.

Или в форме документа поставить точку останова в процедуре Подключаемый_ВыполнитьКомандуПечати(Команда).

Сделала через процедуру СформироватьТабличнуюЧастьДокументаПечатнойФормы,  вроде все формируется. Теперь остался вопрос как поместить картинку штрихкода на макет печатной формы.  Вот процедура:

Процедура СформироватьТабличнуюЧастьДокументаПечатнойФормы(Знач Макет, ТабДокумент)
 
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ЧекККМТовары.НомерСтроки КАК НомерСтроки,
| ЧекККМТовары.Номенклатура.Наименование КАК Номенклатура,
| ЧекККМТовары.Серия.Наименование КАК Серия,
| ЧекККМТовары.Количество КАК Количество,
| ЧекККМТовары.Цена КАК Сумма,
| ЧекККМТовары.Сумма КАК ИтоговаяСумма,
| ЧекККМТовары.Номенклатура.ЕдиницаИзмерения КАК Единица,
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
| ЧекККМТовары.Номенклатура.Проба КАК Проба,
| ЧекККМТовары.Вес КАК Вес
|ИЗ
| Документ.ЧекККМ.Товары КАК ЧекККМТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
| ПО ЧекККМТовары.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
| И ЧекККМТовары.Характеристика = ШтрихкодыНоменклатуры.Характеристика
| И ЧекККМТовары.Упаковка = ШтрихкодыНоменклатуры.Упаковка
|ГДЕ
| ЧекККМТовары.Ссылка = &ТекущийДокумент
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
 
Запрос.Параметры.Вставить("ТекущийДокумент", СсылкаНаОбъект);
Выборка = Запрос.Выполнить().Выбрать();
 
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
ВставлятьРазделительСтраниц = Ложь;
ПараметрыШтрихкода = Выборка.Штрихкод;
Пока Выборка.Следующий() Цикл
ОбластьМакета.Параметры.Заполнить(Выборка);
ОбластьМакета.Параметры.Цена = Выборка.Сумма/Выборка.Вес;
ОбластьМакета.Рисунки.ШК.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
 
КонецПроцедуры
 
Ругается:  {ОбщийМодуль.МенеджерОборудованияВызовСервера.Модуль(833)}: Значение не является значением объектного типа (Ширина)
ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина);
На макете в нужной ячейке создана картинка "Штрихкод"

Неверный параметр передаёте в функцию МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода.

ПараметрыШтрихкода должна быть структура, в которой есть ключи Ширина, Высота, Штрихкод, ТипКода, ПрозрачныйФон, ОтображатьТекст.

Спасибо, сделала структуру 

ПараметрыШтрихкода = Новый Структура;
    // пара ключ (имя переменной) - значение (произв. типа)
    ПараметрыШтрихкода.Вставить("Ширина", "50");
    ПараметрыШтрихкода.Вставить("Высота", "30");
    ПараметрыШтрихкода.Вставить("Штрихкод", Выборка.Штрихкод);
ПараметрыШтрихкода.Вставить("ТипКода", "Авто");
ПараметрыШтрихкода.Вставить("ПрозрачныйФон", Истина);
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
 
   
Пока Выборка.Следующий() Цикл
ОбластьМакета.Параметры.Заполнить(Выборка);
ОбластьМакета.Параметры.Цена = Выборка.Сумма/Выборка.Вес;
ОбластьМакета.Рисунки.Штрихкод.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
 
но теперь печатается просто крестик,
может я не так создала область картинки?  Сейчас у меня просто Картинка, пробовала Штрихкод, получается то же самое
 

ПараметрыШтрихкода заполняете в цикле обхода Выборки?

Разобрались с проблемой? Если нет, то выложите нынешний вариант обработки.

Нет, не разобралась, всю голову уже сломала (( Буду рада если поможете разобраться. Сейчас свойства картинки "Штрихкод", печатается чисто символически какой-то штрихкод, но не тот который нужен и очень маленький

Прикреплённые файлы: 

И еще вот такой вариант, без лишних комментов

Прикреплённые файлы: 

У меня вот такой код работает:

Пока Выборка.Следующий() Цикл
	ОбластьМакета.Параметры.Заполнить(Выборка);
	ОбластьМакета.Параметры.Цена = Выборка.Сумма/Выборка.Вес;
	
	ПараметрыШтрихкода = Новый Структура;
	ПараметрыШтрихкода.Вставить("Ширина", "50");
	ПараметрыШтрихкода.Вставить("Высота", "30");
	ПараметрыШтрихкода.Вставить("Штрихкод", Выборка.Штрихкод);
	ПараметрыШтрихкода.Вставить("ТипКода", "Авто");
	ПараметрыШтрихкода.Вставить("ПрозрачныйФон", Истина);
	ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);		
	
	ОбластьМакета.Рисунки.Штрихкод.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
	ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;

Только один косяк - если у какого-то товара не указан штрихкод, то выводит картинку из предыдущей строки.

Макет при этом не менял.

Вставила Ваш код в свой модуль, у меня выводит крестики вместо штрихкода 

А у Вас какой релиз стоит? У меня 11.1.10.138, может это из-за этого...

У меня 11.1.7.54. Давно не обновлял.

Дошли руки обновить конфигурацию до релиза 11.1.10.180. С картинками всё нормально. Так что дело не в конфигурации.

Спасибо, будем искать))