Добрый день уважаемые форумчане, не могу решить проблему.
Расширения работают хорошо, а вот с базовой версией возникла проблема, без решения которой дальнейшая поддержка невозможна.
Это внешняя обработка для Рабочего места кассира.
Разработчики в общих модулях постоянно определяют какая форма открыта "Форма документа", "Форма обработки" и так далее, а соответственно что открыта "Форма внешней обработки нет" и не делают "Иначе"
Пример из обработки
&НаСервере
Функция ОбработатьВводШтрихкода(ДанныеШтрихкода, КэшированныеЗначения, ПараметрыСканирования = Неопределено)
РезультатОбработкиШтрихкода =
ШтрихкодированиеИС.ОбработатьВводШтрихкода(ЭтотОбъект, ДанныеШтрихкода, КэшированныеЗначения, ПараметрыСканирования);
Если РезультатОбработкиШтрихкода <> Неопределено Тогда
ПереопределитьОрганизациюЕГАИС(РезультатОбработкиШтрихкода, ПараметрыСканирования);
ПослеОбработкиШтрихкодов(РезультатОбработкиШтрихкода, КэшированныеЗначения);
КонецЕсли;
Возврат РезультатОбработкиШтрихкода;
КонецФункции
Показать
"ОбработатьВводШтрихкода" Соответственно ЭтотОбъект-Это форма ФормаКлиентскогоПриложения, и далее сравнивают ЭтотОбъект.ИмяФормы = "Обработка.РМКУправляемыйРежим.Форма.Форма"
У меня соответственно получается ЭтотОбъект.ИмяФормы = "ВнешняяОбработка.РМКУправляемыйРежим.Форма.Форма"
Пример процедуры в общем модуле
Процедура ВключитьПоддержкуВидовПродукцииИС(Контекст, ПараметрыСканирования, ВидПродукции) Экспорт
Если ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ВозвратТоваровОтПокупателя") Тогда
ЗаполнитьПараметрыСканированияВозвратТоваровОтПокупателя(Контекст, ПараметрыСканирования, ВидПродукции);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ВозвратТоваровПоставщику") Тогда
ЗаполнитьПараметрыСканированияВозвратТоваровПоставщику(Контекст, ПараметрыСканирования, ВидПродукции);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ОплатаОтПокупателяПлатежнойКартой") Тогда
ЗаполнитьПараметрыСканированияОплатаОтПокупателяПлатежнойКартой(Контекст, ПараметрыСканирования, ВидПродукции);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ПеремещениеТоваров") Тогда
ЗаполнитьПараметрыСканированияПеремещениеТоваров(Контекст, ПараметрыСканирования, ВидПродукции, Ложь);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ПоступлениеТоваров") Тогда
ЗаполнитьПараметрыСканированияПоступлениеТоваров(Контекст, ПараметрыСканирования, ВидПродукции);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ПриходныйКассовыйОрдер") Тогда
ЗаполнитьПараметрыСканированияПриходныйКассовыйОрдер(Контекст, ПараметрыСканирования, ВидПродукции);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.РасходныйКассовыйОрдер") Тогда
ЗаполнитьПараметрыСканированияРасходныйКассовыйОрдер(Контекст, ПараметрыСканирования, ВидПродукции);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.РеализацияТоваров") Тогда
ЗаполнитьПараметрыСканированияРеализацияТоваров(Контекст, ПараметрыСканирования, ВидПродукции);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.РегистрацияБезналичнойОплаты") Тогда
ЗаполнитьПараметрыСканированияРегистрацияБезналичнойОплаты(Контекст, ПараметрыСканирования, ВидПродукции);
ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ЧекККМ")
Или ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Обработка.РМКУправляемыйРежим") Тогда
ЗаполнитьПараметрыСканированияЧекККМ(Контекст, ПараметрыСканирования, ВидПродукции, Ложь);
КонецЕсли;
ЗаполнитьБазовыеПараметрыСканирования(ПараметрыСканирования, Контекст);
КонецПроцедуры
Показать
И это в каждом общем модуле, перенести все функции в обработку конечно затруднительно, почти все процедуры не экспортные.
На клиенте я еще могу передать подменить имя формы,
Ай-яй-яй, публикация-то платная (за рубли), да еще и неплохо продаваемая - Инфостарт старается такие максимально анонимизировать, чтобы никто не пытался договориться с автором "мимо кассы".
Поэтому даже в комментариях к таким публикациям авторы скрыты за общим ником "Техподдержка".
В свете этого данная ветка может быть в лучшем случае отредактирована модераторами, в худшем (наиболее вероятном) - просто удалена... вместе с объявленным вознаграждением.
Поэтому советую как можно скорее выдать его кому угодно, хотя бы - себе, просто чтобы $m не пропали.
что мешает кликнуть на мой профиль и увидеть публикацию
То же самое - политика Инфостарта: в вашем профиле эта публикация видна только вам - когда другие пользователи (например, я) открывают ваш профиль, то там только публикации за стартмани.
(7)
мне нужно решение проблемы.
Тогда выдайте нынешние 3 $m себе, а в ветке (этой или следующей, как получится) просто пообещайте вознаграждение тому, кто предложит решение, если оно вас устроит (и если успеете его увидеть) - назначите и тут же выдадите.
(10) Спасибо за столь высокую оценку моих скромных советов - не рассчитывал (на все 3 $m - уж точно!).
По теме: ИМХО, перенос всех нужных функций в обработку - единственное правильное решение. "Правильное" не столько с точки зрения программиста, сколько с точки зрения политики 1С: "базовая - один пользователь - одна организация".
Ваша обработка существенно меняет ограничения базовой, что может не понравиться фирме 1С, а Инфостарт - ее официальный партнер.