Штрих-код для серии номенклатуры

1. user591603_neterpenie 27.10.17 13:16 Сейчас в теме
Добрый день,

возник небольшой вопрос.

Есть 1С:Предприятие 8.3, конфигурация 1С:ERP Управление предприятием 2.

Для вида номенклатуры настроен учет по сериям, серия идентифицирует партию товаров по номерам.

И есть сканер штрих-кода в режиме эмуляции COM.

Есть ли в типовом функционале указанной конфигурации возможность генерировать и выводить в самописный печатный макет штрих-код, при считывании которого выводился бы серийный номер номенклатуры?

И, если можно, то как?)

Заранее спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user591603_neterpenie 02.11.17 16:24 Сейчас в теме
3. user633533_encantado 12 02.11.17 16:28 Сейчас в теме
Регистр "Штрихкоды Номенклатуры" имеет только 3 измерения: номенклатура, характеристика, упаковка. Никаких серий.

"при считывании которого выводился бы серийный номер номенклатуры" - выводился бы куда ?
4. user591603_neterpenie 02.11.17 16:57 Сейчас в теме
(3)
в поле "Серия" док-тов.
5. user591603_neterpenie 02.11.17 17:01 Сейчас в теме
Если описать ситуацию в целом - у меня есть некий самописный док-т, у которого есть макет печати.

Я хотел-бы, чтобы в макет печати выводился штрих-код, который бы кодировал значение поля "серия" из док-та.

Чтобы в дальнейшем с распечатанного макета я мог считать этот номер серии в любые док-ты движения ТМЦ, где необходимо проводить серийную продукцию.
6. user591603_neterpenie 03.11.17 16:43 Сейчас в теме
Кажется, есть некоторый прогресс.
7. user591603_neterpenie 03.11.17 17:19 Сейчас в теме
Какая-то каша уже в голове.)

Вот кусок кода:

	Макет = Документы.ФормаЗаказаКлиента.ПолучитьМакет("СБЛ_Nero");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ФормаЗаказаКлиента.Номер,
	|	ФормаЗаказаКлиента.Дата,
	|	ФормаЗаказаКлиента.Товары.(
	|		Номенклатура,
	|		Серия,
	|		СтранаНазначения.ТипРозетки	
	|	)
	|ИЗ
	|	Документ.ФормаЗаказаКлиента КАК ФормаЗаказаКлиента
	|ГДЕ
	|	ФормаЗаказаКлиента.Ссылка В (&Ссылка)";

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

	КонецЦикла;
////////////////////////////////////////////////////
Показать


и ошибка: "{Документ.ФормаЗаказаКлиента.МодульМенеджера(778)}: Поле объекта не обнаружено (Серия)
СерийныйНомер=Выборка.Товары.Серия;"

в чём тут затык, как мне правильно сослаться на это поле??(
10. ZergKRSK 130 07.11.17 11:01 Сейчас в теме
(7)
в чём тут затык,

думаю затык в том что Выборка.Товары это таблица значений. Делай перебор этой таблицы значений через цикл.
8. pavel06 2 03.11.17 18:27 Сейчас в теме
А просто отладку запустить и посмотреть, что в выборке получается, нельзя?
Может товар у вас с незаполненными сериями.
9. user591603_neterpenie 07.11.17 10:40 Сейчас в теме
(8)

Серия заполнена везде.
11. user591603_neterpenie 07.11.17 11:26 Сейчас в теме
(8)

типа такого?)

ТЗТовары = Выборка.Товары;
	
Для каждого Стр из ТЗТовары Цикл
		
СерийныйНомер=ТЗТовары.Серия;

ПараметрыШтрихкода.Вставить("Штрихкод",        СерийныйНомер)

Показать
12. ZergKRSK 130 07.11.17 11:55 Сейчас в теме
(11)
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	ТЗТовары = Выборка.Товары;
    Для каждого Стр из ТЗТовары Цикл
        СерийныйНомер = Стр.Серия;
13. user591603_neterpenie 07.11.17 12:18 Сейчас в теме
(12)

Попробовал

Выборка = Запрос.Выполнить().Выбрать();

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


, в итоге:

{Документ.ФормаЗаказаКлиента.МодульМенеджера(781)}: Итератор для значения не определен
Для каждого Стр из ТЗТовары Цикл
14. ZergKRSK 130 07.11.17 12:33 Сейчас в теме
(13)
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ВыборкаТовары = Выборка.Товары.Выбрать();
    Пока ВыборкаТовары.Следующий() Цикл
        СерийныйНомер = ВыборкаТовары.Серия;


P.S. учись пользоваться Отладчиком!
15. user591603_neterpenie 07.11.17 12:37 Сейчас в теме
(14)

Спасибо.)

я учусь понемножку, но многого еще не знаю.)
16. ZergKRSK 130 07.11.17 12:40 Сейчас в теме
(15) Отладчик дает ответы на вот такие вот вопросы.
user591603_neterpenie; +1 Ответить
17. user591603_neterpenie 07.11.17 13:32 Сейчас в теме
теперь, почему-то, не выводит область штрихкода в печатный макет.(

код полностью

Процедура СБЛ_Nero(ТабДок, Ссылка) Экспорт
	
	Макет = Документы.ФормаЗаказаКлиента.ПолучитьМакет("СБЛ_Nero");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ФормаЗаказаКлиента.Номер,
	|	ФормаЗаказаКлиента.Дата,
	|	ФормаЗаказаКлиента.ДополнительнаяИнформация.(
	|		Примечания
	|	),
	|	ФормаЗаказаКлиента.Товары.(
	|		Менеджер,
	|		Клиент,
	|		Номенклатура,
	|		Серия
	|	)
	|ИЗ
	|	Документ.ФормаЗаказаКлиента КАК ФормаЗаказаКлиента
	|ГДЕ
	|	ФормаЗаказаКлиента.Ссылка В (&Ссылка)";
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();
	
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

	Шапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьДополнительнаяИнформацияШапка = Макет.ПолучитьОбласть("ДополнительнаяИнформацияШапка");
	ОбластьДополнительнаяИнформация = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
	ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
	ОбластьТовары = Макет.ПолучитьОбласть("Товары");
////////////////////////////////////////////////////	
	ОбластьШтрихкод = Макет.ПолучитьОбласть("Штрихкод");
////////////////////////////////////////////////////	
	ТабДок.Очистить();

	ВставлятьРазделительСтраниц = Ложь;
	Пока Выборка.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;

		ТабДок.Вывести(ОбластьЗаголовок);
		
////////////////////////////////////////////////////

	Пока Выборка.Следующий() Цикл
		
		ВыборкаТовары = Выборка.Товары.Выбрать();
		
		Пока ВыборкаТовары.Следующий() Цикл
			
			СерийныйНомер = ВыборкаТовары.Серия;
						
		ПараметрыШтрихкода = Новый Структура;
		ПараметрыШтрихкода.Вставить("Ширина",          100);
		ПараметрыШтрихкода.Вставить("Высота",          75);
		ПараметрыШтрихкода.Вставить("Штрихкод",        СокрЛП(СерийныйНомер));
		ПараметрыШтрихкода.Вставить("ТипКода",         4); //CODE128
		ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
		ПараметрыШтрихкода.Вставить("РазмерШрифта",    12);
		ОбластьШтрихкод.Рисунки.ШК.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
		
	КонецЦикла;
	
	ТабДок.Вывести(ОбластьШтрихкод, ВыборкаТовары.Уровень());

КонецЦикла;
////////////////////////////////////////////////////


		Шапка.Параметры.Заполнить(Выборка);
		ТабДок.Вывести(Шапка, Выборка.Уровень());

		ТабДок.Вывести(ОбластьДополнительнаяИнформацияШапка);
		ВыборкаДополнительнаяИнформация = Выборка.ДополнительнаяИнформация.Выбрать();
		Пока ВыборкаДополнительнаяИнформация.Следующий() Цикл
			ОбластьДополнительнаяИнформация.Параметры.Заполнить(ВыборкаДополнительнаяИнформация);
			ТабДок.Вывести(ОбластьДополнительнаяИнформация, ВыборкаДополнительнаяИнформация.Уровень());
		КонецЦикла;
		
		

		ТабДок.Вывести(ОбластьТоварыШапка);
		ВыборкаТовары = Выборка.Товары.Выбрать();
		Пока ВыборкаТовары.Следующий() Цикл
			ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
			ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
		КонецЦикла;

		ВставлятьРазделительСтраниц = Истина;

	КонецЦикла;
		
КонецПроцедуры
Показать


изначально код построен конструктором макетов, от себя вставил куски, выделенные слешами
18. user591603_neterpenie 07.11.17 13:54 Сейчас в теме
чуть подправил,

теперь так:

Процедура СБЛ_Nero(ТабДок, Ссылка) Экспорт
	
	Макет = Документы.ФормаЗаказаКлиента.ПолучитьМакет("СБЛ_Nero");
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ФормаЗаказаКлиента.Номер,
	|	ФормаЗаказаКлиента.Дата,
	|	ФормаЗаказаКлиента.ДополнительнаяИнформация.(
	|		Примечания
	|	),
	|	ФормаЗаказаКлиента.Товары.(
	|		Менеджер,
	|		Номенклатура,
	|		Серия
	|	)
	|ИЗ
	|	Документ.ФормаЗаказаКлиента КАК ФормаЗаказаКлиента
	|ГДЕ
	|	ФормаЗаказаКлиента.Ссылка В (&Ссылка)";
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	
	Шапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьДополнительнаяИнформацияШапка = Макет.ПолучитьОбласть("ДополнительнаяИнформацияШапка");
	ОбластьДополнительнаяИнформация = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
	ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
	ОбластьТовары = Макет.ПолучитьОбласть("Товары");
////////////////////////////////////////////////////	
	ОбластьШтрихкод = Макет.ПолучитьОбласть("Штрихкод");
////////////////////////////////////////////////////	
	ТабДок.Очистить();

	ВставлятьРазделительСтраниц = Ложь;
	Пока Выборка.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;

		ТабДок.Вывести(ОбластьЗаголовок);
		
////////////////////////////////////////////////////

ВыборкаТовары = Выборка.Товары.Выбрать();

Пока ВыборкаТовары.Следующий() Цикл
	
СерийныйНомер = ВыборкаТовары.Серия;

		ПараметрыШтрихкода = Новый Структура;
		ПараметрыШтрихкода.Вставить("Ширина",          100);
		ПараметрыШтрихкода.Вставить("Высота",          75);
		ПараметрыШтрихкода.Вставить("Штрихкод",        Строка(СерийныйНомер));
		ПараметрыШтрихкода.Вставить("ТипКода",         4); //CODE128
		ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
		ПараметрыШтрихкода.Вставить("РазмерШрифта",    12);
		ОбластьШтрихкод.Рисунки.ШК.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
		
		ТабДок.Вывести(ОбластьШтрихкод, ВыборкаТовары.Уровень());

	КонецЦикла;
	
////////////////////////////////////////////////////


		Шапка.Параметры.Заполнить(Выборка);
		ТабДок.Вывести(Шапка, Выборка.Уровень());

		ТабДок.Вывести(ОбластьДополнительнаяИнформацияШапка);
		ВыборкаДополнительнаяИнформация = Выборка.ДополнительнаяИнформация.Выбрать();
		Пока ВыборкаДополнительнаяИнформация.Следующий() Цикл
			ОбластьДополнительнаяИнформация.Параметры.Заполнить(ВыборкаДополнительнаяИнформация);
			ТабДок.Вывести(ОбластьДополнительнаяИнформация, ВыборкаДополнительнаяИнформация.Уровень());
		КонецЦикла;
		
		

		ТабДок.Вывести(ОбластьТоварыШапка);
		ВыборкаТовары = Выборка.Товары.Выбрать();
		Пока ВыборкаТовары.Следующий() Цикл
			ОбластьТовары.Параметры.Заполнить(ВыборкаТовары);
			ТабДок.Вывести(ОбластьТовары, ВыборкаТовары.Уровень());
		КонецЦикла;

		ВставлятьРазделительСтраниц = Истина;

	КонецЦикла;
		
КонецПроцедуры
Показать


теперь сам штрих код выводится, все ок.

Единственная проблема - ОбластьШтрихкод выводится только в самом первом макете и туда лупит все штрих-коды, которые есть.)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот