Есть задача по планированию. Нужно расставить события в календарном плане "на будущее" по определенному правилу, причем каждое следующее событие состоится после последнего+период.
1. Решил генерацией календаря и вычитанием из календаря стартовой даты (для каждого элемента выборки разная)
Нужно определеить, что полученное значение кратно параметру нацело. Кто-то может подсказать, как в запосе получить остаток от деления?
Или может есть более элегантные решения?
Если это система компоновки данных (судя по разделу), то используйте вычисляемые поля, в них попробуйте использовать функцию
Цел()
|ВЫБОР КОГДА Число1 / Число2 = ВЫРАЗИТЬ(Число1 / Число2 КАК ЧИСЛО(1,0)) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК РезультатДеленияЭтоЦелоеЧисло
Функцию Цел получится использовать только на платформе 8.3:
Момент в том, что событие может повторяться N раз за период. Каждое следующее отстоит на "параметр" от предыдущего. И так по 320 элементам. Причем ДатаСтарта у всех разная. Я специально не усложняю задачу. Так вот как решить задачу приращения? Я взял функцию: Если ДатаКалендаря-ДатаСтарта делится нацело на параметр, тогда событие состоялось = 1 иначе 0. ВЫРАЗИТЬ(Как число (N,0)) - не получится, есть соображения у кого? Или действительно вычисляемым полем? Тогда часть отчета полностью перейдет в вычисляемую часть, я правильно понимаю?
А вот и результат
Ошибка получения данных
по причине:
Функция не найдена "Цел"
Извинения, про 8.3 - прозевал. Использую % - деление нацело, если остаток 0, тогда 1.
А решение я выбрал совсем другое:
1. Выгружаем результат запроса в ТЗ где есть колонки ДатаФакт, СобытиеФакт.
2. Добавляем 2 колонки для плана - ДатаПлан и СобытиеПлан
3 Анализируя строки просто дописываю в ТЗ новые события играя четырьмя колонками (сдвигая события) до КонецПериода.
4. Вталкиваю готовую ТЗ в СКД, а дальше - дело техники.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua