Имя: Пароль:
1C
1С v8
Наследование
0 dp118m
 
19.09.11
16:21
Здравствуйте!

Допустим я хочу сделать в 1С форму для подсчета стоимости и сроков неких работ.

Прогноз трудозатрат - это список строк. По одной строке на работу.

Работа - это, например, "положить плитку", "покрасить стены", "наклеить обои".

В строках есть поля, которые можно разделить на

а) общие для всех (есть во всех строках без исключения) и
б) специфические для видов работ.

Для всех работ есть 2 поля - трудозатраты и стоимость.

Примеры специфических полей: Для "положить плитку" это будут а) площадь помещения, где ее надо положить и б) вид плитки.

Из этих параметров считаются трудозатраты и стоимость.

Для каждого вида работ будут разные параметры для расчета трудозатрат и стоимости.

Для каждого вида работ, трудозатраты и стоимость расчитываются по разным алгоритмам.

* * *

Это можно изобразить так:

class Смета {
 List<СтрокаСметы> строки;
}

abstract class СтрокаСметы {
 double получитьТрудозатраты();
 double получитьСтоимость();
}

class ПоложитьПлитку extends СтрокаСметы {
 установитьПлощадь(double aПлощадь);
 установитьВидПлитки(enum aПлитка);

 double получитьТрудозатраты()
 {
   // Алгоритм расчета трудозатрат для этого вида работ
 }  

 double получитьСтоимость()
 {
   // Алгоритм расчета стоимости для этого вида работ
 }  

}

class НаклеитьОбои extends СтрокаСметы {
 установитьПлощадь(double aПлощадь);
 установитьВидПлитки(enum aПлитка);

 double получитьТрудозатраты()
 {
   // Алгоритм расчета трудозатрат для этого вида работ
 }  

 double получитьСтоимость()
 {
   // Алгоритм расчета стоимости для этого вида работ
 }  
}

* * *

Мне нужна форма, в которой будет отображаться список работ. При этом в этом списке должны выводиться только наименование работы, трудозатраты и стоимость.

Если я дважды щелкаю по строке, то открывается форма элемента той или иной работы, где можно ввести параметры и пересчитать трудозатраты/стоимость.

Вопрос: Как можно сделать это?

Я смотрел в сторону связных справочников. Мне не нравится то, что тогда придется для каждого вида работ делать отдельный справочник (видов работ может быть несколько десятков).

Есть еще вариант сделать один справочник с полем "Формула", в котором будут записаны параметры вроде "видРаботы=10;площадь=20;плиткаТип=3" и будет одна большая функция, которая на основании этих данных будет считать трудозатраты. Недостаток - будет одна функция для всех видов работ, что не очень гуд с точки зрения тестирования и модульности.

Заранее благодарен

Дмитрий
1 ботаникус
 
19.09.11
16:25
ПВХ?
2 Ненавижу 1С
 
гуру
19.09.11
16:27
посмотреть как реализованы виды расчетов в ЗУП
там для каждого пользовательского вида расчета можно добавлять произвольное число параметров и редактировать формулу расчета результата
3 dp118m
 
19.09.11
16:45
Что такое ЗУП?
4 Ненавижу 1С
 
гуру
19.09.11
16:47
(3) конфигурация такая, для расчета зарплаты и учета персонала
5 dp118m
 
19.09.11
16:55
Где ее можно найти?
6 Толич
 
19.09.11
16:58
(5) Купить. =)
7 dp118m
 
19.09.11
17:03
Не подходит.

Неужели ни в одном учебнике по 1С не рассказано, как делать полиморфию?
8 qeos
 
19.09.11
17:04
(7) какая к черту полиморфия??
9 Fragster
 
гуру
19.09.11
17:05
(7) здесь не полиморфия. кури планы расчета в ЗУП, или в библиях всяких, типа Габеца и Радченко
10 shuhard
 
19.09.11
17:06
(7) ни в одном,
вернись к своей джаве,
1С не для слабых духом
11 Fragster
 
гуру
19.09.11
17:06
1с не ООП
12 Vladal
 
19.09.11
17:07
(7) Рассказано. только не про полиморфию, а про сложные расчеты (вытесняющие, замещающие и их комбинации).
Есть такая большая и толстая книга "Профессиональная разработка в системе 1С:Предприятие 8".
Авторы: А. П. Габец, Д. И. Гончаров, Д. В. Козырев, Д. С. Кухлевский и М. Г. Радченко)
13 Толич
 
19.09.11
17:09
(7) Я лет 8 назад так перестал хвастаться, что знаю больше, чем окружающие. Понял, что ничего не знаю.
14 Gesperid10
 
19.09.11
17:11
() Почитай любой учебник по 1С 8 с примерами, начиная с Радченко и заканчивая Габец и Ко
15 Ненавижу 1С
 
гуру
19.09.11
17:17
(7) полиморфии тут как раз до грязи, ибо из-за не типизированности все методы виртуальны
16 Goggy
 
19.09.11
17:18
Ну давайте ещё разочек упомянем Радченко и Габца :)
17 shuhard
 
19.09.11
17:18
(15) а как обстоят дела со спинорными полями ?
18 Vladal
 
19.09.11
17:22
(17) зачёт
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.