Присвоение номеров

1. VKuser24804875 97 31.01.20 23:17 Сейчас в теме
Здравствуйте, знатоки!
Вопрос, вероятно, не самый умный, но он ставит меня в тупик настолько, что я даже не понимаю как к задаче подступиться.
Дано: документ на УФ в ЗУП (3.1.12.113, платформа 8.3.16.1148).
Задача: добавить на форму кнопку, при нажатии которой в поле формы будет заполнен номер (в нашем случае, уведомления об отпуске), который потом ручками введут в ПФ уведомления - так по ряду причин удобнее.
И вот я даже, блин, нагуглить решение задачи не могу и не понимаю с какого конца браться. Прошу о помощи более умных коллег (хоть тапками кидайтесь, но не оставляйте без совета).
Заранее спасибо :-)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. AlexandrSmith 69 05.02.20 13:26 Сейчас в теме
(1) Для вашего случая, чтобы совсем исключить проблему задвоенности номеров, до меня, программисты в моей текущей базе делали почему-то константу, её меняли и её присваивали номеру документа. Смысл этого действа до конца не пойму. На мой взгляд проблема задвоения и одновременной записи таким способом не решается на 100%. А вот вам может пригодится такой пример. Попробуйте сделать.

Мне больше для 1С нравится решение (10), но оно тоже говорят правильным не является.
2. ico 31.01.20 23:23 Сейчас в теме
Если задача заключается в добавлении кнопки на форму, то решений в сети много. Например это.
3. VKuser24804875 97 31.01.20 23:45 Сейчас в теме
(2) Да с кнопкой-то я справилась, я в нумерацию уперлась: по сути нужно присваивать некие номера, но только в определенных документах (по нажатию). Некий аналогичный механизм есть в том же ЗУПе в нумерации трудовых договоров, но моих знаний не хватает на то, чтобы разобрать как они работают. Есть такие же классные решения для присвоение номеров "не документу"? :-)
4. ishelper 01.02.20 00:10 Сейчас в теме
(3)
по сути нужно присваивать некие номера, но только в определенных документах (по нажатию)
Кроме выражения своих хотелок неплохо бы озвучить требования к этому номеру - длина, уникальность, периодичность и т.д. Тогда можно будет думать об алгоритме.

Например, если нужны уникальные номера в пределах года, то их можно генерировать в формате ММДДЧЧММ - месяц, день, часы и минуты.
5. VKuser24804875 97 01.02.20 00:21 Сейчас в теме
(4) вообще в организации используется номер формата "Уnnn" по порядку от 1 до 999, уникальный в пределах года (с У1 до Уn - пока отпуска по графику не закончатся). Таким образом, или трехзначный циферный или четырехзначный с префиксом (что удастся реализовать).
6. ishelper 01.02.20 00:25 Сейчас в теме
(5)
в организации используется номер формата "Уnnn" по порядку от 1 до 999, уникальный в пределах года
А где-нибудь сохраняется последний использованный номер? Например, в реквизите документа или еще где-то?
7. VKuser24804875 97 01.02.20 00:33 Сейчас в теме
(6) вооот они вопросы, ставящие меня в тупик. логически: база должна хранить сведения об этой нумерации с тем, чтобы проставлять ее в следующий документ, в свете того, что это делается не во всех подряд, а в некоторых, а как ее этому научить - загадка для меня :(
вероятно, следует пояснить всю систему: есть документ "приказ на отпуск", который регистрирует сквозные номера на все виды приказов по отпускам и вот надо научить этот документ по необходимости присваивать номер уведомления для приказов, предоставляемых по графику отпусков.
8. ishelper 01.02.20 00:48 Сейчас в теме
(7)
база должна хранить сведения об этой нумерации с тем, чтобы проставлять ее в следующий документ
База - должна... мы - должны... только автор никому ничего не должна.

В частности, не должна отвечать на уточняющие вопросы: где допустимо сохранять этот номер? В реквизите документа - годится? Если да, тогда алгоритм несложен:
1. При нажатии на кнопку выбираем документы данного вида в обратном порядке от текущего документа до начала года.
2. В каждом документе проверяем заполнение реквизита с номером уведомления
3. Если пустой (кнопка не нажималась) - переходим на следующий документ
4. Если заполнен (кнопка не нажималась) - считываем, прибавляем единицу, записываем в реквизит текущего документа и прерываем выборку.
5. Если выборка кончилась, а реквизит остался не заполненным (кнопка нажата первый раз в году) - присваиваем № 1.

Фсё, больше мне нечего вам предложить.
signum2009; +1 Ответить
9. VKuser24804875 97 01.02.20 00:53 Сейчас в теме
(8)
автор никому ничего не должна
автор должна как-то это счастье изобрести и объяснить базе, что ж она от нее хочет :)
это, конечно, с моей стороны совсем свинство и показывает меня как ключевым образом необразованную, но может быть у вас есть примеры кода или статьи на этот счет?
10. katya0702 01.02.20 05:50 Сейчас в теме
Я бы написала запрос, в котором выбрала документы нужного типа за год по нужной организации, в суммируемых полях - максимум от вашего номера уведомления:

Ну примерно вот такой запрос (у меня максимум обычного номера вычисляется):

"ВЫБРАТЬ
| МАКСИМУМ(Отпуск.Номер) КАК Номер
|ИЗ
| Документ.Отпуск КАК Отпуск
|ГДЕ
| Отпуск.Дата МЕЖДУ &НачалоГода И &КонецГода
| И Отпуск.Организация = &Организация"

Ну и дальше преобразуете номер в число (если он как строка сохранен), + 1 - ваш новый номер.
AlexandrSmith; +1 Ответить
Оставьте свое сообщение

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