Фомирование штрихкода и запись в номенклатуру

1. user2056518 18.09.24 10:58 Сейчас в теме
Возникла ошибка при попытке обратиться к функции в форме обработки
"{Обработка.ИмпортЗаказаИзИТ5Новый.Форма.Форма.Форма(519,14)}: Недостаточно фактических параметров (ФормированиеШтрихКода)
ШтрихКод = <<?>>ФормированиеШтрихКода(ШтрихКод); (Проверка: Толстый клиент (обычное приложение))"
Что-то неверно прописал или вообще не так сделал ?
Функция ФормированиеШтрихКода(ПолучитьТекущиеИзделия, НомерЗаказа, КодДокумента)
	
	Объект.НомерЗаказа = НомерЗаказа;	
	ИзделияЗаказа    = ПолучитьМассивИзделий(КодДокумента);
	Для Каждого Изделие Из ИзделияЗаказа Цикл
		Штрих = Объект.НомерЗаказа + Изделие.Номер + РаботаСТорговымОборудованием.КонтрольныйСимволEAN();
	КонецЦикла;
    ШтрихКод = Штрих;
КонецФункции
Показать

&НаСервере
Функция ПолучитьНоменклатуру(Имя, _ПолноеНаименование, СписокНоменклатуры, Количество, Площадь, Эскиз, НаименованиеИТ)
	
	Наименование 	= Имя;
	ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000003"); //продукция 
	Родитель 		= Справочники.Номенклатура.НайтиПоКоду("00000001889"); //группа продукция 
	
	Статус = "Создаю номенклатурную единицу: " + Наименование;
	
	НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000001"); //основная
	Если ЗаказПВХТипИзделия = Справочники.ТипыИзделий.Алюминий Тогда
		НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000003");			
	КонецЕсли;
	
	Если Лев(НаименованиеИТ, 2) = "МП" Тогда
		Номен = Справочники.Номенклатура.НайтиПоНаименованию(НаименованиеИТ);
	Иначе 
		Номен = Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
	КонецЕсли;
	Если Номен = Справочники.Номенклатура.ПустаяСсылка() Тогда
		Номен = Справочники.Номенклатура.СоздатьЭлемент();
		
		Если Лев(НаименованиеИТ, 2) = "МП" Тогда
			Номен.Наименование			   = НаименованиеИТ;
			Номен.НаименованиеПолное       = НаименованиеИТ;
		Иначе
			Если ЗаказПВХТипИзделия = Справочники.ТипыИзделий.Алюминий Тогда
				Номен.Наименование 				= Наименование;
				Номен.НаименованиеПолное 		= "Светопрозрачная конструкция из Алюм" + " №" + Номен.Наименование;
			ИначеЕсли ЗаказПВХТипИзделия = Справочники.ТипыИзделий.ОкнаПВХ Тогда
				Номен.Наименование				= Наименование;
				Номен.НаименованиеПолное 		= "Светопрозрачная конструкция из ПВХ" + " №" + Номен.Наименование;
			КонецЕсли;   
		КонецЕсли;
		//Номен.НаименованиеПолное 			= _ПолноеНаименование;
		Номен.НоменклатурнаяГруппа 			= НоменклатурнаяГруппа;
		Номен.НоменклатурнаяГруппаЗатрат 	= НоменклатурнаяГруппа;
		Номен.ВидНоменклатуры 				= ВидНоменклатуры; 
		Номен.ВестиУчетПоХарактеристикам 	= Истина;
		Номен.СтавкаНДС 					= Перечисления.СтавкиНДС.БезНДС;
		Номен.БазоваяЕдиницаИзмерения 		= Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(796); //шт
		Номен.Родитель 						= Родитель;
		Номен.Изделие 						= Истина;
		Номен.Площадь 						= Площадь;
		Номен.НеПодбиратьЦвет 				= Истина;
		Номен.ИзделиеИзПВХ 					= Истина;
		Номен.НаименованиеИТ 				= НаименованиеИТ;
		Номен.Записать();
	Иначе
		Номен = Номен.ПолучитьОбъект();
		Номен.Наименование					= Номен.Наименование;
		Номен.НаименованиеПолное            = Номен.НаименованиеПолное;
		Номен.НоменклатурнаяГруппа 			= НоменклатурнаяГруппа;
		Номен.НоменклатурнаяГруппаЗатрат 	= НоменклатурнаяГруппа;	
		Номен.НеПодбиратьЦвет 				= Истина;                               
		Номен.НаименованиеИТ 				= НаименованиеИТ;
		Номен.Записать();
	КонецЕсли;
		ШтрихКод = ФормированиеШтрихКода(ШтрихКод);
		СсылкаНаОбъект = Номен.Ссылка;
		Рег = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
		Рег.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8;
		Рег.Владелец = СсылкаНаОбъект.Ссылка;
		Рег.Штрихкод = ШтрихКод;
		Рег.Качество = Справочники.Качество.Новый;
		Рег.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоКоду("ШШ0084287");
		Рег.Записать();
	
	ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.Выбрать(,Номен.Ссылка);
	Если ЕдиницаИзмерения.Следующий() Тогда
		Номен.ЕдиницаХраненияОстатков = ЕдиницаИзмерения.Ссылка;
	Иначе
		ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.СоздатьЭлемент();
		ЕдиницаХраненияОстатков.Наименование 			= Номен.БазоваяЕдиницаИзмерения.Наименование;
		ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору = Номен.БазоваяЕдиницаИзмерения;
		ЕдиницаХраненияОстатков.Коэффициент 			= 1;
		ЕдиницаХраненияОстатков.Владелец 				= Номен.Ссылка;
		ЕдиницаХраненияОстатков.Записать();
		Номен.ЕдиницаХраненияОстатков 	= ЕдиницаХраненияОстатков.Ссылка;
		Номен.ЕдиницаДляОтчетов 		= ЕдиницаХраненияОстатков.Ссылка;
	КонецЕсли;
	
	Запрос = новый запрос;
	Запрос.Текст = "ВЫБРАТЬ
		|	ЗначенияСвойствОбъектов.Значение
		|ИЗ
		|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		|ГДЕ
		|	ЗначенияСвойствОбъектов.Объект = &Объект
		|	И ЗначенияСвойствОбъектов.Свойство.Наименование = ""Тип комплектующей""";
	Запрос.УстановитьПараметр("Объект", Номен.Ссылка);
	Выборка = Запрос.Выполнить().Выбрать();
	Значение = "";
	Пока Выборка.Следующий() Цикл 
		Значение = Выборка.Значение;
	КонецЦикла;
			
	Если Значение = null Или Значение = "" тогда
		зсо = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
		зсо.Объект 		= Номен.Ссылка;
		зсо.Свойство 	= ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00000000014");
		зсо.Значение 	= Справочники.ЗначенияСвойствОбъектов.НайтиПоКоду("000000136");
		зсо.Записать();
	КонецЕсли;

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

КонецФункции
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. romulanin 18.09.24 11:15 Сейчас в теме
Написано же Недостаточно фактических параметров для процедуры (ФормированиеШтрихКода)
не хватает параметров, не переданы параметры в достаточном количестве. в строке 519.
ctrl + g и перейдешь к этой строке, не хватает параметров НомерЗаказа, КодДокумента
3. user2056518 18.09.24 12:22 Сейчас в теме
(2) Как вы и написали ошибка ушла после того как добавил другие параметры, но получилось что она передала пустую строку, может нужно ещё что-то дописать что бы я получил то что хотел ?
4. user2033930 18.09.24 12:32 Сейчас в теме
(3)
может нужно ещё что-то дописать
Лучше не надо. Пожалей себя.
Вот когда поймешь - что ты хотел сделать каждой строчкой своего кода - тогда попробуй еще раз.
Оставьте свое сообщение

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