Форма просмотра неявок для 1С Зарплаты и управления персоналом 8.1 (и УПП). Описание.
Форма состоит из трёх списков :
- список сотрудников (вверху),
- список кадровых назначений и увольнений (посередине) и
- список кадровых неявок (внизу).
Два последних списка подчинены первому списку : данные в них всегда отбираются по выбранному в первом списке сотруднику.
Как работать с этой формой.
1) Выберите сотрудника в верхнем списке (быстрым поиском по первым символам или с помощью кнопок поиска на панели инструментов программы).
2) В двух подчинённых списках отобразятся кадровые данные по сотруднику.
3) Если в нижнем списке оказалось слишком много записей, прокрутите нижний список до даты неявки, которую необходимо отследить.
4) Нажмите кнопку панели инструментов "Обновить текущий список" над нижним списком.
5) В нижнем списке отобразятся фактические даты окончания неявок, причём в случае перекрытия неявок (неплановые) даты окончания неявок будут подсвечены красным цветом.
6) Если был (пере)проведён документ неявки по сотруднику, то чтобы увидеть изменения в нижнем списке, нужно в верхнем списке сменить исходного сотрудника на другого сотрудника, и затем в верхнем же списке вернуться к прежнему сотруднику.
Имеется также версия обработки для 1С ЗиУП 8.0 (пишите в личку, вышлю по запросу).
Особенности обработки, а также достоинства и недостатки.
1) Обработка была написана давно, и её код, возможно, неоптимален. Но я решил опубликовать эту обработку только после того, как убедился, что "мои" пользователи 1С ею реально пользуются.
2) Мой программный код в обработке для вычисления фактических дат окончания неявок не использует запросы (и вообще - какие-либо обращения к базе данных!), а использует только видимую часть списка (табличного поля) неявок. В момент заполнения табличной части неявок создаётся "кеш" с данными этой табличной части. При повторном обновлении табличной части (по нажатию "Обновить текущий список") происходит чтение из кеша (и его параллельное обновление). Поскольку длина кеша ограничена количеством видимых записей, программный код по вычислению фактических дат окончания неявок работает "мгновенно".
3) Я специально не стал загромождать обработку кнопкой очистки кеша (или как-то пытаться отслеживать изменения в данных, могущих повлиять на результаты работы обработки).
Именно поэтому приходится "перещёлкивать" сотрудника при изменении в данных.
4) Мой программный код в обработке для вычисления фактических дат окончания неявок может работать неверно, если в табличной части неявок наложен какой-то отбор (скажем, по виду неявки), отличный от отбора по умолчанию (по текущему сотруднику в верхнем списке).