В обработкепроверкизаполнения
Программно добавляются реквизиты для проверки, но мне надо если соблюдается определнное условие их удалить из проверки. пишу так:
так они добавляются.
Если Роль <> "РедактированиеЗадачПроектовОУКД" Тогда
ПроверяемыеРеквизиты.Добавить("Заказчик");
ПроверяемыеРеквизиты.Добавить("ФилиалЗаказчика");
КонецЕсли;
а так я их удаляю
Если ТипКонкурса = Перечисления.ТипыКонкурса.Продвижения Тогда
Проверка = ПроверяемыеРеквизиты.Найти("Заказчик");
Проверка1 = ПроверяемыеРеквизиты.Найти("ФилиалЗаказчика");
Если Проверка <> Неопределено ИЛИ Проверка1 <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Проверка);
ПроверяемыеРеквизиты.Удалить(Проверка1);
КонецЕсли;
КонецЕсли;
Показать
ошибка: начение индекса выходит за границы диапазона
если удалять один реквизит, то пишет неверный параметр 1.
Проверка = ПроверяемыеРеквизиты.Найти("Заказчик");
Если Проверка <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Проверка);
КонецЕсли;
Проверка1 = ПроверяемыеРеквизиты.Найти("ФилиалЗаказчика");
Если Проверка1 <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Проверка1);
КонецЕсли;
Проверка = ПроверяемыеРеквизиты.Найти("Заказчик");
Если Проверка <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Проверка);
КонецЕсли;
Проверка1 = ПроверяемыеРеквизиты.Найти("ФилиалЗаказчика");
Если Проверка1 <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(Проверка1);
КонецЕсли;
не работает почему-то.
Скорее дело в том что у меня нет роли Если Роль <> "РедактированиеЗадачПроектовОУКД" Тогда
или может потому что реквизит который надо отключить
находится в другой вкладке
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
НепроверяемыеРеквизиты = Новый Массив();
...
Если ТипКонкурса = Перечисления.ТипыКонкурса.Продвижения Тогда
Проверка = ПроверяемыеРеквизиты.Найти("Заказчик");
Проверка1 = ПроверяемыеРеквизиты.Найти("ФилиалЗаказчика");
Если Проверка <> Неопределено ИЛИ Проверка1 <> Неопределено Тогда
НепроверяемыеРеквизиты .Добавить(Проверка);
НепроверяемыеРеквизиты .Добавить(Проверка1);
КонецЕсли;
КонецЕсли;
...
УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты);
КонецПроцедуры;
Процедура УдалитьНепроверяемыеРеквизитыИзМассива(МассивРеквизитов, МассивНепроверяемыхРеквизитов) Экспорт
Для Каждого ЭлементМассива Из МассивНепроверяемыхРеквизитов Цикл
// перед удалением реквизита из массива необходимо проверить, что он там есть
// (не был удален ранее платформой или в коде).
ПорядковыйНомер = МассивРеквизитов.Найти(ЭлементМассива);
Если ПорядковыйНомер <> Неопределено Тогда
МассивРеквизитов.Удалить(ПорядковыйНомер);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ЭтотОбъект.Резерв Тогда
Если ПроверяемыеРеквизиты.Найти("Контрагент") <> Неопределено И ПроверяемыеРеквизиты.Найти("Договор") <> Неопределено Тогда
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Контрагент"));
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Договор"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры