| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > 1c 8.2 вывод формы при проведение документа |
| Автор: Antey 2.11.2011, 01:02 |
| Добрый день. Имеется клиент-серверный вариант базы УПП. Создал подписку на событие ПередЗаписью для определенных видов документов. по событию подписки вызывается процедура из некоторого общего модуля, для которого установлены свойства: клиент упр. приложение, сервер, внешнее соединение и клиент обычное приложение. В процедуре выполняются некоторые условия по документам, и если документ не проходит условия проверки, то Отказ = Истина, и на экран должна выводится форма из общих форм, куда пользователь может ввести информацию (форма открывается не модально, чтобы не влиять на транзакции при про проведение документа). Проблема возникает именно с выводом формы на экран: все условия проверки документов выполняются на сервере, и соответственно на сервере открытие интерактивных форм не возможно. Процедура СобытиеПодписки(......) ... Если Не ДокументПрошелПроверку() Тогда Отказ = Истина; ВывестиДиалогВопроса(); КонецЕсли; ... КонецПроцедуры Если процедуру ВывестиДиалогВопроса поместить в условие #Если Клиент, то ничего не происходит, как-будто СобытиеПодписки компилируется только на сервере. Хотя в синтаксис помощнике указано, что "Экземпляры всех общих модулей создаются как на серверной, так и на клиентской стороне", поэтому по идее процедура СобытиеПодписки должно иметь экземпляры как на сервере, так и на клиенте. Или я не прав? |
| Автор: Antey 2.11.2011, 03:19 |
| Вопрос снят. Оказалось, что вызов перед записью в налоговый регистр происходил несколько раз, если в первом вызове процедура была скомпилена как на стороне сервера, так и на стороне клиента, то уже следующие вызовы были сформированы только на стороне сервера. В качестве проверки, в процедуре подписки разместил кусок для теста: #Если Клиент Тогда сообщить("клиент"); #КонецЕсли #Если Сервер Тогда сообщить("сервер"); #КонецЕсли #Если ТолстыйКлиентОбычноеПриложение Тогда сообщить("тол. клиент обычное приложение"); #КонецЕсли #Если ТолстыйКлиентУправляемоеПриложение Тогда сообщить("тол. клиент управляемо приложение"); #КонецЕсли При выполнение проведения одного из документов получил след. сообщения: сервер клиент тол. клиент обычное приложение тест тест тест |