Имя: Пароль:
1C
1С v8
Нумерация
0 Foxmara
 
27.08.18
17:04
УНФ, последний релиз. Платформа 8.3.12.1529. Нужно сделать свою нумерацию, причем нумерация должна идти от КРОНТРАГЕНТА. т.е. у каждого контрагента ID - 3 цифры (уникальный не подойдет, он длинный). далее документы (событие), договора и пр. тоже ID, формируется на основании ID контрагента + 3 цифры. Как реализовать можно? Просто добавить поле можно даже в режиме предприятия, но оно не будет а) нужной длины б) автоматически нумероваться.
1 Пуля
 
27.08.18
17:06
Нумеровать что будем?
2 hhhh
 
27.08.18
17:08
(0) вопрос-то в чем? находишь в общем модуле, где формируется префикс документа, подменяешь этот кусок на свое формирование префикса.
3 Джинн
 
27.08.18
17:10
(1) Приходные кассовые ордера и счета-фактуры.
4 Numerus Mikhail
 
27.08.18
17:10
(0) а если контрагентов станет больше 999?
5 Aleksey
 
27.08.18
17:10
Нужно обязательно нумеровать по контрагентам или подойдет префикс в печатной форме с ID контрагента?
6 dezss
 
27.08.18
17:10
подписка
ПриУстановкеНовогоНомера
а дальше как напишешь)
7 vova1122
 
27.08.18
17:12
Не совсем понятно как должен формироваться номер документа. Опишите на примере
8 Михаил Козлов
 
27.08.18
17:22
Спугнули.
9 dezss
 
27.08.18
17:23
(7) ну у них не может быть больше 1000 контрагентов. И на каждого не больше 1000 одного вида дока.
Разделять предлагаю оригинально...дефисом)))
10 Aleksey
 
27.08.18
17:51
(9) разово может быть и не может быть, а вот за 2-3 года, кто то  ушел, кто то пришел
11 hhhh
 
27.08.18
19:07
(10) можно не только цифры, но и буквы разрешить в ИД. Тогда в 3х знаках  где-то до 300000 контрагентов.
12 Cyberhawk
 
27.08.18
19:12
Номер объекта делаешь числовым заданной длины. Профит.
13 Cyberhawk
 
27.08.18
19:12
*объекта МД
14 Aleksey
 
28.08.18
00:05
(11) На самом деле меньше. Так как визуально некоторые буквы и цифры похоже, а значит такую неопределенность нужно исключить (например буква О и цифра 0). Так же исключаем регистр (большие и маленькие буквы). Исключаем труднопроизносимые символы (например й, ъ,ь). Если мы добавим английский алфавит, то исключаем одинаковое написание русский и английских букв, например та же буква А. Ну и само собой спецсиволы идут лесом (*,:,^ и т.п.)
15 azernot
 
28.08.18
00:21
Когда коту нечего делать, он лижет...
Когда у бухгалтера нет других проблем, он начинает заботиться о нумерации..
16 GreyK
 
28.08.18
02:39
(0) Надеюсь следующий вопрос от "бухого" будет про сквозную нумерацию кадровых документов, это классика.
17 Foxmara
 
28.08.18
08:15
Нумеровать по контрагентам обязательно. В идее все от КА строится.
Директор (не бух) клянется, что больше 1000 не понадобится..
номер (ID) у КА от 0 до 999.
номер Заказа = (ID КА) + 3 цифры
номер договора = номер Заказа
номер Счета = (ID Заказа) + 3 цифры
номер КП = (ID КА) + префикс (КП) + 3 цифры
18 dezss
 
28.08.18
09:27
(17) тогда беги оттуда...это однодневка)))
шутка...

так не понятно, в чем именно у тебя проблема?
19 seevkik
 
28.08.18
09:30
(17) ну хоть документы продаж и счет-фактуры не трогаете, но я бы прислушался к (18)
20 dezss
 
28.08.18
09:35
Я вообще не понимаю зачем люди меняют нумерацию...
вот нафига?
если нужно что-то по конкретному контрагенту, делай отбор/сортировку в списке, зачем накладывать на номер/код какие-то еще функции, кроме обеспечения уникальности?
21 Пуля
 
28.08.18
09:44
глянь модуль ПрефиксацияОбъектовКлиент вроде в нем номера строятся
22 Foxmara
 
31.08.18
12:32
В общем задачу решил совсем просто. Поскольку достаточно 3 цифр - просто взял последние из номеров справочника и документа.
для справочника контрагент:
&НаКлиенте
    Процедура Расш1_ПослеЗаписиПосле(ПараметрыЗаписи)
        //Добавлено создание ИД
    Если НЕ ЗначениеЗаполнено(Объект.ИДКонтрагента) Тогда
    Объект.ИДКонтрагента = Прав(Объект.Код, 3);
    КонецЕсли;
    // конец обработки

    КонецПроцедуры


Это для заказа:
&НаСервере
    Процедура Расш1_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)
            КонтрагентЗак = Объект.Контрагент;
            ОбъектКА = КонтрагентЗак.ПолучитьОбъект();
            Если НЕ ЗначениеЗаполнено(Объект.ИДЗаказПокупателя) Тогда
            Объект.ИДЗаказПокупателя = ОбъектКА.ИДКонтрагента + Прав(Объект.Номер, 3);
            КонецЕсли;

    КонецПроцедуры