8.х Как программно добавить пользовательскую функцию RegExp в СКД

Тема в разделе "Система компоновки данных (СКД)", создана пользователем SvetaS_Love, 16 янв 2017.

  1. TopicStarter Overlay
    SvetaS_Love
    Offline

    SvetaS_Love Опытный в 1С

    Регистрация:
    26 фев 2016
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    Есть потребность в нечетком поиске фрагментов слов по строке примечание во всех документах,
    ситуация есть запрос с функцией ПОДОБНО (LIKE), но необходимо все строки найденных документов СКД пропускать через RegExp согласно шаблону поиска (шаблон поиска каждый раз разный), как через пользовательскую функцию, уменьшая число отобранных документов. Помогите, пожалуйста, очень нужно.
    Заранее большое спасибо.
  2. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.156
    Симпатии:
    84
    Баллы:
    54
    А что делает процедура RegExp?
  3. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    554
    Баллы:
    204
    Это библиотека для использования регулярных выражений. Не знаю, каким боком ТС хочет ее прикрутить к 1С
  4. TopicStarter Overlay
    SvetaS_Love
    Offline

    SvetaS_Love Опытный в 1С

    Регистрация:
    26 фев 2016
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    объект RegExp предназначен для нечеткого поиска, ищет по шаблону. Это не процедура, это объект, но нужно его функцию поиска по шаблону использовать в СКД
    --- Объединение сообщений, 16 янв 2017 ---
    "программы на заказ" - денег нет
  5. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    554
    Баллы:
    204
    Вы как прикрутили эту библу ? Насколько знаю, она в исходниках предоставляется, которые подключаются к другим средам разработки с ООП
  6. ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    586
    Симпатии:
    58
    Баллы:
    54
    у меня в 7.7 работает в коде, после вот такой нехитрой комбинации: СоздатьОбъект("VBScript.RegExp") в 8.3 не использовал, в СКД даже не представляю как связать...
  7. TopicStarter Overlay
    SvetaS_Love
    Offline

    SvetaS_Love Опытный в 1С

    Регистрация:
    26 фев 2016
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    как "подключаются к другим средам разработки с ООП" это нормальный объект.
    Код:
    RegExp.MultiLine=MultiLine;
        RegExp.Global=Global;
        RegExp.IgnoreCase=IgnoreCase;
        RegExp.Pattern=Pattern; //что ищем
        Совпадения=RegExp.Execute(ЭлементыФормы.ПолеТекст.ПолучитьТекст());   //где ищем
        Результат.Очистить();
        Для Каждого Совпадение Из Совпадения Цикл
            НовСтр=Результат.Добавить();
            ЗаполнитьЗначенияСвойств(НовСтр,Совпадение);     //куда складываем
        КонецЦикла;
    
    --- Объединение сообщений, 16 янв 2017 ---
    вопрос был как связать с СКД?
  8. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.156
    Симпатии:
    84
    Баллы:
    54
    Щас нам Света с Любовью всё объяснит))). Светлана так вы уже получаете список значений с результатом и этот результат надо в СКД передать?
  9. TopicStarter Overlay
    SvetaS_Love
    Offline

    SvetaS_Love Опытный в 1С

    Регистрация:
    26 фев 2016
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    нет список значений идёт из другой темы из объектов подключения баз, тут нужно связать саму функцию поиска по шаблону. с СКД
    --- Объединение сообщений, 16 янв 2017 ---
    список значений идёт из 5-ти V82.COMConnector
  10. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.504
    Симпатии:
    334
    Баллы:
    104
    Какая то странная у вас задумка.

    Т.е. искать по строковому представлению документа, используя RegExp вы почему-то можете, а задать условие в запросе чтобы сразу отобрать нужные документы по реквизитам нет? Как так то?
    Если не понятно что я написал, спрошу на примере:
    Почему вы можете пропустить через RegExp список типа
    ------------
    Реализация 1
    Реализация 2
    Возврат 1
    Реализация 3
    Реализация 4
    Возврат 2
    ------------
    По условию Строка.match("/Возврат*/") (например, не важно)

    Но не можете сразу отобрать в запросе 1С ГДЕ Документ ССЫЛКА Возврат?
  11. TopicStarter Overlay
    SvetaS_Love
    Offline

    SvetaS_Love Опытный в 1С

    Регистрация:
    26 фев 2016
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    реквизит "комментарий" не является типом справочника, и может содержать названия записанные в произвольной форме, так как тип строка, вот по шаблону из этой строки и нужно выбрать подходящие слова или комбинация слов
  12. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.504
    Симпатии:
    334
    Баллы:
    104
    1-й вариант. Выполните компоновку в таблицу значений, пройдитесь по таблице с помощью RegExp, удалите ненужные строки. При необходимость далее опять передайте получившуюся таблицу в СКД и сформируйте отчет с оставшимися данными.

    2-й вариант. Напишите функцию в общем модуле, которая будет определять подходит ли эта строка комментария. В СКД используйте эту функцию из общего модуля.
  13. TopicStarter Overlay
    SvetaS_Love
    Offline

    SvetaS_Love Опытный в 1С

    Регистрация:
    26 фев 2016
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    [​IMG]
    --- Объединение сообщений, 16 янв 2017 ---
    что не так?
  14. TerANik
    Offline

    TerANik Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.156
    Симпатии:
    84
    Баллы:
    54
    функция должна быть в общем модуле , а не в модуле объекта.
  15. TopicStarter Overlay
    SvetaS_Love
    Offline

    SvetaS_Love Опытный в 1С

    Регистрация:
    26 фев 2016
    Сообщения:
    58
    Симпатии:
    0
    Баллы:
    26
    ЕСТЬ НАГЛЯДНЫЙ ПРИМЕР ОПИСАНИЯ ТАКОЙ ФУНКЦИИ?

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