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