hapcher,
Quote (hapcher)
получается, что у тебя в решении возможно максимум только 3 приоритета?
нет, столько сколько способов расчета в перечислениях, а зачем их больше то, для задачника вополне достаточно. У меня схема расчета такая:
- В модуле документа запросом выборка по виду расчета (отсортированная по приоритету из перечисления) ИТОГ по виду расчета внутри сотрудники.
Code
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НЗ.ВидРасчета КАК ВидРасчета,
| НЗ.Сотрудник,
| НЗ.ВидРасчета.СпособРасчета.Порядок КАК ПорядокРасчета
|ИЗ
| Документ.НачислениеЗарплаты.ОсновныеНачисления КАК НЗ
|ГДЕ
| НЗ.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| НЗ.ВидРасчета,
| НЗ.Сотрудник
|
|УПОРЯДОЧИТЬ ПО
| ПорядокРасчета
|ИТОГИ ПО
| ВидРасчета";
- При обходе выборки формирую массив сотрудников только по данному виду;
- Далее проверяю что нибудь если это необходим (24 дня отпуска, ...) могу отказаться от проведения если надо.
- Передаю в процедуру расчета (набор,вид,сотрудники). причем вид может быть из любого набора , я обращаюсь к метаданным по наименованию.
Code
ИмяРегистра = ВыборкаВидРасчета.ВидРасчета.Метаданные().Имя; // имя плана вида расчета , оно совпадает с именем регистра
ВычисленияНаСервере.Расчет(Движения[ИмяРегистра],ВыборкаВидРасчета.ВидРасчета,МассивСотрудников);
- Записываю записи набра.
Code
Движения[ИмяРегистра].Записать(,Истина);
(я не ищу в расчетном модуле существует ли необходимый вид расчета в каком либо наборе, расчитваю не по всем сотрудникам а только по сотрудникам данного вида, не делаю в расчетном модуле проверки на приоритет)