Почти крутой
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0
Пусть имеется простая форма с тремя реквизитами: 1. Валюта типа Справочник.Валюты 2. Курс типа Число 3. Сумма типа Число Требуется: написать модуль формы, чтобы, при изменении Валюты или Курса, пересчитывалась Сумма. Например, если изначально Валюта=Гривня, Сумма=790грн. Меняем валюту на Доллар, и при курсе 790грн за $100, Сумма изменится на 100. Меняем валюту на Гривня, Сумма изменится на 790. Обязательное условие: использовать функцию глПересчет(..).
Почти крутой
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0
Вот выдержка из рабочей базы (долбался над этим часа три в субботу):
Перем ПрежняяВалюта, ПрежнийКурс;
Процедура ИзмВидОплаты() // В зависимости от Валюты устанавливаем СчетКонтрагента СчетКонтрагента = ?(Валюта=Гривня,СчетПоКоду("361"),СчетПоКоду("362")); КонецПроцедуры
// =============================== Процедура ИзмКурс(Молча=0) Ответ = "Да"; Если Молча=0 Тогда Если КоличествоСтрок() > 0 Тогда Ответ = Вопрос("Пересчитать суммы?","Да+Нет"); КонецЕсли; КонецЕсли; Если Ответ = "Да" Тогда Если Валюта <> Гривня Тогда Если (ПрежнийКурс <> Курс) И (ПустоеЗначение(ПрежнийКурс) = 0) Тогда //! Пересчет по новому курсу из Гривни в Валюту //! Сначала в Гривню по прежнему курсу СуммаБезСкидки = глПересчет(СуммаБезСкидки,Валюта,Гривня,ПрежнийКурс,ДатаДок); //! Затем в Валюту по новому курсу СуммаБезСкидки = глПересчет(СуммаБезСкидки,Гривня,Валюта,1,Курс,ДатаДок); ПрежнийКурс = 0; //! Потому что используем как признак ручного изменения Курса ИзмСуммаБезСкидки(); Возврат; КонецЕсли; КонецЕсли; Если ПустоеЗначение(ПрежняяВалюта) = 0 Тогда СуммаБезСкидки = глПересчет(СуммаБезСкидки,ПрежняяВалюта,Валюта,Курс,ДатаДок); ИзмСуммаБезСкидки(); Возврат; КонецЕсли; КонецЕсли; КонецПроцедуры
// =============================== Процедура ИзмВалюта(Молча=0) ИзмКурс(Молча); Курс = Валюта.Курс.Получить(ДатаДок); ИзмВидОплаты(); КонецПроцедуры
// =============================== Процедура ПриНачалеВыбораЗначения(Рекв,ФлагСтандОбр) Если Рекв = "ВидНДС" Тогда глВыбратьНДС(Контекст); ФлагСтандОбр = 0; Возврат; КонецЕсли; Если Рекв = "Валюта" Тогда ПрежняяВалюта = Валюта; Возврат; КонецЕсли; Если Рекв = "Курс" Тогда ПрежнийКурс = Курс; Возврат; КонецЕсли; КонецПроцедуры
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!