База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как изменить допреквизиты документа «Увольнение» в закрытом периоде?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 час, 35 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
27 февраля 2026 в 12:00 #35969
нужна дополнительная обработка которая позволит изменять значение дополнительных реквизитов документа Увольнение в закрытом периоде
-
27 февраля 2026 в 12:00 #35970
Олег, привет!
Чтобы разрешить изменение дополнительных реквизитов документа «Увольнение» в закрытом периоде, при этом сохранив запрет на изменение самого документа, нужно сделать отдельную обработку, которая будет работать именно с дополнительными реквизитами. В типовых конфигурациях 1С дополнительные реквизиты хранятся в регистре сведений «ЗначенияСвойствОбъектов» (или аналогичном), и их изменение не всегда контролируется стандартным механизмом запрета изменения документов в закрытом периоде.
Вот как можно реализовать такую обработку:
1. **Создать отдельную обработку (внешнюю или встроенную) для редактирования дополнительных реквизитов документа «Увольнение».**
2. **В обработке при сохранении проверять дату документа «Увольнение» и разрешать изменение дополнительных реквизитов, даже если документ находится в закрытом периоде.**
3. **При этом стандартный запрет на изменение самого документа «Увольнение» останется в силе.**
Примерный алгоритм и код:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960// Процедура изменения дополнительного реквизита документа "Увольнение"Процедура ИзменитьДопРеквизитУвольнения(СсылкаНаДокумент, ИмяРеквизита, НовоеЗначение) Экспорт// Получаем дату документаДатаДокумента = СсылкаНаДокумент.Дата;// Проверяем, закрыт ли период для изменения документов "Увольнение"// Используем типовой механизм проверки дат запрета измененияЗапретИзменения = ДатыЗапретаИзменения.ЗапретИзмененияОбъекта(СсылкаНаДокумент);// Если изменение документа запрещено, но нам нужно разрешить изменение доп. реквизитов// то просто не блокируем изменение доп. реквизитов// Можно добавить дополнительную проверку, если нужно// Получаем ссылку на регистр сведений с доп. реквизитамиРегистрДопРеквизитов = РегистрыСведений.ЗначенияСвойствОбъектов;// Создаем набор записей для записи значения доп. реквизитаНаборЗаписей = РегистрДопРеквизитов.СоздатьНаборЗаписей();// Формируем фильтр по объекту и свойствуЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| ЗначенияСвойствОбъектов.Ссылка|ИЗ| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов|ГДЕ| ЗначенияСвойствОбъектов.Объект = &Объект| И ЗначенияСвойствОбъектов.Свойство.Наименование = &ИмяРеквизита";Запрос.УстановитьПараметр("Объект", СсылкаНаДокумент);Запрос.УстановитьПараметр("ИмяРеквизита", ИмяРеквизита);Выборка = Запрос.Выполнить().Выбрать();Если Выборка.Следующий() Тогда// Обновляем существующую записьЗапись = НаборЗаписей.Добавить();Запись.Ссылка = Выборка.Ссылка;Запись.Значение = НовоеЗначение;Иначе// Добавляем новую записьЗапись = НаборЗаписей.Добавить();Запись.Объект = СсылкаНаДокумент;// Получаем ссылку на свойство по имениСвойство = ПланВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(ИмяРеквизита);Если Свойство = Неопределено Тогда// Ошибка - свойство не найденоСообщить("Свойство '" + ИмяРеквизита + "' не найдено.");Возврат;КонецЕсли;Запись.Свойство = Свойство;Запись.Значение = НовоеЗначение;КонецЕсли;// Записываем измененияНаборЗаписей.Записать();Сообщить("Дополнительный реквизит '" + ИмяРеквизита + "' успешно изменен.");КонецПроцедуры4. **Вызов этой процедуры можно делать из отдельной формы обработки, где пользователь выбирает документ «Увольнение», выбирает доп. реквизит и меняет его значение.**
5. **Важно:** В стандартном механизме запрета изменения документов в закрытом периоде проверка идет на сам объект документа, а не на регистр сведений с доп. реквизитами. Поэтому изменение доп. реквизитов через регистр сведений не блокируется, если специально не реализовать такую проверку.
6. **Если в вашей конфигурации есть подписки на события записи регистра сведений с доп. реквизитами, где реализован запрет изменения в закрытом периоде, то нужно в этих подписках добавить исключение для документов «Увольнение» и для регистра сведений с доп. реквизитами.**
—
Если нужна более конкретная помощь с кодом под вашу конфигурацию, могу помочь с доработкой.
https://infostart.ru/1c/articles/105587/—
Таким образом, чтобы разрешить изменение доп. реквизитов документа «Увольнение» в закрытом периоде, нужно реализовать отдельную обработку, которая будет работать напрямую с регистром сведений дополнительных реквизитов, обходя стандартный запрет на изменение самого документа.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.