Версия для печати темы (https://pro1c.org.ua/index.php?s=d4dd9dbf12cf59dc9a8c148525319fb1&showtopic=1695)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.1 (8.0) _ Запись нескольких условий для расчета

Автор: Alisa 06.06.10, 20:14

Привет всем!
Есть документ где согласно условиям (высота, ширина, длина заготовки) рассчитывается норма расхода материала на данную заготовку. При расчете нормы должен применяться коэффициент, который зависит от высоты.

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

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

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

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

Как это можно отразить в модуле?

Автор: Ardi 06.06.10, 20:57

Если ... тогда
ИначеЕсли ... тогда
ИначеЕсли ... тогда
иначе
КонецЕсли;

Автор: Batchir 07.06.10, 7:30

Опиши функцию типа:

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

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

РассчитаннаяНорма = РассчитатьНому(15, 150, 150);

Автор: Alisa 07.06.10, 12:22

Спасибо, попробую,
Загвоздка ещё в том, что это применяется если материал для заготовки "лист" (например, Лист3 ст.4, Лист30 ст.20 и т.д.), а еще есть "поковка" - там применяется другая формула. Может поскажете как быть в этом случае? 44000000.gif

Автор: Vofka 07.06.10, 12:50

Alisa, тогда поставьте условие на материал:

Если Материал = ...Лист Тогда
Норма = РассчитатьНормуМатериала(Высота, Длина, Ширина);// ф-ция, которую привел Batchir
ИначеЕсли Материал = ...Поковка Тогда
Норма = АналогичнаяФункцияДляПоковки(Высота, Длина, Ширина);
КонецЕсли;

Автор: Alisa 07.06.10, 12:54

Cпасибо, буду пробывать.

Автор: Alisa 07.06.10, 15:18

Какой-то глюк (наверное не то пишу) - вообще перестает считать нормы. Уф, устала!

Автор: Ardi 07.06.10, 21:08

Нада сходить на курсы использования ОТЛАДЧИКА.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua