Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Простая форма по пересчету валюты
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
vadim007
Пусть имеется простая форма с тремя реквизитами:
1. Валюта типа Справочник.Валюты
2. Курс типа Число
3. Сумма типа Число
Требуется: написать модуль формы, чтобы, при изменении Валюты или Курса, пересчитывалась Сумма.
Например, если изначально Валюта=Гривня, Сумма=790грн.
Меняем валюту на Доллар, и при курсе 790грн за $100, Сумма изменится на 100.
Меняем валюту на Гривня, Сумма изменится на 790.
Обязательное условие: использовать функцию глПересчет(..).
Vofka
А вопрос в чем?
vadim007
В алгоритме решения.
alex040269
и где зарядка?
vadim007
Зарядка - это процесс. Следовательно - в самом процессе написания алгоритма решения задачи, и ее реализации.
-=VJ=-
Цитата(vadim007 @ 28.09.12, 13:59) необходимо зарегистрироваться для просмотра ссылки
Зарядка - это процесс. Следовательно - в самом процессе написания алгоритма решения задачи, и ее реализации.


Непонятно, что решать, если алгоритма нет - одному реквизиту привязывается одна функция и всё на этом.
Cthulhu
"разрешаю" (с)
vadim007
Вот выдержка из рабочей базы (долбался над этим часа три в субботу):

Перем ПрежняяВалюта, ПрежнийКурс;

Процедура ИзмВидОплаты()
    // В зависимости от Валюты устанавливаем СчетКонтрагента
    СчетКонтрагента = ?(Валюта=Гривня,СчетПоКоду("361"),СчетПоКоду("362"));
КонецПроцедуры

// ===============================
Процедура ИзмКурс(Молча=0)
    Ответ = "Да";
    Если Молча=0 Тогда
        Если КоличествоСтрок() > 0 Тогда
            Ответ = Вопрос("Пересчитать суммы?","Да+Нет");
        КонецЕсли;
    КонецЕсли;
    Если Ответ = "Да" Тогда
        Если Валюта <> Гривня Тогда
            Если (ПрежнийКурс <> Курс) И (ПустоеЗначение(ПрежнийКурс) = 0) Тогда
                //! Пересчет по новому курсу из Гривни в Валюту
                //! Сначала в Гривню по прежнему курсу
                СуммаБезСкидки = глПересчет(СуммаБезСкидки,Валюта,Гривня,ПрежнийКурс,ДатаДок);
                //! Затем в Валюту по новому курсу
                СуммаБезСкидки = глПересчет(СуммаБезСкидки,Гривня,Валюта,1,Курс,ДатаДок);
                ПрежнийКурс = 0; //! Потому что используем как признак ручного изменения Курса
                ИзмСуммаБезСкидки();
                Возврат;
            КонецЕсли;
        КонецЕсли;
        Если ПустоеЗначение(ПрежняяВалюта) = 0 Тогда
            СуммаБезСкидки = глПересчет(СуммаБезСкидки,ПрежняяВалюта,Валюта,Курс,ДатаДок);
            ИзмСуммаБезСкидки();
            Возврат;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

// ===============================
Процедура ИзмВалюта(Молча=0)
    ИзмКурс(Молча);
    Курс = Валюта.Курс.Получить(ДатаДок);
    ИзмВидОплаты();
КонецПроцедуры

// ===============================
Процедура ПриНачалеВыбораЗначения(Рекв,ФлагСтандОбр)
    Если Рекв = "ВидНДС" Тогда
            глВыбратьНДС(Контекст);
        ФлагСтандОбр = 0;
        Возврат;
    КонецЕсли;
    Если Рекв = "Валюта" Тогда
        ПрежняяВалюта = Валюта;
        Возврат;
    КонецЕсли;
    Если Рекв = "Курс" Тогда
        ПрежнийКурс = Курс;
        Возврат;
    КонецЕсли;
КонецПроцедуры
Ardi
x

Цитата(vadim007 @ 01.10.12, 14:52) необходимо зарегистрироваться для просмотра ссылки
Простая форма по пересчету валюты, Как зарядка для ума


Цитата(vadim007 @ 01.10.12, 14:52) необходимо зарегистрироваться для просмотра ссылки
Вот выдержка из рабочей базы (долбался над этим часа три в субботу):

Кто-то хотел нас отыметь.
vadim007
Цитата(Ardi @ 01.10.12, 15:41) необходимо зарегистрироваться для просмотра ссылки
Кто-то хотел нас отыметь.

Отнюдь. Неожиданно удивила сложность решения этой с виду простой задачи.
mister-x
Цитата(vadim007 @ 01.10.12, 15:48) необходимо зарегистрироваться для просмотра ссылки
Неожиданно удивила сложность решения этой с виду простой задачи.

АБІ?
vadim007
Цитата(mister-x @ 01.10.12, 17:28) необходимо зарегистрироваться для просмотра ссылки
АБІ?

Нет, это доработки в стандартной бухии.
mister-x
Цитата(vadim007 @ 02.10.12, 8:13) необходимо зарегистрироваться для просмотра ссылки
Нет, это доработки в стандартной бухии.

мабуть, якийсь "спец" попрацював biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.