Вход | Регистрация

1С:Предприятие ::

Метки: 

ОплатаПлатежнойКартой создать программно

Я
   1cLuser
 
01.02.18 - 16:13
1С:Предприятие 8.3 (8.3.11.2867)
Конфигурация (3.0.57.10)

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

Такое впечатление что при открытии формы данные в табличной части формируются и затирают те что записаны программно.

Как это исправить?


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

&НаКлиенте
Функция СформироватьОплатаКартой( ДокументОснование)
    
    ФормаОплаты = ПолучитьФорму( "Документ.ОплатаПлатежнойКартой.Форма.ФормаДокументаОбщая");
    ДанныеФормы = ФормаОплаты.Объект;
    СформироватьОплатаКартойНаСервере( ДанныеФормы);
    КопироватьДанныеФормы( ДанныеФормы, ФормаОплаты.Объект);
    
    ФормаОплаты.Открыть();
               
КонецФункции
 
 
   Otark
 
1 - 01.02.18 - 16:15
(0)А почему впечатление? Проанализировать табличную часть, до, после и во время открытия формы не получается? Заполняй табличную часть после открытия документа.
   hhhh
 
2 - 01.02.18 - 16:16
(0) так вы только

Строка.СчетУчетаРасчетовСКонтрагентом

только счет пишете в строку тч. А остальное? НЕ хотите писать?
   1cLuser
 
3 - 01.02.18 - 16:22
(2) Я пишу всё что нужно, просто код сократил для форума.
Большинство данных заполняется нормально, а вот счета в табличной части ни в какую. Не могу понять в чем дело.

Если данные заполнять после открытия формы, то как она их сможет отобразить?
   МимохожийОднако
 
4 - 01.02.18 - 16:27
(0) Вот эта строчка зачем?
ДокументОбъект.РасшифровкаПлатежа.Очистить();
   dezss
 
5 - 01.02.18 - 16:27
(3) в отладке в Процедура СформироватьОплатаКартойНаСервере( ДанныеФормы) 
 глянь типы значений 
Строка.СчетУчетаРасчетовСКонтрагентом
ЭтотОбъект.СчетУчетаРасчетовСКонтрагентом
может они не совпадают, вот и косяк...
   1cLuser
 
6 - 01.02.18 - 16:32
(4) Эта строчка обычно очищает табличную часть.
Я сначала думал что данные не того типа поэтому не заполняются.
Решил очистить табличную часть перед заполнением и таким образом понял что табличная часть заполняется при открытии формы. Иначе она просто была бы пустой. Но она не пустая. Данные в ней ест, но счетов учета нет.
   1cLuser
 
7 - 01.02.18 - 16:33
(5) Проверял. Все нормально с данными.
   hhhh
 
8 - 01.02.18 - 16:36
(6) там наверно при записи документа запускается заполнение счетов учета. Поэтому вам наверно смириться надо. Как пользователи настроили заполнение счетов, так пусть и заполняется.
   1cLuser
 
9 - 01.02.18 - 16:38
(8) Не запускается, без этих данных провести документ невозможно. А записывать его без проведения нет смысла.
   hhhh
 
10 - 01.02.18 - 16:46
(9) вы просто по-нормальному создайте документ и запишите. Без всяких форм оплаты и форм переплаты, нахрена всякие фопрмы сюда подмешивать?
 
 Рекламное место пустует
   hhhh
 
11 - 01.02.18 - 16:48
(9) где  васс ДокументОбъект.Записать() ?? Чего-то не вижу. Вы вообще его записываете?
   1cLuser
 
12 - 01.02.18 - 16:54
(10) Задача такая.
Обработка должна формиовать несколько документов на базе своих данных, при этом пользователь должен увидеть сформированные документы перед проведением.
   1cLuser
 
13 - 01.02.18 - 18:39
Порылся в коде формы документа.
Есть там такая строчка в функции которая вызывается при изменении некоторых параметров формы.
Объект.РасшифровкаПлатежа.Очистить();

То есть записать данные в табличную часть объекта перед формированием формы документа невозможно, они стираются при создании формы.

Как это обойти не редактируя объект конфигурации?
Есть идеи?
   Chameleon1980
 
14 - 01.02.18 - 18:48
что-то в духе ОткрытьФорму нового документа
и заполнить
не?
   Chameleon1980
 
15 - 01.02.18 - 18:48
а не через СоздатьДокумент(
   1cLuser
 
16 - 01.02.18 - 18:54
(14) А можно поподробнее.
   1cLuser
 
17 - 01.02.18 - 19:58
Придумал решение

После открытия формы нужно из данных формы извлечь табличную часть и установить необходимые значения.
Это работает, но это жесть товарищи.

Форма.Открыть();
Для каждого Значение из Форма.Объект.РасшифровкаПлатежа цикл
Значение.СчетУчетаРасчетовСКонтрагентом = ЭтотОбъект.СчетУчетаРасчетовСКонтрагентом;
Значение.СчетУчетаРасчетовПоАвансам = ЭтотОбъект.СчетУчетаРасчетовПоАвансам;
КонецЦикла;


Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует