8.х Функция пользователя в запросе

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

  1. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    Платформа 8.2.

    В справочнике есть текстовый реквизит содержащий метку состоящую из символьной и числовой частей. Необходимо отсортировать данные по этой метке с учетом только числовой части. Надеялся найти способ как то использовать в работе запроса для выделения числовой части определенную в модуле обработки функцию, но похоже такое не возможно. По моему остается только 2 варианта:

    1. завести в справочнике 2 отдельных реквизита на каждую часть метки, и разделять части метки при заполнении элемента справочника:
    2. выгрузить выборку запроса из справочника в ТЗ, добавить туда колонку, обработать ТЗ с выделением числовой части из метки и заполнением ее в добавленную колонку, а после отсортировать ТЗ по этой колонке.
    Вопрос: возможно ли все таки использовать внешне определенные функции в теле запроса?
  2. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.987
    Симпатии:
    398
    Баллы:
    104
    Запрос - это просто текстовая инструкция к SQL. Его, как и любую строку, можно собрать обычной конкатенацией. Т.е. сложением.
  3. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    2 nbIpKuH_BaH9I
    речь идет не о использовании результата функции как параметра, определенного до выполнения запроса, а об использовании самой функции в выполнении запроса
  4. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    То есть вы хотите вызывать функцию из запроса? Вроде нельзя. Кроме тех что поддерживает сам язык запросов.
  5. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    еще раз повторюсь, сама выборка в данном случае интересна лишь как средство сортировки по определенным данным, т.е. по числовой части метки; метка похожа на номер документа с символьным классификатором с левой стороны, чтото подобное, но части имеют четкую единственную границу, перемешивания нет
    --- Объединение сообщений, 18 авг 2014 ---
    2 TODD22
    правильно; вот и я того же мнения, но гдето внутри червячек сомнения покоя не дает))
    --- Объединение сообщений, 18 авг 2014 ---
    в башке уже каша из языков и диалектов, поэтому чувствую, что где такое встречал
  6. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    1) Этот реквизит имеет фиксированную длину или нет?
    2) Часть реквизита, которая текстовая часть, имеет фиксированную длину или нет?
  7. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.987
    Симпатии:
    398
    Баллы:
    104
    Если честно, то я вообще не понял, что Вам нужно сделать. У Вас еще такой тон общения высокомерный, хотя вроде всего два сообщения написали. Числовая часть метки, что это вообще. Простыми словами можете описать задачу?
  8. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    http://infostart.ru/public/166006/ не оно?
    --- Объединение сообщений, 18 авг 2014 ---
    Ну а так ИМХО нужно разнести символьную часть и строковую в два реквизита. Работа со строкой вообще тормозная функция в 1С. Ну или лепить мега замороченные запросы, а потом ещё всю эту канитель обслуживать и поддерживать. Простота должна быть.... Тогда и работа в радость.
  9. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    2 nbIpKuH_BaH9I
    прошу меня простить, если я когото своим тоном оскорбил; я редко пишу, как правило пользуюсь своим умом
    2 shurikvz
    нет, не фиксированная, иначе я бы обошелся средствами языка запросов; в этом вся и фишка, граница между символьной и числовой частями может плавать (гру001120, ппзу4565, фас1002045454); а сортировка должна быть по данным числового типа, а не символьного; поэтому и задался вопросом использования функции, которая бы и выделила числовую часть как подстроку, и конвертировала в числовой тип
    --- Объединение сообщений, 18 авг 2014 ---
    2 TODD22
    как вариант; его я уже отметил в теле поста
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Это нужно все-равно получать выборку практически всех нужных и не нужных данных, только потом обрабатывать числовую часть, т.к. ПОДОБНО в запросе не прокатит.
    Кстати, в СКД можно использовать свои функции общих модулей, может в эту сторону прокопать ?
    antares нравится это.
  11. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Ну так я ваш вариант и прокоментировал. Что если есть задача обрабатывать и сортировать по разным частям наименование то правильным было бы заведение двух реквизитов. А тут или доп колонка или геморой с кодом. Я лично за доп колонку, я за простоту и прозрачность :)

    А вот постобработка уже не вариант если потом отборы надо будет делать то надо будет как выше написано отбирать большой массив. Его обрабатывать, а потом из него делать выборку.
  12. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    вот! наверное там и видел, спасибо)
  13. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    медленно будет. И с отчетами тяжелее.

    Проще второй реквизит. Его даже не обязательно делать доступным для редактирования, просто автоматически заполняете его ПередЗаписью() на основании вашего реквизита.
  14. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    2 shurikvz
    наверно так и сделаю; кстати, в случае использования СКД, нужно отразить в макете использование внешней функции, а потом использовать макет для получения выборки запроса через предпроцессор?
  15. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Не уверен что до конца понял, что вы хотели сказать, но насколько понял фразу - да.
  16. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    в любом случае СКД надо как то инициализировать, например через использование макета с сохраненной СКД, через предпроцессор; только он имеет метод выполнения запроса в СКД; я прав?
  17. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну все как обычно.
    Получаете макет с сохраненной схемой СКД, компонуете его - получаете макет СКД, инициализируете им процессор компоновки данных.
    antares нравится это.
  18. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    2 shurikvz
    спасибо)
  19. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.440
    Симпатии:
    374
    Баллы:
    104
    кхм, так при сортировке оно ведь сперва по текстовой а потом по числовой порядок выставляет?
    гру001120
    ппзу4565
    фас02045454
    фас100204
    фас1002045454
    фас102045454
    фас12045454
    фас2045454

    фас2045454
    фас12045454
    фас102045454
    фас1002045454
    фас100204
    фас02045454
    ппзу4565
    гру001120
  20. TopicStarter Overlay
    antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    в этом все и дело; меня бы в принципе устроила сортировка выборки элементов справочника, но поскольку реквизит строковый, то и сравнение там посимвольное ("M1"<"M11", но "M2">"M11"); а мне нужно числовое только по "числовой" части метки

    p.s.
    вобщем то все уже выяснили и тема может быть закрыта; а про СКД - тема его программного использования очень интересная, и достойная отдельного поста, если не целого раздела
    Последнее редактирование: 18 авг 2014

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