Имя: Пароль:
1C
1С v8
Реквизит документа как нумератор
0 Ly_Alena
 
30.03.15
13:16
Добрый день! У меня возникла такая задача. Сделать журнал зарегистрированных актов сверки. Добавила реквизит булево - зарегистрирован. И если он истина, то нужно чтобы реквизиту НомерРегистрации присваивался уникальный номер. Как это сделать?
1 Fish
 
30.03.15
13:18
(0) А что не получается?
2 Ly_Alena
 
30.03.15
13:19
Вводила константу. Внизу значение 1, в процедуре +1 к константе. Но в не цикла одно и то же значение будет. А цикл до 1000 допустим. Но мне хотелось бы чтобы выводил в формате 001, а не 1.
Может другой есть способ?
3 DrShad
 
30.03.15
13:19
НомерРегистрации = Новый УникальныйИдентификатор();
4 Ly_Alena
 
30.03.15
13:19
(1) да собственно говоря вообще не получается.
5 DrShad
 
30.03.15
13:20
(2) Формат(НомерРегистрации, "ЧЦ=3; ЧВН=")
6 Ly_Alena
 
30.03.15
13:20
(3) и все?
7 Fish
 
30.03.15
13:21
(6) Ну если тебя устроит номер в виде УИД, тогда да.
8 DrShad
 
30.03.15
13:24
(7) главное что уникальный :)
9 Ly_Alena
 
30.03.15
13:24
нет ) (7)
10 Ly_Alena
 
30.03.15
14:03
(7) а что делать дальше? я так и не поняла - в цикле или есть какой-то механизм?
11 Fish
 
30.03.15
14:06
(10) А зачем вообще тут цикл? Тебе нужен свой механизм нумерации. Для начала определись с форматом номера, его периодичностью и т.п., а потом реализовывай.
12 Ly_Alena
 
30.03.15
14:23
Я определилась - переиодичность в течении года, формат трехзначный. а как реализовать?
13 Fish
 
30.03.15
14:26
(12) Вариантов на самом деле много: можно завести РС, в котором будет храниться последний свободный номер, можно пойти другим путём: посмотреть, как это реализовано в типовом документообороте (но там достаточно навороченный механизм).
И, имхо, три разряда всё-таки маловато для документа.
14 Ly_Alena
 
31.03.15
04:58
(13) номеров за год не больше тысячи и я подумала, что больше заводить нет смысла
15 Cube
 
31.03.15
05:40
(12) Делаешь запрос, что-то вроде этого:

ВЫБРАТЬ
    МАКСИМУМ(АктСверкиВзаиморасчетов.Номер) КАК Номер
ИЗ
    Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
ГДЕ
    АктСверкиВзаиморасчетов.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ГОД) И КОНЕЦПЕРИОДА(&Дата, ГОД)
    И АктСверкиВзаиморасчетов.Организация = &Организация

который возвращает последний номер. Дальше отделяешь префикс (если есть) от числовой части, числовую часть преобразуешь в число и прибавляешь к ней единицу.
Затем дополняешь номер лидирующими нулями и возвращаешь префикс на место.

Твой номер готов.
16 Ly_Alena
 
31.03.15
06:17
(15) номера актов сверки уже перевалили за 2 тысячи, а этот номер мне нужно начать с 001.
Даже не думала что с этим может быть столько заморочек...
17 torgm
 
31.03.15
06:21
(0)  отдельные префиксы для согласованных никак? Задачу кто ставил бухгалтера или само получилось?
18 Cube
 
31.03.15
06:25
(16) Ну так ты ищи не последний "Номер", а последний "НомерРегистрации "
19 Cube
 
31.03.15
06:43
(16) Стой стой, дай угадаю: ты хочешь получить нумерацию актов сверок без пропусков номеров?)
20 Ly_Alena
 
31.03.15
07:34
(19) я хочу получить не нумерацию актов сверок. а мне нужно сделать нумерацию в журнале зарегистрированных актов сверок.
21 Ly_Alena
 
31.03.15
07:37
(19) с помощью регистра сделала, но почему-то в журнале не выводит. Как будто в форме номер вывел, а в реквизит не записал
22 Ly_Alena
 
31.03.15
07:40
(19) у акта сверки есть свой номер. Чтобы вывести весь список зарегистрированных актов, я добавила новый реквизит - регистрации (булево). когда ставят эту галочку, при записи заводится номер этой регистрации. Этот номер регистрации в свою очередь выводится в журнале регистраций актов сверок. Не знаю на сколько понятно объяснила.
23 Cube
 
31.03.15
07:47
(22) Понятно. Только реквизит типа булево лишний. Если номер регистрации заполнен, то акт зарегистрирован... :)
А на форме сделай кнопку "Зарегистрировать"/"Отмена регистрации". Зачем лишние галочки...
24 Ly_Alena
 
31.03.15
07:55
(23) он (Номер регистрации) заполняется (и не в ручную) только если стоит галочка "зарегистрирован".
А вопрос - галочка, кнопка - а в чем разница?
25 Ly_Alena
 
31.03.15
07:58
На данный момент выводит номер из регистра сведений, но выводит в ввиду "1", "2". а мне нужно "001". В свойствах реквизита и элемента формы стоит ведущие нули и количество знаков 3. В чем загвоздка?
26 Cube
 
31.03.15
08:00
(24) Разницы нет, просто у тебя лишний неиспользуемый реквизит, который, в принципе, не нужен...
27 Cube
 
31.03.15
08:00
(25) Тип номера сделай строка и пользуйся функцией Формат()
28 Ly_Alena
 
31.03.15
08:05
(26) сделаю кнопку, спасибо! я об этом не подумала!
(27) если сделаю строкой, то не смогу прибавлять 1 к последнему
29 Мимохожий Однако
 
31.03.15
08:09
Сделай документ МойРегистраторАктовСверки, а в нём храни ссылку на Акт сверки в единственном реквизите.
30 Ly_Alena
 
31.03.15
08:12
(29) а чем Документ лучше РС?
31 Мимохожий Однако
 
31.03.15
08:13
(30)Там уже есть нумератор.
32 Мимохожий Однако
 
31.03.15
08:14
(29)* в акте сверки храни ссылку на МойРегистратор...
33 Ly_Alena
 
31.03.15
08:18
(27) а в процессе изменения теперь возникли сложности, когда в журнале актов сверок нужно отсортировать только зарегистрированные  , то сортировать не получится. ВИдимо реквизит булево нужно оставить.
34 Ly_Alena
 
31.03.15
08:27
(32) вот это мимохожийоднако....
Как это работает не понимаю? На каждую регистрацию в документе будет меняться реквизит?
35 Cube
 
31.03.15
08:34
(28) Во всех типовых, значит, могут, а ты не можешь...

А если так:

НовыйНомер = Число(СтарыйНомерСтрокой) + 1;

?))
36 Cube
 
31.03.15
08:35
(30) А зачем тебе вообще РС, я что-то не понял...
37 Мимохожий Однако
 
31.03.15
08:41
(34)Попробую объяснить еще раз.
1. В акте сверки используешь реквизит "Мой регистратор" тип Документ МойРегистратор
2. По кнопке Зарегистрировать программно создаешь этот документ и подвязываешь к Акту через реквизит. Если реквизит уже подвязан, то документ не создаётся и не прицепляется ссылка.
3. Документ МойРегистрато имеет только нужный регистратор и всё. Даже форму не надо создавать.
...
Варианты могут быть и другие.
38 Cube
 
31.03.15
08:44
(37) Это уже изврат какой-то...
39 Мимохожий Однако
 
31.03.15
08:48
(38)Подскажи девушке что-нибудь попроще.
40 Cube
 
31.03.15
08:49
(39) Так (15) же.
41 Ly_Alena
 
31.03.15
08:50
(36) В РС хранится номер регистрации... к новому номеру добавляется 1 и записывается в РС.
Это то как сейчас работает.

Теперь совсем запуталась с документом и с вашим вопросом "зачем РС?" а как еще?
42 Ly_Alena
 
31.03.15
08:50
(40) на (15) ответила вроде как..
43 Cube
 
31.03.15
08:51
(42) Я в курсе, я ж не тебе писал пост (40) :)
44 Cube
 
31.03.15
08:52
(41) Смотри, РС тоже не нужен. Найти последний номер можно запросом по документам.
45 Cube
 
31.03.15
08:54
То есть, из метаданных нужен только реквизит "НоиерРегистрации" и всё, остальное всё делается кодом.
46 Ly_Alena
 
31.03.15
08:59
(45) а как?
47 Мимохожий Однако
 
31.03.15
08:59
(40)Если брать за основу твой вариант (он возможно и лучше моего), то проблем нет. Достаточно завести реквизит тип число и проставлять его на основе запроса как в (44). Выводить этот реквизит на форму не надо и обрабатывать только программно через внешнюю обработку. Да и реквизит можно сделать дополнительным. Вместо журнала, с которым бьётся девушка, достаточно сделать отчет из той же внешней обработки.
...
Я свой вариант предложил для примера. Если он является "извратом" , то можно игнорировать. Я не обижусь ))
...
Причина проблем ТС в нечёткой постановке задачи.ИМХО.
48 Ly_Alena
 
31.03.15
09:02
(47) Журнал нужен по многим причинам и печатная форма и фильтры. а отчет только если скд может..
49 Cube
 
31.03.15
09:03
(46) Пост (15) же! :))

Пациент: "Доктор, меня никто не замечает..."
Доктор: "Кто здесь?"