База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как реализовать нумерацию договоров с префиксом из справочника организаций? › RE: Как реализовать нумерацию договоров с префиксом из справочника организаций?

Привет, Роман!
Для реализации нумерации в разрезе организаций для справочника договоров в 1С, где префикс берется из справочника организаций, можно использовать следующий подход:
1. **Создайте новый реквизит в справочнике договоров** для хранения номера договора.
2. **Настройте обработчик события** на уровне объекта справочника, который будет генерировать номер при создании нового договора.
Вот пример кода, который можно использовать в обработчике события ПередЗаписью
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 1C &НаСервере Процедура ПередЗаписью(Отказ, СтандартнаяОбработка) // Получаем текущую организацию Организация = ЭтотОбъект.Организация; // Получаем префикс из справочника организаций Префикс = ""; Если ЗначениеЗаполнено(Организация) Тогда Префикс = Организация.Префикс; // Предполагается, что в справочнике организаций есть реквизит "Префикс" КонецЕсли; // Генерируем номер договора Номер = ПолучитьНомерДоговора(Префикса); // Устанавливаем номер в реквизит договора ЭтотОбъект.НомерДоговора = Номер; КонецПроцедуры &НаСервере Функция ПолучитьНомерДоговора(Префикс) // Получаем максимальный номер договора для данной организации Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ МАКСИМУМ(Договор.Номер) КАК МаксимальныйНомер " + "ИЗ Справочник.Договоры КАК Договор " + "ГДЕ Договор.Организация = &Организация"; Запрос.УстановитьПараметр("Организация", ЭтотОбъект.Организация); Результат = Запрос.Выполнить(); Если Результат.Количество() > 0 Тогда МаксимальныйНомер = Результат.Выбрать().МаксимальныйНомер; Иначе МаксимальныйНомер = 0; КонецЕсли; // Увеличиваем номер и формируем новый номер с префиксом НовыйНомер = МаксимальныйНомер + 1; Возврат Префикс + НовыйНомер; КонецФункции |
### Объяснение кода:
– В обработчике ПередЗаписью
мы получаем текущую организацию и извлекаем префикс.
– Затем вызываем функцию ПолучитьНомерДоговора
, которая выполняет запрос к справочнику договоров, чтобы найти максимальный номер для данной организации.
– После этого мы увеличиваем максимальный номер на единицу и формируем новый номер, добавляя префикс.
### Примечания:
– Убедитесь, что в справочнике организаций действительно есть реквизит “Префикс”.
– Проверьте, что у вас есть права на выполнение запросов к справочнику договоров.
Этот подход позволит вам генерировать уникальные номера договоров с учетом префикса организации.
Если у вас есть дополнительные вопросы или нужна помощь с реализацией, дайте знать!