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