Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись нескольких условий для расчета
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Alisa
Привет всем!
Есть документ где согласно условиям (высота, ширина, длина заготовки) рассчитывается норма расхода материала на данную заготовку. При расчете нормы должен применяться коэффициент, который зависит от высоты.

Вопрос в следующем:
Даны условия:

если Высота >0,5мм но <4мм
Норма = ((Длина+5)*(Ширина+5)*Высота)*Коэф.
Коэф=1,075

если Высота >4мм но <10м
Норма = ((Длина+5)*(Ширина+5)*Высота)*Коэф.
Коэф=1,11

если Высота >10мм но <160мм
Норма = ((Длина+10)*(Ширина+10)*Высота)*Коэф.
Коэф=1,18

Как это можно отразить в модуле?
Ardi
Если ... тогда
ИначеЕсли ... тогда
ИначеЕсли ... тогда
иначе
КонецЕсли;
Batchir
Опиши функцию типа:
// в функцию передаем параметр высоты длины и ширины
Функция РассчитатьНому(Высота, Длина, Ширина)
     Норма = 0;
     Если Высота >= 0.5 И Высота < 4 тогда
          Коэф = 1.075;
          Норма = ((Длина+5)*(Ширина+5)*Высота)*Коэф;
     ИначеЕсли Высота >= 4 И Высота < 10 тогда
          Коэф = 1.11;
          Норма = ((Длина+5)*(Ширина+5)*Высота)*Коэф;
     ИначеЕсли Высота >= 10 И Высота < 160 тогда
          Коэф = 1.18;
          Норма = ((Длина+10)*(Ширина+10)*Высота)*Коэф;
     иначе
          Сообщить("Достигнут предел высоты или не описано условие для её обработки :)");
     КонецЕсли;
     Возврат Норма;
КонецФункции

А в нужном месте вызови её

РассчитаннаяНорма = РассчитатьНому(15, 150, 150);
Alisa
Спасибо, попробую,
Загвоздка ещё в том, что это применяется если материал для заготовки "лист" (например, Лист3 ст.4, Лист30 ст.20 и т.д.), а еще есть "поковка" - там применяется другая формула. Может поскажете как быть в этом случае? 44000000.gif
Vofka
Alisa, тогда поставьте условие на материал:
Если Материал = ...Лист Тогда
Норма = РассчитатьНормуМатериала(Высота, Длина, Ширина);// ф-ция, которую привел Batchir
ИначеЕсли Материал = ...Поковка Тогда
Норма = АналогичнаяФункцияДляПоковки(Высота, Длина, Ширина);
КонецЕсли;
Alisa
Cпасибо, буду пробывать.
Alisa
Какой-то глюк (наверное не то пишу) - вообще перестает считать нормы. Уф, устала!
Ardi
Нада сходить на курсы использования ОТЛАДЧИКА.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.