Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 След.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
nilske, почитайте правила подробнее, да и тему в целом сейчас вы нарушаете пункт 4.8, "многократного поднятия нет", вы не модератор для оценки действий пользователей и рекомендаций в стиле "когда появятся идеи по вашей проблеме, вам напишут, не нужно навязываться.", - желательно оставить при себе, т.к. подобных вопросов в теме не задавали.

Просьба модераторов почистить тему от оффтопа, и обратить внимание на данного пользователя.

По теме:
1) Про платную "техподдержку" ни слова от себя не увидел, а ваши фантазии не имеют ничего общего с реальностью.
2) Про объекты и характеристики - данная часть диалога не имеет отношения к теме, это лишь уточнение, что не туда смотрим т.к. мы не рассматриваем другие json методы (т.к. они не нужны), доберман предположил что мы ошиблись с методом, но нет - не ошиблись.

К участникам для которых сообщения не ради сообщения, а для развития темы и решения задач:
Как посмотреть какой выглядит полный запрос если через переменную и дебаг монитор он режется.
Как гипотеза что функция pvToByteArray искажает entityTypeId если не режет его, в целом метод рабочий до определенного количества символов.
Изменено: phelex - 25.10.2023 16:38:31
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
nilske, я предоставил полную информацию которой располагаю, если вы считаете, что какую то часть я не указал - просьба уточнить.
Про "Никому не интересно", я напомню что это сообщество раскрывающее возможности экселя, вы как и я практикуем свои навыки, делимся и получаем - это не форум работа где дали ТЗ и участники должны сделать, тут мы осваиваем определенные связки. Поэтому если у вас есть опыт и мысли по поводу почему может не работать - буду благодарен, если ваш опыт ограничен постами типо "мало описал, а выяснять остальное я не буду" - то спасибо за уделенное время вам в другой раздел.
Спасибо за понимание.  
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
Тему вверх, возможно кто то сможет подсказать еще.
Пока гипотеза что не влезает запрос или почему еще он может терять параметр entityTypeId.
Смотрю через дебагер переменную, она тоже как то подрезается, в debiug.print тоже запрос не входит.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
Цитата
написал:
А не этот ли  метод  надо использовать?
Этот метод для работы с объектом Продукт, но данный объект содержит не все нужны характеристики, а имеет ряд лишних.
Поэтому мы используем собственный объект построенный на Item. Поэтому все методы по работе с item.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
Не могу победить, как только вставляю файл B64, выдает ошибку что параметр entityTypeId не найден. как будто идет переполнение и начало запроса перетирается.  
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
nilske, как раз дошел до этого, да нужны причем как для параметра, так и для значения.
Код
PostData = "{""entityTypeId"":""148"", ""id"":""5311"", ""fields"":{""UFCRM_34_UID_TOV"":""666661""}}"
Вот такой запрос отрабатывает корректно для метода crm_item_add
Для процесса 148
Для карточки 5311
Для поля UFCRM_34_UID_TOV значение 666661
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
doober,
итак,
Код
Sub Send()

    Dim PostData As String, Content_Type As String, sUrl As String
    sUrl = "https://bitrix.site.ru/rest/632/key/crm.item.update"
    base64_encoded_file = EncodeFile("C:\tov174908.jpg")
    PostData = "{ entityTypeId: 148, id: 1537, ""fields"":{""UFCRM_34_FOTO"":[""1.jpg""," & _
    Chr(34) & base64_encoded_file & Chr(34) & " ]}}"
    Content_Type = "application/json"
    res = pvPostFile(sUrl, PostData, Content_Type)
    Debug.Print (res)
End Sub

Function pvPostFile(sUrl As String, PostData As String, Content_Type) As String
    With CreateObject("MSXML2.XMLHTTP.6.0")
        .Open "POST", sUrl, False
        .setRequestHeader "Content-Type", Content_Type
        .Send pvToByteArray(PostData) 'Здесь надо попробовать оба варианта
        ' .Send PostData
        pvPostFile = .responseText
    End With
End Function

Private Function pvToByteArray(sText As String) As Byte()
    pvToByteArray = StrConv(sText, vbFromUnicode)
End Function
Получил ошибку: {"error":100,"error_description":"Could not find value for parameter {entityTypeId}"}

Но это говорит о том что сам запрос работает. Второй вариант: .Send PostData - ошибка такая же.

Не понимаю как обернуть запрос...
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
doober, пока не очень понял, а если есть еще параметры.
Т.е. даже для добавления файла важно передавать параметры, например entityTypeId где значение цифра, например 147.
Для операции update нужен еще параметр id, например 1437

https://dev.1c-bitrix.ru/rest_help/crm/dynamic/methodscrmitem/crm_item_add.php

crm.item.update({entityTypeId: number, id: number, fields: {})

Т.е. это
Код
PostData = "{""fields"":{""ufCrm1617027453943"":[""myfile.pdf""," & _
               Chr(34) & base64_encoded_file & Chr(34) & " ]}}"
Должно быть
Код
PostData = "{ entityTypeId: 147, id: 1437" & _
""fields"":{""ufCrm1617027453943"":[""myfile.pdf""," & _
Chr(34) & base64_encoded_file & Chr(34) & " ]}}"
Но почему мы где то экранируем через "", а где то через Chr(34)
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
doober, благодарю.

Попробую использовать, отпишусь.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
testuser, это понятно,
я использую
Код
Function httpSend(url As String) As String    Set httpRequest = CreateObject("MSXML2.XMLHTTP") 'Msxml2.XMLHTTP.6.0
    Debug.Print ("POST send: " & url)
    httpRequest.Open "POST", url, False
    httpRequest.Send
    httpSend = httpRequest.responseText
End Function
и в url использую файл. Реакции тоже нет.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
Цитата
написал:
Там же вроде написано "GET и POST"
на POST тоже ругается.

А как вот такую структуру отправить из макроса
{    "fields": {
       "ufCrm1617027453943": [
            "myfile.pdf",
            "...base64_encoded_file_content..."
       ]
   }
}
невозможное делаем сразу, чудо - требует небольшой подготовки.
Многострочный GET массив или как VBA общаться с Bitrix API, Делюсь как интегрировать Bitrix с VBA через вебхуки, и ищу ответ как использовать еще одно поле.
 
Друзья, приветствую.
Уже не знаю где искать ответ, но тут всегда совместно получалось решить задачу.
Использую VBA для работы с REST API Битрикс. Простые запросы с легкостью отправляю таким макросом
https://bitrix.site.ru/rest/632/key/crm.item.update?id=1537&fields[UFCRM_34_FOTO]=123
И с большим количеством полей проблем нет.
Использую простую функцию для отправки.
Код
Function httpSend(url As String) As String
    Set httpRequest = CreateObject("MSXML2.XMLHTTP") 'Msxml2.XMLHTTP.6.0
    Debug.Print ("GET send: " & url)
    httpRequest.Open "GET", url, False
    httpRequest.Send
    httpSend = httpRequest.responseText
End Function
и все прекрасно срабатывает, для длинных текстов использую конвертер в URL формат
Код
Public Function RStURL(ByVal txt As String) As String
    For i = 1 To Len(txt)
        l = Mid(txt, i, 1)
        Select Case AscW(l)
            Case Is > 4095: T = "%" & Hex(AscW(l) \ 64 \ 64 + 224) & "%" & Hex(AscW(l) \ 64) & "%" & Hex(8 * 16 + AscW(l) Mod 64)
            Case Is > 127: T = "%" & Hex(AscW(l) \ 64 + 192) & "%" & Hex(8 * 16 + AscW(l) Mod 64)
            Case 32: T = "%20"
            Case 43: T = "%2b"
            Case 47: T = "%2F"
            Case Else: T = l
        End Select
        RStURL = RStURL & T
    Next
End Function
Теперь захотел прикладывать еще файлы, а они принимаются только в формате Base64, но и это не проблема есть готовая функция для конвертации
Код
Public Function EncodeFile(strPicPath As String) As String
    Const adTypeBinary = 1          ' Binary file is encoded

    ' Variables for encoding
    Dim objXML
    Dim objDocElem

    ' Variable for reading binary picture
    Dim objStream

    ' Open data stream from picture
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Type = adTypeBinary
    objStream.Open
    objStream.LoadFromFile (strPicPath)

    ' Create XML Document object and root node
    ' that will contain the data
    Set objXML = CreateObject("MSXml2.DOMDocument")
    Set objDocElem = objXML.createElement("Base64Data")
    objDocElem.DataType = "bin.base64"

    ' Set binary value
    objDocElem.nodeTypedValue = objStream.Read()

    ' Get base64 value
    EncodeFile = objDocElem.Text

    ' Clean all
    Set objXML = Nothing
    Set objDocElem = Nothing
    Set objStream = Nothing

End Function
А вот дальше передать необходимо двумя параметрами одного поля (документация)
выглядит этот get вот так (это к вопросу 2)
Код
{
    "fields": {
        "ufCrm1617027453943": [
             "myfile.pdf", 
             "...base64_encoded_file_content..."
        ]
    }
}
Вроде как этого можно достигнуть вот таким вызовом
https://bitrix.site.ru/rest/632/key/crm.item.update?id=1537&fields[UFCRM_34_FOTO]=['myfile.pdf']&fields[UFCRM_34_FOTO]=['...base64_encoded_file_content...']

Но в результате получаю ошибку "Сбой скачивания указанного ресурса" Run-time error '-2146697208 (800c0008)':
Если заменить реальную строчку base64_encoded_file_content на "ххх" например, все отрабатывает, но файл понятно не открывается и весит 2б

Длинна символьного URL запроса составляет: 161 527 символов - и есть ощущение, что эта ошибка связана с каким то ограничением MSXML2.XMLHTTP.
Уважаемые эксперты, знаете ли вы:
1) Есть ли ограничения по количеству символов GET запроса?
2) Как в экселе можно передать запрос как GET запрос выше из VBA? - не понимаю как его оформить в VBA.

Заранее благодарен за помощь.
Андрей VG, Doober, Msi2102, Дмитрий(The_Prist) Щербаков, очень надеюсь на вашш опыт и помощь :)  
невозможное делаем сразу, чудо - требует небольшой подготовки.
Повреждение файла Excel в области VBA, Стал вылетать только один файл
 
Доп информация: при попытке экспортировать модуль, говорит модуль не найден.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Повреждение файла Excel в области VBA, Стал вылетать только один файл
 
Друзья, привет, впервые столкнулся с таким странным поведением эксель, может кто подскажет куда копать.
Хронология:
1) Был файл, работал обновлял по вебхукам таблицы, макрос обновлял все связи собирал таблички и отправлял новый файл по почте, все работало стабильно
2) Неожиданно стал выдавать ошибку "нет такого макроса или макросы отключены"
3) Открываю файл, пытаюсь запустить руками, но все окна с кодом белые, не кликаются, не меняется масштаб. Вся рабочая область как зависла.
4) Из раздела разработчик если нажать "Макросы" Excel вылетает
5) При попытке пересохранить файл "Сохранить как" Excel вылетает
6) Проверял на разных ПК - картина идентична, с другими файлами работает стабильно. Табличная часть (листы и PQ) работают тоже стабильно, именно VBA часть отлетела.
Яндекс ничего внятного не дал, пакеты VBA включены, макросы разрешены. Не понимаю куда копать.
Вопрос: Почему это могло случиться и что с этим делать? Файл приложить не могу т.к. содержит ключи доступа к базе.  
Изменено: phelex - 01.09.2023 12:04:46
невозможное делаем сразу, чудо - требует небольшой подготовки.
Цикл и извлечение Power Query
 
te1n, спасибо получилось.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Цикл и извлечение Power Query
 
Друзья, привет.

Пытаюсь реализовать функцию получения списка из интернета по json. Есть проблемка что полный код дать не могу т.к. тестовой машины нет, но может наведете меня на ошибку. Постараюсь рассказать по шагам.
Код
let
    Url = "https://сайт.ru/rest/доступ/ключ/tasks.task.list.json?filter[STATUS]=-1&start=",
    RecordsPerPage = 50,
    Source = Json.Document(Web.Contents(Url & "1")),
    TotalCount = Source[total],
    PagesCount = Number.RoundUp(TotalCount / RecordsPerPage),
    GetRecords = (start) =>
let
            PageJson = Json.Document(Web.Contents(Url & Text.From(start))),
            PageList = PageJson[result][tasks],
            ToTable = Table.FromRecords(PageList),
            DownloadedTable = Table.ExpandRecordColumn(ToTable, "responsible", {"name"}, {"name"}),
            ExpandedTable = Table.SelectColumns(DownloadedTable,{"id", "name"})
        in
            ExpandedTable,
    Pages = List.Skip(List.Generate(() => 1, each _ <= PagesCount, each _ + 1), 1),
    Records = List.Generate(() => GetRecords(1), each List.Count(_) > 0, each GetRecords(List.Last(List.LastN(Pages, 1)) * RecordsPerPage + 1)),
    Result = Table.Combine(Records)
in
    Result

Запрос выполняется до пункта Records, на нем выпадает ошибка
Цитата
Expression.Error: Не удается преобразовать значение типа Table в тип List.
Сведения:
   Value=Table
   Type=Type
Причем отдельно часть GetRecords выполняется прекрасно.А когда начинаю их собирать через цикл улетает с ошибкой, структуру приложил в скриншотах.
Уже голову сломал что не так и где я Table в тип List преобразую. Прошу помощи у экспертов. Заранее благодарен. Если что то важное не предоставил, просьба уточнить.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Итак, друзья.
Наконец дошли руки все свести, провел тест всех кодов на 11 тысячах точках и 49 полигонах.

Итого результаты:
Автор (название скрипта) / Время выполнения мс
Msi2102: 50,92578
doober: 69,62109
PinPol: Завис совсем
pt_in_polygon: 71,59375
chekPoly: 71,85156

Что касается точности, то только макрос от Msi2102 корректно распределил все точки.

Файл со всеми кодами прикладываю. Тему можно закрывать.
Код
Const myPi As Double = 3.14159265358979
Sub Макрос1()
    Dim rn1 As Range, rn2 As Range, rn3 As Range, arr1, arr2, arr3, arr4, arr5, a As Double, zn As Double, arc As Double
    Dim n As Integer, m As Integer, i As Integer
    arr1 = Worksheets("data").Range("B2:C" & Worksheets("data").Cells(Rows.Count, 2).End(xlUp).Row).Value 'диапазон точек
    ReDim arr5(1 To UBound(arr1), 1 To 1)
    arr2 = Worksheets("POLY").Range("A2:B" & Worksheets("POLY").Cells(Rows.Count, 1).End(xlUp).Row).Value 'диапазон полигонов
    For n = 1 To UBound(arr1)
        For m = 1 To UBound(arr2)
            a = 0
            arr3 = Split(Replace(Replace(arr2(m, 2), ",", "|"), ".", ","), " ")
            ReDim arr4(1 To UBound(arr3) + 1, 1 To 2)
            For i = 0 To UBound(arr3)
                arr4(i + 1, 1) = CDbl(Split(arr3(i), "|")(0)) - CDbl(Replace(arr1(n, 2), ".", ","))
                arr4(i + 1, 2) = CDbl(Split(arr3(i), "|")(1)) - CDbl(Replace(arr1(n, 1), ".", ","))
            Next
            For i = 1 To UBound(arr4) - 1
                zn = Sgn(arr4(i, 1) * arr4(i + 1, 2) - arr4(i + 1, 1) * arr4(i, 2))
                If zn = 0 Then
                    a = 360: Exit For
                Else
                    arc = (arr4(i, 1) * arr4(i + 1, 1) + arr4(i, 2) * arr4(i + 1, 2)) / (((arr4(i, 1) ^ 2 + arr4(i, 2) ^ 2) ^ 0.5) * ((arr4(i + 1, 1) ^ 2 + arr4(i + 1, 2) ^ 2) ^ 0.5))
                    a = a + (ArcCos(arc)) * 180 / myPi * zn
                End If
            Next
            If Format(Abs(a), "0") = 360 Then
                arr5(n, 1) = arr2(m, 1)
                Exit For
            ElseIf Format(Abs(a), "0") = 180 Then
                arr5(n, 1) = "На границе" & arr2(m, 1)
                Exit For
            End If
            arr5(n, 1) = "Вне территории"
        Next
    Next
    Worksheets("data").Range("D2").Resize(UBound(arr5), 1) = arr5
End Sub
 
Public Function ArcCos(ar As Double) As Double
    On Error Resume Next
        If ar = 1 Then
            ArcCos = 0
            Exit Function
        End If
        ArcCos = Atn(-ar / Sqr(-ar * ar + 1)) + 2 * Atn(1)
    On Error GoTo 0
End Function
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Msi2102, работает великолепно.
К выходным выложу обработку всех вариантов и скорость работы каждого.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Msi2102, он спотыкается об определенную точку, когда arc = 1.
Приложил версию с набором случайных точек (у меня для теста есть база 15к точек, но форум не пропускает размер) и какую то базу по районам Урала.
Изменено: phelex - 16.03.2023 10:31:12
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Msi2102, при acos = 1 выдает ошибку. Не очень понимаю как это появляется.
Изменено: phelex - 16.03.2023 09:44:32
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Msi2102, спасибо.
Вроде работает, перепишу под фиксированное определение диапазонов и проверю скорость и точность всех предложений. Тему не хороним, вернусь с обратной связью.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Друзья, привет. Дошли руки протестировать.
Все предложенные варианты выдают ошибку, понять не могу откуда берется "Более двух полигонов".
Может кто свежим взглядом посмотрит и подскажет где ошибся?
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
doober, отличное решение, на малой выборке работает отлично!

Не могу сообразить последний момент. По результату работы у меня есть массив, из этого массива нужно вставить только обработанный результат.
Как вставить только один столбец с результатом в таблицу. Идти циклом вставлять мне кажется будет долго, вставить через .Range("a2").Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr вставит все столбцы.

Крайний результат содержащий разные логики проверки во вложении, чем они отличаются не очень понял.
Изменено: phelex - 27.02.2023 09:43:33
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
БМВ, не очень понял почему будет так.

Итак, вроде дописал.
Включил 3 вроде разных метода перебора для определения вхождения в полигон
PinPol - как я понял он считает по крайним точкам
pt_in_polygon - как я понял он считает последовательные отрезки
chekPoly - тоже по крайним отрезкам.
Только я не понимаю, а с учетом что земля круглая этим методы учитывают искажение?

Пока не рабочая версия во вложении (говорит больше одного полигона).
В конце сделаю сравнение точности на большой базе.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Цитата
написал:
по тому что точность ограничена 15тью знаками.
Вроде формат Double это 8 байт и Положительные числа: от 4,94065645841247Е-324 до 1,79769313486232Е+308 согласно справке.

Цитата
написал:
Ну без вложенных циклов все равно не обойтись, а уж как они будут выглядеть - это другой вопрос.
Наверно иначе спрошу, меня даже больше смущают не вложенные циклы, а что я не знаю сколько будет полигонов, и для каждого сравнения точки с новым полигон, нужно или обрабатывать его заного (сроку в массив) или куда то сохранить получившийся массив (что предпочтительнее), а вот как сохранить массив чтобы к нему потом обратиться мыслей нет.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Немного переделал код, добавил замену мест X и Y.
Доделал функцию разбора на массив строки с координатами полигона (кстати это из формата kml такой получается).
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Цитата
написал:
phelex, Кроме как выяснить , принадлежит ли фигуре точка, других вариантов нет, ну разве что можно оптимизировать , отбрасывать не глядя области который однозначно не подходят, то есть имеют крайние границы, которые не содержат точку искомую, тем самым сокращая область поиска более детального. Питон или нет - это только язык и наличие готовых библиотек.
Я немного про другое.
У нас тройная вложимость циклов (Все точки, все полигоны, все точки в полигоне), может есть какое решение чтобы мы создали коллекцию полигонов (массивов координат).
Если не обрабатывать ошибку "входит в 2 и более полигона", то можно решить выходом из массива.

Еще интересно, почему то при конвертации текста в Double теряется один знак после запятой 0о
невозможное делаем сразу, чудо - требует небольшой подготовки.
Эффективный перебор всех координат в таблице1 по всем полигонам таблицы2, Есть набор точек координат, необходимо распределить их по городам исходя из полигонов на карте
 
Всем привет.
Возникла потребность рассортировать точки по разным локациям (локация это список координат точек формирующих фигуру на карте), коллеги утверждают что сделают это на питоне, а на эксель это будет проблематично. Но я абсолютно верю в эксель и начал решать задачу. Уже написал разбор координат в массив, реализовал функцию сравнения входит ли точка в полигон (спасибо этой теме). На этапе реализации основного блока я не придумал как проводить сравнение максимально быстро и эффективно. Базовая логика перебирать в массиве точек массив полигонов (которые каждый раз при обращении пересобирать из строки не хочется). Точек может быть много, да и областей огромное количество, хочется поделиться универсальным решением для всех (т.к. сам не нашел).

Пример файла (с набросками кода) во вложении, там есть 4 точки и 3 полиогна, если точка не входит ни в один полигон - указываем "Нет полигона", если входит в 2 и более "Ошибка" (но такой пример не зашил). В данный момент сам дописываю через нерациональный способ (но чтобы работало), но вдруг кто то придумает вариант интереснее.

Спасибо за внимание.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Выпадающий список с возможностью поиска внутри списка
 
,может вообще удалить if? Сейчас выглядит странно: Если ячейка пустая и Не пустая.
Тут должно быть "или", ну или вообще не должно быть условия т.к. вы охватываете все варианты и пусто и НЕпусто.
невозможное делаем сразу, чудо - требует небольшой подготовки.
Выпадающий список с возможностью поиска внутри списка
 
1) в поищите ответ в блоке select, там условие что ячейка пуста
2) у вас закреплена шапка, это вызывает проблему  
невозможное делаем сразу, чудо - требует небольшой подготовки.
Страницы: 1 2 3 4 5 6 7 След.
Наверх