8.х Быстро работающая выборка (html в хранилище)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем andrenko, 28 июн 2010.

  1. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Сижу вот, ломаю голову...
    Имеется справочник, в нем реквизит хранилище и в нем html документ. Как выбрать необходимые элементы справочника по данному реквизиту не перебирая все элементы справочника?
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    При данной постановке задачи - без перебора никак не обойтись. Связано это с тем, что средствами 1С возможно только использование метода "Получить()" для хранилища значения. И только получив эти данные можно в них осуществлять поиск. Что равносильно переписыванию всего объема хранимых документов на компьютер пользователя.

    Но при доработке - можно. Например можно было бы сделать строковый реквизит, перебрать все документы выбрав из них только текст поместить полученный текст в данный реквизит. В дальнейшем осуществлять поиск по этому реквизиту а при нахождении нужной записи - выдавать документ из хранилища значения.

    У меня есть подобная базка - работает с doc и rtf документами, храня их текстовое содержимое в строке регистра. Проблем в связи с этой технологией две: От слишком большого объема и количества записей 1Ске начинает "срывать крышу"(вылеты с "ошибкой формата потока" при том, что ТИИ ничего не показывает) и второе - если в документах есть изображения, таблицы, OLE объекты - конвертировать их в текст затруднительно.
  3. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    а почему именно в регистре?
    Хорошо, а если убрать теги засунуть все в переменную строку с неограниченной длинной. Как при этом пользоваться запросом?
  4. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Регистр - мое личное предпочтение. Нет предопределенных полей вроде Код, Родитель, ПометкаУдаления и т.п. которые мне не требуются при хранении документов. Сильной принципиальной разницы тут нет.

    Теги можно и не убирать. Можно банально хранить сам хтлм документ в строке неограниченной длинны.

    Что же касается запроса, то он достаточно прост:

    Код:
    Запрос.Текст = "ВЫБРАТЬ 
    |  *
    |ИЗ
    |  МойРегистрИЛИМойСправочник 
    |ГДЕ 
    |  Содержимое ПОДОБНО &КлючевоеСлово";
    Запрос.УстановитьПараметр("КлючевоеСлово","%"+КлючевоеСлово+"%");
    
    
  5. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    а что значит "%" ?
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Любые символы
  7. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Спасибо!
  8. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    кстати, а если реквизит не индексируется, то будет ли запрос адекватно работать?
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Он в любом случае по лайку будет работать полный перебором. Т.е самым медленным способом.

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