Нумерация документов 1С ЗуП

1. Vladimir87 228 30.03.22 09:09 Сейчас в теме
Всем привет. Подскажите, пожалуйста, в 1С "Зарплата и управление персоналом, редакция 3.1 (3.1.21.15)" можно настроить нумерацию документов?

Чтобы у каждого любого документа был свой уникальный номер. Сейчас все кадровые документы уникальны в пределах одного сотрудника. То есть, например, два документа на отпуск (два разных сотрудника) будут иметь одинаковый номер.

Как сделать, чтобы номера не совпадали?

Пересмотрел кучу информации, в самой ЗуП смотрел, но так и не нашел как это сделать. Во всяком случае стандартным способов. Если не стандартным - то ковырять конфигурацию, что очень нежелательно.

Единственное, это в некоторых видах документах есть дополнительное поле "Печатать как". Но это не совсем то.
По теме из базы знаний
Найденные решения
10. FetisovAN 30.03.22 09:59 Сейчас в теме
(6) Не смогу. Не оформлял отдельным расширением, все доработки в одном.

Но выше правильно написано, либо подписка либо в каждом виде документа "Перед записью", вызывается процедура нумерации из общего модуля.

Только я не храню новый номер в регистре, а в запросе получаю все кадровые документы по этой организации и беру старший номер.
Vladimir87; +1 Ответить
11. rovenskiy1C 30.03.22 10:06 Сейчас в теме
(8)Подписка на событие перед записью. В регистре хранится текущий порядковый номер документа, после успешной записи документа, в регистре увеличиваем на 1.
Vladimir87; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Verdad 84 30.03.22 09:21 Сейчас в теме
(1)В ЗУП сквозная нумерация кадровых документов, без доработки настроить не получится.
4. FetisovAN 30.03.22 09:25 Сейчас в теме
(3) +1
Делал расширение для единой нумерации всех видов кадровых документов. Прием, перевод, увольнение.
rovenskiy1C; +1 Ответить
6. Vladimir87 228 30.03.22 09:31 Сейчас в теме
(4) Скиньте ссылку на расширение, если не сложно.
7. rovenskiy1C 30.03.22 09:33 Сейчас в теме
(6) Делал подобное путём создания регистра сведений и подписки на событие.
8. Vladimir87 228 30.03.22 09:47 Сейчас в теме
(7) Можно по подробнее как вы это реализовали?

Я пока понял, что:

1. Можно создать расширение конфигурации.
2. В ней создать регистр сведений с полями типа дата, номер, название и уникальный номер.
3. Создать некий процесс/служба/демон, которая будет отлавливать изменения в БД. В даном случае на предмет создания нового документа.
4. Как только новый документ создается, то эта служба записывает данные этого документа (номер, дата, название) в регистр сведений. В поле "уникальный номер" будет генерироваться уникальный номер, чтобы он не повторялся.
5. А потом этот регистр можно будет распечатать.
11. rovenskiy1C 30.03.22 10:06 Сейчас в теме
(8)Подписка на событие перед записью. В регистре хранится текущий порядковый номер документа, после успешной записи документа, в регистре увеличиваем на 1.
Vladimir87; +1 Ответить
12. FetisovAN 30.03.22 10:31 Сейчас в теме
(11) в этом варианте есть недостаток может быть пропуск номера если документ новый ввели, а потом удалили. При создании нового будет +1 и будет пропуск номера.
13. Vladimir87 228 30.03.22 10:41 Сейчас в теме
(12) пропуск номера не важен.
17. FetisovAN 30.03.22 10:45 Сейчас в теме
(13) Ну если хотите вот мой вариант получения нового номера :

//Организация единой нумерации кадровых документов
Функция ПолучитьПоследнийНомер(Организация,Дата) Экспорт

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПриемНаРаботу.Номер КАК Номер
|ПОМЕСТИТЬ КадровыеДокументы
|ИЗ
| Документ.ПриемНаРаботу КАК ПриемНаРаботу
|ГДЕ
| ПриемНаРаботу.Организация = &Организация
| И ПриемНаРаботу.Дата <= &ДатаК
| И ПриемНаРаботу.Дата >= &ДатаН
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Увольнение.Номер
|ИЗ
| Документ.Увольнение КАК Увольнение
|ГДЕ
| Увольнение.Организация = &Организация
| И Увольнение.Дата <= &ДатаК
| И Увольнение.Дата >= &ДатаН
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| КадровыйПеревод.Номер
|ИЗ
| Документ.КадровыйПеревод КАК КадровыйПеревод
|ГДЕ
| КадровыйПеревод.Организация = &Организация
| И КадровыйПеревод.Дата <= &ДатаК
| И КадровыйПеревод.Дата >= &ДатаН
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПриемНаРаботуСписком.Номер
|ИЗ
| Документ.ПриемНаРаботуСписком КАК ПриемНаРаботуСписком
|ГДЕ
| ПриемНаРаботуСписком.Организация = &Организация
| И ПриемНаРаботуСписком.Дата <= &ДатаК
| И ПриемНаРаботуСписком.Дата >= &ДатаН
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| УвольнениеСписком.Номер
|ИЗ
| Документ.УвольнениеСписком КАК УвольнениеСписком
|ГДЕ
| УвольнениеСписком.Организация = &Организация
| И УвольнениеСписком.Дата <= &ДатаК
| И УвольнениеСписком.Дата >= &ДатаН
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| КадровыйПереводСписком.Номер
|ИЗ
| Документ.КадровыйПереводСписком КАК КадровыйПереводСписком
|ГДЕ
| КадровыйПереводСписком.Организация = &Организация
| И КадровыйПереводСписком.Дата <= &ДатаК
| И КадровыйПереводСписком.Дата >= &ДатаН
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПеремещениеВДругоеПодразделение.Номер
|ИЗ
| Документ.ПеремещениеВДругоеПодразделение КАК ПеремещениеВДругоеПодразделение
|ГДЕ
| ПеремещениеВДругоеПодразделение.Организация = &Организация
| И ПеремещениеВДругоеПодразделение.Дата <= &ДатаК
| И ПеремещениеВДругоеПодразделение.Дата >= &ДатаН
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ ПЕРВЫЕ 1
| КадровыеДокументы.Номер КАК Номер
|ИЗ
| КадровыеДокументы КАК КадровыеДокументы
|
|УПОРЯДОЧИТЬ ПО
| КадровыеДокументы.Номер УБЫВ";

Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("ДатаК", КонецГода(Дата));
Запрос.УстановитьПараметр("ДатаН", НачалоГода(Дата));


Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Если Выборка.Следующий() тогда

//Возьмем префикс как он есть сейчас (2 символа Организация, 2 символа префикс ИБ)
Если Сред(Выборка.Номер,3,1) = "-" Тогда
Префикс = Лев(Выборка.Номер,3);
ИначеЕсли Сред(Выборка.Номер,5,1) = "-" Тогда
Префикс = Лев(Выборка.Номер,5);
Иначе
Префикс = "";
КонецЕсли;

//Удаляет оба префикса (Организации и информационной базы) и лидирующие нули
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Выборка.Номер, Истина, Истина);

//Увеличиваем номер на 1 и добавляем обратно префикс и нули
Попытка
СледующийНомер = ДобавитьПрефиксИЛидирующиеНули(Число(НомерНаПечать) + 1,Префикс);
Исключение
СледующийНомер = "";
Сообщить("Не удалось сформировать новый номер");
КонецПопытки;
//Сообщить(СледующийНомер);
Иначе
//Первый номер в году

//Нужно собрать префикс из Префикса Организации + Префикс ИБ
ПрефиксОрганизации = Организация.Префикс;
ПрефиксИБ = ОбменДаннымиСервер.ПрефиксИнформационнойБазы();
Префикс = ПрефиксОрганизации + ПрефиксИБ + "-";

СледующийНомер = ДобавитьПрефиксИЛидирующиеНули(1,Префикс);
КонецЕсли;

возврат СледующийНомер;

КонецФункции // ПолучитьПоследнийНомер()

Функция ДобавитьПрефиксИЛидирующиеНули(НомерПоПорядку,Префикс)

НомерСНулями = "00000000000" + НомерПоПорядку; //длина номера документа 11 символов
НомерСНулями11 = Прав(НомерСНулями,11-СтрДлина(Префикс));
НомерСПрефиксом = Префикс + НомерСНулями11;
возврат НомерсПрефиксом;

КонецФункции // ()


А этот код в процедуру перед записью в модуле документа, или в подписку:

//Запускаем процедуру изменения номера, если документ новый, или если документ перепрыгивает в другой год
Если ЭтоНовый() ИЛИ НачалоГода(ЭтотОбъект.Дата) <> НачалоГода(ЭтотОбъект.Ссылка.Дата) Тогда
Номер = РасшХОбщийМодульСервер.ПолучитьПоследнийНомер(этотОбъект.Организация,ЭтотОбъект.Дата);
КонецЕсли;
16. rovenskiy1C 30.03.22 10:43 Сейчас в теме
(12)Согласен. Но мне нужен был инструмент, чтобы пользователь по условию настраивал. Делал для ПКО и РКО для каждой кассы своя нумерация. (Кол-во касс может увеличиваться, регистр позволит без доработок, добавить новое правил нумерации)
18. FetisovAN 30.03.22 11:27 Сейчас в теме
(16) тоже соглашусь :) делал под свою задачу, и кадровики сделали акцент на том чтобы не было пропусков.
10. FetisovAN 30.03.22 09:59 Сейчас в теме
(6) Не смогу. Не оформлял отдельным расширением, все доработки в одном.

Но выше правильно написано, либо подписка либо в каждом виде документа "Перед записью", вызывается процедура нумерации из общего модуля.

Только я не храню новый номер в регистре, а в запросе получаю все кадровые документы по этой организации и беру старший номер.
Vladimir87; +1 Ответить
2. alexey123perm 21 30.03.22 09:14 Сейчас в теме
Сейчас все кадровые документы уникальны в пределах одного сотрудника. То есть, например, два документа на отпуск (два разных сотрудника) будут иметь одинаковый номер.


Приведите пример из демобазы со скришотами, какие номера одинаковые и что хотите изменить. Либо у вас периодичность номеров установлена в пределах дня, например.
5. Vladimir87 228 30.03.22 09:28 Сейчас в теме
(2) Номера совпадают. Хотелось бы, чтобы они все были уникальны. Я как понимаю, стандартными средствами этого не получиться достичь.
Прикрепленные файлы:
9. alexey123perm 21 30.03.22 09:48 Сейчас в теме
(5)

Все-равно непонятно, откуда скрин. Даже интерфейс не ЗУП 3.1. Или вы ее в режиме "Обычное приложение" запускаете? В любом случае, - это не типовая нумерация. Проверьте доработки /расширения
14. Vladimir87 228 30.03.22 10:42 Сейчас в теме
Всем спасибо за советы.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот