Связь двух документов через регистр сведений? #701320


#0 by PiotrLoginov
Всем здрасте. В табличной части Документа2 есть реквизит Док - ссылка на Документ1. По логике процесса на первом этапе пользователем создается и проводится Документ1. На втором этапе создается Документ2, и в его табличной части заполняется реквизит Док - ссылка на Документ1, созданный на первом этапе. Надо чтобы после проведения Документа2 уже невозможно было перепровести Документ1. Хотел реализовать это с помощью регистра сведений, но что-то не хватает соображалки. В основном смущает, что если стряпать независимый РС, теряется жесткая связь записи РС с документом - заходи кто хочешь, правь что хочешь. А если стряпать РС с подчинением регистратору, приходится использовать в качестве регистратора оба документа - такая выходит каша... г-нокодом попахивает. Помогите плиз.
#1 by fmrlex
Я бы подумал в сторону свойств.
#2 by KrivosheevEV163rus
Может, добавить реквизит документу "Документ1"?
#3 by be-may
"приходится использовать в качестве регистратора оба документа "  - а можно поподробней почему оба ?
#4 by kvikster
лучше использовать Критерии отбора и указать поле табличной части как критерий
#5 by PiotrLoginov
ну там еще на самом деле есть цель учитывать Документы1, еще не использованные в реквизитах Документов2 Так что сначала наверное имеет смысл при проведении Документа1 создавать какую-то запись об этом в регистре, а затем на втором этапе при проведении Документа2 корректировать эту запись, указывая на недопустимость дальнейших правок Документа1
#6 by PiotrLoginov
Критерии до сих пор использовал только для получения информации о связанных с объектом движениях и документах. Как мне критерии помогут в блокировании изменений документа?
#7 by Kalambur
если у тебя док1 связан с док2 как ты думаешь?
#8 by PiotrLoginov
каюсь, вообще не понял Вас
#9 by mulmulya
после проведения Документа2 Документ1.ЗапретитьИзменениеДокумента = Истина не подходит?
#10 by alkorolev
как связан критерий отбора с тем, о чем говорится в ?
#11 by PiotrLoginov
Нет, получить с помощью критерия те Документы2, в которых документ1 уже использован - да, это легко. Но мне мало получить информацию о связанных Документах2.  Мне надо, чтобы никто не смог в принципе совершить проведение Документа1 ввиду требований РС к уникальности записей
#12 by ИС-2
а почему бы не сделать тупо запрос при проведении Док1 к Док2? Нашли док2 - не проводим Док1 пальцы бы отрубать, тем программистам кто использует свойства и категории...
#13 by ИС-2
сделать через права доступа на регистр
#14 by PiotrLoginov
ЗапретитьИзмененияДокумента?  Что за метод?
#15 by mulmulya
а не... это реквизит надо создавать... поспешила
#16 by PiotrLoginov
к
#17 by mulmulya
как вариант, если не хочется возиться с РС, создать реквизит  ЗапретитьИзмененияДокумента, но не проще
#18 by PiotrLoginov
потому что искать запросом среди тысяч документов те, что ссылаются на текущий Документ1 - тоже не по путю
#19 by kvikster
измени тогда обработку проведения указав Отказ = ложь если связанный документ провведен
#20 by sergeev-ag-1977
- а чем помочь то ? Так и не понял. 1. Пусть будет РС (регистр сведений) в котором будет при проведении Док_2 ссылка на Док_1. 2. Делай подписки на события для Док_1 которые смотрят на РС - как вариант. Конфа типовая или вся сам-сам ?
#21 by SeraFim
в ЗУПе - есть документ ЗарплатаКВыплате. на его основании создают ВедомостьВКассу/ВедомостьВБанк. Соответственно, если есть Ведомость, то ЗарплатуКВыплате нельзя менять. Это контролируется: Перед записью запросо получают проведенные ведомости с соответствующим основанием.
#22 by SeraFim
+ то есть напрямую к самим документам     |ГДЕ     |    ВедомостьВБанк.ДокументОснование = &Ссылка     |    И ВедомостьВБанк.Проведен
#23 by PiotrLoginov
вся-сам Насчет подписок подумаю. РС, в котором только при проведении Док2 создается запись - этого мало. Надо иметь возможность быстро понять, уже использован Документ1 где-то или еще нет. Интересно.  Жаль нет возможности пощупать ЗУП Господа, неужели одним лишь РС, правильно организованным, вопросик мой не решить?
#24 by sergeev-ag-1977
- что значит использован Док_1 или нет ? Если на него есть ссылка в документе помеченном на удаление? Какой смысл в этой ссылке ? Это как раз и будет достаточно. Или под быстро понять понимается подключить к 1С медиума ?
#25 by PiotrLoginov
В общем, пока делаю выводы, что поиск Документов2 запросом или с помощью критериев и модификация проведения Документа1 - единственный вариант  :(   Как-то грустно...
#26 by kvikster
А Документ1 соответствует только одному Документ2 ?
#27 by PiotrLoginov
использован - значит на него ссылается реквизит табличной части Документа2 Если же Документ2 был помечен на удаление, его движения в РС, который я пытаюсь сварганить отменены - это то, что мне надо. да, еще нужен контроль, чтобы было именно так.
#28 by PiotrLoginov
Все-таки использование регистра было идеально: из него можно быстро получить информацию, использован ли уже Документ1 (т.е. во втором Документе2 использовать уже низя, это я как раз реализую кодом форм); если Документ2 откатили/пометили на удаление, запись из РС удалится автоматически; невозможно будет даже внешней обработкой изменить запись РС, не увязав изменение с регистратором...
#29 by sergeev-ag-1977
Хы гы... Вы не думали в Док_1 применить понятие "стадия документа" (подготовлен, утвержден). Может быть такая ситуация: - Док_2 в состоянии новый (делается); - Док_1 в это время распроводится; - Док_2 в это время проводится ... В общем такие шахматные задачки Вам ещё порешать придётся.
#30 by PiotrLoginov
Да вот как раз подумал. Тем более такие фишки как версионирование документов, согласование и статусы сейчас активно используются в типовых конфах. Но это все не то...  Всегда можно зайти под Администратором и в крайнем случае подправить, что заблагорассудится обработкой. И кто потом будет искать, какой Документ2 надо перепровести из-за того что кто-то наловчился менять обработками Документы1 задним числом? Хорошо, если есть штатный оператор БД или другой специалист, администрирующий/следящий...
#31 by Serg_1960
Почему никто не вспомнил ЗУП и связанные между собой документы - документ-исправление и исправленный документ?
#32 by PiotrLoginov
Еще вот такая мысль: в типовых некоторые регистры заполняются поэтапно. Т.е. сначала часть ресурсов заполняется одним документом, а потом, позже, при проведении регламентных документов оставшиеся пустыми реквизиты дозаполняются. Мб тут можно что-нибудь придумать?
#33 by PiotrLoginov
см. Не могу пощупать ЗУП. Можно обратиться к .. мб к исправительным СФ в БП?
#34 by be-may
"Надо иметь возможность быстро понять, уже использован Документ1 где-то или еще нет. " А в чем проблема то это быстро понять ? Запрос к РС  или попытка получить набор с отбором  по измерению Док, в котором Док = Документ1
#35 by Serg_1960
Тс таки не озвучил ни одну типовую конфигурацию, доступ к которой у него есть :( Можно "пощупать" и связь с/ф с документами поступления или реализации.
#36 by PiotrLoginov
так чтобы отправить запрос из получить набор из РС, надо этот РС придумать.  И заполнять по мере появления новых документов.  Именно это у меня и не получается.  Потому и помощи прошу.
#37 by PiotrLoginov
УПП , УТ, БП
#38 by Serg_1960
в УПП  - весь функционал ЗУП-а есть
#39 by Serg_1960
+ см., например, общий модуль ПроведениеРасчетов, функции ПолучитьДокументИсправление и ПолучитьДокументСторнирование
#40 by Strogg
В документ1 сделать ссылку на Документ2. Заполнять ее при проведении документ2. В модуле проведения документа Документ1 сделать отказ, в случае, если реквизит Документ2 заполнен. Не пойдеть?
#41 by PiotrLoginov
Пока посмотрел, как связаны СФ с доками реализации в УТ. Ну помню я эту процедуру, обращался к ней когда стряпал правила обмена. Там тупо идет поиск среди всех СФ тех, у которых основание - текущая РТиУ. Посмотрел ПолучитьДокументСторнирование в УПП . Все та же басня. А на практике сколько раз я сталкивался с ситуацией, когда нерадивые пользователи строгают по нескольку СФ к одному РТиУ и т.п. Т.е. в Документ1 реквизит-ссылка на Документ2, а в Документ2 реквизит-ссылка на Документ1 ?  Ыы-ы..
#42 by PiotrLoginov
Ладно, уважаемые, спасибо конечно, что не прошли мимо, дали ориентиры... Так или иначе, посовещавшись уже четче представляешь ситуацию.
#43 by Necessitudo
Чувак - знаешь что такое циклические ссылки?
#44 by mistеr
В том же ЗУПе есть регистр СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям, который обеспечивает ровно то, что ты хочешь.  Посмотри, не пожалеешь.
#45 by EugeniaK
В документ2 добавляете ссылку на Документ1. Ничего не больше не нужно в данных! При перепроведении документа1 проверяете, а нет ли случайно Документа2. Если есть, то проведение запретить.
#46 by PiotrLoginov
спасибо, ща гляну... как проверяю-то?
#47 by EugeniaK
Запросом к документам2, что есть проведенный документ со ссылкой на Документ1. Можно поле в Документе2 дополнительно проиндексировать.
#48 by fmrlex
У тебя со свойствами не сложилось?
#49 by PiotrLoginov
понятно.  ладно, перебор всех документов2 уже предлагали. Мб Вы и правы... А почему РС с самого начала обсуждения не в чести у всех высказавшихся форумчан? я ж написал, что не понял, о чем речь.  Мож торможу, а мож просто не в курсе
#50 by fmrlex
Это не тебе.
#51 by PiotrLoginov
пардон
#52 by EugeniaK
Лишняя сущность ради мелкой задачи.
#53 by fmrlex
Запрос по ТЧ доков при проведении другого дока не кошерно.
#54 by EugeniaK
В данном случае это логично. Потеря времени за запись дополнительного РС больше, чем разница в скорости запроса по регистру и реквизиту документа.
#55 by Ksandr
Посмотри любую типовую спр. ДоговорыКонтрагентов. Процедура перед записью. Это правильный подход, потому что быстро и без лишних записей и т.д. Речь о КритерииОтбора который здесь очень уместен.
#56 by PiotrLoginov
Между Критерием и подобием СведенияОВыплатахРаботникамОрганизацийПоПлатежнымВедомостям выбрал второе - показалось, это даст возможность в будущем при необходимости наращивать функционал. Регистраторы регистра - как Документ1, так и Документ2. Измерение - Документ1, ресурс - Документ2. В обработке проведения Документа2 перед проведением написал удаление движений от Документ1. Получилось то, что надо: после проведения Документ2 уже никто не сможет перепроводить Документ1 и в тоже время всегда можно получить список Документов1, еще не отраженных в Документах2.
#57 by PiotrLoginov
Вопрос успешно закрыт. Всем помогавшим огромное спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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