|
Как найти источник ошибки платформенной проверки заполнения реквизита? | ☑ | ||
---|---|---|---|---|
0
mikecool
24.09.19
✎
12:01
|
Ловлю сообщение "Значение поля "Организация" не заполнено или заполнено неверно" при записи банковского счета в БП для Казахстана.
в счетах нет поля организация, есть договор контрагента, который не заполнен. отладчиком прошелся по подпискам - пока ничего не нашел в ЖР ни слова, есть откаты по справочнику Идентификаторы объектов расширений и больше ничего. Как отловить мест возникновения платформенной проверки? зы: БС записываю для незаписанного контрагента, передав ссылку нового |
|||
1
aleks_default
24.09.19
✎
12:18
|
ну о тексту ошибки глобальный поиск задай. Ошибка явно не платформенная
|
|||
2
palsergeich
24.09.19
✎
12:20
|
(0) в форме и в модуле объекта в продедуре проверка заполнения поставь точку останова, посмотри параметр массивРеквизитов и по стеку размотай
|
|||
3
Креатив
24.09.19
✎
12:21
|
(0)Подозрение падает на Владельца. Посмотри подчинённость справочников.
|
|||
4
mikecool
24.09.19
✎
12:21
|
(1) искал, и по началу строки и по окончанию - не нашел
(2) у БС модуль объекта пустой |
|||
5
palsergeich
24.09.19
✎
12:24
|
(2) а на форме?
|
|||
6
aleks_default
24.09.19
✎
12:24
|
(3)+вот кстати согласен
|
|||
7
aleks_default
24.09.19
✎
12:24
|
именно так и ругается когда владелец не заполнен
|
|||
8
mikecool
24.09.19
✎
12:30
|
(7) когда не заполнен Владелец, и сообщать должен о владельце - или я чего то не понимаю?
(5) а вот на форме не удосужился посмотреть |
|||
9
mikecool
24.09.19
✎
12:31
|
+8 только форму я не открываю, БС создается программно
|
|||
10
aleks_default
24.09.19
✎
12:32
|
(8)Нет. 100% это Владелец. Был похожий случай со штатным расписанием.
|
|||
11
palsergeich
24.09.19
✎
12:32
|
(8) В диагностике он выводит синоним, а по стандарту владельцу обязательно надо давать осмысленный синоним, так что вполне возможно что дело в этом
|
|||
12
Вафель
24.09.19
✎
12:32
|
сделай замер при записи и ищи по замеру
|
|||
13
mikecool
24.09.19
✎
12:32
|
(10) а ведь ты прав... синоним стандартного реквизита - Организация
это как так??? когда Владелец составной тип )))) |
|||
14
palsergeich
24.09.19
✎
12:33
|
(13) они ещё с элементом играют, по стандарту разработки владельцу надо давать осмысленный синоним
|
|||
15
palsergeich
24.09.19
✎
12:34
|
(14) иначе АПК ругаться будет и разраба бьёт током в кресло
|
|||
16
mikecool
24.09.19
✎
12:34
|
тогда получается нельзя подсунуть ссылку нового?
делаю так: СсылкаКонтрагент = Справочники.Контрагенты.ПолучитьСсылку(); Контрагент = Справочники.Контрагенты.СоздатьЭлемент(); Контрагент.УстановитьСсылкуНового(СсылкаКонтрагент); ... БанковскийСчет = Справочники.БанковскиеСчета.СоздатьЭлемент(); БанковскийСчет.Владелец = Контрагент.ПолучитьСсылкуНового(); где то у меня ошибка? |
|||
17
mikecool
24.09.19
✎
12:35
|
(14) ясно, далек я немного от этого )
|
|||
18
aleks_default
24.09.19
✎
12:36
|
Контрагент.ПолучитьСсылкуНового()
|
|||
19
palsergeich
24.09.19
✎
12:36
|
(17) если ты сделаешь обменданными.загрузка = истина при записи то эта проверка выполняться не будет, но и владелец будет пустой, что тоже неправильно
|
|||
20
palsergeich
24.09.19
✎
12:37
|
(19) но обойти в лоб, да, можно
|
|||
21
aleks_default
24.09.19
✎
12:38
|
В транзакции записывай
|
|||
22
mikecool
24.09.19
✎
12:40
|
(21) создание контрагента и БС идет как раз в общей транзакции
|
|||
23
mikecool
24.09.19
✎
12:41
|
(18) я в (16) так и пишу
|
|||
24
mikecool
24.09.19
✎
12:41
|
(19) этого мне не надо , как раз )
|
|||
25
Вафель
24.09.19
✎
12:41
|
|
|||
26
aleks_default
24.09.19
✎
12:42
|
(23)Так тут и ошибка. Владелец должен быть записан в базе. А метод получает ссылку незаписанного объекта
|
|||
27
mikecool
24.09.19
✎
12:46
|
(25) ага, попробую
|
|||
28
Вафель
24.09.19
✎
12:48
|
ну и без обмена данных такое не запишешь конечно
|
|||
29
mikecool
24.09.19
✎
12:50
|
+27 не помогло, щас попробую старый вариант + ОбменДанными
|
|||
30
Вафель
24.09.19
✎
12:51
|
(29) так этого и не достаточно
|
|||
31
mikecool
24.09.19
✎
12:53
|
в общем работает так:
СсылкаКонтрагент = Справочники.Контрагенты.ПолучитьСсылку(); Контрагент = Справочники.Контрагенты.СоздатьЭлемент(); Контрагент.УстановитьСсылкуНового(СсылкаКонтрагент); ... БанковскийСчет = Справочники.БанковскиеСчета.СоздатьЭлемент(); БанковскийСчет.Владелец = Контрагент.ПолучитьСсылкуНового(); ... БанковскийСчет.ОбменДанными.Загрузка = Истина; БанковскийСчет.Записать(); все создается синхронно |
|||
32
dezss
24.09.19
✎
12:57
|
А можно узнать смысл записи БС без записи контрагента?
|
|||
33
aleks_default
24.09.19
✎
12:58
|
(32)Контрагент.Ссылка чем то не устраивает наверное
|
|||
34
Mankubus
24.09.19
✎
13:00
|
(32) например если в контрагенте нужно заполнить основной банковский счет, а в банковском счете владелец = контрагент
|
|||
35
mikecool
24.09.19
✎
13:01
|
(33) сейчас еще проверю и с Контрагент.Ссылка
(32) я не пишу их отдельно, чтобы не перезаписывать контрагента дважды указываю его ссылку |
|||
36
Вафель
24.09.19
✎
13:02
|
контрагента нужно записать до.
и брать ссылку на банковский счет, а не наоборот |
|||
37
Вафель
24.09.19
✎
13:02
|
(33) будет пустая ссылка
|
|||
38
mikecool
24.09.19
✎
13:03
|
(37) да, получаю пустую ссылку
(36) предлагаешь дважды записывать контрагента? |
|||
39
aleks_default
24.09.19
✎
13:05
|
(37)Так он же пишет что в транзакции все, значит после записи ссылка уже не пустая
|
|||
40
Вафель
24.09.19
✎
13:06
|
(38) а где запись контрагент?
|
|||
41
palsergeich
24.09.19
✎
13:09
|
Ты можешь контрагенту установить ссылку нового, эту ссылку поместить во владельца банковского счёта, этого будет достаточно, и не надо будет делать лишнюю щапись
|
|||
42
mikecool
24.09.19
✎
13:10
|
(40) вот здесь ))
СсылкаКонтрагент = Справочники.Контрагенты.ПолучитьСсылку(); Контрагент = Справочники.Контрагенты.СоздатьЭлемент(); Контрагент.УстановитьСсылкуНового(СсылкаКонтрагент); ... Контрагент.ОсновнойБанковскийСчет = СоздатьБанковскийСчетКонтрагентаПоДаннымWS(Контрагент); Контрагент.Записать(); а это уже ф-я СоздатьБанковскийСчетКонтрагентаПоДаннымWS БанковскийСчет = Справочники.БанковскиеСчета.СоздатьЭлемент(); БанковскийСчет.Владелец = Контрагент.ПолучитьСсылкуНового(); ... БанковскийСчет.ОбменДанными.Загрузка = Истина; БанковскийСчет.Записать(); Возврат БанковскийСчет.Ссылка; |
|||
43
Вафель
24.09.19
✎
13:11
|
(42) а нужно наоборот
|
|||
44
mikecool
24.09.19
✎
13:11
|
(41) единственный прикол в том, что система ее считает пустой
или это потому, что в одной транзакции |
|||
45
Вафель
24.09.19
✎
13:11
|
|
|||
46
Вафель
24.09.19
✎
13:12
|
(44) он не пустой, а не верный скорее всего
|
|||
47
mikecool
24.09.19
✎
13:12
|
(43) Толик, кому нужно? )) я ухожу от второй записи контрагента
|
|||
48
mikecool
24.09.19
✎
13:13
|
+47 у меня и контрагент и БС - новые
|
|||
49
Вафель
24.09.19
✎
13:13
|
(47) где ты увидел 2 записи?
|
|||
50
Вафель
24.09.19
✎
13:13
|
(47) тебе нужно - у тебя же не работает
|
|||
51
mikecool
24.09.19
✎
13:14
|
(49) а что возвращает ПолучитьКонтрагента(), если он еще не записан в базу?
|
|||
52
Вафель
24.09.19
✎
13:14
|
|
|||
53
Вафель
24.09.19
✎
13:14
|
(51) записан конечно же
|
|||
54
mikecool
24.09.19
✎
13:14
|
(52) у тебя то же самое, только с боку
|
|||
55
mikecool
24.09.19
✎
13:15
|
(53) а как он записан, если он, как и БС, только загружается?
|
|||
56
Вафель
24.09.19
✎
13:15
|
(54) порядок записи другой
|
|||
57
aleks_default
24.09.19
✎
13:15
|
Я ж говорю проблема в том что контрагента сначала записывают а потом получают у него ссылку нового
|
|||
58
Вафель
24.09.19
✎
13:15
|
(55) я на обед, может к тому времени поймешь что я имел ввиду
|
|||
59
Вафель
24.09.19
✎
13:15
|
(57) не в этом
|
|||
60
mikecool
24.09.19
✎
13:16
|
(58) приятного
|
|||
61
mikecool
24.09.19
✎
13:16
|
(57) контрагента не надо записывать, ибо:
Позволяет для нового (созданного и еще не записанного) объекта получить ранее установленное методом УстановитьСсылкуНового значение ссылки. |
|||
62
mikecool
24.09.19
✎
13:18
|
(56) твой порядок подразумевает:
1) создать новый БС 2) создать контрагента, записать контрагента 3) присвоить владельца БС, записать БС 4) присвоить основной счет в контрагента, записать контрагента я правильно понял? |
|||
63
aleks_default
24.09.19
✎
13:23
|
Ну не в этом так не в этом. *Обижено ушел на обед
|
|||
64
mikecool
24.09.19
✎
13:27
|
(63) не кушай с обидой - в прок не пойдет )))
|
|||
65
dezss
24.09.19
✎
15:22
|
(62) Нет, он имеет ввиду, что сперва создается БС(не записывается) потом контрагент, в его реквизит осн. БС, пишешь СсылкуНового БС, потом записываешь контрагента, потом у БС ставишь Владельцем этого уже записанного контрагента и записываешь уже БС.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |