fixin (fixin) wrote,
fixin
fixin

Category:

1С и искусственные серверные барьеры

Заметил, что в управляемых формах 1С принуждает программистов к плохой архитектуре решений.

Вкратце упомяну, что теперь большинство внешних обработок нельзя прервать по CTRL+Break, т.к. они выполняются на сервере, но сейчас речь не об этом.

Проблема более глобальная.

Если раньше программисты выносили код в общие модули, то теперь в управляемых формах нельзя вызвать код общего серверного модуля с клиента, передав туда форму.

Это провоцирует писать весь код в модуле формы или писать обертку для таких вызовов, но опять же в модуле формы.

На одном из проектов у нас была цель – минимальное вмешательство в типовые формы, поэтому лепить дополнительные процедуры было нельзя. Максимум – некий набор стандартизированных процедур, который легко бы вставлялся парсером.

Поэтому я поступил так – в стандартный набор процедур добавил процедуру-затычку, чтобы можно было с клиента обращаться к серверным общим модулям, имея контекст формы.


Процедура:
&НаСервере
Функция ОбработатьНаСервере(ИмяМетода, Параметры = Неопределено) Экспорт
 Выполнить
ИмяМетода + "(ЭтаФорма, Параметры)";
 Возврат
Параметры;
КонецФункции

Пример вызова:


 Форма.ОбработатьНаСервере("СерверныйМодуль.ВидЗаявкиПриИзмененииНаСервере", Неопределено);

Правда, элементы формы туда по-прежнему передать нельзя, но зато можно передать форму, а это уже полдела. Можно и названия элементов передавать. Намного удобнее, чем сериализовать вручную.

Ну и еще добавил парочку процедур, чтобы можно было обращаться к не экспортным методам формы, а то процедуры в форме могут обращаться, а процедуры из общих модулей уже нет – несправедливо:


&НаКлиенте
Функция ВыполнитьКодНаКлиенте(Код, Параметры = Неопределено) Экспорт
 Выполнить
Код;
 Возврат
Параметры;
КонецФункции

&НаСервере
Функция ВыполнитьКодНаСервере(Код, Параметры = Неопределено) Экспорт
 Выполнить
Код;
 Возврат
Параметры;
КонецФункции


 

Tags:
Subscribe
promo fixin december 31, 2037 16:57 1417
Buy for 30 tokens
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок - список. Мой проект "…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 18 comments