Имя: Пароль:
1C
1С v8
уникальный номер в ТЧ справочника (рекв.) в пределах всего справочника
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 это совсем жестоко