Показаны сообщения с ярлыком АгентПлюс. Показать все сообщения
Показаны сообщения с ярлыком АгентПлюс. Показать все сообщения

понедельник, 31 октября 2016 г.

Форматы географических координат и их преобразования

Задача: В ПО Мобильная торговля А+ координаты хранятся в виде ГГММ.ММММ, необходимо преобразовать к формату хранения Яндекс/Google, вида ГГ.ГГГГГГ

Решение:
Хорошее описание здесь, в wiki еще одного поставщика решений для мобильной торговли.

Общие понятия о форматах координат
Единого стандарта записи нет, но существует множество вариантов, которые используются на практике. Среди них: 

  • DMS (градусы, минуты, секунды) — наиболее понятная для восприятия запись, в которой раздельно указываются градусы, минуты и секунды (последние обычно указываются с точностью до определенного знака). В этой записи чаще всего полушарие обозначается латинской буквой (N/S и W/E).
  • DD (градусы в десятичном виде) — наиболее простая в числовом выражении запись, в которой целая часть представляет градусы, а дробная (обычно 6 знаков) — все остальное. Полушария обозначаются знаком плюса или минуса (реже буквами). Такая запись менее наглядна, но зато удобна для хранения в информационных системах. Большинство бытовых GPS-устройств и картографических сервисов использует именно это формат.
  • DM, UTM, Geo-Tags и другие менее распространенные и экзотические форматы — используются в различных специализированных системах.

Формат координат в продуктах ST и А+
Как и "А+ Мобильная Торговля 2.0", в программах «ST Чикаго» и «ST Мобильная Торговля» географические координаты в БД хранятся в редко используемом сейчас формате
ГГММ.ММММ.
Где: 
ГГ — градусы; 
ММ.ММММ — минуты и десятитысячные доли минут.
Это одна из GPS-нотаций, иногда обозначаемая как GPS (Dec Min).

ПО фактически получает и использует для своих нужд «нормальный» десятичный формат (DD), в котором снимают данные большинство современных GPS-приемников (в т.ч. в смартфонах и планшетах). Однако в БД координаты записываются уже в формате ГГММ.ММММ .
В интерфейсах, как правило, используется наиболее наглядный формат DMS.

Историческая справка
Формат ГГММ.ММММ был унаследован продуктами А+ и ST от навигатора Garmin в начале 2000-х, когда КПК не имели собственных GPS-приемников.
Этот формат есть упрощенная запись формата ГГ°ММ.СС, рекомендуемый для использования в морском радиообмене. В настоящее время используется реже, чем «нормальный» десятичный формат.

Перевод между форматами
ГГММ.ММММ → ГГ.ГГГГГГ
Для перевода необходимо использовать формулу ГГ + (ММ.ММММ ÷ 60):

ГГ.ГГГГГГ → ГГММ.ММММ
Для перевода необходимо использовать формулу (ГГ × 100) + (0.ГГГГГГ × 60):

Пример для Excel:
В Microsoft® Excel можно использовать формулу: = ЦЕЛОЕ(A1)*100 + ОКРУГЛ((A1-ЦЕЛОЕ(A1))*60;4), где в ячейке A1 находится значение в формате ГГ.ГГГГГГ

Пример для 1С:

// ================================================================================================
// из формата А+ в формат яндекса/гугла (ГГММ.ММММ в ГГ.ГГГГГ)
Функция КонвертироватьКординатуИзАгентПлюс( _коорд )
 
 Градусы = Цел(_коорд / 100);
 Минуты = _коорд - Градусы * 100;
 
 Возврат Окр((Градусы+Минуты/60), 5);
 
КонецФункции


// ================================================================================================
// из формата яндекса/гугла в формат А+ (ГГ.ГГГГГ в ГГММ.ММММ)
Функция КонвертироватьКординатуВАгентПлюс( _коорд )
 
 возврат Цел(_коорд)*100 + Окр((_коорд - Цел(_коорд))*60, 4)
 
КонецФункции


среда, 18 февраля 2015 г.

Получение и использование нумерованных маркеров на он-лайн картах.

Дано:  Есть старые скрипты (например, Yandex API 1.1) для рисования он-лайн карт напрямую из 1С 7.7 (выполняют отображение торговых точек и маршрутов агентов на карте, скрипты шли в поставке демонстрационной конфигурации 1С 7.7 к ПО "АгентПлюс" примерно в 2012 году)

Требуется: Получить возможность нумерации серий объектов на карте, причем в разных цветах.
Сами скрипты менять не желательно (во всяком случае, на текущий момент). Иначе можно было бы воспользоваться рекомендациями Яндекс и Google, и генерировать параметры маркеров "на лету".
Текущая версия скриптов умеет только загружать в карту произвольные имеющиеся локальные иконки, так что задача намного упрощается - необходимо много-много готовых иконок, чтобы иметь возможность из загрузить в карту :)


Решение 1: Использовать имеющиеся наборы меток:
1. kml4earth - набор иконок для Google
2. https://sites.google.com/site/gmapsdevelopment/ - еще 1 набор стандартных иконок
3. https://code.google.com/p/google-maps-icons - старый проект, но наборы иконок доступны, в том числе и цифровые от 1 до 100, но не для всех цветов
4. http://mapicons.nicolasmollet.com - набор современных иконок, ссылки на другие ресурсы
5. Google map markers | CTAPbIu_MABP's BLOG - полезный блог, в том числе ссылки на большое количество маркеров, иконок и других элементов управления


Решение 2: Использовать генерацию изображений на метках:
Решение найдено здесь. Автор решения Thydzik (по ссылке - есть исходный код на PHP).
Вот что сообщает автор:
Theses markers are totally dynamic and you can create whatever balloon icon you want but you need to host some files on your server to make it work. Just change the URL like: thydzik.com/thydzikGoogleMap/markerlink.php?text=12&color=5680FC where 12 is the text and 5680fc is the hexadecimal color code. Please note that you can't hotlink from your personal "My Maps" (maps.google.com). It can be done in 2 ways : 
    1. Use Google Maps API so that dynamic icon generation can work 
    2. Save static icons, and host them your server

Т.е., посылаем на сервер подготовленную строку, обратно получаем PNG-файл с нужным текстом, сохраняем его и используем где угодно

Пример: Вернуть маркер с текстом 1 голубого цвета:

Результат: 
 


Стандартные цвета: красный: FC6355, : 55D7D7, желтый: FCF356, фиолетовый: 7D54FC, розовый: E14E9D, оранжевый: EF9D3F, черный: 000000, коричневый: 9E7151 
Подбирать цвета можно здесь: http://www.color-hex.com/

Еще примеры результатов: 






Чтобы закачать сразу большой диапазон иконок с нумерацией - используем DownloadMaster
1. Выполняем команду "Закачка - Добавить группу закачек"
2. Указываем модифицированный адрес:
где:
   ХХХХХХ - код выбранного цвета
   $ - подстановочный символ, указывающий, в какое место адреса надо вставить изменяющееся значение счётчика.
3. Указываем диапазон изменения счетчика, например, от 1 до 100
4. Стартует загрузки и получаем 100 файлов иконок с номерами.
5. По желанию, выполняем групповое переименование загруженных маркеров с помощью бесплатного FastStone Photo Resizer.


вторник, 19 мая 2009 г.

Как установить на КПК три знака после запятой в цене?

В тэге Ref_System есть константа GUID_SYSTEM_SUMPREC.

В качестве значения этой константы указывается число от 0 до 4, это число указывает количество знаков после запятой для вывода суммовых значений в КПК. Это значение так же автоматически учитывается при округлении при расчетах цен товаров и НДС. Чтобы включить режим отображения сумм с нужным количеством знаков после запятой нужно в программу выгрузить в файле выгрузки в тэге Ref_System значение новой константы GUID_SYSTEM_SUMPREC (идентификатор константы: 1CECF82E-8FE6-4FD2-BF34-5505293F25BB). В качестве значения константы указывается число от 0 до 4 - это количество знаков после запятой для суммовых значений."

Нет связи с А+ Сервером - что проверить?

Запускается ли Агент+ сервер на настольном компьютере?
Не блокируют ли его программы типа файерволов?
Виден ли компьютер из внешней сети, например командой ping.
Есть ли у КПК доступ в интернет?

Важно!!!
Путь к Агент+ папке обмена, а так же имя самой папки должны быть написаны латиницей.

Слетела база на КПК

Скорее всего была повреждена БД в КПК из-за нехватки памяти. Нужно было выйти из программы и удалить в КПК файл Base.sdf в папке установки программы (это файл базы данных). После освободить место в памяти КПК - удалить лишние файлы, фотографии, лишние программы.

Может быть, была сделана жесткая перезагрузка КПК, в результате чего региональные настройки КПК изменились. Нужно в КПК в контрольной панели (кнопка 'Пуск' или 'Start', затем меню 'Настройки' или 'Settings', в открывшемся окне во второй закладке выбрать иконку 'Regional settings' и в списке настроек выбрать 'Россия' или Russia).

После изменения региональных настроек в КПК нужно выйти из программы, удалить файл Base.sdf и заново загрузить данные в КПК."

Установка запрета продаж контрагенту

В файле выгрузки в тэге Ref_Clients есть параметр BlockSales (устаревшее название, новое название параметра - ClientStatus). Если значение этого параметра выставлено в 1, то клиент отображается в КПК красным цветом и на него нельзя оформить документ продажи.
В последнем обновлении программы есть возможность устанавливать запрет на проведение документа, если сумма свободного кредита клиента ниже суммы проводимого документа (точнее, разница между свободным кредитом и суммой документа превышает определенное значение в специальной константе)."

Как указать дробное количество товара в А+

В тэге Тэг Ref_Goods или Ref_Price есть параметр Weight:
Признак, что товар является 'весовым', т.е. допускается ввод дробного количества товара в документы.
Значения:
1 - товар весовой,
0 - товар не весовой.
Количество знаков после запятой для дробных количеств товаров указывается в константе GUID_SYSTEM_AMNTPRECISION

GUID_SYSTEM_AMNTPRECISION = 0980573E-CA63-4C1D-941D-09218063BF40
Количество знаков после запятой для указания дробного количества товара (от 0 до 4 знаков). В КПК при подборе товара в документы (или при редактировании количества товара в документе) допускается указание дробных количеств только для товаров, у которых имеется признак 'Весовой'"

Выгрузка сразу нескольких баз данных А+ из КПК

Есть возможность выгружать данные одним файлом сразу для нескольких баз данных в КПК.

Для этого используется ключевое слово <Base>, которое указывается вначале строки файла выгрузки, после слова <Base> через табулятор указывается название базы данных, для которой выгружаются данные.

В процессе загрузки данных в КПК, как только Агент+ встречает ключевое слово <Base>, он переключается в указанную базу данных и продолжает загрузку в эту базу.
В общем случае схематично файл выгрузки данных, содержащий данные для нескольких баз данных выглядит так:

agentp_data[здесь символ табуляции]to_ppc <Base>[здесь символ табуляции]База_A
: (данные для базы 'База_A')
<Base[здесь символ табуляции]База_B
: (данные для базы 'База_B')
<Base>[здесь символ табуляции]База_C
: (данные для базы 'База_C')

Ключевое слово <Base> в файле выгрузки может указываться сколько угодно раз, но только не внутри тэгов."

Автоматическое удаление старых данных из файла gpstrack.txt

А+ самостоятельно обрезает файл gpstrack.txt

Если в КПК включен режим ведения GPS-трека, все перемещения агента фиксируются в текстовом файле gpstrack.txt

Чтобы файл не разрастался и не тормозил процесс обмена данными, его периодически требуется обрезать, удаляя старые данные

Для определения момента времени, по который требуется обрезать данные трека, в КПК при обмене данными выгружется служебная константа.

В константе указываются дата и время, по которые данные о GPS-треке уже имеются в ЦБД.

Константа используется для выгрузки в КПК подтверждения о полученных ранее из КПК GPS-данных трека передвижений агента.

После загрузки этой константы, КПК удалит из GPS-трека данные по указанное время.

среда, 13 мая 2009 г.

Проблемы обмена данными КПК и АгентПлюс Сервер

Симптомы:
После обновления компоненты applus.dll невозможно принять данные от агентов по снабжению.
Агенты отправляют данные с помощью А+ Сервера, но после обновления таблицы в 1С - пишет, что новых данных от агентов не поступало.
В файле log.txt - протоколе обмена - сеанс получения данных отображается как прошедший успешно.

Дополнительный симптом:
В обработке кпкОбменДанными есть вызов метода
СтрИнфо = КПКОбъект.АпсПолучитьКПКИнфо();
И если просмотреть эту строку отладчиком видно, что имя файла в папке обмена для агента по снабжению пустое.

Решение:
Не использовать в наименовании каталогов обмена сотрудников кириллических символов.
Да, вот так просто - название папки обмена может содержать только буква латинского алфавита и цифры.
Отсутствие в документации упоминания о такой особенности новой версии компоненты добавило адреналина в процесс развертывания нового сервера.

Как вариант - в обработке не использовать вызов КПКОбъект.АпсПолучитьКПКИнфо(), а прописать проверку наличия файла [папка обмена]\to1C.zip