Как суммировать данные из дочернего списка в форме связи?

Статус
Новые ответы в этой теме размещать нельзя.
#1
Имеется Группа как форма связи в которую заносятся Ученики из дочернего объекта. В группе установлен счётчик зачисленных в группу по схеме
1514276208261.png

Счётчик работает адекватно только при занесении ученика по кнопке
1514276294936.png

Если же например копировать ученика или перенести из другой группы, то показания счётчика в Группе не меняется.
Переделал счётчик изменив значение числа с 1 на
1514276597697.png

Которое отображает введённый признак
1514276664912.png

При этом счётчик стал работать и при копировании и при переносе, но при переназначении в другую группу в новой группе значение счётчика корректируется только при повторном занесении любого из учеников зачисленных в группу.
Почему работает именно так и как надо сделать правильно?
 

Vladimir

Администратор
Команда форума
#2
В данном контексте операцию лучше называть не счётчиком, а суммированием данных (заголовок поправлен). Счётчиком обычно называем инкрементирование числового поля при добавлении новой записи (+1 к максимальному значению в объекте).
Тут же имеется в виду суммирование данных из дочернего списка в форме связи.

Операция суммирования производится только в форме связи, при изменении хотя бы одной записи. Если данные меняются вне этой формы (в самом объекте или в другой форме связи, где не установлено условие суммирования), то они обработаны не будут.
Лучше не переназначать ученика из группы в группу, а удалять из старой (или снимать признак участия в группе) и добавлять в новую. При этом будет сохраняться история его обучения в группах.
 
#3
В данном случае разница в поведении при изменении способа формирования Числа в дочернем объекте хотя операция суммирования производится в форме связи. Какая разница форме связи каким образом сформирована единичка которая подсчитывается?
 
#4
Удалить из группы можно только назначив в другую группу или стерев всю запись. Как можно вернуть Ученика в список учеников без присвоенной группы?
Манипуляции с признаком присутствия в группе влияют только на запись в таблице. Никаких изменений в логике подсчёта учеников в группе при его применении нет.
 

Vladimir

Администратор
Команда форума
#5
Какая разница форме связи каким образом сформирована единичка которая подсчитывается?
Никакой. В любом случае, если число в ходе создания/изменения записи принимает некоторое значение - оно должно быть учтено в строгом соответствии с правилами. Если есть разность в поведении (при задании значения по умолчанию или при вычислении в ходе применения формул) - присылайте нам архив примера проекта с точным описанием предполагаемой ошибки в поведении.
 

Vladimir

Администратор
Команда форума
#6
Удалить из группы можно только назначив в другую группу или стерев всю запись. Как можно вернуть Ученика в список учеников без присвоенной группы?
Не самый лучший вариант, когда ученику строго назначается группа, в которой он проходит обучение. Будет гораздо лучше, если добавление в группу будет производиться не назначением поля группы, а путём добавления ученика в группу (в дочернем списке формы связи). При этом можно будет сохранить историю для каждого ученика: когда и в какой группе он участвовал. А если ученику просто назначается группа, то предыдущая информация по обучению из базы теряется. Не для того создаётся база данных, если в ней может происходить потеря информации. Все введённые данные желательно сохранять - для получения полной истории работы школы за весь период её существования.
Люди приходят и уходят - а информация должна накапливаться, но никак не меняться.
А если человек, прошедший одну группу обучения, перешёл в другую, а для отчётности компании предложено повторно сдать информацию за старый период (для суровой государственной инспекции)? Опять перебивать человека на старые данные? А если таких ситуаций много? Зачем тогда вообще нужна программа для ведения базы данных?
Потому и рекомендуем никогда не удалять данные из базы (!!!), а лишь делать для них признаки активности или актуальности.
 
#7
Не самый лучший вариант, когда ученику строго назначается группа, в которой он проходит обучение. Будет гораздо лучше, если добавление в группу будет производиться не назначением поля группы, а путём добавления ученика в группу (в дочернем списке формы связи).
Именно так и сделано
Имеется Группа как форма связи в которую заносятся Ученики из дочернего объекта.
Только как при этом сохраняется история?
И именно при этом варианте совершенно непонятно как открепить от группы?
Лучше не переназначать ученика из группы в группу, а удалять из старой (или снимать признак участия в группе) и добавлять в новую. При этом будет сохраняться история его обучения в группах.
Если Ученик уже в группе и внесён туда именно из дочернего объекта?

И при всём при этом разница в поведении счётчика есть...
 

Vladimir

Администратор
Команда форума
#8
Сделать промежуточный объект, который будет содержать 1) ссылку на ученика, 2) всю прочую информацию, кроме персональной, которая относится именно для этой группы обучения.
К примеру: объект с учеником содержит данные из паспорта, контакты и прочее. А объект, содержащий в себе ссылку на ученика, включённый дочерним в форму группы, содержит данные по обучению: результаты обучения, выданные документы и прочее.
 
#9
С самого начала именно так и было сделано. Во первых очень неудобно для конкретного заказчика, во вторых очень громоздкая конструкция получилась, в третьих именно из за проблемы счетчика от данной затеи пришлось отказаться. То есть я не смог добиться его работы вообще.
В нынешнем варианте хоть и непонятно как и почему, но программа выполняет всё что задано заказчиком. И уже просят быстрее предоставить окончательный вариант. За исключением занозы в виде неадекватного поведения счётчика в виде отсутствия реакции в группе куда добавили хотя Ученика видно в списке. А вот если дополнительно повторно его ввести тогда считает правильно. Если я попытаюсь объяснить заказчику что именно это сделать просто и понятно как раз невозможно...
 

Vladimir

Администратор
Команда форума
#10
Числовое поле, которое было Вами названо "счётчиком", не обрабатывается за пределами формы связи. Суммирование для данного поля выполняется только в форме - по указанному полю из дочернего списка.
 
Статус
Новые ответы в этой теме размещать нельзя.