Имя: Пароль:
1C
1С v8
Проблема с типовой функцией заполнения документа(КурсВзаиморасчета)
0 Mr Elidan
 
25.03.16
15:40
УПП 8.2, Док - ПоступлениеТоваровУслуг
В обработке вызываю функцию "КоманднаяПанельДокументыРасчетовСКонтрагентомЗаполнитьТолькоПоЗаказу(Кнопка" на закладке предоплата (короче в дофига поступлений нужно проставить авансы), выпадает ошибка "КурсДокумента      = ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, ДокументОбъект.мВалютаРегламентированногоУчета);
"

Но типовой механизм конечно же работает, покопавшись отладчиком, нашел такую строчку:
http://i75.fastpic.ru/big/2016/0325/5f/9fcfb4c47f22a983812931b5c581015f.png

Именно на ней все заканчивается, ибо условие "истинно"

Но, моей обработкой находить не хочет, и логически я понимаю почему, ибо её там нет!!! прям все реквизиты обсчупал, нифига... (и конечно же счупал то, что делает типовая конфа, естественно все ровно, но, б!*;%, почему???)
Помогайте, братцы)))
1 Mr Elidan
 
25.03.16
15:43
http://i75.fastpic.ru/big/2016/0325/7f/18240d0f5402caf8d1c33cb4859e4d7f.png - скрин реквизитов, нет там КурсаДокумента....
2 mikecool
 
25.03.16
15:44
а ошибка то в чем?
3 Господин ПЖ
 
25.03.16
15:45
чего хотел то
4 Mr Elidan
 
25.03.16
15:49
Нет в Доке ПоступлениеТоваровУслуг реквизита - КурсДокумента, короче
Функция КурсДокумента(ДокументОбъект, ВалютаРегламентированногоУчета) Экспорт

    // Если валюта документа совпадает с валютой регл. учета или не указана, то курс 1.
    Если ДокументОбъект.ВалютаДокумента = ВалютаРегламентированногоУчета ИЛИ ДокументОбъект.ВалютаДокумента.Пустая() Тогда
        Возврат 1;
    Иначе
    
        МетаданныеДокумента = ДокументОбъект.Метаданные();

        // Если есть реквизит КурсДокумента - его и вернем
        Если МетаданныеДокумента.Реквизиты.Найти("КурсДокумента") <> Неопределено Тогда
            Возврат ДокументОбъект.КурсДокумента;
        ИначеЕсли МетаданныеДокумента.Реквизиты.Найти("КурсВзаиморасчетов") <> Неопределено Тогда
            // Если нет КурсДокумента и валюта документа не совпадает с валютой регл. учета,
            // то такой документ может быть выписан только в валюте взаиморасчетов,
            // если есть реквизит КурсВзаиморасчетов - его и вернем.
            Возврат ДокументОбъект.КурсВзаиморасчетов;
        Иначе
            Возврат 1;
        КонецЕсли;

    КонецЕсли;

КонецФункции

Эта типовая функция не возвращает мне единичку!
5 Mr Elidan
 
25.03.16
15:49
Хотя как ни посмотри, она, Б!(*%, обязана это сделать!
6 Mr Elidan
 
25.03.16
15:50
Хотя бы единичку...
7 Господин ПЖ
 
25.03.16
15:50
курсвзаиморасчетов есть
8 Mr Elidan
 
25.03.16
15:54
(7) Ога, тоже 1.... Но в типовом механизме, т.е. я в базе лапками нажимаю заветную кнопку ошибки нет, и он каким то чудом находит "КурсДокумента", условие истинно....
вот это:
Если МетаданныеДокумента.Реквизиты.Найти("КурсДокумента") <> Неопределено Тогда
            Возврат ДокументОбъект.КурсДокумента;
9 Mr Elidan
 
25.03.16
15:55
(7) Но возвращать ни хочет ничего....
10 Mr Elidan
 
25.03.16
15:58
Ладно, пофиг че он там находит, почему не возвращает?
11 Господин ПЖ
 
25.03.16
16:07
>он каким то чудом находит "КурсДокумента"

для ПТиУ это невозможно по определению... выпрямляй руки и отладчик
12 Mr Elidan
 
25.03.16
16:12
(11) ПТиУ?
13 Mr Elidan
 
25.03.16
16:19
(11) К слову, я не претендую на 1с года, да руки у меня кривенькие, только объясни, почему он ничего не возвращает! Там же куда ни тыкнесь, он вернет хотя бы единицу!
14 Mr Elidan
 
25.03.16
16:19
(11) Ты же гуру и палка длинная)))
15 lera01
 
25.03.16
16:52
(0)А ты какую-то обработку используешь и передаешь туда ДокументОбъект? А обработку из базы запускаешь или внешним соединением?
16 Mr Elidan
 
25.03.16
17:03
(15) Самописную конечно, просто отбираю нужные доки и пуляю в цикл с запросом на типовую функцию, передаю не ДокументОбъект, через свою переменную.
Ну типо:
Для каждого СтрДок из Результат  цикл
                ЭтоттОбъект =  СтрДок.Док;
                
                УправлениеВзаиморасчетами.ЗаполнитьПредоплату(ЭтоттОбъект, мСтруктураПараметровВзаиморасчетов);
                ЭтоттОбъект.Записать(РежимЗаписиДокумента.Проведение);
                КонецЦикла;

А дальше он сам, в принципе, половину кода типового он проходит и встает.

Запускаю из базы.
17 Господин ПЖ
 
25.03.16
17:04
>ЭтоттОбъект =  СтрДок.Док

это не объект
18 Господин ПЖ
 
25.03.16
17:07
и ломается у тебя от ДокументОбъект.мВалютаРегламентированногоУчета
19 lera01
 
25.03.16
17:23
Через попытку, видать, делаешь
Закон Брукера: Даже маленькая практика стоит большой теории.