Имя: Пароль:
1C
1С v8
Хитрая генерация номеров документов
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
ах да, и еще нули перед номером добавлял. Программно рассчитываешь сколько ноликов подставить и в цикле подставляешь.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.