#0
by Domovoi
Можно ли в модуле объекта вызвать функцию Вопрос? Если нет, то может есть какой-то обходной путь?
#2
by Остап Сулейманович
"Можно ли в модуле объекта вызвать функцию Вопрос?" - Йес. Если не отключен режим использования модальности. "Если нет, то может есть какой-то обходной путь" - Йес. Можно вызвать ПоказатьВопрос.
#4
by Domovoi
Пользователю. По старинке я бы прописал #Если Клиент Тогда Вопрос(......) #КонецЕсли и все норм бы было. Как делается в УФ?
#7
by Domovoi
А как тогда делать? Процедура я буду вызывать в 10-20 местах, значит в форму ее не закинешь, но так сложилось, что посреди этой процедуры при определенных условиях надо задать вопрос. Где размещать процедуру и как задавать вопрос?
#8
by Domovoi
Ну работа в 1с это ж не только все на сервере или все на клиенте, это постоянная смена клиента и сервера.
#9
by Jonny_Khomich
разделить процедуру на 2 части. Первая часть функция, выполнится. Ты на клиенте задашь вопрос и запустишь вторую часть процедуры.
#10
by Domovoi
Учитывая, что свою процедуру я вызываю из другой процедуры, которая в свою очередь на сервере. И все переносить на клиент - это овнокод какой-то получается.
#15
by Бубка Гоп
+1. В типовых неспроста общие модули наплодили, а ля "ПодборТоваровКлиент", "ПодборТоваровСервер" и их комбинации.
#16
by fisher
+1 Более того, я на обычных формах тоже всегда так делал. Поэтому никаких проблем с "по старинке" у меня не возникало. Втыкать вопросы в процессе выполнения, когда ошибочный ответ на любой из них - "наша песня хороша, начинай с начала" или потом руками менять, это мягко говоря ненормально.
#19
by D3O
в любом модуле, при условии что он выполняется на клиенте. Т.е. модуль формы, модуль команды, общий модуль. ВСЕ.
#21
by Остап Сулейманович
Проще всего Вопрос задавать из модуля формы. Проще в том смысле, что обработчик будет скорее всего там же. Если ПоказатьВопрос и его обработчик разнесены по модулям - отладка будет сложнее. Вернее не будет наглядной.
#22
by Domovoi
Чтоб было наглядно надо писать вопрос в процедуре на сервере) Писать один и тот же вопрос в 20 местах это как-то тоже не гуд. В модуле на клиенте попробую. Но это то еще раздувательство кода, вопрос задается за черт знает сколько шагов до нужного места, т.е. сколько надо протащить ответ вопроса по всем процедурам - ужас.
#23
by D3O
ну так ТС же писал, что вопрос примерно из 10 разных мест будет вызываться. В такой ситуации пофиг удобства отладки и лучше делать общий модуль выполнимый на клиенте
#24
by fisher
Если вопрос задается в 20 местах, то напрашивается вынос этого кода в общий клиентский модуль. Если это типовая обработка каких-то элементов данных, то я обычно в два прохода делаю - проверка и выполнение. На форме в таблице отображаю элементы данных требующие интерактива по итогам первого прохода. Пользователь там же указывает требуемые параметры выполнения, которые сохраняются в той же таблице. И финальное выполнение, с учетом всех параметров. Для пользователя очень удобно. Сразу видно, есть ли проблемы или моменты требующие участия. Удобное неспешное редактирование параметров в табличной форме. Если где ошибся - ничего страшного, параметры сохраняются.
#25
by Domovoi
Ситуация у меня такая: пользователь попросил запилить кучу шаблонов и печать их из разных объектов. Я сделал одну процедуру формирования док файла из шаблона с заполнением параметров шаблона. (отдельно процедуры по заполнению параметров шаблона и т.д.). При создании доковского файла, надо сформировать название файла и узнать есть ли такой файл уже или нет и если есть то спросить пользователя хочет ли он перезаполнить договор. Вот теперь надо все перевернуть и вопрос вытащить на начальный этап, а результат запроса пригнать потом в конечную процедуру формирования файла.
#27
by fisher
Тю. Показываешь форму печати шаблона/шаблонов где отображаются названия выводимых шаблонов, найденные файлы и поле для изменения договора по умолчанию. Пользователь, если хочет, меняет договора на другие и запускает на окончательное формирование, куда передается для какого шаблона какой договор использовать.
#28
by Domovoi
А зачем столько всего? Когда нужно нажать стандартную кнопку печать и может быть потом еще кнопку да/нет(это мой вопрос). Зачем нагружать пользователя? Он же не печатает сразу кучу шаблонов. Печатается один договор, только зависит от условий какой именно.
#29
by Domovoi
Я так думаю надо все мои процедурки перекинуть в общий модуль (клиентсервер) и там все разрулить. (изначально сделал в обработке, чтоб легко между конфами можно было таскать, в частности в модуле обработки)
#30
by fisher
Это для кучи шаблонов был вариант или когда еще другие условия учесть надо. В твоем примитивном случае - да, появляется как бы усложнение, которого не было, когда весь код в одном месте исполнялся. Нужно при необходимости вернутся на клиента, задать вопрос и повторно выполнить алгоритм с передачей уточняющего параметра. Ну а куда деваться? УФ - это клиент-серверное программирование со всеми вытекающими. Постоянно нужно держать эту модель в голове. Вот твой клиент рядом с ногой стоит, вот клиент-серверный вызов на другой конец земного шара, вот исполнение на секретном сервере в Антарктике. И нет никакой разницы, если на самом деле это не так.
#31
by fisher
Наверное, придется. В плане удобства без разницы - таскать между конфами встроенную обработку или общий модуль. Вернее, через модуль даже удобнее и лаконичнее. Это в 7.7 приходилось через обработки изгаляться, чтобы как-то структурировать.
#32
by DexterMorgan
, Это все так, вот только если на сервере - бездушная машина, как работает СообщитьПользователю в модуле объекта?
#34
by Timon1405
Копит сообщения и выводит при возврате управления на клиента. см. ПолучитьСообщенияПользователю (GetUserMessages)
#35
by fisher
С фоновым заданием еще смешнее. Бездушная машина их сама себе нашептывает и никому не говорит. Но при желании можно подсмотреть (через это прогресс-бар в БСП реализован).
#36
by fisher
А так, в всё верно. Пока серверный алгоритм не закончит работу, на клиенте никаких сообщений не появится. Они потом все скопом упадут (после возврата управления на клиент вычитывается буфер сообщений). Штатно никакого асинхронного взаимодействия нет. О нем надо самому заботиться, если надо.
#37
by Domovoi
Перекинул свою процедурки в общий модуль, стал там делить на процедуры на клиенте и на сервере. Возникла проблема: в процедурах "на клиенте" не хотят вызываться процедуры "на сервере" ошибка выдается. Можно ли как то сделать, чтобы процедуры на сервере вызывались из процедур на клиенте?
#38
by DexterMorgan
да понятно, просто удобная фича, я вот хочу тоже сложить в буфер данные какие нить во время проведения, не строкой, а на клиенте потом обработать, как вот замутить без геморра?
#44
by Lucky-1
Нельзя: ... Доступность: Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). ...
#48
by Domovoi
Процедуры в одном модуле (но попробовал - не помогло) В справочнике итак предопределенные значения. Из-за того что Справочники. можно использовать только на сервере, пришлось заводить процедуру проверки на сервере. Или все-таки как-то можно ан клиенте это организовать?
#50
by Domovoi
Справочники (Catalogs) Использование: Только чтение. Описание: Тип: КоллекцияОбъектовМетаданных. Коллекция объектов метаданных, которые описывают все справочники, определенные в конфигурации. Элементами коллекции являются объекты типа ОбъектМетаданных: Справочник. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
#51
by Ligor
ПредопределенноеЗначение(<ИмяПредопределенногоЗначения>) Параметры: Тип: Строка. Содержит полный путь до предопределенного значения, включая имя самого значения. Например, "ПланСчетов.Основной.Счет41". ... Возвращаемое значение: Тип: Ссылка на объект информационной базы. Описание: Возвращает ссылку на предопределенный элемент из предопределенных данных, прикладных перечислений и точек маршрута бизнес-процессов, а также значения системных перечислений. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
#52
by Domovoi
Ага понял. С этим справился. Но есть процедура, которая все равно выполняется на сервере и вызывается из процедуры которая выполняется на клиенте. Что делать?
#57
by WebberNSK
предлагаю сначала изучить в теории как нужно писать код в клиент-серверной архитектуре, потом посмотреть типовые конфигурации -УП2,УТ11,УНФ (там есть ответы на все вопросы)... тогда подобных вопросов не будет, в принципе
#60
by Domovoi
Это верный путь, но он на несколько месяцев, а задание уже сейчас, и надо сделать так чтоб было все хорошо. Тэкс в итоге получилась полная фигня: код серверный выполняется код, код на клиенте, тупо пропускается. Надо еще искать методику. 3 вшивые процедуры, которые надо выполнить на сервере, но в одной из них вклинить вопрос для клиента, целый день крутишь вертишь, чтоб как-то что-то заработало и код раздувается в несколько раз... - мать его прогресс.
#64
by Domovoi
А как в управляемом приложении, переключится на выполнение кода под толстым клиентом и потом назад под управляемое приложение?
#65
by Ligor
Вроде можно и упр формы + толстый клиент + условие(а может и не нужно оно точно не помню) Условие: #Если Клинет Тогда вопрос(...); #КонецЕсли
#71
by Domovoi
Пробовал, просто пропускается код. Вообще не понятно зачем "#Если Клинет Тогда", если код тупо пропускается. В толстом клиенте все было понятно: В модуле выполняется процедура на сервере, но если вставляешь условие клиента, то для клиента выполнится код в теле условия. Тут не понятно какая логика. Читал, не помогло. Кто ж спасет Блр?)
#72
by Бубка Гоп
Может я что то не понимаю, но в клиент-серверной архитектуре код "#Если Клиент Тогда..." вообще не имеет смысла
#74
by Бубка Гоп
потому что распределение исполнения кода регулируется директивами и свойствами модулей
#78
by Бубка Гоп
в таких модулях обычно используются процедуры, которые отработают и на клиенте и на сервере без ошибок.
#80
by VikingKosmo
директивы Клиент, Сервер и пр. вообще не только для того, что бы код без ошибок отрабатывал...
#82
by Бубка Гоп
с таким успехом можно все модули сделать КлиентСервер и использовать мега конструкции, как в . Но смысл архитектуры теряется
#85
by fisher
В толстом клиенте был только один способ выполнить код именно на сервере - обратиться к процедуре общего модуля, который компилируется только на сервере и нигде больше. Во всех других случаях модуль компилировался на клиенте тоже и исполнялся тоже там. Ну, фоновые задания еще. Т.е. в типовом приложении 99,9% исполнялось на клиенте. Директивы компиляции работают абсолютно одинаково в обычном приложении и управляемом. Если модуль компилируется одновременно в нескольких ипостасях, то конструкции вида #Если позволяют модифицировать эти самые ипостаси. Всего лишь. На выбор ипостаси это не влияет НИКАК. Т.е. если у тебя стоит #Если Клиент, а исполняется серверная версия модуля (потому что вызов пришел с сервера), то этого куска там просто не будет.
#86
by Domovoi
От сервера к клиенту перейти нельзя? Если я допустим запустил процедуру выполняемую на сервере, то я уже не могу перейти в процедуру выполняемую на клиенте?
#89
by fisher
Нет. Если нужна асинхронность, то можно запустить серверный алгоритм фоновым заданием. Тогда управление останется на клиенте. В противном случае клиент ждет, пока закончит выполняться серверный алгоритм. Либо можно разбивать серверную обработку на порции/этапы, с возвратом управления на клиента.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Выполнение запроса в модуле документа и модуле формы. В чем разница?
- Как вызвать процедуру менеджера объекта из обработчика команды объекта?
- Вид списка в УФ(управляемой форме) 8.2
- Внеш. обработка, УФ: как вызвать функцию из модуля объекта на клиенте?
- v7: Как распечатать список всех процедур в модуле и модуле формы документа
- Какие процедуры-функции размещать в модуле формы, а какие в модуле объекта ?
- Переменная в модуле объекта УФ
- v8: Методика написания конфигураций на УФ, общие модули. Подскажите неофиту УФ
- Как в Модуле Формы вызвать процедуру из Модуля Объекта?
- УФ Как из модуля команды вызвать процедуру модуля объекта?
- обход данных табличной части формы в УФ
- Как вызвать функцию из управляемой формы содержащейся в модуле другого объекта?
В этой группе 1С
- 1C 8.3 Ут 11.1 Сканер штрихкода во внешней обработке (сом-порт)
- Свое чередование подсветки строки в документе
- 1С 8 Защита поля табличного документа на форме
- Виды блокировок в консоли администрирования 1С82
- Динамическое программное добавление табличного документа на УФ.
- Корректировка поступления в Комплексной автоматизации
- Получить в СКД данные по документу регистратору и не выводить колонки если нет д
- v7: Как найти элемент справочника по его периодическому реквизиту (его значению)?
- Бухгалтерия 3.0. Отключить лишние подсистемы в меню.
- Среднедневное потребление в УТ 11.1
- Просмотр истории открытия сеансов в 1С Предприятие
- Каким параметром можно вывести только фамилию из полного имени?
- Альфа-авто. Заказ-наряд на основании заявки на ремонт
- Весы Тензо-М и наис
- Длина строки в запросе.
- Актуальный прайс для клиентов (УТ 10)
- Выгрузка в битрикс пользовательских справочников (привязка к номенклатуре)
- Заполнение ТЧ документа из ТЧ другого документа или заполнение тч и запроса
- УПП Рауз. Проводки реализации по счет 90,02
- остатки при подборе номенклатуры