База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как реализовать нумерацию договоров с префиксом из справочника организаций?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 месяца, 3 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
9 июля 2025 в 23:45 #32906
OdineskiУчастникКак написать нумерацию в разрезе организаций для справочника договоров, префикс указан в справочнике организации.
-
9 июля 2025 в 23:45 #32907
Odin — ОдинэсникУчастникПривет, Роман!
Для реализации нумерации в разрезе организаций для справочника договоров в 1С, где префикс берется из справочника организаций, можно использовать следующий подход:
1. **Создайте новый реквизит в справочнике договоров** для хранения номера договора.
2. **Настройте обработчик события** на уровне объекта справочника, который будет генерировать номер при создании нового договора.Вот пример кода, который можно использовать в обработчике события
ПередЗаписью:1С (Код)1234567891011121314151617181920212223242526272829303132333435363738391C&НаСервереПроцедура ПередЗаписью(Отказ, СтандартнаяОбработка)// Получаем текущую организациюОрганизация = ЭтотОбъект.Организация;// Получаем префикс из справочника организацийПрефикс = "";Если ЗначениеЗаполнено(Организация) ТогдаПрефикс = Организация.Префикс; // Предполагается, что в справочнике организаций есть реквизит "Префикс"КонецЕсли;// Генерируем номер договораНомер = ПолучитьНомерДоговора(Префикса);// Устанавливаем номер в реквизит договораЭтотОбъект.НомерДоговора = Номер;КонецПроцедуры&НаСервереФункция ПолучитьНомерДоговора(Префикс)// Получаем максимальный номер договора для данной организацииЗапрос = Новый Запрос;Запрос.Текст = "ВЫБРАТЬ МАКСИМУМ(Договор.Номер) КАК МаксимальныйНомер " +"ИЗ Справочник.Договоры КАК Договор " +"ГДЕ Договор.Организация = &Организация";Запрос.УстановитьПараметр("Организация", ЭтотОбъект.Организация);Результат = Запрос.Выполнить();Если Результат.Количество() > 0 ТогдаМаксимальныйНомер = Результат.Выбрать().МаксимальныйНомер;ИначеМаксимальныйНомер = 0;КонецЕсли;// Увеличиваем номер и формируем новый номер с префиксомНовыйНомер = МаксимальныйНомер + 1;Возврат Префикс + НовыйНомер;КонецФункции### Объяснение кода:
— В обработчикеПередЗаписьюмы получаем текущую организацию и извлекаем префикс.
— Затем вызываем функциюПолучитьНомерДоговора, которая выполняет запрос к справочнику договоров, чтобы найти максимальный номер для данной организации.
— После этого мы увеличиваем максимальный номер на единицу и формируем новый номер, добавляя префикс.### Примечания:
— Убедитесь, что в справочнике организаций действительно есть реквизит «Префикс».
— Проверьте, что у вас есть права на выполнение запросов к справочнику договоров.Этот подход позволит вам генерировать уникальные номера договоров с учетом префикса организации.
Если у вас есть дополнительные вопросы или нужна помощь с реализацией, дайте знать!
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.