Новая ТТН УПП 8.1
Чтоб обработка работала на УПП 8.1 необходимо добавить новый общий модуль «МодульВалютногоУчета» со следующим содержанием:
Код:
//////////////////////////////////////////////////
//////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ РАБОТЫ С ВАЛЮТАМИ
// Эта функция пересчитывает сумму из валюты ВалютаНач по курсу ПоКурсуНач
// в валюту ВалютаКон по курсу ПоКурсуКон
//
// Параметры:
// Сумма - сумма, которую следует пересчитать;
// ВалютаНач - ссылка на элемент справочника Валют;
// определяет валюты из которой надо пересчитывать;
// ВалютаКон - ссылка на элемент справочника Валют;
// определяет валюты в которую надо пересчитывать;
// ПоКурсуНач - курс из которого надо пересчитать;
// ПоКурсуКон - курс в который надо пересчитать;
// ПоКратностьНач - кратность из которого надо пересчитать (по умолчанию = 1);
// ПоКратностьКон - кратность в который надо пересчитать (по умолчанию = 1);
//
// Возвращаемое значение:
// Сумма, пересчитанная в другую валюту
//
Функция ПересчитатьИзВалютыВВалюту(Сумма, ВалютаНач, ВалютаКон, ПоКурсуНач, ПоКурсуКон,
ПоКратностьНач =1, ПоКратностьКон = 1 ) Экспорт
Если (ВалютаНач = ВалютаКон) Тогда
// Считаем, что пересчет не нужен.
Возврат Сумма;
КонецЕсли;
Если (ПоКурсуНач = ПоКурсуКон)
и (ПоКратностьНач = ПоКратностьКон) Тогда
// пересчет суммы не требуется
Возврат Сумма;
КонецЕсли;
Если ПоКурсуНач = 0
или ПоКурсуКон = 0
или ПоКратностьНач = 0
или ПоКратностьКон = 0 Тогда
ОбщегоНазначения.СообщитьОбОшибке("При пересчете из валюты '"+ВалютаНач+"' в валюту '"+ВалютаКон+"' обнаружен нулевой курс. Пересчет не произведен!");
Возврат 0;
КонецЕсли;
Возврат Окр((Сумма * ПоКурсуНач * ПоКратностьКон) / (ПоКурсуКон * ПоКратностьНач), 2);
КонецФункции //ПересчитатьИзВалютыВВалюту()
// Возвращает курс валюты на дату
//
// Параметры:
// Валюта - Валюта (элемент справочника "Валюты")
// ДатаКурса - Дата, на которую следует получить курс
//
// Возвращаемое значение:
// Структура, содержащая:
// Курс - курс валюты
// Кратность - кратность валюты
//
Функция ПолучитьКурсВалюты(Валюта, ДатаКурса) Экспорт
Структура = РегистрыСведений.КурсыВалют.ПолучитьПоследнее(?(ДатаКурса = Дата('00010101'),ТекущаяДата(),ДатаКурса), Новый Структура("Валюта", Валюта));
Возврат Структура;
КонецФункции // ПолучитьКурсВалюты()
// Проверяет наличие установленного курс аи кратности валюты на 1 января 1980 года.
// В случае отсутствия устанавливает курс и кратность равными единице.
//
// Параметры:
// Валюта - ссылка на элемент справочника Валют
//
Процедура ПроверитьКорректностьКурсаНа01_01_1980(Валюта) Экспорт
ДатаКурса = Дата(1980, 1, 1);
СтруктураКурса = ПолучитьКурсВалюты(Валюта, ДатаКурса);
Если (СтруктураКурса.Курс = 0) Или (СтруктураКурса.Кратность = 0) Тогда
// установим курс и кратность = 1 на 01.01.1980, чтобы не было ошибок при создании документов
РегистрКурсыВалют = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
РегистрКурсыВалют.Период = ДатаКурса;
РегистрКурсыВалют.Валюта = Валюта;
РегистрКурсыВалют.Курс = 1;
РегистрКурсыВалют.Кратность = 1;
РегистрКурсыВалют.Записать();
РегистрКурсыВалют = РегистрыСведений.КурсыВалютДляРасчетовСПерсоналом.СоздатьМенеджерЗаписи();
РегистрКурсыВалют.Период = ДатаКурса;
РегистрКурсыВалют.Валюта = Валюта;
РегистрКурсыВалют.Курс = 1;
РегистрКурсыВалют.Кратность = 1;
РегистрКурсыВалют.Записать();
КонецЕсли;
КонецПроцедуры // ПроверитьКорректностьКурсаНа01_01_1980()
// Функция производит пересчет суммы в валюте упр. учета в валюту регл. учета.
//
Функция ПересчитатьВСуммуРегл(СуммаУпр, ВалютаРегламентированногоУчета, ВалютаУправленческогоУчета, Дата) Экспорт
ВалютаРегл = ВалютаРегламентированногоУчета;
ВалютаУпр = ВалютаУправленческогоУчета;
КурсВал = ПолучитьКурсВалюты(ВалютаРегл, Дата);
КурсРегл = КурсВал.Курс;
КратРегл = КурсВал.Кратность;
КурсВал = ПолучитьКурсВалюты(ВалютаУпр, Дата);
КурсУпр = КурсВал.Курс;
КратУпр = КурсВал.Кратность;
Если КурсРегл = 0 Тогда
ОбщегоНазначения.Сообщение("Не задан курс валюты """ + ВалютаУправленческогоУчета + """ регламентированного учета!", СтатусСообщения.Внимание);
Возврат 0;
КонецЕсли;
Если КурсУпр = 0 Тогда
ОбщегоНазначения.Сообщение("Не задан курс валюты """ + ВалютаУправленческогоУчета + """ управленческого учета!", СтатусСообщения.Внимание);
Возврат 0;
КонецЕсли;
СуммаРегл = ПересчитатьИзВалютыВВалюту(СуммаУпр, ВалютаУпр, ВалютаРегл, КурсУпр, КурсРегл, КратУпр, КратРегл);
Возврат СуммаРегл;
КонецФункции // ПересчитатьВСуммуРегл()
(0) Чё за ????
Где описание? в чем отличие от типовой?
Или Ктото просто $m решил подзаработать??? Тогда давайте все типовые обработки сделаем внешними и будем их публиковать!!!
попробую, тоже имеется старая упп.
Спасибо!
норальный отчет…чего ругаете…енмного посидеть надо конечно…но ничего….очеень пригодилась…автору спасибо