• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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

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