Есть такая процедура.

```1c
    &НаКлиенте
    Процедура ЗаполнитьОбеспечениеПрок(Команда,СсылкаНаОбъектПрок) Экспорт

    ПолучитьОбъектПрок(СсылкаНаОбъектПрок);

    ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
    ВыделенныеСтроки.Очистить();

    Для каждого СтрокаТаблицы Из Объект.Товары Цикл
    ВыделенныеСтроки.Добавить(СтрокаТаблицы.ПолучитьИдентификатор());
    КонецЦикла;

    ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения();
    ПараметрыПроверки.Поля.Удалить("Подразделение");

    Если ОбеспечениеКлиент.ПроверитьЗаполнение(
    Объект, Объект.Товары, Элементы.Товары.ВыделенныеСтроки, ПараметрыПроверки, Неопределено, Объект.Склад) Тогда

    ПараметрыФормы = ОбеспечениеКлиентСервер.ПараметрыФормыИсполнениеЗаказа(ТипЗнч(Объект.Ссылка),
    Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
    ф=ОткрытьФорму("Перечисление.ВариантыОбеспечения.Форма.ИсполнениеЗаказа", ПараметрыФормы,
    ЭтаФорма, УникальныйИдентификатор);
    ф.Заполнить(Команда);
    КонецЕсли;

    ЗаписатьНаСервере(Объект);

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

    &НаСервере
    Процедура ЗаписатьНаСервере(Знач Объект)

    Набор = ДанныеФормыВЗначение(Объект,Тип("ДокументОбъект.ЗаказКлиента"));

    Для каждого Строка Из Набор.Товары Цикл
    Если Строка.Отменено = Ложь Тогда
    Строка.Склад = Набор.Склад;
    Иначе
    Строка.Склад = Неопределено;
    КонецЕсли;
    КонецЦикла;

    Набор.Записать(РежимЗаписиДокумента.Проведение);
    КонецПроцедуры
```

Команда вызывается программно, перезаполняет резервы и проводит документ. Несколько документов проводится а потом ошибка:

```1c
    Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(1716)}: Ошибка при вызове метода контекста (Записать)
    Набор.Записать(РежимЗаписиДокумента.Проведение);
    по причине:
    Не удалось провести "Заказ клиента ПРФП-002187 от 17.12.2018 15:11:56"!

    по причине:
    Не удалось провести "Заказ клиента ПРФП-002187 от 17.12.2018 15:11:56"!
```

Как можно отловить эту ошибку? Документы между собой вроде бы идентичные но некоторые проводятся а некоторые нет.
---
Как можно отловить эту ошибку? Документы между собой вроде бы идентичные но некоторые проводятся а некоторые нет. Идти в оладчике по процедурам модуля объекта и модуля формы, в какой то проверке при записи или проведении проскакивает Отказ = истина, в результате Запись оканчивается неудачей
---
Для каждого Строка Из Набор.Товары Цикл
            Если Строка.Отменено = Ложь Тогда
            Строка.Склад = Набор.Склад;
        Иначе
            Строка.Склад = Неопределено;
            КонецЕсли;
            КонецЦикла;

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

(1) Набор.Записать(РежимЗаписиДокумента.Проведение); может проще сначала вернуть в форму ЗначениеВДанныеФормы(<Значение>, <Объект>)? потому у вас и два раза проведение, сначала в процедуре записать на сервере, а потом и в самом документе... ;) или нет?

И не понятно зачем в ЗаписатьНаСервере вы передаете объект по значению а не по ссылке. ;)
---
Если передавать просто объект то ошибка

```1c
    Нельзя изменять поле, содержащее объект данных формы
```
---
Как можно отловить эту ошибку? Документы между собой вроде бы идентичные но некоторые проводятся а некоторые нет. Идти в оладчике по процедурам модуля объекта и модуля формы, в какой то проверке при записи или проведении проскакивает Отказ = истина, в результате Запись оканчивается неудачей
---
м.б. Отладчиком ?
---
Смотрел отладчиком заказы которые записываются и нет, не нашел никаких отличий.
---
в коде странное открытие некой формы и тут же запись объекта.

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

логически верно выполнять ассинхронное открытие формы и в обработчике завершения делать запись.

в общем код на 3-, я бы вызвал в школу родителей и заклеймил бы их методы обучения и воспитания сознательного человека.
---
У вас оценка за код положительная?))
Удивительно.
---
Из внешней обработки получаю форму документа, передаю в нее ссылку. По ссылке получаю объект и перезаполняю его ТЧ Товары. Далее записываю объект. Пока не вижу ничего странного, можно подробнее что вы имели ввиду? Все верно, я новичок.
---
простой вопросы:
зачем вам форма объекта, если вы работаете с объектом программно?
зачем вам открытие формы ИсполнениеЗаказа, которое никак не влияет на объект записи?
---
прогр
1. В данном случае мне проще задействовать уже готовый механизм конфигурации чем переписывать его.
2. Выполнение команды на этой форме перезаполняет обеспечение в выделенных строках.
---
повторюсь

логически верно выполнять ассинхронное открытие формы и в обработчике завершения делать запись.

еще более логически верно не использовать формы вообще если обработка объекта идет программно и никакой гуманоид не принимает в этом участия.
---
В попытке записивайте документ а в исключение ловите описание ошибки.
Например:
Попытка
Набор.Записать(РежимЗаписиДокумента.Проведение);
исключение
мТекстОшибки = ОписаниеОшибки();
конецпопытки;
---
Советовать начинающему попытку/исключение- это как советовать выпить бурбон когда голова болит. Иногда помогает, конеш

Но, сначала лечим голову, а потом можно и хряпнуть.
---
В мТекстОшибки та же самая ошибка