|
уникальный номер в ТЧ справочника (рекв.) в пределах всего справочника | ☑ | ||
---|---|---|---|---|
0
s-n-a-y
02.02.16
✎
12:02
|
Есть справочник. В нем ТЧ. В ТЧ для каждой строки есть рекв. Номер, он уникален в пределах всего справочника. При создании нового эл-та справочника я должен узнать, значение последнего использованного номера. Где его лучше хранить, в регистре сведений? Как сделать кошерно?
|
|||
1
cdiamond
02.02.16
✎
12:05
|
А запросом некошерно узнавать?
|
|||
2
s-n-a-y
02.02.16
✎
12:08
|
(1) пробежаться в запросе по всем элементам спр. и по их ТЧ?
|
|||
3
su_mai
02.02.16
✎
12:12
|
(0) А как быть с пустотами, если некоторые элементы удалили и номера освободились?
|
|||
4
Рэйв
02.02.16
✎
12:13
|
(2)МАКСИМУМ уже отменили?
|
|||
5
s-n-a-y
02.02.16
✎
12:13
|
(1) в принципе справочник не должен сильно разрастись, хай тэк и будет
|
|||
6
su_mai
02.02.16
✎
12:13
|
+(3) Т.е. вопрос в том, зачем хранить последний номер?
|
|||
7
cdiamond
02.02.16
✎
12:13
|
(2) Зачем? Запрос максимального значения поля "номер" напрямую из табличной части.
|
|||
8
cdiamond
02.02.16
✎
12:15
|
(3) Когда "пустота" закончится что будешь делать?
|
|||
9
s-n-a-y
02.02.16
✎
12:15
|
(3) в моем случае пустоты пропускать нужно
|
|||
10
cdiamond
02.02.16
✎
12:16
|
(9) Тогда см (4) и (7)
|
|||
11
s-n-a-y
02.02.16
✎
12:16
|
(4) да, я это предполагал
|
|||
12
igork1966
02.02.16
✎
12:19
|
(4),(11) блокировать весь справочник не забудь... иначе будут проблемы
|
|||
13
su_mai
02.02.16
✎
12:20
|
(11) На самом деле запись номера в регистр и считывание его запросом, на мой взгляд, более затратная операция чем просто запрос к таблице табличных частей справочника. Естественно надо подумать на индексами по полю Номер
|
|||
14
s-n-a-y
02.02.16
✎
12:36
|
(12) блин, наверное, да. Но блокировками до этого на практике пользоваться не приходилось ни разу. Как бы не накосячить. Накидал такой код:
Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("Справочник.МойСправочник"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; Блокировка.Заблокировать(); Правильно ли я понимаю, что блокировка будет работать до конца той процедуры, в которой она описана? И в рамках этой процедуры я спокойно могу изменять элементы справочника? |
|||
15
ObjectRelation Model
02.02.16
✎
12:42
|
UUID не предлагать?
|
|||
16
Карупян
02.02.16
✎
12:44
|
(14) блокировка работает до конца транзакции
|
|||
17
EugeniaK
02.02.16
✎
12:47
|
(15) +1
Если не принципиально именно число, записывай лучше UUID |
|||
18
Остап Сулейманович
02.02.16
✎
12:49
|
(0) Я бы сделал подчиненным справочником. И забил бы на все блокировки, уиды и прочее. Оно бы тогда - само.
|
|||
19
Eiffil123
02.02.16
✎
12:55
|
Ну как вариант, служебный справочник "Нумератор объектов", код - уникальный в пределах всего справочника, наименование - длина 0. В табчасти ссылка на этот справочник.
|
|||
20
Лефмихалыч
02.02.16
✎
13:02
|
(0) это не ТЧ, а подчиненный справочник
|
|||
21
s-n-a-y
02.02.16
✎
13:31
|
(15), (17) такой вариант к сожалению не подходит, нумерация своя
|
|||
22
НЕА123
02.02.16
✎
13:34
|
(21)
а может (20)? |
|||
23
Лефмихалыч
02.02.16
✎
13:37
|
(21) Эти твои уникальные номера - это ссылочный тип. Любые попытки симулировать ссылочный тип при помощи необъектных данных и чисел обречены на оглушительный провал и бездарную потерю времени и трудовых ресурсов.
|
|||
24
ObjectRelation Model
02.02.16
✎
13:43
|
(23) а почему это ссылочный тип обязательно?
|
|||
25
s-n-a-y
02.02.16
✎
13:46
|
(18) (20) в моей конфе уже есть готовый справочник с готовой ТЧ. Я его модернизирую.
В общем, есть справочник Контроль (Контрольные карточки). Там есть ТЧ Исполнители. При печати макета контрольной карточки на каждого исполнителя печатается свой макет (контрольная карточка). Поэтому в каждом макете номер должен быть уникальным. Стандартно в документообороте этот номер формировался так Код эл-та справочника + номер строки ТЧ. Но пользователи захотели чтобы этот номер формировался автоматом по-порядку, начиная с конкретного числа. |
|||
26
Garykom
гуру
02.02.16
✎
13:49
|
(20) +1
(25) заведи справочник "Исполнители" и подставляй уникальные значения из него, или дополнительный документ/справочник если нужно "Контрольная карточка исполнителя" |
|||
27
s-n-a-y
02.02.16
✎
13:56
|
(26) т.е. будет у меня справочник НумерацияКонтрольныхКарточек, рекв. Наименование - это номер. так ведь пойдет?
|
|||
28
lera01
02.02.16
✎
14:01
|
(27) По коду уникальность. Код и есть номер
|
|||
29
s-n-a-y
02.02.16
✎
14:04
|
(28) Ну как бы мне надо, чтобы номер начинался с 34586 и шло по-порядку. а поле Код оно идет по-порядку, но с нуля. И заставить его нумероваться 34586 я так понимаю нельзя
|
|||
30
НЕА123
02.02.16
✎
14:07
|
биля. давай без костылей.
делай (20). |
|||
31
Garykom
гуру
02.02.16
✎
14:09
|
(29) не понял, а номер для самого первого поставить 34586 кто мешает то? и пойдет он по порядку
|
|||
32
s-n-a-y
02.02.16
✎
14:10
|
(30) пока не понимаю идею с подчиненным справочником. Свою задачу описал в (25) и нужно чтобы номер шел с 34586
|
|||
33
НЕА123
02.02.16
✎
14:13
|
(32)
ТЧ Исполнители переводи в подчиненный справочник Исполнители, уникальность во всем справике, тип число. |
|||
34
s-n-a-y
02.02.16
✎
14:16
|
(31) блин, не подумал. и тогда никакие блокировки не нужны? Ситуации когда две сессии одновременно создают элементы справочника, хранящего номера обрабатываются самой платформой и одинаковых кодов не будет?
|
|||
35
HardBall
02.02.16
✎
14:26
|
(25) Я так и думал, что это для печатной формы. Генерируй номер каждый раз при печати в зависимости от уже введенных контрольных карточек и ТЧ.
|
|||
36
s-n-a-y
02.02.16
✎
14:30
|
(33) как-то это сложно. Мой справочник (Контроль) сейчас не пустой. Для существующих элементов (у них новый реквизит ТЧ будет пустым) нумерация останется по-старому (см (25)).
Мне больше нравится идея создать независимый справочник НумерацияКК. Присвоить первому элементу Код 34586, и эл-ты этого справочника подставлять в реквизит ТЧ справочника Контроль. Остался вопрос: мне ведь не нужно пользоваться блокировками, чтобы гарантировать уникальность кодов в справочнике НумерацияКК? |
|||
37
netsurfer
02.02.16
✎
14:34
|
Блажь
|
|||
38
HardBall
02.02.16
✎
14:35
|
(37) +
Хомячки развлекаются. |
|||
39
s-n-a-y
02.02.16
✎
14:44
|
У хомячков есть база в аксессе и контрольные карточки они раньше вели там. Когда их перевели на 1С о нумерации почему-то не подумали. Но теперь они хотят вернуть старую нумерацию. А на то какие номера у карточек существующих в 1Ске им пофиг. Их номера заведомо меньше числа 34586, с которого будет возвращена старая нумерация.
|
|||
40
Лефмихалыч
02.02.16
✎
14:46
|
(25) >Но пользователи захотели чтобы этот номер формировался автоматом по-порядку, начиная с конкретного числа.
Зачем? о_0 что они с этим номером делать будут такого, чего не могут делать с тем, что есть? |
|||
41
Лефмихалыч
02.02.16
✎
14:48
|
(24) потому, что уникальная нумерация в пределах всего справочника ни зачем, кроме ссылочной целостности не нужна. Ну, если исключить случаи, когда под этим нет актуальных бизнес-требований, а вместо этого перфекционанизм и попытки бизнеса лезть в архитектуру своими кривыми, растущими из жопы пальцами внутрь грязными пальцами.
|
|||
42
s-n-a-y
02.02.16
✎
14:48
|
(40) > (39)
|
|||
43
Лефмихалыч
02.02.16
✎
14:49
|
руками. Но - не суть
|
|||
44
Лефмихалыч
02.02.16
✎
14:49
|
(42) там нет ответа, зачем эти номера и чего они не могут сделать с новыми номерами такого, чего могли со старыми.
|
|||
45
Лефмихалыч
02.02.16
✎
14:52
|
Аргументы типа "мы так не привыкли" и "нам так хочется" достойны только ответа: "привыкайте" и "хотеть вы будете дома, а на работе вы будете делать то, что нужно компании и так, как ей это нужно".
|
|||
46
s-n-a-y
02.02.16
✎
14:52
|
(44) хз, видимо они не хотят быть привязанными к конкретной программе, еще они параллельно ведут эту (старую) нумерацию в бумажном журнале
|
|||
47
Лефмихалыч
02.02.16
✎
14:53
|
(46) тебя дураки нагружают дурацкой работой и ты из за этого ломаешь хорошиую архитектуру, превращая ПО в УГ. Одумайся.
|
|||
48
s-n-a-y
02.02.16
✎
14:56
|
(47) сделать то о чем они меня просят не настолько трудозатратно, чтобы я им отказал. "Стандарная" нумерация (см (25)) никуда не исчезнет ее всегда можно вернуть.
|
|||
49
Лефмихалыч
02.02.16
✎
14:58
|
(48) это бессмысленно делать
|
|||
50
mehfk
02.02.16
✎
14:58
|
(48) >> сделать то о чем они меня просят не настолько трудозатратно
зачем тогда эта тема? |
|||
51
s-n-a-y
02.02.16
✎
15:02
|
(50) люди, плиз, просто скажите мне, сделать то, что я описал в втором абзаце (36) прокатит? И тема будет закрыта.Сама задача описана в (25).
|
|||
52
Лефмихалыч
02.02.16
✎
15:04
|
(51) если элементы будут создаваться только программно, то - не нужно. Если будут создаваться руками из формы, то надо отключить автогенерацию номера в форме, чтобы он присваивался только при записи.
|
|||
53
HardBall
02.02.16
✎
15:04
|
(46) Печатай журнал из 1С, укажи номер с которого начинать
|
|||
54
Лефмихалыч
02.02.16
✎
15:06
|
+(52) но это все делать вообще не надо, т.к. это деланье того, что уже и так сделано - уникальный номер уже и так есть - он состоит из двух компонентов просто.
|
|||
55
s-n-a-y
02.02.16
✎
15:07
|
(52) да, только программно, ведь нумерация будет вестись автоматически. спс.
|
|||
56
Лефмихалыч
02.02.16
✎
15:09
|
(55) блин, да она уже ведется... эх...
|
|||
57
Карупян
02.02.16
✎
15:10
|
возьми в документообороте нумерацию договоров
|
|||
58
s-n-a-y
02.02.16
✎
15:11
|
(54) этот номер печатается в макете контрольной карточки на бумаге. Люди хотят видеть на бумаге "свою старую" нумерацию, которую вели в аксессе
|
|||
59
Лефмихалыч
02.02.16
✎
15:12
|
(58) у "хотят" есть какое-то экономическое обоснование? Или им просто для эстетического удовольствия?
|
|||
60
s-n-a-y
02.02.16
✎
15:15
|
(59) я работаю на фикси
|
|||
61
Dmitry77
02.02.16
✎
15:39
|
UUID (элемента) + номер строки - не подойдек в качестве уникального номера?
|
|||
62
Лефмихалыч
02.02.16
✎
15:40
|
(61) это уже реализовано и работает, но автор на фикси работает - ему за думанье не платят
|
|||
63
Eiffil123
02.02.16
✎
16:50
|
(62) (61)
Пользователей с их задумками конечно надо отшивать по возможности, но заставлять тёток-кладовщиц работать с карточками с нумерацией вида f3c8085a-ae34-4b34-a6a1-7912e8539d72-10 это совсем жестоко |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |