|
Можно ли создать ДанныеФормыСтруктура вручную, не добавляя реквизит в форму?
| ☑ |
0
DTX 4th
23.05.17
✎
17:50
|
Типовое заполнение счетов в документах реализации работает с ДанныеФормыСтруктура, а мне из внешней обработки надо создать реализацию и заполнить там счета учета. Приходится добавлять реквизит "РТУ" типа ДокументОбъект.РеализацияТоваровУслуг и делать так:
Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
ЗаполнениеДокументов.Заполнить(Док);
Док.Контрагент = Стр.Контрагент;
Док.ДоговорКонтрагента = Стр.Договор;
//Док.ЗаполнитьСчетаУчетаРасчетов();
ЗначениеВДанныеФормы(Док, РТУ);
ПараметрыЗаполнения = РеализацияТоваровУслугФормыКлиентСервер.НачатьЗаполнениеСчетовУчета("ДоговорКонтрагента", РТУ);
СчетаУчетаВДокументах.ЗаполнитьОбъектПриИзменении(ПараметрыЗаполнения);
Док = ДанныеФормыВЗначение(РТУ, Тип("ДокументОбъект.РеализацияТоваровУслуг"));
Можно ли создать переменную типа ДанныеФормыСтруктура со структурой нужного мне документа/объекта?
|
|
1
Вафель
23.05.17
✎
17:53
|
а что ДокументОбъект не подходит?
Или просто структура?
|
|
2
DTX 4th
23.05.17
✎
17:55
|
(1) Первым делом попробовал передать просто ДокументОбъект, но 1С упала в типовом модуле вот тут:
Если Объект.Свойство(ИмяРеквизитаДетально.Реквизит) Тогда
...
Т.е. у ДанныеФормыСтруктура есть метод Свойство(), которое они там используют.
|
|
3
Вафель
23.05.17
✎
17:56
|
значит просто структура
|
|
4
DTX 4th
23.05.17
✎
17:58
|
(3) Что с ней? Не пойму.
Так чтоль?
Структ = Новый Структура;
ЗначениеВДанныеФормы(Док, Структ);
Несоответствие типов (параметр номер '2')
|
|
5
Ц_У
23.05.17
✎
17:59
|
Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
Док.Заполнить(МояСтруктура);
идешь в модуль объекта в процедуру обработки заполнения
и там заполняешь
|
|
6
Вафель
23.05.17
✎
18:02
|
Док конечно просто так в структуру не перенесешь, только по реквизитно
|
|
7
DTX 4th
23.05.17
✎
18:03
|
(5) Мне нужно заполнить счета учета так, как делает это 1С. Делает она это вот так:
ПараметрыЗаполнения = РеализацияТоваровУслугФормыКлиентСервер.НачатьЗаполнениеСчетовУчета("ДоговорКонтрагента", ЭтаФорма.Объект);
СчетаУчетаВДокументах.ЗаполнитьОбъектПриИзменении(ПараметрыЗаполнения);
Вопрос в другом. Нужно что-то вроде
ДанныеФормы = Новый ДанныйФормыСтруктура(Тип("ДокументОбъект.РТУ"));
|
|
8
Otark
23.05.17
✎
18:35
|
Если тебе надо создавать накладную, так создавай ее. Получай форму созданного документа и бери оттуда данные нужного типа.
|
|
9
DTX 4th
23.05.17
✎
19:03
|
(8) На сервере формы не доступны.
|
|
10
Имитация работы
23.05.17
✎
19:15
|
(7) Нельзя, нельзя их создать, смирись. Тебе нужен объект, который по свойствам и методам совпадает с ожидаемым.
Засучивай рукава и делай структуру с массивам или что на свой вкус.
|
|
11
sapphire
23.05.17
✎
20:02
|
(10) можно
|
|
12
sapphire
23.05.17
✎
20:04
|
Просто в форме обработки создать нужную структуру реквизитов
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший