Вопросы по Simple UI/Simple WMS

1. informa1555 2746 25.02.19 10:52 Сейчас в теме
Вопросы-ответы для разработчиков по использованию конструктора [https://infostart.ru/public/1153616/] и [https://infostart.ru/public/976636/] .

!!!Новый форум для разработчиков: forum.simpleui.ru
f333; gorakh; colV; EasyWay; +4 Ответить
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
599. Andreeei 50 26.08.21 22:26 Сейчас в теме
(598) Галка Самостоятельный режим выключена.

Попробовал также клиент для windows simple.exe, настроил, запускаю, вылетает с ошибками, скрин сообщений прикрепил в картинке.

А предпоследний релиз (если он есть) где-то можно скачать?
Прикрепленные файлы:
600. informa1555 2746 27.08.21 07:31 Сейчас в теме
(599) 1С-ная часть изменилась. Я писал об этом в описании релиза. Поставьте демку из последнего комплекта разработчика. Развернул на чистой системе и демку и приложение из гугл плея, загрузил конфу с годом 19 все загрузилось. Видимо 1Сна часть у вас старая, но формат сменился сейчас.
601. andrey7617 69 28.08.21 05:28 Сейчас в теме
Дмитрий добрый день.
А правильно я понял что нельзя передать с экрана на экран переменную ТЗ ???
типа вот так Переменные.Вставить("TableNomQuanVers", ТЗНомХарКолВерсия);
Переменные органичены какими типами ???
602. informa1555 2746 28.08.21 05:49 Сейчас в теме
(601) Добрый день! Переменные - это структура со значениями типа Строка. Таблицы можно сериализовать например json.dumps или другим способом, лучше в json потому что в json удобно хранить в nosql и синхронизировать по http. Или вообще подумать нужно ее именно передавать или она просто доступна из разных экранов
603. andrey7617 69 28.08.21 14:12 Сейчас в теме
Дмитрий добрый день.
хотел задать еще пару вопросов.

Я попытался изменить цвет букв таблицы - не получилось. Правильно я понимаю что пока это не возможножно ?

где то в ваших видео слышал что можно организовать хранение глобальной переменной - которая будет храниться даже после закрытия симпл юай - подскажите плиз - это в каком примере можно посмотреть ?
604. informa1555 2746 28.08.21 14:50 Сейчас в теме
(603) Добрый день! Цвет таблицы - нет такого нет. У "плиток" больше возможностей и они красивее. Там цвет фонов есть и вообще все.
Глобальные переменные - это те, котрые передаются между процессами. Они обнуляются после закрытия. Есть "константы", но сейчас есть более удобный способ хранения все что толкьо можно - NoSQL который заменяет константы.
605. andrey7617 69 31.08.21 00:01 Сейчас в теме
Добрый день Дмитрий.
А правильно я понимаю что в обработчике 1с (Обработчик ввода) - нельзя обращаться к общим модулям так ?
так то бы вообще супер класс был бы если можно было бы ...
607. informa1555 2746 31.08.21 09:07 Сейчас в теме
(605) Добрый день! Почему? Конечно можно. Обработчик 1С - это модуль веб сервиса, конечто там можно (и нужно) обращаться к общим модулям серверным
606. andrey7617 69 31.08.21 04:35 Сейчас в теме

		//	//раскраска
			ЗаписьJSON.ЗаписатьИмяСвойства("colorcells");
			ЗаписьJSON.ЗаписатьНачалоМассива();
			     	ЗаписьJSON.ЗаписатьНачалоОбъекта();

					ЗаписьJSON.ЗаписатьИмяСвойства("row");
					ЗаписьJSON.ЗаписатьЗначение("1");

					ЗаписьJSON.ЗаписатьИмяСвойства("column");
					ЗаписьJSON.ЗаписатьЗначение("2");
					
					ЗаписьJSON.ЗаписатьИмяСвойства("color");
					ЗаписьJSON.ЗаписатьЗначение("#d81b60");
					ЗаписьJSON.ЗаписатьКонецОбъекта();
			ЗаписьJSON.ЗаписатьКонецМассива();		
Показать


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

					ЗаписьJSON.ЗаписатьИмяСвойства("row");
					ЗаписьJSON.ЗаписатьЗначение("ЭлементМассива");


- в результате только последняя колонка окрасилась (((. А можно несколько колонок окрасить ? если да то как ???

Зарнее огромное спасибо !!!
608. informa1555 2746 31.08.21 09:09 Сейчас в теме
(606) там номера (с нуля) колонки и массива в строковом виде задаются. На примере выше - это вторая строка, 3й столбец
andrey7617; +1 Ответить
609. andrey7617 69 31.08.21 17:47 Сейчас в теме
там номера (с нуля) колонки и массива в строковом виде задаются. На примере выше - это вторая строка, 3й столбец

Я имел ввиду можно что то подобное изобразить ??
Например выделить ячейки где факт не совпадает учетному ???
Прикрепленные файлы:
611. informa1555 2746 31.08.21 18:36 Сейчас в теме
(609) ну конечно, для этого оно и сделано
andrey7617; +1 Ответить
610. andrey7617 69 31.08.21 17:58 Сейчас в теме
Добрый день! Почему? Конечно можно. Обработчик 1С - это модуль веб сервиса, конечто там можно (и нужно) обращаться к общим модулям серверным


пробую пробую ничего не получается ((( Какие галки должны стоять у Модуля ???
посмотрите пжл фото ниже - я правильно ли все понимаю ???
Прикрепленные файлы:
612. informa1555 2746 31.08.21 18:39 Сейчас в теме
(610) проще будет для понимания если вынести текст обработчика в общий модуль (это не обязательно, но проще для понимания). Там есть модуль Отладка Процессов там пример вызова можно взять. Потом отладчик сервиса включите и пройдетесь по тексту
andrey7617; +1 Ответить
613. andrey7617 69 31.08.21 18:49 Сейчас в теме
там номера (с нуля) колонки и массива в строковом виде задаются. На примере выше - это вторая строка, 3й столбец

Я имел ввиду можно что то подобное изобразить ??
Например выделить ячейки где факт не совпадает учетному ???

ну конечно, для этого оно и сделано



Дмитрий добрый день не могу понять тогда что я делаю не правильно ???

		Для каждого ЭлМассивНесовпадающихОстатков Из МассивНесовпадающихОстатков Цикл
			
			//раскраска
			ЗаписьJSON.ЗаписатьИмяСвойства("colorcells");
			ЗаписьJSON.ЗаписатьНачалоМассива();
			     	ЗаписьJSON.ЗаписатьНачалоОбъекта();

					ЗаписьJSON.ЗаписатьИмяСвойства("row");
					ЗаписьJSON.ЗаписатьЗначение(Формат(ЭлМассивНесовпадающихОстатков, "ЧДЦ=0; ЧН=0; ЧГ=0"));

					ЗаписьJSON.ЗаписатьИмяСвойства("column");
					ЗаписьJSON.ЗаписатьЗначение("2");
					
					ЗаписьJSON.ЗаписатьИмяСвойства("color");
					ЗаписьJSON.ЗаписатьЗначение("#d81b60");
					ЗаписьJSON.ЗаписатьКонецОбъекта();
			ЗаписьJSON.ЗаписатьКонецМассива();			
		
		КонецЦикла;
Показать


Проблема в том что в массиве несколько строк - а окрашивается тольок последняя строка (последний элемент массива). В чем может быть проблема ???

Подскажите пожалуйста Уважаемый Дмитрий !!!
614. informa1555 2746 31.08.21 19:12 Сейчас в теме
(613) так там надо в массив то добавлять а не N-раз его записывать))

 //раскраска
            ЗаписьJSON.ЗаписатьИмяСвойства("colorcells");
            ЗаписьJSON.ЗаписатьНачалоМассива();

Для каждого ЭлМассивНесовпадающихОстатков Из МассивНесовпадающихОстатков Цикл
            
           
                     ЗаписьJSON.ЗаписатьНачалоОбъекта();

                    ЗаписьJSON.ЗаписатьИмяСвойства("row");
                    ЗаписьJSON.ЗаписатьЗначение(Формат(ЭлМассивНесовпадающихОстатков, "ЧДЦ=0; ЧН=0; ЧГ=0"));

                    ЗаписьJSON.ЗаписатьИмяСвойства("column");
                    ЗаписьJSON.ЗаписатьЗначение("2");
                    
                    ЗаписьJSON.ЗаписатьИмяСвойства("color");
                    ЗаписьJSON.ЗаписатьЗначение("#d81b60");
                    ЗаписьJSON.ЗаписатьКонецОбъекта();
                    
        
        КонецЦикла;

 ЗаписьJSON.ЗаписатьКонецМассива();
Показать
andrey7617; +1 Ответить
615. andrey7617 69 01.09.21 01:35 Сейчас в теме
так там надо в массив то добавлять а не N-раз его записывать))

спасибо Дмитрий !!! Ат души !!! все заработало ...
616. andrey7617 69 01.09.21 03:01 Сейчас в теме
проще будет для понимания если вынести текст обработчика в общий модуль (это не обязательно, но проще для понимания). Там есть модуль Отладка Процессов там пример вызова можно взять. Потом отладчик сервиса включите и пройдетесь по тексту


- Спасибо за наводку Дмитрий в отладчик попал ... что несомненно радует ...

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

но при участке кода
ПоступлениеТоваровУслугОбъект = ПоступлениеТоваровУслугСсылка.ПолучитьОбъект();


отладчик прекращает работать а Экран перезапускается снова ...
при этом в ПоступлениеТоваровУслугСсылка - я вижу ссылку на поступление
а если расчитать ПоступлениеТоваровУслугСсылка.ПолучитьОбъект() - то там пустые строки и даже типа нет ...

тоже самое происходит при обращение к другим процедурам
например:
Сервер.УдалитьДанныеВРС_ШтрихкодыСпецификацийПересчетыПоПоступлениюТоваров(ПоступлениеТоваровУслугСсылка)


((((
Как быть ? в чем может быть проблема ???
Я конечно же могу обойти этот момент ... но это будет усложнение кода ...

объясните пжл ...

Заранее огромное спасибо Дмитрий !!!
617. informa1555 2746 01.09.21 18:44 Сейчас в теме
(616) Скорее всего у вас что то в модуле объекта чего нельзя на сервере использовать это приводит к ошибке на сервере, в веб сервисе и разрыву соединения.
andrey7617; +1 Ответить
618. andrey7617 69 02.09.21 04:46 Сейчас в теме
Уважаемый Дорогой Дмитрий Приветсвую !!!

Надеюсь что в данный момент выступаю как тестировщик а не как раздражитель ...
Если чего мне на данный момент достаточно чтобы дописать свою первую тсд на Симпл юай.

НО

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


Я так же создал вообще пустой документ "ДокументПроверка" - без каких либо реквизитов и кода в модуле объекта
- та же самая беда - ссылку я получаю, ПолучитьОбъект() не возвращает ничего - а симплюай сразу перезагружается (после отработки ПолучитьОбъект())

При этом получить объект справочника - можно без проблем ...

Ниже привел скрины как все это выглядет (На примере ПоступлениеТоваровУслугСсылка но тоже самое повторяется и для ДокументПроверка)

Обращаю внимание что я пишу для УТ 10.3 - что под обычными формами - Может в этом кроется ошибка ???

Если чего могу прислать вам базу с документами и с моими настройками симплюай ...

Заранее огромное спасибо !!! - если прийдет идея как все таки ПолучитьОбъект() документа в модуле ...
Прикрепленные файлы:
619. informa1555 2746 02.09.21 06:51 Сейчас в теме
(618) Доброе утро! Где то у вас ошибка на создании объекта. Вообще это обычная операция никаких ошибок а тем более падений быть не должно. Ну сами посудите если Вы в отладчике выполняете ПоступлениеТоваровУслугОбъект = ПоступлениеТоваровУслугСсылка.ПолучитьОбъект() и у вас там не возвращается объект - это говорит о том что проблема на стороне 1С. Попробуйте просто выполнить этот обработчик в обработке. Переменные можно загнать через Переменные = Новый Структура();
andrey7617; +1 Ответить
620. andrey7617 69 02.09.21 12:04 Сейчас в теме
Попробуйте просто выполнить этот обработчик в обработке

Дмитрий добрый день.
В обработке выполняется (((
621. informa1555 2746 02.09.21 12:47 Сейчас в теме
(620) ну постманом такой же post запрос /set_input/OperationData/ тут у кого то было такое. Там по-моему даже не в модуле документа было дело а в модуле приложения что то модульное что через сервис не хотело работать. Старые конфы не оптимизированы для серверных вызовов
andrey7617; +1 Ответить
622. skyadmin 61 06.10.21 16:04 Сейчас в теме
Здравствуйте!
Задам один вопрос, может сразу ответите..
Можно ли выгрузить один заказ двумя заданиями и поочередно их выполнить на ТСД?

В 1С есть группа складов, которую разрешено использовать в заказах (без накладных)
Получается один заказ по двум складам, при оформлении которого создаются две реализации (с разных складов),
первая собирается утром, вторая вечером.
Спасибо!
623. informa1555 2746 06.10.21 17:28 Сейчас в теме
(622) Добрый день! Как напишете так и будет. Это платформа в которой можно реализовать любые процессы.
624. uriuri 27.10.21 11:46 Сейчас в теме
Добрый день!
Подскажите пожалуйста, как отключить вывод информации внизу экрана ТСД при сканировании qr-кода его содержания.
Если сканируем ШК, то внизу выводится одна строчка номер отсканированного текущего ШК - это не критично, а вот если QR-код сканируем, то перекрывается содержимым qr-кода этого всплывающего окна на пол экрана с секундным затуханием...? Если перезайти в ТСД и просто сканировать программкой Scanner, то всплывающее окно с содержимым qr-кода или шк не появляется. ТСД Urovo dt40.
625. informa1555 2746 27.10.21 16:05 Сейчас в теме
(624) Добрый день! У меня в платформе никаких сообщений не заложено. Вы же сами решение делает, и располагаете содержимое экрана может у вас тост выводит, может Сообщение об ошибке или на экране надпись какая то. Как ваш программист сделает то и будет выводиться. Прям даже интересно стало - можете скрин приложить? Но это не мое точно. На 40х урово у нас много кто рабоатет ничего там не выводится.
626. uriuri 27.10.21 16:43 Сейчас в теме
Вот внизу высвечивается отсканированый текущий ШК - это после входа и сканирования в Simple UI так начинает выводить, даже если закрыть Simple UI и уже сканировать стандартной программкой Scanner.
Если перегрузить ТСД и начать сканировать Scanner, то уже не будет выводиться внизу текущее значение отсканированого ШК. Я так понимаю - это стандартное сообщение, но оно начинает работать именно после входа и сканирования в Simple UI.
Прикрепленные файлы:
627. informa1555 2746 27.10.21 17:20 Сейчас в теме
(626) у меня в платформе ничего такого нет, но это можно сделать. У вас же есть какая то конфигурация Simple UI? Ее вам кто то написал? Вот видимо этот кто то в "сервисе" выводит штрих код в тост. Видимо для отладки. Надо просто убрать. Ну это предположение . Точно могу сказать что у меня ничего не выводится просто так.
628. uriuri 27.10.21 22:06 Сейчас в теме
(627)
Конфигурацию я сам писал на базе вашей демо. Но суть в том, что я запускаю просто Simple UI с вашей демкой по приемке, даже не заходя дальше в приемку и ничего не сканируя, просто открыл и вышел. И потом на ТСД после этого при сканировании внизу выводится штрих в тост, даже если на ТСД ничего не запущено, даже програмулина Scanner если не запущена все равно идет вывод отсканированного ШК в тост. Ежели перегрузить ТСД и не заходить в Simple UI, то при сканировании ШК в тост не выводится. Т.е. после захода/выхода в Simple UI ТСД начинает выводить отсканирвоанный ШК в тост, даже если не запущена никакая сканирующая программа. Может я в настройках у вас какие лишние галочки поставил? При том что на телефоне такого нет, в тост ничего не выводится. Вот на скрине видите выводит в тост текущий отсканированный ШК, хотя ничего на ТСД не запущено вообще.
Прикрепленные файлы:
629. informa1555 2746 27.10.21 22:31 Сейчас в теме
(628) Ну такое можно сделать если в конфе задействовать фоновый сервис и в обработчике сервиса прописать тост на считанный штрих-код. Проверьте, обработчик сервиса чем черт не шутит. У вас симпл как сканер читает - через интент или через разрыв клавиатуры? Если не настраивали через подписку на интент можно попробовать сделать. Я конечно проверю у себя ещё раз, но как то странно мне бы сказали если бы так было
630. uriuri 28.10.21 11:17 Сейчас в теме
(629)
подписку на интент

Добрый день!
Да, если установлена галочка в настройках "Использовать подписку на события сканера", тогда выводится при сканировании тост с содержимым ШК, и не критично в принципе как я уже писал, пусть себе выводится, НО у нас сканируется QR-код, и его содержимое перекрывает почти весь экран с секундным затуханием..., в принципе выход найден)), с помощью Переменные.Вставить("toast","") вывожу пустой тост (скрин прилагаю) и тогда выводится пустой овальчик, ничему не мешая).
Теперь вопрос в другом, у меня без установленной галочки "Использовать подписку на события сканера" просто не получается получить ШК, т.е. не доходит до обработки ввода с видом элемента экрана "Штрихкод" , возможно у меня нет понимания как правильно организовать без этой галочки. С установленной галочкой "Wedge as keys", так же не получается получить ШК. Скрин настроек, при которых у меня получается получить шк и qr-код так же прилагаю. Спасибо!
Прикрепленные файлы:
631. informa1555 2746 28.10.21 12:11 Сейчас в теме
(630) ну на урово с подпиской на интент все работает. Блин я нашел похоже этот тост, реально я для отладки его засадил в сервис в последнем релизе... Странно что никто до сих пор не сказал.
Если нужно именно через wedge keys то надо переключить сканер в этот режим, с энтером на конце, убедиться что в блокнот он сканирует и переносит строку и все других настроек не надо делать. Но это так себе вариант, потому что андроид на уровне ядра в люом приложении т.е. перехватывает полями ввода это дело. Т.е. на одном экране и сканирование и поле ввода не расположить. Поэтому через интент лучше. Исправление я внес в следующий релиз.
632. uriuri 28.10.21 12:37 Сейчас в теме
(631)
Принято, спасибо большое за оперативные ответы!
635. serge-ce1 20.11.21 08:14 Сейчас в теме
(634)
Через браузер подключается.

[CONNECTION]
url = http://10.10.10.53:8081/SimpleUI
code = 21
username = usr
password = gAAAAABhl3aFSYzVf9Ol76FzJGy5CgDivHHi5s_WC4CFWrZP1pZXahdbKoR4­nPaSkaHwX5mYdnyY0MP55ZNth436YNhRAW-k5A==

[VIEW]
fullscreen = False
height = 400
width = 600
636. informa1555 2746 20.11.21 08:43 Сейчас в теме
(635) так url неправильный - это не url http-сервиса. Посмотрите как в моем примере
637. serge-ce1 22.11.21 06:42 Сейчас в теме
(636)
url http-сервиса

Спасибо, получилось.

На новом форуме http://forum.simpleui.ru не могу зарегистрироваться пишет "Ваша учётная запись ожидает одобрения администратора."
638. informa1555 2746 22.11.21 07:19 Сейчас в теме
(637) Там спамеры похоронили форум практически. не знаю че с этим делать. Буду переезжать на другую платформу позже. Сейчас по 100-200 регистраций в сутки от спамеров.
639. rolin555 52 09.03.22 11:32 Сейчас в теме
Дмитрий, добрый день. Как программно заполнить таблицу SQLite и потом уже в ней совершать поиск (offline)? На нашем примере это таблица акцизных марок алкоголя, в 1с по веб сервису может ее отдать приложению.
640. informa1555 2746 09.03.22 12:55 Сейчас в теме
(639) Добрый день! Есть несколько способов. Из актуальных - через питон напрямую, или через питон ORM. По второму способу я даже пост отдельный писал. Принимать/отдавать либо через онлайн обработчики либо через тот же питон json/ requests . Примеры все есть. По всем способам.
Есть и другие но через питон и особенно ORM гибче и проще.
676. rolin555 52 15.03.22 11:36 Сейчас в теме
(640) не осилил через примеры. Для получения данных с 1С где подсмотреть каким методом питона идет коннект к http сервису? Где непосредственно писать запрос 1С для отдачи данных из базы 1С?
677. informa1555 2746 16.03.22 13:03 Сейчас в теме
(676) Смотрите, передать данные из питона можно поместив их в hashMap а в 1С они приедут в Перменных в запросе. Но это не очень вариант если у вас что то большое или требующее постоянной фоновой синхронизации. Если допустим из питона выбирать из SQL и оправлять в 1С то например гляньте пример "Тест сбора марок" и там процесс "Обмен данными". Там из SQL таблицы средствами ORM (это все на Pony) идет выборка, пакуется в json и с помощью requests.post отправляется на data_upload в 1С (в 1С при этом обработчик не написан сам по себе). Есть примеры где SQL без Pony, есть пример с каучем, есть пример с NoSQL. Надеюсь ответил на вопрос.
678. rolin555 52 16.03.22 13:24 Сейчас в теме
(677) для начала мне нужно забрать из 1с массив марок, разово, в фоне не надо. После того как закончится инвентаризация понял, Тест сбора марок-Обмен данными.
Но как забрать мне данные из 1с средством питона? Я так понимаю нужно свой сервис (метод) поднять в вашем конструкторе 1С, который отдаст в json набор данных?
679. informa1555 2746 16.03.22 13:37 Сейчас в теме
(678) Ну как, тоже самое. Самое простое - поместить в Переменные, забрать из hashMap в питоне, там уже в SQL записать. Либо сразу из питона какой нибудь гет-запрос на 1С и полученные данные в таблицу. Это если SQL с , NoSQL малость по другому.
680. rolin555 52 16.03.22 13:40 Сейчас в теме
(679) на каком этапе поместить в переменные? массив марок
681. informa1555 2746 16.03.22 13:41 Сейчас в теме
(680) Я не знаю как вам нужно)) Можете на 1й кнопке посместить, на 2й кнопке из питона забрать для наглядности. Можно в При открытии. Как удобно.
682. rolin555 52 16.03.22 13:42 Сейчас в теме
(681) ну т.е. в событии при открытии или по кнопке приложение будет ждать переменную?
683. informa1555 2746 16.03.22 14:23 Сейчас в теме
(682) я не совсем понимаю вопросы, но в общем вы можете в одном обработчике что то положить в стек переменных, а в другом забрать. Допустим это может быть json
641. stos 34 12.03.22 09:08 Сейчас в теме
Дмитрий, добрый день.
Вопрос по отладке питоновских скриптов. Написал файл обработчиков, указал его имя в конфигурации. В обработчиках указаны только имена функций, никакого кода нет. По вашему примеру с Фласк написал свой, который просто перенаправляет вызов в мой файл обработчиков. Все было хорошо, отладил. После этого в конфигурации снял флаги "Требуется онлайн открытие". Обновилась конфа на ТСД, всё хорошо, всё работает как надо. Но тут я решил еще кое-что допилить и отладить. Устанавливаю в нужных обработчиках флаги "Требуется онлайн открытие", конфа обновляется на ТСД. Но теперь в отладку не могу попасть. Нет вызова сервера фласк.
Параметры сервера фласк не менял, а вызовы как отрубило.
Что-то я не так делаю. Подскажите, что именно? Как опять получить возможность отладки?
642. stos 34 12.03.22 09:28 Сейчас в теме
(641) Сам себе отвечу. Выдал желаемое за действительное). Чтобы отладка была, нужно в обработчике не просто указывать имя функции, а писать вызов через hashMap.
643. stos 34 12.03.22 10:04 Сейчас в теме
(641) И еще. Прописал вызов функции через hashMap. Она вызвалась, отработала, но в hashMap осталось значение py_function. И теперь она вызывается всегда), вместо других обработчиков
644. informa1555 2746 12.03.22 10:08 Сейчас в теме
(643) Добрый день! Ну удалите из hashMap -remove по-моему. А зачем вообще через hashMap то запускать? Там есть разделенный режим, в онлайн функции пишете свой фласк как если бы это была 1С и так же отлаживаете.
645. stos 34 12.03.22 10:13 Сейчас в теме
(644) А как еще запустить? Если просто имя функции указываю - не идет вызов на сервер фласк.
646. informa1555 2746 12.03.22 10:14 Сейчас в теме
(645) просто имя онлайн или питон?
647. informa1555 2746 12.03.22 10:15 Сейчас в теме
(645) там разделенный режим должен быть
648. stos 34 12.03.22 10:22 Сейчас в теме
(647) Да, разделенный режим, имя питон
650. stos 34 12.03.22 11:29 Сейчас в теме
(644) Если удаляю из hashMap, то все вызовы идут с параметром null.

дописал set_input(method) так, чтобы при func = "null" не вызывалась эта функция
needrun = False if func == "" or func == "null" else True
if needrun:
    f = globals()[func]
    f()
Прикрепленные файлы:
651. informa1555 2746 12.03.22 22:11 Сейчас в теме
(650) Так я имею ввиду имя функции онлайн. Там есть разделенный режим(конфа отдельно, сервис обработчиков отдельно) это именно онлайн а не питон. Например 1С. Но вместо 1С мы даём сервер на фласке. Т.е. это обычный онлайн вот и все - прописываете в настройках разделенный режим и сервер обработчков фласк
649. stos 34 12.03.22 10:26 Сейчас в теме
И еще: если в обработчике имя питон убрать, а вызов прописать через хэшмап, то вызов процедура вызывается два раза подряд. Наверное, это проявляется если несколько раз туда-сюда прописывать вызов. Если указываешь имя процедуры и не указываешь код, то вызов один раз. А если потом имя стираешь и прописываешь вызов через хэшмап - начинает вызывать два раза подряд
Прикрепленные файлы:
652. stos 34 12.03.22 23:00 Сейчас в теме
Включен разделенный режим.
Например в первом экране нужно вызвать онлайн из 1с, а во втором онлайн из питон. Это может работать? Вы это предлагаете?
654. informa1555 2746 13.03.22 02:17 Сейчас в теме
(652) не совсем. Одновременно онлайн и в 1С и в фласк не получится, так как настройки то одни. Я предлагал везде через онлайн функции передавать в фласк. То есть как бы бек на питоне вместо 1С на время отладки. Потом фласк убираем, функции прописываем в питоновские функции и это работает уже автономно.
653. stos 34 12.03.22 23:02 Сейчас в теме
Было бы классно, если в обработчике питон прописали имя функции. И всё. Нужно на фласк - ставим галку онлайн, нужно чтобы отрабатывал код на ТСД - убираем галку, и тогда код вместе с конфигурацией отправляется на ТСД, как это уже сейчас и работает. Во фласк-файле - только перенаправление на вызов функции из файла обработчиков.
На картинке слева - файл с сервером Фласк. Справа - файл обработчиков. Отлаживать придется только один файл.
Прикрепленные файлы:
655. informa1555 2746 13.03.22 02:22 Сейчас в теме
(653) он тогда вместе с фласком отправится в PyHandlers , а на девайсе фласка нет, импорт не сработает. Либо его вырезать как то на лету.
656. stos 34 13.03.22 14:22 Сейчас в теме
(655)Мое предложение:
В конструкторе в обработчиках питоновских предусмотреть галку "Онлайн" или "Выполнять на сервере, а не локально". При указании этой галки вызов функции по имени идет на http-сервер Фласк в файл слева на картинке в (653) . А этот файл слева импортирует файл справа и вызывает одноименные, но с параметрами, функции из импортируемого файла справа на той же картинке.
Пример - вызов функции NomCardsOnEnter() из файла Фласк, которая всего лишь вызывает NomCardsOnEnter(hashMap) из файла обработчиков. Имена функций совпадают в обоих файлах, различие - в параметрах. Это позволяет обойтись только одним именем функции в конструкторе

В этом варианте переключение между режимами исполнения питоновских обработчиков Онлай(для отладки)-Офлайн управляется лишь одной галкой в соответствующем обработчике. Порядок работы может быть такой: Установили галку "Онлайн" в конкретном питоновском обработчике - отладили - сняли галку "Онлайн" - код записался на ТСД и можно работать в полях. Чтобы допилить и отладить функцию - достаточно будет вновь установить галку "Онлайн" - отладить - снять. Без копирования кода, без изменения варианта вызова, без лишних телодвижений. Правим только один файл Обработчиков. В файл Фласк только добавляем новые или удаляем ставшие ненужные вызовы функций из файла обработчиков.

Вот.
657. informa1555 2746 13.03.22 17:05 Сейчас в теме
(656) Смысл понял. Идея отличная. Даже можно было бы в отдельном посте это выделить. Но это же со стороны конструктора по идее, а не со стороны приложения. В принципе вы можете сами галку добавить, которая будет перекидывать название функции при записи конфигурации. В приложении можно не менять ничего.
658. stos 34 13.03.22 21:36 Сейчас в теме
(657) Не понял, как я могу это сделать, изменив только конструктор?
Ведь, если указать питоновское имяФункции, то эта функция будет вызвана локально, на ТСД. Вызов http-метода во фласк доступен только через hashMap.put("py_function", FunctionName). Можете задать направление, куда подумать?)
659. informa1555 2746 14.03.22 07:13 Сейчас в теме
(658) Так я же выше написал. Онлайн (не важно какой 1С, SAP, Axapta или Flask) можно вызывать в разделенном режиме через вызов функций. Например в реквизит ОнлайнФункцияПриЗапуске пишете имя функции , она пишется в DefOnlineOnCreate и приложуха отправляет http-запрос вам куда надо, а когда отладка закончена пишете ее же в PythonФункцияПриЗапуске , а из ОнлайнФункцияПриЗапуске убираете. То есть имя функции сначала в одном поле, потом в другом. Текст модуля можно прикрепить сразу, это ни на что не влияет. Т.е. у вас фласк вместо 1С просто работает и все.
660. stos 34 14.03.22 09:08 Сейчас в теме
(659)Я немного другое предлагал. У меня в онлайн обработчике уже работает 1с. В этом же обработчике задействован Питон. Пример: клик по таблице - Обработка ввода - локальный питоновский код вставляет команды поиска в базе Couch. Этот же обработчик на второй итерации обрабатывает результат средствами 1с, уже онлайн.
Или другой пример: в первом экране онлайн работает 1с, а во втором экране нужно отладить код питон.
Задача: отладить питоновский локальный код.
Как мне видится: нужно добавить константу в приложении - АдресСервераОтладкиPyton и тогда при включенной галке "Отладка" в обработчиках на закладках обработчиков Pyton вызовы буду перенаправляться на этот сервер отладки (эту галку в прошлых сообщениях я предлагал назвать "Онлайн" или "Выполнять на сервере, а не локально").
661. informa1555 2746 14.03.22 10:54 Сейчас в теме
(660) А, пропустил про то что 1С уже используется. Тогда да, надо какой то флаг или галку. Сделаю через переменные, а то настройки и так перегружены. Будет типа глобальная переменная -УРЛ сервера отладки, если она заполнена то питоновский вызов пойдет через http-запрос на этот адрес. А можете текст с фласокм который сюда выложить?
662. stos 34 14.03.22 11:00 Сейчас в теме
(661) Отлично. Можно просто с УРЛ в переменных. А галки "Отладка" тоже будут, или только указанием-обнулением этой переменной управлять направлением вызова кода?
Вот текст без купюр
from dataclasses import fields
from sys import hash_info
from flask import Flask
from flask import request
import json
import OMKDocMove #Перемещение
import OMKDocReal #Реализация
import OMKDocPost #Поступление

app = Flask(__name__)

def NomCardsOnStart():
    OMKDocMove.NomCardsOnStart(hashMap)

def NomCardsOnEnter():
    OMKDocMove.NomCardsOnEnter(hashMap)

def QuantityInputScreenOnStart():
    OMKDocMove.QuantityInputScreenOnStart(hashMap)

def QuantityInputScreenOnEnter():
    OMKDocMove.QuantityInputScreenOnEnter(hashMap)

def PlusMinusOnEnter():
    OMKDocMove.PlusMinusOnEnter(hashMap)

def UnLoadTo1cOnStart():
    OMKDocMove.UnLoadTo1cOnStart(hashMap)

def UnLoadTo1cOnEnter():
    OMKDocMove.UnLoadTo1cOnEnter(hashMap)


@app.route('/set_input/<method>', methods=['POST'])
def set_input(method):

    func = request.args.get('function')
    jdata = json.loads(request.data.decode("utf-8"))
    hashMap.d=jdata['hashmap']

    needrun = False if func == "" or func == "null" else True
    if needrun:
        f = globals()[func]
        #print(func + " " + hashMap.get("listener") + " " + hashMap.get("event"))
        f()
    
    jdata['hashmap'] = hashMap.export()
    jdata['stop'] =False
    jdata['ErrorMessage']=""
    jdata['Rows']=[]

    return json.dumps(jdata)

class hashMap:
    d = {}
    def put(key,val):
        hashMap.d[key]=val
    def get(key):
        return hashMap.d.get(key)
    def remove(key):
        if key in hashMap.d:
            hashMap.d.pop(key)
    def containsKey(key):
        return  key in hashMap.d
    def export():
        ex_hashMap = []
        for key in hashMap.d.keys():
            ex_hashMap.append({"key":key,"value":hashMap.d[key]})
        return ex_hashMap

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=2075,debug=True)
Показать
663. informa1555 2746 14.03.22 17:44 Сейчас в теме
(662) да, обнулением переменной выключаться. Просто указали работает, не указали - работает как обычно. А почему функции, например NomCardsOnStart() hashMap не возвращают? Как изменяется hashMap?
664. stos 34 14.03.22 18:50 Сейчас в теме
(663) А можно все-таки галками управлять? Тогда порядок работы такой: при старте конфигурации устанавливаем переменную УРЛ сервера отладки. И теперь про неё можно забыть. Работаем-работаем с ТСД, все хорошо. Теперь понадобилось допилить какой-то обработчик - ставим галку "Отладка" - отлаживаем. Отладили - сняли галку. А переменная при старте пусть и дальше устанавливается, но галок нет - нет и отладки. Simple.

А какие действия при таком сценарии нужно будет произвести в вашем варианте?

NomCardsOnStart() в файле фласк не возвращает ничего так же, как и ваши функции в файле фласк ничего не возвращают. А NomCardsOnStart(hashMap) в файле обработчиков - возвращает. Я сам задавался этим вопросом, но просто принял для себя, что hashMap - некая "классовая переменная" (так она видна в отладчике), которая определена в файле Фласк, а в файл обработчиков эту переменную нужно передать. Тут образовательный процесс на потом отложил). В обработчик NomCardsOnStart(hashMap) hashMap передается по ссылке, там изменяется, а потом ваша set_input возвращает её в приложение. Так работало.
665. informa1555 2746 14.03.22 19:24 Сейчас в теме
(664) а галки в настройках что ли? В настройках и так перегружено все.
Так в файле обработчиков допустим вы в hashMap что то поместили, например toast , а как он попадет потом в функцию которая в файле где фласк, а потом в ответ сервиса в hashMap.export()? Аргументы функции в питоне не меняются же как в 1С.
666. stos 34 14.03.22 19:39 Сейчас в теме
(665)Галки в обработчиках в конструкторе на закладках Питон внизу, похожи на галки "Требуется онлайн" на закладках обработчиков онлайн
667. stos 34 14.03.22 19:45 Сейчас в теме
(666)По поводу второй части вопроса - не знаю). Раскуривание этого вопроса на потом оставил). Как-то же используется hashMap в функции set_input, а ведь она не инициализирована, а только класс объявлен. Мне это не понятно пока, но я просто принял это). Наверное также передал эту переменную в функцию, а она как по ссылке сработала. Ну я же не знал, что она ТАК работать не должна). Однако работало.
Pyton 3.10.0
Можт и действительно в функцию передавалась по значению, но на самом деле писалось в эту "классовую переменную". Надо попробовать поменять имя параметра в функции NomCardsOnEnter(hashMap) на например hashMap2 и посмотреть что получится. Не задавался просто вопросом)
668. informa1555 2746 14.03.22 20:15 Сейчас в теме
(666) Так))) Возвращаемся к варианту передавать через hashMap py_online_url, py_online_user и т.д. Я так понял что единственное неудобство что в этом же вызове должен быть онлайн-вызов, а отладочный вызов его замещает? Если я сделаю чтобы он не замещал его , а просто перед ним вызывался - это решит проблему?

Почему не хочу никаких галок - я переписываю "конструктор" сейчас, пока не хочу лишней работы в этом плане, через переменные проще.
669. stos 34 14.03.22 21:03 Сейчас в теме
(668)вызов через hashMap работает непрозрачно. Уже говорил выше. Если отлаживаешь не единственную функцию, а одновременно несколько, то приходится вовремя очищать py_function, после первой итерации, или после второй? Не-очень удобно. В коде со временем будут оставаться эти очистки, и будешь думать - надо оно или уже нет?
670. informa1555 2746 15.03.22 06:48 Сейчас в теме
(669) Так я могу удалять py_function после вызова. Не решение?
671. stos 34 15.03.22 07:39 Сейчас в теме
(668) А почему такой разворот произошел? Очень жаль
673. informa1555 2746 15.03.22 07:53 Сейчас в теме
(671) потому что сейчас я 1) пишу новый конструктор (на питоне и том же стеке на котором стационарный клиент, недавно в телеграмм выложил) и сложно что то добавлять одновременно с разработкой 2) самое главное - я сейчас радикально, в разы, хочу упростить принципы и архитектуру, оставив те же возможности, порезать все лишнее и легайси. Чтобы можно было на пальцах за пару предложений объяснить принципы разработки. То есть у меня борьба с лишними галками. При этом естественно решения по функционалу останутся такие же и возможности будут добавляться как раньше. Но при этом из-за неоднородности развития, в 1С очень много лишнего накопилось.
674. stos 34 15.03.22 08:09 Сейчас в теме
(673) Отличная новость. Тогда ждем релиза. Спасибо. Чем-то могу помочь?
675. informa1555 2746 15.03.22 08:16 Сейчас в теме
(674) Ну эта штука будет выложена на гитхабе, так же как сейчас выложен стационарный клиент и ее можно (и даже нужно) дорабатывать - соответственно делать бренчи т.д.. Там конечно стек специфический - PySimpleGUI и на нем не так удобно как на 1С ваять, но зато это на бесплатной платформе плюс питон -мультиплатформенный. Так что многие вещи для удобства под себя можно будет делать.
672. stos 34 15.03.22 07:47 Сейчас в теме
(668)работает же:
Прикрепленные файлы:
684. untru 14 17.03.22 23:02 Сейчас в теме
Дмитрий, подскажите. это баг или фитча? Как искать виновника проблемы? Записал видео https://disk.yandex.ru/i/j_rBmULVIhyQZg
Суть в том что мы открываем экран, "Сканируйте товар" на котором есть поле Штрихкод, сканируем попадаем через ShowScreen в ввод количества, потом через ShowScreen по кнопке возвращаемся обратно в сканирование товара, но приложение отказывается воспринимать сканирования сканера и запросы не летят.
Версия приложения последняя на сегодня.
685. informa1555 2746 18.03.22 07:16 Сейчас в теме
(684) У вас сканер настроен "в разрыв клавиатуры" при этом на экране есть поле ввода. В данном случае у любых приложений на андроид (это не зависит от приложения) происходит смена фокуса на поле ввода или энтер/таб в зависимости от того что там в ШК. Решения могут быть такие : 1) если оставлять "через клавиатуру" то вынесите поля ввода на отдельных экран 2)перейдите на "баоту через интент" в настройках - там надо в документации вашего ТСД узнать имя интента и переменной
686. astro71 27.03.22 21:08 Сейчас в теме
Добрый день, Дмитрий. Спасибо за Вашу разработку - отличная программа.
Вопрос: Есть ли возможность получить номер телефона в в мобильном приложении?
687. informa1555 2746 27.03.22 22:13 Сейчас в теме
(686) Добрый день! Спасибо. В очень редких случаях (на старых андроидах или рут) с симки можно прочитать инфу, но чаще нет- это зависит ещё от производителя, ну и Гугл такие вещи не пропускает. На практике это выглядит так - инфу запросить с симки можно, но там ничего полезного. А раньше работало.
688. astro71 28.03.22 15:34 Сейчас в теме
689. stos 34 05.04.22 16:09 Сейчас в теме
Дмитрий, добрый день. Можно ли снаружи подключиться к базе коуч на тсд?
690. informa1555 2746 05.04.22 16:38 Сейчас в теме
(689) Добрый день! Кауч на ТСД? Не слышал про такое. Ну как минимум для этого нужно веб сервер наверное какой то иметь. И чтобы он API делал. Если речь о симпле, то там например привинчен web-сервис к SQLite с помощью которого консоль работает. В качестве NoSQL у меня используется Paper а не кауч и к нему нет внешнего API, как то не было потребности. Там все просто ключи через пременные можно запросить, содержимое по ключам тоже.
691. stos 34 05.04.22 20:57 Сейчас в теме
(690)А, не разобрался. Увидел в примере работу с CuchDB и подумал, что Simple именно её использует для NO-SQL хранилища на устройстве.
692. al_zzz 304 16.05.22 09:45 Сейчас в теме
Здравствуйте, Дмитрий!
Пытаюсь разобраться с SimpleWMS.
Подготовил расширение на основе конфигурации Simple UI (6.50.00): https://disk.yandex.ru/d/VPsKGeAxGmXXfg
(убрал там только демо объекты) для БП3.0.
По аналогии создал мобильного клиента с кодом 1 и конфигурацию для него с одним тестовым процессом.
Опубликовал http сервис расширения и указал настройки подключения в мобильном приложении.
Однако, конфигурацию не удаётся получить, хотя http соединения в 1С висят. Сеансы остаются висеть и после того, как я закрою мобильное приложение.
(Параллельно разворачивал демо базу и к ней нормально подключилось).
Что я делаю не так?
База с расширением, к которой не удаётся подключиться: https://disk.yandex.ru/d/_8ciROs7DMFmaA
Прикрепленные файлы:
693. informa1555 2746 16.05.22 10:38 Сейчас в теме
(692) Добрый день! У вас в справочнике "Мобильные клиенты" код- 1? По идее все правильно, может что то мешает соединению - может над другой порт вынести, пользователь по-русски написан - в этом может дело. Попробуйте с устройства в браузере
<этот урл:порт> + /get_conf&code=1
Еще с версией я не понял - должна быть последняя версия приложения на всякий случай. 6.50 - старовата.
694. al_zzz 304 16.05.22 11:37 Сейчас в теме
(693) Я не понял, где брать более свежую конфигурацию.
http://192.168.1.87/BP/hs/simplewms/get_conf&code=1 - вот так появилось окошко ввода пользователя. Если ввожу, то снова это же окошко.
Прикрепленные файлы:
695. informa1555 2746 16.05.22 13:40 Сейчас в теме
(694) Может там пароль еще нужен? Должен быть JSON текст конфигурации в браузере. Если окошко появляется снова видимо аторизация не прошла. Это на стороне вашего сервера проблема.
697. al_zzz 304 16.05.22 17:58 Сейчас в теме
(695) Я правильно понимаю: проблема не в Апач, так как тогда на демобазе тоже не работало бы. Т.е. что-то не так в расширении, которое я сделал? Подскажите, куда копать?
Извините, если глупые вопросы задаю - опыта мало в работе с http сервисами.
698. informa1555 2746 16.05.22 18:16 Сейчас в теме
(697) я б подсказал если б знал)) Суть в том что по запросу должен быть ответ - JSON с конфой, в браузере, в постмане, не важно. Тут вроде как все нормально - доходит до проверки пароля, но потом то должен быть результат, а он не возвращает 200, может с авторизацией что то не так?
699. al_zzz 304 16.05.22 23:20 Сейчас в теме
(698) Спасибо за помощь! Разобрался - дело было в правах.
696. informa1555 2746 16.05.22 13:41 Сейчас в теме
(694) P.S. Конфигурацию нигде, я думал речь о релизе apk идет
700. al_zzz 304 03.06.22 09:30 Сейчас в теме
Здравствуйте, Дмитрий! Подскажите ещё, пожалуйста, по следующим вопросам:
1. При запуске приложения на смартфоне появляется 2-3 http соединения с 1С;
2. Если закрываю приложение на смартфоне(смахиваю), то соединения с 1с остаются.
Что я делаю не так?
Прикрепленные файлы: