8.2.15.294
Режим управляемого приложения.

Есть некий документ. Должен проводиться в 5 регистров.
При проведении из формы списка - работает все как положено. А вот когда проводится из формы документа, то проводится не во все регистры. По отладчику удалось понять "как", но не удалось понять "почему".
В "спорном" регистре в модуле набора записей были выставлены события ПередЗаписью и ПриЗаписи. В итоге при проведении из формы списка сначала очищаются движения, затем записываются новые, а при проведении из формы документа сначала очищаются движения, затем записываются новые, а после снова очищаются. Т.е. в первом случае в ПередЗаписью и ПриЗаписи попадаем по два раза, а во втором - по три раза.

Причем в обоих случаях первичная очистка движений вызывается из модуля объекта документа из процедуры ОбработкаПроведения, запись новых движений из этой же процедуры, а вот при проведении из формы документа после выхода из процедуры ОбработкаПроведения, пройдясь по паре подписок снова очищаются движения, причем не из одной подписки явно очистка движений или запись в этот регистр набора записей не вызывается.
Если создать новую форму или вообще удалить форму документа (в этом случае она создается автоматически), то из формы документа все проводится как и нужно как и из формы списка. Точно также правильно отрабатывает и если провести в режиме обычного приложения. Свойства "глючной" формы сравнивал со свойствами вновь созданной (пустой) - одинаковы. Как такое может быть?

Куда смотреть? Может кто с подобным сталкивался?
---
Отбой
Проблема решена.

Всем спасибо за потраченное время на помощь!
Вознаграждение я думаю будет справедливо выплатить тому, кто навел на правильный ответ, а именно Oleg Space (17). Если по поводу вознаграждения кто-то иного мнения, я готов обсудить в ближайший час. После чего переведу $m.

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

Сейчас еще раз внимательно сравню реквизиты и настройки правильно и неправильно работающих форм.
---
Ну тогда гадаем дальше:
Конфигурация "самописная" или доработка типовой ?
Если доработка то какой конфигурации ?
Какие события есть у формы интересует ПередЗаписью() ПриЗаписи() ПослеЗапси() ПриЗакрытии() ОбработкаЗаписиНового() как на сервере так и на клиенте неплохо бы их код ?
Что указано в конфигураторе в свойствах документа в разделе движения параметр "Удаление движений" ?
При повторном проведении из формы ошибка повторяется ?
При проведении нового документа из формы ошибка есть ?
---
Отбой
Проблема решена.

Всем спасибо за потраченное время на помощь!
Вознаграждение я думаю будет справедливо выплатить тому, кто навел на правильный ответ, а именно Oleg Space (17). Если по поводу вознаграждения кто-то иного мнения, я готов обсудить в ближайший час. После чего переведу $m.

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

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

(4) похоже на стандартную запись набора записей.. тогда надо отладчиком смотреть каким образом заполняется (или скорее почему не заполняется) набор записей этого регистра при этой итерации в обработчике проведения
Не смог отладчиком (да и никак иначе) найти место вызова третьей итерации :(
---
Я бы поступил так
1)Попробуй, в форме документа закомментировать все собития связанные с записью (перед,при,после). И посмотри результат.
2)Если ошибка устранилась, раскомментируй процедуру ПередЗаписью, и снова проверь, и так далее.
Согласен что долго, и муторно, но зато придешь к куску кода, который инициализирует очистку регистра
+ по наименованию регистра, где повторно очищаются данные, глобальным поиском находишь в коде где он упоминается и ставишь везде точку останова.
---
Сразу же, еще до вопроса на форуме, в модуле формы был закомментирован весь код - поведение не изменилось.
(7) Проверялись все данные которые передаются в процедуры проведения и т.п. при обоих вариантах проведения - абсолютно идентичны.
(8) Эти события не используются.
---
еще раз - данные, которые передаются в процедуры проведения, не при чем. Проверяй доп свойства во всем коде формы и подписки на события.
---
Код формы не при чем же, ведь даже при все закомментированном коде формы - не проводится как нужно. Или я чего-то не понимаю?
Свойства формы которая неверно работает и пустой новой формы - идентичны.
Подписки на события вещаются же на объект, а не на форму, поэтому одинаковы для объекта.
(11) Не понял фразы
---
красненькая точка - точка останова.
красным выделена команда стека вызовов.

воспользовавшись не замысловатым способом вы получите список процедур и функций как вы попали в третью не нужную очистку