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