|
Как выловить запись нового элемента в подчиненном спр. из спр.владельца? | ☑ | ||
---|---|---|---|---|
0
crisalis
05.09.16
✎
14:16
|
Добрый день, что то я запутался, распутайте пожалуйста , как выловить создание нового элемента справочника КонтактныеЛицаКонтрагентов из спр.Контрагенты ? (ОФ)
Пробывал событие списка ОбработкаЗаписиНовогоОбъекта(Элемент,Объект, СтандартнаяОбработка ) , но не попадаю отладчиком туда , запись контактного лица происходит и в списке на форме он отражается. Мне надо выловить это, чтобы проверить на установку основного контактного лица в спр.Контрагенты. Заранее благодарен. |
|||
1
Vaflya
05.09.16
✎
14:19
|
ПередЗаписью?
|
|||
2
crisalis
05.09.16
✎
14:24
|
(1) Перед записью чего ? Если спр.Контрагенты то не подходит так как пользователь может работать уже с другими данными отличающихся от Контактной информации. Или ПередЗаписью контакной ? а как мне потом от туда по вопросу установить основное контактное лицо ?
|
|||
3
lxs
05.09.16
✎
14:29
|
(0) Поставь задачу нормально, у тебя херня какая-то изображена тут. Тебе в финале что нужно сделать?
|
|||
4
lxs
05.09.16
✎
14:30
|
(3)+ или опиши весь процесс от и до, как он должен быть в твоем понимании со всем уксловиями
|
|||
5
lxs
05.09.16
✎
14:30
|
*всеми условиями
|
|||
6
crisalis
05.09.16
✎
14:34
|
(3) (4) так он и есть в понятии, вроде =). Хочу после ввода нового контактного лица контрагента спросить у пользователя установить ли его основным или нет , если да тогда рекв.ОсновноеКонтактноеЛицо заполняется, нет тогда ничего.
|
|||
7
lxs
05.09.16
✎
14:38
|
(6) ПриЗаписи элемента справочника КонтактныеЛица спрашивай (именно при записи, а не перед, потому что Перед у тебя ссылки нет, устанавливать нечего).
|
|||
8
Vaflya
05.09.16
✎
14:38
|
ну, а что мешает то "по вопросу установить основное контактное лицо ?"
|
|||
9
lxs
05.09.16
✎
14:42
|
(8) логика, человек картины в целом не видит
|
|||
10
crisalis
05.09.16
✎
14:45
|
(8) нет подходящего события (или я его не заметил) в табличном поле "КонтактныеЛицаКонтрагента" , вопрос пользователю надо задавать после записи в спр. КонтакнойИнформацииКонтрагентов а не перед записью спр.Контрагенты.
(9) ну, с кем не бывает , вот и прошу людей чтобы помогли. |
|||
11
Vaflya
05.09.16
✎
14:46
|
а, это реквизит Контрагентов.. тогда можно и послезаписи()
|
|||
12
crisalis
05.09.16
✎
14:47
|
(11) не понял что вы имеете ввиду
|
|||
13
Vaflya
05.09.16
✎
14:48
|
ну задавать вопрос перед записью контрагента совсем неинтересно - придется предлагать сначала создать контактное лицо, только потом можно ссылку поставить
|
|||
14
crisalis
05.09.16
✎
15:00
|
(13) а мне так не надо , я хочу (такая задача) сразу же как пользователь создал КЛ спрашивать установить его или нет как основное.
|
|||
15
RomanYS
05.09.16
✎
15:02
|
смоделировал (0) на пустой конфигурации, ОбработкаЗаписиНовогоОбъекта работает
|
|||
16
crisalis
05.09.16
✎
15:03
|
у меня не работает ((((
|
|||
17
crisalis
05.09.16
✎
15:03
|
(15) именно для КонтактнойИнформации ???
|
|||
18
crisalis
05.09.16
✎
15:06
|
(17) спрашиваю потому как для таб.поля БанковскиеСчета это событие у меня отрабатывает а вот для таб.поля КонтактныеЛицаКонтрагента не хочет, зараза работать, хоть тресни ((((
|
|||
19
RomanYS
05.09.16
✎
15:12
|
конфигурация то какая?
|
|||
20
lxs
05.09.16
✎
15:13
|
(18) (18) ты зачем устраиваешь геморрой? Либо в подписке, либо на форме делаешь процедуру ПриЗаписи, ну, или ПослеЗаписи. и всё. Там всё делаешь.
Тебе надо учесть лишь то, что это должно выполняться ТОЛЬКО на клиенте, иначе получишь эксепшн и проблемы с обменами. |
|||
21
crisalis
05.09.16
✎
15:15
|
(19) УТ для Молдовы, как российская 10,3 (примерно)
|
|||
22
Vaflya
05.09.16
✎
15:20
|
подходящее событие - любое, где уже есть ссылка на новый элемент При, После записи, ОбработкаЗаписиНовогоОбъекта наверно тоже подойдет, в чем проблема то
(15) конечно, если сам моделируешь, то работает, если в типовой пробовать, то хрен ггг |
|||
23
RomanYS
05.09.16
✎
15:22
|
(21) посмотрел в БП2, там проблема воспроизводится. Причина в том, что открываемые формы - создаются кодом и владельцем для этих форм почему-то передают ЭтаФорма, а не таб. поле.
Процедура КонтактныеЛицаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа) .... Форма = НовыйОбъект.ПолучитьФорму(, ЭтаФорма);//причина здесь .... КонецПроцедуры |
|||
24
crisalis
05.09.16
✎
15:26
|
(20) Ещё раз подчеркиваю, мне призаписи() или послезаписи() формы элемента Контрагенты не подходит, мне нужно отловить именно тогда когда человек (пользователь) работает с таб.полем КонтактнаяИнформацияКонтрагента.
|
|||
25
lxs
05.09.16
✎
15:29
|
(24) Еще раз под черкиваю, читай внимательно то, что я пишу..
|
|||
26
lxs
05.09.16
✎
15:30
|
(25)+ "ПриЗаписи элемента справочника КонтактныеЛица спрашивай"
|
|||
27
RomanYS
05.09.16
✎
15:31
|
(22) в типовой тоже работает, если подправить одно слово(см (23))
|
|||
28
lxs
05.09.16
✎
15:33
|
Причем тут работа в карточке контрагента или нет, это не имеет никакого значения в контексте твоей задачи, ты усложняешь ситуацию. У тебя задача стоит: спросить пользователя, когда он добавляет контакт, сделать его основным для владельца и всё!
Ты когда добавляешь контакт, что делаешь? Нажимаешь кнопку Добавить, дальше открывается форма элемента справочника Контактные лица.. Всё. Вот твой ответ. Делаешь всё там. В событии При или ПослеЗаписи. |
|||
29
RomanYS
05.09.16
✎
15:36
|
(28) покажи как ты будешь делать "сделать его основным для владельца и всё"?
|
|||
30
eskor
05.09.16
✎
15:37
|
(24) а не проще ли от обратного плясать? При записи новой контактной информации проверять/искать по ссылке Контрагента?
А если в одном сеансе - то есть чудная функция Оповестить(<ИмяСобытия>, <Параметр>, <Источник>) и соответственно свойство формы ОбработкаОповещения(<ИмяСобытия>, <Параметр>, <Источник>) |
|||
31
lxs
05.09.16
✎
15:38
|
(29) Как тебе это показать?
|
|||
32
RomanYS
05.09.16
✎
15:39
|
(31) Код, пару строчек.
|
|||
33
crisalis
05.09.16
✎
15:40
|
(23) поиск этой процедуры в конфигураторе не дал ничего , где ее можно посмотреть ?
(28) а как потом определить установлено ли основное контактное из формы ввода (ФормаВводаНового) спр КЛКонтрагентов? и 2 а если пользователь не записал элемент а модифицировал его как я получу достоверные данные далее? |
|||
34
crisalis
05.09.16
✎
15:41
|
(33) мне же еще надо проверять установлено ли основное КЛ...
|
|||
35
RomanYS
05.09.16
✎
15:41
|
(33) посмотри какие события уже заданы у этого таб. поля и проверь их обработчики
|
|||
36
crisalis
05.09.16
✎
15:45
|
(30) знаю за эту функцию но так и не разобрался как с ней работать , очень мало инфы, примеров в инете (
|
|||
37
lxs
05.09.16
✎
15:53
|
(32) ФормаВводаНового в спр. КонтактныеЛицаКонтрагентов:
Процедура ПослеЗаписи() //lxs Оповестить("ЗаписаноКЛ", Новый Структура("Ссылка", Ссылка)); КонецПроцедуры В форме элемента контрагента Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) .... //lxs ИначеЕсли ИмяСобытия = "ЗаписаноКЛ" И ТипЗнч(Параметр) = Тип("Структура") Тогда Если ОсновноеКонтактноеЛицо <> Параметр.Ссылка Тогда Если Вопрос("Сделать основным?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда ОсновноеКонтактноеЛицо = Параметр.Ссылка; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
38
lxs
05.09.16
✎
15:53
|
(37) всё.. епт.. 4 минуты
|
|||
39
crisalis
05.09.16
✎
15:54
|
(38) ща посмотрим )))
|
|||
40
Vaflya
05.09.16
✎
15:56
|
ды как
После, При Записи() Если Не ЗначениеЗаполнено(Владелец.ОсновноеКЛ) И Вопрос("Намутить отсюда основное КЛ?", РежимДиалога.ДаНет) = КодВозвратаДиалога.Да Тогда Владелец.ОсновноеКЛ = Ссылка; Владелец.Записать(); КонецЕсли; ну соответственно можно всегда спрашивать, даже если основноеКЛ уже есть |
|||
41
Vaflya
05.09.16
✎
15:56
|
а, ну еще объекта владельца получить
|
|||
42
Vaflya
05.09.16
✎
15:58
|
я про обычные формы, там
"или послезаписи() формы элемента Контрагенты не подходит" у формы нет ПослеЗаписи(), у объекта - да |
|||
43
lxs
05.09.16
✎
15:58
|
(41) гемор.. не прокатит, получишь всегда "невозможно записать из-за не соответствия бла-бла-бла..."
|
|||
44
DomovoiNaStraze Pravo
05.09.16
✎
15:58
|
(40)Объект надо получить.
|
|||
45
Vaflya
05.09.16
✎
15:58
|
чего там бла бла
|
|||
46
lxs
05.09.16
✎
15:59
|
(45) У тебя владелец = ссылка.. как ты его менять будешь? Тем более если он уже редактируется..
|
|||
47
RomanYS
05.09.16
✎
15:59
|
(40) круто
Владелец.Записать(); тебе пользователи потом мозг взорвут, см. (43) |
|||
48
DomovoiNaStraze Pravo
05.09.16
✎
16:00
|
Он дописал в (41) что надо владельца получить)
|
|||
49
Vaflya
05.09.16
✎
16:00
|
в чем проблема с изменением ссылки?
|
|||
50
lxs
05.09.16
✎
16:01
|
(49) ты тупой или прикидываешься, чувак?
|
|||
51
Vaflya
05.09.16
✎
16:01
|
(48) нет, это очень важный момент, я не спорю, но вроде по-умолчанию должен пониматься "спецами" вроде (50)
|
|||
52
lxs
05.09.16
✎
16:03
|
(50)+ смотри, ты открываешь КОНТРАГЕНТА... там жмешь кнопку Добавить на закладке Контакты.. Открываешь форму элемента Контактов.. Тебе говорят "Запиши элемент, чувак".. записываешь, ок.. Затем создаешь новое КЛ.. у тебя в форме понятие Владелец имеет тип Ссылка. Дальше ты там говоришь Владелец.ОсновноеКЛ.. бац.. первая ошибка.. Ссылка.Реквизит - объект не получен.. Дальше продолжать?
|
|||
53
DomovoiNaStraze Pravo
05.09.16
✎
16:04
|
(52)Читай (41) :)
|
|||
54
lxs
05.09.16
✎
16:05
|
(53) )) еще один
|
|||
55
RomanYS
05.09.16
✎
16:06
|
(49) проблема в том, что эта "ссылка" редактируется пользователем в форме и твоя запись не позволит записать изменения юзеру.
|
|||
56
lxs
05.09.16
✎
16:07
|
Дальше как-то получаем владельца в форме элемента контактного лица.. ну пусть Владелец = Владелец.ПолучитьОбъект();
Тогда имеем: Владелец.ОсновноеКЛ = БЛА; ВладелецЗаписать(); И всё вроде бы круто.. Закрывается форма элемента КЛ. Остается открытой форма Контрагента с новой строкой нового КЛ. А дальше нажимаем кнопку ОК и... |
|||
57
Vaflya
05.09.16
✎
16:13
|
(52) та не, все там получишь
то, что "версия данных" потом в контрагенте вылезет - да, кустарный способ - "перечитать" после манипуляций, можно и красивей придумать. да и вобще это все мелочи, ты так вобще при записи КЛ хотел его основным поставить, а вдруг отказ получишь, ужас , что делать О_0 |
|||
58
Vaflya
05.09.16
✎
16:16
|
(56) ветке уже 2 часа, а я так и не смог твой ник без запинки прочитать ;)
|
|||
59
lxs
05.09.16
✎
16:17
|
(57) ""перечитать" после манипуляций" - это г0внокод чистой воды и не прокатит, потому что , пяты сотрешь все то, что было не сохранено в БД. Что я хотел сделать, я написал в коде. Спрашивать можно где угодно. А вот менять - нет. Тут я часть своих слов возьму назад.
|
|||
60
lxs
05.09.16
✎
16:18
|
(58) Ты вслух его толи проговариваешь? делать нехер?
|
|||
61
crisalis
05.09.16
✎
16:18
|
с (40) по (57) это только в том случае если контрагент новый так получается надо его в базу сначала записать а потом уже КЛ выставлять...
(37) работает прекрасно ))), ща еще на новом элементе попробую |
|||
62
crisalis
05.09.16
✎
16:22
|
(61) для нового элемента лажа Поле "Владелец" не заполнено
))) , как я говорил... |
|||
63
lxs
05.09.16
✎
16:22
|
(61) В УТ 10.3 (в моем лохматом релизе) косяк. Там разработчики не предусмотрели почему-то ситуацию, когда контрагент новый или модифицированный. Поэтому там карточка нового КЛ открывается. но на выходе ты получаешь ошибку
|
|||
64
lxs
05.09.16
✎
16:22
|
(62) Ну так ее легко исправить)
|
|||
65
RomanYS
05.09.16
✎
16:23
|
(63) в БП2 всё хорошо
Процедура КонтактныеЛицаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа) Отказ = НЕ РаботаСДиалогами.ЗаписатьНовыйОбъектВФорме(ЭтаФорма); Если НЕ Отказ Тогда Отказ = Истина; Если Копирование Тогда НовыйОбъект = Элемент.ТекущиеДанные.Ссылка.Скопировать(); Иначе НовыйОбъект = Справочники.КонтактныеЛица.СоздатьЭлемент(); НовыйОбъект.ВидКонтактногоЛица = Перечисления.ВидыКонтактныхЛиц.КонтактноеЛицоКонтрагента; НовыйОбъект.ОбъектВладелец = Ссылка; КонецЕсли; //Форма = НовыйОбъект.ПолучитьФорму(, ЭтаФорма); Форма = НовыйОбъект.ПолучитьФорму(, Элемент); Форма.ЭлементыФормы.ВидКонтактногоЛица.ТолькоПросмотр = Истина; Форма.Открыть(); КонецЕсли; КонецПроцедуры |
|||
66
Vaflya
05.09.16
✎
16:24
|
(59) так контрагента же записать надо, прежде чем окно создания КЛ вызывать (и все "сохранится в БД")?
(60) а ты всегда читаешь вслух? (64) ну ка, давай подробней |
|||
67
lxs
05.09.16
✎
16:25
|
(66) см. (65)
|
|||
68
Vaflya
05.09.16
✎
16:25
|
(66) + чтобы "по-типовому"
|
|||
69
lxs
05.09.16
✎
16:26
|
(68) а давай сам дальше, слабо?
|
|||
70
lxs
05.09.16
✎
16:27
|
(69)+ пару строчек
|
|||
71
DomovoiNaStraze Pravo
05.09.16
✎
16:27
|
Контактные лица вообще подчиненный справочник?
|
|||
72
lxs
05.09.16
✎
16:27
|
(71) да.
|
|||
73
DomovoiNaStraze Pravo
05.09.16
✎
16:27
|
(72)Что-то думается нет.
|
|||
74
DomovoiNaStraze Pravo
05.09.16
✎
16:28
|
+(73)И отсюда весь сыр бор.
|
|||
75
lxs
05.09.16
✎
16:28
|
(73) УТ 10.3 - определенно да.
|
|||
76
DomovoiNaStraze Pravo
05.09.16
✎
16:28
|
Сори да
|
|||
77
lxs
05.09.16
✎
16:29
|
(76) см. (62) - это стандартная проверка
|
|||
78
crisalis
05.09.16
✎
16:30
|
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Хоть что то добавил от себя ))) - это в форме ФормаВводаНового в КонтактныеЛицаКонтрагентов. Спасибо всем |
|||
79
Vaflya
05.09.16
✎
16:31
|
а, ну кстати, вот и нормальный вариант - ЗаписатьВФорме() и не будет лажи с "версией данных"
(69) не, строчками не хочу, в моем мохнатом релизе это мышкой делается + че то не нравятся ваши типовые коды Отказ = НЕ РаботаСДиалогами.ЗаписатьНовыйОбъектВФорме(ЭтаФорма); Если НЕ Отказ Тогда Отказ = Истина; че это за "нег0внокод" |
|||
80
lxs
05.09.16
✎
16:31
|
(78) Молодец) На здоровье.
|
|||
81
lxs
05.09.16
✎
16:32
|
(79) Это где надо вставить?
|
|||
82
crisalis
05.09.16
✎
16:36
|
(79) да согласен , есть такое дело , ща поправлю ! Спасибо
|
|||
83
lxs
05.09.16
✎
16:40
|
(82)
Процедура КонтактныеЛицаКонтрагентаПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа) Отказ = НЕ РаботаСДиалогами.ЗаписатьНовыйОбъектВФорме(ЭтаФорма); КонецПроцедуры |
|||
84
crisalis
05.09.16
✎
16:46
|
(83) Еще раз всем спасибо ! Но знаете что самое обидное то что ОбработкаЗаписиНовогоОбъекта не сработала , по совету Roman я пересмотрел весь код событий для таб.поля но так и ничего не нашёл. ((( . а ведь для БанковскиеСчета работает!?
|
|||
85
RomanYS
05.09.16
✎
16:57
|
(84) поищи ещё
".ПолучитьФорму(, ЭтаФорма)" в форме справочника контрагенты. Мне замена из (65) помогла (типовой код закомментарен). |
|||
86
crisalis
05.09.16
✎
17:15
|
(85) вот только что есть:
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |