Дмитрий, добрый день.
Есть кейс, в котором я из одного процесса (1) запускаю другой (2), который является циклом. При начале цикла я выбираю "первую одну" задачу из рабочего листа в статусе получена, проверяю, не пустой ли результат запрос, сохраняю все необходимые данные в переменные, обхожу цикл, если все норм, то присваиваю задаче статус выполнено, в противном случае отменяю её.
Если результат запроса пустой, т.е. подходящих задач больше нет, то я хочу выйти из цикла и вернуться на экран сканирования штрихкода рабочего листа, ну у или хотя бы в "родительский" процесс.
Так вот при установке переменной "exitloop" в "true" я перехожу на второй экран внутри процесса (Сканирование ШК контейнера).
Никак не могу понять ЧЯДНТ, подскажите пожалуйста как можно корректно реализовать задуманное.
Скрин конфигурации для наглядности.
(174) Добрый день! Ну в родительский то процесс можно break вернуться я думаю если дочерний процесс вызван StartProcessHashMap то это отдельная активити и break ее закроет. Тоже самое можно сделать кнопкой назад или стрелкой назад. Что касается вопроса почему так работает exitloop то мне надо смоделировать эту задачку. По своему коду я не могу понять. Это не сегодня.
Добрый день.
Не могу запустить клиента под win. Выдает ошибку:
Traceback (most recent call last):
File "simple.py", line 1062, in <module>
AttributeError: 'NoneType' object has no attribute 'read'
[30092] Failed to execute script simple
(6) А можете показать как задается переменная на закладке "Состав"? Указал у себя в ПриЗапуске Переменные.Вставить("list","Выберите вариант...;Первый;Второй;Третий"); - все работает
(10) При запуске у меня тоже все работает (если заполнять), но список инициализурую пустой. Мне этот элемент нужен только, когда необходимо выбрать номенклатуру, если нашел больше 1.
Сообщение об ошибке просто для примера показал на экране, что после ввода наименования попал в этот блок кода.
(11) Закомментировал сообщение об ошибке, так вообще ушел на след. экран. А нужно остаться на первом, для продолжения ввода номенклатуры.
Хм... а зачем тогда Ошибка=Истина ;)
(15) а зачем тогда Ошибка=Истина - атавизм
Ну да переходит на экран - это нормально. Все построено на переходах между экранами. Можно сделать следующий экран копией первого и замкнуть в цикл.
(9) А у вас есть демо-видео, чтобы посмотреть, как это выглядит "в действии"? По строкам таблицы можно передвигаться клавишами ТСД, можно ли таблицу динамически фильтровать на клиенте (например, подбор по артикулу товара из текущего заказа без обращения к серверу?)
(12) Видео нет, но есть пример. Если отправить заказ клиента на терминал, то там отправляется таблица с товарами и адресами и цикл показывает адреса по порядку. Это без обращения к серверу. Если надо поменять таблицу (например кладовщик пошел не туда по факту) то просто надо еще раз отправить другую версию таблицы. Таблицу можно отправлять не обязательно с отправкой заказа - она отправляется вместе с переменными. И доступна по кнопке план-факт. Т.е. если надо отметить факт например то с сервера отправляете таблицу с фактом. Это тоже есть в демо-базе.
(13) Демо видео не помешало бы, всё-таки. Если честно, после ваших объяснений яснее не стало. Я понимаю, что правильно бы демо-базу скачать и поразбираться, но не всегда время на это может быть. Мне бы на данный момент просто хотелось понять, что из реализованного у меня в РДП не получится с вашим клиентом.
(17) РДП это вообще открытая обработка на 1С (обычном) - там можно дописывать все что угодно. Я думал вы про андроидный клиент спрашиваете. Насчет видео я подумаю, да.
(18) Я имел в виду сравнить то, что у меня сейчас реализовано в обработках реальной WMS, работающей по РДП, и в вашем клиенте под андроид. Если бы процентов на 90% совпало - мог бы попробовать ваш клиент в реальной работе.
(12) Я вчера к сожалению невнимательно прочитал вопрос. Нет, подбор товара по артикулу происходит в обработчике на сервере, как и все остальное. Таблица заказа которая передается нужна только для того чтобы например предложить к какой ячейке пойти по порядку обхода(хотя это тоже можно сделать через сервер) и например для план-факта.
(20) Спасибо за обратную связь, получается, без детального тестирования решить, подходит или нет такой вариант в моих условиях не получится. Пока буду следить за развитием проекта.
(25)Т.е. без предустановленной ZXing ваша программа не будет работать? Или Zxing вы в свое решение интегрировали? Не то чтобы очень надо, просто смотрел как-то программу Barcode Harvester (тоже для 1с + android) - и в ней была возможность назначить программу для сканирования. А Zxing мне показался самым быстрым, поэтому я уточнил у вас, как устроено сканирование.
Дмитрий, приветствую.
Интересует возможность добавления в клиент объекта для рисования на экране (подпись).
Аналог вот этому:
https://infostart.ru/public/723380/ Кейс примерно такой:
На клиент посылаем "Выдать ТМЦ ААА сотруднику Иванов А. А."
На клиенте жмем Выдано. Отрисовывается поле подписи. Иванов рисует подпись, картинка отправляется в базу и прикрепляется к документу, по которому инициирована операция.
Здравствуйте! В описании сказано, что поддерживаются html теги для вывода строк. Не очень понятно как использовать что-то кроме <b> или <em>, например <div>. Хотел вывести вместо строки - таблицу сверстанную на div - не работает. Как вы используете остальные теги и как можно вывести на экран таблицу c оформлением заголовков столбцов?
(24) теги используются для надписей. Список доступных приведен в посте. Используются они например для того чтобы сделать часть строки жирной, для переносов строк, для изменения размера шрифта, ну там курсивы и т.д. Таблицу конечно в надписе не выведешь только переносы строк. Для таблицы у меня есть "План-факт" который можно заполнять по своей потребности. Он просто называется план-факт а на самом деле туда можно вывести любую табличку. На форму нет - там принцип интерфейса не такой как в 1С - не вываливается все на экран, а показывается только инфа, необходимая на данном шаге.
(27) Мне по ШК надо вывести табличку - с информацией, скажем 5 столбцов на 8 строк (включая заголовки строк и столбцов), и желательно для следующего сканирования оставить кнопку сканирования в этом же экране, а не переходить на следующий. Пока обошелся надписями с переносом и уменьшением размеров шрифта.
Ваша программа очень интересная, спасибо за такое хорошее приложение. В плане общего развития - а нельзя ли было сделать так, чтобы дизайн экранов можно было полностью программировать на сервере?. Т.е. не как у вас - жестко определены места надписей, кнопок и картинок. А чтобы можно было бы как для web на html+css задизайнить экран c кнопками и формами. клиент бы принимал разметку и отображал бы все в нужном дизайне. По сути что-то вроде браузера, только с поддержкой сканирования штрихкода.
(36) Спасибо! Табличку в план-факт можно засунуть, столбцы обозвать как нужно.
По поводу того чтобы не переходить после сканирования... Ну можно сделать следующий экран точной копией предыдущего или в цикл замкнуть... Тут смысл интерфейса в обработке процессов как оно происходит в больших WMS - каждый шаг - это отдельный экран. Я знаю что что есть всякие програмулины где на экране таблица и с ней что то происходит - но это самый начальный уровень автоматизации складских процессов (люых прцессов), в специализированных WMS системах происходит именно контроль каждого шага.
По поводу программирования дизайна экранов - я сознательно от этого ушел чтобы не пугать народ сложностью, т.к. это уже близко к тому чтобы просто запилить под себя решение на той же мобильно платформе... Я исходил из того что для реальных задач этого хватает. Если не будет чего то хватать то я просто добавлю например еще надписей, но пока хватает.
Добрый день! Скажите, Дмитрий, на Андроиде можно делать выбор строки из переданной с сервера ТаблицыЗначений? С последующим использованием значений в колонках, конечно.
(28) Добрый день! Не, есть только выбор из списка. Но сейчас в последнем релизе я добавил таблицу задач - вот через нее можно сделать. Посмотрите в конце постав где обновления
(29) снес устаревшее приложение, установил новое (обновить не получилось, ругается). Вместо кнопки "настройки" появилась кнопка "задачи". А где теперь настройки указывать?
(42) нет, если вы специально ен скопируете нужные переменные и не заполните из в ПриЗапуске. В обычно приложении это можно делать через глобальную переменную, в упр. - надо извращаться. Но это все решается на стороне 1С
(41)
и еще вопрос - сколько вообще живет сессия и переменные если процесс не завершается?
до выгрузки приложения из памяти? убивается по тайм-ауту?
есть возможность сохранять переменные и передавать их в следующую сессию?
замечание по обработке ошибок:
если возникает баг в обработчике ПриЗапуске и также есть ошибка в конструкторе экрана (например, использована переменная, определяемая в обработчике) - то отображается только последняя ошибка. (СообщениеОбОшибке перезаписывается)
не очень удобно, я получаю ошибку "Не задано значение переменной:". а какая конкретно проблема в коде непонятно.
Добрый день, Дмитрий! Пытался придумать как обойти нажатие кнопки "вперед" - не преуспел. Не подскажите?
Нужен "безшовный" цикл сканирования, при инвентаризации это очень неудобно.
(48) Там же есть галка "Переключаться по окончанию ввода" - если ее поставить то экран переключается по событию.Например ставите ее на штрих код и после скана экран идет далее
Добрый день!
Возникла ситуация, которую я не могу разобрать, помогите пожалуйста.
В конфигурации задан цикл, в нем есть всего три экрана: на первом определяется переменная mistake в значении "false".
Сейчас только "false" и явным образом, т.е. в Обработчике ввода прописано Переменные.Вставить("mistake","false");
Оба следующих экрана показываются при условии @mistake.
При выполнении на андроиде после первого экрана показывается последний (минуя второй как и должно). Переменная mistake = "false" и нигде не переопределяется. Причем при смене порядка второго и третьего экранов показывается именно последний по порядку.
(52) Добрый день! Хмм, да проверил так и есть. Сейчас выпущу обновление - сделал рекурсию. Просто до этого не рассчитывал что надо будет больше одного экрана пропускать. Обновление не сразу публикуется придется чуть подождать.
Может я чересчур замудрил процесс, но получилось что нужно два экрана либо пропускать либо показывать. Кстати, при использовании разных переменных для условия показа экранов - ошибка сохраняется.
(55) Дмитрий, ошибка исправлена, но появилась другая. Теперь если переменная "true" и приложение должно переключиться в экран - выдается ошибка "В приложении "Simple WMS Client" произошла ошибка.".
Я предположил что у меня в экране что-то не так и убрал все, кроме одной надписи со статическим содержимым - ошибка не исчезла.
Сделали у себя процесс, аналогичный "Прием заказа с сервера" из демо-базы. В нем всего две операции: сканирование товара и ввод количества. Проблема в следующем: при обходе таблицы на клиенте пропускается 2-я строка. Т.е. порядок обхода строк получается такой: 1,3,4,5,6....n. Не подскажите в чем может быть причина?
1. На клиенте не отображается колонка Qty, только filed1, field2 и QtyPlan.
2. Можно ли как-то вернуться на предыдущий экран внутри цикла? Например, пользователь ошибается, ему выводится вопрос, он жмет "Нет" и возвращается назад.
(62) 1. Если речь идет о таблице "план-факт" то она может не отображаться если заголовок не задан. Если речь идет о "ведении" то там только field1-2-3-4 можно в переменную передать. Вообще этот режим -анахронизм, остался по инерции.
2.Нет, для этого пришлось бы делать 2 кнопки так как выход из цикла тоже должен быть. Проверка ввода должна осуществляться на жкране после ввода и если есть ошибка - не давать пользователю переключать экран (выводить сообщение об ошибке)
(63) 1. Не отображается только одна колонка таблицы - Qty. Где можно задать ей заголовок? Клиент хочет видеть весь список товаров во время работы с заказом, поэтому я решил сделать через этот режим.
2. Было бы здорово сделать проверку ввода именно с вопросом. Может пользователь и не ошибся вовсе. Ну ладно, реализовал через ошибку.
(66) сделал пока через
Переменные.Вставить("StartProcess","Заказ собран");
Но хотелось бы понять как работает break, для такой связки в процессе:
-Экран (Старт)
-Цикл сбора
-Экран (финиш)
(66) Из цикла выходит пользователь сам нажатием кнопки назад. Break это чтобы закончить процесс вообще. Если все собрали можно вывести на экране "все собрали типа" чтобы пользователь сам вышел ну или у него что то еще надо дособрать сверх заказа и он не выходит. Со startprocess нормальное решение тоже.
В задачах есть список задач, как обновить это список? Задачи завершаются и пока не выйти в начальное меню и опять не нажать "Задачи", список висит первоначальный.
(71) это я понял, как обновить это список не выходя и не нажимая опять задачи. Кладовщик берет задачу в работу, одну из нескольких, завершил (в УС статус я поменял завершающий), возвращается на экран задач, а задача висит как незавершенная.
(73) Это тоже один из вопросов. Костыль пока (цикл прервать не знаю как) Переменные.Вставить("StartProcess","Заказ собран");
Последний экран с надписью "Заказ собран", дальше у него только Назад? Это выход из процесса и попадание на экран заданий
(75)спс, будем ждать. Подумайте пожалуйста, как ограничить цикл (прервать может). Потому что в заданиях есть количество строк, и они ограничены. Сборка по заказам например. И поэтому такую связку пока без StartProcess не получается сделать.
-Экран (заказа)
-Цикл (строки заказа)
-Экран (завершение заказа)
(76) Ну я для своих решений просто вывожу надпись заказ собран и все! Человек сам нажимает Назад и выходит. Это неудобно? Просто не совсем понимаю проблему.
(77) Как понять когда заказ собран?) Без нажатия назад. Остановить цикл сканирования товара для заказа.
Задачи будут падать в задания, сборщик выполняет. Он не знает когда в каком задании остановится: сборка, перемещение с ячейки в ячейку и т.д. Тупо механическая работа.
(78) при очередном сканировании или вводе количества или что там у вас, вы проверяете план/факт и если все строки собраны или какой то другой критерий то вводите надпись или делаете видимым скрытый экран - типа всё друг, все собрано, жми Назад и бери следующий заказ. Заодно кстати таблицу план факт перерисовывать желательно чтобы он видел что ещё надо собрать.
(79) у меня в план факте все и так работает и перерисовывается. Понял, принимаю, хотелось минимум кнопок (назад, план-факт), только смотри на экране и следуй.
Добрый день, Дмитрий!
У меня не самое последнее обновление приложения установлено, может эта проблема уже закрыта?
Андроид, ТСД с аппаратным сканером.
Суть проблемы следующая: есть процесс, который должен начинаться с нажатия кнопки "вперед".
Если пользователь вместо "ВПЕРЕД" нажимает кнопку "scan", то все равно происходит переход на следующее действие, но при это естественно не производятся нужные действия.
Может быть есть возможность заблокировать "scan" пока человек не нажмет "вперед"?
Или посоветуйте, пожалуйста, как правильнее сделать? вопрос снят в текущей формулировке
Можете добавить еще одну управляющую кнопку в блок с кнопками "Вперед", "Назад" ?
Объясню для чего эта кнопка может понадобиться:
1. Например делаю инвентаризацию ячейки, в конце инвентаризации надо нажать кнопку "Завершить", для того чтобы кладовщик понимал, что инвентаризация закончена и можно подводить итоги.
2. Делаю отгрузку товара на основании заказа, часть товара в отгрузку не вошло, чтобы закончить отгрузку я нажимаю "Завершить".
(90) Добрый день! Но Назад это и есть завершить... Кроме того там же можно блок кнопок выводить. Т.е. можно добавить либо экран с условной видимостью с блоком кнопок либо "Диалог" с условием. В общем обычно с жтим проблем не возникает... Либо просто в надписи написать "Все собрано" и все. Также там есть управляющие конструкции для прерывания цикла, завершения процесса и запука другого процесса. Т.е. я сомневаюсь что нужна еще кнопка. К тому же 3 кнопки более жргономично - их нажимаешь вслепую. А на ТСД "Далее" связана с энтером, а назад с Esc
Добрый день.
Возник вопрос: в конфигурациях клиента создал копированием ещё один элемент. Соответственно ему присвоился новый код. Этот код указал в настройках приложения. Но появляется сообщение "Не удалось подключить конф....". Нужно после создания новой конфигурации что-нибудь перезапускать на веб сервере, например?
(92) Добрый день! В настройках указывается код справочника Мобильные клиенты (числовой) , а не конфигурации. После создания новой конфигурации,если вы хотите ее присвоить новому мобильному клиенту то надо создать его, и прописать в настройках приложения его код. Если старому то просто перезапустить приложение чтобы он перечитал конфу.
Добрый вечер! Продублирую еще сюда. Я опубликовал веб сервер. Ввел http://192.168.0.102/SimpleWMS/hs/simplewms/get_conf?code=5 получил xml конфы. Но с приложения (на андроид) у меня не запускается: Пишет чтобы я ввел код и адрес веб сервера. После перезахода вообще все висит. Что я не так делаю ?