Имя: Пароль:
1C
 
Скрытие реквизитов или Состав
0 Voblhned
 
03.05.17
10:02
Привет всем, перед тем как что то делать решил проконсультироваться с вами и выслушать мнения.

У меня для себя стоит задача, сделать на 1С инженерный калькулятор. Есть изделия, тройник прямоугольный, отвод круглый, отвод квадратный, считаться будет площадь, у всех изделий своя формула и свои реквизиты.
Создается справочник Номенклатура, общий для всех изделий
у справочника есть реквизит Вид изделия - Перечисления,

Как думаете что лучше сделать? В зависимости от Вида изделия отображать на форме отдельные реквизиты и формулу расчета, прописать видимость.

Или на форме сделать Булево под каждое изделие в отдельной вкладке и функциональными опциями ограничить состав формы?

Или еще варианты.

Изделий штук 10-12, состав буджет менять но очень редко
1 Mort
 
03.05.17
10:24
Личное имхо:

-Справочник Изделия, имеет реквизит "Тип_Изделия" (матофильтр не пропустил без подчеркивания О_о)
-ПВХ ПараметрыИзделий
-Справочник ТипыИзделий, имеет ТЧ "Параметры изделий" и алгоритмы расчета чего надо.
-Регистр сведений (Изделие, Параметр)-> (значение) для хранения параметров.

Элементы для ввода значений параметров генерируются программно на форме изделия.
2 Voblhned
 
03.05.17
10:26
(1) я где то про такое читал, но там говорилось, что скорость работы такой системы значительно ниже, потому что идет много запросов к сторонним Планам, Справочникам, Регистрам при открытии формы
3 Mort
 
03.05.17
10:33
(2) Это смотря как написать )
4 Voblhned
 
03.05.17
10:54
(3) и получается на форме все равно придется писать

    ЭтаФорма.Элементы.Реквизит1.Видимость = Истина;
    ЭтаФорма.Элементы.Реквизит2.Видимость =  Ложь;
    ЭтаФорма.Элементы.Реквизит3.Видимость = Ложь;
5 Voblhned
 
03.05.17
10:56
просто с вашей схемой, будет очень много проваливающихся справочников, а по факту, хотелось бы, зашел на форму, выбрал вид, заполнил поля и записал
6 Mort
 
03.05.17
10:58
(4) Нет, все гораздо хуже.

Надо будет циклом обходить полученные запросом параметры изделий и создавать реквизиты и элементы управления программно.

(5) Не нужно никуда проваливаться.


Впрочем, можно не использовать ПВХ параметров, а просто для типа изделия указывать таблицей имена используемых параметров и управлять их видимостью при определении типа изделия.
7 Vaflya
 
03.05.17
11:01
+ (1) нормальный подход. Может надо  немного пояснить вкратце: заводятся характеристики номенклатуры (для отвод, тройник и т д) - окружность, длина, ширина и т д. характеристики указаны для конкретной номенклатуры и потом по формуле и значениям этих характеристик делается расчет. Что где хранится - вопрос пятый и технический. Возьмите типовую конфу с использованием характеристик и сделайте у себя.
8 Voblhned
 
03.05.17
11:10
(7) типовая конфигурация не умеет работать с наборами характеристик. Еще с розницей мучался по этому поводу.
К примеру свойств номенклатуры:
- Заглушки круглого сечения (Диаметр)
- Прямоугольный зонт (Длинна, Ширина)
- Островной зонт (Длинна1, Длинна2, Ширина1, Ширина2, Высота)
- Отвод прямоугольный (Ширина, Высота, Угол)

А сама номенклатура будет заполняться из реквизитов документа, автоматически, типа:
Заглушка круглого сечения ?=0.7, D=150, L=1250, цинк
9 Buster007
 
03.05.17
11:11
Здесь надо рассчитывать на то, что универсальный механизм займет гораздо больше времени и нужен ли он будет на практике. Часто ли изменяются формулы?

По мне так проще сделать N-страниц, в зависимости от количества типов изделий, и на каждой странице набросать реквизиты, которые требуются для расчета. В зависимости от типа изделия показывать ту или иную страницу. Затраты по времени исключительно, чтобы набросать реквизиты на каждую из страниц и написать формулу расчета. Управлению видимостью страниц займет 5 строк кода.

Что касается ПВХ и т.д., то это можно учитывать, но надо понимать, что в зависимости от изменения этих параметров (добавление новых, удаление старых), следует изменять также формулу расчета, что все равно приведет к некоему конфигурированию, кроме того, формулы зависимы от конкретных параметров и их надо будет искать то ли по наименованию, то ли по какому-то другому признаку, что привнесет сложности в алгоритм.
10 Voblhned
 
03.05.17
11:14
(9) формулы не могу меняться в принципе, это уже годами сложившиеся. Состав характеристик тоже не когда не будет меняться. Может и будут добавляться новые, но основной костяк всегда будет.

Про N страниц ты имеешь ввиду что, справочники?
11 Voblhned
 
03.05.17
11:29
есть мысль, сгруппировать их и создать разные справочники, типо:
- заглушки
- Воздуховоды прямые
- Отводы
- Крестовины
- Утки
- Врезки
Внутри группы формулы будут более менее одинаковыми, +-2 реквизита, а между собой получается, что изменения в реквизитах могут быть полностью отличающиеся.
12 Voblhned
 
03.05.17
14:56
(9) скорее всего ты прав, потому что формулы типо:
((a+b)*0.2+3.1415926535*(((0.125+a)*(0.125+a))-(0.125*0.125))*Угол*2/360+3.1415926535*0.125*Угол*b/180+3.1415926535*(0.125+a)*Угол*b/180)

Или

s2 = 3.1415926535 * Объект.Диаметр / 1000*0.1;
    
    Если Объект.Угол = 90 тогда     // расчитываем 90 градусов
        ЧислоЗвеньев = 2;
        Шейка =  (3.1415926535/2*Объект.Диаметр/2)/(ЧислоЗвеньев+2)+15;
        Срез =   3.1415926535/2*Объект.Диаметр/(ЧислоЗвеньев*2 +2);
    КонецЕсли;
    
    Если Объект.Угол = 60 тогда     // расчитываем 60 градусов
        ЧислоЗвеньев = 2;
        Шейка =  (3.1415926535/3*Объект.Диаметр/2)/(ЧислоЗвеньев+2)+15;
        Срез =   3.1415926535/3*Объект.Диаметр/(ЧислоЗвеньев*2 +2);
    КонецЕсли;
    
    Если Объект.Угол = 45 тогда     // расчитываем 45 градусов
        ЧислоЗвеньев = 0;
        Шейка =  (3.1415926535/4*Объект.Диаметр/2)/(ЧислоЗвеньев+2)+15;
        Срез =   3.1415926535/4*Объект.Диаметр/(ЧислоЗвеньев*2 +2);
    КонецЕсли;
    
    Если Объект.Угол = 30 тогда     // расчитываем 30 градусов
        ЧислоЗвеньев = 0;
        Шейка =  (3.1415926535/6*Объект.Диаметр/2)/(ЧислоЗвеньев+2)+15;
        Срез =   3.1415926535/6*Объект.Диаметр/(ЧислоЗвеньев*2 +2);
    КонецЕсли;
    
    Если Объект.Угол = 15 тогда     // расчитываем 15 градусов
        ЧислоЗвеньев = 0;
        Шейка =  (3.1415926535/12*Объект.Диаметр/2)/(ЧислоЗвеньев+2)+15;
        Срез =   3.1415926535/12*Объект.Диаметр/(ЧислоЗвеньев*2 +2);
    КонецЕсли;

    s1 = (3.1415926535*Объект.Диаметр*(2*(Шейка+Срез/2)+ЧислоЗвеньев*(Шейка+Срез)))/1000000;
    Объект.Площадь = s2 + s1;

Трудно будет пользователю вводить xD
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс