Внешнее заполнение формы на БСП. Вызов метода формы, из общего модуля, завершается ошибкой.
Добрый день.
Прошу помощи разобраться в мистике.
Конфигурация БП для Беларуси (БСП версии 3.1.2.527). При выполнении внешней обработки с типом "Заполнение формы" возникает ошибка. Вызов обработки происходит из формы элемента, справочника "Контрагенты"
Выполнение обработки завершается ошибкой "Метод объекта не обнаружен (Подключаемый_ВыполнитьКомандуНаСервере)"
Вызов метода осуществляется в общем модуле "ПодключаемыеКомандыКлиент", процедура "ПродолжитьВыполнениеКоманды"
В "форме элемента", справочника "контрагенты" вызываемая процедура присутствует, но не является экспортной.
Вся мистика состоит в том, что аналогичный код работает в других конфигурациях ("Комплексная автоматизация" и "Демо_БСП"). Там вызов не экспортной процедуры проходит успешно.
Вопрос: в чем может быть дело?? Как исправить эту ошибку не снимая конфигурацию с поддержки?
Прошу помощи разобраться в мистике.
Конфигурация БП для Беларуси (БСП версии 3.1.2.527). При выполнении внешней обработки с типом "Заполнение формы" возникает ошибка. Вызов обработки происходит из формы элемента, справочника "Контрагенты"
Выполнение обработки завершается ошибкой "Метод объекта не обнаружен (Подключаемый_ВыполнитьКомандуНаСервере)"
Вызов метода осуществляется в общем модуле "ПодключаемыеКомандыКлиент", процедура "ПродолжитьВыполнениеКоманды"
Контекст.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
В "форме элемента", справочника "контрагенты" вызываемая процедура присутствует, но не является экспортной.
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
Вся мистика состоит в том, что аналогичный код работает в других конфигурациях ("Комплексная автоматизация" и "Демо_БСП"). Там вызов не экспортной процедуры проходит успешно.
Вопрос: в чем может быть дело?? Как исправить эту ошибку не снимая конфигурацию с поддержки?
Найденные решения
С какой-то версии платформы убрали возможность вызывать неэкспотрные серверные процедуры модуля управляемой формы. Вам надо либо добавить "Экспорт" для Подключаемый_ВыполнитьКомандуНаСервере, либо понизить версию платформы (возможно версию совместимости, но это не точно).
(1)
можно попробовать в расширении заменить кусок кода
Только предварительно нужно создать общий модуль с вызовом сервера и положить туда код
Контекст.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
можно попробовать в расширении заменить кусок кода
ПараметрыВыполнения.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
//заменить на
СвойМодульВызовСервера.ВыполнитьКоманду(ПараметрыВыполнения.Форма, СерверныйКонтекст, ПараметрыВыполнения.Форма.Объект, Результат);
Только предварительно нужно создать общий модуль с вызовом сервера и положить туда код
ПодключаемыеКоманды.ВыполнитьКоманду(ПараметрыВыполнения.Форма, СерверныйКонтекст, ПараметрыВыполнения.Форма.Объект, Результат);
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
можно попробовать в расширении заменить кусок кода
Только предварительно нужно создать общий модуль с вызовом сервера и положить туда код
Контекст.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
можно попробовать в расширении заменить кусок кода
ПараметрыВыполнения.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
//заменить на
СвойМодульВызовСервера.ВыполнитьКоманду(ПараметрыВыполнения.Форма, СерверныйКонтекст, ПараметрыВыполнения.Форма.Объект, Результат);
Только предварительно нужно создать общий модуль с вызовом сервера и положить туда код
ПодключаемыеКоманды.ВыполнитьКоманду(ПараметрыВыполнения.Форма, СерверныйКонтекст, ПараметрыВыполнения.Форма.Объект, Результат);
(4) Так могут поломаться подключаемые команды в списках с вызовом серверного метода, так как там основной реквизит Список, а не Объект. Например внешние печатные формы могут не взлететь. Если пошли по этому пути, нужно дополнительно вычислять имя основного реквизита формы.
(6) Спасибо за замечание. Я слишком бегло глянул на (1) и сказал, что поступил также. Поступил я слегка иначе.
Этот участок кода
заменил (в расширении) на
Заполняемую форму вынес в расширение, и в ней добавил дубль, только экспортный, исходной процедуры.
А, например, внешние печатные формы вызывают другую процедуру. В противном случае они бы перестали работать из-за НЕ экспортной процедуры. Да и решение, надеюсь, временное, так как ошибка должна охватывать все конфигурации, выполненные на БСП, и не может долго оставаться незамеченной разработчиками.
Этот участок кода
ПараметрыВыполнения.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
заменил (в расширении) на
Если Контекст.Форма.ИмяФормы = "Документ.ПоступлениеНаРасчетныйСчет.Форма.ФормаДокумента" Тогда
Контекст.Форма.Расш_Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
Иначе
Контекст.Форма.Подключаемый_ВыполнитьКомандуНаСервере(СерверныйКонтекст, Результат);
КонецЕсли;
Заполняемую форму вынес в расширение, и в ней добавил дубль, только экспортный, исходной процедуры.
А, например, внешние печатные формы вызывают другую процедуру. В противном случае они бы перестали работать из-за НЕ экспортной процедуры. Да и решение, надеюсь, временное, так как ошибка должна охватывать все конфигурации, выполненные на БСП, и не может долго оставаться незамеченной разработчиками.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот