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

Тема в разделе "1C и всё что с ней связано", создана пользователем KiR, 12 мар 2009.

  1. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А как выгружал ?
    Кстати, похоже, вопрос идет о ценных бумагах ? Лет пять назад писал я для биржи программу "Учет ценных бумаг". Если интересно, могу кинуть МД-шник
     
  3. Zab

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    вывод: или ты не правильно пишешь в ТЗ или неправильно читаешь... отладчик в руки и проверять. А когда появятся более конкретные вопросы, то пости их сюда с парой строчек кода в придачу.
     
  4. vitfil

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    KiR
    Поиск по каким критериям? "НайтиПоРеквизиту" не прокатывает? А запрос?
    Вы представляете себе, как происходит поиск в неиндексированной ТЗ? Тот же самый цикл...
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

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

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    сзЦБ.ЦБ = сЦБ.ТекущийЭлемент()
    должно спасти отца русской демократии
     
  7. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    и верно. огромное спасибо! а по оптимизации есть ли предложения или я нормальным путем следую?
     
  8. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    не тот случай - что тут оптимизировать ? тупо перебрал и вставил

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    не, пасиб. конфы и так в принцыпе отвечают нужным требованиям. что не отвечает - дописывается. как сейчас - закачка сделок... плюсик поставлю как тока подойдет срок)
     
  10. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    А то поглядел бы - жалко, продукт без движения лежит, хотя в свое время бабки за него заплатили сумасшедшие - 2 штуки аж
     
  11. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    СТР перед началом поиска обнулить не забуть, а то он у тебя только в предыдущей найденой строчке будет.
     
  13. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Блин. Точно. совсем склероз замучал)
     
Загрузка...

Поделиться этой страницей