Имя: Пароль:
1C
 
ЗУП31. Как быть с нумерацией без лидирующих нулей?
,
0 DTX 4th
 
26.03.19
11:52
Кадровики вручную через месяц меняют номер документа на числовой типа "89" или ещё хуже "89-от"
Так в системе появился номер "99" и нумерация работать перестала, т.к. каждому новому документу 1С пытается выдать 99, который уже есть.
Как быть в такой ситуации?
1 dka80
 
26.03.19
11:54
1. Писать свою систему нумерации
2. Нумеровать вручную
3. Бить по рукам
2 dka80
 
26.03.19
11:54
И еще: номер в 99,99% текстовый, а не числовой
3 DTX 4th
 
26.03.19
11:59
(2) Это как раз понятно
4 KnightAlone
 
26.03.19
12:08
(0) или ещё хуже "89-от"

ты можешь предложить выводить им в печатную форму номер 89 как "89-от", объяснив, что такой номер непосредственно в документе ломает типовой алгоритм автонумерации, а на вывод можно доабвить все, что попросят.
хуже когда начинают делать 89/1, 89/2 и т.д. Тут реально либо руками, либо свою систему писать
5 catena
 
26.03.19
12:26
Вы хотите советов, как быть с кадровиками или с номером?
6 DTX 4th
 
26.03.19
12:29
(4) Ну они всё равно руками номера будут вводить, так что мало чем поможет

(5) С номером

Вощем, написал свою нумерацию:
&Вместо("ПриУстановкеНовогоНомера")
Процедура НумОт_ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    СтандартнаяОбработка = Ложь;
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Отпуск.Номер КАК Номер
                   |ИЗ
                   |    Документ.Отпуск КАК Отпуск
                   |ГДЕ
                   |    Отпуск.Дата МЕЖДУ &НП И &КП";
    Запрос.УстановитьПараметр("НП", НачалоГода(Дата));
    Запрос.УстановитьПараметр("КП", КонецГода(Дата));
    РезультатЗапроса = Запрос.Выполнить();
    
    Макс = 0;
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        Н = Число(ОставитьТольцоЦифры(Выборка.Номер));
        Если Н > Макс Тогда
            Макс = Н;            
        КонецЕсли;
    КонецЦикла;  
    
    Номер = Формат(Макс + 1, "ЧГ=")
    
КонецПроцедуры
7 KnightAlone
 
26.03.19
12:35
(6) сюрприз будет, когда они додумаются до 89/1
8 catena
 
26.03.19
12:50
(6)У нас у кадровиков был доп.реквизит "Номер в ЭДО" для всякой их лабуды.
9 Cyberhawk
 
26.03.19
12:54
Пусть меняют. Тебе-то что?
10 ASU_Diamond
 
26.03.19
12:54
Если кадровики всё равно вручную штампуют номера, то заведи свой префикс, например "Авто". Прикручивай стандартный механизм нумерации платформы и в подписке предварительно проверяешь, если номер пустой, то номер со своим префиксом генерируешь. Потом когда кадровикам понадобится они вручную поменяют номер.
11 DTX 4th
 
26.03.19
13:04
(9) Так они поменяли на 99 и встряли, я же объяснил.

(10) "Прикручивай стандартный механизм нумерации платформы"
Это как?
Платформа ведёт разную нумерацию для разных префиксов?
12 d4rkmesa
 
26.03.19
13:18
(0) Ничего.
13 Cyberhawk
 
26.03.19
13:21
(11) "и встряли" // Ну пишешь инструкцию по исправлению ситуации и при каждом таком случае даешь ее пользователю. Профит.
14 DTX 4th
 
26.03.19
13:27
(13) И что будет в инструкции?
"Введите вручную номер документа и делайте так каждый последующий раз"? Такое себе

Что там про разную нумерацию с разными префиксами из (11)?
15 ASU_Diamond
 
26.03.19
13:27
(11) да. Подписка на событие ПриУстановкеНовогоНомера
там можно префикс подменять.
16 Exxter
 
26.03.19
13:30
Зачем меняют?
Напиши свою, может и менять перестанут
Организация/Вид Занятости/Тип документа
АВ/ВС/2801-4У
17 ИУБиПовиц
 
26.03.19
13:37
не знаю как у Вас, но у нас правила префиксации и постфиксации определены в приказе по предприятию. и кадровики не могут поменять на 99 и встрять (ну вернее могут, но тогда текущая программа работает в соответствии с приказом таким то. требуется согласовать доработку с ключевыми пользователями. И как то сразу перестают менять и встревать)
18 Cyberhawk
 
26.03.19
13:39
(14) В инструкции будет описание (процедура) действий, необходимых для обхода ошибки
19 Web00001
 
26.03.19
13:46
Если кадровик так меняет номер документа, значит у него есть свой номер документа. Если у него есть свой номер то пусть его ставит, если нету, то пусть тот который есть не трогает. Вроде всегда работала такая схема.
20 SleepyHead
 
гуру
26.03.19
13:54
(0) Сколько я видел кадровиков, делятся на 2 группы:

1. Первым похрен, какой номер стоит в 1с.
2. Вторым не похрен, у них своя нумерация и они каждый раз проставляют номер вручную в приказе.

У вас какой случай?
21 DTX 4th
 
26.03.19
14:00
(19) (20) Он его меняет через месяц после заведения документа (:
22 DTX 4th
 
26.03.19
14:06
(18) Необходимые действия для устранения ошибки в текущей ситуации - "Введите вручную номер документа и делайте так каждый последующий раз" (13). Крайне сомнительный вариант. Или ещё есть?
23 Cyberhawk
 
26.03.19
14:09
(22) Необязательно же каждый раз. Достаточно однократно перенумеровать так, чтобы обеспечить достаточную номерную емкость, которой хватит надолго. Т.е. в инструкции должно быть описано, что к проблемам пользователей приводят они себя сами. Им же с этим и жить потом.
24 Фрэнки
 
26.03.19
14:10
(22) но можно же завести дополнительный реквизит у кадровых документов, подправить процедуры печати (в расширении, например) и решить это все дело выгодным для всех способом
25 Фрэнки
 
26.03.19
14:13
так и даже без изменения типового кода сдвинул поле дополнительного реквизита из подвала формы в шапку
26 DTX 4th
 
26.03.19
14:17
(23) Лидирующие нули их не устроят.
(24) Так и сделано. Для Т-60 создан отдельный номер. Подправлено пару печатных форм. Все формы править - тоже сомнительный вариант, так как зачастую приходиться выдирать функцию целиком в расширение.
27 Cyberhawk
 
26.03.19
14:18
(26) "Лидирующие нули их не устроят" // Где?
28 DTX 4th
 
26.03.19
14:22
(27) В номере отпуска.
В общем, самописная нумерация вроде самый нормальный вариант. Если программно скрывать лидирующие нули, то можно закопаться
29 Cyberhawk
 
26.03.19
14:33
(28) Где они видят этот номер с нулями? В типовых везде номер на печать (в печатную форму) выводится без лидирующих нулей
30 Фрэнки
 
26.03.19
14:34
(28) так оно же номер в печатную форму разве не через универсальную функцию тащит? Сломать эту функцию через колено, ой, через расширение
31 dka80
 
26.03.19
14:37
Уже писали, что разные типы документов могут иметь сквозную нумерацию? Например, отпуск без сохранения оплаты и отпуск?
32 dka80
 
26.03.19
14:39
касательно проблем с "/1" можно попробывать что-то выжать из такого запроса:
Запрос.Текст =
        "ВЫБРАТЬ
        |    МАКСИМУМ(ВЫБОР
        |            КОГДА УведомлениеНомер.Значение ПОДОБНО ""_______""
        |                ТОГДА ""000"" + (ВЫРАЗИТЬ(УведомлениеНомер.Значение КАК СТРОКА(100)))
        |            КОГДА УведомлениеНомер.Значение ПОДОБНО ""________""
        |                ТОГДА ""00"" + (ВЫРАЗИТЬ(УведомлениеНомер.Значение КАК СТРОКА(100)))
        |            КОГДА УведомлениеНомер.Значение ПОДОБНО ""_________""
        |                ТОГДА ""0"" + (ВЫРАЗИТЬ(УведомлениеНомер.Значение КАК СТРОКА(100)))
        |            ИНАЧЕ ВЫРАЗИТЬ(УведомлениеНомер.Значение КАК СТРОКА(100))
        |        КОНЕЦ) КАК НомерУведомления
        |ПОМЕСТИТЬ втМаксНомер
        |ИЗ
        |    Справочник.Сотрудники.ДополнительныеРеквизиты КАК УведомлениеНомер
        |ГДЕ
        |    УведомлениеНомер.Свойство.Имя = ""УведомлениеОбУвольненииНомер""
        |    И УведомлениеНомер.Значение ПОДОБНО &Период
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВЫБОР
        |        КОГДА втМаксНомер.НомерУведомления ПОДОБНО ""000%""
        |            ТОГДА ПОДСТРОКА(втМаксНомер.НомерУведомления, 4, 100)
        |        КОГДА втМаксНомер.НомерУведомления ПОДОБНО ""00%""
        |            ТОГДА ПОДСТРОКА(втМаксНомер.НомерУведомления, 3, 100)
        |        КОГДА втМаксНомер.НомерУведомления ПОДОБНО ""0%""
        |            ТОГДА ПОДСТРОКА(втМаксНомер.НомерУведомления, 2, 100)
        |        ИНАЧЕ втМаксНомер.НомерУведомления
        |    КОНЕЦ КАК НомерУведомления
        |ИЗ
        |    втМаксНомер КАК втМаксНомер";
    ПериодМесяц = "-"+Формат(Месяц(ДатаУведомления), "ЧЦ=2; ЧВН=");
    ПериодГод = "/" + Прав(Год(ДатаУведомления), 2);
    Запрос.УстановитьПараметр("Период", "%"+ПериодГод);
33 DTX 4th
 
26.03.19
14:56
(30) А форма списка?
Плюс они явно будут заводить номер без нулей, их нужно будет тоже через колено привинчивать.
34 Фрэнки
 
26.03.19
15:20
(33) так убрать им поле с номером с формы документа - пусть попробуют его вернуть :-)
Можно даже в расширение это все запилить. Первое время, как привыкнут, будет скрыто, а после у них уже нужды изменять типовой номер не будет.
35 unregistered
 
26.03.19
15:37
(33) На форму списка тоже можно выводить номер без лидирующих нулей и префиксов.

Код в (6) - *авно. Причем редкостное, тупое и беспощадное.

Личный богатый опыт показывает, что любые больные фантазии кадровиков, бухгалтеров и прочих менеджеров - "гениев автоматизации" никому нафиг не нужны. И в 99.9999% случаев типовая нумерация значительно лучше, чем любая их безумная придумка и хотелка.
36 DTX 4th
 
26.03.19
15:42
(35) Ой, а вот и адепты подтянулись из министерства.

Варианты улучшить код в (6) будут?
37 dka80
 
26.03.19
17:40
(35) ст. 19 Перечня типовых управленческих архивных документов, утвержденного приказом Минкультуры России от 25.08.2010 № 558 как бы подразумевает подразделение приказов на разные виды и обеспечение скорости их поиска. Отсюда и появляются всякие префиксы. Так что ваше "гениев автоматизации" имеет место быть, но не в таком процентном соотношении
38 mistеr
 
26.03.19
17:48
(21) "Он его меняет через месяц после заведения документа"

"На такую схему работы конфигурация ЗУП не рассчитана". Простое и понятное объяснение. Если будут настаивать, при согласовании доработок с руководством быстро выяснится, что вправить мозги дешевле. Ну или выяснить, откуда ноги растут. Может там другая, небольшая, доработка нужна.
39 Said_We
 
26.03.19
23:46
Нормальные требования для кадровиков и основания у этих требований тоже есть. Пилите Шура, Пилите...
40 SleepyHead
 
гуру
27.03.19
05:41
(39) Требования можно считать нормальными, если их можно формализовать и прописать четкие правила нумерации.

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

Так что вправить мозги, как писали выше, все-таки вариант более рабочий, чем кодить бездумно по хотелкам пользователя.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.