Имя: Пароль:
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С не следует своим же рекомендациям? Или просто информация на ИТС устарела?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн