bdd2

Печать новой ТТН для УПП 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) 358 19.09.11 13:16 Сейчас в теме
2. Kostalmed Kostalmed (Kostalmed) 21 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 Сейчас в теме
норальный отчет...чего ругаете...енмного посидеть надо конечно...но ничего....очеень пригодилась...автору спасибо