|
Хитрая генерация номеров документов |
☑ |
0
vfrcbv
16.04.18
✎
13:11
|
Добрый день.
Есть обработка, которая программно заполняет и создает документы. Номер нового документа генерируется по определенным правилам (в начале содержаться номер месяца, затем символ точки и собственно уникальный номер документа, например, 04.0001).
Но задача усложняется тем, что еще обработка может автоматически создавать "подчиненные" документы, например, 04.0001/1 и 04.0001/2.
Пример:
Базовый документ 04.0001
Подчинённый документ 04.001/1
Подчинённый документ 04.001/2
Базовый документ 04.0002
Подчинённый документ 04.002/1
Подчинённый документ 04.002/2
Подчинённый документ 04.001/3
Префикс номера с месяцем легко вычислить и установить через событие: ПриУстановкеНовогоНомера. Но как при этом, установить новый уникальный номер базового документа оставив 3 пустых символа справа (символ / и номер подчиненного), для использование нумерации подчинённых документов. Подскажите, как это сделать.
|
|
1
Tateossian
16.04.18
✎
13:18
|
(0) Для начала, тебе придется выключить в конфигурации автонумерацию (я бы не рекомендовал такую нумерацию), но если уж очень необходимо - тогда лучше заведи допполе, типа суффикс номера (и еще уникальность нужно выключить, но контролировать самостоятельно для такой схемы). А вычислять номер - запросом.
|
|
2
bodri
16.04.18
✎
14:17
|
(1) Как-то как раз почти такое как (0) подобным и сделал.
|
|
3
Повелитель
16.04.18
✎
14:25
|
(0) Главбухи вместо того, чтобы вовремя и правильно формировать СФ, решили программиста нагрузить.
|
|
4
Пузан
16.04.18
✎
15:08
|
Для подчиненного документа префикс - это номер базового плюс слэш. И все. В подписке на событие установки нового номера прописывается это. Делал подобное. Буквально несколько строк кода.
|
|
5
Туц
16.04.18
✎
15:23
|
(0) Запросом. Напишу как это примерно выглядит на mssql
Грубо
select max(substring(номер,4,3))
from блаблабла
where substring(номер,1,2) = '04'
ты получишь для заданного месяца максимальный номер
прибавь один
ну и в качестве домашнего задания напрягись и изобрази сие в синтаксисе запросов 1с
|
|
6
Serg_1960
16.04.18
✎
16:00
|
Если вместо суффикса (цифры после косой черты) использовать ещё один префикс, то можно использовать типовую версию конфигурации с минимальным внесением изменений - в типовых предусмотрено использование двух префиксов (префиксы узлов распределенной базы и организаций)
|
|
7
Быдло замкадное
16.04.18
✎
16:06
|
делал ручную нумерацию.
Запросом получаешь из всех номеров данного года что-то вроде Подстрока(). Или как там в запросе точно не помню.
Сортируешь по этому полю, вот тебе крайний номер. Потом + 1 в коде.
Ну и номер собираешь руками.
У тебя в запросе еще будет условие какие доки выбирать (Содержит 04.0001)
|
|
8
Быдло замкадное
16.04.18
✎
16:07
|
и да, номер целиком сам собираешь. Никакие подсказки платформы уже не работают.
|
|
9
Быдло замкадное
16.04.18
✎
16:10
|
ах да, и еще нули перед номером добавлял. Программно рассчитываешь сколько ноликов подставить и в цикле подставляешь.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший