Имя: Пароль:
1C
1С v8
Упр.форма. В какой процедуре на форме доступно свойство ДополнительныеСвойства?
0 Birmingem
 
27.11.19
14:52
Задача, из модуля объекта передать в модуль формы какое то значение.
В инете есть примеры с использованием ДополнительныеСвойства:
/ в модуле документа
Процедура ОбработкаЗаполнения(Основание)
      ДополнительныеСвойства.Вставить("ОбработкаЗаполненияОтказ", Истина);
КонецПроцедуры

//в модуле формы
Процедура ПередОткрытием(Отказ)
   Если ДополнительсныеСвойства.Свойство("ОбработкаЗаполненияОтказ") Тогда
КонецПроцедуры

Попробовал, не нашел в какой же процедуре в модуле формы существует ДополнительныеСвойства. Везде ругается что нет такого.
Или это только для обычных форм и в упр.формах это свойство отменили?
Тогда какие есть варианты передать временное значение из модуля документа в модуль формы?
1 Fish
 
27.11.19
14:53
Дополнительные свойства - это у объекта.
2 aleks_default
 
27.11.19
14:54
В модуле формы нужно обращаться Объект.ДополнительныеСвойства
3 GROOVY
 
27.11.19
14:55
ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)
ДополнительныеСвойства (AdditionalProperties)
Использование:
Только чтение.
Описание:
Тип: Структура.
Может использоваться в тех случаях, когда необходимо хранить некоторые значения, связанные с объектом, на время выполнения некоторых операций, без изменения объекта. Например, при обработке событий в подписке на события.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
4 RomanYS
 
27.11.19
14:57
(0) попробуй ПриЧтенииНаСервере
5 Birmingem
 
28.11.19
11:07
Попробовал так: Объект.ДополнительныеСвойства в процедурах ПриСозданииНаСервере, ПриЧтенииНаСервере, ПриОткрытии. Везде ругается: Поле объекта не обнаружено (ДополнительныеСвойства)
6 Fish
 
28.11.19
11:08
(5) У тебя объект чему равен? Тип какой?
7 Birmingem
 
28.11.19
11:16
(6)Объект - ДанныеФормыСтруктура
8 Birmingem
 
28.11.19
11:18
Создаю документ на основании другого документа. Из процедуры ОбработкаЗаполнения() в форму надо передать признак - открывать или не открывать форму.
9 Dmitry1c
 
28.11.19
11:19
вроде у ТекущийОбъект в процедуре ПередЗаписьюНаСервере
10 Fish
 
28.11.19
11:19
(7) А должен быть ДокументОбъект.
11 Birmingem
 
28.11.19
11:20
(10)Ок. Как в форме получить ДокументОбъект?
12 RomanYS
 
28.11.19
11:26
(11) Он есть в (4), (9) . Можно получить через РеквизитФормыВЗначение. Но твою задачу это не решит.
13 Birmingem
 
28.11.19
11:39
В модуле объекта, в процедуре ОбработкаЗаполнения() делаю
ДополнительныеСвойства.Вставить("ОбработкаЗаполненияОтказ", Истина);

В модуле формы, в процедуре ПриСозданииНаСервере (так как это новый документ) делаю
Док=РеквизитФормыВЗначение("Объект");
Док.ДополнительныеСвойства.Свойство("ОбработкаЗаполненияОтказ")

Результат Ложь.

Т.е. ДополнительныеСвойства все таки не сохраняют значения из модуля объекта до модуля формы?
14 RomanYS
 
28.11.19
11:49
(13) Потому что это другой экземпляр Объекта и для него ОбработкаЗаполнения не вызывалась
Опиши исходную задачу. По какому условию появилось ОбработкаЗаполненияОтказ, может проще это условие в форме воспроизвести
15 Birmingem
 
28.11.19
11:53
Задача простая.
На основании конкретного документа, можно ввести только 1 другой документ.
В процедуре ОбработкаЗаполнения проверяю, есть ли уже такой документ. Если есть, то надо запретить создание нового документа. Так как в процедуре ОбработкаЗаполнения() этого сделать нельзя, то запрещаю открыть форму нового документа.
16 Birmingem
 
28.11.19
11:54
Ну и вообще, теоретический вопрос, как же все таки передать переменную из модуля объекта в модуль формы?
17 RomanYS
 
28.11.19
11:58
(15) или проверяй это ПриСозданииНаСервере в форме или "пиши", например, в комментарий
(16) через доп. свойства нельзя
18 pechkin
 
28.11.19
11:58
из обработки заполнения никак не передашь
19 pechkin
 
28.11.19
11:59
если нужен отказ, то кидай исключение
20 Birmingem
 
28.11.19
12:07
Нашел решение моей задачи.
Оказывается в процедуре ПриСозданииНаСервере() у свойства Параметры есть свойство Основание, в котором находится документ, на основании которого вводится новый документ. Буду проверять здесь.

(19)Да. Видел рекомендацию от 1С, делать ВызватьИсключение. Но тогда на экране появляется окно с ошибкой, в котором кнопка перехода в конфигуратор. Т.е. выглядит как программная ошибка, косяк программиста, совсем некрасиво :)

(18)Вот засада ... Значит никак не передать...
21 pechkin
 
28.11.19
12:08
по хоршему нужно чтоб вызывалось событие ПриЧтенииНаСервере, но это нужно в 1с писать, может к 8.3.55 добавят
22 pechkin
 
28.11.19
12:09
(20) кстати у юзеров неет кнопки перехода в конфигуратор
23 pechkin
 
28.11.19
12:09
если конечно УФ
24 aleks_default
 
28.11.19
12:19
Кстати фирма 1с вот тут https://its.1c.ru/db/v8std#content:396:hdoc пишет что проверку нужно делать через ВызватьИсключение и "При этом не рекомендуются какие-либо иные решения для подобных проверок. В частности, не следует создавать дополнительные команды для ввода на основании и размещать проверки в обработчиках этих команд."

Я вот смотрю сейчас в свою ERP и вижу что ввод на основании некоторых документов сделан именно с помощью дополнительных подключаемых на форму команд. Получается компания 1С не следует своим же рекомендациям? Или просто информация на ИТС устарела?