Почти крутой
Группа: Местный
Сообщений: 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С форуме!