Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как в БП программно изменить договор в "Поступлении на расчетный счет" и "Списании с

Как в БП программно изменить договор в "Поступлении на расчетный счет" и "Списании с
Я
   lukinskiy
 
20.02.21 - 20:02
Как в БП 3.0 программно изменить обработкой договор в "Поступлении на расчетный счет" и "Списании с расчетного счета"?
Для этого, как я понимаю, надо как-то правильно заполнить табличную часть РасшифровкаПлатежа.
Не подскажете, как взять это заполнение из модуля формы этих документов? (в восьмерке не силен)
Открываю процедуру РасшифровкаПлатежаДоговорКонтрагентаПриИзменении(), там вижу:

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

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

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

Но это не то. Как тут правильно действовать?
   lukinskiy
 
1 - 20.02.21 - 20:03
Да, Элемент из строки "ПоступлениеНаРасчетныйСчетФормыКлиент.РасшифровкаПлатежаДоговорКонтрагентаПриИзменении(ЭтотОбъект, Элемент)" потом не используется, так что вопрос только про ЭтотОбъект в форме документа. Как его получить в обработке?
   Бишбармак
 
2 - 20.02.21 - 20:05
Если делать НЕ регулярно, то встроенной обработкой "Групповое изменение реквизитов"
   lukinskiy
 
3 - 20.02.21 - 20:06
Не, мне нужно из моей обработки это сделать, там хитрое изменение договоров.
   ГдеСобакаЗарыта
 
4 - 20.02.21 - 20:21
ДокОбъект.РасшифровкаПлатежа[0].ДоговорКонтрагента = ТвойДоговорСсылка;
   lukinskiy
 
5 - 20.02.21 - 20:25
(4) Нет, этого мало, потом ошибки лезут.
   ГдеСобакаЗарыта
 
6 - 20.02.21 - 20:27
(5) Этого достачно, я считаю. Какие ошибки?
   lukinskiy
 
7 - 20.02.21 - 20:39
Вот такая ошибка:

Преобразование значения к типу Булево не может быть выполнено
{ВнешняяОбработка.ИсправлениеДоговоров.Форма.Форма.Форма(720)}:    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
{ВнешняяОбработка.ИсправлениеДоговоров.Форма.Форма.Форма(29)}:    ПолучитьИСравнитьДанныеНаСервере();

по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Преобразование значения к типу Булево не может быть выполнено
{ОбщийМодуль.УчетВзаиморасчетов.Модуль(8722)}:    Если Параметры.РасчетыВУсловныхЕдиницах Тогда
{ОбщийМодуль.УчетВзаиморасчетов.Модуль(5094)}:        СчетаРасчетов = СчетаРасчетовПоОтгрузке(СтрокаПлатежа);
{ОбщийМодуль.УчетВзаиморасчетов.Модуль(1804)}:    ОстаткиЗадолженности = ПолучитьОстаткиЗадолженности(Параметры.РасшифровкаПлатежа, Реквизиты, Отказ);
{Документ.ПоступлениеНаРасчетныйСчет.МодульОбъекта(244)}:    ТаблицаВзаиморасчетов = УчетВзаиморасчетов.ПодготовитьТаблицуВзаиморасчетовПогашениеЗадолженности(
{ВнешняяОбработка.ИсправлениеДоговоров.Форма.Форма.Форма(720)}:    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);

Если не менять договор, а просто перепровести документ (изменив, допустим, комментарий), то все ок.
   lukinskiy
 
8 - 20.02.21 - 20:44
Если же выбрать нужный договор и провести документ руками, то все ок.
   ГдеСобакаЗарыта
 
9 - 20.02.21 - 20:58
Создай новый документ копированием, замени на свой договор, проведи. В консоли запросов выбери все поля этих двух документов, потом все поля табличных частей. Сравни и найди разницу

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.