Печать новой ТТН для УПП 8.1

Опубликовал romeo_hak (romeo_hak) в раздел Печать - Печатные формы документов

Новая ТТН УПП 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;
   КонецЕсли;

   СуммаРегл = ПересчитатьИзВалютыВВалюту(СуммаУпр, ВалютаУпр, ВалютаРегл, КурсУпр, КурсРегл, КратУпр, КратРегл);

   Возврат СуммаРегл;

КонецФункции // ПересчитатьВСуммуРегл()

Скачать файлы

Наименование Файл Версия Размер
Печать новой ТТН для УПП 8.1
.epf 84,75Kb
29.08.14
10
.epf 84,75Kb 10 Скачать

См. также

Комментарии
1. Александр Зубцов (iov) 359 19.09.11 13:16 Сейчас в теме
2. Kostalmed Kostalmed (Kostalmed) 23 21.09.11 10:28 Сейчас в теме
Где описание? в чем отличие от типовой?
Или Ктото просто $m решил подзаработать??? Тогда давайте все типовые обработки сделаем внешними и будем их публиковать!!!
3. romeo_hak (romeo_hak) 21.09.11 10:58 Сейчас в теме
Зарабатывать некто и не собирается на этой обработке.Просто возникла проблема что надо было срочно печать новой ТТН из из УПП 8.1. УПП на 80% переделанная под нужды предприятия и не обновлялась уже лет 5. в поисках готового решения нечего не дало.Пришлось найти УПП 8.2 последний релиз, вытащить от туда обработку и переделать её под УПП 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;
	КонецЕсли;

	СуммаРегл = ПересчитатьИзВалютыВВалюту(СуммаУпр, ВалютаУпр, ВалютаРегл, КурсУпр, КурсРегл, КратУпр, КратРегл);

	Возврат СуммаРегл;

КонецФункции // ПересчитатьВСуммуРегл()


...Показать Скрыть

Вот и весь расклад.
4. Andrey Levchenko (4el) 07.12.11 11:47 Сейчас в теме
попробую, тоже имеется старая упп.
Спасибо!
5. Юрий Иванов (itek.09) 06.01.12 17:38 Сейчас в теме
норальный отчет...чего ругаете...енмного посидеть надо конечно...но ничего....очеень пригодилась...автору спасибо