|
Скрытие реквизитов или Состав | ☑ | ||
---|---|---|---|---|
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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |