Имя: Пароль:
1C
1С v8
Связь двух документов через регистр сведений?
,
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
Вопрос успешно закрыт. Всем помогавшим огромное спасибо.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс