Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:53

Передача значения переменной из модуля объекта в модуль формы (8.3 управляемое приложение)

Автор Dmitrii_r, 16 фев 2018, 16:53

0 Пользователей и 1 гость просматривают эту тему.

Dmitrii_r

Цитата: AIFrame от 19 фев 2018, 04:24
Цитата: Dmitrii_r от 18 фев 2018, 09:51но пробовал в ОбработкаЗаполнения поместить мое значение в хранилище
Зачем, если основание по твоей логике содержит в себе признак - открывать форму или нет.
Проверь это и установи нужный параметр у открываемого документа, а потом не открой его, если параметр так указывает.
Так и сделал, у открываемого документа создал дополнительный реквизит и в ПриСозданииНаСервере проверяю этот реквизит. Только я так понимаю, что можно без реквизита это сделать, может в открываемом документе значение в дополнительные свойства закинуть или в параметры, сейчас попробую.

Проверил, если в ДополнительныеСвойтсва значение закидывать, то в ПриСозданииНаСервере в доп свойствах ничего нет.

AIFrame

Цитата: Dmitrii_r от 19 фев 2018, 12:58Так и сделал, у открываемого документа создал дополнительный реквизит
Зачем?
Тебе нужно запретить создание на основании при определенных условиях. У тебя же этот твой "новый реквизит" принимает значение ПРИ КАКИХ-ТО УСЛОВИЯХ, так?
По вводу на основании У ТЕБЯ ЕСТЬ ССЫЛКА на документ, на основании которого тебе нужно разрешить или запретить ввод нового документа.
Ну так и проверни ВСЮ ЭТУ ЛОГИКУ пользуясь ССЫЛКОЙ на документ, на основании которого хотят создать ЭТОТ документ.
Никакие реквизиты не нужны.

Dmitrii_r

Цитата: AIFrame от 19 фев 2018, 13:09
Цитата: Dmitrii_r от 19 фев 2018, 12:58Так и сделал, у открываемого документа создал дополнительный реквизит
Зачем?
Тебе нужно запретить создание на основании при определенных условиях. У тебя же этот твой "новый реквизит" принимает значение ПРИ КАКИХ-ТО УСЛОВИЯХ, так?
По вводу на основании У ТЕБЯ ЕСТЬ ССЫЛКА на документ, на основании которого тебе нужно разрешить или запретить ввод нового документа.
Ну так и проверни ВСЮ ЭТУ ЛОГИКУ пользуясь ССЫЛКОЙ на документ, на основании которого хотят создать ЭТОТ документ.
Никакие реквизиты не нужны.

На ум приходит только написать проверку в модуле формы у документа, который создается в ПриСозданииНаСервере и там уже проверять ДокументОснование, но в таком случае процедура ОбработкаЗаполнения отработает в холостую.

AIFrame

Да при чем тут форма вообще. :kmtu:
Создание нового объекта можно и нужно отслеживать и брить в модуле объекта или по подписке на аналогичное событие на сервере.
Нет документа - нет формы.

Dmitrii_r

Цитата: AIFrame от 19 фев 2018, 16:15
Да при чем тут форма вообще. :kmtu:
Создание нового объекта можно и нужно отслеживать и брить в модуле объекта или по подписке на аналогичное событие на сервере.
Нет документа - нет формы.

Пример кода для модуля объекта можете написать ?

AIFrame

В модуле объекта (НЕ формы) документа, который ты не хочешь открывать, в процедуре
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Пишешь
Если ЭтоНовый() И РеквизитОснования.Что_То_Там <> то_что_мы_хотим Тогда
Отказ = Истина;
КонецЕсли;

РеквизитОснования = Ссылка на документ-основание. Имя реквизита будет зависеть от самого документа. Для РТУ - это ЗаказПокупателя, например.
Т.к. ты не пишешь, где ты это все пытаешься применить, на каких документах, по какой логике, если на самописке - какая структура реквизитов у этих объектов - то и пример кода ты получишь соответствующий.


И точно также можешь проверить на клиенте ПриОткрытии()
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если Параметры.Ключ.Пустая() И НеНужноЭтоОткрыватьНаСервере() Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

&НаСервере
Функция НеНужноЭтоОткрыватьНаСервере()
    Если Объект.РеквизитОснования.Что_То_Там <> то_что_мы_хотим Тогда
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции

Dmitrii_r

Цитата: AIFrame от 20 фев 2018, 11:08
В модуле объекта (НЕ формы) документа, который ты не хочешь открывать, в процедуре
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Пишешь
Если ЭтоНовый() И РеквизитОснования.Что_То_Там <> то_что_мы_хотим Тогда
Отказ = Истина;
КонецЕсли;

РеквизитОснования = Ссылка на документ-основание. Имя реквизита будет зависеть от самого документа. Для РТУ - это ЗаказПокупателя, например.
Т.к. ты не пишешь, где ты это все пытаешься применить, на каких документах, по какой логике, если на самописке - какая структура реквизитов у этих объектов - то и пример кода ты получишь соответствующий.


И точно также можешь проверить на клиенте ПриОткрытии()
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если Параметры.Ключ.Пустая() И НеНужноЭтоОткрыватьНаСервере() Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

&НаСервере
Функция НеНужноЭтоОткрыватьНаСервере()
    Если Объект.РеквизитОснования.Что_То_Там <> то_что_мы_хотим Тогда
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции


Ну смотрите,  если делать в модуле объекта в процедуре ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) то по логике понятно, что сам объект буден создан, так само событие ПередЗаписью работает только после того как объект создается, даже если просто в ПередЗаписью сделать сразу Отказ = Истина это никак не влияет на создание документа и форма откроется в этом случае.

А вот второй пример вполне себе рабочий, ну опять же на этом примере мы вернулись в модуль формы)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск