|
Кажется траблы с транзакциями или блокировкми при создании эл спр. Как решить? | ☑ | ||
---|---|---|---|---|
0
Обработка
22.12.22
✎
08:28
|
Есть документ "ТрудовойДдоговор". В нем есть Реквизит "ФизЛицо" и еще есть "Сотрудник". Еще куча других реквизитов.
При записи в процедуре ПередЗаписью дока создаем элемент справочника сотрудника который данные берет с текущего документа. Записывается и привязывается к реквизиту дока. Далее создается документ "ПриемНаРаботуВОрганизацию" и записывается. В результате иногда получаем битую!!! ссылку в реквизите "сотрудник". Почему такое происходит? Ранее все это делалось в модуле при проведении. И таких траблов не было. В данный момент придумал приблуду который смотрит битая ссылка или нет и приводит к отказу записи. Но сегодня утром 2 дока уже были записаны. И с битой ссылкой. Тоже не понятно. |
|||
1
DimVad
22.12.22
✎
08:50
|
(0) Тут как бы много чего может быть. Мы же кода не знаем...
А зачем (например) создавать "ПриемНаРаботуВОрганизацию" создавать ПередЗаписью дока ? Что там будет при перепроведении ? Может быть хотя бы из формы, типа : ПередЗаписью в форме в конце если НЕ Отказ тогда проверям что документа ещё нет, а если нет - то спрашиваем "Вам создать документик" - и по кнопульке создаём ? Понимеате, транзакции в 1С штука вообще интересная. Например вы пишите "отменить транзакцию" а на деле СУБД что-то сделает только когда управление уйдёт из скриптового кода в код платформы... А человек привыкший к языкам этого не знает и думает что отмена уже выполнена... Короче всё это "не 1С-вэй" :-) На "вэй" - это создавать ручками "на основании" :-) Но думаю что и в процедуре потянет (правда, если док новый то и ссылки ещё нет. Не знаю нужна ли она там...). Ну это всё так, в порядке рассуждений :-) |
|||
2
Обработка
22.12.22
✎
09:02
|
Сотрудник создается в модуле объекта дока в процедуре "ПередЗаписю"
А документ ПриемНаРаботуВОрганизацию в модуле "ПриЗаписи". |
|||
3
DimVad
22.12.22
✎
09:04
|
(2) Вот я и говорю - а надо ли так делать ?
|
|||
4
Kassern
22.12.22
✎
09:05
|
(0) "в процедуре ПередЗаписью дока создаем элемент справочника сотрудника который данные берет с текущего документа.
Записывается и привязывается к реквизиту дока. Далее создается документ "ПриемНаРаботуВОрганизацию" и записывается. " - не надо так делать. Все это потом приводит к череде ошибок учета. |
|||
5
НафНаф
22.12.22
✎
09:05
|
(2) если это одна и таже запись - то так быть не может, ибо транзакция (явная или неявная), а вот если это две разные записи, да еще есть Попытка, которая уходит в Исключение...
|
|||
6
DimVad
22.12.22
✎
09:06
|
+(3) Ну вот в типовых в РТУ создаётся счёт-фактура. Чем плохо сделано ? И никаких проблем с транзациями.
|
|||
7
Kassern
22.12.22
✎
09:06
|
А что будет, если документ распроведут, или отредактируют? Что будет со связанными объектами?
|
|||
8
magicSan
22.12.22
✎
09:07
|
в ЖР сотрудник ведь не создан по какойто причине.
|
|||
9
Kassern
22.12.22
✎
09:07
|
(6) Счет фактура имеет специфичный вид и полностью ссылается на документ основание. Удалишь реализацию/отредактируешь строки, все это дело отразится в СФ.
|
|||
10
mikecool
22.12.22
✎
09:08
|
транзакции разные - вот и весь сказ
|
|||
11
Kassern
22.12.22
✎
09:08
|
А тут, в трудовом договоре указали одного сотрудника, у вас создался ряд объектов связанных, а потом, ой блин, там другой сотрудник должен быть, и все, приплыли)
|
|||
12
НафНаф
22.12.22
✎
09:09
|
(7) тоже, что и с другими связанными документами
|
|||
13
НафНаф
22.12.22
✎
09:09
|
(9) ну и тут можно так делать, сценариев много
|
|||
14
DimVad
22.12.22
✎
09:10
|
(9) Возможно и здесь надо как-то так. А возможно и нет. Смотря какая логика.
Важно что они решают задачу без проблем с транзакциями. |
|||
15
Обработка
22.12.22
✎
09:23
|
Самая главная ошибка это то что придумали документ ТРУДОВОЙДОГОВОР как отдельный док и его привязали к приему.
И еще сделали что Примем без ТД вообще не работает. Ни кто не может создать не редактировать и проводить и отменять итп. А могли бы сделать красиво просто в Приеме добавить новую страницу -вкладку и там разместить любые реквизиты доп. С этого и пошло. При этом док ТД вообще не делает никаких движений а просто управляет доком Прием. Ну там еще печатает еще договор приказ итп. |
|||
16
Обработка
22.12.22
✎
09:26
|
(3) Ну вот ищу другие пути.
Сдела в документе на форме кнопку создать сотрудника. Не хотят юзать. Говорят желательно чтоб все автоматом. Документооброта много и подразделений много. ЗУП2 корп каз с кучей доработкой и давно уже не обновляется актуальными релизами... |
|||
17
Kassern
22.12.22
✎
09:27
|
(15) А зачем его было делать документом? В типовых конфах договора - это справочник. В ЗУП ТД это вообще печатная форма, емнип.
|
|||
18
Kassern
22.12.22
✎
09:28
|
(16) " и давно уже не обновляется актуальными релизами" - а как вы под наше изменчивое законодательство подстраиваетесь?
|
|||
19
Обработка
22.12.22
✎
09:28
|
(7) Все это контролируется и управляется подписками ... Там траблов нет. Хотя выше сказал что зря так придумали.
|
|||
20
magicSan
22.12.22
✎
09:28
|
(16) млять ЖУрнал регистраций открой и посмотри почему сотрудник не создался, перед создананием второго документа делай проверку на то что сотрудник создался.
|
|||
21
Kassern
22.12.22
✎
09:29
|
(19) Ну вот вы подпиской контроллируете, а у вас бац и конфликт блокировок, док записался, а подписка не отработала. Дальше что?)
|
|||
22
Kassern
22.12.22
✎
09:30
|
И вот будет забавно, когда у вас основной документ не будет проводится, из-за ошибок связанных, так как они будут вашу трназакцию откатывать.
|
|||
23
Обработка
22.12.22
✎
09:31
|
(20) Как можно искать в ЖР битую ссылку.
С документом была попытка поймать в чем дело так ведь спецом "попытку исключение" сделал не отловил ведь. |
|||
24
Kassern
22.12.22
✎
09:33
|
(23) Ну так записывайте в исключении ошибку в ЖР
|
|||
25
Обработка
22.12.22
✎
09:33
|
(19) Да все это я знаю реализвано до меня 2-3 года назад. Я дальше дописываю.
Сразу всех обратил внимание на то что так вообще не кошерно! Но уже поздно переделать не дадут. Или нужн им веские доказательства. Ведь работало же как-то 2-3 года. |
|||
26
DimVad
22.12.22
✎
09:34
|
(16) "Не хотят юзать. Говорят желательно чтоб все автоматом.
Документооброта много и подразделений много." Т.е. пользователь продавливает "своё видение". Ну можно сделать регламентное задание которое проверяет все ли доки сделаны и делает что надо. Просматривает доки, например, открытого периода. Никакого конфликта с транзакциями документа а если что не записалось (конфликт блокировок, например) - следующий раз поправит. |
|||
27
Обработка
22.12.22
✎
09:36
|
(23) В исключение не попадает ведь!
Попытка лкОбСотрудник.Записать(); Сотрудник = лкОбСотрудник.Ссылка; Исключение // ЗаписьЖурналаРегистрации("ЗаписьСотрудникаТД",УровеньЖурналаРегистрации.Ошибка,,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначения.ОшибкаПриПроведении("Проведение прервано, повторите попытку!", Отказ); КонецПопытки; |
|||
28
Обработка
22.12.22
✎
09:37
|
(26) они же интерактивно работают и надо ведь распечатать договор и выслать кандитату на подпись.
|
|||
29
DimVad
22.12.22
✎
09:42
|
(28) Ну тогда создавайте документы при нажатии на кнопку "печать пакета документов".
|
|||
30
Обработка
22.12.22
✎
12:08
|
Пока однозначно не пришел к четкому решению как переделать.
|
|||
31
Kassern
22.12.22
✎
12:10
|
(30) "ПередЗаписью дока создаем элемент справочника сотрудника который данные берет с текущего документа" - у вас вся проблема именно в этом. Как вы блин можете брать данные текущего документа, если он, к примеру, не записан в базу? Перед записью, у вас транзакция еще не началась, документа в базе нет, а вы уже пытаетесь его указать и ловите битую ссылку.
|
|||
32
Kassern
22.12.22
✎
12:10
|
или я не правильно вас понял?
|
|||
33
Обработка
22.12.22
✎
12:20
|
(31) Воу! Ведь хороший ход мысли. Сенкс. Ранее ведь док был записан и при проведении всяко уже все было кроме самого сотра!
У меня Обычные формы действие происходит в модуле объекта дока. Что измениться если перенесу код в модуль форму туда же в одноименную процедуру? |
|||
34
Обработка
22.12.22
✎
12:22
|
По ходу мне надо на форму перенести если надо записать дважды док!
Сначала без сотра потом уже с сотром. Может так выправлю ситуацию. |
|||
35
Kassern
22.12.22
✎
12:27
|
(33) Есть еще такая тема, как УстановитьСсылкуНового. Можете попробовать через нее реализовать, чтобы дважды не записывать.
Добавьте себе в закладки эту статью, или картинку из нее. https://infostart.ru/1c/articles/1175475/ Там хорошо расписано как запись документа происходит в разрезе событий и транзакций. |
|||
36
Обработка
22.12.22
✎
12:36
|
(35) Это же у меня распечатано и где то валятеся. )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |