Имя: Пароль:
1C
 
Можно ли создать ДанныеФормыСтруктура вручную, не добавляя реквизит в форму?
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
Просто в форме обработки создать нужную структуру реквизитов