В зависимости от версии БСП реализация механизма "Даты запрета редактирования" может отличаться.
Приведем основные действия для подключения нового объекта к этому механизму.
1. В форме объекта (обычно документа) в процедуре ПриЧтенииНаСервере(ТекущийОбъект) надо добавить строки:
// СтандартныеПодсистемы.ДатыЗапретаИзменения
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.ДатыЗапретаИзменения
2. Сам объект надо включить в перечень объектов обрабатываемой подпиской с именем типа "ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента" (информацию – какой именно – можно найти в комментариях одноименных процедур общего модуля «ДатыЗапретаИзменения»).
Если надо добавить новый объект, не снимая с поддержки, то тут возникает проблема с изменением перечня объектов в подписке в расширении. В этом случае нам придется создать свою подписку в расширении, перенести в подписку общий модуль с обработкой оригинальной подписки и добавить в заимствованный модуль обработку созданной подписки, текст при этом копируем один в один из процедуры в основной конфигурации.
3. Включить добавление объектов в источник данных в процедуре ДатыЗапретаИзмененияПереопределяемый.ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения(ИсточникиДанных)
например:
ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных,
Метаданные.Документы._ДемоЗаказПокупателя.ПолноеИмя(),
"СчетаНаОплату.Счет.Дата", "_ДемоТорговля", "Партнер.ВидПартнера");
Один и тот же объект может быть включен в таблицу источников несколько раз, если он относится к разным разделам или разным "разрезам" (характеристикам) разделов, например:
ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных,
Метаданные.Документы._ДемоЗаказПокупателя.ПолноеИмя(),
"СчетаНаОплату.Счет.Дата", "_ДемоТорговля", "ПартнерыИКонтактныеЛица.Партнер.ВидПартнера");
4. Если надо добавить новый раздел, то сначала его надо в клиенте добавить в план видов характеристик РазделыДатЗапретаИзменения. Получить УИД для новой записи, а потом добавить в процедуру ДатыЗапретаИзмененияПереопределяемый.ПриЗаполненииРазделовДатЗапретаИзменения(Разделы) строку вида:
Раздел = Разделы.Добавить();
Раздел.Имя = "_ДемоБанк";
Раздел.Идентификатор = Новый УникальныйИдентификатор("4109a54a-f3ea-474c-9079-be08bf335668");
Раздел.Представление = НСтр("ru = 'Демо: Банк'");
Раздел.ТипыОбъектов.Добавить(Тип("СправочникСсылка._ДемоБанковскиеСчета")); // при наличии разреза раздела.
Если новый раздел должен иметь разрезы (характеристика ПВХ), то добавляем объект "разреза" в тип значения характеристик ПВХ.
5. Если надо настроить специфические условия проверки применения даты запрета, то их надо добавить в процедуру ДатыЗапретаИзмененияПереопределяемый.ПередПроверкойЗапретаИзменения(). В этой процедуре, если не надо выполнять проверку, то для параметра ПроверкаЗапретаИзменения устанавливаем значение Ложь.
Например:
Если ТипЗнч(Объект) = Тип("ДокументОбъект._ДемоЗаказПокупателя") Тогда
Если Не Объект.Проведен Тогда
ПроверкаЗапретаИзменения = Ложь;
КонецЕсли;
КонецЕсли;
|