• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы KiR
  • Дата начала
K

KiR

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

vbs

А как выгружал ?
Кстати, похоже, вопрос идет о ценных бумагах ? Лет пять назад писал я для биржи программу "Учет ценных бумаг". Если интересно, могу кинуть МД-шник
 
Z

Zab

в момент заполнения ТЗ вроде как все нормально, но потом при Получении значения колонка ЦБ ссылки на объект не имеет
вывод: или ты не правильно пишешь в ТЗ или неправильно читаешь... отладчик в руки и проверять. А когда появятся более конкретные вопросы, то пости их сюда с парой строчек кода в придачу.
 
V

vitfil

KiR
Поиск по каким критериям? "НайтиПоРеквизиту" не прокатывает? А запрос?
Вы представляете себе, как происходит поиск в неиндексированной ТЗ? Тот же самый цикл...
 
K

KiR

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

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

vbs

сзЦБ.ЦБ = сЦБ.ТекущийЭлемент()
должно спасти отца русской демократии
 
K

KiR

и верно. огромное спасибо! а по оптимизации есть ли предложения или я нормальным путем следую?
 
V

vbs

не тот случай - что тут оптимизировать ? тупо перебрал и вставил

а про ценные бумаги не интересно ?
 
K

KiR

не тот случай - что тут оптимизировать ? тупо перебрал и вставил

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

vbs

А то поглядел бы - жалко, продукт без движения лежит, хотя в свое время бабки за него заплатили сумасшедшие - 2 штуки аж
 
K

KiR

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

puh14

СТР перед началом поиска обнулить не забуть, а то он у тебя только в предыдущей найденой строчке будет.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!