Повторная загрузка не проведенного документа, при наличии проведенного.
Функционал Повторная загрузка не проведенного документа
Я хочу Что бы при повторной загрузке не проведенного документа, движений по нему не было.
Сценарий Перезапись документа без движений
Допустим В базе имеется документ с ГУИД "00000000-0000-0000-0000-000000000001"
И документ проведен
И документ имеет движения по регистру ОстаткиТоваров
И в табличных данных имеется документ с ГУИД "00000000-0000-0000-0000-000000000001"
И документ в табличных данных имеет значение Проведен = ЛОЖЬ
Когда Я через СериализаторMXL загружаю данные из табличного документа
Тогда у документа в базе не должно быть движений по регистру ОстаткиТоваров
1 В табличных данных для документа указан Режим или поле Режим пусто? Если указан Режим - "Проведение", то документ однозначно проводится с удалением движений. Если режим не указан, то документ только записывается и движения не перезаписываются.
2 Используется ли режим ОбменДанными.Загрузка?
3 возможно, у тебя в коде модуля документа при записи документа сразу удаляются движения?
- В табличных данных не указан Режим. Есть режим "ОтменаПроведения"? Думаю в этом режиме документ должен записываться если в базе Ссылка.Проведен = Истина и ЗагружаемыйОбъект.Проведен = Ложь.
- соответственно режим ОбменДанными не указан.
- В свойствах документа стоит "удаление движений автоматически". А как влияет удаление движение программно?
Думаю нужно изменить этот код:
На
РежимЗаписи = Неопределено;
Если ЭтоДокумент И Не ПротоОбъект.Режимы.Объект Тогда
РежимЗаписи = РежимЗаписиДокумента.Запись;
Если ПротоОбъект.Режимы.Проведение Тогда
РежимЗаписи = РежимЗаписиДокумента.Проведение;
//!!+ binex (12.05.2017 11:40:41)
ИначеЕсли Объект.Ссылка.Проведен Тогда
РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
//!!- binex
КонецЕсли;
КонецЕсли;
Результат = ЗаписатьОбъектПриНеобходимости(Объект, ПротоОбъект, ПредставлениеМенеджера, Истина, РежимЗаписи);
Не согласен. Указанный код просто записывает документ, если не указан режим проведения. Запись документа не равно отмене проведения документа.
при обычной записи документа в режиме обменДанными.Загрузка не происходит сброса движений. посмотри свой код.
или добавь ОбменДанными.Загрузка
Как не сбрасывать, я понимаю. Как сбрасывать?
ИМХО нужно добавить отдельный режим ОтменаПроведения. В итоге для документов будет 2 режима: Проведение и ОтменаПроведения
Дак а какой смысл в этом режиме, когда нужно отменять проведение или нет, определяется только при загрузке данных. В это и суть правки.
Потому что нужно явно указывать, чего хочешь достичь - например, загрузить непроведенный документ с отменой проведения. А не использовать неявное поведение - загрузка с Проведен = Ложь отменяет проведение.
у меня в некоторых сценариях как раз не нужно удалять движения, а только загрузить документ