|
УТ 10.3 Заполнить свойства номенклатуры программно | ☑ | ||
---|---|---|---|---|
0
sasha-asn
27.01.20
✎
15:58
|
Здравствуйте уважаемые эксперты, не могу понять почему не срабатывает обработка которую я написал. Подскажите пожалуйста!
Я написал запрос, в консоли запросов он выводит те поля с которыми я работаю. Теперь я хочу в обработке их Сообщить(); и далее заполнить каждое свойство номенклатуры по принципу ЗначенияСвойствОбъектов.Значение = Номенклатура.Код ВОПРОС №1: Почему у меня не выводится каждая позиция с 4 полями через Сообщить() ? ВОПРОС №2: Если не выводить сообщением 4 поля, как задать для номенклатуры обработкой результата ЗначенияСвойствОбъектов.Значение = Номенклатура.Код ? |
|||
1
sasha-asn
27.01.20
✎
15:58
|
// Запросом получаю 4 поля таблицы: НазваниеНоменклатура, КодНоменклатуры, НазваниеСвойства, ЗначениеСвойства
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.Код, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | Справочник.Номенклатура КАК Номенклатура, | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &Свойство"; Запрос.УстановитьПараметр("Свойство", "КодДляСайта"); //Вывести результат запроса Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка); КонецЦикла; |
|||
2
sasha-asn
27.01.20
✎
16:02
|
||||
3
SeriyP
27.01.20
✎
16:08
|
Сообщить(Выборка.Код + Выборка.Ссылка+ Выборка.Свойство+Выборка.Значение)
Не плохо бы добавить соединение по ЗначенияСвойствОбъектов.Объект = Номенклатура.Ссылка |
|||
4
sasha-asn
27.01.20
✎
16:17
|
(3) почему то не срабатывает обработка
// Запросом получаю 4 поля таблицы: НазваниеНоменклатура, КодНоменклатуры, НазваниеСвойства, ЗначениеСвойства Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.Код, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | Справочник.Номенклатура КАК Номенклатура, | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &Свойство"; Запрос.УстановитьПараметр("Свойство", "КодДляСайта"); //Вывести результат запроса Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Код + Выборка.Ссылка+ Выборка.Свойство+Выборка.Значение); КонецЦикла; |
|||
5
runoff_runoff
27.01.20
✎
16:20
|
а где "левое соединение"?
|
|||
6
Масянька
27.01.20
✎
16:25
|
ТекЗапись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
ТекЗапись.Объект = Номенклатура; ТекЗапись.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(Элемент.Представление); ТекЗапись.Значение = Элемент.Значение; Попытка ТекЗапись.Записать(); Исключение КонецПопытки; |
|||
7
sasha-asn
27.01.20
✎
16:26
|
(5) что с чем соединять?
|
|||
8
hhhh
27.01.20
✎
16:28
|
(7) вот за такую хрень
|ИЗ | Справочник.Номенклатура КАК Номенклатура, | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов надо расстреливать из крупнокалиберного пулемета |
|||
9
Said_We
27.01.20
✎
16:29
|
(7)
ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.Код, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | Справочник.Номенклатура КАК Номенклатура, | левое соединение РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &Свойство" |
|||
10
Said_We
27.01.20
✎
16:29
|
И то это тоже не правильно.
|
|||
11
sasha-asn
27.01.20
✎
16:30
|
(8) что в этом плохого?
|
|||
12
Said_We
27.01.20
✎
16:30
|
В общем случае так тоже писать нельзя. Перед тем как соединять, на все таблицы уже должны быть наложены все фильтры, которые используются.
|
|||
13
Said_We
27.01.20
✎
16:31
|
(11) В данном случае примерно ВСЁ. И это абсолютно точное определение, а не не образно всё плохо. Реально плохо всё.
|
|||
14
UserTizer
27.01.20
✎
16:45
|
(11) Ты объединяешь ВСЮ! номенклатуру и ВСЕ! доп свойства. Если много номенклатуры и доп свойств, то ждать выполнения запроса оочень долго и ооочень неправильные данные получатся
|
|||
15
Timon1405
27.01.20
✎
16:49
|
(9) левое соединение РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект
И ЗначенияСвойствОбъектов.Свойство = &Свойство |
|||
16
sasha-asn
27.01.20
✎
17:02
|
(15) неправильно, тогда Свойство и Значения будут пустые
|
|||
17
sasha-asn
27.01.20
✎
17:08
|
(15) Спасибо! я был не прав! мысли появились!
|
|||
18
Said_We
27.01.20
✎
17:08
|
(16) Значит нет такого свойства как "КодДляСайта". У тебя свойство типа строка?
|
|||
19
Said_We
27.01.20
✎
17:11
|
(17) В типовых свойство обычно такое имеет тип примерно такой: "ПланВидовХарактеристикСсылка.СвойстваОбъектов".
|
|||
20
sasha-asn
28.01.20
✎
11:35
|
(19) СПАСИБО ТЕБЕ БОЛЬШОЕ! И ВСЕМ КТО ПОМОГАЛ!
|
|||
21
sasha-asn
28.01.20
✎
11:35
|
если кто то попадёт сюда через гугл, вот решение
КодДляСайта = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00223"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.Код, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | Справочник.Номенклатура КАК Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов | ПО Номенклатура.Ссылка = ЗначенияСвойствОбъектов.Объект |ГДЕ ЗначенияСвойствОбъектов.Значение Есть NULL"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Объект = ВыборкаДетальныеЗаписи.Ссылка; МенеджерЗаписи.Свойство = КодДляСайта ; МенеджерЗаписи.Значение = ВыборкаДетальныеЗаписи.Код; МенеджерЗаписи.Записать(); КонецЦикла; |
|||
22
Timon1405
28.01.20
✎
11:48
|
(21) код в рубрике "вредные советы"
у вас нет соединения по свойству о чем я вам писал в (15), ваш текущий код проставит это свойство ВСЕМ незаполненным свойствам а не только свойству код для сайта |
|||
23
Масянька
28.01.20
✎
11:52
|
(21) Да, что ж ты второй день мучаешься?
У тебя нет консоли запросов? Найди и скачай. И делай там запрос. И проверяй выборку по запросу. |
|||
24
DmVl76
28.01.20
✎
11:57
|
(22) Нет, проставится только для номенклатуры, у которой нет НИ ОДНОГО свойства.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |