Внешняя обработка

1. Di_Denis 403 21.12.21 17:16 Сейчас в теме
Добрый день уважаемые форумчане, не могу решить проблему.

Расширения работают хорошо, а вот с базовой версией возникла проблема, без решения которой дальнейшая поддержка невозможна.

Это внешняя обработка для Рабочего места кассира.
Разработчики в общих модулях постоянно определяют какая форма открыта "Форма документа", "Форма обработки" и так далее, а соответственно что открыта "Форма внешней обработки нет" и не делают "Иначе"

Пример из обработки
&НаСервере
Функция ОбработатьВводШтрихкода(ДанныеШтрихкода, КэшированныеЗначения, ПараметрыСканирования = Неопределено)
	
	РезультатОбработкиШтрихкода =
		ШтрихкодированиеИС.ОбработатьВводШтрихкода(ЭтотОбъект, ДанныеШтрихкода, КэшированныеЗначения, ПараметрыСканирования);
	   
	Если РезультатОбработкиШтрихкода <> Неопределено Тогда
		ПереопределитьОрганизациюЕГАИС(РезультатОбработкиШтрихкода, ПараметрыСканирования);
		
		ПослеОбработкиШтрихкодов(РезультатОбработкиШтрихкода, КэшированныеЗначения);
		
	КонецЕсли;
	
	Возврат РезультатОбработкиШтрихкода;
	
КонецФункции
Показать

"ОбработатьВводШтрихкода" Соответственно ЭтотОбъект-Это форма ФормаКлиентскогоПриложения, и далее сравнивают ЭтотОбъект.ИмяФормы = "Обработка.РМКУправляемыйРежим.Форма.Форма"
У меня соответственно получается ЭтотОбъект.ИмяФормы = "ВнешняяОбработка.РМКУправляемыйРежим.Форма.Форма"

Пример процедуры в общем модуле
Процедура ВключитьПоддержкуВидовПродукцииИС(Контекст, ПараметрыСканирования, ВидПродукции) Экспорт
	
	Если ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ВозвратТоваровОтПокупателя") Тогда
		
		ЗаполнитьПараметрыСканированияВозвратТоваровОтПокупателя(Контекст, ПараметрыСканирования, ВидПродукции);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ВозвратТоваровПоставщику") Тогда
		
		ЗаполнитьПараметрыСканированияВозвратТоваровПоставщику(Контекст, ПараметрыСканирования, ВидПродукции);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ОплатаОтПокупателяПлатежнойКартой") Тогда
		
		ЗаполнитьПараметрыСканированияОплатаОтПокупателяПлатежнойКар­той(Контекст, ПараметрыСканирования, ВидПродукции);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ПеремещениеТоваров") Тогда
		
		ЗаполнитьПараметрыСканированияПеремещениеТоваров(Контекст, ПараметрыСканирования, ВидПродукции, Ложь);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ПоступлениеТоваров") Тогда
		
		ЗаполнитьПараметрыСканированияПоступлениеТоваров(Контекст, ПараметрыСканирования, ВидПродукции);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ПриходныйКассовыйОрдер") Тогда
		
		ЗаполнитьПараметрыСканированияПриходныйКассовыйОрдер(Контекст, ПараметрыСканирования, ВидПродукции);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.РасходныйКассовыйОрдер") Тогда
		
		ЗаполнитьПараметрыСканированияРасходныйКассовыйОрдер(Контекст, ПараметрыСканирования, ВидПродукции);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.РеализацияТоваров") Тогда
		
		ЗаполнитьПараметрыСканированияРеализацияТоваров(Контекст, ПараметрыСканирования, ВидПродукции);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.РегистрацияБезналичнойОплаты") Тогда
		
		ЗаполнитьПараметрыСканированияРегистрацияБезналичнойОплаты(Контекст, ПараметрыСканирования, ВидПродукции);
		
	ИначеЕсли ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Документ.ЧекККМ")
		Или ШтрихкодированиеИСКлиентСервер.ЭтоКонтекстОбъекта(Контекст, "Обработка.РМКУправляемыйРежим") Тогда
		
		ЗаполнитьПараметрыСканированияЧекККМ(Контекст, ПараметрыСканирования, ВидПродукции, Ложь);
		
	КонецЕсли;
	
	ЗаполнитьБазовыеПараметрыСканирования(ПараметрыСканирования, Контекст);
	
КонецПроцедуры

Показать


И это в каждом общем модуле, перенести все функции в обработку конечно затруднительно, почти все процедуры не экспортные.
На клиенте я еще могу передать подменить имя формы,
ПолучитьФорму("Обработка.РМКУправляемыйРежим.Форма.Форма");

И передать её, но на сервере нельзя.

Соответственно изменить имя формы тоже не возможно, может кто натолкнет на мысль как это можно сделать.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. ishelper 21.12.21 18:12 Сейчас в теме
(1)
Есть у меня публикация https://infostart.ru/public/******/
Ай-яй-яй, публикация-то платная (за рубли), да еще и неплохо продаваемая - Инфостарт старается такие максимально анонимизировать, чтобы никто не пытался договориться с автором "мимо кассы".

Поэтому даже в комментариях к таким публикациям авторы скрыты за общим ником "Техподдержка".

В свете этого данная ветка может быть в лучшем случае отредактирована модераторами, в худшем (наиболее вероятном) - просто удалена... вместе с объявленным вознаграждением.

Поэтому советую как можно скорее выдать его кому угодно, хотя бы - себе, просто чтобы $m не пропали.
7. Di_Denis 403 21.12.21 18:17 Сейчас в теме
(5) Не жалко, отредактирует модератор или нет, мне нужно решение проблемы.
9. ishelper 21.12.21 18:24 Сейчас в теме +3 $m
(8)
что мешает кликнуть на мой профиль и увидеть публикацию
То же самое - политика Инфостарта: в вашем профиле эта публикация видна только вам - когда другие пользователи (например, я) открывают ваш профиль, то там только публикации за стартмани.
(7)
мне нужно решение проблемы.
Тогда выдайте нынешние 3 $m себе, а в ветке (этой или следующей, как получится) просто пообещайте вознаграждение тому, кто предложит решение, если оно вас устроит (и если успеете его увидеть) - назначите и тут же выдадите.

P.S. Я не шучу.
10. Di_Denis 403 21.12.21 18:36 Сейчас в теме
(9)Пришлось создать еще профиль что проверить убедил.
8. Di_Denis 403 21.12.21 18:18 Сейчас в теме
(5)Тем более что мешает кликнуть на мой профиль и увидеть публикацию.
11. Di_Denis 403 21.12.21 18:40 Сейчас в теме
12. ishelper 21.12.21 18:50 Сейчас в теме
(10) Спасибо за столь высокую оценку моих скромных советов - не рассчитывал (на все 3 $m - уж точно!).

По теме: ИМХО, перенос всех нужных функций в обработку - единственное правильное решение. "Правильное" не столько с точки зрения программиста, сколько с точки зрения политики 1С: "базовая - один пользователь - одна организация".

Ваша обработка существенно меняет ограничения базовой, что может не понравиться фирме 1С, а Инфостарт - ее официальный партнер.
2. alxint 21.12.21 17:32 Сейчас в теме
А в базовой версии стандартный механизм работы с двумя кассами не работает?
4. Di_Denis 403 21.12.21 18:06 Сейчас в теме
(2) Не так как хотелось бы.
3. user1461477 21.12.21 17:44 Сейчас в теме
Из своей внешней создаешь встроенную, из своей вызываешь методы встроенной и получаешь возвраты ее функций
6. Di_Denis 403 21.12.21 18:14 Сейчас в теме
(3) Там можно сделать если обработка специально была сделана, чтоб её функции можно было вызвать.
Или можно пример кода?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот