Форма в обработке для разных пользователей
Добрый день! Есть обработка в которой есть форма "ФормаГВХ". В ней поля высота, ширина, длина, вес.
Эти поля автоматически заполняются по кнопке "ПолучитьГВХ". Через HTTP подключаемся к весам, забираем данные и заполняем форму.
Все хорошо подтягивается, только одна проблема, если данная форма открыта у нескольких пользователей, то она заполняется у всех(хотя кнопку нажимает только 1 пользователь). Всегда думал, что у каждого пользователя открывается своя форма, что это зашито в платформу. А тут один пользователь 2 пользователя вбивают данные вручную, заходит 3, нажимает кнопку и заполняет и у себя данные, и у других тоже затирает. Как такое может быть? Что с этим можно сделать?
Эти поля автоматически заполняются по кнопке "ПолучитьГВХ". Через HTTP подключаемся к весам, забираем данные и заполняем форму.
Процедура ПолучитьГВХСВесовНажатие(Элемент)
HTTP = Новый HTTPСоединение("ТутАдресВесов",,,,,,,);
ЗаголовокЗапросаHTTP = Новый Соответствие();
ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json; charset=utf-8");
HTTPЗапрос = Новый HTTPЗапрос("/", ЗаголовокЗапросаHTTP);
Ответ = HTTP.Получить(HTTPЗапрос);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
НаборГВХ = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
ЭтаФорма.ФШирина = Число(НаборГВХ["width"]);
ЭтаФорма.ФВысота = Число(НаборГВХ["height"]);
ЭтаФорма.ФДлина = Число(НаборГВХ["length"]);
ЭтаФорма.ФВес = Число(НаборГВХ["weight"]);
КонецПроцедуры
ПоказатьВсе хорошо подтягивается, только одна проблема, если данная форма открыта у нескольких пользователей, то она заполняется у всех(хотя кнопку нажимает только 1 пользователь). Всегда думал, что у каждого пользователя открывается своя форма, что это зашито в платформу. А тут один пользователь 2 пользователя вбивают данные вручную, заходит 3, нажимает кнопку и заполняет и у себя данные, и у других тоже затирает. Как такое может быть? Что с этим можно сделать?
По теме из базы знаний
- Настройка видимости элементов форм объектов по ролям, на уровне пользователя
- [Расширения] Управление видимостью разделов для разных пользователей
- Управление доступом к формам и элементам форм «УФОРМ-ЮГ» (БП, БП-КОРП, ЕРП, УНФ, УТ, КА, УХ) [Расширение]
- Конструктор (дизайнер) форм - расширение для конфигурации "INFOSTART ERP community edition"
- Переход с 1С:УПП на 1C:ERP. Переезд пользователей с сохранением прежних прав
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
да, дело не в ворме а в источнике данных, все формы работают с одним источником данных
читают и пишут туда-же в одно место - Весы!
переделывайте код программы с учетом многопользовательской работы!
либо блокируйте работу этой обработки если ее уже кто-то запустил,
читают и пишут туда-же в одно место - Весы!
переделывайте код программы с учетом многопользовательской работы!
либо блокируйте работу этой обработки если ее уже кто-то запустил,
(4) Это должен быть какой-то идентификатор, определяющий с какого рабочего места или под каким пользователем открыта форма. Он должен заполняться раньше команды получения информации, в команде открытия формы. В данном случае наверное подойдёт просто случайно генерируемый УИД.
Но я не так поняла код, я сталкивалась с такой ситуацией при открытии нескольких документов одного типа и получении значений из формы через обработку оповещения. В случае с обработкой увы не могу подсказать.
Но я не так поняла код, я сталкивалась с такой ситуацией при открытии нескольких документов одного типа и получении значений из формы через обработку оповещения. В случае с обработкой увы не могу подсказать.
Если я получаю форму из открытой формы, я получаю именно свою, открытую форму? Может так заполнять?
Форма = ПолучитьФорму(ВнешниеОбработки.РМС_ПриемкаТовара.Форма.ФормаГВХ, ,"12345");
Форма.ФШирина = Число(НаборГВХ["width"]);
Форма.ФВысота = Число(НаборГВХ["height"]);
Форма.ФДлина = Число(НаборГВХ["length"]);
Форма.ФВес = Число(НаборГВХ["weight"]);
(15) А можете описать алгоритм действий? Как открывается форма пользователем, какой код отрабатывает, как из формы вызывается процедура.
Потому что по идее действительно формы должны быть уникальны и у меня не получается повторить описываемую ситуацию, когда открытые в двух сеансах формы заполняют друг-друга.
Потому что по идее действительно формы должны быть уникальны и у меня не получается повторить описываемую ситуацию, когда открытые в двух сеансах формы заполняют друг-друга.
(16) Работа ведется в обработке, сканером пробивается товар, если товар приходит на склад первый раз(проверка зашита в обработку), автоматически открывается окно ввода ГВХ(формаГВХ).
Товар ставится на весы, на форме нажимается кнопка "получить данные с весов"(выполняется код из самого первого сообщения), форма заполняется, сохраняется
Или можно просто в ручную измерить и занести данные в форму и сохранить.
Товар ставится на весы, на форме нажимается кнопка "получить данные с весов"(выполняется код из самого первого сообщения), форма заполняется, сохраняется
Или можно просто в ручную измерить и занести данные в форму и сохранить.
В итоге реализовал через назначении ключа уникальности форме с определенного ПК, а потом проверка по ключу.
Если ПолучитьКомп() = "INV005" Тогда
ФормаИзм = ПолучитьФорму("ФормаГВХ", ,"ФормаСВесами");
ФормаИзм.Номенклатура = НМК;
ФормаИзм.ОткрытьМодально();
Иначе
ФормаИзм = ПолучитьФорму("ФормаГВХ");
ФормаИзм.Номенклатура = НМК;
ФормаИзм.ОткрытьМодально();
КонецЕсли;
Если ЭтаФорма.КлючУникальности = "ФормаСВесами" Тогда
ЭтаФорма.ФШирина = Число(НаборГВХ["width"]);
ЭтаФорма.ФВысота = Число(НаборГВХ["height"]);
ЭтаФорма.ФДлина = Число(НаборГВХ["length"]);
ЭтаФорма.ФВес = Число(НаборГВХ["weight"]);
Иначе
Возврат
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот