как правильно указать путь к реквизиту Артикул в Номенклатуре розница 2.2

1. user755570 20.05.17 17:53 Сейчас в теме
нужна помощь, как правильно записать.

Например есть код:

ПрефиксВнутреннегоШтрихкодаВесовогоТовара = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ПрефиксВнутреннегоШтрихкодаВесовогоТовара");

а нужно

АртикулВесовогоТовара = (Сюда нужно указать путь к реквизиту Артикул в Справочнике Номенклатура).
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spe1c 5 20.05.17 19:05 Сейчас в теме
Чтобы указать пусть к реквизиту, нужна ссылка на элемент справочника. Это ведь не константа, у каждого элемента артикул свой.

Так и написать АртикулВесовогоТовара = СсылкаНаНужныйЭлемент.<ИмяРеквизита>
Где вместо <ИмяРеквизита> ставишь название реквизита, как оно указано в конфигураторе. Ссылку на нужный элемент получаешь предварительно исходя из условий своей задачи.
А вообще лучше не через точку получать, а запросом, это в общем случае.
+
3. user755570 22.05.17 10:36 Сейчас в теме
А как будет правильно?
Справочник.Номенклатура.Артикул или СправочникСсылка.Номенклатура.Артикул?
+
4. DAL 22.05.17 10:40 Сейчас в теме
(3) Номенклатура.Артикул

А Номенклатура - реквизит, передаваемый в параметрах этой процедуре.

Справочник и СправочникСсылка - это описание всего справочника.
+
5. user755570 22.05.17 10:42 Сейчас в теме
(4)т.е. АртикулВесовогоТовара = Номенклатура.Артикул? тогда сможем из из этого реквизита получить данные?
+
6. DAL 22.05.17 10:44 Сейчас в теме
(5) Заголовок процедуры/функции, код которой изменяете, приведите
+
10. user755570 22.05.17 10:49 Сейчас в теме
(6)
моя задача:
клиент хочет использовать реквизит "Артикул" в ШК.
Т.е. в ШК(EAN13) будет стоять сначала "код артикула товара "(5
символов)+дальше вес(7 символов из которых 4 первых это целая часть и
3 последующих дробная).

я хочу подставить вместо префиксавесовоготовара артикулвесового товара. Или можете подсказать другие варианты решения?

вот функция.




Функция ПолученШтрихкодИзСШК(Штрихкод, Форма, СтруктураДействий = Неопределено) Экспорт
	
	Перем СтруктураПараметровДействия, Пользователь;
	
	Если СтруктураДействий = Неопределено Тогда
		СтруктураДействий = ВариантыПроверокШтрихкода();
	КонецЕсли;
	
	ТипШтрихкода               = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; // ОпределитьТипШтрихкода(Штрихкод);
	НеизвестныеДанныеПО        = Истина;
	СтруктураПараметровКлиента = Новый Структура;          
	
	// Весовые товары и штучные на весах.
	Если СтруктураДействий.Свойство("ПроверкаВесовыхТоваров") 
		И ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
		
		АртикулВесовогоТовара = Номенклатура.Артикул;
		ПрефиксВнутреннегоШтрихкодаШтучногоФасованногоТовара = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ПрефиксВнутреннегоШтрихкодаШтучногоФасованногоТовара");
		ДлинаКодаВесовогоТовара = СтрДлина(Формат(ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ВерхняяГраницаДиапазонаSKUВесовогоТовара"),"ЧГ=0"));
		
		Если ДлинаКодаВесовогоТовара < 5 Тогда
			ДлинаКодаВесовогоТовара = 5;
		КонецЕсли;
		
		Если (ПрефиксВнутреннегоШтрихкодаВесовогоТовара > 0) 
			И (ДлинаКодаВесовогоТовара > 0)
			И (СтрДлина(Штрихкод) = 13)
			И (Лев(Штрихкод, 2) = ("2" + ПрефиксВнутреннегоШтрихкодаВесовогоТовара) 
			ИЛИ Лев(Штрихкод, 2) = ("2" + ПрефиксВнутреннегоШтрихкодаШтучногоФасованногоТовара)) Тогда
			
			КодТовара        = Сред(Штрихкод, 3,  ДлинаКодаВесовогоТовара);
			КоличествоТовара = Сред(Штрихкод, 3 + ДлинаКодаВесовогоТовара, 10 - ДлинаКодаВесовогоТовара);
			 
			Если Лев(Штрихкод, 2) = ("2" + ПрефиксВнутреннегоШтрихкодаВесовогоТовара) Тогда  
				// Весовой товара расфасованный на весах.
				Запрос = Новый Запрос(
				"ВЫБРАТЬ ПЕРВЫЕ 1
				|	КодыТоваровSKU.Номенклатура   КАК Номенклатура,
				|	КодыТоваровSKU.Характеристика КАК Характеристика,
				|	КодыТоваровSKU.Упаковка       КАК Упаковка,
				|	&КоличествоТовара / 1000      КАК Количество
				|ИЗ
				|	РегистрСведений.КодыТоваровSKU КАК КодыТоваровSKU
				|ГДЕ
				|	КодыТоваровSKU.SKU = &Код");
			Иначе
				// Штучный товар расфасованный на весах.
				Запрос = Новый Запрос(
				"ВЫБРАТЬ ПЕРВЫЕ 1
				|	КодыТоваровSKU.Номенклатура   КАК Номенклатура,
				|	КодыТоваровSKU.Характеристика КАК Характеристика,
				|	КодыТоваровSKU.Упаковка       КАК Упаковка,
				|	&КоличествоТовара             КАК Количество
				|ИЗ
				|	РегистрСведений.КодыТоваровSKU КАК КодыТоваровSKU
				|ГДЕ
				|	КодыТоваровSKU.SKU = &Код");
			КонецЕсли;
			
			Запрос.УстановитьПараметр("Код", Число(КодТовара));
			Запрос.УстановитьПараметр("КоличествоТовара", Число(КоличествоТовара));
			РезультатЗапроса = Запрос.Выполнить();
			
			Если НЕ РезультатЗапроса.Пустой() Тогда
				Выборка = РезультатЗапроса.Выбрать();
				Выборка.Следующий();
				НеизвестныеДанныеПО = Ложь;
				СтруктураПараметров = Новый Структура;
				СтруктураПараметров.Вставить("НеизвестныеДанныеПО", НеизвестныеДанныеПО);
				СтруктураПараметров.Вставить("ЗначенияПоиска", Новый Массив);
				СтруктураПараметров.Вставить("Действие", "ПроверкаВесовыхТоваров");
				СтруктураПараметров.Вставить("ДанныеПО", Штрихкод);
				СтруктураШтрихкода  = Новый Структура;
				ОбщегоНазначенияРТ.ПеренестиСтрокуВыборкиВСтруктуру(РезультатЗапроса, Выборка, СтруктураШтрихкода);
				Если СтруктураДействий.Свойство("ИспользоватьКоличество") Тогда
					СтруктураШтрихкода.Количество = СтруктураШтрихкода.Количество * СтруктураДействий.ИспользоватьКоличество;
				КонецЕсли;
				СтруктураПараметров.ЗначенияПоиска.Добавить(СтруктураШтрихкода);
				СтруктураПараметровКлиента = Форма.ОбработатьДанныеПОВФормеСервер(СтруктураПараметров, СтруктураПараметровКлиента);
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
Показать
+
7. spe1c 5 22.05.17 10:45 Сейчас в теме
(5)Сможете, только это будет неправильно с точки зрения производительности. Через точку прочитаете вообще все данные о номенклатуре.
+
8. DAL 22.05.17 10:46 Сейчас в теме
(7) ... и полную лекцию о вреде разыменования для новичка...

;)
+
9. spe1c 5 22.05.17 10:47 Сейчас в теме
(8)Нет пусть говнокодером и останется.
+
11. user755570 22.05.17 10:55 Сейчас в теме
(8) и вот еще

у номенклатуры уже есть реквизит Артикул. В него скажем будет забито некое
число пусть начинающееся с 2 (уникальное для каждой позиции
напр.23456) и нужно доработать функцию, чтобы она понимала, что для ШК начинающийся на 2 нужно
искать по описанному алгоритму, а не по рег.сведений Штрихкоды.
+
12. DAL 22.05.17 14:13 Сейчас в теме
1. В каком формате будет формироваться штрихкод по артикулу (EAN-13, EAN-128, CODE-39, e.t.c.)?
2. Если опустить проверки на тип, то у вас в заголовке процедуры приходит штрихкод в виде строки.

Что мешает сделать:

НашаНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Штрихкод);

???
+
13. DAL 22.05.17 14:15 Сейчас в теме
Меня ввело в заблуждение определение "Префикс/артикул весового товара", т.к. для весового товара вообще отдельный процесс по формированию и чтению штрихкодов.
+
Внимание! Тема сдана в архив

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