Имя: Пароль:
1C
 
Как программно назначить тип реквизиту?
0 Help1c8
 
17.09.10
16:02
Есть документ налоговая накладная. В шапке имеется реквизит Сделка, который имеет множество типов -

ДокументСсылка.ПлатежныйОрдерСписаниеДенежныхСредств, ДокументСсылка.ПередачаОС, ДокументСсылка.АвансовыйОтчет, ДокументСсылка.ГТДИмпорт, ДокументСсылка.ПлатежноеПоручениеИсходящее, ДокументСсылка.ДокументРасчетовСКонтрагентом, ДокументСсылка.ПлатежныйОрдерПоступлениеДенежныхСредств, ДокументСсылка.РасходныйКассовыйОрдер, ДокументСсылка.АктОбОказанииПроизводственныхУслуг, ДокументСсылка.ПоступлениеНМА, ДокументСсылка.КорректировкаДолга, ДокументСсылка.ПоступлениеТоваровУслуг, ДокументСсылка.ВозвратТоваровОтПокупателя, ДокументСсылка.СчетНаОплатуПокупателю, ДокументСсылка.ПередачаТоваров, ДокументСсылка.ПлатежноеПоручениеВходящее, ДокументСсылка.ОтчетКомиссионераОПродажах, ДокументСсылка.ОтчетКомитентуОПродажах, ДокументСсылка.ПередачаНМА, ДокументСсылка.ПриходныйКассовыйОрдер, ДокументСсылка.ПоступлениеИзПереработки, ДокументСсылка.РеализацияУслугПоПереработке, ДокументСсылка.РеализацияТоваровУслуг, ДокументСсылка.ВозвратТоваровПоставщику, ДокументСсылка.СчетНаОплатуПоставщика, ДокументСсылка.ПоступлениеДопРасходов

Создаю программно документ

НалНакСозд=Документы.НалоговаяНакладная.СоздатьДокумент();
НалНакСозд.Дата =  ПеремДат;
НалНакСозд.Организация = ОргИмя;
НалНакСозд.Контрагент = СтрТабВыб.ИмяКонтр;
НалНакСозд.Комментарий = "Документ создан автоматически";
НалНакСозд.Сделка = ДокВыб;
.....
НалНакСозд.Записать();

После чего документ нормально создается, но с не заполненным реквизитом Сделка.
Смотрю отладчиком как до ходит до НалНакСозд.Сделка вычисляю выражение смотрю на тип определился как неопределенный. Думаю поэтому и не присвоилась переменная  ДокВыб реквизиту Сделка.

Переменная ДокВыб имеет тип «ДокументСсылка.ДокументРасчетовСКонтрагентом»

Знаю что надо как то программно присвоить тип для реквизита Сделки «ДокументСсылка.ДокументРасчетовСКонтрагентом», но не пойму как. Если кто то знает, подскажите, пожалуйста. Заранее спасибо.
1 le_
 
17.09.10
16:03
Сделка = Тип("ДокументСсылка.ЗаказПокупателя");
2 le_
 
17.09.10
16:04
или

Сделка = Тип("ДокументСсылка.ДокументРасчетовСКонтрагентом");
3 butterbean
 
17.09.10
16:04
не надо ничего устанавливать, смотри в отладчике что в ДокВыб и что в НалНакСозд.Сделка после присвоения
4 le_
 
17.09.10
16:08
+ (1), (2) Но проблема в том, что реквизит сделка не может принимать значения типа "ДокументРасчетовСКонтрагентом".

Там вполне определенный составной тип данных, который можно посмотреть в конфигураторе.
5 Help1c8
 
17.09.10
16:16
Смотрю в отладчике:

Свойство = ДокВыб
Значение = Документ расчетов с контрагентом (ручной учет) 00000002767 от 29.08.2010 23:58:20

Тип = ДокументВыборка.ДокументРасчетовСКонтрагентом

После присвоения смотрю сделка
Свойство = НалНакСозд.Сделка
Значение = пусто
тип =    Неопределено

Смотрю в конфигураторе реквизит Сделка там есть тип ДокументСсылка.ДокументРасчетовСКонтрагентом. Все типы писал в первом посте для реквизита Сделка.
6 le_
 
17.09.10
16:18
(5)

Эм, ну попробуй так: НалНакСозд.Сделка = ДокВыб.Ссылка;
7 Help1c8
 
17.09.10
16:18
Попробовал  

НалНакСозд.Сделка = Тип("ДокументСсылка.ДокументРасчетовСКонтрагентом");

ничего не дало.
8 Megas
 
17.09.10
16:20
а
НалНакСозд.Сделка = Документы.ДокументРасчетовСКонтрагентом.ПустаяСсылка();
9 butterbean
 
17.09.10
16:20
(5) ДокументВыборка а не ДокументСсылка
10 le_
 
17.09.10
16:20
Не присваивалось потому, что типы не совпадали.

Реквизит может принимать ДокументСсылка, а у тебя был ДокументВыборка.
11 butterbean
 
17.09.10
16:20
(9)+ вот тут трабла у тебя
12 Help1c8
 
17.09.10
16:21
(6) НалНакСозд.Сделка = ДокВыб.Ссылка; вот так получилось спасибо:)