Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Хитрая генерация номеров документов

Хитрая генерация номеров документов
Я
   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 пустых символа справа (символ / и номер подчиненного), для использование нумерации подчинённых документов. Подскажите, как это сделать.
 
 
   Tateossian
 
1 - 16.04.18 - 13:18
(0) Для начала, тебе придется выключить в конфигурации автонумерацию (я бы не рекомендовал такую нумерацию), но если уж очень необходимо - тогда лучше заведи допполе, типа суффикс номера (и еще уникальность нужно выключить, но контролировать самостоятельно для такой схемы). А вычислять номер - запросом.
   bodri
 
2 - 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с
   Serg_1960
 
6 - 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
ах да, и еще нули перед номером добавлял. Программно рассчитываешь сколько ноликов подставить и в цикле подставляешь.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.