Имя: Пароль:
1C
1С v8
Если к списку документов присоединить регистр статусов, и разместить в ДС, как оптимально?
0 RetardedToBoot
 
11.05.22
20:33
Допустим есть некий вид документа. И по нему в отдельном РС пишутся статус этого документа. В сам документ нельзя, т.к. могут быть проблемы с блокировками. Соответственно, что бы в ДС получить и документ, и статус, нужно выполнить левое соединение. Но ДС тогда начинает чуть больше подтормаживать. В РС ссылка на документ сидит в измерении, статус в реквизите, запрос на получение без каких-либо итогов, регистр не периодический.

Есть ли более оптимальные варианты организации такой штуки?
1 H A D G E H O G s
 
11.05.22
20:43
ПриПолученииДанныхНаСервере
2 2S
 
11.05.22
21:29
(0) посмотри статусы счетов в типовой бп
3 Злопчинский
 
11.05.22
21:52
А почему в при записи в документ - блокировки, а в регистр - нет?
4 Злопчинский
 
11.05.22
21:53
записать в шапку документа статус - откуда здесь охренительные проблемы с блокировками?
5 Жан Пердежон
 
11.05.22
21:55
(0) не там вы тормоза ищете
6 H A D G E H O G s
 
11.05.22
21:56
(4) Потому что в ПослеПроведения.
7 Злопчинский
 
11.05.22
22:15
(6) сорри за ламерность, но при чем здесь изменение статуса документа к проведению документа?
статус вытекает из проведения документа? если да - то почему при проведении документа читается и пишется дохренища регистров и это не является проблемой? или блин, к 15 регитсрам добавить чтение/запись в еще один регистр - это кпц как нагрузит как последняя соломинка?
8 RetardedToBoot
 
11.05.22
22:16
(4) если кто-то захочет открыть документ еще раз, после сохранения, например, менеджеры любят добавлять строки в заказы покупателей, а в этот момент этот документ начинают подготовливать к резервированию, или еще какие-либо обработки, и статус об этот записать в документ, то у менеджера при записи заказа будут проблемы - объект изменен. И плюс сами по себе блокировки при одновременном доступе при описанной выше ситуации.
9 Злопчинский
 
11.05.22
22:26
(8) а тут статус поставлен одним процесом. а изменение документа другим процессом/менеджером? и это будет логически непротиворечиво в итоге?
10 timurhv
 
11.05.22
22:27
(0) Накладывается отбор по статусу? Видимых тормозов не должно быть.
11 H A D G E H O G s
 
11.05.22
22:34
(0) Проблема будет, если накладывать отбор по редкому статусу.
Лечиться индексированием ресурса Статус
12 RetardedToBoot
 
11.05.22
22:43
Вот такой примерно запрос получается в произвольном запросе у ДС:

выбрать
  тДок.Ссылка,
  тСтат.Статус,
  ... прочие реквизиты ...
из
  Документ.ЗаказПокупателей как тДок
  левое соединение
  РегистрСведений.СтатусыЗаказовПокупателей как тСтат
  по тДок.Ссылка = тСтат.Ссылка

При этом тСтат.Ссылка это измерение, и оно системой само по умолчанию индексируется. Статус индексировать не нужно, если только не нужны отборы по нему.
13 H A D G E H O G s
 
11.05.22
22:52
"если только не нужны отборы по нему"
Если только отборы не будут по малому количеству статуса из многих.
Если у тебя 999 доков в статусе "Создан" и 1 док в статусе "Заполнен" и ты отбираешь по "Создан", то индекс не нужен.
14 RetardedToBoot
 
11.05.22
22:58
(13) скорее 999 в состоянии завершен и отгружен, и 1 в статусе создан. Но вопрос чаще возникает в отношении общего списка.
15 H A D G E H O G s
 
11.05.22
23:03
(14) В отношении общего списка проблем нет. Если они есть - смотрите план запроса и ищите толстые стрелки
16 ДедМорроз
 
11.05.22
23:09
Статус отдельно,обычно,для того,чтобы не перезаписывать весь докумень при изменении статуса.
При этом,если процесс,меняющий статус также перезаписывает документ,то такой статус нет смысла хранить в отдельном регистре,если же остальные данные документа не меняются,то регистр позволит повысить и производительность и избежать проблем с перечитыванием документа после перезаписи из задания,меняющего статус.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший