|
Пересчет по курсу.Поле на Найдено, | ☑ | ||
---|---|---|---|---|
0
Начинающий_13
09.06.14
✎
12:30
|
Здравствуйте
Документ Корректировка долга Не типовая Процедуры типовые. При изменении Сумма в ТЧ должна пересчитаться валютная сумма, но Ссылается на следующую ошибку. Не могу понять что не так Все вроде есть {ОбщийМодуль.РаботаСВалютойКлиентСервер.Модуль(21)}: Поле объекта не обнаружено (ВалютаДокумента) Если ПараметрыТекущегоКурса.ВалютаДокумента = ПараметрыНовогоКурса.ВалютаДокумента КОДЫ 1. &НаКлиенте Процедура ТаблицаДебиторскаяЗадолженностьСуммаПриИзменении(Элемент) ДанныеСтрокаТаблицы = ПолучитьСтруктуруРеквизитовСтроки(); ЗаполнитьЗначенияСвойств(ДанныеСтрокаТаблицы, Элемент.Родитель.ТекущиеДанные); ПараметрыОбъекта = ПолучитьСтруктуруРеквизитовШапки(); ПараметрыОбъекта.Дата = Объект.Дата; ПараметрыОбъекта.ВалютаДокумента = Объект.Валюта; ПараметрыОбъекта.КурсДокумента = Объект.Курс; ПараметрыОбъекта.КратностьДокумента = Объект.Кратность; ПараметрыОбъекта.КонтрагентДебитор = Объект.КонтрагентДебитор; ПараметрыОбъекта.КонтрагентКредитор = Объект.КонтрагентКредитор; ПараметрыОбъекта.Ссылка = Объект.Ссылка; // Все загружено ПересчитатьСуммуПоСтрокеНаСервере(ДанныеСтрокаТаблицы, ПараметрыОбъекта, ВалютаРегламентированногоУчета); ЗаполнитьЗначенияСвойств(Элемент.Родитель.ТекущиеДанные, ДанныеСтрокаТаблицы); КонецПроцедуры 2. &НаСервереБезКонтекста Процедура ПересчитатьСуммуПоСтрокеНаСервере(СтрокаДанных, ДанныеОбъекта, ВалютаРегламентированногоУчета, ПересчетВалютнойСуммы = Истина) Если СтрокаДанных = Неопределено Тогда Возврат; КонецЕсли; //// Все есть //ВалютаДокумента = ДанныеОбъекта.ВалютаДокумента; //КурсДокумента = ДанныеОбъекта.ВалютаДокумента; //КратностьДокумента = ДанныеОбъекта.ВалютаДокумента; ВалютаДоговора = СтрокаДанных.ДоговорКонтрагента.Валюта; РасчетыВУЕ = СтрокаДанных.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах; Если ПересчетВалютнойСуммы Тогда СтрокаДанных.СуммаВзаиморасчетов = РаботаСВалютойКлиентСервер.ПересчитатьИзВалютыВВалюту(СтрокаДанных.Сумма, ДанныеОбъекта.ВалютаДокумента, ВалютаДоговора, ДанныеОбъекта.КурсДокумента, СтрокаДанных.КурсВзаиморасчетов, ДанныеОбъекта.КратностьДокумента,СтрокаДанных.КратностьВзаиморасчетов); Иначе СтрокаДанных.Сумма = РаботаСВалютойКлиентСервер.ПересчитатьИзВалютыВВалюту(СтрокаДанных.СуммаВзаиморасчетов, ВалютаДоговора, ДанныеОбъекта.ВалютаДокумента, СтрокаДанных.КурсВзаиморасчетов, ДанныеОбъекта.КурсДокумента, СтрокаДанных.КратностьВзаиморасчетов, ДанныеОбъекта.КратностьДокумента); КонецЕсли; КонецПроцедуры 3. Функция ПересчитатьПоКурсу(Сумма, ПараметрыТекущегоКурса, ПараметрыНовогоКурса) Экспорт Если ПараметрыТекущегоКурса.ВалютаДокумента = ПараметрыНовогоКурса.ВалютаДокумента ИЛИ ( ПараметрыТекущегоКурса.КурсДокумента = ПараметрыНовогоКурса.КурсДокумента И ПараметрыТекущегоКурса.КратностьДокумента = ПараметрыНовогоКурса.КратностьДокумента ) Тогда Возврат Сумма; КонецЕсли; Если ПараметрыТекущегоКурса.КурсДокумента = 0 ИЛИ ПараметрыТекущегоКурса.КратностьДокумента = 0 ИЛИ ПараметрыНовогоКурса.КурсДокумента = 0 ИЛИ ПараметрыНовогоКурса.КратностьДокумента = 0 Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'При пересчете в валюту %1 сумма %2 установлена в нулевое значение, т.к. курс валюты не задан.'"), ПараметрыНовогоКурса.ВалютаДокумента, Формат(Сумма, "ЧДЦ=2; ЧН=0") ) ); Возврат 0; КонецЕсли; Возврат Окр((Сумма * ПараметрыТекущегоКурса.КурсДокумента * ПараметрыНовогоКурса.КратностьДокумента) / (ПараметрыНовогоКурса.КурсДокумента * ПараметрыТекущегоКурса.КратностьДокумента), 2); КонецФункции 4. Функция ПересчитатьИзВалютыВВалюту(Сумма, ВалютаНач, ВалютаКон, ПоКурсуНач, ПоКурсуКон, ПоКратностьНач = 1, ПоКратностьКон = 1) Экспорт Возврат ПересчитатьПоКурсу( Сумма, Новый Структура("Валюта, Курс, Кратность", ВалютаНач, ПоКурсуНач, ПоКратностьНач), Новый Структура("Валюта, Курс, Кратность", ВалютаКон, ПоКурсуКон, ПоКратностьКон) ); КонецФункции 5. &НаКлиенте Функция ПолучитьСтруктуруРеквизитовСтроки() Возврат Новый Структура("ДоговорКонтрагента,КурсВзаиморасчетов,КратностьВзаиморасчетов, Сделка, | Сумма,СуммаВзаиморасчетов,СчетУчетаРасчетов, ЭтоАванс, КурсВзаиморасчетовДоступность"); КонецФункции 6 &НаКлиенте Функция ПолучитьСтруктуруРеквизитовШапки() Возврат Новый Структура("Ссылка, Дата, ВалютаДокумента, КурсДокумента, КратностьДокумента, | КонтрагентДебитор, КонтрагентКредитор"); КонецФункции |
|||
1
Начинающий_13
09.06.14
✎
12:34
|
Извеняюсь, не корректно отобразилось
Функция ПересчитатьПоКурсу(Сумма, ПараметрыТекущегоКурса, ПараметрыНовогоКурса) Экспорт Если ПараметрыТекущегоКурса.ВалютаДокумента = ПараметрыНовогоКурса.ВалютаДокумента ИЛИ ( ПараметрыТекущегоКурса.КурсДокумента = ПараметрыНовогоКурса.КурсДокумента И ПараметрыТекущегоКурса.КратностьДокумента = ПараметрыНовогоКурса.КратностьДокумента ) Тогда Возврат Сумма; КонецЕсли; Если ПараметрыТекущегоКурса.КурсДокумента = 0 ИЛИ ПараметрыТекущегоКурса.КратностьДокумента = 0 ИЛИ ПараметрыНовогоКурса.КурсДокумента = 0 ИЛИ ПараметрыНовогоКурса.КратностьДокумента = 0 Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'При пересчете в валюту %1 сумма %2 установлена в нулевое значение, т.к. курс валюты не задан.'"), ПараметрыНовогоКурса.ВалютаДокумента, Формат(Сумма, "ЧДЦ=2; ЧН=0") ) ); Возврат 0; КонецЕсли; Возврат Окр((Сумма * ПараметрыТекущегоКурса.КурсДокумента * ПараметрыНовогоКурса.КратностьДокумента) / (ПараметрыНовогоКурса.КурсДокумента * ПараметрыТекущегоКурса.КратностьДокумента), 2); КонецФункции Функция ПересчитатьИзВалютыВВалюту(Сумма, ВалютаНач, ВалютаКон, ПоКурсуНач, ПоКурсуКон, ПоКратностьНач = 1, ПоКратностьКон = 1) Экспорт Возврат ПересчитатьПоКурсу( Сумма, Новый Структура("Валюта, Курс, Кратность", ВалютаНач, ПоКурсуНач, ПоКратностьНач), Новый Структура("Валюта, Курс, Кратность", ВалютаКон, ПоКурсуКон, ПоКратностьКон) ); КонецФункции |
|||
2
Apokalipsec
09.06.14
✎
12:48
|
Новый Структура("ВалютаДокумента , Курс, Кратность", ВалютаНач, ПоКурсуНач, ПоКратностьНач)
|
|||
3
Начинающий_13
09.06.14
✎
12:50
|
(2) Что Имеете Ввиду
|
|||
4
Apokalipsec
09.06.14
✎
12:53
|
(3) следующая подсказка уже за деньги.
|
|||
5
Начинающий_13
09.06.14
✎
13:11
|
Переделал на нувую Функцию
ВОПРОС СНЯТ &НаСервереБезКонтекста Процедура ПересчитатьСуммуПоСтрокеНаСервере(СтрокаДанных, ДанныеОбъекта, ВалютаРегламентированногоУчета, ПересчетВалютнойСуммы = Истина) Если СтрокаДанных = Неопределено Тогда Возврат; КонецЕсли; ВалютаДоговора = СтрокаДанных.ДоговорКонтрагента.Валюта; РасчетыВУЕ = СтрокаДанных.ДоговорКонтрагента.РасчетыВУсловныхЕдиницах; ПараметрыТекущегоКурса = Новый Структура; ПараметрыТекущегоКурса.Вставить("ВалютаДокумента", ДанныеОбъекта.ВалютаДокумента); ПараметрыТекущегоКурса.Вставить("КурсДокумента", ДанныеОбъекта.КурсДокумента); ПараметрыТекущегоКурса.Вставить("КратностьДокумента", ДанныеОбъекта.КратностьДокумента); ПараметрыНовогоКурса = Новый Структура; Если ВалютаРегламентированногоУчета <> ПараметрыТекущегоКурса.ВалютаДокумента Тогда ПараметрыНовогоКурса.Вставить("ВалютаДокумента", ВалютаРегламентированногоУчета); ПараметрыНовогоКурса.Вставить("КурсДокумента", 1); ПараметрыНовогоКурса.Вставить("КратностьДокумента", 1); Иначе ПараметрыНовогоКурса.Вставить("ВалютаДокумента", ВалютаДоговора); ПараметрыНовогоКурса.Вставить("КурсДокумента", СтрокаДанных.КурсВзаиморасчетов); ПараметрыНовогоКурса.Вставить("КратностьДокумента", СтрокаДанных.КратностьВзаиморасчетов); КонецЕсли; СтрокаДанных.СуммаВзаиморасчетов = РаботаСВалютойКлиентСервер.ПересчитатьПоКурсу(СтрокаДанных.Сумма, ПараметрыНовогоКурса, ПараметрыТекущегоКурса); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |