Не стандартная нумерация документа.

1. mark_oilbass 25.03.19 18:20 Сейчас в теме
Здравствуйте, уважаемые форумчане!

Необходимо нумеровать документ по следующему принципу: Код подразделения (4 символа) + номер месяца (2 символа) + номер года (2 символа) + номер документа в пределах года (4 символа).
Как мне запустить такую нумерацию?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. Xershi 1475 25.03.19 18:52 Сейчас в теме
(1) в процедуре перед записью сформировать префикс:
Код подразделения (4 символа) + номер месяца (2 символа) + номер года (2 символа)
Остальное сделает программа.
В таком варианте правда на каждый префикс будет своя нумерация.

Ну или самому присвоить значение номера по указанному алгоритму.
6. mark_oilbass 26.03.19 04:03 Сейчас в теме
(3) к сожалению так не пойдет. Не уточнил в вопросе. Клиент хочет нумерацию не в пределах префикса, т.е. номер подразделения, номер месяца и года ни как не должны влиять на нумерацию. Мне надо понять как оптимально найти максимальный номер.
10. Xershi 1475 26.03.19 09:10 Сейчас в теме
(6) запросом.
На ИС достаточно информации.
14. mark_oilbass 26.03.19 09:40 Сейчас в теме
(10) как запрос получить в моем случаи? Как сортировать документы в запросе? Можно ссылки на ИТС?
19. makfromkz 35 26.03.19 17:25 Сейчас в теме
(6)
Мне надо понять как оптимально найти максимальный номер.

Я решил это использованием константы, а потом действовал примерно как в (3)
20. Xershi 1475 26.03.19 17:28 Сейчас в теме
(19) если будет ручное изменение такой алгоритм поломается. Правильнее запросом.
Причем умным, который не будет оставлять пустые значения. Которые могут возникнуть по причине криворукости пользователей или удаления помеченных.
21. makfromkz 35 26.03.19 17:35 Сейчас в теме
(20)При таком алгоритме формирования номера НИКАК нельзя допускать ручное изменение номера.
11. qazaas 26.03.19 09:13 Сейчас в теме
(1) В модуле объекта документа есть процедура "ПриУстановкеНовогоНомера", в которой как раз-таки ты можешь переопределить свой префикс.
Но префикс, я думаю, у тебя должен состоять из "Код подразделения (4 символа) + номер месяца (2 символа) + номер года (2 символа)", а "номер документа в пределах года (4 символа)" ты определяешь сам, проверяя предыдущий.
Еще можешь воспользоваться нумератором. Создаешь свой нумератор с периодичностью в пределах года и устанавливаешь его в свойствах метаданных документа.
12. Akuji 22 26.03.19 09:17 Сейчас в теме
(1)
оставить в номере только номер.
А эту инфу:
Код подразделения (4 символа) + номер месяца (2 символа) + номер года (2 символа)

вынести в отдельный реквизит с соединять их при выводе на экран.
2. VladimirB 16 25.03.19 18:48 Сейчас в теме
Создай новый реквизит
НомерДокумента
И вычисляй его.
4. VladimirB 16 25.03.19 18:58 Сейчас в теме
Похоже ему и нужна отдельная нумерация по каждому префиксу. Так вроде логичнее.
5. Dnki 4 25.03.19 20:57 Сейчас в теме
Нечто похожее у меня. Моя логика такова:
"Код подразделения" (надо полагать реквизит док-та), "номер месяца", "номер года" - это переменные факторы. И они меняются до записи дока. Значит варианта два:
- вычислить и записать Номер ПриЗаписи()
- можно и в ходе набора док-та, сделав обработчики изменения к "Подразделение" и "Дата". А они вызывают некую процу СлепитьНомер().

Осталось малое - последняя часть номера. Здесь поможет запрос вроде:
	Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 50
			Док.Номер		КАК Номер,
		ИЗ
			Документ.МойДок КАК Док
		ГДЕ
			Док.Номер    ПОДОБНО """+Префикс+"%"""
		УПОРЯДОЧИТЬ ПО
    		Дата УБЫВ";
Показать

где "Префикс", это первые буквы номера.
из полученных номеров выбрать самый старший

Тут есть подлости в виде одновременной работы нескольких человек, но об этом можно позже
7. mark_oilbass 26.03.19 04:10 Сейчас в теме
(5) Интересно. Я не совсем пока понял как найти старший номер. Сортировать по дате отличный вариант, но вдруг и старшего номера изменять даты на более позднюю. И как справиться при одновременной работе пользователей?
8. ZergKRSK 129 26.03.19 07:44 Сейчас в теме
(7) старший номер надо просто где-то хранить. После записи нового документа актуализировать.
mark_oilbass; +1 Ответить
9. user856012 13 26.03.19 08:57 Сейчас в теме
(7)
Клиент хочет нумерацию не в пределах префикса, т.е. номер подразделения, номер месяца и года ни как не должны влиять на нумерацию.
А на порядок отображения в журнале должны влиять? А то ведь при сортировке по такому номеру документы выстроятся в первую очередь по префиксу, независимо от даты и номера в году.

Если надо, чтобы документы отображались по порядку номеров (4 символа), то надо и номер документа заводить из 4-х символов, а для "хитрой" нумерации ввести реквизит документа, который заполнять по указанному принципу. И показывать его везде, где нужно, вместо реального номера.

Ну, а если и порядок в журнале должен зависеть от префикса и даты, то наоборот - ввести реквизит НомерВГоду, в который записывать последние 4 символа номера - по нему и искать максимальный.
13. mark_oilbass 26.03.19 09:39 Сейчас в теме
(9)Это и в отчетах и в журналах придется учитывать этот нюанс.
15. user856012 13 26.03.19 09:44 Сейчас в теме
(13)
Это и в отчетах и в журналах придется учитывать этот нюанс.
Это не ответ на уточняющий вопрос - как должны отображаться документы в журнале?

Пока что вы пытаетесь получить решение не полностью поставленной задачи.
17. mark_oilbass 26.03.19 09:56 Сейчас в теме
(15)порядок не важен в журнале.
18. user856012 13 26.03.19 09:59 Сейчас в теме
(17) Тогда оптимальное решение вам уже предложили дважды - в (16) и в (9):
ввести реквизит НомерВГоду, в который записывать последние 4 символа номера - по нему и искать максимальный.
16. starjevschik 26.03.19 09:56 Сейчас в теме +0.48 $m
Я бы сделал реквизит для числового номера. При записи нового документа делаем запрос на максимальный этот реквизит, прибавляем 1, собираем префикс и номер готов.
Можно просто хранить где-то последний числовой номер, тогда возможны дырки при удалении последнего документа.
Если оставить только готовый номер, то получение последнего номера становится очень долгим.
mark_oilbass; +1 Ответить
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)