Бывает, что встречается ошибка: при запуске программы возникает окно напоминаний, не содержащее записей. Причина в том, что для проверки, есть ли напоминания, в scr_Main используется функция GetAreRemindingsExist(), в которой опрашивается датасет ds_RemindingsCount. Он возвращает значения из таблицы tbl_Reminding. Там и вправду может быть напоминание. Но объекта, на которое ссылается это напоминание, может по каким-то причнам не быть. А в гриде окошка напоминаний используется другой датасет, ds_Remindings. В нём данные получаются из сложного запроса со множеством UNION ALL, но важно то, что выбирает он из таблиц, на которые в принципе может ссылаться поле "SubjectID" таблицы tbl_Reminding.
Так может возникнуть ситуация: напоминание есть, а объекта, к которому создано напоминание - уже нет. Поэтому окно показывается (существуют напоминания), но грид выводится пустым (объектов, о которых напоминание, нет).
Лечить это можно так:
в скрипте scr_Main, в функции GetAreRemindingsExist() в самом конце, перед return (Count > 0); поставить такую конструкцию:
if (Count > 0){
//Если найдены напоминания - проверяем, существуют ли связанные объекты
var RemindingsDataset = GetSingleItemByCode('ds_Remindings', 'CheckExistingRecords');
ApplyDatasetFilter(RemindingsDataset, 'ContactID', ContactParameter.ValAsGUID, true);
ApplyDatasetFilter(RemindingsDataset, 'RemindTime', today.getVarDate(), true);
RemindingsDataset.Open();
Count = (RemindingsDataset.IsEmptyPage ? 0 : Count); // или поменять на
//Count = RemindingsDataset.RecordsCount; // альтернативный, более медленный способ, возвращающий точное количество напоминаний с действительно существующими объектами
RemindingsDataset.Close();
}
Это избавит от "призрачных" напоминаний, но не ликвидирует, конечно, причину их появления.