Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Расчет цены и/или кол-ва          
bereznoy Подменю пользователя
сообщение 22.02.12, 21:15
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Пример, необходимо выписать счет на сумму 1775,46 грн, расчитывается примерное количество вручную ("свои ньансы"), в кол-ве 4 знака после запятой, вообщем в данном случае 10 шт, 1с 1775,46/10 = 177,546 округляет до точности 2 знаков,
получаем цену 177,55 * 10 = сумма меняется на 1775,50, а надо именно 1775,46, вообщем надо написать код что б не меняя сумма выводилось
"Предупреждение" с текстом возможных КОЛИЧЕСТВО*ЦЕНА = 1775,46 ну и потом юзер поставил нужные цифры не высчитывая самому долго и нудно,
варинт 1*1775,46 = 1775,46 не вариант, я вот что то такое придумал пока, но думаю у Вас будут варианты эффективней
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Если  СтрокаТабличнойЧасти.Сумма > 0 Тогда
СтрокаТабличнойЧасти.Цена =  СтрокаТабличнойЧасти.Сумма/СтрокаТабличнойЧасти.Количество;
Если СтрокаТабличнойЧасти.Цена*СтрокаТабличнойЧасти.Количество <> СтрокаТабличнойЧасти.Сумма
    Тогда

    Количество1 = СтрокаТабличнойЧасти.Количество;
    Количество2 = СтрокаТабличнойЧасти.Количество;
    Цена1 = СтрокаТабличнойЧасти.Цена;
    Цена2 = СтрокаТабличнойЧасти.Цена;
    
    Пока    Количество1*СтрокаТабличнойЧасти.Цена <> СтрокаТабличнойЧасти.Сумма
        ИЛИ Количество2*СтрокаТабличнойЧасти.Цена <> СтрокаТабличнойЧасти.Сумма
        ИЛИ СтрокаТабличнойЧасти.Количество*Цена1 <> СтрокаТабличнойЧасти.Сумма
        ИЛИ СтрокаТабличнойЧасти.Количество*Цена2 <> СтрокаТабличнойЧасти.Сумма
        ИЛИ Количество1*Цена1 <> СтрокаТабличнойЧасти.Сумма
        ИЛИ Количество2*Цена2 <> СтрокаТабличнойЧасти.Сумма
        ИЛИ Количество1*Цена2 <> СтрокаТабличнойЧасти.Сумма
        ИЛИ Количество2*Цена1 <> СтрокаТабличнойЧасти.Сумма

        Цикл
        
    Количество1 = Количество1 + 0.0001;    
    Количество2 = Количество2 - 0.0001;
    Цена1 = Цена1 + 0.01;
    Цена2 = Цена2 - 0.01;
    
КонецЦикла;
Предупреждение(" Предупреждение " );    
КонецЕсли;


При выполнении этого кода программа зависает 64000000.gif


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

logist Подменю пользователя
сообщение 22.02.12, 21:29
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Вероятно цикл никогда не закончится smile.gif)


Signature
Личные бесплатные консультации не даю, для этого есть форум!

bereznoy Подменю пользователя
сообщение 22.02.12, 21:39
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Цитата(logist @ 22.02.12, 21:29) *
Вероятно цикл никогда не закончится smile.gif)

Это ясно, а какие нибудь мысли есть, как сделать расчет?


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

logist Подменю пользователя
сообщение 22.02.12, 21:47
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

А почему нельзя просто поделить сумму на цену?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

bereznoy Подменю пользователя
сообщение 22.02.12, 22:03
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 329
Из: Simferopol
Спасибо сказали: 9 раз
Рейтинг: 0

Цитата(logist @ 22.02.12, 21:47) *
А почему нельзя просто поделить сумму на цену?

а я ж писал в первом меседже, мне надо получить все возможные варианты количество*цену что бы получить мне нудную сумму, в моем варианте 1775,46


Signature
Ковыряю 1С 8.2.14.528 конфигурация УТП ред. 1.2.1.3
1С 8.3 (8.3.1.531) конфиг УТ 2.3.16.1
1С 7.7 Торговля+Склад

MATEVI Подменю пользователя
сообщение 22.02.12, 22:04
Сообщение #6

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Глобальный контекст (Global context)
ВвестиЧисло (InputNumber)
Синтаксис:

ВвестиЧисло(<Число>, <Подсказка>, <Длина>, <Точность>)
Пример:

Количество = 1;
Если ВвестиЧисло(Количество, "Введите количество", 10, 2) Тогда
    // обработка введенного количества
КонецЕсли;


Это так к размышлениям. Я честно сказать идею не понял.

Ardi Подменю пользователя
сообщение 22.02.12, 22:12
Сообщение #7

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата
ВвестиЧисло()
+1
Когда не мог понять мега алгоритмы с подгонкой цифр - делел кнопку "Изменить поле" - и юзер по этой кнопке менял любые числа как нужно (при этом связанные поля не пересчитываются).


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

logist Подменю пользователя
сообщение 22.02.12, 22:19
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(bereznoy @ 22.02.12, 22:03) *
надо получить все возможные варианты

Так возможных вариантов может быть тысячи и т.п...


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Kaliban Подменю пользователя
сообщение 24.02.12, 15:28
Сообщение #9

Говорящий
Иконка группы
Группа: Местный
Сообщений: 97
Спасибо сказали: 28 раз
Рейтинг: 0

Плевое дело:
сумма=1775,46
Множитель1=2    множитель2=887.73
Множитель1=3    множитель2=591.82
Множитель1=6    множитель2=295.91
Множитель1=127 множитель2=13.98
Множитель1=233 множитель2=7.62
Множитель1=254 множитель2=6.99
Множитель1=381 множитель2=4.66


алгоритм - самый тупой, "Перебор делителей"
хотите не тупой - обратитесь в университеты, они под ваше финансирование пару диссеров защитят.

код на диалекте 7.7
    сумма=;//задайте самостоятельно
    множительРазрядности=100;
    с1=сумма*множительРазрядности;
    предел=КвaдpaтныйКopeнь(с1);
     х=2;
     пока х<=предел Цикл
         
        частное=с1/х;
        остаток=Цел(частное)-(частное);
        Если остаток=0 Тогда
            Сообщить("Множитель1="+х+" множитель2="+частное/множительРазрядности);
        КонецЕсли;
        х=х+1;
    КонецЦикла;


результат работы я привел выше, можете проверить на калькуляторе.

Сообщение отредактировал Kaliban - 24.02.12, 15:29

Спасибо сказали: bereznoy,

nevs73 Подменю пользователя
сообщение 27.02.12, 21:51
Сообщение #10

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Просто в настройках поставьТЕ точность четыре после запятой!!!

 ! 

У нас не тыкают! Ознакомьтесь с правилами!
 


Сообщение отредактировал Vofka - 28.02.12, 8:56

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 26.04.24, 23:02
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!