|
Как в БП программно изменить договор в "Поступлении на расчетный счет" и "Списании с |
☑ |
0
lukinskiy
20.02.21
✎
20:02
|
Как в БП 3.0 программно изменить обработкой договор в "Поступлении на расчетный счет" и "Списании с расчетного счета"?
Для этого, как я понимаю, надо как-то правильно заполнить табличную часть РасшифровкаПлатежа.
Не подскажете, как взять это заполнение из модуля формы этих документов? (в восьмерке не силен)
Открываю процедуру РасшифровкаПлатежаДоговорКонтрагентаПриИзменении(), там вижу:
ПоступлениеНаРасчетныйСчетФормыКлиент.ИнициализироватьСвойстваПлатежа(ЭтотОбъект);
Если РасшифровкаПлатежаДоговорКонтрагента = СвойстваПлатежа.ДоговорКонтрагента Тогда
Возврат;
КонецЕсли;
ДоговорКонтрагентаПриИзмененииНаСервере();
ПоступлениеНаРасчетныйСчетФормыКлиент.РасшифровкаПлатежаДоговорКонтрагентаПриИзменении(ЭтотОбъект, Элемент);
ЭтотОбъект, как я понимаю - это открытая форма. В моей обработке есть объект нужного документа, полученного запросом.
ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
Но это не то. Как тут правильно действовать?
|
|
1
lukinskiy
20.02.21
✎
20:03
|
Да, Элемент из строки "ПоступлениеНаРасчетныйСчетФормыКлиент.РасшифровкаПлатежаДоговорКонтрагентаПриИзменении(ЭтотОбъект, Элемент)" потом не используется, так что вопрос только про ЭтотОбъект в форме документа. Как его получить в обработке?
|
|
2
Бишбармак
20.02.21
✎
20:05
|
Если делать НЕ регулярно, то встроенной обработкой "Групповое изменение реквизитов"
|
|
3
lukinskiy
20.02.21
✎
20:06
|
Не, мне нужно из моей обработки это сделать, там хитрое изменение договоров.
|
|
4
ГдеСобака Зарыта
20.02.21
✎
20:21
|
ДокОбъект.РасшифровкаПлатежа[0].ДоговорКонтрагента = ТвойДоговорСсылка;
|
|
5
lukinskiy
20.02.21
✎
20:25
|
(4) Нет, этого мало, потом ошибки лезут.
|
|
6
ГдеСобака Зарыта
20.02.21
✎
20:27
|
(5) Этого достачно, я считаю. Какие ошибки?
|
|
7
lukinskiy
20.02.21
✎
20:39
|
Вот такая ошибка:
Преобразование значения к типу Булево не может быть выполнено
{ВнешняяОбработка.ИсправлениеДоговоров.Форма.Форма.Форма(720)}: ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
{ВнешняяОбработка.ИсправлениеДоговоров.Форма.Форма.Форма(29)}: ПолучитьИСравнитьДанныеНаСервере();
по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Преобразование значения к типу Булево не может быть выполнено
{ОбщийМодуль.УчетВзаиморасчетов.Модуль(8722)}: Если Параметры.РасчетыВУсловныхЕдиницах Тогда
{ОбщийМодуль.УчетВзаиморасчетов.Модуль(5094)}: СчетаРасчетов = СчетаРасчетовПоОтгрузке(СтрокаПлатежа);
{ОбщийМодуль.УчетВзаиморасчетов.Модуль(1804)}: ОстаткиЗадолженности = ПолучитьОстаткиЗадолженности(Параметры.РасшифровкаПлатежа, Реквизиты, Отказ);
{Документ.ПоступлениеНаРасчетныйСчет.МодульОбъекта(244)}: ТаблицаВзаиморасчетов = УчетВзаиморасчетов.ПодготовитьТаблицуВзаиморасчетовПогашениеЗадолженности(
{ВнешняяОбработка.ИсправлениеДоговоров.Форма.Форма.Форма(720)}: ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Если не менять договор, а просто перепровести документ (изменив, допустим, комментарий), то все ок.
|
|
8
lukinskiy
20.02.21
✎
20:44
|
Если же выбрать нужный договор и провести документ руками, то все ок.
|
|
9
ГдеСобака Зарыта
20.02.21
✎
20:58
|
Создай новый документ копированием, замени на свой договор, проведи. В консоли запросов выбери все поля этих двух документов, потом все поля табличных частей. Сравни и найди разницу
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший