При проведении Ошибка "Поле объекта не обнаружено (Штрихкод)"

1. MaxCheet 25.06.23 18:56 Сейчас в теме
Добрый вечер, Имеется самописный документ, для печати этикетки на паллет, уже работает давно. На данный момент необходимо вести учет каждого паллета, так как постоянно недостачи, попросили ввести уникальный штрихкод на каждый паллет, чтобы с производства принимали на склад по штрихкоду. В документ было добавлено поле штрихкода и кнопка генерирования штрихкода и есть вывод на печать. Соответственно, чтобы его приняли на складе, нужно чтобы номер штрихкода на этапе печати этикетки добавлялся автоматически в регистр сведений. Сделали это через подчинение регистру, изначально все работало, но потом начала выпадать ошибка, что поле объекта не не обнаружено. Можете подсказать, пожалуйста, из-за чего выпадает эта ошибка.
Платформа УНФ 3.0

Код из конструктора движений:

Код из конструктора движений]Процедура ОбработкаПроведения(Отказ, Режим)
	//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

	// регистр ШтрихкодыНоменклатуры
	Движения.ШтрихкодыНоменклатуры.Записывать = Истина;
	Движение = Движения.ШтрихкодыНоменклатуры.Добавить();
	Движение.Штрихкод = Штрихкод;
	Движение.Номенклатура = Номенклатура;

	//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Показать







Код в форме документа

Код на генерацию штрихкода]#Область ОбработчикиСобытийФормы



// Процедура - обработчик события ОбработкаПроверкиЗаполненияНаСервере.
//
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

	Запрос = РегистрыСведений.ШтрихкодыНоменклатуры.НовыйЗапросШтрихкоды(Объект);

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

	Если Выборка.Следующий() // Штрихкод уже записан в БД

		И Объект.ИсходныйКлючЗаписи.Штрихкод <> Объект.Штрихкод Тогда

		ОписаниеОшибки = НСтр("ru='Такой штрихкод уже назначен для номенклатуры %Номенклатура%'");
		ОписаниеОшибки = СтрЗаменить(ОписаниеОшибки, "%Номенклатура%", """" + Выборка.НоменклатураПредставление + """"
			+ ?(ЗначениеЗаполнено(Выборка.Характеристика), " " + НСтр("ru='с характеристикой'") + " """
			+ Выборка.ХарактеристикаПредставление + """", "") + ?(ЗначениеЗаполнено(Выборка.Партия), " """ + НСтр(
			"ru='с партией'") + " " + Выборка.ПартияПредставление + """", ""));

		ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки,, "Объект.Штрихкод",, Отказ);

	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	ПерезаписатьЗначениеШтрихКодаВНоменклатуре = Объект.ИсходныйКлючЗаписи.Штрихкод = Объект.Номенклатура.ШтрихКод;
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
	
	ПараметрыОповещения = Новый Структура;
	ПараметрыОповещения.Вставить("Номенклатура", Объект.Номенклатура);
	ПараметрыОповещения.Вставить("ШтрихКод", Объект.ШтрихКод);
	//ПараметрыОповещения.Вставить("ПерезаписатьЗначениеШтрихКодаВНоменклатуре", ПерезаписатьЗначениеШтрихКодаВНоменклатуре);
		ПараметрыОповещения.Вставить("ШтрихКодУдален", Ложь);
	
	Оповестить("ОбъектШтрихКода", ПараметрыОповещения);
	
	Элементы.ФормаУдалитьЗапись.Доступность = Истина;
	
КонецПроцедуры

#КонецОбласти

  

 

#Область ОбработчикиКомандФормы

// Процедура обработчик команды НовыйШтрихкод.
//
&НаКлиенте
Процедура НовыйШтрихкод(Команда)
	
	Если Не ЗначениеЗаполнено(Объект.Номенклатура) Тогда
		СтрокаСообщения = НСтр("ru = 'Штрихкод не сгенерирован. Предварительно выберите номенклатуру.'");
		ОбщегоНазначенияКлиент.СообщитьПользователю(СтрокаСообщения);
		Возврат
	КонецЕсли;
	
			Объект.Штрихкод = СформироватьШтрихкодEAN13();
	
	
КонецПроцедуры

&НаКлиенте
Процедура УдалитьЗапись(Команда)
	
		ОписаниеОповещения = Новый ОписаниеОповещения("УдалитьЗаписьНаКлиенте", ЭтотОбъект);
		ПоказатьВопрос(ОписаниеОповещения, НСтр("ru = 'Удалить ""Штрихкоды номенклатуры"" ?'"), РежимДиалогаВопрос.ДаНет);

	КонецПроцедуры
	
	&НаКлиенте
Процедура ПечатьЭтикетки(Команда)

	Если Не ЗначениеЗаполнено(Объект.Штрихкод) Тогда
		Возврат;
	КонецЕсли;

	ТабДок = ТабличныйДокументСШтрихКодом();

	ТабДок.Показать();

КонецПроцедуры


#КонецОбласти





#Область СлужебныеПроцедурыИФункции

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

	Если Ответ = КодВозвратаДиалога.Нет Тогда
		Возврат;
	КонецЕсли;
	
	УдалитьЗаписьНаСервере();
	
	ПараметрыОповещения = Новый Структура;
	ПараметрыОповещения.Вставить("Номенклатура", Объект.Номенклатура);
	ПараметрыОповещения.Вставить("ШтрихКод", Объект.ШтрихКод);
	ПараметрыОповещения.Вставить("ПерезаписатьЗначениеШтрихКодаВНоменклатуре", Ложь);
	ПараметрыОповещения.Вставить("ШтрихКодУдален", Истина);
	
	Оповестить("ОбъектШтрихКода", ПараметрыОповещения);

	
	ЭтаФорма.Закрыть();
	
КонецПроцедуры

&НаСервере
Процедура УдалитьЗаписьНаСервере()

	НаборЗаписей = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();
	
	НаборЗаписей.Отбор.Номенклатура.Установить(Объект.Номенклатура);
	НаборЗаписей.Отбор.Штрихкод.Установить(Объект.Штрихкод);
	НаборЗаписей.Отбор.Партия.Установить(Объект.Партия);
	НаборЗаписей.Отбор.ЕдиницаИзмерения.Установить(Объект.ЕдиницаИзмерения);
	НаборЗаписей.Отбор.Характеристика.Установить(Объект.Характеристика);
	НаборЗаписей.Записать();
	
КонецПроцедуры

// ПодключаемоеОборудование
&НаКлиенте
Функция ПолученыШтрихкоды(ДанныеШтрихкодов)
	
	Модифицированность = Истина;
	
	Если ДанныеШтрихкодов.Количество() > 0 Тогда
		Объект.Штрихкод = ДанныеШтрихкодов[ДанныеШтрихкодов.Количество() - 1].Штрихкод;
	КонецЕсли;
	
	Возврат Истина;
	
КонецФункции // ПолученыШтрихкоды()
// Конец ПодключаемоеОборудование


// Формирует штрихкод EAN13.
//
&НаСервереБезКонтекста
Функция СформироватьШтрихкодEAN13()
	
	Возврат РегистрыСведений.ШтрихкодыНоменклатуры.СформироватьШтрихкодEAN13();
	
КонецФункции // СформироватьШтрихкодEAN13()


&НаСервере
Функция ТабличныйДокументСШтрихКодом()

	Результат = Новый ТабличныйДокумент;

	ПараметрыШтрихкода = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
	ПараметрыШтрихкода.Ширина = 200;
	ПараметрыШтрихкода.Высота = 100;
	ПараметрыШтрихкода.УровеньКоррекцииQR = 0;
	ПараметрыШтрихкода.Штрихкод = Объект.Штрихкод;
	ПараметрыШтрихкода.ТипКода = 1;
	ПараметрыШтрихкода.ОтображатьТекст = Истина;
	ПараметрыШтрихкода.РазмерШрифта = 11;
	ПараметрыШтрихкода.УголПоворота = 0;

	ИзображениеШтрихкода = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШтрихкода);

	Макет = Документы.Банка_I_82_500.ПолучитьМакет("Тест");   
	
	

	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); 
	Результат.Вывести(ОбластьЗаголовок);
	Контакты = Макет.ПолучитьОбласть("Контакты");
	Результат.Вывести(Контакты);
	Шапка = Макет.ПолучитьОбласть("Шапка"); 
	Шапка.Параметры.Дата = Объект.Дата;
	Шапка.Параметры.Сортировщик1 = Объект.Сортировщик1;
	Шапка.Параметры.Сортировщик2 = Объект.Сортировщик2;
	Шапка.Параметры.Смена = ПараметрыСеанса.ТекущийПользователь.Смена;
	Шапка.Параметры.ОТК = ПараметрыСеанса.ТекущийПользователь.ОТК;
	Результат.Вывести(Шапка);
	Сноска = Макет.ПолучитьОбласть ("Сноска");
	Сноска.Параметры.НомерПаллета = Объект.НомерПаллета;	
	Результат.Вывести(Сноска);    
	
	
	
	ОбластьШК = Макет.ПолучитьОбласть("Штрихкод");
	НовыйРисунок = ОбластьШК.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
	НовыйРисунок.Картинка = ИзображениеШтрихкода.Картинка;
	НовыйРисунок.Верх = 0;
	НовыйРисунок.Лево = 0;
	НовыйРисунок.Ширина = 40;
	НовыйРисунок.Высота = 20;
	Результат.Вывести(ОбластьШК);

	
	
	  	
	Возврат Результат;

    КонецФункции
#КонецОбласти
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1880116 25.06.23 21:43 Сейчас в теме
Какой негодяй отобрал у тебя отладчик?
3. Oldsad 26.06.23 02:24 Сейчас в теме
если все работало, а потом "вдруг" перестало
то как люди с аналитическим складом ума мы понимаем, что так не бывает
а значит либо это ошибка железа, и вам надо почистить кэш, протестить базу на целостность и т.п.
либо вы нам что то недоговариваете

П.С. Ошибка возникает в модуле обмена данными, вы нам приводите куски кода из самописного документа, на что надеетесь непонятно
4. MaxCheet 26.06.23 10:04 Сейчас в теме
(3) Ну получилось как. Все работало, потом решили изменить форму документа, создали на всякий случай еще один, а потом когда удалили его, стала выпадать ошибка. Возможно, мы что-то и изменили, но что непонятно. Все кода уже вдоль и поперек проверили. Даже новую базу пробовали создать, все равно выпадает ошибка. Поэтому и пишем сюда, та как сами уже не можем понять в чем может быть причина.

Скрин приложили на каком этапе в обмене данных выпала ошибка, а самописный скинули на всякий случай, может там где-то не состыковка.

Ошибка выпадает на этой строчке:

Запрос.УстановитьПараметр("Значение", Источник.Отбор.Штрихкод.Значение);


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


Запрос.УстановитьПараметр("Значение", Источник.Отбор.Штрихкод.Значение);

ИначеЕсли ТипИсточника = Тип("РегистрСведенийНаборЗаписей.ЦеныНоменклатуры") Тогда
		
		Запрос = Новый Запрос(
		"ВЫБРАТЬ
		|	КодыТоваровPLUНаОборудовании.ПравилоОбмена КАК ПравилоОбмена,
		|	КодыТоваровPLUНаОборудовании.КодТовараPLU КАК Код,
		|	ПодключаемоеОборудование.УзелИнформационнойБазы КАК УзелИнформационнойБазы
		|ИЗ
		|	РегистрСведений.КодыТоваровPLUНаОборудовании КАК КодыТоваровPLUНаОборудовании
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодключаемоеОборудование КАК ПодключаемоеОборудование
		|		ПО КодыТоваровPLUНаОборудовании.ПравилоОбмена = ПодключаемоеОборудование.ПравилоОбмена
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КодыТоваровSKU КАК КодыТоваровSKU
		|		ПО КодыТоваровPLUНаОборудовании.КодТовараSKU = КодыТоваровSKU.SKU
		|ГДЕ
		|	ПодключаемоеОборудование.УзелИнформационнойБазы <> ЗНАЧЕНИЕ(ПланОбмена.ОбменСПодключаемымОборудованиемOffline.ПустаяСсылка)
		|	И КодыТоваровSKU.Номенклатура = &Значение
		|	И КодыТоваровPLUНаОборудовании.ПравилоОбмена.ВидЦеныНоменклатуры = &ВидЦен
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	КодыТоваровPLUНаОборудовании.ПравилоОбмена,
		|	КодыТоваровPLUНаОборудовании.КодТовараPLU,
		|	ПодключаемоеОборудование.УзелИнформационнойБазы
		|ИЗ
		|	РегистрСведений.КодыТоваровPLUНаОборудовании КАК КодыТоваровPLUНаОборудовании
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОфлайнОборудование КАК ПодключаемоеОборудование
		|		ПО КодыТоваровPLUНаОборудовании.ПравилоОбмена = ПодключаемоеОборудование.ПравилоОбмена
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КодыТоваровSKU КАК КодыТоваровSKU
		|		ПО КодыТоваровPLUНаОборудовании.КодТовараSKU = КодыТоваровSKU.SKU
		|ГДЕ
		|	ПодключаемоеОборудование.УзелИнформационнойБазы <> ЗНАЧЕНИЕ(ПланОбмена.ОбменСПодключаемымОборудованиемOffline.ПустаяСсылка)
		|	И КодыТоваровSKU.Номенклатура = &Значение
		|	И КодыТоваровPLUНаОборудовании.ПравилоОбмена.ВидЦеныНоменклатуры = &ВидЦен");
		
		Запрос.УстановитьПараметр("Значение", Источник.Отбор.Номенклатура.Значение);
		Запрос.УстановитьПараметр("ВидЦен", Источник.Отбор.ВидЦен.Значение);
	
	Иначе
		Возврат;
	КонецЕсли;
	
	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	
	Набор = РегистрыСведений.КодыТоваровPLUНаОборудовании.СоздатьНаборЗаписей();
	Пока Выборка.Следующий() Цикл
		
		Набор.Отбор.ПравилоОбмена.Значение = Выборка.ПравилоОбмена;
		Набор.Отбор.ПравилоОбмена.Использование = Истина;
		
		Набор.Отбор.КодТовараPLU.Значение = Выборка.Код;
		Набор.Отбор.КодТовараPLU.Использование = Истина;
		
		ПланыОбмена.ЗарегистрироватьИзменения(Выборка.УзелИнформационнойБазы, Набор);
	
	КонецЦикла;
	
КонецПроцедуры
Показать
5. user856012 13 26.06.23 10:32 Сейчас в теме
(4)
создали на всякий случай еще один, а потом когда удалили его, стала выпадать ошибка
До отвращения надоевший вопрос: кэш чистили?
самописный скинули на всякий случай
Если проблема с самописным документом, надо трясти самописателя.

Или менять его, если он не может разобраться.
11. MaxCheet 26.06.23 15:00 Сейчас в теме
(5)Да, кэш чистили. Думали может вы здесь подскажите почему не может обнаружить это поле. Генерация штрихкода и вывод на печать штрихкода все работает корректно, а именно на запись в регистр не видит это поле, из-за чего такое может быть?
6. RustamZz 26.06.23 10:34 Сейчас в теме
(4) В отборе нет поля Штрихкод
8. MaxCheet 26.06.23 12:40 Сейчас в теме
(6)
В отборе нет поля Штрихкод


можно точнее
9. RustamZz 26.06.23 13:21 Сейчас в теме
(8) Источник.Отбор в нем нет поля Штрихкод
10. MaxCheet 26.06.23 14:56 Сейчас в теме
(9) А почему не может найти это поле? Реквизит такой есть,в элементах формы тоже обращается к этому объекту.
12. RustamZz 26.06.23 15:01 Сейчас в теме
(10) Гадать можно долго, поэтому смотрите отладчиком.
13. MaxCheet 26.06.23 16:36 Сейчас в теме
(12) При запуске отладки, если ставить место остановы на строчке или выше, где выпадает ошибка, то когда ошибка выпадает в предприятии( ошибка появляется при проведении документа), в конфигураторе не доходит до точки исполнения отладки
14. RustamZz 26.06.23 16:39 Сейчас в теме
(13) Это у вас, скорее всего, отладка на сервере не работает
15. MaxCheet 26.06.23 16:48 Сейчас в теме
(14) Проверяли на кнопке "Сгенерировать штрихкод" там все работает, а на этой ошибке почему-то не доходит
16. MaxCheet 26.06.23 17:58 Сейчас в теме
(12) Отладка заработала, но что с этим делать все равно непонятно...
Прикрепленные файлы:
17. user1880116 26.06.23 18:23 Сейчас в теме
(16)
что с этим делать все равно непонятно
Позови уже программиста. Заплати денег.
7. usershmuser 26.06.23 10:37 Сейчас в теме
Разверните конфу из бекапа. Вы же делал бекап перед изменениями или делали на копии?
18. MaxCheet 26.06.23 21:44 Сейчас в теме
Сами разобрались, сделали регистр снова независимым и сделали запись через менеджер. Теперь ошибок нет и реализовано то, что требовалось- запись в регистр сведений штрихкодов на этапе печати этикетки.

Код на запись в регистр
Процедура ПриЗаписи (ПараметрыЗаписи) 
ШтрихкодыНоменклатурыМенеджерЗаписи = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();

ШтрихкодыНоменклатурыМенеджерЗаписи.Номенклатура     = Номенклатура; 
ШтрихкодыНоменклатурыМенеджерЗаписи.Штрихкод     = Штрихкод; 
ШтрихкодыНоменклатурыМенеджерЗаписи.Записать();
	
	
КонецПроцедуры
Показать
Оставьте свое сообщение

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