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