diff --git a/dokogen/variables.py b/dokogen/variables.py index 1c967f9..47c5bbe 100644 --- a/dokogen/variables.py +++ b/dokogen/variables.py @@ -278,13 +278,17 @@ def _build_loop_data(company: Company, is_list: List) -> Dict[str, List[Dict]]: admin_fio = (getattr(company, 'ispdn_fio', '') or '').strip() admin_norm = _norm_name(admin_fio) for isys in is_list: - # Пользователи ИС для вложенного цикла - # (без администратора, чтобы он не дублировался) + # Пользователи ИС для вложенного цикла + # БЕЗ администратора (чтобы он не дублировался в таблице доступа, + # где админ уже выведен отдельной строкой) users_loop = [] for u in (isys.users_list or []): if admin_norm and _norm_name(u) == admin_norm: continue users_loop.append({'fio': u, 'position': ''}) + # ВСЕ пользователи (включая администратора) — для других документов, + # где нужен полный список: + users_loop_all = [{'fio': u, 'position': ''} for u in (isys.users_list or [])] items.append({ 'name': isys.name or '—', 'description': isys.description or '—', @@ -298,6 +302,7 @@ def _build_loop_data(company: Company, is_list: List) -> Dict[str, List[Dict]]: 'pd_count': str(isys.pd_count or '—'), 'users': ', '.join(isys.users_list or []) or '—', 'users_loop': users_loop, + 'users_loop_all': users_loop_all, 'defense_tools_list': ', '.join(isys.defense_tools_list or []) or '—', 'processing_modes': isys.processing_modes or '—', 'pd_subjects': '; '.join(isys.pd_subjects_list or []) or '—',