Подписка "ПередЗаписьюДокумента()" #622893


#0 by Sasha_H
Есть подписка на данное событие, в процедуре подписки прописан код: Мне необходимо неважно запишится документ или нет,  мне надо чтобы РС в любом случае перезаписался, а он редиска, когда документа получает Отказ на запись не сохраняет изменений.... что не так то сделано?
#1 by asady
потому что в транзакции
#2 by Sasha_H
черт, хотел код сэкономить, по-ходу придется эту всю бадю в модуле каждого объекта вызывать :(
#3 by zak555
что это за поля ?
#4 by Sasha_H
есть варианты как схитрить?
#5 by zak555
DocID - ID в каком виде ?
#6 by Sasha_H
по коду видно, что это ЧИСЛО!
#7 by Kreont
А если перенести в подписку ПриУстановкеНовогоНомера?
#8 by Sasha_H
дело в , там транза идет, а по скольку 1С туповата и не имеет разделенных транз, то попытка написать НачатьТранзу не приводит к успеху.
#9 by zak555
для какиз целей ?
#10 by Sasha_H
мне, что выложить ТЗ сюда в полном объеме?!
#11 by Sasha_H
не подходит, необходимо проаналиировать перед записью именно, может чего добавили в документ!
#12 by zak555
я к тому, что где ты потом будешь это использовать ?
#13 by Spieluhr
А какой смысл сохранять инфу в регистре, если в документе ввели абра-кадабру и он даже не записывается? Если док новый - у него и ссылки еще нет
#14 by Sasha_H
есть смысл!
#15 by pumbaEO
Ну если есть вселенский смысл, то запускай фоновое асинхронное задание и туда передавай свои параметры.
#16 by Sasha_H
В РС. поля счетчики: тут это обговаривалось...
#17 by Sasha_H
просто в случае реализации не учол транзакцию, а счас тестирую и вижу проблему...
#18 by zak555
жесть
#19 by Classic
Запускай обработку, которая запишет.
#20 by hhhh
товарищ из прав. В общем фигачь данные в таблицу значений или в файл на диске, а потом уже после окончания транзакции перекидывай их в регистр сведений.
#21 by hhhh
к
#22 by Sasha_H
жесть в том. что данные надо отдавать не в базу 1С. По ИД числовом шапки документа и строки ТЧ. Для этого мне необходимо хранить последнии счетчики, чтобы когда будет записыватся новая строка или новый документ взялся счетчик+1.
#23 by zak555
гуид храниться в каком формате ?
#24 by Sasha_H
ты что убить меня этим вопросом решил?
#25 by Sasha_H
боюсь ребят наткнемся тогда на неуникальность :(
#26 by Sasha_H
вся жесть состоит в том, что для строк документов и их шапок надо присвоить числовые ИД, чтобы при обмене в другую БД это выгружать.
#27 by zak555
#28 by Sasha_H
что со строками ТЧ собрался сделать?
#29 by zak555
строки будет определять так 1ая -- числоАйдиДока 2ая -- числоАйдиДока+1 3ая -- числоАйдиДока+2 ...
#30 by Sasha_H
ну в этом что-то есть. я правда не увидил момента:
#31 by Sasha_H
смое интересное, функция перевода системы изчесления где?
#32 by Sammo
Ну и отдавай. Только через планы обмена
#33 by hhhh
стоп. Ну у тебя же документ не записался, значит и твой регистр менять не надо. У тебя же в регистре номер последнего документа. Непонятно, чего ты паришься? То есть ответ был уже в .
#34 by Sasha_H
дело в том, что я изменил в документе его реквизиты :(
#35 by Sasha_H
+ Code        или Не ОбщегоНазначения.ЕстьТабЧастьДокумента("Товары",МетаданныеДокумента) Тогда
#36 by hhhh
но это изменение не сохранилось. Значит получается, что не изменил реквизиты.
#37 by Sasha_H
ревизиты уже установились и когда пользователь не закрыл документ, а например исправил количество, то все уже.
#38 by Sasha_H
вот гуид в число, я не увидил самой интересной функции Ч = бфМат.ПереводИзСистемыСчисленияВЧисло(СтрGUID, 16); чего там внутри-то?!
#39 by hhhh
они пишутся в базу в транзакции. И то что пользователь что-то там исправил - это никого не колышет. Транзакция отменена, значит пользователь со всеми его количествами послан в баню.
#40 by Sasha_H
в этом тоже есть идея, присваивать ИД только во время обмена.
#41 by Sasha_H
дел в том, что пример по коду выше: проверяем заполнены ли реквизит Шапки и ТЧ, если что-то не заполнено идем ниже. Читаем данные счетчиков в РС. Доплюсовуем эти счетчики и проставляем в реквизит документа. Идет сбой при проведении так как пользователь например указал завышенное к-во. Пользователь исправляет к-во и делает "Записать". на верхнем уровне в проерке уже реквизиты в документе DocID и DocRecID заняты, а РС не знает об этом.
#42 by Sasha_H
то есть при получении из РС DocID  = 100 в документ ставим DocID = 101 сбой в транзе, в РС не зашло изменения (101 и 1001), а вот в документ эти реквизиты установились. И при следующий записи, когда пользователь исправил замечания мы не присвоим никакого ID. Потом след. документ записуем и берем эти же (101 и 1001) - уникальность нарушена.
#43 by Sasha_H
вижу рабочий вариант только . минус его это перезапись документов.
#44 by Sammo
А ты в РС храни не последний, а гуид конкретного документа.
#45 by hhhh
так у тебя другая ситуация совсем. У тебя транзакция документа прошла успешно, у тебя регистр не записался.
#46 by hhhh
нужно чтобы у тебя как раз регистр писался в транзакции документа, а у тебя по отдельности документ и регистр. То есть в бред у тебя.
#47 by Sasha_H
не совем так. Первая транза дала сбой и гуиды встали в документ, после успешной транзы гуиды будут неверны.
#48 by Sasha_H
относительно Гуида в число и обратно нашол и протестил, мне не подходит, так как ИД  Ч вот примеры: КонецФункции e5c93656-da45-11e1-94ee-2c768aa92b8d 305 437 964 834 603 041 129 328 196 376 110 640 013 e5c93656-da45-11e1-94ee-2c768aa92b8d
#49 by Sasha_H
то есть даже если я и переведу мой ГУИД документа в число а он: 305 437 964 834 603 041 129 328 196 376 110 640 013 не соответсвует разрядности :(
#50 by Sasha_H
рост регистра он будет равен шапки+ тч строки
#51 by Sasha_H
хоть бери плин под скулем выполни через адо жостко INSERT :(
#52 by Sammo
При обмене с другой базой сделали составной ключ - гуид регистратора + номер строки. При приходе гуида регистратора сторонняя база полностью перезаписывает все записи с первой частью ключа = гуид.
#53 by Sasha_H
Со стороны другой базы никто ничего делать не будит НИКОГДА!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С