![]() |
![]() |
![]() |
|
Работа с объектом Соответствие | ☑ | ||
---|---|---|---|---|
0
Midaw
15.10.10
✎
09:52
|
Использовал впервые данный инструмент в плане оптимизации работы сложной обработки. Работает на славу, но возник вопрос. Привожу текст заполнения Соответствия:
ЗапросПоСвойствам = новый Запрос(); ЗапросПоСвойствам.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект КАК Объект, | ЗначенияСвойствОбъектов.Свойство, | ЗначенияСвойствОбъектов.Значение |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Объект.ПолныйКодВТорговле В (&Объект)"; СоответствиеОбщая = Новый Соответствие; ЗапросПоСвойствам.УстановитьПараметр("Объект", ТЗНоменклатура.ВыгрузитьКолонку("ПолныйКод")); Выборка = ЗапросПоСвойствам.Выполнить().Выбрать(); ОбъектРанее = Неопределено; Пока Выборка.Следующий() Цикл Объект = Выборка.Объект; Если НЕ ОбъектРанее = Объект Тогда Если ОбъектРанее = Неопределено Тогда СоответствиеСвойств = Новый Соответствие; СоответствиеСвойств.Вставить(Выборка.Свойство, Выборка.Значение); Иначе СоответствиеОбщая.Вставить(ОбъектРанее, СоответствиеСвойств); СоответствиеСвойств = Новый Соответствие; СоответствиеСвойств.Вставить(Выборка.Свойство, Выборка.Значение); КонецЕсли; ОбъектРанее = Объект; Иначе СоответствиеСвойств.Вставить(Выборка.Свойство, Выборка.Значение); КонецЕсли; КонецЦикла; В тексте запрос не имеет сортировки по объекту. Внимание вопрос. Часть свойств теряется или в соответствии один объект как то дважды встречается?! Где нибудь бы подробности в особенностях выполнения метода Вставить в случае присутствия данного элемента в "Соответствии". |
|||
1
Midaw
15.10.10
✎
09:53
|
*узнать
|
|||
2
EGAfonov
15.10.10
✎
09:57
|
в СП все написано.
|
|||
3
Mitriy
15.10.10
✎
09:57
|
ключ в соответствии повторяться не может, если такой уже существует, то Вставить затирает старое значение и заполняет новым, если такого ключа нет, то он добавляется... что непонятно?
|
|||
4
FIXXXL
15.10.10
✎
09:57
|
из СП:
Соответствие (Map) Вставить (Insert) Описание: Устанавливает значение элемента соответствия по ключу. Если элемент с переданным значением ключа существует, то его значение заменяется, в противном случае добавляется новый элемент. не заменятся там ничего? |
|||
5
Mitriy
15.10.10
✎
09:59
|
(4) что сказать хотел? ))
|
|||
6
vmv
15.10.10
✎
10:03
|
5. что в соответствии не может быть два элемента с одним ключем.
я так раз тоже прокололся, когда нужно было фильтровать списки/таблицы, где на ключевое поле могут быть наложены разные условия. пришлось пределать на список значений |
|||
7
Midaw
15.10.10
✎
10:06
|
а ну всё, ответ ясен. явная не доработка в коде )
|
|||
8
Midaw
15.10.10
✎
10:06
|
жалко ошибку не выводит
|
|||
9
vmv
15.10.10
✎
10:10
|
500К на щет(с):)
|
|||
10
Midaw
15.10.10
✎
10:11
|
(9) 500к ушло новичкам на обход граблей )
|
|||
11
Midaw
15.10.10
✎
15:57
|
продолжим холивар...
есть ошибка: Ошибка при вызове метода контекста (Получить): Несоответствие типов (параметр номер '1') код: ппп = ПланыВидовХарактеристик.СвойстваОбъектов[Объект]; ЗначениеСвойства = ТаблицаСвойств.Получить(ппп); // <--- Место ошибки где: Объект = наименование свойства ТаблицаСвойств = соответствие с ключом (разные типы свойств) и со значением свойства варианты ошибки: 1. Ошибка потому что нельзя хранить ПланыВидовХарактеристик.СвойстваОбъектов[Объект] 2. Ошибка потому что в ТаблицаСвойств должна содержать ключ одного типа. 3. Ещё чтото? склоняюсь к первому. но уточнения не вижу в описании. там написано ключ типа "Произвольный". |
|||
12
hhhh
15.10.10
✎
16:02
|
(11) вот это
ппп = ПланыВидовХарактеристик.СвойстваОбъектов[Объект]; - редкий бред. |
|||
13
Midaw
15.10.10
✎
16:04
|
(12) тебе ппп не понравилось? оно для отладки, чтоб выяснить где именно ошибка. а остальное вроде нормально, хоть и не моё (с). )))
|
|||
14
НЕА123
15.10.10
✎
16:11
|
(11)
>ТаблицаСвойств = соответствие с ключом (разные типы свойств) и со значением свойства врешь. |
|||
15
hhhh
15.10.10
✎
16:11
|
(13) нет, мне другое не понравилось: ПланыВидовХарактеристик. Ведь все знают, Что Объекты - это элементы спавочников.
|
|||
16
НЕА123
15.10.10
✎
16:12
|
(12)
вроде нормально, если есть предопределенный. |
|||
17
hhhh
15.10.10
✎
16:17
|
(16) да. Я смотрел это в привязке к (0), а это похоже совсем другая задача.
|
|||
18
НЕА123
15.10.10
✎
16:19
|
(17)
офф. Объект неявно в строку преобразовывается |
|||
19
Midaw
15.10.10
✎
16:40
|
(17) не задача таже. только я соответствие пристроил без переименования всего и вся. кода много. таблицасвойств это как раз соответствияСвойств отдельного элемента.
|
|||
20
Midaw
15.10.10
✎
16:42
|
а объект это потому что в процедуру передается всё что угодно, а там по типам распределяется. в моем случае ппп вроде равен тому что нужно, сча проверю чтоб там неопределено не встретилось )))
|
|||
21
Midaw
15.10.10
✎
17:35
|
всё, разобрался. код заломал малех )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |