|
Вывести СообщениеПользователю из общего модуля привязкой к реквизиту | ☑ | ||
---|---|---|---|---|
0
Радим1987
20.04.17
✎
09:53
|
Надо вывести такое сообщение к привязкой табчасть Товары.Номенклатура
|
|||
1
Радим1987
20.04.17
✎
09:55
|
Сообщение выводиться но ни как привязывается к табЧасти
Параметрах процедуры есть (Объект = ДанныеФормыСтруктура,Форма = управляемая форма) что только не пробывал |
|||
2
Радим1987
20.04.17
✎
09:58
|
Попытка
1) ДокументОбъект = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.РеализацияТоваровУслуг")); Сообщение.УстановитьДанные(ДокументОбъект ); 2) Сообщение.КлючДанных = Объект.Ссылка; Сообщение.ПутьКДанным = "Объект"; 3) ДокументОбъект = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.РеализацияТоваровУслуг")); УстановитьСоответствиеОбъектаИРеквизитаФормы(Документ, "Объект"); Сообщение.УстановитьДанные(ДокументОбъект ); итд итд |
|||
3
dezss
20.04.17
✎
10:17
|
Что передаешь в процедуру/функцию общего модуля?
|
|||
4
Радим1987
20.04.17
✎
10:19
|
Объект = ДанныеФормыСтруктура,Форма = управляемая форма
|
|||
5
dezss
20.04.17
✎
10:19
|
(3) тьфу, увидел...
а если Сообщение.Поле = "Форма.Элементы.Товары[0].Номенклатура"; |
|||
6
drcrasher
20.04.17
✎
10:23
|
(2) установитьДанные(документСсылка)
|
|||
7
Радим1987
20.04.17
✎
10:24
|
(5) нет не получилось
|
|||
8
Радим1987
20.04.17
✎
10:25
|
(6) УстановитьДанные(<Объект>)
Параметры: <Объект> (обязательный) Тип: Произвольный. Объект, с которым должно быть связано сообщение. |
|||
9
dezss
20.04.17
✎
10:26
|
(7) а попробуй подобным образом привязать к какому-нибудь другому элементу формы, не тч.
|
|||
10
Радим1987
20.04.17
✎
10:26
|
УстановитьСоответствиеОбъектаИФормы(<Объект>, <ИдентификаторФормыИИмяРеквизита>)
<ИдентификаторФормыИИмяРеквизита> (обязательный) Тип: Структура. Содержит идентификатор формы и имя реквизита элемента управления, для которых выполняется установка соответствия. Структура, передаваемая в параметр, может содержать два элемента с именами ключей: 1. "ИдентификаторФормы" ("FormID") – уникальный идентификатор формы (тип УникальныйИдентификатор); 2. "ИмяРеквизита" ("AttributeName") – имя реквизита в форме (тип Строка). Этот элемент может не указываться. но когда я делаю через структуру ругается типа неправильный параметр |
|||
11
Радим1987
20.04.17
✎
10:27
|
(9) другим элементам тоже не привязывается
|
|||
12
Радим1987
20.04.17
✎
10:33
|
УстановитьСоответствиеОбъектаИРеквизитаФормы(ДокументОб,ст);
по причине: Несоответствие типов (параметр номер '2') ПОЧЕМУ ????? УстановитьСоответствиеОбъектаИФормы(<Объект>, <ИдентификаторФормыИИмяРеквизита>) <ИдентификаторФормыИИмяРеквизита> (обязательный) Тип: Структура. ст = Новый Структура; Ст.Вставить("ИдентификаторФормы",Форма.УникальныйИдентификатор); Ст.Вставить("ИмяРеквизита",Форма.Объект); |
|||
13
dezss
20.04.17
✎
10:35
|
Ст.Вставить("ИмяРеквизита",Строка(Форма.Объект));
|
|||
14
dezss
20.04.17
✎
10:36
|
(13) не точно так, но принцип понятен, да?
|
|||
15
dezss
20.04.17
✎
10:37
|
(13) по идее можно прям так
Ст.Вставить("ИмяРеквизита","Объект"); |
|||
16
Радим1987
20.04.17
✎
10:40
|
(13), (15) та же ошибка по причине:
Несоответствие типов (параметр номер '2') |
|||
17
dezss
20.04.17
✎
10:47
|
ПолучитьСоответствиеОбъектаИФормы(<Объект>)
что возвращает? |
|||
18
Радим1987
20.04.17
✎
10:50
|
(17)
ИдентификаторФормы,00000-000 ИмяРеквизита,ДанныеФормыСтруктура |
|||
19
dezss
20.04.17
✎
10:56
|
(18) а в ДанныеФормыСтруктура что-то есть?
|
|||
20
Радим1987
20.04.17
✎
11:01
|
Сделал так УстановитьСоответствиеОбъектаИРеквизитаФормы(ДокументОб,"ст");
ПолучитьСоответствиеОбъектаИФормы(Док) вернул структуру ИдентификаторФормы = 00000-00000-0000000000 ИмяРеквизита = "ст" Получается не устанавливается идентификатор формы |
|||
21
dezss
20.04.17
✎
11:04
|
(20) а с каких пор ДокументОб стал идентификатором формы? О_о
|
|||
22
Радим1987
20.04.17
✎
11:09
|
я имею ввиду что процедура УстановитьСоответствиеОбъектаИРеквизитаФормы(ДокументОб,"ст"); устанавливает только имя "ИмяРеквизита = "ст""
|
|||
23
dezss
20.04.17
✎
11:09
|
(22) а ты передай ему в первом параметре идентификатор формы...вот тогда и увидим что он устанавливает...
|
|||
24
dezss
20.04.17
✎
11:13
|
(23) тьфу...туплю, блин...
|
|||
25
dezss
20.04.17
✎
11:14
|
кста, а модуль серверный?
|
|||
26
Радим1987
20.04.17
✎
11:16
|
(25) да почти решил жду отладку)
|
|||
27
dezss
20.04.17
✎
11:23
|
(26) ты ж напиши как решил
|
|||
28
Радим1987
20.04.17
✎
11:29
|
Не получилось
ДокументОб = Форма.РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.РеализацияТоваровУслуг")); возвращает то что надо ПолучитьСоответствиеОбъектаИФормы(Док) вернул структуру ИдентификаторФормы = rt896-gbfg56-456fdbd3vc5b ИмяРеквизита = "Объект" но после использования УстановитьСоответствиеОбъектаИРеквизитаФормы(ДокументОб,"Объект") ИдентификаторФормы = 000-000-00000000 ИмяРеквизита = "Объект" даже не знаю куда копать |
|||
29
dezss
20.04.17
✎
11:34
|
(28) да понятно, что установить... у тебя не работает как написано в сп, передавать только "Объект" безсмысленно.
А попробуй передавать структуру только с идентификатором. Убери строчку: Ст.Вставить("ИмяРеквизита",Форма.Объект); Будет тогда ругаться на тип параметра? |
|||
30
Радим1987
20.04.17
✎
11:36
|
(29) пробываал тоже самое
|
|||
31
dezss
20.04.17
✎
11:39
|
Блин....прям вот щас сам попробую. Интересно стало.
|
|||
32
Радим1987
20.04.17
✎
11:39
|
)))
|
|||
33
dezss
20.04.17
✎
11:46
|
УстановитьСоответствиеОбъектаИРеквизитаФормы <> УстановитьСоответствиеОбъектаИФормы
Первое у тебя в (28) УстановитьСоответствиеОбъектаИФормы у меня отработал нормально. ПолучитьСоответствиеОбъектаИФормы вернул те значения, что я передал в структуре. Правда делал все модуле формы. |
|||
34
Радим1987
20.04.17
✎
11:54
|
ст = Новый Структура;
Ст.Вставить("ИдентификаторФормы",Форма.УникальныйИдентификатор); Ст.Вставить("ИмяРеквизита",Форма.Объект); УстановитьСоответствиеОбъектаИФормы(ДокументОб,ст); по причине: Недопустимое значение параметра (параметр номер '2') |
|||
35
dezss
20.04.17
✎
11:56
|
(34) да еп жеж....
Ст.Вставить("ИмяРеквизита",<тут должна быть СТРОКА!!!!>); |
|||
36
dezss
20.04.17
✎
11:57
|
(34) с реквизитами формы привязка работает, с объектом и всем дочерним к нему чета нет...пороюсь
|
|||
37
dezss
20.04.17
✎
12:20
|
Кароч. Все решается так:
об = РеквизитФормыВЗначение("Объект"); ст = Новый Структура; ст.Вставить("ИдентификаторФормы",ЭтаФорма.УникальныйИдентификатор); ст.Вставить("ИмяРеквизита","Объект"); УстановитьСоответствиеОбъектаИФормы(об,ст); сообщение = Новый СообщениеПользователю; сообщение.Текст = "Все очень плохо"; сообщение.УстановитьДанные(об); сообщение.Поле = "<тут имя поля формы>"; сообщение.Сообщить(); в модуле формы работает...думаю, и в общем модуле должно |
|||
38
Радим1987
20.04.17
✎
12:29
|
ДокументОб = Форма.РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.РеализацияТоваровУслуг"));
ИдентификаторФормыИИмяРеквизита = Новый Структура; ИдентификаторФормыИИмяРеквизита.Вставить("ИдентификаторФормы",Форма.УникальныйИдентификатор); ИдентификаторФормыИИмяРеквизита.Вставить("ИмяРеквизита","Объект"); УстановитьСоответствиеОбъектаИФормы(ДокументОб,ИдентификаторФормыИИмяРеквизита); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "услуги [ "+ВидРезки+" ] не существует"; Сообщение.Поле = "Форма.Элементы.Товары"; Сообщение.УстановитьДанные(ДокументОб); Сообщение.Сообщить(); тоже все работает я дума щас проблема в этом Товары[0].Номенклатура |
|||
39
Радим1987
20.04.17
✎
12:30
|
т.е Сообщение.Поле = ?
|
|||
40
Радим1987
20.04.17
✎
12:35
|
ПОЛЕ =
Содержит путь к реквизиту формы, для которого было выведено сообщение, или к данным объекта. Например, путь к реквизиту Номенклатура в строке с индексом 10 табличной части документа, в которой произошла ошибка: ТабличнаяЧастьСоставДокумента[10].Номенклатура. а в моем случае к чему будет равно Поле = ? Сообщение.Поле = Форма.ТОвары или Сообщение.Поле = Объект.ТОвары |
|||
41
dezss
20.04.17
✎
12:55
|
А если так:
Сообщение.Поле = "Форма.Элементы.Товары.ТекущаяСтрока"; Я так понимаю Товары[0].Номенклатура - это для ОФ, в УФ работать не будет. (40) Для УФ поле формы надо сюда пихать, насколько я понял Сообщение.Поле = Форма.Элементы.Товары |
|||
42
dezss
20.04.17
✎
12:59
|
(41) Я не прав, надо именно имя реквизита, а не элемента формы. Только что проверил.
Тебе можно писать просто Сообщение.Поле = Товары Так как с объектом ты это сообщение уже связал через Сообщение.УстановитьДанные(ДокументОб); |
|||
43
dezss
20.04.17
✎
13:02
|
Кстати, если надо будет вызвать сообщение на реквизит формы, не подчиненный объекту, то надо будет переустанавливать УстановитьСоответствиеОбъектаИФормы на этот реквизит.
|
|||
44
Радим1987
20.04.17
✎
13:03
|
пробывал ничего не происходит выводит сообщение только сбоку
|
|||
45
dezss
20.04.17
✎
13:03
|
(43) Или сделать так:
Сообщение.Поле = ""; сообщение.ПутьКДанным = "<имя реквизита формы>"; |
|||
46
dezss
20.04.17
✎
13:04
|
(44) Я на обед, а пока покажи код и сообщение.
|
|||
47
Радим1987
20.04.17
✎
13:04
|
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "услуги [ "+ВидРезки+" ] не существует"; Сообщение.Поле = "Товары[0].Номенклатура"; Сообщение.КлючДанных = ДокументОб.Ссылка; Сообщение.ПутьКДанным = "Объект"; Сообщение.Сообщить(); ТекстОшибки = "услуги [ "+ВидРезки+" ] не существует"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ДокументОб,"Товары[0].Номенклатура",, ); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ДокументОб,"Объект.Товары[0].Номенклатура",, ); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ДокументОб,"ДанныеФормыСтруктураО.Товары[0].Номенклатура",, ); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ДокументОб.Ссылка,"Товары[0].Номенклатура","Объект", ); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ДокументОб.Ссылка,"Объект.Товары[0].Номенклатура","Объект", ); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ДокументОб.Ссылка,"ДанныеФормыСтруктураО.Товары[0].Номенклатура","Объект", ); |
|||
48
dezss
20.04.17
✎
14:05
|
так-с...теперь ты решил воспользоваться уже написанным...но воспользовался неправильно.
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ДокументОб,"Товары","Объект", ); Если реквизит формы не связан с объектом, то так: ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки,,"<имя_реквизита>",); По поводу обращения с индексом сейчас поищу на чем попробовать. |
|||
49
Радим1987
20.04.17
✎
14:12
|
В модуле ФОРМЫ (УФ)
Общий модуль серверная
|
|||
50
Радим1987
20.04.17
✎
14:14
|
(48) спасибо все решилось создал новую конфигурацию там работает идеально ко всем реквизитам цепляется. Но только не в моей конфигурации КА 2.2.3.178 видимо где то запрет или что нить такое
|
|||
51
dezss
20.04.17
✎
14:21
|
вот так у меня все сработало...
&НаСервере Процедура МояКомандаНаСервере() об = РеквизитФормыВЗначение("Объект"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Все очень плохо",об,"Товары[1].Номенклатура","Объект"); КонецПроцедуры &НаКлиенте Процедура МояКоманда(Команда) МояКомандаНаСервере(); КонецПроцедуры |
|||
52
dezss
20.04.17
✎
14:23
|
(50) ну и хорошо.
Только зачем свой ОМ мутить, если все и так есть. |
|||
53
Радим1987
20.04.17
✎
14:27
|
(52) типовой сказали не трогать все процедуры функции только в расширение и тем более вот этот канитель не только для этого документа а для всех документов продажи покупки
|
|||
54
dezss
20.04.17
✎
14:35
|
(53) типовой конечно не трогать, но им же можно пользоваться)
Ведь всего 2 строчки об = РеквизитФормыВЗначение("Объект"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Все очень плохо",об,"Товары[1].Номенклатура","Объект"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |