Необходимо на стороне УТ 11.3 дописать код, при исполнении которого не будет проверяться реквизитТЧ.

На текущий момент написал:

```1c
    &НаСервере
    Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

    Сумм = ПроверяемыеРеквизиты.Найти("Товары.Сумма");
    Тов = Объект.Товары;
    Для каждого Строка из Тов цикл
    Если Строка.ПроцентАвтоматическойСкидки = 100 тогда
    Сообщить("Поймали строку");
    ПроверяемыеРеквизиты.Удалить(Сумм);
    КонецЕсли;
    Сообщить(Сумм)
    КонецЦикла;

    // СтандартныеПодсистемы.Свойства
    УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
    // Конец СтандартныеПодсистемы.Свойства

    КонецПроцедуры
```

Но при исполнении получаю ошибку "Не соответствие типов параметра 1"....
Как мне исключить реквизит ТЧ из проверяемых Перед записью?
---
Для этого надо в процедуре проверки заполнения реализовать собственную проверку в цикле.
Если проверка по условию должна быть для каждой строки тч.
---
Вообщем, да, все верно на счет собственной построчной проверки ТЧ документа, именно так реализовал в процедуре "ПередЗаписьюНаСервере" и все заработало!
Только есть побочка, придется переписывать все проверки)))
---
ПроверяемыеРеквизиты - массив, работать с ним нужно как с массивом.
---
а можно попросить вас подробнее?
---
В случае ошибки несоответствия типов, мне видится только один вариант: ПроверяемыеРеквизиты.Найти("Товары.Сумма") возвращает Неопределено, т.к. искомого значения нет в массиве.

Если поиск вернул бы любой индекс, то повторное удаление элемента по этому индексу, даже если количество элементов массива уменьшилось сильнее значения индекса найденного элемента, не вызывало бы ошибки.

В типовой ЗУП З.1 спокойно работает код в документе ПриемНаРаботу:

```1c
    ПроверяемыйРеквизитЕжегодныеОтпуска = ПроверяемыеРеквизиты.Найти("ЕжегодныеОтпуска");
    Если ПроверяемыйРеквизитЕжегодныеОтпуска <> Неопределено Тогда
    ПроверяемыеРеквизиты.Удалить(ПроверяемыйРеквизитЕжегодныеОтпуска);
    КонецЕсли;
```
---
Дело в том, что я пытаюсь отменить проверку реквизита табличной части по условию заполненности другого реквизита ТЧ документа...

Если конкретнее, то речь о документе РеализацияТоваров и ЗаказыКлиентов.
Нужно что бы реквизит ТЧ не проверялся если скидка =100%...

Если я вас правильно понимаю, поиск выполняемый здесь:

```1c
    Сумм = ПроверяемыеРеквизиты.Найти("Товары.Сумма");
```

Возращает, ровным счетом ничего, потому то и удаление не происходит....

Но как тогда этот реквизит ТЧ проверяется в момент прведения документа?
---
ПроверяемыеРеквизиты спокойно могут изменяться программно.
Судя по коду, что вы привели, проверка может выполнятся где-то внутри

```1c
    УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
```

в зависимости от каких-то других условий.
---
Но при исполнении получаю ошибку "Не соответствие типов параметра 1"....
В какой момент вы получаете эту ошибку? У вас этот код в цикле:

```1c
    Если Строка.ПроцентАвтоматическойСкидки = 100 тогда
    Сообщить("Поймали строку");
    ПроверяемыеРеквизиты.Удалить(Сумм);
    КонецЕсли;
```

Вы удалили строку Сумм из ПроверяемыеРеквизиты, а на следуюущей строке пытаетесь это сделать снова, но строки уже нет. Нужно так:

```1c
    Если Строка.ПроцентАвтоматическойСкидки = 100 тогда
    Сообщить("Поймали строку");
    ПроверяемыеРеквизиты.Удалить(Сумм);
    Прервать;
    КонецЕсли;
```
---
```1c
    Несоответствие типов (параметр номер '1')
    {Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(136)}: ПроверяемыеРеквизиты.Удалить(Сумм);
    {ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1643)}: Результат = Форма.Записать(ПараметрыЗаписи);
    {Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(260)}: ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтаФорма, ДополнительныеПараметры.ПараметрыЗаписи, Отказ);
    {ОбщийМодуль.МногооборотнаяТараКлиент.Модуль(167)}: ВыполнитьОбработкуОповещения(ОписаниеОповещения, Ложь);
    {Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(166)}: МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(

    по причине:
    Несоответствие типов (параметр номер '1')
```

Боюсь, что (2) абсолютно прав, про работу с массивом, но пока я не понял как это реализовать)))
---
Вы уверены, что в принципе правильно идете?
Проверка заполнения реквизитов проверяет заполнение каждой строки ТЧ.
Если вы удаляете проверяемый реквизит табличной части, то оно в принципе теперь не будет проверяться.

Если проверять нужно не всегда, а в зависимости от условия, то правильно сделать свою проверку заполнения - и в цикле проверять, вместо платформенной.
---
Это пожалуй самый интересный вариант...
Но я не понимаю как реквизиты ТЧ валятся в массив, я попробовал вывести массив в сообщение и в нем хранится только одно значение "Объект"...

Причем даже если я полностью закоментировал тело процедуры "ОбработкаПроверкиЗаполнения", проверка заполнения один фиг исполняется, такое ощущение что проверка выполняется где-то еще....
---
Модуль объекта процедура ОбработкаПроверкиЗаполнения
Модуль формы, событие ОбработкаПроверкиЗаполненияНаСервере.
Еще проверка может быть перед записью - как в форме, так и в модуле.

В массиве проверяемых реквизитов реквизит будет только если у него задано свойство Проверки заполнения.
---
Да, здесь вы абсолютно правы!
Нашел что у Формы стояла проверка заполнения, отключил и дает провести документ при незаполненном реквизите, только теперь проблема изменилась, нужно Вернуть реквизит в списко проверяемых, по условию, и что бы проверка выполнялась только в той строке где условия не выполнились..
---
Для этого надо в процедуре проверки заполнения реализовать собственную проверку в цикле.
Если проверка по условию должна быть для каждой строки тч.
---
А если отключить проверку заполнения в форме и сделать проверку в цикле в ПередЗаписью?

Для каждого Стр из Объект.Товары цикл
 Если Стр.ПроцентАвтоматическойСкидки <> 100 и НЕ ЗначениеЗаполнено(Стр.Сумма) тогда
  Отказ = Истина;
 КонецЕсли;
КонецЦикла;

Я сейчас пробую так, но по какой-то причине не работает отказ.... Условия все выполнились, даже дописывал "Сообщить("Условия выполнились")", сообщение получаю, но документ проводится....
Нельзя делать отказ в цикле?
---
Для документов процедура ОбработкаПроверкиЗаполненияНаСервере выполняется только при проведении.
Если документ просто записывается без проведения - не вызывается.
Отказ в цикле делать можно.
---
Вообщем, да, все верно на счет собственной построчной проверки ТЧ документа, именно так реализовал в процедуре "ПередЗаписьюНаСервере" и все заработало!
Только есть побочка, придется переписывать все проверки)))
---
в модуле объекта документа:
в процедуре
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

// в массив добавляете
 МассивНепроверяемыхРеквизитов = Новый Массив;
 МассивНепроверяемыхРеквизитов.Добавить("Товары.Сумма");
....

// затем включаем предопределенную процедуру

 ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);

КонецПроцедуры

// и радуемся результату
---
по идее можно сделать в модуле объекта ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
https://its.1c.ru/db/v8std/content/463/hdoc
---
спасибо, сделал как описано, все получилось!!!

```1c
    Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

    Если РольДоступна("Бухгалтер") тогда
    НепроверяемыеРеквизиты = Новый Массив();
    НепроверяемыеРеквизиты.Добавить("Артикул");
    НепроверяемыеРеквизиты.Добавить("Поставщик");
    НепроверяемыеРеквизиты.Добавить("Вес");
    УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты);
    КонецЕсли;

    КонецПроцедуры

    Процедура УдалитьНепроверяемыеРеквизитыИзМассива(МассивРеквизитов, МассивНепроверяемыхРеквизитов) Экспорт

    Для Каждого ЭлементМассива Из МассивНепроверяемыхРеквизитов Цикл

    // перед удалением реквизита из массива необходимо проверить, что он там есть
    // (не был удален ранее платформой или в коде).
    ПорядковыйНомер = МассивРеквизитов.Найти(ЭлементМассива);
    Если ПорядковыйНомер <> Неопределено Тогда
    МассивРеквизитов.Удалить(ПорядковыйНомер);
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры
```