diff --git a/src/webparts/stroyBot/pages/report/BackLink.tsx b/src/webparts/stroyBot/pages/report/BackLink.tsx
index e643b1c..999e7d4 100644
--- a/src/webparts/stroyBot/pages/report/BackLink.tsx
+++ b/src/webparts/stroyBot/pages/report/BackLink.tsx
@@ -1,18 +1,23 @@
import * as React from 'react';
+import { useRouter } from '../../app/routing/RouterContext';
import { goBack } from './goBack';
import { REPORT_TEXTS } from './texts';
import styles from './ReportPage.module.scss';
-/** «← Вернуться назад» — назад по истории браузера, как в старой форме. */
-export const BackLink: React.FC = () => (
- {
- event.preventDefault();
- goBack();
- }}
- >
- {REPORT_TEXTS.back}
-
-);
+/** «← Вернуться назад» — назад по истории браузера, как в старой форме; без истории — к списку отчётов проекта. */
+export const BackLink: React.FC = () => {
+ const { route, navigate } = useRouter();
+
+ return (
+ {
+ event.preventDefault();
+ goBack(() => navigate({ page: 'reports', projectId: route.projectId }));
+ }}
+ >
+ {REPORT_TEXTS.back}
+
+ );
+};
diff --git a/src/webparts/stroyBot/pages/report/goBack.ts b/src/webparts/stroyBot/pages/report/goBack.ts
index 3ce239f..d579797 100644
--- a/src/webparts/stroyBot/pages/report/goBack.ts
+++ b/src/webparts/stroyBot/pages/report/goBack.ts
@@ -1,8 +1,17 @@
+/** В новой вкладке (так отчёты открываются из списка) история состоит из одной текущей страницы. */
+const NO_HISTORY_LENGTH = 1;
+
/**
* «← Вернуться назад» — как в старом коде: если страница открыта во фрейме, назад идёт верхнее окно,
* при ошибке доступа к нему (другой домен) — текущее.
+ * Если возвращаться некуда (вкладка открыта из списка отчётов), вызывается onNoHistory: в старом коде
+ * кнопка в этом случае ничего не делала — исправлено при проверке T-REP-21.
*/
-export function goBack(): void {
+export function goBack(onNoHistory: () => void): void {
+ if (window.history.length <= NO_HISTORY_LENGTH) {
+ onNoHistory();
+ return;
+ }
try {
if (window.top && window.top !== window) {
window.top.history.back();