Вызов сервера 1с общий модуль что значит
Перейти к содержимому

Вызов сервера 1с общий модуль что значит

  • автор:

1С. Свойства общего модуля: «Сервер» и «Вызов сервера».

В конфигурации 1С:Предприятие у общего модуля есть свойства «Сервер» и «Вызов сервера». Как же они работают?

Включение свойства «Сервер» означает, что общий модуль исполняется только на сервере, а его экспортируемые процедуры и функции могут быть вызваны из других серверных модулей.

Включение свойства «Вызов сервера» значит, что экспортируемые процедуры и функции общего модуля могут быть вызываны как из серверных модулей, так и из клиентских.

  • Общий модуль
  • Программирование 1С

Свойства общего модуля

У общего модуля есть свойства:
Клиент, Сервер, Вызов сервера.
Если одновременно поставить Клиент и Сервер, процедуры можно будет вызвать как с клиента, так и сервера.
Если одновременно поставить Сервер и Вызов сервера, процедуры также можно будет вызвать как с клиента, так и сервера.
В чём отличие?

По теме из базы знаний

  • [Общий модуль] Динамическое формирование интерфейса
  • Свойства общих модулей
  • Онлайн просмотр текстов модулей
  • Полезный код для программистов 1С (часть 4). Работа с файловой системой Асинх (аналог общего модуля БСП)
  • Общий модуль расчета суммы
  • Дата
  • Дата
  • Рейтинг всех уровней
  • Рейтинг 1-го уровня
  • Древо развёрнутое
  • Древо свернутое

Свернуть все
2. user5300 958 28.07.21 15:35 Сейчас в теме
Прикрепленные файлы:
6. Дон Кихот 29.07.21 10:15 Сейчас в теме

(2) Разобрался, получается если поставить Клиент и Сервер, тогда в общем модуле можно будет разделить процедуры и функции на директивы:
&НаКлиенте,
&НаСервере.
И вызываться они будут соответственно. Если не делить, они будут вызываться и с клиентских процедур и с серверных.
А если поставить Сервер и Вызов сервера, то в таком общем модуле процедуры и функции будут работать под директивой &НаСервере, а вызываться будут и с клиентских и с серверных процедур и функций.
Может к этому нужно что-то добавить?

7. FatPanzer 29.07.21 10:19 Сейчас в теме

(6) Не совсем так. На Клиент-Сервере разделять конечно можно, но смысла нет ВООБЩЕ. Обычно там размещают процедуры, которые могут работать как на клиенте, так и на сервере (смотря откуда вызвать) — это работы с коллекциями, с общими объектами, с COM, и т.д.

8. Дон Кихот 29.07.21 10:27 Сейчас в теме

(7)Модуль со свойствами Сервер и Вызов сервера получается тоже подойдёт для этих целей (работы с коллекциями, с общими объектами, с COM, и т.д. )?

9. FatPanzer 29.07.21 10:30 Сейчас в теме

(8) Нет, это чисто серверный модуль. Но доступный для вызова с клиента. Выполняется всегда на сервере, соответственно все параметры передаются на с клиента на сервер (и обратно потом), поэтому есть ограничения.

11. Дон Кихот 29.07.21 10:39 Сейчас в теме

(9) Получается если общий модуль со свойствами Клиент и Сервер будет вызываться с клиентской процедуры или функции, и данные сервера в коде общего модуля получаться не будут, тогда вызова сервера не будет, правильно?

12. FatPanzer 29.07.21 10:42 Сейчас в теме

(11) Именно так. При вызове из клиентской процедуры — код будет выполняться на клиенте же (без вызова сервера). При вызове этого же метода с сервера — ровно этот же код будет выполняться на сервере.

3. Sashares 34 28.07.21 15:58 Сейчас в теме
В чём отличие?

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

4. DJ_Codebase 28.07.21 21:50 Сейчас в теме

(1) Клиент — модуль компилируется на клиенте. Вызов сервера — можно вызывать с клиента, без этой опции — только «сервер-сервер»

5. user856012 13 28.07.21 22:00 Сейчас в теме
У общего модуля есть свойства:
Клиент, Сервер, Вызов сервера.

. и очень похоже, что по мнению автора, эти свойства работают только в среде Windows и в государстве Россия?

Иначе зачем было лепить эти теги в оформлении ветки?

Общие модули в 1С 8.3

Анна Викулина

На общих модулях лежит обязанность хранения процедур и функций, которые вызываются из других мест системы 1С. Считается хорошим тоном размещение кода, вызывающегося несколько раз, в процедуре в общем модуле. Это правило универсально для всех конфигураций, поэтому любой разработчик 1С должен уметь работать с этими объектами конфигурации. Для этого нужно понимать все нюансы и уметь правильно использовать предоставленные платформой возможности.

Создание общего модуля в 1С

После создания функции в одном из модулей объекта возникла потребность использовать аналогичный алгоритм в другом месте. Самое правильно, что можно здесь сделать – перенести код в общий модуль, но перед этим необходимо создать его. Чтобы это сделать, нам нужно зайти в конфигуратор и в дереве конфигурации найти вкладку «Общие». Затем выделить «Общие модули» и воспользоваться кнопкой в виде белого плюса на зеленом кружке.

Общие модули

Справа откроются свойства добавленного общего модуля, и нам предстоит разобраться, что обозначает каждое из них. Они могут быть различной направленности, поэтому, перед тем как настраивать новый объект, желательно определиться, что мы там будем хранить. Если что, в будущем можно будет изменить свойства в соответствии с задачами:

  • «Глобальный». Данный флаг ставится, если модуль предназначен для хранения процедур и функций, которые должны вызываться без указания имени модуля. Естественно, они должны быть экспортными, а их имена уникальными в разрезе всего глобального контекста. По использованию они не будут отличаться от стандартных функций платформы;
  • «Клиент». Зависит от настроек системы и регламентирует, могут ли процедуры модуля выполняться на стороне клиента;
  • «Сервер». Помечаются общие модули, в составе которых планируется помещать алгоритмы для выполнения на сервере;
  • «Внешнее соединение». Процедуры модуля с активацией этого свойства смогут выполняться через подключение внешнего источника;
  • «Вызов сервера». Отвечает за разрешения процедурам из модуля вызывать сервер, выполняясь на клиенте;
  • «Привилегированный». Активация этой настройки позволит при работе кода процедур модуля не проверять права доступа. Вызвать общий модуль с такой настройкой можно только на сервере. Настройки «Клиент» и «Внешнее соединение» будут сброшены;
  • «Повторное использование». Может принимать значения: «Не использовать», «На время сеанса», «На время вызова». При многократном вызове одной процедуры система может использовать рассчитанные ранее данные в рамках процедуры (вызов) или жизни всего сеанса (запуска 1С). Стоит быть очень осторожным с этой настройкой, так как из-за неправильного использования таких модулей могут возникать ошибки.

Свойства

Бывают ситуации, когда требуется создать общий модуль с вызовами процедуры на сервере и клиенте с отличиями в алгоритме. Для разграничения кода используются директивы препроцессора с проверкой. В результате для серверного вызова это будет один код, а для клиентского – другой.

 Процедура АлгоритмСерверКлиент() Экспорт #Если ТонкийКлиент Тогда // код выполняется, если вызов процедуры пришел с клиента ПоказатьОповещениеПользователя("На клиенте"); ИначеЕсли Сервер Тогда // код выполняется, если вызов процедуры пришел с сервера ПеременнаяСервер = "Серверный вызов"; #КонецЕсли КонецПроцедуры 

Пример переноса кода в общий модуль 1С

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

 &НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) ПересчетСуммы(); КонецПроцедуры &НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) ПересчетСуммы(); КонецПроцедуры &НаКлиенте Процедура ПересчетСуммы() СтрокаТЧ = Элементы.Товары.ТекущиеДанные; СтрокаТЧ.Сумма = СтрокаТЧ.Количество * СтрокаТЧ.Цена; КонецПроцедуры 

Так как для нашей задачи нам хватает вызова с клиента и не нужны данные из базы, ставим только флаг «Клиент». Если вы хотите в дальнейшем использовать этот же модуль для более сложных расчетов, то отметьте в свойствах еще и «Сервер». Подготовительный этап завершен и можем переходить к написанию кода.

Написание кода

Создадим экспортную процедуру в модуле и перенесем туда алгоритм расчета суммы из процедуры в модуле формы. В качестве параметра процедуры на входе будет использоваться строка табличной части. В модуле формы документа меняем вызовы процедуры в том же модуле на вызов процедуры из общего модуля.

Меняем вызовы процедуры

 Процедура РассчитатьСтроку(СтрокаТабличнойЧасти) Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена; КонецПроцедуры 
 &НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) //вызов процедуры из общего модуля РасчетыВСистеме.РассчитатьСтроку(Элементы.Товары.ТекущиеДанные); //ПересчетСуммы(); КонецПроцедуры &НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) //вызов процедуры из общего модуля РасчетыВСистеме.РассчитатьСтроку(Элементы.Товары.ТекущиеДанные); //ПересчетСуммы(); КонецПроцедуры &НаКлиенте Процедура ПересчетСуммы() СтрокаТЧ = Элементы.Товары.ТекущиеДанные; СтрокаТЧ.Сумма = СтрокаТЧ.Количество * СтрокаТЧ.Цена; КонецПроцедуры 

При запуске системы мы не заметим разницы, но такую структуру кода читать и сопровождать намного удобнее. Конечно, в данном примере количество кода не может показать всей пользы. В случае сложного алгоритма для десятков объектов конфигурации выигрыш в объеме кода и его структуры скажется и на быстродействии системы. Помимо этого опытные разработчики 1С рекомендуют в модулях формы не описывать алгоритмы, а помещать их в правильно настроенные общие модули.

При разработке общих модулей следует учитывать общепринятые правила по их созданию:

  • Помещать в отдельный общий модуль процедуры и функции, относящиеся к сходному функционалу;
  • В наименовании модуля отражать его принадлежность к контексту (Клиент, Сервер) и избегать общих слов (обработчики, процедуры и т.д.);
  • Разделять внутреннюю серверную логику приложения и клиентскую для интерфейса;
  • Будьте внимательны, создавая глобальный общий модуль. Отсутствие необходимости обращаться к процедуре через имя модуля может привести к путанице, особенно, если систему поддерживает несколько групп разработчиков.

Правильно созданные модули помогут вам намного быстрее ориентироваться в структуре конфигурации и делать доработки. Если вы видите возможность сделать полезную функцию универсальной и вынести ее в общий модуль, то сделайте это. В будущем вы и ваши коллеги будете благодарны за это решение.

Свойства общих модулей в 1С

Общие модули внутри платформы системы 1С Предприятие – это некоторые объекты метаданных системы конфигурации 1С, которые содержат внутри себя такой код, к которому часто обращаются внутри конфигурации. При этом, если процедура или функция является экспортной, то её можно вызывать из любого места в конфигурации.
Таким образом отображается перечень общих модулей внутри платформы системы 1С Предприятие:

2. Применение общих модулей 1С

Чтобы применять общие модули 1С – необходимо взять функцию или процедуру и переместить в общий модуль 1С, но только в том случае, если эта функция или процедура вызывается два и более раз. Таким образом, общие модули 1С помогают уменьшить количество правок, при их необходимости, и упорядочить программный код 1С.
Примерами общего модуля 1С могут служить: перерасчёты по ценам и количествам, изменение валютных курсов, определение количества разницы рабочих дней и так далее.

3. Свойства общих модулей

Главное отличие общих модулей 1С от просто модулей – это отсутствие возможности создавать и пользоваться общими переменными. Пользуясь свойствами общих модулей, а также инструкцией от препроцессора – появляется возможность обустроить исполнение разнообразных методов по общим модулям 1С в выбранном смысле.
Все свойства в общем модуле 1С связаны с проверкой и выполнением этого самого модуля в разрезе разнообразных контекстов.
У общих модулей 1С в настройках есть довольно много разнообразных свойств, их перечень демонстрируется на скриншоте ниже:

Чтобы выбрать свойство для конкретного общего модуля 1С – необходимо около свойства общих модулей и их значения:
· «Клиент (управляемое приложение)» — свойство, которое разрешает задействовать любые методы из общего модуля 1С внутри толстого клиента в режиме управляемого приложения;
· «Клиент (обычное приложение)» — при выборе этого свойства, — появляется возможность задействовать код этого общего модуля 1С внутри толстого клиента, но лишь для режима обычного приложения;
· «Сервер» — если проставить «галочку» около этого пункта, то любые методы из этого модуля смогут быть выполнены из сервера;
· «Внешнее соединение» — при выборе этого свойства – код программы может исполнить некий внешний источник, при наличии соединения с ним, примером может служить COM;
· «Глобальный» — свойство общего модуля, которое отвечает за то, что процедурами и функциями в данном модуле можно будет пользоваться в глобальном смысле, а именно: обращаться к ним из любого расположения в конфигурации, не называя сам общий модуль 1С. Но, при этом, данное свойство общих модулей подразумевает появление одного условия, которое заключается в том, что все наименования методов в данном общем модуле 1С не должны дублировать те, которые уже существуют в глобальном контексте;
· «Вызов сервера» — это свойство отвечает за то, что с его наличием можно пользоваться содержимым конкретного общего модуля 1С в контексте клиента;
· «Привилегированный» — при наличии «галочки» около данного свойства – права по доступу не будут запрашиваться и проверяться для этого общего модуля 1С;
· «Повторное использование» — отвечает за выбор факторов настроек, которые отвечают за значения, которые возвращаются. В случае, когда это свойство подключено, то 1С условно запишет значение по содержимому входных параметров, как только проведётся первое выполнение, и вернёт конечное, готовое, значение. Данное свойство имеет три варианта – это «На время сеанса» — работает до тех пор, пока юзер внутри программы, «На время вызова» — работает до тех пор, пока исполняется конкретная процедура, «Не используется» — свойство полностью выключено. В случае, если юзером 1С было выбрано более одного свойства, то это значит, что все модульные методы могут использоваться в разных разрезах. Для случая, когда в общем модуле 1С отмечено «галочкой» около пункта «Сервер» и, при этом, также «галочкой» отмечен любой другой пункт, тогда данным модулем можно будет воспользоваться и с конкретного клиента, и с сервера. Однако, в таком случае, нужно иметь в виду, что это означает, что у нас будет несколько вариаций кода, который был скомпилирован – это количество клиентов плюс один – от серверной стороны.
Важно понимать, что если к неким функциям или процедурам, которые располагаются в этом общем модуле 1С, обратиться от клиента, тогда в ход пойдёт именно копия общего модуля с клиентской стороны, в случае же, если обращение было создано на стороне сервера, то серверная копия. Чтобы на сервере 1С программный код точно был выполнен – нужно обратиться к директивам препроцессора, которые не допускают на сервер код, который на нём не сможет выполниться. Специалист компании «Кодерлайн» Лев Туренко

Вас могут заинтересовать следующие статьи:

94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) —> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) —> Как сделать в 1С [1] => 1С: Конвертация данных [2] => Конвертация данных [3] => Обмен между базами [4] => Закрытие месяца [5] => Оценка задач [6] => Отчеты в 1С [7] => Моделирование [8] => HTTP [9] => Управление проектами [10] => БУ [11] => com-объекты [12] => 1С: WMS Управление складом [13] => РСБУ [14] => 1С: Сценарное тестирование [15] => Запросы 1С [16] => LINUX [17] => WEB [18] => Оптимизация [19] => 1С:Зарплата и Управление Персоналом [20] => Excel [21] => 1С: ERP [22] => ADO [23] => 1С:Управление производственным предприятием [24] => Внедрение [25] => Продажи [26] => Отчетность [27] => 1С: Розница [28] => 1С: CRM [29] => 1С:Бухгалтерия [30] => 1С:Комплексная автоматизация [31] => Производство [32] => Интеграция 1С [33] => Налоги [34] => Отпуск [35] => MS SQL Server [36] => Расширение конфигурации [37] => МСФО [38] => СКД [39] => Word [40] => WEB-сервисы 1С [41] => Внедрение ERP [42] => Перенос данных [43] => Торговое оборудование [44] => Лизинг [45] => 1С:Управление нашей фирмой [46] => Администрирование 1С [47] => 1С: Колледж [48] => Правила обмена [49] => 1С: Платформа ) —>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *