Перепроведение ПоступлениеБезналичныхДенежныхСредств в КА2 при обмене

1. Alfn 60 27.08.20 09:34 Сейчас в теме
Всем Д.Д.
Столкнулись с таким поведением системы. (КА 2.4.12.81)
Документы поступление ДС формируются в БП3 и по обмену приезжают в КА2.
В КА2 включены онлайн-взаиморасчеты. При появлении документа в КА2 движения по нему записываются корректно и тут вопросов нет.

Проблемы возникают при изменении этого документа в БП и повторном обмене. Если в БП изменяется объект расчетов, то при получении документа в КА2 формируются новые движения, при этом старые - не удаляются.
Происходит это, по всей видимости из-за выключенного реквизита "Удаление движений" у ПоступлениеБезналичныхДенежныхСредств в КА2.

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

Коллеги! Что посоветуете?
Лепить костыль в ПередЗаписью()... проверять модифицированность и как-то распроводить?

Заранее благодарю за конструктивные предложения.
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Найденные решения
9. Alfn 60 28.08.20 12:41 Сейчас в теме +0.5 $m
(8) проверили... работает вот такая конструкция:
&Перед("ПередЗаписью")
Процедура ОБМ_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

	Если ОбменДанными.Загрузка
	   И Не ЭтоНовый() 
	   И ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов")
	   И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Проведен") 
	Тогда
	
		ОбменДанными.Загрузка = Ложь;
		Записать(РежимЗаписиДокумента.ОтменаПроведения);
		ОбменДанными.Загрузка = Истина;
		
	КонецЕсли;

КонецПроцедуры
Показать


Единственный минус - в историю пишется две версии объекта... ну можно и пренебречь.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. namazi74 4 27.08.20 09:52 Сейчас в теме
в УТ 11 похожее поведение наблюдал. Создавались и не удалялись документы Регистрация расчетов. В конфигураторе также стоит Не удалять автоматически. 1С советуют разные механизмы решения проблем. Есть даже экзотический - перевести в Офлайн расчеты, потом обратно вернуть в Онлайн (пока не допилят функционал). Тоже самое было со Списанием ДС
3. NorraSaltolinen 27.08.20 10:24 Сейчас в теме
Вероятно очистка движений происходит в какой-то подписке, где есть проверка на ОбменДанными.Загрузка
Что если добавить очистку движений при загрузке в алгоритмах обмена?
4. ab_initio 95 27.08.20 11:03 Сейчас в теме
Обратите внимание, что при "онлайн" расчетах отчет о движениях документа по обычным регулярным документам (в т.ч. и банковским) как бы, показывает движения по регистрам вида

РасчетыСКлиентамиПланОплат,
РасчетыСКлиентамиПланОтгрузок,
РасчетыСКлиентамиПоСрокам,

РасчетыСПоставщикамиПланОплат,
РасчетыСПоставщикамиПланПоставок,
РасчетыСПоставщикамиПоСрокам,

но на самом деле это движения другого специального служебного документа вида "Регистратор расчетов".

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

Возможно, авторы не предполагали, что при наличии качественного бух.учета в КА-2, кто-то будет налаживать обмен с БП. Однако ситуации бывают разные... Мне трудно предположить, но, возможно где-то это и оправдано.
5. Alfn 60 27.08.20 16:14 Сейчас в теме
(4) ну про качество бухучета в КА спорить не буду... это вопрос философский. А как быть пользователям УТ11? Интересно, здесь что авторы предполагали?

пока придумалось только вот такое (в расширении):
&Перед("ПередЗаписью")
Процедура ОБМ_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	
	РасчетыОнлайн = ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов");

	Если ОбменДанными.Загрузка 
	   И РасчетыОнлайн
	   И ЭтотОбъект.Проведен 
	   И РежимЗаписи = РежимЗаписиДокумента.Проведение
	Тогда
	
		ЭтотОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения, РежимПроведения);
		ЭтотОбъект.Записать(РежимЗаписи, РежимПроведения);
		
	КонецЕсли;
	
КонецПроцедуры
Показать


Покритикуйте?
6. ab_initio 95 27.08.20 19:28 Сейчас в теме
(5) Вы проверили? Проведение идет? Как будто бы, не должно..
7. Alfn 60 27.08.20 19:53 Сейчас в теме
(6) ещё не проверял... почему не должно?
8. ab_initio 95 28.08.20 05:04 Сейчас в теме +0.5 $m
Если я не ошибаюсь, то в режиме "ОбменДанными.Загрузка=Истина" проведение и отмена проведения не идут, идет только запись.
Но не уверен. Просто где-то уже на это натыкался в КА-2.
Borisych; Alfn; +2 Ответить
9. Alfn 60 28.08.20 12:41 Сейчас в теме +0.5 $m
(8) проверили... работает вот такая конструкция:
&Перед("ПередЗаписью")
Процедура ОБМ_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

	Если ОбменДанными.Загрузка
	   И Не ЭтоНовый() 
	   И ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов")
	   И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Проведен") 
	Тогда
	
		ОбменДанными.Загрузка = Ложь;
		Записать(РежимЗаписиДокумента.ОтменаПроведения);
		ОбменДанными.Загрузка = Истина;
		
	КонецЕсли;

КонецПроцедуры
Показать


Единственный минус - в историю пишется две версии объекта... ну можно и пренебречь.
10. ab_initio 95 28.08.20 12:45 Сейчас в теме
Если уж все равно так и этак пришлось код писать, то, возможно, оптимальнее было сделать подчистку движений регистров без проведения. Тогда и версий лишних не будет и математика никакая не выполняется. Т.е. работать быстрее будет.
Как думаете?
11. Alfn 60 28.08.20 12:51 Сейчас в теме
(10) с точки зрения затрат наверное правильнее чистить движения, но кто знает - какие в будущем изменения будут в конфигурации? А этот вариант гарантированно вычистит все по объекту. Такая вот логика.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот