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