Милая моя, где ты или геопозиционирование в 1С

Где я? Найти себя!

Настало время позаниматься мобильными приложениям в 1С. Начнет с простейшего — определение координат для приложения из модуля ‘СредстваГеопозиционирования’.

Всякий нормальный человек, когда хочет определить где он находится. Посмотрим по сторонам. Смотрит на некоторые таблички на домах. Посмотрит в свой мобильный. То первое есть совершит первое — некоторое длительные действия. Второе попытается определить свое местонахождение по нескольким источникам. И если второе вполне разумно, то длительный процесс с длительным зависание основного потока делают большинство начинающих программистов.

Как это стандартно в 1С

В 1С это ‘ОбновитьМестоположение’ при длительном определении — крутим колёсико — подвешиваем интерфейс ввода. Висим мы время зависимое от параметра этой функции. Если не определили за это время не беда возвратим неопределённое. Ну не могло ещё устройство определить координаты. Получается для надёжности многие делают это несколько раз из разных источников — в общем ждать приходится ещё больше.
ITS — https://its.1c.ru/db/v836doc#bookmark:dev:TI000000910

Возможный пример использования:

 

То есть 1С висит, но разве проблема в системе?
А может надо просто посмотреть как работает сама мобильная система? В чем основа мобильных систем и чем они отличаются от десктопных.

Как это стандартно для мобильных приложений

Блокировать основой поток приложения нельзя.

Мы можем запустить определение координат асинхронно и не ограничивая жестко времени но сильно заранее. Перед основным действием при котором нам точно надо будет определить координаты. Например вы делаете фотографию и Вам нужны координаты места фотографии.  Запускаем процесс определения гео-координат при начале съёмки.

Необходимо постоянно экономить электроэнергию.

Значит нам надо к моменту получения координат делать предварительные правильные действия, а потом правильные действия чтобы прекратить бурное потребление энергии. Записываем данные координаты например в реквизиты формы и можем продолжать обновлять координаты для более точной геолокации. Когда по бизнес логике надо закрывать форму и записывать данные, записываем вместе и координаты. И самое главное отключаем асинхронно определение координат, энергия на мобильном устройстве должна жёстко экономиться.

Пример использования:

Список сссылок:
https://its.1c.ru/db/v836doc#bookmark:dev:TI000000910
https://infostart.ru/public/256078/
https://habr.com/ru/post/210162/

Импортозамещение с 1С Мобильное приложение.

Доброго времени суток!

Импортозамещение будем делать на примере 1С Мобильное приложение.
Купили тут дешевые телефоны HONOR 9S без Google-сервисов. Хотели использовать для 1С мобильного приложения. Казалось ничто не предвещало проблем. Но проблемы с определением местонахождения обнаружились сразу и очень жестко. В других моделях телефонов проблем не было. Сначала думали, можно будет немного подправить и все заработает.

Разбираем код 1С:

Долго копались, но ответ оказался неожиданным. Необходимо установить Google-сервисов или воспользоваться приложением типа GSpace. Запустить 1С внутри GSpace.
Спасибо https://forum.infostart.ru/forum92/topic261437/#message2645088
Вот такие сложное взаимозависимости оказалось. США накладывает санкции на китайские корпорации, а не работает русская 1С.

Решето или грехопадение Исполнителя 1С

Доброго времени суток!

Ну не мог я пройти мимо тестирования 1С executer и oscript — https://youtu.be/A1CedCgm1eA

Из документации 1С:
Язык «1С:Исполнителя» строго типизирован. У каждой переменной, параметра и метода, возвращающих значения, должны быть заданы типы или перечисление возможных типов через вертикальную черту «|» – нельзя передать переменную непредусмотренного типа.

И что мы имеем в Исполнителе с Массивом?
Новый Массив()
А в java на технологиях которого работает он:
ArrayList<Boolean>

Время работы исполнителя 216 сек, время oscript 97 сек, а jvm меньше 1 сек.

Для сравнения приведем что там реально на Диком Западе в динамической типизации?

Python3 27 сек

PHP7 19 сек

И вне конкурса — статическая типизация
JAVA меньше секунды

P.S. Комментарий от создателя Перфоленты

я уже понял, что достаточно флага «-XX:+UseParallelGC» что бы Джава быстро работала… в моём последнем тесте Джава, Шарп и Перфолента показали почти одинаковые результаты… +/- пару процентов…

Блеск и нищета 1С JSON

Доброго времени суток!

Если вы используете JSON внутри 1C и очень любите из него грузить данные могу Вас порадовать — это делается очень быстро и сразу получаются объекты 1С

СерилиазоторXDTO.ЗаписьJSON(ЗаписьJSON);

Но могу Васи сильно огорчить, если вы попытаетесь загрузить то что нет в вашей конфигурации, скажем нет у нас справочника СекретныйСправочник

Вы не просто получите ошибку и сможете ее перехватить для обработки. Вы получите стоп игра.

И прямой вылет программы 😉

Работа с дополнительными полями в Битрикс

Доброго времени суток!

Если Вы в 1С любили использовать дополнительный реквизиты и свойства, мучились с их настройками то использование дополнительных полей в Битрикс Вам понравиться.
Итак преступим.

Для того, чтобы получить в выборе значения дополнительных полей их надо указать UF_INN в параметре SELECT

Источники:
https://dev.1c-bitrix.ru/support/forum/forum6/topic36976/
https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=3496&LESSON_PATH=3913.4776.4804.3496

Динамический список в 1С…

Как бы нам дать такой инструмент, чтобы неприятности вылезали самым неожиданным образом. Чтобы простота первоначальных простой настройки выливалось в часы бесплодных поисков решений. Чтобы у тебя все работало, а у ответственного пользователя зависало на полчаса. И так мы немного поговорим о динамических списках в 1С.

Доброе время суток!

Как же легко и просто создать в 1С динамический список, написать понятный запрос и проставить необходимые поля.Но с течением времени количество таблиц в запросе увеличивается в 2-4 раза, количество полей в таблице растет. А количество записей  растет очень быстро и за год может достигать миллиона и более в основной таблице.

И вот тут-то и начинается ОСОБЕННОСТИ работы динамических списков. Первоначальное открытие формы начинает висеть долго, но не у всех и не всегда. Но новые пользователи конечно же должны первоначально прождать минут 20 для получения первичных данных.

И тут приходит время «Доработать» эти списки…

Первое до чего хотят добраться руки — Убрать динамическое считывание данных.

Из its 1C: Динамическое считывание данных включено (рекомендуется) https://its.1c.ru/db/v8std#content:732:hdoc:_top:%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9%20%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA

Но это позволит убрать долгое зависание при прокрутке списка.

Второе  это убрать загрузку кучи картинок привязной к этому списку, ну если до Вас этот список писали студенты на макете из трех документов…

Третье уже более существенное это вытащить все дополнительные данные в ПриПолученииДанныхНаСервере(https://wonderland.v8.1c.ru/blog/obrabotka-i-oformlenie-dannykh-dinamicheskogo-spiska/) чтобы разгрузить основной запрос.

Важно понимать, что по этим данным мы не может сортировать или отбирать строки списка.

 

В четвертых —  одно из самых  главных  это вставить отборы сразу в функцию ПриСозданииНаСервере — это уменьшит кардинально количество получаемых данных.

Кнопка выбора периода работает на фильтрацию полученных данных, лучше переопределить ее

И лучше убрать или сделать недоступным строку состояния такого списка, иначе пользователи будут путаться при убирании отбора по этому параметру.


&nbsp
И на некоторых версиях, если у Вас у одно и тот же списка скорость  прокрутки кардинально различается — то возможно Вам поможет очистка всех неиспользуемых отборов 😉

 

Файловая система из 1С, как это работает.

Доброго времени суток!

Долгое время, изучая изменения функций работы с файлами в 1С, я не понимал, что же нам предлагают. Нет, старый дубовый подход со времен 7.7 был прост и понятен. Но новый, «безмодальный», «асинхронный» и еще «Расширения для работы с Файлами» в браузере в принудительном варианте всегда вызывали вопросы. Пришло время разобраться.

Так что же мы имели раньше?

Для программиста получение информации о файле всегда сопровождалось работой с объектами файловой системы или функциями типа file_exists (в php) или Файл.Существует() (в 1С) — получаем сразу результат и пишем дальше алгоритм действий. Ведь просто же получим объект Файл, смотрим результат Файл.Существует() и в зависимости от результата делаем дополнительные действия:

Но с 2009 года в 1С стало все по-другому и теперь мы имеем встроенный метод НачатьПроверкуСуществования. И результат этой проверки мы получим не сразу, а уже внутри другой функции, специально указанной внутри вызова. Получается неудобно, длинно и непонятно где искать. Но так нам говорят необходимо для web. И маркетологи уже шепчут нам в ухо — это же асинхронно…

И вот тут у меня возникает диссонанс. То есть нам хотят сказать, что получение существования файла это длительный процесс запроса к удаленной системе и ожидание ответа от нее? Стоп, но на сервере не нужно никаких НачатьПроверку, там все прекрасно работает Файл.Существует(). То есть если мы переходим на событийную модель, как в nodеjs то это должно работать именно на сервере.

Так как же нам работать (что делать)  и как во всем этом разобраться (кто виноват).

На первый вопрос практика и стальные нервы  принесут нас плоды успеха.

Для циклической проверки существования файлов мы используем зацикливание на себя типа:

Многие скажут, что стоит подождать еще немного и с 8.3.18 можно будет писать в циклах

Но немногие понимают, что это практически немного другая оболочка закручивания того же самого, совместимая с современными названиями из javascript (Модненько).

Так что же нам предложили в 2009 году как прикладным программистам? Получается нам предложили callback, завернутый в ОписаниеОповешения(). И даже функции работы с обещаниями в 8.3.18 не меняют этой сути, а просто перепаковывают примерно как программисты javascript свои callback-и в promise. Но в отличие от Web вся остальная схема работы 1С осталась синхронной. Взаимодействие с сервером в 1С само синхронно — последовательно вызываются функции клиента и сервера, ответ у HTTPЗапрос — получаем последовательно. А ОписаниеОповещения повесили на клиента и функции взаимодействия с пользователем. Бардак в головах?

Нет не все функции в 1С будут прикрывать столь срамную реализацию. Есть и правильная тенденция в ПолучитьФайлССервера с несколькими Оповещениями(callback) и в них мы как раз начинаем получать правильное использование технологии. И это радует.

 

В второе важное, будем разбираться.

В Web всегда была важна безопасность. Локальная файловая система отделена от доступа скриптов в браузере. Но 1С здесь решила сделать «все для пользователей» в результате при установке Расширений для работы с файлами, мы получаем доступ к локальной файловой системе. Да с подтверждением разрешения, но пускает и в техническом понимании это вызывает взрыв мозга.

Берем вот так просто и копируем выделенные файлы с сервера на указанную папку пользовательской машины в браузере.

Выделяем файлы для переноса, выделаем паку назначения и нажимаем копировать.

 

А функция НачатьЗапускПриложения с доступностью в браузере заставляет сердце йокать и подозревать что-то сильно нехорошее.

 

 

Но главное же быть полезным, а не правдивым ведь правда 😉

И для ИСКЛЮЧИТЕЛЬНО для полезности предлагаю обработку для работы с файловыми системами клиента и сервера в виде всеми любимых двух панелей по типу FAR, Norton Commander. — https://infostart.ru/public/1295065/

Р.S.

Проблема в мобильной приложении это поиск корневых папок, Android это будет типа /storage/emulated/0 или другое специально подобранное и доступ опять такой как у всей платформы 1С. Возможность накосячить большая 😉

Воспроизведение звука в 1С. Доступно и всерьез. 8.3.14

Доброго времени суток!

С момента предыдущей публикации infostart.ru/public/248770/ прошло много времени. И честно говоря, если вы запустите старую обработку на  Windows 10 и новой платформе  8.3.14, то звук уже не будет воспроизводиться. За это время многие уже перебрались на платформу выше 8.3.14, а значит, и html поле теперь всегда новое и это не зависит от режима совместимости 😉 и режима классических форм. Все старое перестало работать! Значит, есть основание сделать мир лучше!

Можно пойти путем использования функций операционной системы (внешняя компонента) или взаимодействия с другой системой, которая сумеет воспроизвести звук.  Это правильный подход и я его рекомендую в сложных проектах. Но если вам дано добавить два, три звукового сопровождения к существующей доработке, то предлагаю действующий метод.

Прежде всего скажем, что будем использовать поле html, интернет стандарты это единственное, на чем можно основываться в нашем проприоритетном мире. И конечно если мы доделываем для Web клиента, то других вариантов у нас просто нет.

Итак начнем с самых основ звука в html5 и тега audio (https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_audio_all):

Проблема номер один ссылка на файл в контексте сервера. Где должен быть расположен файл по отношению сервера 1С, локального компьютера ил того подобного.

Ответ 1: полная ссылка на звуковой файл типа — https://blog.sikuda.ru/1c/sound1c.mp3 — ВСЕ ПРЕКРАСНО и для Вэб-клиента это пока единственный вариант.

Ответ 2: Прописывание звука в тело html типа — src=’data:audio/mpeg;base64 НЕ ПРОХОДИТ 1С клиент.

Ответ 3: Указание ссылки Адрес во временном хранилище у меня НЕ ЗАРАБОТАЛО.

Ответ 4: Использовать временные локальные файлы на клиенте file:// вместе с ПолучитьИмяВременногоФайла — РАБОТАЕТ даже в тонком клиенте.

 

И вторая проблема с которой я столкнулся, это однократное воспроизведение звука. Я так понял это проблема кэширования самой 1С html поля с этим сложно бороться. Простое решение работает если перезагружать страницу с кодом:

Ну а тем кто хочет использовать элементы управления звуком и не получить в стандартном 1С черный прямоугольник, рекомендую воспользоваться сторонним плеером (мне понравился https://plyr.io/#audio и вторая обработка)

Ну вот и все. Тестируем, критикуем, комментируем. Если найдете лучший метод не стесняйтесь рассказывайте.

Готовые обработки выложены на Infostart https://infostart.ru/public/1259789/

 

Как разнести простых толстых и web-клиентов на разные сервера 1С.

Доброго времени суток!

Добавляет функциональные требования для серверов.

Для толстых клиентов:

Для тонких и web клиентов:

 

 

И самое главное не забываем применить эти требования.

 

1С . Работа с Файлами раньше и завтра…

Доброго времени суток!

Вначале была Файл и файл был у системы 1С и файл был прост…
Загрузка файла:

Сохранение файла:

Но потом пришел Интернет и разделение локального контента и серверного у 1C. Поэтому ввели РасширениеДляРаботыСФайлами для браузеров как костыль для старой работы. И потом понеслось…

Привет ПоместитьФайл и пока с ошибкой совместимости…

Загрузка по новому которая пока работает https://infostart.ru/public/812886/
И улучшения https://wonderland.v8.1c.ru/blog/uluchshenie-raboty-s-faylami-v-veb-kliente

То есть все равно осталось две функции. Зачем?

А на javascript передача файла на сервер выглядит следующим образом:

Но не стоит расстраиваться, через некоторое время мы снова будем переписывать на новые функции

Проанализировав имеющиеся методы (ПолучитьФайл(), ПолучитьФайлы(), НачатьПолучениеФайлов()) мы решили ничего в них не менять, а просто отказаться от них. Вместо них мы сделали два новых асинхронных метода с понятными именами: НачатьПолучениеФайлаССервера() и НачатьПолучениеФайловССервера().

https://wonderland.v8.1c.ru/blog/unifikatsiya-metodov-raboty-s-faylami/?sphrase_id=168400