![]() |
|
сравнение номенклатуры в двух Таблицах значений | ☑ | ||
---|---|---|---|---|
0
ksenod
21.06.19
✎
13:41
|
кусок кода
Если (СтрСтараяТЗВнеш.Номенклатура = СтрСтараяТЗВнут.Номенклатура) Тогда Отладчиком вижу что там лежит одно и то же, но сравнение дает ЛОЖЬ, в чем подвох и как их правильно сравнивать? |
|||
1
palsergeich
21.06.19
✎
13:43
|
Если ссылочные типы, то сравни так
Строка(СтрСтараяТЗВнеш.Номенклатура.УникальныйИдентификатор()) = Строка9СтрСтараяТЗВнут.Номенклатура.УникальныйИдентификатор()) Если строка - проверь невидимые символы |
|||
2
1Сергей
21.06.19
✎
13:43
|
Типы какие у Номенклатуры?
|
|||
3
lxs
21.06.19
✎
13:44
|
(0) Больше кода давай, то, что ты тут показал - херня полная
|
|||
4
Timon1405
21.06.19
✎
13:44
|
Добавь в код и посмотри что пишет
Сообщить(""+СтрСтараяТЗВнеш.Номенклатура+" *** "+ТипЗнч(СтрСтараяТЗВнеш.Номенклатура)); Сообщить(""+СтрСтараяТЗВнут.Номенклатура+" *** "+ТипЗнч(СтрСтараяТЗВнут.Номенклатура)); |
|||
5
palsergeich
21.06.19
✎
13:47
|
(4) Как вариант тоже, бывает и такое)
|
|||
6
ksenod
21.06.19
✎
13:52
|
(1) Спасибо работает, можете рассказать почему так?
|
|||
7
ksenod
21.06.19
✎
13:53
|
(2) СправочникСсылка (3) Уже ответили.
|
|||
8
palsergeich
21.06.19
✎
13:55
|
(6) Странно, это всего лишь должно было облегчить диагностику, там ссылка на элемент приводилась к строке, с точки зрения операции действия равнозначные, что сравнивать ссылку, что представление ее GUID.
Я просто думал на то, что есть абсолютные дубли элементов, такое бывает при корявых обменах, и тогда доказать, что элементы в БД действительно разные можно только по GUID |
|||
9
ksenod
21.06.19
✎
13:55
|
(1) Сравнивал выгруженные таблицы реализаций товаров и услуг(документ из бух3.0)
|
|||
10
lxs
21.06.19
✎
13:55
|
он по COM получал таблицу и сравнивал COMссылку с внутренней ссылкой.
|
|||
11
palsergeich
21.06.19
✎
13:56
|
(10) А тогда все ясно
В таком случае сравнение по GUID рулит |
|||
12
ksenod
21.06.19
✎
13:58
|
(10) Функция получающая на вход 2 тз и ищущая одинаковую номенклатуру в этих двух тз.
|
|||
13
ksenod
21.06.19
✎
14:01
|
(10) Можете подсказать где прочитать про это? вот мой псевдокод без мешуры
Документ1=ССылкаНаДок.ПолучитьОбъект(); ВыборкаДетальныеЗаписи = ССылкаНаДок.Товары.Выгрузить(); Документ2=ССылкаНаДок.ПолучитьОбъект(); ВыборкаДетальныеЗаписи = ССылкаНаДок.Товары.Выгрузить(); Потом цикл в цикле по строкам документа сравниваю номенклатуру, почему простое сравнение без GUID не справилось? |
|||
14
1Сергей
21.06.19
✎
14:03
|
(10) как ты это протелепатировал?
|
|||
15
lxs
21.06.19
✎
14:04
|
(14) Интуиция - способность головы чуять жопой)
|
|||
16
Serg_1960
21.06.19
✎
14:06
|
(14) +1
Да, действительно откуда инсайд. Не уж то только глядя на "ТЗВнеш"и "ТЗВнут"? |
|||
17
ksenod
21.06.19
✎
14:09
|
Мне серьёзно интересно, можете рассказать где можно прочитать про эти сравнения, что именно он сравнивает когда я делаю как написал выше, какие ссылки попадают в сравнение? Буду благодарен за любую ссылку на лекцию-документацию.
|
|||
18
lxs
21.06.19
✎
14:10
|
(13) Потому что не сравнивают com-ссылки
|
|||
19
ksenod
21.06.19
✎
14:14
|
(18) Но я вроде бы не использовал com ссылки, если я например в 1 документе создам 2 строки с одинак номенклатурой и сравню из как в (0) то получу так же ложь. Или я по дефолту использую com в конструкции типа ССылкаНаДок.Товары.Выгрузить();
|
|||
20
lxs
21.06.19
✎
14:14
|
(19) ССылкаНаДок - это что?
|
|||
21
ksenod
21.06.19
✎
14:15
|
(20) ДокументСсылка.РеализацияТоваровУслуг
|
|||
22
lxs
21.06.19
✎
14:16
|
(21) ДокументСсылка - это что?
|
|||
23
lxs
21.06.19
✎
14:16
|
тьфу))))))))
|
|||
24
lxs
21.06.19
✎
14:17
|
Покажи инициализацию ССылкаНаДок
|
|||
25
Йохохо
21.06.19
✎
14:17
|
(23)(15) гвинпин
|
|||
26
ksenod
21.06.19
✎
14:20
|
(24) На форме её выбираю, это её реквизит.
|
|||
27
1Сергей
21.06.19
✎
14:27
|
(26) всё из тебя клещами доставать надо. нормально рассказывай что с чем сравниваешь и откуда
|
|||
28
ksenod
21.06.19
✎
14:29
|
(27)
Документ=ССылкаНаДок.ПолучитьОбъект(); ВыборкаДетальныеЗаписи = ССылкаНаДок.Товары.Выгрузить(); НормализованнаяТЗ = ВыборкаДетальныеЗаписи.СкопироватьКолонки(); Для Каждого СтрСтараяТЗВнеш Из ВыборкаДетальныеЗаписи Цикл Сч = СтрСтараяТЗВнеш.НомерСтроки+1; Пока Сч < ВыборкаДетальныеЗаписи.Количество() Цикл СтрСтараяТЗВнут = ВыборкаДетальныеЗаписи[Сч]; Сч=Сч+1; Если (СтрСтараяТЗВнеш.Номенклатура.УникальныйИдентификатор() = СтрСтараяТЗВнут.Номенклатура.УникальныйИдентификатор()) Тогда Вот кусок кода, ССылкаНаДок реквизит с формы, там ручками выбирается документ, хочу склеить строки с одинаковой номенклатурой. |
|||
29
ksenod
21.06.19
✎
14:32
|
(27) бп3.0 без без доработок
|
|||
30
1Сергей
21.06.19
✎
14:35
|
(28) в запросы не умеешь, да?
|
|||
31
ksenod
21.06.19
✎
14:44
|
(30) Умею, но зачем тут? Вопрос же не в этом был. Ес
|
|||
32
hhhh
21.06.19
✎
15:27
|
(31) уникальные идентификаторы точно разные, это не обсуждается. Нельзя сравнивать
Если (СтрСтараяТЗВнеш.Номенклатура.УникальныйИдентификатор() = СтрСтараяТЗВнут.Номенклатура.УникальныйИдентификатор()) Тогда сравнивай строки. |
|||
33
ksenod
22.06.19
✎
11:35
|
(32) Но строки разные, интересует именно равенство номенклатур, и с этим сравнением скрипт отработал так как я от него ожидал.
|
|||
34
Chameleon1980
22.06.19
✎
15:52
|
(0) может у тебя в одном случае ссылка, а в другом объект?
что-то часто у тебя получить объект в смеси с "сравнение ссылок" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |