- В этой теме 1 ответ, 2 участника, последнее обновление 1 день, 13 часов назад сделано .
Просмотр 1 ветки ответов
Просмотр 1 ветки ответов
- Для ответа в этой теме необходимо авторизоваться.
Программирование и администрирование в 1С
База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как задать код для события «ПередЗаписью» с проверкой типа и времени?
Напиши мне код в «Подписке на события» «ПередЗаписью» , проверяем тип, время, меняем на нужное
Вот пример кода для подписки на событие «ПередЗаписью» в общем модуле, который проверяет тип документа, смотрит время в реквизите Дата и при необходимости меняет время на 23:00:00.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Процедура ПодпискаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт // Проверяем, что это объект документа Если ТипЗнч(Источник) = Тип("ДокументОбъект") Тогда // Список типов документов, для которых нужно ограничить время МассивДокументов = Новый Массив; МассивДокументов.Добавить("ЗаказПокупателя"); МассивДокументов.Добавить("РеализацияТоваровУслуг"); // Добавьте сюда свои имена документов Если МассивДокументов.Содержит(Источник.Метаданные().Имя) Тогда // Проверяем время в реквизите Дата Если Время(Источник.Дата) > Время(23,0,0) Тогда Источник.Дата = Дата(Источник.Дата) + Время(23,0,0); КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры |
Как использовать:
— Создайте подписку на событие «ПередЗаписью» для объекта «ДокументОбъект».
— В качестве обработчика укажите эту процедуру (например, ПодпискаПередЗаписью в общем модуле).
— В массиве МассивДокументов укажите имена документов, для которых нужно ограничение времени.
Если хотите, чтобы для всех документов ограничивалось время, уберите проверку по имени документа.
Рекомендую для подписок использовать общий модуль с параметром «Вызов сервера» и «Сервер, клиент», чтобы код работал корректно.