1c7.7 хранение ссылок в тз

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#1
Нужно осуществить поиск ценной бумаги в справочнике. чтобы не делать такой поиск в цыкле решил выгрузить весь справочник в таблицу значений с 2мя колонками - ЦБ (должна храниться ссыкла) и Реквизит (один из реквизитов объекта в строчном виде, но нему и ищу). в момент заполнения ТЗ вроде как все нормально, но потом при Получении значения колонка ЦБ ссылки на объект не имеет - там она походу пустая становиться.
Объясните пожалуйста что я делаю неправильно. И как оптимальнее было бы организовать задачу? Спасибо!
 

vbs

Well-Known Member
18.02.2007
1 708
3
Санкт-Петербург
#2
А как выгружал ?
Кстати, похоже, вопрос идет о ценных бумагах ? Лет пять назад писал я для биржи программу "Учет ценных бумаг". Если интересно, могу кинуть МД-шник
 

Zab

Well-Known Member
07.08.2006
583
0
Менск
#3
в момент заполнения ТЗ вроде как все нормально, но потом при Получении значения колонка ЦБ ссылки на объект не имеет
вывод: или ты не правильно пишешь в ТЗ или неправильно читаешь... отладчик в руки и проверять. А когда появятся более конкретные вопросы, то пости их сюда с парой строчек кода в придачу.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
44
Минск
#4
KiR
Поиск по каким критериям? "НайтиПоРеквизиту" не прокатывает? А запрос?
Вы представляете себе, как происходит поиск в неиндексированной ТЗ? Тот же самый цикл...
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#5
Решил таки не делать поиск по реквизиту, ибо для этого в нескольких конфигурашках нужно ревизиту давать сортировку.
выгрузку делаю так:
Код:
сзЦБ = создатьОБъект("ТаблицаЗначений");
сзЦБ.НоваяКолонка("ЦБ");
сзЦБ.НоваяКолонка("Серия");
сЦБ = создатьОБъект("Справочник.ЦенныеБумаги");
сЦб.ВыбратьЭлементы();
Пока сЦБ.ПолучитьЭлемент() =1 Цикл
Если (ПустоеЗначение(сцб.СерияНомер) = 0) И (сцб.ПометкаУдаления() = 0) Тогда
сзЦБ.НоваяСтрока();
сзЦБ.ЦБ = сЦБ;
сзЦБ.Серия = СокрЛП(сЦБ.СерияНомер);
КонецЕсли;
КонецЦикла;
На момент заполнения вроде все ок если отладчиком смотреть.
Код:
Если сзЦБ.НайтиЗначение(СокрЛП(recordset.fields("StateCode").value),Стр,"Серия") <> 0 Тогда
ЦБ = сзЦБ.ПолучитьЗначение(Стр,"ЦБ"); 
КонецЕсли;
Так вот значение находится, но ссылки на ЦБ уже нет - т.е. возвращается как бы пустой объект типа справочник.ценныебумаги

Запростом не пробовал. в таблице значений около 200-300 строк. думал что так быстрее будет чем выполнять запрос для каждого значения...
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#7
и верно. огромное спасибо! а по оптимизации есть ли предложения или я нормальным путем следую?
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#9
не тот случай - что тут оптимизировать ? тупо перебрал и вставил

а про ценные бумаги не интересно ?
не, пасиб. конфы и так в принцыпе отвечают нужным требованиям. что не отвечает - дописывается. как сейчас - закачка сделок... плюсик поставлю как тока подойдет срок)
 

vbs

Well-Known Member
18.02.2007
1 708
3
Санкт-Петербург
#10
А то поглядел бы - жалко, продукт без движения лежит, хотя в свое время бабки за него заплатили сумасшедшие - 2 штуки аж
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#11
Вот блин прикол теперь. Не все значения из ТЗ находит... Вижу что такое значение есть, а он возвращает сзЦБ.НайтиЗначение(СокрЛП(recordset.fields("StateCode").value),Стр,"Серия") = 0
СокрЛП(recordset.fields("StateCode").value) пробовал даже заменять конкретным значением типа "1-02-12654-А" - результат тот же...
 

puh14

Well-Known Member
11.07.2008
1 412
0
НеРезиновая
#12
СТР перед началом поиска обнулить не забуть, а то он у тебя только в предыдущей найденой строчке будет.