Возможно, проблема проявляется только в нашей инфраструктуре. А может быть и такое, что я не знаю, как отключить такую проверку.
Так или иначе, сделал простое и, пока, рабочее решение.
Суть проблемы: сканер штрихкодов, имитирующий ввод с клавиатуры, не передаёт разделитель GS в удалённый рабочий стол (терминал/RDP), а форма "Подбор и проверка ..." (ПроверкаИПодборПродукцииИСМП), открываемая, например, из Реализации, ругается на такие коды "В структуре кода маркировки отсутствуют разделители GS".
Решил следующим образом.
Кинул в расширение процедуру "Подключаемый_ПолученыДанныеИзТСД" из формы обработки ПроверкаИПодборПродукцииИСМП.ПроверкаИПодбор; с аннотацией &ИзменениеИКонтроль.
Почти в начале процедуры сделал вставку
......
Если Штрихкоды.Количество() = 0 Тогда
ЗагрузкаДанныхТСД = Неопределено;
ПоказатьПредупреждение(, НСтр("ru = 'В полученных данных не содержится информации о считанных штриховых кодах'"));
Возврат;
КонецЕсли;
#Вставка
ит_ВосстановитьРазделительGSДляШтрихкодов(Штрихкоды, ВидМаркируемойПродукции);
#КонецВставки
Если ЗагрузкаДанныхПоОснованию Тогда
ПараметрыУведомления = Новый Структура();
ПараметрыУведомления.Вставить("Заголовок", НСтр("ru = 'Загрузка данных по заказам'"));
ПараметрыУведомления.Вставить("Текст", НСтр("ru = 'Начата загрузка данных по заказам на эмиссию.'"));
Иначе
ПараметрыУведомления = Неопределено;
КонецЕсли;
......
Процедура восстанавливает разделитель GS и преобразует в base64 (иначе не вернуть на клиента без потери разделителя GS), также указывает, что код уже преобразован в base64:
&НаСервереБезКонтекста
Процедура ит_ВосстановитьРазделительGSДляШтрихкодов(Штрихкоды, ВидМаркируемойПродукции)
ПользовательскиеПараметры = РазборКодаМаркировкиИССлужебныйКлиентСервер.ПользовательскиеПараметрыРазбораКодаМаркировки();
ПользовательскиеПараметры.РасширеннаяДетализация = Истина;
Для Каждого Элемент Из Штрихкоды Цикл
Если Элемент.ФорматBase64 ИЛИ Элемент.Свойство("ШтрихкодыПреобразованы") Тогда
Продолжить;
КонецЕсли;
КодМаркировки = Элемент.Штрихкод;
ДанныеРазбора = РазборКодаМаркировкиИССлужебный.РазобратьКодМаркировки(КодМаркировки, , Неопределено, , ПользовательскиеПараметры);
ПолныйКодМаркировки = РазборКодаМаркировкиИССлужебныйКлиентСервер.ПолныйКодМаркировкиПоДаннымРазбораСРасширеннойДетализацией(ДанныеРазбора, Истина);
ПолныйКодМаркировкиBase64 = ШтрихкодированиеИСКлиентСервер.ШтрихкодВBase64(ПолныйКодМаркировки);
Элемент.Штрихкод = ПолныйКодМаркировкиBase64;
Элемент.ФорматBase64 = Истина;
Элемент.Вставить("ШтрихкодыПреобразованы");
КонецЦикла;
КонецПроцедуры
Реализовано в УТ 11.5.12.135, но, скорее всего, будет актуально для всей линейки 11.5
У нас:
- рабочее место пользователя - комп с ОС Debian/Ubuntu/Fedora
- сканер штрихкодов с имитацией ввода с клавиатуры.
- 1С на сервере под управлением Windows, попадаем туда через RDP.