romeo_hak

0
Рейтинг

romeo_hak



  •   Регистрация: 11.07.2008 (15 лет назад)

  •   Был(а) на сайте: 15.04.2024

Подписчики 2

Комментарии

БУПечать новой ТТН для УПП 8.1#3 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;
   КонецЕсли;

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

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

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



Вот и весь расклад.
БУПечать новой ТТН для УПП 8.1#0 19.09.11 13:16
Новая ТТН УПП 8.1