![]() |
![]() |
|
v8: 8.3 Изменение параметров по ссылке | ☑ | ||
---|---|---|---|---|
0
Aswed
07.06.13
✎
12:09
|
Суть проблемы.
Есть три общих реквизита в ряде справочников, они скрытые. Для их изменения сделал общую команду, в которой открывается общая форма. Соответственно на этой форме, в виде её реквизитов, есть такие же реквизиты, которые заполняются при открытии. Собственно хочу что бы при закрытии этой формы значения этих реквизитов формы сохранялись в реквизитах справочника, из которой эта общая форма открыта. Для этого в процедуре перед закрытием прописал такой код &НаСервере Процедура ПередЗакрытиемНаСервере() ИсточникОбъект = Источник.ПолучитьОбъект(); ИсточникОбъект.Организация = Организация; ИсточникОбъект.ПодразделениеКомпании = ПодразделениеКомпании; ИсточникОбъект.Бренд = Бренд; КонецПроцедуры Но, при возвращении в форму справочника, вижу что измененные реквизиты в форме, не изменились в справочнике. Если добавить строчку ИсточникОбъект.Записать(), все отлично, но при попытке закрыть форму справочника выскакивает что элемент изменённ, что логично. Дык вот, вопрос как подобное реализовать что бы работало и не надо было бы прописывать в каждой форме обработку заполнения выбранных значений? |
|||
1
Aswed
07.06.13
✎
12:11
|
Почитал что написал и сам запутался)))
|
|||
2
Aswed
07.06.13
✎
12:12
|
В общем как сделать изменение реквизитов справочника через открываемую форму, но так что бы не пришлось в этом самом справочнике писать обработку заполнения выбранных значений реквизитов.
|
|||
3
RomaH
naïve
07.06.13
✎
12:13
|
а почему Источник в виде ссылки?
|
|||
4
Aswed
07.06.13
✎
12:14
|
(3) Ну можно сделать в виде объекта, что то даст?
|
|||
5
Aswed
07.06.13
✎
12:15
|
+ (4) хотя не получится. Справочник объект же не может входить в составной реквизит.
|
|||
6
andreymongol82
07.06.13
✎
12:15
|
Я бы сделал кнопку отдельную на форме и там бы написал.
Бла-бла-ба записать; закрыть; А при закрытии не заморачивался |
|||
7
Aswed
07.06.13
✎
12:17
|
(6) Ну это просто конечно.
Но для этого необходимо прописывать подобные действия во всех справочниках, чего я и пытаюсь избежать. |
|||
8
zladenuw
07.06.13
✎
12:17
|
(0) а если переоткрыть справочник ? может нужно для формы вызвать обновить, что бы перечитался объект с сервера
|
|||
9
Aswed
07.06.13
✎
12:19
|
(8) На форме негде вешать Обновить(), команда глобальная.
|
|||
10
andreymongol82
07.06.13
✎
12:20
|
(7) Зачем? Кнопку-то на общей форме. И в команде этой кнопки написать про источник, про объект, про то, что его записать и про остальные реквизиты формы которые надо реквизитам объекта присвоить.
|
|||
11
newtime2015
07.06.13
✎
12:20
|
(2)надо писать Оповестить
|
|||
12
Aswed
07.06.13
✎
12:20
|
+ 9 Да и там не важно что отображается, по сути пусть висит старое значение реквизита, до пере открытия формы, но дело в том что новое не присваивается.
|
|||
13
newtime2015
07.06.13
✎
12:21
|
Используй оповещении формы о событии.
Пример смотри - привязка СФ в поступлении товаров |
|||
14
Aswed
07.06.13
✎
12:21
|
(10) Сейчас попробую, но ИМХО от того что я это перенесу из модуля формы в модуль команды ничего не поменяется.
|
|||
15
Лефмихалыч
07.06.13
✎
12:22
|
(0) открывай по команде отедльную форму справочника, в которой толкьо эти реквизиты и будут.
А вообще - это ересь - если оно редактируется отдельно, значит оно обязано хранриться отдельно от объекта, то есть нельзя было реализовывать в ви де общих реквизитов. Надо было регистр сведений использовать, тогда бы у тебя не было этой проблемы. Была бы форма записи, вызываемая по общей команде. А так тебе потом придется учить пользователей жить с сообщением "Версия объекта отличается от версии в базе, идите в пень пожалуйста" |
|||
16
Aswed
07.06.13
✎
12:23
|
(15) Как раз общие реквизиты)
|
|||
17
Aswed
07.06.13
✎
12:26
|
+16
в этом и фишка, лень меня обарывает, потому общие реквизиты, общая команда и единое место где все меняется) |
|||
18
Aswed
07.06.13
✎
12:27
|
(11) Сейчас покопаюсь.
|
|||
19
Aswed
07.06.13
✎
12:29
|
Ругается сволочь
Оповестить("Запись",ИсточникОбъект); {ОбщаяФорма.НастройкаОбщихРеквизитов.Форма(19,2)}: Процедура или функция с указанным именем не определена (Оповестить) <<?>>Оповестить("Запись",ИсточникОбъект); (Проверка: Сервер) |
|||
20
andreymongol82
07.06.13
✎
12:31
|
Доступность:
Тонкий клиент, веб-клиент, толстый клиент. |
|||
21
Aswed
07.06.13
✎
12:34
|
(20) ?
&НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) ПередЗакрытиемНаСервере(); Оповестить("Запись",Источник); КонецПроцедуры |
|||
22
Aswed
07.06.13
✎
12:35
|
+21 сорри тупанул, ИсточникОбъект написал)
|
|||
23
andreymongol82
07.06.13
✎
12:41
|
ПередЗакрытиемНаСервере() - лучше отдельную написать процедуру и ее вызывать, а эту не трогать.
|
|||
24
Aswed
07.06.13
✎
12:41
|
Прописал в общей форме
&НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) ПередЗакрытиемНаСервере(); Оповестить("Запись",Источник); КонецПроцедуры &НаСервере Процедура ПередЗакрытиемНаСервере() ИсточникОбъект = Источник.ПолучитьОбъект(); ИсточникОбъект.ЭтотОбъект.Организация = Организация; ИсточникОбъект.ПодразделениеКомпании = ПодразделениеКомпании; ИсточникОбъект.Бренд = Бренд; ИсточникОбъект.Записать(); КонецПроцедуры В форме справочника прописал &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) ОбновитьОтображениеДанных(); КонецПроцедуры При закрытии все равно сволочь ругается что данные изменены. Что написал не так? |
|||
25
Aswed
07.06.13
✎
12:42
|
(23) Почему?
|
|||
26
Aswed
07.06.13
✎
12:43
|
+24 а вот если интерактивно вызываю из формы команду "Перечитать", то все отлично отрабатывает.
|
|||
27
Поросенок Петр
07.06.13
✎
12:43
|
Передавать контекст фу. Путь работает как черный ящик, принимает структуру и возвращает (оповещает о выборе даже кошерней) структуру. А форма уже сама решает что и куда пропилить.
|
|||
28
Поросенок Петр
07.06.13
✎
12:45
|
Другое дело можно вынести процедуру вызова редактирования куда-нить в общий клиентский модуль, чтобы не множить код.
|
|||
29
Aswed
07.06.13
✎
12:45
|
(27) Смысл в том что бы сделать универсальный механизм и подключать его к любому справочнику в конфе, а не прописывать для каждого отдельную обработку.
ЗЫ Через структуру сделано у меня сейчас, хочу сделать универсально и как можно ленивее))))) |
|||
30
andreymongol82
07.06.13
✎
12:46
|
(25) ПередЗакрытиемНаСервере() - это разве не событие? Хотя фиг его знат, что там в 8.3 понапридумывали...
|
|||
31
Поросенок Петр
07.06.13
✎
12:47
|
(29) Про общую команду забудь. Она для ссылок, а не объектов.
|
|||
32
Поросенок Петр
07.06.13
✎
12:48
|
Можно, конечно наг-кодить и записывать объект два раза (команда с опцией изменяет данные). Сомнительное удовольствие.
|
|||
33
Aswed
07.06.13
✎
12:51
|
Всё. Победил!
Рассказываю как сделал. В общем все осталось как есть, только в модуле общей формы повесил Оповестить() А в открытой форме в обработке оповещения Прочитать() Всем спасибо за помощь))) |
|||
34
Aswed
07.06.13
✎
12:51
|
(31) ?????
Ты вообще о чем? |
|||
35
Поросенок Петр
07.06.13
✎
12:53
|
(34) О том, что такое заполнение реквизитов в форме документа (а не из списка) будет вести себя по-б*ски.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |