8.х Тригонометрические функции в запросе

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Ludmillka, 11 мар 2014.

  1. TopicStarter Overlay
    Ludmillka
    Offline

    Ludmillka Опытный в 1С

    Регистрация:
    13 сен 2013
    Сообщения:
    159
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте, стоит следующая задача: Найти всех контрагентов на определенном расстоянии от только что выбираемого контрагента по GPS координатам.

    Изначально хотела отобрать всех запросом, расстояние считается вот по такой формуле
    Код:
        Lat1=54.1737430;
        Lon1=37.6150670;
    
        Lat2= 54.1751150;
        Lon2= 37.6138730;
      
    Расстояние=3958.75 * acos(  sin(Lat1/57.2958) * sin(Lat2/57.2958) + cos(Lat1/57.2958) * cos(Lat2/57.2958) * cos(Lon2/57.2958 - Lon1/57.2958))*1609.344;
    
    Но в запросе нет тригонометрических функций, может кто-нибудь сталкивался с такой проблемой? Как выходили, может в ряд складывать?
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.745
    Симпатии:
    509
    Баллы:
    204
    Я пользовался сторонними ресурсами по расчету расстояний. Отправлял GPS координаты, в ответ получал расстояние. В инете навалом таких сервисов.
  3. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    Пишите функцию, которая обработает ваши данные. Запросом вытаскивайте просто нужную информацию.
  4. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    может чего недопоняла, а почему бы вам запросом не получить координаты, затем в цикле произвести выисления?
  5. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
  6. TopicStarter Overlay
    Ludmillka
    Offline

    Ludmillka Опытный в 1С

    Регистрация:
    13 сен 2013
    Сообщения:
    159
    Симпатии:
    0
    Баллы:
    26
    Надо обрабатывать данные off-лайн так сказать, должно работать на компах у которых нет доступа к интернету
  7. TopicStarter Overlay
    Ludmillka
    Offline

    Ludmillka Опытный в 1С

    Регистрация:
    13 сен 2013
    Сообщения:
    159
    Симпатии:
    0
    Баллы:
    26
    Не поняла что вы имеете в виду, мне надо вытащить в запросе адреса расстояния до которых меньше либо равны нужному мне, т.е мне надо их все-время пересчитывать.
    А получать запросам адреса, а потом в цикле считать 23 000 адреса как-то долго
  8. TopicStarter Overlay
    Ludmillka
    Offline

    Ludmillka Опытный в 1С

    Регистрация:
    13 сен 2013
    Сообщения:
    159
    Симпатии:
    0
    Баллы:
    26
    К сожалению версия платформы 8.2:(
  9. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.745
    Симпатии:
    509
    Баллы:
    204
    Вот для этого и есть алгоритмы поиска кратчайшего пути в дереве...
  10. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.979
    Симпатии:
    397
    Баллы:
    104
    23000 это не много. Много это 500000. Как часто нужно будет делать подобную обработку?
  11. TopicStarter Overlay
    Ludmillka
    Offline

    Ludmillka Опытный в 1С

    Регистрация:
    13 сен 2013
    Сообщения:
    159
    Симпатии:
    0
    Баллы:
    26
    раз по 30 в день
  12. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    ? Количество сочетаний посчитай.
    Upd:
    nbIpKuH_BaH9I, извиняюсь.
    Тут я думаю был не прав, количество сочетаний - не при чем.


    Другое дело, что Ludmillka, вам действительно каждый раз при выборе контрагента именно 23000 координат надо обсчитывать? Что это за координаты?
    Можно предварительно ведь отобрать например по адресному классификатору, ну не знаю, по региону например.
    Последнее редактирование: 11 мар 2014
  13. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.745
    Симпатии:
    509
    Баллы:
    204
    Людмила, вы читаете вообще что вам пишут ???
  14. TopicStarter Overlay
    Ludmillka
    Offline

    Ludmillka Опытный в 1С

    Регистрация:
    13 сен 2013
    Сообщения:
    159
    Симпатии:
    0
    Баллы:
    26
    Наверно это действительно выход сделать как-то дополнительный отбор, прежде чем производить расчет расстояния. Я попробую, спасибо.
  15. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ludmillka хотите еще вариант: заводите РС, два измерения Контрагент1, Контрагент2, Ресурс - Расстояние. И предварительно заполняете его расстояниями, которые просчитываете либо регламентным заданием, либо при создании контрагента.

    Ну а данные в запросе уже берете из этого регистра.
    Ludmillka нравится это.
  16. TopicStarter Overlay
    Ludmillka
    Offline

    Ludmillka Опытный в 1С

    Регистрация:
    13 сен 2013
    Сообщения:
    159
    Симпатии:
    0
    Баллы:
    26
    Да, читаю, ваше предложение с деревом мне не понятно, у есть просто много адресов с широтой и долготой, причем тут дерево не понимаю.
  17. TopicStarter Overlay
    Ludmillka
    Offline

    Ludmillka Опытный в 1С

    Регистрация:
    13 сен 2013
    Сообщения:
    159
    Симпатии:
    0
    Баллы:
    26
    Спасибо за идею!!!
    Но ведь он будет просто огромный!!! И как думаете, много времени уйдет на его заполнение?
  18. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну да. около 265 млн. записей должно получиться.
    Не знаю сколько времени уйдет, там то по сути функция не особо сложная, просто количество записей нормальное. Но ведь полностью заполнить его - это один раз надо будет. Потом просто для новых контрагентов рассчитывать по мере их создания, это ведь намного быстрее.
  19. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    1. Дерево и кратчайший путь - это несколько алгоритмов оптимизации решения вашей задачи (посмотрите на досуге, может заинтерисует)
    2. Заполнить один раз или считать каждй раз - как вы думаете что быстрее?
    3. Ну а на счет размерности - если избежать избыточности информации, то не так и много занимвть будет (относительно)
  20. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.745
    Симпатии:
    509
    Баллы:
    204
    Расстояние может быть разным, если использовать разные виды транспорта.

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