From e28f6a38871238fd4e8201753c9c6da15c8bbb54 Mon Sep 17 00:00:00 2001 From: PotapovaA Date: Mon, 29 Jun 2026 19:22:41 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/api/projects.js | 39 ++ web/src/app/Routes.jsx | 2 + .../OrgUnitsAutocompletePaper.jsx | 2 +- .../renderOrgUnitValue.jsx | 0 web/src/components/common/PaginatedList.jsx | 247 +++++++++++++ .../ModalCreateProject.jsx | 0 web/src/pages/ProjectsPage/ProjectCard.jsx | 332 ++++++++++++++++++ web/src/pages/ProjectsPage/ProjectsPage.jsx | 293 ++++++++++++++++ web/src/pages/TaskPage/TaskPage.jsx | 1 - web/src/pages/TasksPage/TasksPage.jsx | 152 ++------ 10 files changed, 944 insertions(+), 124 deletions(-) create mode 100644 web/src/api/projects.js rename web/src/{pages/TasksPage => components/common/OrgUnitsAutocompletePaper}/OrgUnitsAutocompletePaper.jsx (94%) rename web/src/{pages/TasksPage => components/common/OrgUnitsAutocompletePaper}/renderOrgUnitValue.jsx (100%) create mode 100644 web/src/components/common/PaginatedList.jsx rename web/src/pages/{TaskPage => ProjectsPage}/ModalCreateProject.jsx (100%) create mode 100644 web/src/pages/ProjectsPage/ProjectCard.jsx create mode 100644 web/src/pages/ProjectsPage/ProjectsPage.jsx diff --git a/web/src/api/projects.js b/web/src/api/projects.js new file mode 100644 index 0000000..218ec55 --- /dev/null +++ b/web/src/api/projects.js @@ -0,0 +1,39 @@ +import api from "./client"; + +export const ProjectsApi = { + list: (params) => { + return api.get(`/projects`, { params }).then((r) => r.data); + }, + + get: (id) => { + return api.get(`/projects/${id}`).then((r) => r.data); + }, + + create: (data) => { + return api.post("/projects", data).then((r) => r.data); + }, + + update: (id, data) => { + return api.put(`/projects/${id}`, data).then((r) => r.data); + }, + + delete: (id) => { + return api.delete(`/projects/${id}`).then((r) => r.data); + }, + + getTasks: (projectId) => { + return api.get(`/projects/${projectId}/tasks`).then((r) => r.data); + }, + + addTask: (projectId, taskId) => { + return api + .post(`/projects/${projectId}/tasks/${taskId}`) + .then((r) => r.data); + }, + + removeTask: (projectId, taskId) => { + return api + .delete(`/projects/${projectId}/tasks/${taskId}`) + .then((r) => r.data); + }, +}; diff --git a/web/src/app/Routes.jsx b/web/src/app/Routes.jsx index 2069477..7b62aa3 100644 --- a/web/src/app/Routes.jsx +++ b/web/src/app/Routes.jsx @@ -17,6 +17,7 @@ import { CircularProgress } from '@mui/material'; import NewTablePage from '../pages/NewTablePage.jsx'; import TablesTest from '../pages/TablesTest.jsx'; import NewFormTablePage from '../pages/NewFormTablePage.jsx' +import ProjectsPage from '../pages/ProjectsPage/ProjectsPage.jsx'; export const PrivateRoute = () => { const { isAuthenticated, loading } = useAuth(); @@ -37,6 +38,7 @@ export const AppRoutes = () => { }> } /> } /> + }/> } /> } /> } /> diff --git a/web/src/pages/TasksPage/OrgUnitsAutocompletePaper.jsx b/web/src/components/common/OrgUnitsAutocompletePaper/OrgUnitsAutocompletePaper.jsx similarity index 94% rename from web/src/pages/TasksPage/OrgUnitsAutocompletePaper.jsx rename to web/src/components/common/OrgUnitsAutocompletePaper/OrgUnitsAutocompletePaper.jsx index 07d45cd..3b039b1 100644 --- a/web/src/pages/TasksPage/OrgUnitsAutocompletePaper.jsx +++ b/web/src/components/common/OrgUnitsAutocompletePaper/OrgUnitsAutocompletePaper.jsx @@ -1,6 +1,6 @@ import { forwardRef } from 'react'; import { Box, Paper, Typography } from '@mui/material'; -import { CustomCheckbox } from '../../components/common/StyledCheckbox'; +import { CustomCheckbox } from '../StyledCheckbox'; export const OrgUnitsAutocompletePaper = forwardRef( function OrgUnitsAutocompletePaper( diff --git a/web/src/pages/TasksPage/renderOrgUnitValue.jsx b/web/src/components/common/OrgUnitsAutocompletePaper/renderOrgUnitValue.jsx similarity index 100% rename from web/src/pages/TasksPage/renderOrgUnitValue.jsx rename to web/src/components/common/OrgUnitsAutocompletePaper/renderOrgUnitValue.jsx diff --git a/web/src/components/common/PaginatedList.jsx b/web/src/components/common/PaginatedList.jsx new file mode 100644 index 0000000..ce4ee52 --- /dev/null +++ b/web/src/components/common/PaginatedList.jsx @@ -0,0 +1,247 @@ +// src/components/common/PaginatedList/PaginatedList.jsx +import { useState, useEffect } from 'react'; +import { + Box, + Pagination, + PaginationItem, + Select, + MenuItem, + Typography, + Stack, +} from '@mui/material'; +import { CardsSkeleton } from './Skeleton'; +import { + ExportExitButton, + ExportWithTextButton, +} from './Buttons/ButtonsActions'; +import { exportBulkForms, exportSingleForm } from '../../utils/exportForm'; + +/** + * Универсальный компонент для отображения списка с пагинацией и экспортом + * + * @param {Object} props + * @param {Array} props.items - Массив элементов для отображения + * @param {boolean} props.loading - Состояние загрузки + * @param {number} props.totalCount - Общее количество элементов + * @param {number} props.page - Текущая страница + * @param {number} props.limit - Количество элементов на странице + * @param {Function} props.onPageChange - Обработчик изменения страницы + * @param {Function} props.onLimitChange - Обработчик изменения лимита + * @param {Function} props.renderItem - Функция рендеринга элемента + * @param {Function} props.getItemId - Функция получения ID элемента + * @param {Function} props.getItemTitle - Функция получения заголовка элемента + * @param {string} props.entityName - Название сущности (для текстов) + * @param {string} props.emptyMessage - Сообщение при пустом списке + * @param {number} props.skeletonCount - Количество скелетонов + * @param {Object} props.extraActions - Дополнительные действия справа + * @param {boolean} props.enableExport - Включить экспорт + * @param {Array} props.limitOptions - Опции для выбора лимита + * @param {number} props.maxHeight - Максимальная высота контейнера со скроллом + * @param {boolean} props.enableScroll - Включить скролл для списка + */ +export function PaginatedList({ + items = [], + loading = false, + totalCount = 0, + page = 1, + limit = 20, + onPageChange, + onLimitChange, + renderItem, + getItemId, + getItemTitle = (item) => `Элемент ${getItemId(item)}`, + entityName = 'элементов', + emptyMessage = 'Элементы не найдены', + skeletonCount = 20, + extraActions = null, + enableExport = true, + limitOptions = [10, 20, 50, 100, 200], + maxHeight = 'calc(110vh - 300px)', + enableScroll = true, +}) { + const [exportMode, setExportMode] = useState(false); + const [exportList, setExportList] = useState([]); + + // Сброс списка экспорта при переключении режима + useEffect(() => { + setExportList([]); + }, [exportMode]); + + const handleAddToExport = (itemId, checked) => { + if (checked) { + setExportList((prev) => [...prev, itemId]); + } else { + setExportList((prev) => prev.filter((id) => id !== itemId)); + } + }; + + const handleBulkExport = async () => { + await exportBulkForms(exportList); + setExportMode(false); + }; + + const handleSingleExport = (itemId) => { + const item = items.find((item) => getItemId(item) === itemId); + const title = item ? getItemTitle(item) : `Элемент ${itemId}`; + exportSingleForm(itemId, title); + }; + + // Если включен экспорт, передаем его пропсы в дочерние элементы + const renderItemWithExport = (item) => { + if (enableExport) { + return renderItem(item, { + exportMode, + onAddForExport: (checked) => { + handleAddToExport(getItemId(item), checked); + }, + onExportClick: () => { + handleSingleExport(getItemId(item)); + }, + isSelected: exportList.includes(getItemId(item)), + }); + } + return renderItem(item); + }; + + return ( + + {/* Верхняя панель с экспортом и дополнительными действиями */} + {enableExport && ( + + {exportMode && ( + + Выделено {entityName}: {exportList.length} + + )} + + + {!exportMode ? ( + <> + setExportMode(true)} + /> + {extraActions} + + ) : ( + <> + + setExportMode(false)} /> + + )} + + + )} + + {/* Контейнер со скроллом для списка */} + + {/* Список элементов */} + + {loading ? ( + + ) : items.length === 0 ? ( + + + {emptyMessage} + + + ) : ( + items.map((item) => renderItemWithExport(item)) + )} + + + + {/* Пагинация */} + {!loading && items.length > 0 && ( + + + + + Показать на странице: + + + + + Всего: {totalCount} + + + + ( + + )} + /> + + + + )} + + ); +} \ No newline at end of file diff --git a/web/src/pages/TaskPage/ModalCreateProject.jsx b/web/src/pages/ProjectsPage/ModalCreateProject.jsx similarity index 100% rename from web/src/pages/TaskPage/ModalCreateProject.jsx rename to web/src/pages/ProjectsPage/ModalCreateProject.jsx diff --git a/web/src/pages/ProjectsPage/ProjectCard.jsx b/web/src/pages/ProjectsPage/ProjectCard.jsx new file mode 100644 index 0000000..29f281c --- /dev/null +++ b/web/src/pages/ProjectsPage/ProjectCard.jsx @@ -0,0 +1,332 @@ +// src/components/common/ProjectCardComponent/ProjectCardComponent.jsx +import { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import styled from '@emotion/styled'; +import { + Button, + TextField, + FormControl, + FormLabel, + Box, + Stack, + Chip, +} from '@mui/material'; +import { ProjectsApi } from '../../api/projects'; +import { toast } from 'react-toastify'; +import { + CheckBoxCheckSvg, + CheckBoxUncheckSvg, + DateIcon, + Edit, + ExportSvg, + UserIcon, + BuildingIcon, + LocationIcon, +} from '../../components/common/icons/icons'; +import { IconWithContent } from '../../components/common/IconWithContent'; +import { ExportButton } from '../../components/common/Buttons/ButtonsActions'; + +const ProjectCard = styled.div` + width: 26.8rem; + height: 15rem; + display: flex; + padding: 1.25rem; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; + box-sizing: border-box; + border: 0.06rem solid var(--Stroke, rgba(0, 0, 0, 0.1)); + border-radius: 1rem; + box-shadow: + 0rem 2rem 4rem -2rem rgba(0, 0, 0, 0.02), + 0rem 4rem 6rem -1rem rgba(0, 0, 0, 0.02); + background: var(--White, rgba(255, 255, 255, 1)); + overflow: hidden; + cursor: pointer; + position: relative; + + &:hover { + transform: translateY(-5px); + box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12); + } +`; + +const CardHeader = styled.div` + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; +`; + +const ProjectId = styled.div` + font-size: 0.75rem; + font-weight: 400; + line-height: 1rem; + letter-spacing: 0rem; + text-align: left; + color: rgba(0, 0, 0, 0.6); +`; + +const CardBody = styled.div` + width: 100%; + flex: 1; + display: flex; + flex-direction: column; + gap: 0.8125rem; + justify-content: flex-end; + height: 100%; +`; + +const ProjectTitle = styled.div` + font-size: 1rem; + font-weight: 500; + color: var(--Text-Primary, #333); + line-height: 1.63; + margin: 0; + padding: 0; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +`; + +const StatusChip = styled(Chip)` + font-size: 0.7rem; + height: 1.5rem; + background-color: ${({ status }) => { + switch (status) { + case 'active': return '#4caf50'; + case 'completed': return '#2196f3'; + case 'paused': return '#ff9800'; + case 'archived': return '#9e9e9e'; + default: return '#9e9e9e'; + } + }}; + color: white; +`; + +const LevelChip = styled(Chip)` + font-size: 0.6rem; + height: 1.25rem; + background-color: rgba(0, 0, 0, 0.08); + color: rgba(0, 0, 0, 0.7); +`; + +const ProjectInfoGrid = styled.div` + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: 0.25rem; +`; + +const InfoChip = styled(Chip)` + font-size: 0.6rem; + height: 1.25rem; + background-color: rgba(0, 0, 0, 0.05); + color: rgba(0, 0, 0, 0.7); +`; + +const getStatusLabel = (status) => { + const statusMap = { + active: 'Активный', + completed: 'Завершен', + paused: 'Приостановлен', + archived: 'Архивирован', + }; + return statusMap[status] || status || 'Не указан'; +}; + +const getLevelLabel = (level) => { + const levelMap = { + project: 'Проект', + subproject: 'Подпроект', + task: 'Задача', + }; + return levelMap[level] || level || 'Не указан'; +}; + +export const ProjectCardComponent = ({ + project, + exportMode = false, + isLoadingFile = false, + onAddForExport, + onExportClick, +}) => { + const navigate = useNavigate(); + const { + id, + name, + org_unit_name, + year, + status, + level, + project_type, + vsp_format, + placement_type, + object_address, + staff_count, + total_area, + report_count, + parent_id, + } = project; + + const [isEditModalOpen, setEditModalOpen] = useState(false); + const [editedName, setEditedName] = useState(''); + const [currentName, setCurrentName] = useState(name || ''); + const [isChecked, setIsChecked] = useState(false); + + useEffect(() => { + setIsChecked(false); + }, [exportMode]); + + const handleOpenEdit = (event) => { + event.stopPropagation(); + setEditedName(currentName); + setEditModalOpen(true); + }; + + const handleCloseEdit = () => { + setEditModalOpen(false); + }; + + const handleCheckboxClick = (event) => { + event.stopPropagation(); + if (!isLoadingFile) { + setIsChecked(!isChecked); + onAddForExport(!isChecked); + } else { + toast.warning('Файл формируется!'); + } + }; + + const handleExportProject = (event) => { + event.stopPropagation(); + onExportClick?.(id, name); + }; + + const handleNavigate = () => { + if (!exportMode) { + navigate(`/project/${id}`); + } + }; + + const updateProject = async (nextName) => { + try { + await ProjectsApi.update(id, { name: nextName }); + setCurrentName(nextName); + setEditModalOpen(false); + toast.success('Название проекта обновлено'); + } catch (error) { + toast.error( + error?.response?.data?.detail || 'Не удалось обновить название проекта', + ); + } + }; + + const handleSaveName = async () => { + const nextName = editedName.trim(); + if (!nextName) { + toast.error('Название не может быть пустым'); + return; + } + if (nextName === currentName) { + setEditModalOpen(false); + return; + } + await updateProject(nextName); + }; + + const getInitials = (name) => { + if (!name) return '?'; + const words = name.split(' '); + if (words.length >= 2) { + return `${words[0][0]}${words[1][0]}`.toUpperCase(); + } + return name.substring(0, 2).toUpperCase(); + }; + + return ( + <> + + + + ID: {id} + + {!exportMode && ( + <> + {status && ( + + )} + + + + )} + + + + {currentName} + + + {level && ( + + )} + {project_type && ( + + )} + {report_count !== undefined && report_count !== null && ( + + )} + {parent_id && ( + + )} + + + + + + }> + {year || 'Год не указан'} + + }> + {org_unit_name || 'Организация не указана'} + + {object_address && ( + + {object_address} + + )} + {(staff_count || total_area) && ( + + {staff_count && `👥 ${staff_count}`} + {staff_count && total_area && ' | '} + {total_area && `📐 ${total_area} м²`} + + )} + + + {exportMode && ( +
+ {isChecked ? ( + + ) : ( + + )} +
+ )} +
+
+ + ); +}; \ No newline at end of file diff --git a/web/src/pages/ProjectsPage/ProjectsPage.jsx b/web/src/pages/ProjectsPage/ProjectsPage.jsx new file mode 100644 index 0000000..d4f59a0 --- /dev/null +++ b/web/src/pages/ProjectsPage/ProjectsPage.jsx @@ -0,0 +1,293 @@ +// src/pages/ProjectsPage/ProjectsPage.jsx +import { useEffect, useMemo, useState } from 'react'; +import { ProjectsApi } from '../../api/projects'; +import { CardsSkeleton } from '../../components/common/Skeleton'; +import SearchComponent from '../../components/common/SearchComponent'; +import { ProjectCardComponent } from './ProjectCard'; +import { HeaderSwitch } from '../../components/HeaderMenu/HeaderSwitch'; +import { PageContainer, TasksContainer } from '../StyledForPage'; +import { + Box, + FormControl, + Button, + Stack, + Pagination, + PaginationItem, + Select, + MenuItem, + Typography, + IconButton, + Tooltip, +} from '@mui/material'; +import { toast } from 'react-toastify'; +import { ModalCreateProject } from './ModalCreateProject'; +import { + ROLES_NAME_ID, +} from '../../constants'; +import { useAuth } from '../../app/context/AuthProvider'; +import { PrimaryButton } from '../../components/common/Buttons/Buttons'; +import { + ExportExitButton, + ExportWithTextButton, +} from '../../components/common/Buttons/ButtonsActions'; +import { exportBulkForms, exportSingleForm } from '../../utils/exportForm'; +import { WhitePlus } from '../../components/common/icons/icons'; +import { useNavigate } from 'react-router-dom'; +import { PaginatedList } from '../../components/common/PaginatedList'; + + +// Конфигурация для создания проекта +const defaultProjectConfig = { + 'Тип проекта развития': { + type: 'multiselect', + options: [ + 'Открытие ВСП', + 'Закрытие ВСП', + 'Переезд ВСП', + 'Реновация РФ', + 'Открытие УРМ', + ], + placeholder: 'Выберите тип проекта', + defaultValue: null, + }, + 'Название проекта': { + type: 'text', + placeholder: 'Введите название проекта', + defaultValue: '', + }, + 'Формат ВСП': { + type: 'multiselect', + options: [ + 'Фланговый', + 'Типовой', + 'Розничный', + 'МСБ', + 'Лёгкий', + 'Мини', + 'Розничный-киоск', + 'МБО', + 'Офис самообслуживания', + 'Другое', + ], + placeholder: 'Выберите формат ВСП', + defaultValue: null, + }, + 'Адрес объекта': { + type: 'text', + placeholder: 'Введите адрес объекта', + defaultValue: '', + }, + 'Целевая численность, чел.': { + type: 'number', + placeholder: 'Введите число', + defaultValue: 0, + min: 0, + step: 1, + }, + 'Тип размещения': { + type: 'multiselect', + options: ['Собственность', 'Аренда', 'Субаренда'], + placeholder: 'Выберите тип размещения', + defaultValue: null, + }, + 'Площадь размещения, м2': { + type: 'number', + placeholder: 'Введите число', + defaultValue: 0, + min: 0, + step: 1, + }, +}; + +export default function ProjectsPage() { + const navigate = useNavigate(); + const [items, setItems] = useState([]); + const [loading, setLoading] = useState(false); + const [modalOpen, setModalOpen] = useState(false); + const [query, setQuery] = useState(''); + const [statusFilter, setStatusFilter] = useState(''); + const [levelFilter, setLevelFilter] = useState(''); + + // Pagination state + const [page, setPage] = useState(1); + const [limit, setLimit] = useState(20); + const [totalCount, setTotalCount] = useState(0); + + const { user } = useAuth(); + + const [exportMode, setExportMode] = useState(false); + const [exportList, setExportList] = useState([]); + + const openModal = () => { + setModalOpen(true); + }; + + // Маппинг полей из модалки в API + const mapFormDataToApi = (formData) => { + const apiData = { + name: formData['Название проекта'] || '', + project_type: formData['Тип проекта развития'] || null, + vsp_format: formData['Формат ВСП'] || null, + object_address: formData['Адрес объекта'] || '', + staff_count: formData['Целевая численность, чел.'] || 0, + placement_type: formData['Тип размещения'] || null, + total_area: formData['Площадь размещения, м2'] || 0, + // Добавляем значения по умолчанию для обязательных полей + year: new Date().getFullYear(), + org_unit_id: user?.org_unit_id || null, + form_type_code: 'project', // или другое значение по умолчанию + status: 'active', + level: 'project', + }; + return apiData; + }; + + const handleCreateProject = async (formData) => { + try { + const apiData = mapFormDataToApi(formData); + + await ProjectsApi.create(apiData); + + setPage(1); + loadProjects(1, limit); + + setModalOpen(false); + toast.success('Проект успешно создан'); + } catch (error) { + toast.error( + error.response?.data?.detail || + error.response?.data?.message || + 'Ошибка при создании проекта', + ); + } + }; + + const loadProjects = async (currentPage = page, currentLimit = limit) => { + setLoading(true); + try { + const skip = (currentPage - 1) * currentLimit; + const params = { + offset: skip, + limit: currentLimit, + }; + + const res = await ProjectsApi.list(params); + const data = res.result; + + setItems(data); + setTotalCount(res.count); + + } catch (error) { + toast.error('Ошибка загрузки проектов'); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + setPage(1); + loadProjects(1, limit); + }, [query, statusFilter, levelFilter]); + + const handlePageChange = (event, value) => { + setPage(value); + loadProjects(value, limit); + }; + + const handleLimitChange = (event) => { + const newLimit = event.target.value; + setLimit(newLimit); + setPage(1); + loadProjects(1, newLimit); + }; + + useEffect(() => { + loadProjects(page, limit); + }, []); + + useEffect(() => { + setExportList([]); + }, [exportMode]); + + const handleChangeToExportList = (projectId, checked) => { + if (checked) { + setExportList((prev) => [...prev, projectId]); + } else { + const newExportList = exportList.filter((t) => t != projectId); + setExportList(newExportList); + } + }; + + const handleBulkExport = async () => { + await exportBulkForms(exportList); + setExportMode(false); + }; + + const handleSingleExport = (projectId, projectTitle) => { + exportSingleForm(projectId, projectTitle); + }; + + const handleNavigateToTasks = () => { + navigate('/tasks'); + }; + + const handleRefresh = () => { + loadProjects(page, limit); + toast.info('Список проектов обновлен'); + }; + + if (!user) return null; + + return ( + <> + + + + {/* Навигация */} + + + + Управление проектами + + + + ( + + )} + getItemId={(project) => project.id} + getItemTitle={(project) => project.name || 'Проект'} + extraActions={ + user.role_id === ROLES_NAME_ID.admin && ( + }> + Создать проект + + ) + } + /> + + + setModalOpen(false)} + onCreate={handleCreateProject} + config={defaultProjectConfig} + /> + + ); +} \ No newline at end of file diff --git a/web/src/pages/TaskPage/TaskPage.jsx b/web/src/pages/TaskPage/TaskPage.jsx index ae3fcb7..62b22e0 100644 --- a/web/src/pages/TaskPage/TaskPage.jsx +++ b/web/src/pages/TaskPage/TaskPage.jsx @@ -18,7 +18,6 @@ import { toast } from 'react-toastify'; import { SettingModal as SettingStageModal } from '../../components/Stages/SettingModal'; import { PrimaryOutlinedButton } from '../../components/common/Buttons/Buttons'; import { FormsApi } from '../../api/forms'; -import { ModalCreateProject } from './ModalCreateProject'; import { ExportWithTextButton } from '../../components/common/Buttons/ButtonsActions'; import { exportSingleForm } from '../../utils/exportForm'; import TablesList from '../../components/common/TableList/TableList'; diff --git a/web/src/pages/TasksPage/TasksPage.jsx b/web/src/pages/TasksPage/TasksPage.jsx index 00f8933..aee48c2 100644 --- a/web/src/pages/TasksPage/TasksPage.jsx +++ b/web/src/pages/TasksPage/TasksPage.jsx @@ -37,8 +37,9 @@ import { } from '../../components/common/Buttons/ButtonsActions'; import { exportBulkForms, exportSingleForm } from '../../utils/exportForm'; import { WhitePlus } from '../../components/common/icons/icons'; -import { OrgUnitsAutocompletePaper } from './OrgUnitsAutocompletePaper'; -import { renderOrgUnitValue } from './renderOrgUnitValue'; +import { OrgUnitsAutocompletePaper } from '../../components/common/OrgUnitsAutocompletePaper/OrgUnitsAutocompletePaper'; +import { renderOrgUnitValue } from '../../components/common/OrgUnitsAutocompletePaper/renderOrgUnitValue'; +import { PaginatedList } from '../../components/common/PaginatedList'; const modalSelectMenuProps = { sx: { zIndex: 1301 }, @@ -255,128 +256,35 @@ export default function TasksPage() { <> - - {exportMode && Выделено задач: {exportList.length}} - - -
- {/* */} -
- - {!exportMode ? ( - <> - { - setExportMode(true); - }} - > - {user.role_id == ROLES_NAME_ID.admin && ( - }> - Создать задачу - - )} - - ) : ( - <> - - setExportMode(false)} /> - - )} - -
+ - {/* TODO: вернуть, когда будет реализовано на бэке */} - {/* */} - - {loading ? ( - - ) : ( - <> - {items.map((t) => ( - { - handleChangeToExportList(t.id, checked); - }} - onExportClick={handleSingleExport} - /> - ))} - - )} - - - {/* Pagination Footer */} - {!loading && items.length > 0 && ( - - - - - Показать на странице: - - - - - ( - - )} + ( + - {/* Spacer for symmetry */} - - )} + )} + getItemId={(task) => task.id} + getItemTitle={(task) => task.title || 'Задача'} + extraActions={ + user.role_id === ROLES_NAME_ID.admin && ( + }> + Создать задачу + + ) + } + />
Date: Tue, 30 Jun 2026 15:07:21 +0300 Subject: [PATCH 2/6] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=20constants.js=20=D0=B2=20=D0=BF=D0=B0=D0=BF=D0=BA=D1=83=20con?= =?UTF-8?q?stants?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/api/projects.js | 2 +- web/src/app/Routes.jsx | 1 + .../components/HeaderMenu/HeaderSwitch.jsx | 2 +- web/src/components/Stages/AddStagesModal.jsx | 2 +- .../components/Stages/StageInfoForTooltip.jsx | 2 +- .../Stages/StagesTable/StagesTable.jsx | 2 +- web/src/components/common/PaginatedList.jsx | 2 +- web/src/components/common/Selects/Selects.jsx | 2 +- .../common/SwitchFormTask/SwitchFormTask.jsx | 2 +- .../components/common/TableCard/TableCard.jsx | 2 +- .../components/common/TableList/TableList.jsx | 7 +- .../components/common/TaskCardComponent.jsx | 2 +- web/src/{ => constants}/constants.jsx | 0 web/src/constants/projectConfig.jsx | 90 ++++++++ .../AuditLogsPage/AuditLogsPage.jsx | 2 +- .../components/AuditLogsTable.jsx | 2 +- .../AuditLogsPage/utils/transformers.jsx | 2 +- .../pages/AdminPanel/SppsPage/SppsPage.jsx | 2 +- .../AdminPanel/UsersPage/ModalEditUserSsp.jsx | 2 +- .../UsersPage/UserTable/EditUserModal.jsx | 2 +- .../UsersPage/UserTable/UserTable.jsx | 4 +- .../AdminPanel/UsersPage/UserTableForAdd.jsx | 2 +- .../AdminPanel/UsersPage/UsersActionBar.jsx | 2 +- .../pages/AdminPanel/UsersPage/UsersPage.jsx | 4 +- web/src/pages/DictVspPage/DictVspPage.jsx | 2 +- .../components/Modals/ModalEditAddVsp.jsx | 2 +- .../DictVspPage/components/TableDictVsp.jsx | 2 +- web/src/pages/NewFormTablePage.jsx | 2 +- .../pages/ProjectsPage/ModalCreateProject.jsx | 146 ++++++++++++- web/src/pages/ProjectsPage/ProjectCard.jsx | 119 +++++----- web/src/pages/ProjectsPage/ProjectsPage.jsx | 203 +++++++++++------- web/src/pages/TablePage.jsx | 2 +- web/src/pages/TaskPage/TaskPage.jsx | 104 +++++---- web/src/pages/TasksPage/TasksPage.jsx | 3 +- 34 files changed, 513 insertions(+), 214 deletions(-) rename web/src/{ => constants}/constants.jsx (100%) create mode 100644 web/src/constants/projectConfig.jsx diff --git a/web/src/api/projects.js b/web/src/api/projects.js index 218ec55..ae05081 100644 --- a/web/src/api/projects.js +++ b/web/src/api/projects.js @@ -14,7 +14,7 @@ export const ProjectsApi = { }, update: (id, data) => { - return api.put(`/projects/${id}`, data).then((r) => r.data); + return api.patch(`/projects/${id}`, data).then((r) => r.data); }, delete: (id) => { diff --git a/web/src/app/Routes.jsx b/web/src/app/Routes.jsx index 7b62aa3..4387604 100644 --- a/web/src/app/Routes.jsx +++ b/web/src/app/Routes.jsx @@ -41,6 +41,7 @@ export const AppRoutes = () => { }/> } /> } /> + } /> } /> } /> } /> diff --git a/web/src/components/HeaderMenu/HeaderSwitch.jsx b/web/src/components/HeaderMenu/HeaderSwitch.jsx index dcd49f1..561da87 100644 --- a/web/src/components/HeaderMenu/HeaderSwitch.jsx +++ b/web/src/components/HeaderMenu/HeaderSwitch.jsx @@ -4,7 +4,7 @@ import { NavLink } from 'react-router-dom'; import styled from '@emotion/styled'; import { TasksSvg, AdminPanelSvg, DictSvg } from '../common/icons/icons'; import { useAuth } from '../../app/context/AuthProvider'; -import { ROLES_NAME_ID } from '../../constants'; +import { ROLES_NAME_ID } from '../../constants/constants'; const Switch = styled.div` margin-left: 1rem; diff --git a/web/src/components/Stages/AddStagesModal.jsx b/web/src/components/Stages/AddStagesModal.jsx index 4b61bee..cdcec58 100644 --- a/web/src/components/Stages/AddStagesModal.jsx +++ b/web/src/components/Stages/AddStagesModal.jsx @@ -25,7 +25,7 @@ import { StageStatusChip } from './StageStatusChip'; import { formatDateForApi } from './utils'; import CollapsibleTree from '../common/CollapsibleTree'; import { collectLeafColumns } from '../RealtimeTable/utils/columnUtils'; -import { STAGE_ROLE_RUSSIAN_NAME } from '../../constants'; +import { STAGE_ROLE_RUSSIAN_NAME } from '../../constants/constants'; export const AddStagesModal = ({ isOpen, diff --git a/web/src/components/Stages/StageInfoForTooltip.jsx b/web/src/components/Stages/StageInfoForTooltip.jsx index b0e13b3..ec2ef96 100644 --- a/web/src/components/Stages/StageInfoForTooltip.jsx +++ b/web/src/components/Stages/StageInfoForTooltip.jsx @@ -1,6 +1,6 @@ import { Box, Divider, Stack } from '@mui/material'; import { UnLockedSvg } from '../common/icons/icons'; -import { ROLES_ID_RUSSIAN_NAME, EDIT_ACCESS_RUSSIAN } from '../../constants'; +import { ROLES_ID_RUSSIAN_NAME, EDIT_ACCESS_RUSSIAN } from '../../constants/constants'; export const StageInfoForTooltip = ({ stageData = [] }) => { const accessData = stageData[0] || []; diff --git a/web/src/components/Stages/StagesTable/StagesTable.jsx b/web/src/components/Stages/StagesTable/StagesTable.jsx index 8a52ce6..4cef924 100644 --- a/web/src/components/Stages/StagesTable/StagesTable.jsx +++ b/web/src/components/Stages/StagesTable/StagesTable.jsx @@ -20,7 +20,7 @@ import { import { getStageStatus, getStatusColors } from './utils'; import { formatDate } from '../../../utils/formatDate'; import { StageStatusChip } from '../StageStatusChip'; -import { ROLES_NAME_ID, SHEET_NAME, STAGE_ROLE_RUSSIAN_NAME } from '../../../constants'; +import { ROLES_NAME_ID, SHEET_NAME, STAGE_ROLE_RUSSIAN_NAME } from '../../../constants/constants'; import { useAuth } from '../../../app/context/AuthProvider'; export const StagesTable = ({ stages, onEdit, onDelete }) => { diff --git a/web/src/components/common/PaginatedList.jsx b/web/src/components/common/PaginatedList.jsx index ce4ee52..430ce72 100644 --- a/web/src/components/common/PaginatedList.jsx +++ b/web/src/components/common/PaginatedList.jsx @@ -56,7 +56,7 @@ export function PaginatedList({ extraActions = null, enableExport = true, limitOptions = [10, 20, 50, 100, 200], - maxHeight = 'calc(110vh - 300px)', + maxHeight = 'calc(100vh - 300px)', enableScroll = true, }) { const [exportMode, setExportMode] = useState(false); diff --git a/web/src/components/common/Selects/Selects.jsx b/web/src/components/common/Selects/Selects.jsx index 4787aa1..60c1e8b 100644 --- a/web/src/components/common/Selects/Selects.jsx +++ b/web/src/components/common/Selects/Selects.jsx @@ -1,5 +1,5 @@ import { useEffect, useState, useRef } from 'react'; -import { EDIT_ACCESS_RUSSIAN, ROLES_ID_RUSSIAN_NAME } from '../../../constants'; +import { EDIT_ACCESS_RUSSIAN, ROLES_ID_RUSSIAN_NAME } from '../../../constants/constants'; import { SelectWrapper, SelectContainer, diff --git a/web/src/components/common/SwitchFormTask/SwitchFormTask.jsx b/web/src/components/common/SwitchFormTask/SwitchFormTask.jsx index b48d6d9..4e2eab0 100644 --- a/web/src/components/common/SwitchFormTask/SwitchFormTask.jsx +++ b/web/src/components/common/SwitchFormTask/SwitchFormTask.jsx @@ -1,5 +1,5 @@ import { useAuth } from '../../../app/context/AuthProvider'; -import { ROLES_NAME_ID } from '../../../constants'; +import { ROLES_NAME_ID } from '../../../constants/constants'; import { Switch, Buttons, StyledNavLink } from './SwitchFormTask.style'; export function SwitchFormTask() { diff --git a/web/src/components/common/TableCard/TableCard.jsx b/web/src/components/common/TableCard/TableCard.jsx index 367d163..1ddc649 100644 --- a/web/src/components/common/TableCard/TableCard.jsx +++ b/web/src/components/common/TableCard/TableCard.jsx @@ -1,4 +1,4 @@ -import { DIRECTION_TRANSLATE, FORM_TYPE_OPTIONS } from '../../../constants'; +import { DIRECTION_TRANSLATE, FORM_TYPE_OPTIONS } from '../../../constants/constants'; import { Section, SectionStartPart, diff --git a/web/src/components/common/TableList/TableList.jsx b/web/src/components/common/TableList/TableList.jsx index e0afa57..4dcb645 100644 --- a/web/src/components/common/TableList/TableList.jsx +++ b/web/src/components/common/TableList/TableList.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { Box, Stack, Typography } from '@mui/material'; import { useNavigate } from 'react-router-dom'; import TableCard from '../TableCard/TableCard'; @@ -12,6 +12,9 @@ const TablesList = ({ formInfo }) => { const navigate = useNavigate(); + const isProject = useMemo(() => { + return !!projects; + }, [projects]) const handleNavigate = (path) => { navigate(path); @@ -22,7 +25,7 @@ const TablesList = ({ if (!formInfo){ return; } - const path = `${basePath}/form/${formInfo.id}/form-type/${formInfo.form_type_code}/${table.sheet}/${table?.direction}`; + const path = `${basePath}/form/${formInfo.id}/form-type/${isProject ? 'project' : formInfo.form_type_code}/${table.sheet}/${table?.direction}`; return ( { diff --git a/web/src/pages/DictVspPage/components/Modals/ModalEditAddVsp.jsx b/web/src/pages/DictVspPage/components/Modals/ModalEditAddVsp.jsx index 60d32ed..f08e7eb 100644 --- a/web/src/pages/DictVspPage/components/Modals/ModalEditAddVsp.jsx +++ b/web/src/pages/DictVspPage/components/Modals/ModalEditAddVsp.jsx @@ -14,7 +14,7 @@ import { PrimaryButton, } from '../../../../components/common/Buttons/Buttons'; import { useAuth } from '../../../../app/context/AuthProvider'; -import { ROLES_NAME_ID } from '../../../../constants'; +import { ROLES_NAME_ID } from '../../../../constants/constants'; import { ModalContainer, FieldContainer, diff --git a/web/src/pages/DictVspPage/components/TableDictVsp.jsx b/web/src/pages/DictVspPage/components/TableDictVsp.jsx index d1c4397..580b3b2 100644 --- a/web/src/pages/DictVspPage/components/TableDictVsp.jsx +++ b/web/src/pages/DictVspPage/components/TableDictVsp.jsx @@ -11,7 +11,7 @@ import { PrimaryOutlinedButton, } from '../../../components/common/Buttons/Buttons'; import { useAuth } from '../../../app/context/AuthProvider'; -import { ROLES_NAME_ID } from '../../../constants'; +import { ROLES_NAME_ID } from '../../../constants/constants'; import ModalExport from './Modals/ModalExport'; const TableDictVsp = ({ diff --git a/web/src/pages/NewFormTablePage.jsx b/web/src/pages/NewFormTablePage.jsx index e144ff0..ac51181 100644 --- a/web/src/pages/NewFormTablePage.jsx +++ b/web/src/pages/NewFormTablePage.jsx @@ -8,7 +8,7 @@ import { useParams } from 'react-router-dom'; import { RealtimeProvider } from '../components/RealtimeTable/contexts/RealtimeContext'; import { useAuth } from '../app/context/AuthProvider'; import { BackButton } from '../components/common/Buttons/BackButton'; -import { SHEET_NAME } from '../constants'; +import { SHEET_NAME } from '../constants/constants'; const TableInfo = ({ formId, sheetName }) => { const portalContent = ( diff --git a/web/src/pages/ProjectsPage/ModalCreateProject.jsx b/web/src/pages/ProjectsPage/ModalCreateProject.jsx index 5f7034a..20c3f94 100644 --- a/web/src/pages/ProjectsPage/ModalCreateProject.jsx +++ b/web/src/pages/ProjectsPage/ModalCreateProject.jsx @@ -1,4 +1,5 @@ -import { useState } from 'react'; +// src/components/common/ProjectCardComponent/ModalCreateProject.jsx +import { useState, useEffect } from 'react'; import { Box, Button, Divider, TextField, Typography } from '@mui/material'; import SelectWithOptions from '../AdminPanel/components/SelectWithOptions'; import Modal from '../../components/common/Modal/Modal'; @@ -9,25 +10,103 @@ export const ModalCreateProject = ({ onClose, onCreate, config = {}, + initialData = null, + isEdit = false, + projectId = null, }) => { const [projectData, setProjectData] = useState(() => { - const initialData = {}; + // Если есть initialData, используем её, иначе создаем из конфига + if (initialData) { + return { ...initialData }; + } + const initial = {}; Object.keys(config).forEach((key) => { - initialData[key] = config[key].defaultValue; + initial[key] = config[key].defaultValue; }); - return initialData; + return initial; }); + const [errors, setErrors] = useState({}); + + // Обновляем данные при изменении initialData + useEffect(() => { + if (initialData) { + setProjectData({ ...initialData }); + } else { + const initial = {}; + Object.keys(config).forEach((key) => { + initial[key] = config[key].defaultValue; + }); + setProjectData(initial); + } + setErrors({}); + }, [initialData, config]); + const handleChange = (field, value) => { setProjectData((prev) => ({ ...prev, [field]: value, })); + // Очищаем ошибку для поля при изменении + if (errors[field]) { + setErrors((prev) => ({ + ...prev, + [field]: undefined, + })); + } + }; + + const validateField = (fieldName, config) => { + if (config.required_field) { + const value = projectData[fieldName]; + + // Проверка для разных типов полей + if (config.type === 'multiselect') { + if (!value || (Array.isArray(value) && value.length === 0) || value === '') { + return `Поле "${fieldName}" обязательно для заполнения`; + } + } else if (config.type === 'text') { + if (!value || value.trim() === '') { + return `Поле "${fieldName}" обязательно для заполнения`; + } + } else if (config.type === 'number') { + if (value === null || value === undefined || value === '') { + return `Поле "${fieldName}" обязательно для заполнения`; + } + // Проверка на минимальное значение + if (config.min !== undefined && Number(value) < config.min) { + return `Значение должно быть не меньше ${config.min}`; + } + // Проверка на максимальное значение + if (config.max !== undefined && Number(value) > config.max) { + return `Значение должно быть не больше ${config.max}`; + } + } + } + return null; + }; + + const validateAllFields = () => { + const newErrors = {}; + let hasErrors = false; + + Object.entries(config).forEach(([fieldName, fieldConfig]) => { + const error = validateField(fieldName, fieldConfig); + if (error) { + newErrors[fieldName] = error; + hasErrors = true; + } + }); + + setErrors(newErrors); + return !hasErrors; }; const handleClickCreate = () => { - onCreate(projectData); - onClose(); + if (validateAllFields()) { + onCreate(projectData); + // Не закрываем модалку здесь, пусть это делает родительский компонент + } }; const handleClose = () => { @@ -36,10 +115,14 @@ export const ModalCreateProject = ({ resetData[key] = config[key].defaultValue; }); setProjectData(resetData); + setErrors({}); onClose(); }; const renderField = (fieldName, config) => { + const hasError = !!errors[fieldName]; + const errorText = errors[fieldName]; + switch (config.type) { case 'multiselect': return ( @@ -50,9 +133,13 @@ export const ModalCreateProject = ({ fontWeight: '400', fontSize: '0.75rem', paddingBottom: '.25rem', + color: hasError ? 'var(--error-color, #d32f2f)' : 'var(--grey-dark)', }} > {fieldName} + {config.required_field && ( + * + )} handleChange(fieldName, value)} width="28.25rem" + style={{ + borderColor: hasError ? 'var(--error-color, #d32f2f)' : undefined, + borderWidth: hasError ? '2px' : undefined, + }} /> + {hasError && ( + + {errorText} + + )}
); @@ -73,11 +175,14 @@ export const ModalCreateProject = ({ sx={{ fontWeight: '400', fontSize: '0.75rem', - color: 'var(--grey-dark)', + color: hasError ? 'var(--error-color, #d32f2f)' : 'var(--grey-dark)', paddingBottom: '.25rem', }} > {fieldName} + {config.required_field && ( + * + )} handleChange(fieldName, e.target.value)} placeholder={config.placeholder} size="small" + error={hasError} + helperText={hasError ? errorText : ''} + FormHelperTextProps={{ + sx: { + marginLeft: 0, + fontSize: '0.75rem', + }, + }} />
); @@ -97,11 +210,14 @@ export const ModalCreateProject = ({ sx={{ fontWeight: '400', fontSize: '0.75rem', - color: 'var(--grey-dark)', + color: hasError ? 'var(--error-color, #d32f2f)' : 'var(--grey-dark)', paddingBottom: '.25rem', }} > {fieldName} + {config.required_field && ( + * + )} ); @@ -136,7 +260,7 @@ export const ModalCreateProject = ({ return ( - Создать + {isEdit ? 'Сохранить' : 'Создать'} } @@ -180,4 +304,4 @@ export const ModalCreateProject = ({ ); -}; +}; \ No newline at end of file diff --git a/web/src/pages/ProjectsPage/ProjectCard.jsx b/web/src/pages/ProjectsPage/ProjectCard.jsx index 29f281c..15ed15c 100644 --- a/web/src/pages/ProjectsPage/ProjectCard.jsx +++ b/web/src/pages/ProjectsPage/ProjectCard.jsx @@ -25,6 +25,7 @@ import { } from '../../components/common/icons/icons'; import { IconWithContent } from '../../components/common/IconWithContent'; import { ExportButton } from '../../components/common/Buttons/ButtonsActions'; +import { ModalCreateProject } from './ModalCreateProject'; const ProjectCard = styled.div` width: 26.8rem; @@ -137,17 +138,9 @@ const getStatusLabel = (status) => { return statusMap[status] || status || 'Не указан'; }; -const getLevelLabel = (level) => { - const levelMap = { - project: 'Проект', - subproject: 'Подпроект', - task: 'Задача', - }; - return levelMap[level] || level || 'Не указан'; -}; - export const ProjectCardComponent = ({ project, + projectDataInit, exportMode = false, isLoadingFile = false, onAddForExport, @@ -172,22 +165,41 @@ export const ProjectCardComponent = ({ } = project; const [isEditModalOpen, setEditModalOpen] = useState(false); - const [editedName, setEditedName] = useState(''); const [currentName, setCurrentName] = useState(name || ''); const [isChecked, setIsChecked] = useState(false); + const [editFormData, setEditFormData] = useState({}); + const [projectData, setProjectData] = useState(projectDataInit); useEffect(() => { setIsChecked(false); }, [exportMode]); + + + // Функция для подготовки данных проекта к редактированию + const prepareProjectDataForEdit = () => { + return { + 'ССП/РФ': project.org_unit_id || null, + 'Год': year || null, + 'Тип проекта развития': project_type || null, + 'Название проекта': currentName, + 'Формат ВСП': vsp_format || null, + 'Адрес объекта': object_address || '', + 'Целевая численность, чел.': staff_count || 0, + 'Тип размещения': placement_type || null, + 'Площадь размещения, м2': total_area || 0, + }; + }; + const handleOpenEdit = (event) => { event.stopPropagation(); - setEditedName(currentName); + setEditFormData(prepareProjectDataForEdit()); setEditModalOpen(true); }; const handleCloseEdit = () => { setEditModalOpen(false); + setEditFormData({}); }; const handleCheckboxClick = (event) => { @@ -211,30 +223,39 @@ export const ProjectCardComponent = ({ } }; - const updateProject = async (nextName) => { + // Обновленная функция обновления проекта + const updateProject = async (formData) => { try { - await ProjectsApi.update(id, { name: nextName }); - setCurrentName(nextName); + const projectData = { + name: formData['Название проекта'] || currentName, + project_type: formData['Тип проекта развития'] || null, + vsp_format: formData['Формат ВСП'] || null, + object_address: formData['Адрес объекта'] || '', + staff_count: Number(formData['Целевая численность, чел.']) || 0, + placement_type: formData['Тип размещения'] || null, + total_area: Number(formData['Площадь размещения, м2']) || 0, + year: formData['Год'] ? Number(formData['Год']) : null, + branch_id: formData['ССП/РФ'] || null, + }; + + await ProjectsApi.update(id, projectData); + + // Обновляем локальные данные + setCurrentName(projectData.name); setEditModalOpen(false); - toast.success('Название проекта обновлено'); + toast.success('Данные проекта успешно обновлены'); + + // Можно добавить рефреш данных или перезагрузку страницы + window.location.reload(); // или используйте callback для обновления списка } catch (error) { toast.error( - error?.response?.data?.detail || 'Не удалось обновить название проекта', + error?.response?.data?.detail || 'Не удалось обновить данные проекта', ); } }; - const handleSaveName = async () => { - const nextName = editedName.trim(); - if (!nextName) { - toast.error('Название не может быть пустым'); - return; - } - if (nextName === currentName) { - setEditModalOpen(false); - return; - } - await updateProject(nextName); + const handleSaveProject = async (formData) => { + await updateProject(formData); }; const getInitials = (name) => { @@ -252,18 +273,21 @@ export const ProjectCardComponent = ({ ID: {id} - + {!exportMode && ( <> {status && ( - )} - - + {/* {Пока нет редактирование + экспорт} */} + {/* + */} )} @@ -272,18 +296,13 @@ export const ProjectCardComponent = ({ {currentName} - {level && ( - - )} {project_type && ( )} {report_count !== undefined && report_count !== null && ( )} - {parent_id && ( - - )} + @@ -302,18 +321,6 @@ export const ProjectCardComponent = ({ }> {org_unit_name || 'Организация не указана'} - {object_address && ( - - {object_address} - - )} - {(staff_count || total_area) && ( - - {staff_count && `👥 ${staff_count}`} - {staff_count && total_area && ' | '} - {total_area && `📐 ${total_area} м²`} - - )} {exportMode && ( @@ -327,6 +334,16 @@ export const ProjectCardComponent = ({ )} + + ); }; \ No newline at end of file diff --git a/web/src/pages/ProjectsPage/ProjectsPage.jsx b/web/src/pages/ProjectsPage/ProjectsPage.jsx index d4f59a0..29bd04a 100644 --- a/web/src/pages/ProjectsPage/ProjectsPage.jsx +++ b/web/src/pages/ProjectsPage/ProjectsPage.jsx @@ -1,4 +1,3 @@ -// src/pages/ProjectsPage/ProjectsPage.jsx import { useEffect, useMemo, useState } from 'react'; import { ProjectsApi } from '../../api/projects'; import { CardsSkeleton } from '../../components/common/Skeleton'; @@ -18,12 +17,14 @@ import { Typography, IconButton, Tooltip, + TextField, + Autocomplete, } from '@mui/material'; import { toast } from 'react-toastify'; import { ModalCreateProject } from './ModalCreateProject'; import { ROLES_NAME_ID, -} from '../../constants'; +} from '../../constants/constants'; import { useAuth } from '../../app/context/AuthProvider'; import { PrimaryButton } from '../../components/common/Buttons/Buttons'; import { @@ -34,79 +35,20 @@ import { exportBulkForms, exportSingleForm } from '../../utils/exportForm'; import { WhitePlus } from '../../components/common/icons/icons'; import { useNavigate } from 'react-router-dom'; import { PaginatedList } from '../../components/common/PaginatedList'; +import { DEFAULT_PROJECT_CONFIG } from '../../constants/projectConfig'; +import { SspApi } from '../../api/ssp'; - -// Конфигурация для создания проекта -const defaultProjectConfig = { - 'Тип проекта развития': { - type: 'multiselect', - options: [ - 'Открытие ВСП', - 'Закрытие ВСП', - 'Переезд ВСП', - 'Реновация РФ', - 'Открытие УРМ', - ], - placeholder: 'Выберите тип проекта', - defaultValue: null, - }, - 'Название проекта': { - type: 'text', - placeholder: 'Введите название проекта', - defaultValue: '', - }, - 'Формат ВСП': { - type: 'multiselect', - options: [ - 'Фланговый', - 'Типовой', - 'Розничный', - 'МСБ', - 'Лёгкий', - 'Мини', - 'Розничный-киоск', - 'МБО', - 'Офис самообслуживания', - 'Другое', - ], - placeholder: 'Выберите формат ВСП', - defaultValue: null, - }, - 'Адрес объекта': { - type: 'text', - placeholder: 'Введите адрес объекта', - defaultValue: '', - }, - 'Целевая численность, чел.': { - type: 'number', - placeholder: 'Введите число', - defaultValue: 0, - min: 0, - step: 1, - }, - 'Тип размещения': { - type: 'multiselect', - options: ['Собственность', 'Аренда', 'Субаренда'], - placeholder: 'Выберите тип размещения', - defaultValue: null, - }, - 'Площадь размещения, м2': { - type: 'number', - placeholder: 'Введите число', - defaultValue: 0, - min: 0, - step: 1, - }, -}; +export { DEFAULT_PROJECT_CONFIG } from '../../constants/projectConfig'; export default function ProjectsPage() { const navigate = useNavigate(); const [items, setItems] = useState([]); const [loading, setLoading] = useState(false); const [modalOpen, setModalOpen] = useState(false); - const [query, setQuery] = useState(''); - const [statusFilter, setStatusFilter] = useState(''); - const [levelFilter, setLevelFilter] = useState(''); + + // Новые фильтры + const [yearFilter, setYearFilter] = useState(''); + const [branchFilter, setBranchFilter] = useState(''); // Pagination state const [page, setPage] = useState(1); @@ -118,11 +60,47 @@ export default function ProjectsPage() { const [exportMode, setExportMode] = useState(false); const [exportList, setExportList] = useState([]); + const [projectData, setProjectData] = useState(DEFAULT_PROJECT_CONFIG); + + // Получаем список годов для фильтра (можно динамически или задать диапазон) + const yearOptions = useMemo(() => { + const currentYear = new Date().getFullYear(); + const years = []; + for (let year = currentYear - 5; year <= currentYear + 2; year++) { + years.push(year); + } + return years; + }, []); + + useEffect(() => { + if (!user) return; + if (user.role_id == ROLES_NAME_ID.admin) { + SspApi.getAll().then(data => { + if (data.success) { + setProjectData(prev => ({ + ...prev, 'ССП/РФ': { + ...prev['ССП/РФ'], + options: data.result + } + })) + return; + } + toast.error('Ошибка при получении ССП/РФ'); + }); + return; + } + setProjectData(prev => ({ + ...prev, 'ССП/РФ': { + ...prev['ССП/РФ'], + options: user.org_units, + } + })) + }, [user]) + const openModal = () => { setModalOpen(true); }; - // Маппинг полей из модалки в API const mapFormDataToApi = (formData) => { const apiData = { name: formData['Название проекта'] || '', @@ -132,12 +110,9 @@ export default function ProjectsPage() { staff_count: formData['Целевая численность, чел.'] || 0, placement_type: formData['Тип размещения'] || null, total_area: formData['Площадь размещения, м2'] || 0, - // Добавляем значения по умолчанию для обязательных полей - year: new Date().getFullYear(), - org_unit_id: user?.org_unit_id || null, - form_type_code: 'project', // или другое значение по умолчанию - status: 'active', - level: 'project', + year: formData['Год'] || null, + branch_id: formData['ССП/РФ'] || null, + }; return apiData; }; @@ -169,6 +144,9 @@ export default function ProjectsPage() { const params = { offset: skip, limit: currentLimit, + // Добавляем фильтры в параметры запроса + ...(yearFilter && { year: parseInt(yearFilter) }), + ...(branchFilter && { branch_id: parseInt(branchFilter.id) }), }; const res = await ProjectsApi.list(params); @@ -184,10 +162,11 @@ export default function ProjectsPage() { } }; + // Сбрасываем страницу при изменении любых фильтров useEffect(() => { setPage(1); loadProjects(1, limit); - }, [query, statusFilter, levelFilter]); + }, [yearFilter, branchFilter]); const handlePageChange = (event, value) => { setPage(value); @@ -201,6 +180,13 @@ export default function ProjectsPage() { loadProjects(1, newLimit); }; + // Сброс всех фильтров + const handleClearFilters = () => { + setYearFilter(''); + setBranchFilter(''); + setPage(1); + }; + useEffect(() => { loadProjects(page, limit); }, []); @@ -253,6 +239,68 @@ export default function ProjectsPage() { + {/* Фильтры */} + + + {/* Фильтр по году */} + + + + + {/* Фильтр по ССП/РФ */} + + option.title || option.name || '-'} + value={ + branchFilter + } + onChange={(event, newValue) => { + setBranchFilter(newValue); + }} + sx={{ height: '2.5rem', minWidth: '21.25rem' }} + renderInput={(params) => ( + + )} + /> + + + + )} @@ -286,7 +335,7 @@ export default function ProjectsPage() { open={modalOpen} onClose={() => setModalOpen(false)} onCreate={handleCreateProject} - config={defaultProjectConfig} + config={projectData} /> ); diff --git a/web/src/pages/TablePage.jsx b/web/src/pages/TablePage.jsx index d678eed..4540c9e 100644 --- a/web/src/pages/TablePage.jsx +++ b/web/src/pages/TablePage.jsx @@ -57,7 +57,7 @@ export default function TablePage() { const connection = connectToTable(tableId, user?.id, { onError: () => { - toast.error('Ошибка подключения к серверу реального времени'); + toast.error('Ошибка подключения к серверу'); }, onClose: (event) => { if (isUnmountingRef.current) { diff --git a/web/src/pages/TaskPage/TaskPage.jsx b/web/src/pages/TaskPage/TaskPage.jsx index 62b22e0..9dfdfd9 100644 --- a/web/src/pages/TaskPage/TaskPage.jsx +++ b/web/src/pages/TaskPage/TaskPage.jsx @@ -3,6 +3,7 @@ import { createPortal } from 'react-dom'; import { useParams, useNavigate } from 'react-router-dom'; import { TasksApi } from '../../api/tasks'; import { TablesApi } from '../../api/tables'; +import { ProjectsApi } from '../../api/projects'; // Добавьте импорт API для проектов import { TaskInfoContainer, NameTask, @@ -21,13 +22,13 @@ import { FormsApi } from '../../api/forms'; import { ExportWithTextButton } from '../../components/common/Buttons/ButtonsActions'; import { exportSingleForm } from '../../utils/exportForm'; import TablesList from '../../components/common/TableList/TableList'; -import { DIRECTION_TRANSLATE, FORM_TYPE_TRANSLATE, SHEET_NAME } from '../../constants'; +import { DIRECTION_TRANSLATE, FORM_TYPE_TRANSLATE, SHEET_NAME } from '../../constants/constants'; -const TaskInfo = ({ task }) => { +const TaskInfo = ({ task, isProject }) => { const portalContent = ( - - {FORM_TYPE_TRANSLATE[task.form_type_code] || ''} + + {isProject ? 'Проект' : FORM_TYPE_TRANSLATE[task.form_type_code] || ''} ); @@ -39,9 +40,13 @@ const TaskInfo = ({ task }) => { }; export default function TaskPage() { - const { taskId } = useParams(); + const { taskId, projectId } = useParams(); const navigate = useNavigate(); - const id = Number(taskId); + + // Определяем, что у нас за ID и какой тип + const isProject = !!projectId; + const id = isProject ? Number(projectId) : Number(taskId); + const [task, setTask] = useState(null); const [tables, setTables] = useState([]); const [isLoading, setIsLoading] = useState(false); @@ -50,23 +55,42 @@ export default function TaskPage() { const [modalProjectOpen, setModalProjectOpen] = useState(false); const [tempProjects, setTempProjects] = useState([]); const [projects, setProjects] = useState([]); + const [isProjectData, setIsProjectData] = useState(false); useEffect(() => { - const getSheets = async () => { + const getData = async () => { setIsLoading(true); try { - const data = await TasksApi.getSheets(id); - // Преобразуем данные с учетом direction - const mappedTables = data.result.all_sheets.map(sheet => ({ - name: SHEET_NAME[sheet.sheet_name] || sheet.sheet_name, - sheet: sheet.sheet_name, - direction: sheet.direction, - })); - //пока скрыт - setTables(mappedTables.filter(t => t.sheet !== "OTCH9F",)); + if (isProject) { + // Получаем информацию о проекте + const projectData = await ProjectsApi.get(id); + setTask(projectData.result); + setIsProjectData(true); + console.log(projectData.result.reports); + + const mappedTables = projectData.result.reports.map(sheet => ({ + name: SHEET_NAME[sheet.report_type] || sheet.report_type, + sheet: sheet.report_type, + })); + setTables(mappedTables); + } else { + // Получаем информацию о задаче + const taskData = await TasksApi.getById(id); + setTask(taskData.result); + setIsProjectData(false); + + // Получаем таблицы задачи + const tablesData = await TasksApi.getSheets(id); + const mappedTables = tablesData.result.all_sheets.map(sheet => ({ + name: SHEET_NAME[sheet.sheet_name] || sheet.sheet_name, + sheet: sheet.sheet_name, + direction: sheet.direction, + })); + setTables(mappedTables.filter(t => t.sheet !== "OTCH9F")); + } } catch (error) { toast.error( - error?.response?.data?.detail || 'Ошибка получения данных задачи', + error?.response?.data?.detail || `Ошибка получения данных ${isProject ? 'проекта' : 'задачи'}`, ); } finally { setIsLoading(false); @@ -74,27 +98,11 @@ export default function TaskPage() { }; if (Number.isFinite(id)) { - getSheets(); + getData(); } - }, [id]); + }, [id, isProject]); - useEffect(() => { - const getFormInfo = async () => { - setIsLoading(true); - try { - const data = await TasksApi.getById(id); - setTask(data.result); - } catch (error) { - // обработка ошибки - } finally { - setIsLoading(false); - } - }; - - if (Number.isFinite(id)) { - getFormInfo(); - } - }, [id]); + // Объединили два useEffect в один const handleCreateProject = (projectData) => { // логика создания проекта @@ -106,6 +114,14 @@ export default function TaskPage() { return searchString.includes(query.toLowerCase()); }); + // Функция для экспорта + const handleExport = () => { + const fileName = isProject + ? `project_${task?.title || id}` + : `form_${task?.title || taskId}`; + exportSingleForm(id, fileName); + }; + if (isLoading) { return (
@@ -116,7 +132,7 @@ export default function TaskPage() { return ( <> - {task && } + {task && } - exportSingleForm(taskId, task?.title ?? 'form')} - /> + setModalStageOpen(true)} @@ -155,9 +169,10 @@ export default function TaskPage() { setModalStageOpen(false)} - taskId={taskId} - mode="task" - formTypeCode={task?.form_type_code || ''} + taskId={isProject ? undefined : taskId} + projectId={isProject ? projectId : undefined} + mode={isProject ? "project" : "task"} + formTypeCode={ task?.form_type_code || ''} sheets={tables} /> @@ -168,8 +183,9 @@ export default function TaskPage() { query={query} projects={projects} filteredTables={filteredTables} - basePath="/table" + basePath={"/table"} formInfo={task} + isProject={isProject} /> diff --git a/web/src/pages/TasksPage/TasksPage.jsx b/web/src/pages/TasksPage/TasksPage.jsx index aee48c2..f9bb40a 100644 --- a/web/src/pages/TasksPage/TasksPage.jsx +++ b/web/src/pages/TasksPage/TasksPage.jsx @@ -27,7 +27,7 @@ import { ORG_UNIT_TYPE_OPTIONS, ROLES_NAME_ID, FORM_TYPE_TRANSLATE -} from '../../constants'; +} from '../../constants/constants'; import { useAuth } from '../../app/context/AuthProvider'; import { SspApi } from '../../api/ssp'; import { PrimaryButton } from '../../components/common/Buttons/Buttons'; @@ -256,7 +256,6 @@ export default function TasksPage() { <> - Date: Thu, 2 Jul 2026 14:43:35 +0300 Subject: [PATCH 3/6] projects --- web/src/api/dict-vsp.js | 6 +- web/src/api/projects.js | 17 +- web/src/app/Routes.jsx | 2 +- .../RealtimeTable/RealtimeTable.jsx | 8 +- .../SettingPanel/SettingPanel.jsx | 66 +- .../RealtimeTable/constants/FORM_2/AHR.js | 5481 ++++++++--------- .../RealtimeTable/constants/FORM_2/CAP.js | 736 +-- .../RealtimeTable/constants/FORM_2/OPER.js | 973 ++- .../RealtimeTable/constants/FORM_3/LP.js | 555 -- .../RealtimeTable/constants/FORM_3/PROJECT.js | 577 -- .../RealtimeTable/constants/FORM_3/TR.js | 555 -- .../constants/PROJECT/CURRENT_EXPENSES.js | 1003 +++ .../RealtimeTable/constants/PROJECT/LIMIT.js | 1003 +++ .../RealtimeTable/contexts/RealtimeContext.js | 40 +- .../RealtimeTable/hooks/useRealtimeData.js | 8 +- .../RealtimeTable/hooks/useWebSocket.js | 15 - .../components/common/NavigationToggle.jsx | 33 + web/src/components/common/PaginatedList.jsx | 70 +- .../components/common/TableList/TableList.jsx | 9 +- web/src/pages/NewFormTablePage.jsx | 20 +- web/src/pages/ProjectsPage/ProjectsPage.jsx | 114 +- web/src/pages/StyledForPage.jsx | 3 +- web/src/pages/TaskPage/TaskPage.jsx | 4 +- web/src/pages/TasksPage/TasksPage.jsx | 10 +- web/src/utils/exportFile.js | 64 + web/src/utils/exportForm.js | 48 - 26 files changed, 5811 insertions(+), 5609 deletions(-) delete mode 100644 web/src/components/RealtimeTable/constants/FORM_3/LP.js delete mode 100644 web/src/components/RealtimeTable/constants/FORM_3/PROJECT.js delete mode 100644 web/src/components/RealtimeTable/constants/FORM_3/TR.js create mode 100644 web/src/components/RealtimeTable/constants/PROJECT/CURRENT_EXPENSES.js create mode 100644 web/src/components/RealtimeTable/constants/PROJECT/LIMIT.js create mode 100644 web/src/components/common/NavigationToggle.jsx create mode 100644 web/src/utils/exportFile.js delete mode 100644 web/src/utils/exportForm.js diff --git a/web/src/api/dict-vsp.js b/web/src/api/dict-vsp.js index 6bf40c6..43cf247 100644 --- a/web/src/api/dict-vsp.js +++ b/web/src/api/dict-vsp.js @@ -21,7 +21,7 @@ export const DictVspApi = { responseType: "blob", }); }, - getDropdownVsp(params){ - return api.get(`/dict/info/dropdown`, params).then((r) => r.data); - } + getDropdownVsp(params) { + return api.get(`/dict/info/dropdown`, { params }).then((r) => r.data); + }, }; diff --git a/web/src/api/projects.js b/web/src/api/projects.js index ae05081..1e2397f 100644 --- a/web/src/api/projects.js +++ b/web/src/api/projects.js @@ -21,19 +21,14 @@ export const ProjectsApi = { return api.delete(`/projects/${id}`).then((r) => r.data); }, - getTasks: (projectId) => { - return api.get(`/projects/${projectId}/tasks`).then((r) => r.data); - }, - - addTask: (projectId, taskId) => { + getTableData: (id, sheetName, year) => { return api - .post(`/projects/${projectId}/tasks/${taskId}`) + .get(`/projects/${id}/report/${year}/${sheetName}`) .then((r) => r.data); }, - - removeTask: (projectId, taskId) => { - return api - .delete(`/projects/${projectId}/tasks/${taskId}`) - .then((r) => r.data); + export: (id, year, sheetName) => { + return api.get(`/export/project/${id}/report/${year}/${sheetName}`, { + responseType: "blob", + }); }, }; diff --git a/web/src/app/Routes.jsx b/web/src/app/Routes.jsx index 4387604..d0945a3 100644 --- a/web/src/app/Routes.jsx +++ b/web/src/app/Routes.jsx @@ -52,7 +52,7 @@ export const AppRoutes = () => { } /> } /> } /> - } /> + } /> diff --git a/web/src/components/RealtimeTable/RealtimeTable.jsx b/web/src/components/RealtimeTable/RealtimeTable.jsx index 6041ca3..b307303 100644 --- a/web/src/components/RealtimeTable/RealtimeTable.jsx +++ b/web/src/components/RealtimeTable/RealtimeTable.jsx @@ -29,8 +29,8 @@ import { additionVspRowTable } from './constants/addingRowConfig'; import { SelectVspModal } from './Modals/SelectVspModal'; import { getRowId } from './utils/rowUtils'; -const RealtimeTable = ({ formType, formId, sheetName, direction }) => { - const { data, setData, isLoading: isTableLoading, editingCells: dataEditingCells } = useRealtimeData(formId, sheetName, direction); +const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => { + const { data, setData, isLoading: isTableLoading, editingCells: dataEditingCells } = useRealtimeData(formId, sheetName, direction, formType, year); const [globalFilter, setGlobalFilter] = useState(''); const [showColumnFilters, setShowColumnFilters] = useState(false); const [selectedColumnId, setSelectedColumnId] = useState(); @@ -360,6 +360,8 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => { formId={formId} sheetName={sheetName} direction={direction} + year={year} + isProject={formType == 'PROJECT'} />
@@ -420,8 +422,6 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => { onClose={() => setIsOpenModalSelectVsp(false)} formId={formId} onSelect={handleAddVspRow} - // vspOptions={} - // selectedVSP={} title="Выбор ВСП" /> diff --git a/web/src/components/RealtimeTable/SettingPanel/SettingPanel.jsx b/web/src/components/RealtimeTable/SettingPanel/SettingPanel.jsx index 5725c84..3347501 100644 --- a/web/src/components/RealtimeTable/SettingPanel/SettingPanel.jsx +++ b/web/src/components/RealtimeTable/SettingPanel/SettingPanel.jsx @@ -18,7 +18,7 @@ import CollapsibleTree from '../../common/CollapsibleTree'; import ZoomSlider from './ZoomSlider'; import SearchComponent from '../../common/SearchComponent'; import { ExportDefaultButton } from '../../common/Buttons/ButtonsActions'; -import { exportSheet } from '../../../utils/exportForm'; +import { exportSheet, exportSheetProject } from '../../../utils/exportFile'; const SettingPanel = ({ selectedColumnId, @@ -39,6 +39,8 @@ const SettingPanel = ({ formId, sheetName, direction, + year, + isProject, }) => { const [isPinned, setIsPinned] = useState(false); const [isExporting, setIsExporting] = useState(false); @@ -76,7 +78,16 @@ const SettingPanel = ({ const handleClickDeleteFormula = () => { }; const handleExport = async () => { - if (!formId || !sheetName || isExporting) return; + if (isExporting) return; + if (isProject) { + if (!formId || !sheetName || !year) return; + setIsExporting(true); + await exportSheetProject(formId, sheetName, year); + setIsExporting(false); + return; + } + + if (!formId || !sheetName) return; setIsExporting(true); await exportSheet(formId, sheetName, direction); setIsExporting(false); @@ -115,40 +126,27 @@ const SettingPanel = ({ - - - - - - - - + {!isProject ?? + <> + + + + + + + + - - - - - - - - - {/* - - - - - - - - - - - - - - - */} + + + + + + + + + } {columns ? ( diff --git a/web/src/components/RealtimeTable/constants/FORM_2/AHR.js b/web/src/components/RealtimeTable/constants/FORM_2/AHR.js index 269dd80..f351d21 100644 --- a/web/src/components/RealtimeTable/constants/FORM_2/AHR.js +++ b/web/src/components/RealtimeTable/constants/FORM_2/AHR.js @@ -1,3227 +1,3190 @@ -import { - greenColumn, - whiteColumn, - orangeColumn, - yellowColumn, - redColumn, - blueColumn, -} from "../columnColors"; -export const config = { - config: { - colors: { - "data.header.section_code": { - color_type: greenColumn, - accessorKey: "data.header.section_code", - }, - "data.header.item_id": { - color_type: greenColumn, - accessorKey: "data.header.item_id", - }, - "data.header.num_group": { - color_type: greenColumn, - accessorKey: "data.header.num_group", - }, - "data.header.name": { - color_type: greenColumn, - accessorKey: "data.header.name", - }, - "data.header.vsp_id": { - color_type: greenColumn, - accessorKey: "data.header.vsp_id", - }, - "data.plan.q1": { - color_type: greenColumn, - accessorKey: "data.plan.q1", - }, - "data.plan.q2": { - color_type: greenColumn, - accessorKey: "data.plan.q2", - }, - "data.plan.q3": { - color_type: greenColumn, - accessorKey: "data.plan.q3", - }, - "data.plan.q4": { - color_type: greenColumn, - accessorKey: "data.plan.q4", - }, - "data.plan.year": { - color_type: greenColumn, - accessorKey: "data.plan.year", - }, - "data.plan.comment": { - color_type: greenColumn, - accessorKey: "data.plan.comment", - }, - "data.2026_god_field_field": { - color_type: whiteColumn, - accessorKey: "data.2026_god_field_field", - }, - "data.totals.fact_year": { - color_type: greenColumn, - accessorKey: "data.totals.fact_year", - }, - "data.totals.pay_year": { - color_type: blueColumn, - accessorKey: "data.totals.pay_year", - }, - "data.seq_dfip.q1": { - color_type: greenColumn, - accessorKey: "data.seq_dfip.q1", - }, - "data.seq_dfip.q2": { - color_type: greenColumn, - accessorKey: "data.seq_dfip.q2", - }, - "data.seq_dfip.q3": { - color_type: greenColumn, - accessorKey: "data.seq_dfip.q3", - }, - "data.seq_dfip.q4": { - color_type: greenColumn, - accessorKey: "data.seq_dfip.q4", - }, - "data.seq_dfip.year": { - color_type: greenColumn, - accessorKey: "data.seq_dfip.year", - }, - "data.seq_dfip.justification": { - color_type: greenColumn, - accessorKey: "data.seq_dfip.justification", - }, - "data.seq_ssp.q1": { - color_type: greenColumn, - accessorKey: "data.seq_ssp.q1", - }, - "data.seq_ssp.q2": { - color_type: greenColumn, - accessorKey: "data.seq_ssp.q2", - }, - "data.seq_ssp.q3": { - color_type: greenColumn, - accessorKey: "data.seq_ssp.q3", - }, - "data.seq_ssp.q4": { - color_type: greenColumn, - accessorKey: "data.seq_ssp.q4", - }, - "data.seq_ssp.year": { - color_type: greenColumn, - accessorKey: "data.seq_ssp.year", + + import { + greenColumn, + whiteColumn, + orangeColumn, + yellowColumn, + redColumn, + blueColumn, + } from '../columnColors'; + export const config = { + "config":{ + "colors":{ + "data.header.section_code":{ + "color_type":greenColumn, + "accessorKey":"data.header.section_code" + }, + "data.header.item_id":{ + "color_type":greenColumn, + "accessorKey":"data.header.item_id" + }, + "data.header.num_group":{ + "color_type":greenColumn, + "accessorKey":"data.header.num_group" + }, + "data.header.name":{ + "color_type":greenColumn, + "accessorKey":"data.header.name" + }, + "data.header.vsp_id":{ + "color_type":greenColumn, + "accessorKey":"data.header.vsp_id" + }, + "data.plan.q1":{ + "color_type":greenColumn, + "accessorKey":"data.plan.q1" + }, + "data.plan.q2":{ + "color_type":greenColumn, + "accessorKey":"data.plan.q2" + }, + "data.plan.q3":{ + "color_type":greenColumn, + "accessorKey":"data.plan.q3" + }, + "data.plan.q4":{ + "color_type":greenColumn, + "accessorKey":"data.plan.q4" + }, + "data.plan.year":{ + "color_type":greenColumn, + "accessorKey":"data.plan.year" + }, + "data.plan.comment":{ + "color_type":greenColumn, + "accessorKey":"data.plan.comment" + }, + "2026_god_field_field":{ + "color_type":whiteColumn, + "accessorKey":"2026_god_field_field" + }, + "data.seq_dfip.q1":{ + "color_type":greenColumn, + "accessorKey":"data.seq_dfip.q1" + }, + "data.seq_dfip.q2":{ + "color_type":greenColumn, + "accessorKey":"data.seq_dfip.q2" + }, + "data.seq_dfip.q3":{ + "color_type":greenColumn, + "accessorKey":"data.seq_dfip.q3" + }, + "data.seq_dfip.q4":{ + "color_type":greenColumn, + "accessorKey":"data.seq_dfip.q4" + }, + "data.seq_dfip.year":{ + "color_type":greenColumn, + "accessorKey":"data.seq_dfip.year" + }, + "data.seq_dfip.justification":{ + "color_type":greenColumn, + "accessorKey":"data.seq_dfip.justification" + }, + "data.seq_ssp.q1":{ + "color_type":greenColumn, + "accessorKey":"data.seq_ssp.q1" + }, + "data.seq_ssp.q2":{ + "color_type":greenColumn, + "accessorKey":"data.seq_ssp.q2" + }, + "data.seq_ssp.q3":{ + "color_type":greenColumn, + "accessorKey":"data.seq_ssp.q3" + }, + "data.seq_ssp.q4":{ + "color_type":greenColumn, + "accessorKey":"data.seq_ssp.q4" + }, + "data.seq_ssp.year":{ + "color_type":greenColumn, + "accessorKey":"data.seq_ssp.year" + }, + "data.seq_ssp.justification":{ + "color_type":greenColumn, + "accessorKey":"data.seq_ssp.justification" + }, + "data.approved.q1":{ + "color_type":greenColumn, + "accessorKey":"data.approved.q1" }, - "data.seq_ssp.justification": { - color_type: greenColumn, - accessorKey: "data.seq_ssp.justification", + "data.approved.q2":{ + "color_type":greenColumn, + "accessorKey":"data.approved.q2" }, - "data.approved.q1": { - color_type: greenColumn, - accessorKey: "data.approved.q1", + "data.approved.q3":{ + "color_type":greenColumn, + "accessorKey":"data.approved.q3" }, - "data.approved.q2": { - color_type: greenColumn, - accessorKey: "data.approved.q2", + "data.approved.q4":{ + "color_type":greenColumn, + "accessorKey":"data.approved.q4" }, - "data.approved.q3": { - color_type: greenColumn, - accessorKey: "data.approved.q3", + "data.approved.year":{ + "color_type":greenColumn, + "accessorKey":"data.approved.year" }, - "data.approved.q4": { - color_type: greenColumn, - accessorKey: "data.approved.q4", + "data.contract.counterparty":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.counterparty" }, - "data.approved.year": { - color_type: greenColumn, - accessorKey: "data.approved.year", + "data.contract.reference":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.reference" }, - "data.contract.counterparty": { - color_type: orangeColumn, - accessorKey: "data.contract.counterparty", + "data.contract.date":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.date" }, - "data.contract.reference": { - color_type: orangeColumn, - accessorKey: "data.contract.reference", + "data.contract.subject":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.subject" }, - "data.contract.date": { - color_type: orangeColumn, - accessorKey: "data.contract.date", + "data.contract.currency":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.currency" }, - "data.contract.subject": { - color_type: orangeColumn, - accessorKey: "data.contract.subject", + "data.contract.ceiling":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.ceiling" }, - "data.contract.currency": { - color_type: orangeColumn, - accessorKey: "data.contract.currency", + "data.contract.vat_rate":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.vat_rate" }, - "data.contract.ceiling": { - color_type: orangeColumn, - accessorKey: "data.contract.ceiling", + "data.contract.deadline":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.deadline" }, - "data.contract.vat_rate": { - color_type: orangeColumn, - accessorKey: "data.contract.vat_rate", + "data.contract.scheme":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.scheme" }, - "data.contract.deadline": { - color_type: orangeColumn, - accessorKey: "data.contract.deadline", + "data.contract.act":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.act" }, - "data.contract.scheme": { - color_type: orangeColumn, - accessorKey: "data.contract.scheme", + "data.contract.comment":{ + "color_type":orangeColumn, + "accessorKey":"data.contract.comment" }, - "data.contract.act": { - color_type: orangeColumn, - accessorKey: "data.contract.act", + "data.booking.y2026.q1":{ + "color_type":orangeColumn, + "accessorKey":"data.booking.y2026.q1" }, - "data.contract.comment": { - color_type: orangeColumn, - accessorKey: "data.contract.comment", + "data.booking.y2026.q2":{ + "color_type":orangeColumn, + "accessorKey":"data.booking.y2026.q2" }, - "data.booking.y2026.q1": { - color_type: orangeColumn, - accessorKey: "data.booking.y2026.q1", + "data.booking.y2026.q3":{ + "color_type":orangeColumn, + "accessorKey":"data.booking.y2026.q3" }, - "data.booking.y2026.q2": { - color_type: orangeColumn, - accessorKey: "data.booking.y2026.q2", + "data.booking.y2026.q4":{ + "color_type":orangeColumn, + "accessorKey":"data.booking.y2026.q4" }, - "data.booking.y2026.q3": { - color_type: orangeColumn, - accessorKey: "data.booking.y2026.q3", + "data.booking.y2027.q1":{ + "color_type":orangeColumn, + "accessorKey":"data.booking.y2027.q1" }, - "data.booking.y2026.q4": { - color_type: orangeColumn, - accessorKey: "data.booking.y2026.q4", + "data.booking.y2027.q2":{ + "color_type":orangeColumn, + "accessorKey":"data.booking.y2027.q2" }, - "data.booking.y2027.q1": { - color_type: orangeColumn, - accessorKey: "data.booking.y2027.q1", + "data.booking.y2027.q3":{ + "color_type":orangeColumn, + "accessorKey":"data.booking.y2027.q3" }, - "data.booking.y2027.q2": { - color_type: orangeColumn, - accessorKey: "data.booking.y2027.q2", + "data.booking.y2027.q4":{ + "color_type":orangeColumn, + "accessorKey":"data.booking.y2027.q4" }, - "data.booking.y2027.q3": { - color_type: orangeColumn, - accessorKey: "data.booking.y2027.q3", + "data.q1.adj_current":{ + "color_type":yellowColumn, + "accessorKey":"data.q1.adj_current" }, - "data.booking.y2027.q4": { - color_type: orangeColumn, - accessorKey: "data.booking.y2027.q4", + "data.q1.adj_ssp":{ + "color_type":yellowColumn, + "accessorKey":"data.q1.adj_ssp" }, - "data.q1.adj_current": { - color_type: yellowColumn, - accessorKey: "data.q1.adj_current", + "data.q1.adj_reserve":{ + "color_type":yellowColumn, + "accessorKey":"data.q1.adj_reserve" }, - "data.q1.adj_ssp": { - color_type: yellowColumn, - accessorKey: "data.q1.adj_ssp", + "data.q1.adj_comment":{ + "color_type":yellowColumn, + "accessorKey":"data.q1.adj_comment" }, - "data.q1.adj_reserve": { - color_type: yellowColumn, - accessorKey: "data.q1.adj_reserve", + "data.q1.corrected_plan":{ + "color_type":yellowColumn, + "accessorKey":"data.q1.corrected_plan" }, - "data.q1.adj_comment": { - color_type: yellowColumn, - accessorKey: "data.q1.adj_comment", + "1_kvartal_2026_goda_field_field":{ + "color_type":whiteColumn, + "accessorKey":"1_kvartal_2026_goda_field_field" }, - "data.q1.corrected_plan": { - color_type: yellowColumn, - accessorKey: "data.q1.corrected_plan", + "data.q1.pay_date":{ + "color_type":blueColumn, + "accessorKey":"data.q1.pay_date" }, - "data.1_kvartal_2026_goda_field_field": { - color_type: whiteColumn, - accessorKey: "data.1_kvartal_2026_goda_field_field", + "data.q1.pay_amount":{ + "color_type":blueColumn, + "accessorKey":"data.q1.pay_amount" }, - "data.q1.pay_date": { - color_type: blueColumn, - accessorKey: "data.q1.pay_date", + "data.q1.pay_comment":{ + "color_type":blueColumn, + "accessorKey":"data.q1.pay_comment" }, - "data.q1.pay_amount": { - color_type: blueColumn, - accessorKey: "data.q1.pay_amount", + "data.q1.pay_act":{ + "color_type":blueColumn, + "accessorKey":"data.q1.pay_act" }, - "data.q1.pay_comment": { - color_type: blueColumn, - accessorKey: "data.q1.pay_comment", + "data.q1.booking":{ + "color_type":orangeColumn, + "accessorKey":"data.q1.booking" }, - "data.q1.pay_act": { - color_type: blueColumn, - accessorKey: "data.q1.pay_act", + "data.q1.actual_m1":{ + "color_type":greenColumn, + "accessorKey":"data.q1.actual_m1" }, - "data.q1.booking": { - color_type: orangeColumn, - accessorKey: "data.q1.booking", + "data.q1.actual_m2":{ + "color_type":greenColumn, + "accessorKey":"data.q1.actual_m2" }, - "data.q1.actual_m1": { - color_type: greenColumn, - accessorKey: "data.q1.actual_m1", + "data.q1.actual_m3":{ + "color_type":greenColumn, + "accessorKey":"data.q1.actual_m3" }, - "data.q1.actual_m2": { - color_type: greenColumn, - accessorKey: "data.q1.actual_m2", + "data.q1.actual_quarter":{ + "color_type":greenColumn, + "accessorKey":"data.q1.actual_quarter" }, - "data.q1.actual_m3": { - color_type: greenColumn, - accessorKey: "data.q1.actual_m3", + "data.q1.residual_after_booking":{ + "color_type":orangeColumn, + "accessorKey":"data.q1.residual_after_booking" }, - "data.q1.actual_quarter": { - color_type: greenColumn, - accessorKey: "data.q1.actual_quarter", + "data.q1.residual_after_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q1.residual_after_actual" }, - "data.q1.residual_after_booking": { - color_type: orangeColumn, - accessorKey: "data.q1.residual_after_booking", + "data.q1.transfer_q2":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_q2" }, - "data.q1.residual_after_actual": { - color_type: greenColumn, - accessorKey: "data.q1.residual_after_actual", + "data.q1.transfer_q2_delay_acts":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_q2_delay_acts" }, - "data.q1.transfer_q2": { - color_type: redColumn, - accessorKey: "data.q1.transfer_q2", + "data.q1.transfer_q2_delay_procurement":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_q2_delay_procurement" }, - "data.q1.transfer_q2_delay_acts": { - color_type: redColumn, - accessorKey: "data.q1.transfer_q2_delay_acts", + "data.q1.transfer_q2_economy_rf":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_q2_economy_rf" }, - "data.q1.transfer_q2_delay_procurement": { - color_type: redColumn, - accessorKey: "data.q1.transfer_q2_delay_procurement", + "data.q1.transfer_next_comment":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_next_comment" }, - "data.q1.transfer_q2_economy_rf": { - color_type: redColumn, - accessorKey: "data.q1.transfer_q2_economy_rf", + "data.q1.transfer_q3":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_q3" }, - "data.q1.transfer_next_comment": { - color_type: redColumn, - accessorKey: "data.q1.transfer_next_comment", + "data.q1.transfer_q4":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_q4" }, - "data.q1.transfer_q3": { - color_type: redColumn, - accessorKey: "data.q1.transfer_q3", + "data.q1.transfer_far_comment":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_far_comment" }, - "data.q1.transfer_q4": { - color_type: redColumn, - accessorKey: "data.q1.transfer_q4", + "data.q1.transfer_econ":{ + "color_type":redColumn, + "accessorKey":"data.q1.transfer_econ" }, - "data.q1.transfer_far_comment": { - color_type: redColumn, - accessorKey: "data.q1.transfer_far_comment", + "data.q1.total":{ + "color_type":redColumn, + "accessorKey":"data.q1.total" }, - "data.q1.transfer_econ": { - color_type: redColumn, - accessorKey: "data.q1.transfer_econ", + "data.q2.target_change":{ + "color_type":redColumn, + "accessorKey":"data.q2.target_change" }, - "data.q1.total": { - color_type: redColumn, - accessorKey: "data.q1.total", + "data.q2.base_correction":{ + "color_type":redColumn, + "accessorKey":"data.q2.base_correction" }, - "data.q2.target_change": { - color_type: redColumn, - accessorKey: "data.q2.target_change", + "data.q2.base_correction_comment":{ + "color_type":redColumn, + "accessorKey":"data.q2.base_correction_comment" }, - "data.q2.base_correction": { - color_type: redColumn, - accessorKey: "data.q2.base_correction", + "data.q2.revision_inc":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.revision_inc" }, - "data.q2.base_correction_comment": { - color_type: redColumn, - accessorKey: "data.q2.base_correction_comment", + "data.q2.revision_seq":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.revision_seq" }, - "data.q2.revision_inc": { - color_type: yellowColumn, - accessorKey: "data.q2.revision_inc", + "data.q2.revision_comment":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.revision_comment" }, - "data.q2.revision_seq": { - color_type: yellowColumn, - accessorKey: "data.q2.revision_seq", + "data.q2.new_plan":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.new_plan" }, - "data.q2.revision_comment": { - color_type: yellowColumn, - accessorKey: "data.q2.revision_comment", + "2_kvartal_2026_goda_field_field":{ + "color_type":whiteColumn, + "accessorKey":"2_kvartal_2026_goda_field_field" }, - "data.q2.new_plan": { - color_type: yellowColumn, - accessorKey: "data.q2.new_plan", + "data.q2.adj_current":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.adj_current" }, - "data.2_kvartal_2026_goda_field_field": { - color_type: whiteColumn, - accessorKey: "data.2_kvartal_2026_goda_field_field", + "data.q2.adj_ssp":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.adj_ssp" }, - "data.q2.adj_current": { - color_type: yellowColumn, - accessorKey: "data.q2.adj_current", + "data.q2.adj_reserve":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.adj_reserve" }, - "data.q2.adj_ssp": { - color_type: yellowColumn, - accessorKey: "data.q2.adj_ssp", + "data.q2.adj_comment":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.adj_comment" }, - "data.q2.adj_reserve": { - color_type: yellowColumn, - accessorKey: "data.q2.adj_reserve", + "data.q2.corrected_plan":{ + "color_type":yellowColumn, + "accessorKey":"data.q2.corrected_plan" }, - "data.q2.adj_comment": { - color_type: yellowColumn, - accessorKey: "data.q2.adj_comment", + "data.q2.pay_date":{ + "color_type":blueColumn, + "accessorKey":"data.q2.pay_date" }, - "data.q2.corrected_plan": { - color_type: yellowColumn, - accessorKey: "data.q2.corrected_plan", + "data.q2.pay_amount":{ + "color_type":blueColumn, + "accessorKey":"data.q2.pay_amount" }, - "data.q2.pay_date": { - color_type: blueColumn, - accessorKey: "data.q2.pay_date", + "data.q2.pay_comment":{ + "color_type":blueColumn, + "accessorKey":"data.q2.pay_comment" }, - "data.q2.pay_amount": { - color_type: blueColumn, - accessorKey: "data.q2.pay_amount", + "data.q2.pay_act":{ + "color_type":blueColumn, + "accessorKey":"data.q2.pay_act" }, - "data.q2.pay_comment": { - color_type: blueColumn, - accessorKey: "data.q2.pay_comment", + "data.q2.booking":{ + "color_type":orangeColumn, + "accessorKey":"data.q2.booking" }, - "data.q2.pay_act": { - color_type: blueColumn, - accessorKey: "data.q2.pay_act", + "data.q2.actual_m1":{ + "color_type":greenColumn, + "accessorKey":"data.q2.actual_m1" }, - "data.q2.booking": { - color_type: orangeColumn, - accessorKey: "data.q2.booking", + "data.q2.actual_m2":{ + "color_type":greenColumn, + "accessorKey":"data.q2.actual_m2" }, - "data.q2.actual_m1": { - color_type: greenColumn, - accessorKey: "data.q2.actual_m1", + "data.q2.actual_m3":{ + "color_type":greenColumn, + "accessorKey":"data.q2.actual_m3" }, - "data.q2.actual_m2": { - color_type: greenColumn, - accessorKey: "data.q2.actual_m2", + "data.q2.actual_quarter":{ + "color_type":greenColumn, + "accessorKey":"data.q2.actual_quarter" }, - "data.q2.actual_m3": { - color_type: greenColumn, - accessorKey: "data.q2.actual_m3", + "data.q2.residual_after_booking":{ + "color_type":orangeColumn, + "accessorKey":"data.q2.residual_after_booking" }, - "data.q2.actual_quarter": { - color_type: greenColumn, - accessorKey: "data.q2.actual_quarter", + "data.q2.residual_after_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q2.residual_after_actual" }, - "data.q2.residual_after_booking": { - color_type: orangeColumn, - accessorKey: "data.q2.residual_after_booking", + "data.q2.transfer_q3":{ + "color_type":redColumn, + "accessorKey":"data.q2.transfer_q3" }, - "data.q2.residual_after_actual": { - color_type: greenColumn, - accessorKey: "data.q2.residual_after_actual", + "data.q2.transfer_q3_delay_acts":{ + "color_type":redColumn, + "accessorKey":"data.q2.transfer_q3_delay_acts" }, - "data.q2.transfer_q3": { - color_type: redColumn, - accessorKey: "data.q2.transfer_q3", + "data.q2.transfer_q3_delay_procurement":{ + "color_type":redColumn, + "accessorKey":"data.q2.transfer_q3_delay_procurement" }, - "data.q2.transfer_q3_delay_acts": { - color_type: redColumn, - accessorKey: "data.q2.transfer_q3_delay_acts", + "data.q2.transfer_q3_economy_rf":{ + "color_type":redColumn, + "accessorKey":"data.q2.transfer_q3_economy_rf" }, - "data.q2.transfer_q3_delay_procurement": { - color_type: redColumn, - accessorKey: "data.q2.transfer_q3_delay_procurement", + "data.q2.transfer_next_comment":{ + "color_type":redColumn, + "accessorKey":"data.q2.transfer_next_comment" }, - "data.q2.transfer_q3_economy_rf": { - color_type: redColumn, - accessorKey: "data.q2.transfer_q3_economy_rf", + "data.q2.transfer_q4":{ + "color_type":redColumn, + "accessorKey":"data.q2.transfer_q4" }, - "data.q2.transfer_next_comment": { - color_type: redColumn, - accessorKey: "data.q2.transfer_next_comment", + "data.q2.transfer_far_comment":{ + "color_type":redColumn, + "accessorKey":"data.q2.transfer_far_comment" }, - "data.q2.transfer_q4": { - color_type: redColumn, - accessorKey: "data.q2.transfer_q4", + "data.q2.transfer_econ":{ + "color_type":redColumn, + "accessorKey":"data.q2.transfer_econ" }, - "data.q2.transfer_far_comment": { - color_type: redColumn, - accessorKey: "data.q2.transfer_far_comment", + "data.q2.total":{ + "color_type":redColumn, + "accessorKey":"data.q2.total" }, - "data.q2.transfer_econ": { - color_type: redColumn, - accessorKey: "data.q2.transfer_econ", + "data.q3.target_change":{ + "color_type":redColumn, + "accessorKey":"data.q3.target_change" }, - "data.q2.total": { - color_type: redColumn, - accessorKey: "data.q2.total", + "data.q3.base_correction":{ + "color_type":redColumn, + "accessorKey":"data.q3.base_correction" }, - "data.q3.target_change": { - color_type: redColumn, - accessorKey: "data.q3.target_change", + "data.q3.base_correction_comment":{ + "color_type":redColumn, + "accessorKey":"data.q3.base_correction_comment" }, - "data.q3.base_correction": { - color_type: redColumn, - accessorKey: "data.q3.base_correction", + "data.q3.revision_inc":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.revision_inc" }, - "data.q3.base_correction_comment": { - color_type: redColumn, - accessorKey: "data.q3.base_correction_comment", + "data.q3.revision_seq":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.revision_seq" }, - "data.q3.revision_inc": { - color_type: yellowColumn, - accessorKey: "data.q3.revision_inc", + "data.q3.revision_comment":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.revision_comment" }, - "data.q3.revision_seq": { - color_type: yellowColumn, - accessorKey: "data.q3.revision_seq", + "data.q3.new_plan":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.new_plan" }, - "data.q3.revision_comment": { - color_type: yellowColumn, - accessorKey: "data.q3.revision_comment", + "3_kvartal_2026_goda_field_field":{ + "color_type":whiteColumn, + "accessorKey":"3_kvartal_2026_goda_field_field" }, - "data.q3.new_plan": { - color_type: yellowColumn, - accessorKey: "data.q3.new_plan", + "data.q3.adj_current":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.adj_current" }, - "data.3_kvartal_2026_goda_field_field": { - color_type: whiteColumn, - accessorKey: "data.3_kvartal_2026_goda_field_field", + "data.q3.adj_ssp":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.adj_ssp" }, - "data.q3.adj_current": { - color_type: yellowColumn, - accessorKey: "data.q3.adj_current", + "data.q3.adj_reserve":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.adj_reserve" }, - "data.q3.adj_ssp": { - color_type: yellowColumn, - accessorKey: "data.q3.adj_ssp", + "data.q3.adj_comment":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.adj_comment" }, - "data.q3.adj_reserve": { - color_type: yellowColumn, - accessorKey: "data.q3.adj_reserve", + "data.q3.corrected_plan":{ + "color_type":yellowColumn, + "accessorKey":"data.q3.corrected_plan" }, - "data.q3.adj_comment": { - color_type: yellowColumn, - accessorKey: "data.q3.adj_comment", + "data.q3.pay_date":{ + "color_type":blueColumn, + "accessorKey":"data.q3.pay_date" }, - "data.q3.corrected_plan": { - color_type: yellowColumn, - accessorKey: "data.q3.corrected_plan", + "data.q3.pay_amount":{ + "color_type":blueColumn, + "accessorKey":"data.q3.pay_amount" }, - "data.q3.pay_date": { - color_type: blueColumn, - accessorKey: "data.q3.pay_date", + "data.q3.pay_comment":{ + "color_type":blueColumn, + "accessorKey":"data.q3.pay_comment" }, - "data.q3.pay_amount": { - color_type: blueColumn, - accessorKey: "data.q3.pay_amount", + "data.q3.pay_act":{ + "color_type":blueColumn, + "accessorKey":"data.q3.pay_act" }, - "data.q3.pay_comment": { - color_type: blueColumn, - accessorKey: "data.q3.pay_comment", + "data.q3.booking":{ + "color_type":orangeColumn, + "accessorKey":"data.q3.booking" }, - "data.q3.pay_act": { - color_type: blueColumn, - accessorKey: "data.q3.pay_act", + "data.q3.actual_m1":{ + "color_type":greenColumn, + "accessorKey":"data.q3.actual_m1" }, - "data.q3.booking": { - color_type: orangeColumn, - accessorKey: "data.q3.booking", + "data.q3.actual_m2":{ + "color_type":greenColumn, + "accessorKey":"data.q3.actual_m2" }, - "data.q3.actual_m1": { - color_type: greenColumn, - accessorKey: "data.q3.actual_m1", + "data.q3.actual_m3":{ + "color_type":greenColumn, + "accessorKey":"data.q3.actual_m3" }, - "data.q3.actual_m2": { - color_type: greenColumn, - accessorKey: "data.q3.actual_m2", + "data.q3.actual_quarter":{ + "color_type":greenColumn, + "accessorKey":"data.q3.actual_quarter" }, - "data.q3.actual_m3": { - color_type: greenColumn, - accessorKey: "data.q3.actual_m3", + "data.q3.residual_after_booking":{ + "color_type":orangeColumn, + "accessorKey":"data.q3.residual_after_booking" }, - "data.q3.actual_quarter": { - color_type: greenColumn, - accessorKey: "data.q3.actual_quarter", + "data.q3.residual_after_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q3.residual_after_actual" }, - "data.q3.residual_after_booking": { - color_type: orangeColumn, - accessorKey: "data.q3.residual_after_booking", + "data.q3.transfer_q4":{ + "color_type":redColumn, + "accessorKey":"data.q3.transfer_q4" }, - "data.q3.residual_after_actual": { - color_type: greenColumn, - accessorKey: "data.q3.residual_after_actual", + "data.q3.transfer_q4_delay_acts":{ + "color_type":redColumn, + "accessorKey":"data.q3.transfer_q4_delay_acts" }, - "data.q3.transfer_q4": { - color_type: redColumn, - accessorKey: "data.q3.transfer_q4", + "data.q3.transfer_q4_delay_procurement":{ + "color_type":redColumn, + "accessorKey":"data.q3.transfer_q4_delay_procurement" }, - "data.q3.transfer_q4_delay_acts": { - color_type: redColumn, - accessorKey: "data.q3.transfer_q4_delay_acts", + "data.q3.transfer_q4_economy_rf":{ + "color_type":redColumn, + "accessorKey":"data.q3.transfer_q4_economy_rf" }, - "data.q3.transfer_q4_delay_procurement": { - color_type: redColumn, - accessorKey: "data.q3.transfer_q4_delay_procurement", + "data.q3.transfer_next_comment":{ + "color_type":redColumn, + "accessorKey":"data.q3.transfer_next_comment" }, - "data.q3.transfer_q4_economy_rf": { - color_type: redColumn, - accessorKey: "data.q3.transfer_q4_economy_rf", + "data.q3.transfer_econ":{ + "color_type":redColumn, + "accessorKey":"data.q3.transfer_econ" }, - "data.q3.transfer_next_comment": { - color_type: redColumn, - accessorKey: "data.q3.transfer_next_comment", + "data.q3.total":{ + "color_type":redColumn, + "accessorKey":"data.q3.total" }, - "data.q3.transfer_econ": { - color_type: redColumn, - accessorKey: "data.q3.transfer_econ", + "data.q4.target_change":{ + "color_type":redColumn, + "accessorKey":"data.q4.target_change" }, - "data.q3.total": { - color_type: redColumn, - accessorKey: "data.q3.total", + "data.q4.base_correction":{ + "color_type":redColumn, + "accessorKey":"data.q4.base_correction" }, - "data.q4.target_change": { - color_type: redColumn, - accessorKey: "data.q4.target_change", + "data.q4.base_correction_comment":{ + "color_type":redColumn, + "accessorKey":"data.q4.base_correction_comment" }, - "data.q4.base_correction": { - color_type: redColumn, - accessorKey: "data.q4.base_correction", + "data.q4.revision_inc":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.revision_inc" }, - "data.q4.base_correction_comment": { - color_type: redColumn, - accessorKey: "data.q4.base_correction_comment", + "data.q4.revision_seq":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.revision_seq" }, - "data.q4.revision_inc": { - color_type: yellowColumn, - accessorKey: "data.q4.revision_inc", + "data.q4.revision_comment":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.revision_comment" }, - "data.q4.revision_seq": { - color_type: yellowColumn, - accessorKey: "data.q4.revision_seq", + "data.q4.new_plan":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.new_plan" }, - "data.q4.revision_comment": { - color_type: yellowColumn, - accessorKey: "data.q4.revision_comment", + "4_kvartal_2026_goda_field_field":{ + "color_type":whiteColumn, + "accessorKey":"4_kvartal_2026_goda_field_field" }, - "data.q4.new_plan": { - color_type: yellowColumn, - accessorKey: "data.q4.new_plan", + "data.q4.adj_current":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.adj_current" }, - "data.4_kvartal_2026_goda_field_field": { - color_type: whiteColumn, - accessorKey: "data.4_kvartal_2026_goda_field_field", + "data.q4.adj_ssp":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.adj_ssp" }, - "data.q4.adj_current": { - color_type: yellowColumn, - accessorKey: "data.q4.adj_current", + "data.q4.adj_reserve":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.adj_reserve" }, - "data.q4.adj_ssp": { - color_type: yellowColumn, - accessorKey: "data.q4.adj_ssp", + "data.q4.adj_comment":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.adj_comment" }, - "data.q4.adj_reserve": { - color_type: yellowColumn, - accessorKey: "data.q4.adj_reserve", + "data.q4.corrected_plan":{ + "color_type":yellowColumn, + "accessorKey":"data.q4.corrected_plan" }, - "data.q4.adj_comment": { - color_type: yellowColumn, - accessorKey: "data.q4.adj_comment", + "data.q4.pay_date":{ + "color_type":blueColumn, + "accessorKey":"data.q4.pay_date" }, - "data.q4.corrected_plan": { - color_type: yellowColumn, - accessorKey: "data.q4.corrected_plan", + "data.q4.pay_amount":{ + "color_type":blueColumn, + "accessorKey":"data.q4.pay_amount" }, - "data.q4.pay_date": { - color_type: blueColumn, - accessorKey: "data.q4.pay_date", + "data.q4.pay_comment":{ + "color_type":blueColumn, + "accessorKey":"data.q4.pay_comment" }, - "data.q4.pay_amount": { - color_type: blueColumn, - accessorKey: "data.q4.pay_amount", + "data.q4.pay_act":{ + "color_type":blueColumn, + "accessorKey":"data.q4.pay_act" }, - "data.q4.pay_comment": { - color_type: blueColumn, - accessorKey: "data.q4.pay_comment", + "data.q4.booking":{ + "color_type":orangeColumn, + "accessorKey":"data.q4.booking" }, - "data.q4.pay_act": { - color_type: blueColumn, - accessorKey: "data.q4.pay_act", + "data.q4.actual_m1":{ + "color_type":greenColumn, + "accessorKey":"data.q4.actual_m1" }, - "data.q4.booking": { - color_type: orangeColumn, - accessorKey: "data.q4.booking", + "data.q4.actual_m2":{ + "color_type":greenColumn, + "accessorKey":"data.q4.actual_m2" }, - "data.q4.actual_m1": { - color_type: greenColumn, - accessorKey: "data.q4.actual_m1", + "data.q4.actual_m3":{ + "color_type":greenColumn, + "accessorKey":"data.q4.actual_m3" }, - "data.q4.actual_m2": { - color_type: greenColumn, - accessorKey: "data.q4.actual_m2", + "data.q4.actual_spod":{ + "color_type":greenColumn, + "accessorKey":"data.q4.actual_spod" }, - "data.q4.actual_m3": { - color_type: greenColumn, - accessorKey: "data.q4.actual_m3", + "data.q4.actual_quarter":{ + "color_type":greenColumn, + "accessorKey":"data.q4.actual_quarter" }, - "data.q4.actual_spod": { - color_type: greenColumn, - accessorKey: "data.q4.actual_spod", + "data.q4.residual_after_booking":{ + "color_type":orangeColumn, + "accessorKey":"data.q4.residual_after_booking" }, - "data.q4.actual_quarter": { - color_type: greenColumn, - accessorKey: "data.q4.actual_quarter", + "data.q4.residual_after_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q4.residual_after_actual" }, - "data.q4.residual_after_booking": { - color_type: orangeColumn, - accessorKey: "data.q4.residual_after_booking", + "data.q4.transfer_econ":{ + "color_type":redColumn, + "accessorKey":"data.q4.transfer_econ" }, - "data.q4.residual_after_actual": { - color_type: greenColumn, - accessorKey: "data.q4.residual_after_actual", + "data.totals.fact_year":{ + "color_type":greenColumn, + "accessorKey":"data.totals.fact_year" }, - "data.q4.transfer_econ": { - color_type: redColumn, - accessorKey: "data.q4.transfer_econ", + "2026_god_field_field_5":{ + "color_type":whiteColumn, + "accessorKey":"2026_god_field_field_5" }, + "data.totals.pay_year":{ + "color_type":blueColumn, + "accessorKey":"data.totals.pay_year" + } }, - columns: [ + "columns":[ { - header: "", - accessorKey: "field", - columns: [ + "header":" ", + "accessorKey":"field", + "columns":[ { - header: "", - accessorKey: "field_field", - columns: [ + "header":" ", + "accessorKey":"field_field", + "columns":[ { - header: "Код раздела", - accessorKey: "data.header.section_code", - columnLetter: "A", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Код раздела", + "accessorKey":"data.header.section_code", + "columnLetter":"A", + "size":150, + "filterFn":"contains" }, { - header: "ID статьи", - accessorKey: "data.header.item_id", - columnLetter: "B", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ID статьи", + "accessorKey":"data.header.item_id", + "columnLetter":"B", + "size":150, + "filterFn":"contains" }, { - header: "ID группы номенклатуры", - accessorKey: "data.header.num_group", - columnLetter: "C", - size: 220, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ID группы номенклатуры", + "accessorKey":"data.header.num_group", + "columnLetter":"C", + "size":220, + "filterFn":"contains" }, { - header: "Наименование", - accessorKey: "data.header.name", - columnLetter: "D", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Наименование", + "accessorKey":"data.header.name", + "columnLetter":"D", + "size":150, + "filterFn":"contains" }, { - header: "ВСП РФ", - accessorKey: "data.header.vsp_id", - columnLetter: "E", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"ВСП РФ", + "accessorKey":"data.header.vsp_id", + "columnLetter":"E", + "size":150, + "filterFn":"contains" + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "2026 год.", - accessorKey: "2026_god", - columns: [ + "header":"2026 год", + "accessorKey":"2026_god", + "columns":[ { - header: "Планирование годовых показателей", - accessorKey: "2026_god_planirovanie_godovykh_pokazateley", - columns: [ + "header":"Планирование годовых показателей", + "accessorKey":"2026_god_planirovanie_godovykh_pokazateley", + "columns":[ { - header: "1 квартал", - accessorKey: "data.plan.q1", - columnLetter: "F", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"1 квартал", + "accessorKey":"data.plan.q1", + "columnLetter":"F", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "2 квартал", - accessorKey: "data.plan.q2", - columnLetter: "G", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"2 квартал", + "accessorKey":"data.plan.q2", + "columnLetter":"G", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "3 квартал", - accessorKey: "data.plan.q3", - columnLetter: "H", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"3 квартал", + "accessorKey":"data.plan.q3", + "columnLetter":"H", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "4 квартал", - accessorKey: "data.plan.q4", - columnLetter: "I", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"4 квартал", + "accessorKey":"data.plan.q4", + "columnLetter":"I", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Год", - accessorKey: "data.plan.year", - columnLetter: "J", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Год", + "accessorKey":"data.plan.year", + "columnLetter":"J", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.plan.comment", - columnLetter: "K", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Комментарий", + "accessorKey":"data.plan.comment", + "columnLetter":"K", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Секвестирование ДФиП", - accessorKey: "2026_god_sekvestirovanie_dfip", - columns: [ + "header":"Секвестирование ДФиП", + "accessorKey":"2026_god_sekvestirovanie_dfip", + "columns":[ { - header: "1 квартал", - accessorKey: "data.seq_dfip.q1", - columnLetter: "M", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"1 квартал", + "accessorKey":"data.seq_dfip.q1", + "columnLetter":"M", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "2 квартал", - accessorKey: "data.seq_dfip.q2", - columnLetter: "N", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"2 квартал", + "accessorKey":"data.seq_dfip.q2", + "columnLetter":"N", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "3 квартал", - accessorKey: "data.seq_dfip.q3", - columnLetter: "O", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"3 квартал", + "accessorKey":"data.seq_dfip.q3", + "columnLetter":"O", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "4 квартал", - accessorKey: "data.seq_dfip.q4", - columnLetter: "P", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"4 квартал", + "accessorKey":"data.seq_dfip.q4", + "columnLetter":"P", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Год", - accessorKey: "data.seq_dfip.year", - columnLetter: "Q", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Год", + "accessorKey":"data.seq_dfip.year", + "columnLetter":"Q", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Обоснование", - accessorKey: "data.seq_dfip.justification", - columnLetter: "R", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Обоснование", + "accessorKey":"data.seq_dfip.justification", + "columnLetter":"R", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Секвестирование ССП ГО", - accessorKey: "2026_god_sekvestirovanie_ssp_go", - columns: [ + "header":"Секвестирование ССП ГО", + "accessorKey":"2026_god_sekvestirovanie_ssp_go", + "columns":[ { - header: "1 квартал", - accessorKey: "data.seq_ssp.q1", - columnLetter: "T", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"1 квартал", + "accessorKey":"data.seq_ssp.q1", + "columnLetter":"T", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "2 квартал", - accessorKey: "data.seq_ssp.q2", - columnLetter: "U", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"2 квартал", + "accessorKey":"data.seq_ssp.q2", + "columnLetter":"U", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "3 квартал", - accessorKey: "data.seq_ssp.q3", - columnLetter: "V", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"3 квартал", + "accessorKey":"data.seq_ssp.q3", + "columnLetter":"V", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "4 квартал", - accessorKey: "data.seq_ssp.q4", - columnLetter: "W", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"4 квартал", + "accessorKey":"data.seq_ssp.q4", + "columnLetter":"W", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Год", - accessorKey: "data.seq_ssp.year", - columnLetter: "X", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Год", + "accessorKey":"data.seq_ssp.year", + "columnLetter":"X", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Обоснование", - accessorKey: "data.seq_ssp.justification", - columnLetter: "Y", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Обоснование", + "accessorKey":"data.seq_ssp.justification", + "columnLetter":"Y", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Утвержденная смета расходов", - accessorKey: "2026_god_utverzhdennaya_smeta_raskhodov", - columns: [ + "header":"Утвержденная смета расходов", + "accessorKey":"2026_god_utverzhdennaya_smeta_raskhodov", + "columns":[ { - header: "1 квартал", - accessorKey: "data.approved.q1", - columnLetter: "AA", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"1 квартал", + "accessorKey":"data.approved.q1", + "columnLetter":"AA", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "2 квартал", - accessorKey: "data.approved.q2", - columnLetter: "AB", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"2 квартал", + "accessorKey":"data.approved.q2", + "columnLetter":"AB", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "3 квартал", - accessorKey: "data.approved.q3", - columnLetter: "AC", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"3 квартал", + "accessorKey":"data.approved.q3", + "columnLetter":"AC", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "4 квартал", - accessorKey: "data.approved.q4", - columnLetter: "AD", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"4 квартал", + "accessorKey":"data.approved.q4", + "columnLetter":"AD", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Год", - accessorKey: "data.approved.year", - columnLetter: "AE", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Год", + "accessorKey":"data.approved.year", + "columnLetter":"AE", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Параметры заключенного хозяйственного договора", - accessorKey: - "2026_god_parametry_zaklyuchennogo_khozyaystvennogo_dogovora", - columns: [ + "header":"Параметры заключенного хозяйственного договора", + "accessorKey":"2026_god_parametry_zaklyuchennogo_khozyaystvennogo_dogovora", + "columns":[ { - header: "Контрагент", - accessorKey: "data.contract.counterparty", - columnLetter: "AG", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Контрагент", + "accessorKey":"data.contract.counterparty", + "columnLetter":"AG", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Номер", - accessorKey: "data.contract.reference", - columnLetter: "AH", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Номер", + "accessorKey":"data.contract.reference", + "columnLetter":"AH", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Дата", - accessorKey: "data.contract.date", - columnLetter: "AI", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Дата", + "accessorKey":"data.contract.date", + "columnLetter":"AI", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Предмет", - accessorKey: "data.contract.subject", - columnLetter: "AJ", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Предмет", + "accessorKey":"data.contract.subject", + "columnLetter":"AJ", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Валюта", - accessorKey: "data.contract.currency", - columnLetter: "AK", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Валюта", + "accessorKey":"data.contract.currency", + "columnLetter":"AK", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Предельная стоимость", - accessorKey: "data.contract.ceiling", - columnLetter: "AL", - size: 200, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Предельная стоимость", + "accessorKey":"data.contract.ceiling", + "columnLetter":"AL", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Ставка НДС (%)", - accessorKey: "data.contract.vat_rate", - columnLetter: "AM", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Ставка НДС (%)", + "accessorKey":"data.contract.vat_rate", + "columnLetter":"AM", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Срок", - accessorKey: "data.contract.deadline", - columnLetter: "AN", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Срок", + "accessorKey":"data.contract.deadline", + "columnLetter":"AN", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Схема платежа", - accessorKey: "data.contract.scheme", - columnLetter: "AO", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Схема платежа", + "accessorKey":"data.contract.scheme", + "columnLetter":"AO", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "АКТ", - accessorKey: "data.contract.act", - columnLetter: "AP", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"АКТ", + "accessorKey":"data.contract.act", + "columnLetter":"AP", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.contract.comment", - columnLetter: "AQ", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.contract.comment", + "columnLetter":"AQ", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "Бронь средств в 1 квартале", - accessorKey: "data.booking.y2026.q1", - columnLetter: "AR", - size: 260, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь средств в 1 квартале", + "accessorKey":"data.booking.y2026.q1", + "columnLetter":"AR", + "size":260, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Бронь средств во 2 квартале", - accessorKey: "data.booking.y2026.q2", - columnLetter: "AS", - size: 270, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь средств во 2 квартале", + "accessorKey":"data.booking.y2026.q2", + "columnLetter":"AS", + "size":270, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Бронь средств в 3 квартале", - accessorKey: "data.booking.y2026.q3", - columnLetter: "AT", - size: 260, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь средств в 3 квартале", + "accessorKey":"data.booking.y2026.q3", + "columnLetter":"AT", + "size":260, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Бронь средств в 4 квартале", - accessorKey: "data.booking.y2026.q4", - columnLetter: "AU", - size: 260, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Бронь средств в 4 квартале", + "accessorKey":"data.booking.y2026.q4", + "columnLetter":"AU", + "size":260, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "2027 год.", - accessorKey: "2027_god", - columns: [ + "header":"2027 год", + "accessorKey":"2027_god", + "columns":[ { - header: "", - accessorKey: "2027_god_field", - columns: [ + "header":"", + "accessorKey":"2027_god_field", + "columns":[ { - header: "Бронь средств в 1 квартале", - accessorKey: "data.booking.y2027.q1", - columnLetter: "AV", - size: 260, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь средств в 1 квартале", + "accessorKey":"data.booking.y2027.q1", + "columnLetter":"AV", + "size":260, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Бронь средств во 2 квартале", - accessorKey: "data.booking.y2027.q2", - columnLetter: "AW", - size: 270, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь средств во 2 квартале", + "accessorKey":"data.booking.y2027.q2", + "columnLetter":"AW", + "size":270, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Бронь средств в 3 квартале", - accessorKey: "data.booking.y2027.q3", - columnLetter: "AX", - size: 260, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь средств в 3 квартале", + "accessorKey":"data.booking.y2027.q3", + "columnLetter":"AX", + "size":260, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Бронь средств в 4 квартале", - accessorKey: "data.booking.y2027.q4", - columnLetter: "AY", - size: 260, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Бронь средств в 4 квартале", + "accessorKey":"data.booking.y2027.q4", + "columnLetter":"AY", + "size":260, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "1 квартал 2026 года", - accessorKey: "1_kvartal_2026_goda", - columns: [ + "header":"1 квартал 2026 года", + "accessorKey":"1_kvartal_2026_goda", + "columns":[ { - header: "Корректировки плановых значений", - accessorKey: - "1_kvartal_2026_goda_korrektirovki_planovykh_znacheniy", - columns: [ + "header":"Корректировки плановых значений", + "accessorKey":"1_kvartal_2026_goda_korrektirovki_planovykh_znacheniy", + "columns":[ { - header: "Текущие( = 0)", - accessorKey: "data.q1.adj_current", - columnLetter: "BA", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Текущие( = 0)", + "accessorKey":"data.q1.adj_current", + "columnLetter":"BA", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Корректиз сметы ГО", - accessorKey: "data.q1.adj_ssp", - columnLetter: "BB", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректиз сметы ГО", + "accessorKey":"data.q1.adj_ssp", + "columnLetter":"BB", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Корректиз резерва", - accessorKey: "data.q1.adj_reserve", - columnLetter: "BC", - size: 180, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректиз резерва", + "accessorKey":"data.q1.adj_reserve", + "columnLetter":"BC", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.q1.adj_comment", - columnLetter: "BD", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.q1.adj_comment", + "columnLetter":"BD", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Базовый план с учетом корректировок", - accessorKey: "data.q1.corrected_plan", - columnLetter: "BE", - size: 350, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Базовый план с учетом корректировок", + "accessorKey":"data.q1.corrected_plan", + "columnLetter":"BE", + "size":350, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Согласование платежей", - accessorKey: "1_kvartal_2026_goda_soglasovanie_platezhey", - columns: [ + "header":"Согласование платежей", + "accessorKey":"1_kvartal_2026_goda_soglasovanie_platezhey", + "columns":[ { - header: "Дата платежа", - accessorKey: "data.q1.pay_date", - columnLetter: "BG", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Дата платежа", + "accessorKey":"data.q1.pay_date", + "columnLetter":"BG", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Сумма платежа", - accessorKey: "data.q1.pay_amount", - columnLetter: "BH", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Сумма платежа", + "accessorKey":"data.q1.pay_amount", + "columnLetter":"BH", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.q1.pay_comment", - columnLetter: "BI", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.q1.pay_comment", + "columnLetter":"BI", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Предоставление акта", - accessorKey: "data.q1.pay_act", - columnLetter: "BJ", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Предоставление акта", + "accessorKey":"data.q1.pay_act", + "columnLetter":"BJ", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Фактические расходы", - accessorKey: "1_kvartal_2026_goda_fakticheskie_raskhody", - columns: [ + "header":"Фактические расходы", + "accessorKey":"1_kvartal_2026_goda_fakticheskie_raskhody", + "columns":[ { - header: "Бронь1 квартал", - accessorKey: "data.q1.booking", - columnLetter: "BL", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь1 квартал", + "accessorKey":"data.q1.booking", + "columnLetter":"BL", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "ФактЯнварь", - accessorKey: "data.q1.actual_m1", - columnLetter: "BM", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактЯнварь", + "accessorKey":"data.q1.actual_m1", + "columnLetter":"BM", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "ФактФевраль", - accessorKey: "data.q1.actual_m2", - columnLetter: "BN", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактФевраль", + "accessorKey":"data.q1.actual_m2", + "columnLetter":"BN", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "ФактМарт", - accessorKey: "data.q1.actual_m3", - columnLetter: "BO", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактМарт", + "accessorKey":"data.q1.actual_m3", + "columnLetter":"BO", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "Факт1 квартал", - accessorKey: "data.q1.actual_quarter", - columnLetter: "BP", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Факт1 квартал", + "accessorKey":"data.q1.actual_quarter", + "columnLetter":"BP", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "Остаток после брони 1 квартала", - accessorKey: "data.q1.residual_after_booking", - columnLetter: "BQ", - size: 300, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Остаток после брони 1 квартала", + "accessorKey":"data.q1.residual_after_booking", + "columnLetter":"BQ", + "size":300, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Остаток после факта 1 квартала", - accessorKey: "data.q1.residual_after_actual", - columnLetter: "BR", - size: 300, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Остаток после факта 1 квартала", + "accessorKey":"data.q1.residual_after_actual", + "columnLetter":"BR", + "size":300, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Корректировка остатка в последующие кварталы", - accessorKey: - "1_kvartal_2026_goda_korrektirovka_ostatka_v_posleduyuschie_kvartaly", - columns: [ + "header":"Корректировка остатка в последующие кварталы", + "accessorKey":"1_kvartal_2026_goda_korrektirovka_ostatka_v_posleduyuschie_kvartaly", + "columns":[ { - header: "Перенос во 2 квартал", - accessorKey: "data.q1.transfer_q2", - columnLetter: "BT", - size: 200, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Перенос во 2 квартал", + "accessorKey":"data.q1.transfer_q2", + "columnLetter":"BT", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Задержка списания расходов / предоставления актов", - accessorKey: "data.q1.transfer_q2_delay_acts", - columnLetter: "BU", - size: 490, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Задержка списания расходов / предоставления актов", + "accessorKey":"data.q1.transfer_q2_delay_acts", + "columnLetter":"BU", + "size":490, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Задержка закупочных процедур", - accessorKey: "data.q1.transfer_q2_delay_procurement", - columnLetter: "BV", - size: 280, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Задержка закупочных процедур", + "accessorKey":"data.q1.transfer_q2_delay_procurement", + "columnLetter":"BV", + "size":280, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "экономия (будет использована РФ)", - accessorKey: "data.q1.transfer_q2_economy_rf", - columnLetter: "BW", - size: 320, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"экономия (будет использована РФ)", + "accessorKey":"data.q1.transfer_q2_economy_rf", + "columnLetter":"BW", + "size":320, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Комментарий переноса во2 квартал", - accessorKey: "data.q1.transfer_next_comment", - columnLetter: "BX", - size: 330, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий переноса во2 квартал", + "accessorKey":"data.q1.transfer_next_comment", + "columnLetter":"BX", + "size":330, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Перенос в 3 квартал", - accessorKey: "data.q1.transfer_q3", - columnLetter: "BY", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Перенос в 3 квартал", + "accessorKey":"data.q1.transfer_q3", + "columnLetter":"BY", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Перенос в 4 квартал", - accessorKey: "data.q1.transfer_q4", - columnLetter: "BZ", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Перенос в 4 квартал", + "accessorKey":"data.q1.transfer_q4", + "columnLetter":"BZ", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Комментарий переноса в3 и 4 квартал", - accessorKey: "data.q1.transfer_far_comment", - columnLetter: "CA", - size: 360, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий переноса в3 и 4 квартал", + "accessorKey":"data.q1.transfer_far_comment", + "columnLetter":"CA", + "size":360, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Перенос в фонд экономии", - accessorKey: "data.q1.transfer_econ", - columnLetter: "CB", - size: 230, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Перенос в фонд экономии", + "accessorKey":"data.q1.transfer_econ", + "columnLetter":"CB", + "size":230, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "ВСЕГО", - accessorKey: "data.q1.total", - columnLetter: "CC", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"ВСЕГО", + "accessorKey":"data.q1.total", + "columnLetter":"CC", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "2 квартал 2026 года", - accessorKey: "2_kvartal_2026_goda", - columns: [ + "header":"2 квартал 2026 года", + "accessorKey":"2_kvartal_2026_goda", + "columns":[ { - header: "Корректировка базового плана", - accessorKey: "2_kvartal_2026_goda_korrektirovka_bazovogo_plana", - columns: [ + "header":"Корректировка базового плана", + "accessorKey":"2_kvartal_2026_goda_korrektirovka_bazovogo_plana", + "columns":[ { - header: - "Изменение целевого назначения перенесенной экономии ( =0)", - accessorKey: "data.q2.target_change", - columnLetter: "CE", - size: 570, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Изменение целевого назначения перенесенной экономии ( =0)", + "accessorKey":"data.q2.target_change", + "columnLetter":"CE", + "size":570, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Корректировка статей базового плана ( =0)", - accessorKey: "data.q2.base_correction", - columnLetter: "CF", - size: 410, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректировка статей базового плана ( =0)", + "accessorKey":"data.q2.base_correction", + "columnLetter":"CF", + "size":410, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Комментарий изменения базового плана", - accessorKey: "data.q2.base_correction_comment", - columnLetter: "CG", - size: 360, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий изменения базового плана", + "accessorKey":"data.q2.base_correction_comment", + "columnLetter":"CG", + "size":360, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "ДФиПУвеличение плана( >0)", - accessorKey: "data.q2.revision_inc", - columnLetter: "CH", - size: 270, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ДФиПУвеличение плана( >0)", + "accessorKey":"data.q2.revision_inc", + "columnLetter":"CH", + "size":270, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "ДФиПCеквестр плана( <0)", - accessorKey: "data.q2.revision_seq", - columnLetter: "CI", - size: 250, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ДФиПCеквестр плана( <0)", + "accessorKey":"data.q2.revision_seq", + "columnLetter":"CI", + "size":250, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.q2.revision_comment", - columnLetter: "CJ", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.q2.revision_comment", + "columnLetter":"CJ", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Скорректированный план на подпись", - accessorKey: "data.q2.new_plan", - columnLetter: "CK", - size: 330, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Скорректированный план на подпись", + "accessorKey":"data.q2.new_plan", + "columnLetter":"CK", + "size":330, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - - { - header: "Корректировки плановых значений", - accessorKey: - "2_kvartal_2026_goda_korrektirovki_planovykh_znacheniy", - columns: [ - { - header: "Текущие( = 0)", - accessorKey: "data.q2.adj_current", - columnLetter: "CM", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Корректиз сметы ГО", - accessorKey: "data.q2.adj_ssp", - columnLetter: "CN", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Корректиз резерва", - accessorKey: "data.q2.adj_reserve", - columnLetter: "CO", - size: 180, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Комментарий", - accessorKey: "data.q2.adj_comment", - columnLetter: "CP", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Скорректированный план с учетом корректировок", - accessorKey: "data.q2.corrected_plan", - columnLetter: "CQ", - size: 450, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Согласование платежей", - accessorKey: "2_kvartal_2026_goda_soglasovanie_platezhey", - columns: [ - { - header: "Дата платежа", - accessorKey: "data.q2.pay_date", - columnLetter: "CS", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Сумма платежа", - accessorKey: "data.q2.pay_amount", - columnLetter: "CT", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Комментарий", - accessorKey: "data.q2.pay_comment", - columnLetter: "CU", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Предоставление акта", - accessorKey: "data.q2.pay_act", - columnLetter: "CV", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Фактические расходы", - accessorKey: "2_kvartal_2026_goda_fakticheskie_raskhody", - columns: [ - { - header: "Бронь2 квартал", - accessorKey: "data.q2.booking", - columnLetter: "CX", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "ФактАпрель", - accessorKey: "data.q2.actual_m1", - columnLetter: "CY", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "ФактМай", - accessorKey: "data.q2.actual_m2", - columnLetter: "CZ", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "ФактИюнь", - accessorKey: "data.q2.actual_m3", - columnLetter: "DA", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Факт2 квартал", - accessorKey: "data.q2.actual_quarter", - columnLetter: "DB", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Остаток после брони 2 квартала", - accessorKey: "data.q2.residual_after_booking", - columnLetter: "DC", - size: 300, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Остаток после факта 2 квартала", - accessorKey: "data.q2.residual_after_actual", - columnLetter: "DD", - size: 300, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Корректировка остатка в последующие кварталы", - accessorKey: - "2_kvartal_2026_goda_korrektirovka_ostatka_v_posleduyuschie_kvartaly", - columns: [ - { - header: "Перенос в 3 квартал", - accessorKey: "data.q2.transfer_q3", - columnLetter: "DF", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Задержка списания расходов / предоставления актов", - accessorKey: "data.q2.transfer_q3_delay_acts", - columnLetter: "DG", - size: 490, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Задержка закупочных процедур", - accessorKey: "data.q2.transfer_q3_delay_procurement", - columnLetter: "DH", - size: 280, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "экономия (будет использована РФ)", - accessorKey: "data.q2.transfer_q3_economy_rf", - columnLetter: "DI", - size: 320, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Комментарий переноса в3 квартал", - accessorKey: "data.q2.transfer_next_comment", - columnLetter: "DJ", - size: 320, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Перенос в 4 квартал", - accessorKey: "data.q2.transfer_q4", - columnLetter: "DK", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Комментарий переноса в4 квартал", - accessorKey: "data.q2.transfer_far_comment", - columnLetter: "DL", - size: 320, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Перенос в фонд экономии", - accessorKey: "data.q2.transfer_econ", - columnLetter: "DM", - size: 230, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "ВСЕГО", - accessorKey: "data.q2.total", - columnLetter: "DN", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "3 квартал 2026 года", - accessorKey: "3_kvartal_2026_goda", - columns: [ - { - header: "Корректировка базового плана", - accessorKey: "3_kvartal_2026_goda_korrektirovka_bazovogo_plana", - columns: [ - { - header: - "Изменение целевого назначения перенесенной экономии ( =0)", - accessorKey: "data.q3.target_change", - columnLetter: "DP", - size: 570, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Корректировка статей базового плана ( =0)", - accessorKey: "data.q3.base_correction", - columnLetter: "DQ", - size: 410, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Комментарий изменения базового плана", - accessorKey: "data.q3.base_correction_comment", - columnLetter: "DR", - size: 360, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "ДФиПУвеличение плана( >0)", - accessorKey: "data.q3.revision_inc", - columnLetter: "DS", - size: 270, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "ДФиПCеквестр плана( <0)", - accessorKey: "data.q3.revision_seq", - columnLetter: "DT", - size: 250, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Комментарий", - accessorKey: "data.q3.revision_comment", - columnLetter: "DU", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Скорректированный план на подпись", - accessorKey: "data.q3.new_plan", - columnLetter: "DV", - size: 330, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Корректировки плановых значений", - accessorKey: - "3_kvartal_2026_goda_korrektirovki_planovykh_znacheniy", - columns: [ + "header":"Корректировки плановых значений", + "accessorKey":"2_kvartal_2026_goda_korrektirovki_planovykh_znacheniy", + "columns":[ { - header: "Текущие( = 0)", - accessorKey: "data.q3.adj_current", - columnLetter: "DX", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Текущие( = 0)", + "accessorKey":"data.q2.adj_current", + "columnLetter":"CM", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Корректиз сметы ГО", - accessorKey: "data.q3.adj_ssp", - columnLetter: "DY", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректиз сметы ГО", + "accessorKey":"data.q2.adj_ssp", + "columnLetter":"CN", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Корректиз резерва", - accessorKey: "data.q3.adj_reserve", - columnLetter: "DZ", - size: 180, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректиз резерва", + "accessorKey":"data.q2.adj_reserve", + "columnLetter":"CO", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.q3.adj_comment", - columnLetter: "EA", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.q2.adj_comment", + "columnLetter":"CP", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Скорректированный план с учетом корректировок", - accessorKey: "data.q3.corrected_plan", - columnLetter: "EB", - size: 450, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Скорректированный план с учетом корректировок", + "accessorKey":"data.q2.corrected_plan", + "columnLetter":"CQ", + "size":450, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Согласование платежей", - accessorKey: "3_kvartal_2026_goda_soglasovanie_platezhey", - columns: [ + "header":"Согласование платежей", + "accessorKey":"2_kvartal_2026_goda_soglasovanie_platezhey", + "columns":[ { - header: "Дата платежа", - accessorKey: "data.q3.pay_date", - columnLetter: "ED", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Дата платежа", + "accessorKey":"data.q2.pay_date", + "columnLetter":"CS", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Сумма платежа", - accessorKey: "data.q3.pay_amount", - columnLetter: "EE", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Сумма платежа", + "accessorKey":"data.q2.pay_amount", + "columnLetter":"CT", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.q3.pay_comment", - columnLetter: "EF", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.q2.pay_comment", + "columnLetter":"CU", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Предоставление акта", - accessorKey: "data.q3.pay_act", - columnLetter: "EG", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Предоставление акта", + "accessorKey":"data.q2.pay_act", + "columnLetter":"CV", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Фактические расходы", - accessorKey: "3_kvartal_2026_goda_fakticheskie_raskhody", - columns: [ + "header":"Фактические расходы", + "accessorKey":"2_kvartal_2026_goda_fakticheskie_raskhody", + "columns":[ { - header: "Бронь3 квартал", - accessorKey: "data.q3.booking", - columnLetter: "EI", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь2 квартал", + "accessorKey":"data.q2.booking", + "columnLetter":"CX", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "ФактИюль", - accessorKey: "data.q3.actual_m1", - columnLetter: "EJ", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактАпрель", + "accessorKey":"data.q2.actual_m1", + "columnLetter":"CY", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "ФактАвгуст", - accessorKey: "data.q3.actual_m2", - columnLetter: "EK", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактМай", + "accessorKey":"data.q2.actual_m2", + "columnLetter":"CZ", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "ФактСентябрь", - accessorKey: "data.q3.actual_m3", - columnLetter: "EL", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактИюнь", + "accessorKey":"data.q2.actual_m3", + "columnLetter":"DA", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "Факт3 квартал", - accessorKey: "data.q3.actual_quarter", - columnLetter: "EM", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Факт2 квартал", + "accessorKey":"data.q2.actual_quarter", + "columnLetter":"DB", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "Остаток после брони 3 квартала", - accessorKey: "data.q3.residual_after_booking", - columnLetter: "EN", - size: 300, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Остаток после брони 2 квартала", + "accessorKey":"data.q2.residual_after_booking", + "columnLetter":"DC", + "size":300, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Остаток после факта 3 квартала", - accessorKey: "data.q3.residual_after_actual", - columnLetter: "EO", - size: 300, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Остаток после факта 2 квартала", + "accessorKey":"data.q2.residual_after_actual", + "columnLetter":"DD", + "size":300, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Корректировка остатка в последующий квартал", - accessorKey: - "3_kvartal_2026_goda_korrektirovka_ostatka_v_posleduyuschiy_kvartal", - columns: [ + "header":"Корректировка остатка в последующие кварталы", + "accessorKey":"2_kvartal_2026_goda_korrektirovka_ostatka_v_posleduyuschie_kvartaly", + "columns":[ { - header: "Перенос в 4 квартал", - accessorKey: "data.q3.transfer_q4", - columnLetter: "EQ", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Перенос в 3 квартал", + "accessorKey":"data.q2.transfer_q3", + "columnLetter":"DF", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Задержка списания расходов / предоставления актов", - accessorKey: "data.q3.transfer_q4_delay_acts", - columnLetter: "ER", - size: 490, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Задержка списания расходов / предоставления актов", + "accessorKey":"data.q2.transfer_q3_delay_acts", + "columnLetter":"DG", + "size":490, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Задержка закупочных процедур", - accessorKey: "data.q3.transfer_q4_delay_procurement", - columnLetter: "ES", - size: 280, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Задержка закупочных процедур", + "accessorKey":"data.q2.transfer_q3_delay_procurement", + "columnLetter":"DH", + "size":280, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "экономия (будет использована РФ)", - accessorKey: "data.q3.transfer_q4_economy_rf", - columnLetter: "ET", - size: 320, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"экономия (будет использована РФ)", + "accessorKey":"data.q2.transfer_q3_economy_rf", + "columnLetter":"DI", + "size":320, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Комментарий переноса в4 квартал", - accessorKey: "data.q3.transfer_next_comment", - columnLetter: "EU", - size: 320, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий переноса в3 квартал", + "accessorKey":"data.q2.transfer_next_comment", + "columnLetter":"DJ", + "size":320, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Перенос в фонд экономии", - accessorKey: "data.q3.transfer_econ", - columnLetter: "EV", - size: 230, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Перенос в 4 квартал", + "accessorKey":"data.q2.transfer_q4", + "columnLetter":"DK", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "ВСЕГО", - accessorKey: "data.q3.total", - columnLetter: "EW", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий переноса в4 квартал", + "accessorKey":"data.q2.transfer_far_comment", + "columnLetter":"DL", + "size":320, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, + { + "header":"Перенос в фонд экономии", + "accessorKey":"data.q2.transfer_econ", + "columnLetter":"DM", + "size":230, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + }, + { + "header":"ВСЕГО", + "accessorKey":"data.q2.total", + "columnLetter":"DN", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "4 квартал 2026 года", - accessorKey: "4_kvartal_2026_goda", - columns: [ + "header":"3 квартал 2026 года", + "accessorKey":"3_kvartal_2026_goda", + "columns":[ { - header: "Корректировка базового плана", - accessorKey: "4_kvartal_2026_goda_korrektirovka_bazovogo_plana", - columns: [ + "header":"Корректировка базового плана", + "accessorKey":"3_kvartal_2026_goda_korrektirovka_bazovogo_plana", + "columns":[ { - header: - "Изменение целевого назначения перенесенной экономии ( =0)", - accessorKey: "data.q4.target_change", - columnLetter: "EY", - size: 570, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Изменение целевого назначения перенесенной экономии ( =0)", + "accessorKey":"data.q3.target_change", + "columnLetter":"DP", + "size":570, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Корректировка статей базового плана ( =0)", - accessorKey: "data.q4.base_correction", - columnLetter: "EZ", - size: 410, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректировка статей базового плана ( =0)", + "accessorKey":"data.q3.base_correction", + "columnLetter":"DQ", + "size":410, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "Комментарий изменения базового плана", - accessorKey: "data.q4.base_correction_comment", - columnLetter: "FA", - size: 360, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий изменения базового плана", + "accessorKey":"data.q3.base_correction_comment", + "columnLetter":"DR", + "size":360, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, { - header: "ДФиПУвеличение плана( >0)", - accessorKey: "data.q4.revision_inc", - columnLetter: "FB", - size: 270, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ДФиПУвеличение плана( >0)", + "accessorKey":"data.q3.revision_inc", + "columnLetter":"DS", + "size":270, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "ДФиПCеквестр плана( <0)", - accessorKey: "data.q4.revision_seq", - columnLetter: "FC", - size: 250, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ДФиПCеквестр плана( <0)", + "accessorKey":"data.q3.revision_seq", + "columnLetter":"DT", + "size":250, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.q4.revision_comment", - columnLetter: "FD", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.q3.revision_comment", + "columnLetter":"DU", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Скорректированный план на подпись", - accessorKey: "data.q4.new_plan", - columnLetter: "FE", - size: 330, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Скорректированный план на подпись", + "accessorKey":"data.q3.new_plan", + "columnLetter":"DV", + "size":330, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, - + { - header: "Корректировки плановых значений", - accessorKey: - "4_kvartal_2026_goda_korrektirovki_planovykh_znacheniy", - columns: [ + "header":"Корректировки плановых значений", + "accessorKey":"3_kvartal_2026_goda_korrektirovki_planovykh_znacheniy", + "columns":[ { - header: "Текущие( = 0)", - accessorKey: "data.q4.adj_current", - columnLetter: "FG", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Текущие( = 0)", + "accessorKey":"data.q3.adj_current", + "columnLetter":"DX", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Корректиз сметы ГО", - accessorKey: "data.q4.adj_ssp", - columnLetter: "FH", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректиз сметы ГО", + "accessorKey":"data.q3.adj_ssp", + "columnLetter":"DY", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Корректиз резерва", - accessorKey: "data.q4.adj_reserve", - columnLetter: "FI", - size: 180, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректиз резерва", + "accessorKey":"data.q3.adj_reserve", + "columnLetter":"DZ", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.q4.adj_comment", - columnLetter: "FJ", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.q3.adj_comment", + "columnLetter":"EA", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, { - header: "Скорректированный план с учетом корректировок", - accessorKey: "data.q4.corrected_plan", - columnLetter: "FK", - size: 450, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Скорректированный план с учетом корректировок", + "accessorKey":"data.q3.corrected_plan", + "columnLetter":"EB", + "size":450, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Согласование платежей", - accessorKey: "4_kvartal_2026_goda_soglasovanie_platezhey", - columns: [ + "header":"Согласование платежей", + "accessorKey":"3_kvartal_2026_goda_soglasovanie_platezhey", + "columns":[ { - header: "Дата платежа", - accessorKey: "data.q4.pay_date", - columnLetter: "FM", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Дата платежа", + "accessorKey":"data.q3.pay_date", + "columnLetter":"ED", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Сумма платежа", - accessorKey: "data.q4.pay_amount", - columnLetter: "FN", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Сумма платежа", + "accessorKey":"data.q3.pay_amount", + "columnLetter":"EE", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Комментарий", - accessorKey: "data.q4.pay_comment", - columnLetter: "FO", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Комментарий", + "accessorKey":"data.q3.pay_comment", + "columnLetter":"EF", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } }, { - header: "Предоставление акта", - accessorKey: "data.q4.pay_act", - columnLetter: "FP", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Предоставление акта", + "accessorKey":"data.q3.pay_act", + "columnLetter":"EG", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Фактические расходы", - accessorKey: "4_kvartal_2026_goda_fakticheskie_raskhody", - columns: [ + "header":"Фактические расходы", + "accessorKey":"3_kvartal_2026_goda_fakticheskie_raskhody", + "columns":[ { - header: "Бронь4 квартал", - accessorKey: "data.q4.booking", - columnLetter: "FR", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Бронь3 квартал", + "accessorKey":"data.q3.booking", + "columnLetter":"EI", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "ФактОктябрь", - accessorKey: "data.q4.actual_m1", - columnLetter: "FS", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактИюль", + "accessorKey":"data.q3.actual_m1", + "columnLetter":"EJ", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "ФактНоябрь", - accessorKey: "data.q4.actual_m2", - columnLetter: "FT", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактАвгуст", + "accessorKey":"data.q3.actual_m2", + "columnLetter":"EK", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "ФактДекабрь", - accessorKey: "data.q4.actual_m3", - columnLetter: "FU", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"ФактСентябрь", + "accessorKey":"data.q3.actual_m3", + "columnLetter":"EL", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "СПОД(Январь)", - accessorKey: "data.q4.actual_spod", - columnLetter: "FV", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Факт3 квартал", + "accessorKey":"data.q3.actual_quarter", + "columnLetter":"EM", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } }, { - header: "Факт4 квартал(с уч СПОД)", - accessorKey: "data.q4.actual_quarter", - columnLetter: "FW", - size: 260, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Остаток после брони 3 квартала", + "accessorKey":"data.q3.residual_after_booking", + "columnLetter":"EN", + "size":300, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } }, { - header: "Остаток после брони 4 квартала (с уч СПОД)", - accessorKey: "data.q4.residual_after_booking", - columnLetter: "FX", - size: 420, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Остаток после факта 4 квартала (с уч СПОД)", - accessorKey: "data.q4.residual_after_actual", - columnLetter: "FY", - size: 420, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "header":"Остаток после факта 3 квартала", + "accessorKey":"data.q3.residual_after_actual", + "columnLetter":"EO", + "size":300, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, { - header: "Экономия", - accessorKey: "4_kvartal_2026_goda_ekonomiya", - columns: [ + "header":"Корректировка остатка в последующий квартал", + "accessorKey":"3_kvartal_2026_goda_korrektirovka_ostatka_v_posleduyuschiy_kvartal", + "columns":[ { - header: "Перенос в фонд экономии", - accessorKey: "data.q4.transfer_econ", - columnLetter: "GA", - size: 230, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Перенос в 4 квартал", + "accessorKey":"data.q3.transfer_q4", + "columnLetter":"EQ", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, + { + "header":"Задержка списания расходов / предоставления актов", + "accessorKey":"data.q3.transfer_q4_delay_acts", + "columnLetter":"ER", + "size":490, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + }, + { + "header":"Задержка закупочных процедур", + "accessorKey":"data.q3.transfer_q4_delay_procurement", + "columnLetter":"ES", + "size":280, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + }, + { + "header":"экономия (будет использована РФ)", + "accessorKey":"data.q3.transfer_q4_economy_rf", + "columnLetter":"ET", + "size":320, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + }, + { + "header":"Комментарий переноса в4 квартал", + "accessorKey":"data.q3.transfer_next_comment", + "columnLetter":"EU", + "size":320, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + }, + { + "header":"Перенос в фонд экономии", + "accessorKey":"data.q3.transfer_econ", + "columnLetter":"EV", + "size":230, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + }, + { + "header":"ВСЕГО", + "accessorKey":"data.q3.total", + "columnLetter":"EW", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, { - header: "2026 год", - accessorKey: "2026_god_43", - columns: [ + "header":"4 квартал 2026 года", + "accessorKey":"4_kvartal_2026_goda", + "columns":[ { - header: "", - accessorKey: "2026_god_field_5", - columns: [ + "header":"Корректировка базового плана", + "accessorKey":"4_kvartal_2026_goda_korrektirovka_bazovogo_plana", + "columns":[ { - header: "Сумма фактических расходов за год", - accessorKey: "data.totals.fact_year", - columnLetter: "GC", - size: 330, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Изменение целевого назначения перенесенной экономии ( =0)", + "accessorKey":"data.q4.target_change", + "columnLetter":"EY", + "size":570, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, - { - header: "Сумма оплаты за год", - accessorKey: "data.totals.pay_year", - columnLetter: "GE", - size: 190, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "header":"Корректировка статей базового плана ( =0)", + "accessorKey":"data.q4.base_correction", + "columnLetter":"EZ", + "size":410, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } }, + { + "header":"Комментарий изменения базового плана", + "accessorKey":"data.q4.base_correction_comment", + "columnLetter":"FA", + "size":360, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + }, + { + "header":"ДФиПУвеличение плана( >0)", + "accessorKey":"data.q4.revision_inc", + "columnLetter":"FB", + "size":270, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + }, + { + "header":"ДФиПCеквестр плана( <0)", + "accessorKey":"data.q4.revision_seq", + "columnLetter":"FC", + "size":250, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + }, + { + "header":"Комментарий", + "accessorKey":"data.q4.revision_comment", + "columnLetter":"FD", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + }, + { + "header":"Скорректированный план на подпись", + "accessorKey":"data.q4.new_plan", + "columnLetter":"FE", + "size":330, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + }, + + { + "header":"Корректировки плановых значений", + "accessorKey":"4_kvartal_2026_goda_korrektirovki_planovykh_znacheniy", + "columns":[ + { + "header":"Текущие( = 0)", + "accessorKey":"data.q4.adj_current", + "columnLetter":"FG", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } }, - }, + { + "header":"Корректиз сметы ГО", + "accessorKey":"data.q4.adj_ssp", + "columnLetter":"FH", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + }, + { + "header":"Корректиз резерва", + "accessorKey":"data.q4.adj_reserve", + "columnLetter":"FI", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + }, + { + "header":"Комментарий", + "accessorKey":"data.q4.adj_comment", + "columnLetter":"FJ", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + }, + { + "header":"Скорректированный план с учетом корректировок", + "accessorKey":"data.q4.corrected_plan", + "columnLetter":"FK", + "size":450, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFF66", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } }, + { + "header":"Согласование платежей", + "accessorKey":"4_kvartal_2026_goda_soglasovanie_platezhey", + "columns":[ + { + "header":"Дата платежа", + "accessorKey":"data.q4.pay_date", + "columnLetter":"FM", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } + }, + { + "header":"Сумма платежа", + "accessorKey":"data.q4.pay_amount", + "columnLetter":"FN", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } + }, + { + "header":"Комментарий", + "accessorKey":"data.q4.pay_comment", + "columnLetter":"FO", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } + }, + { + "header":"Предоставление акта", + "accessorKey":"data.q4.pay_act", + "columnLetter":"FP", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + }, + { + "header":"Фактические расходы", + "accessorKey":"4_kvartal_2026_goda_fakticheskie_raskhody", + "columns":[ + { + "header":"Бронь4 квартал", + "accessorKey":"data.q4.booking", + "columnLetter":"FR", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } + }, + { + "header":"ФактОктябрь", + "accessorKey":"data.q4.actual_m1", + "columnLetter":"FS", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"ФактНоябрь", + "accessorKey":"data.q4.actual_m2", + "columnLetter":"FT", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"ФактДекабрь", + "accessorKey":"data.q4.actual_m3", + "columnLetter":"FU", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"СПОД(Январь)", + "accessorKey":"data.q4.actual_spod", + "columnLetter":"FV", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт4 квартал(с уч СПОД)", + "accessorKey":"data.q4.actual_quarter", + "columnLetter":"FW", + "size":260, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Остаток после брони 4 квартала (с уч СПОД)", + "accessorKey":"data.q4.residual_after_booking", + "columnLetter":"FX", + "size":420, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FABF8F", + "color":"#000000" + } + } + }, + { + "header":"Остаток после факта 4 квартала (с уч СПОД)", + "accessorKey":"data.q4.residual_after_actual", + "columnLetter":"FY", + "size":420, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + }, + { + "header":"Экономия", + "accessorKey":"4_kvartal_2026_goda_ekonomiya", + "columns":[ + { + "header":"Перенос в фонд экономии", + "accessorKey":"data.q4.transfer_econ", + "columnLetter":"GA", + "size":230, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#903C39", + "color":"#FFFFFF" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + } ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } }, - ], - }, -}; + { + "header":"2026 год.", + "accessorKey":"2026_god_43", + "columns":[ + { + "header":"", + "accessorKey":"2026_god_field_5", + "columns":[ + { + "header":"Сумма фактических расходов за год", + "accessorKey":"data.totals.fact_year", + "columnLetter":"GC", + "size":330, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Сумма оплаты за год", + "accessorKey":"data.totals.pay_year", + "columnLetter":"GE", + "size":190, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#95B3D7", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#B2A1C7", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#FFFFFF", + "color":"#000000" + } + } + } + ] + } +} \ No newline at end of file diff --git a/web/src/components/RealtimeTable/constants/FORM_2/CAP.js b/web/src/components/RealtimeTable/constants/FORM_2/CAP.js index 5fdd11c..7d1c3c7 100644 --- a/web/src/components/RealtimeTable/constants/FORM_2/CAP.js +++ b/web/src/components/RealtimeTable/constants/FORM_2/CAP.js @@ -29,114 +29,6 @@ export const config = { color_type: orangeColumn, accessorKey: "data.header.internal_order", }, - "data.collegial.approved": { - color_type: orangeColumn, - accessorKey: "data.collegial.approved", - }, - "data.collegial.protocol": { - color_type: orangeColumn, - accessorKey: "data.collegial.protocol", - }, - field_kollegialnye_organy_field: { - color_type: orangeColumn, - accessorKey: "field_kollegialnye_organy_field", - }, - "data.collegial.note": { - color_type: orangeColumn, - accessorKey: "data.collegial.note", - }, - "data.ckk.ceiling": { - color_type: orangeColumn, - accessorKey: "data.ckk.ceiling", - }, - "data.ckk.rf_schedule": { - color_type: orangeColumn, - accessorKey: "data.ckk.rf_schedule", - }, - "data.ckk.deadline": { - color_type: orangeColumn, - accessorKey: "data.ckk.deadline", - }, - "data.ckk.proc_plan": { - color_type: orangeColumn, - accessorKey: "data.ckk.proc_plan", - }, - "data.ckk.proc_method": { - color_type: orangeColumn, - accessorKey: "data.ckk.proc_method", - }, - "data.ckk.comment": { - color_type: orangeColumn, - accessorKey: "data.ckk.comment", - }, - "data.contract_detail.counterparty": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.counterparty", - }, - "data.contract_detail.reference": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.reference", - }, - "data.contract_detail.addenda": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.addenda", - }, - "data.contract_detail.subject": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.subject", - }, - "data.contract_detail.currency": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.currency", - }, - "data.contract_detail.ceiling": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.ceiling", - }, - "data.contract_detail.rf_schedule": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.rf_schedule", - }, - "data.contract_detail.vat_rate": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.vat_rate", - }, - "data.contract_detail.exchange_rate": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.exchange_rate", - }, - "data.contract_detail.amount_foreign": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.amount_foreign", - }, - "data.contract_detail.deadline": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.deadline", - }, - "data.contract_detail.payment_scheme": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.payment_scheme", - }, - "data.contract_detail.act": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.act", - }, - "data.contract_detail.comment": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.comment", - }, - field_ref_field: { - color_type: whiteColumn, - accessorKey: "field_ref_field", - }, - "data.totals.fact_year": { - color_type: greenColumn, - accessorKey: "data.totals.fact_year", - }, - "data.totals.pay_year": { - color_type: blueColumn, - accessorKey: "data.totals.pay_year", - }, "data.plan.q1": { color_type: orangeColumn, accessorKey: "data.plan.q1", @@ -266,37 +158,133 @@ export const config = { accessorKey: "data.approved.year", }, "data.collegial.approved": { - color_type: whiteColumn, + color_type: orangeColumn, accessorKey: "data.collegial.approved", }, "data.collegial.protocol": { - color_type: whiteColumn, + color_type: orangeColumn, accessorKey: "data.collegial.protocol", }, field_kollegialnye_organy_field: { - color_type: whiteColumn, + color_type: orangeColumn, accessorKey: "field_kollegialnye_organy_field", }, "data.collegial.note": { - color_type: whiteColumn, + color_type: orangeColumn, accessorKey: "data.collegial.note", }, - field_field_field: { - color_type: whiteColumn, - accessorKey: "field_field_field", - }, "data.ckk.ceiling": { - color_type: whiteColumn, + color_type: orangeColumn, accessorKey: "data.ckk.ceiling", }, "data.ckk.q1": { color_type: orangeColumn, accessorKey: "data.ckk.q1", }, + "data.ckk.q2": { + color_type: orangeColumn, + accessorKey: "data.ckk.q2", + }, + "data.ckk.q3": { + color_type: orangeColumn, + accessorKey: "data.ckk.q3", + }, + "data.ckk.q4": { + color_type: orangeColumn, + accessorKey: "data.ckk.q4", + }, + "data.ckk.rf_schedule": { + color_type: orangeColumn, + accessorKey: "data.ckk.rf_schedule", + }, + "data.ckk.deadline": { + color_type: orangeColumn, + accessorKey: "data.ckk.deadline", + }, + "data.ckk.proc_plan": { + color_type: orangeColumn, + accessorKey: "data.ckk.proc_plan", + }, + "data.ckk.proc_method": { + color_type: orangeColumn, + accessorKey: "data.ckk.proc_method", + }, + "data.ckk.comment": { + color_type: orangeColumn, + accessorKey: "data.ckk.comment", + }, + "data.contract_detail.counterparty": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.counterparty", + }, + "data.contract_detail.reference": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.reference", + }, + "data.contract_detail.addenda": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.addenda", + }, + "data.contract_detail.subject": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.subject", + }, + "data.contract_detail.currency": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.currency", + }, + "data.contract_detail.ceiling": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.ceiling", + }, "data.contract_detail.q1": { color_type: orangeColumn, accessorKey: "data.contract_detail.q1", }, + "data.contract_detail.q2": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.q2", + }, + "data.contract_detail.q3": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.q3", + }, + "data.contract_detail.q4": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.q4", + }, + "data.contract_detail.rf_schedule": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.rf_schedule", + }, + "data.contract_detail.vat_rate": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.vat_rate", + }, + "data.contract_detail.exchange_rate": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.exchange_rate", + }, + "data.contract_detail.amount_foreign": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.amount_foreign", + }, + "data.contract_detail.deadline": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.deadline", + }, + "data.contract_detail.payment_scheme": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.payment_scheme", + }, + "data.contract_detail.act": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.act", + }, + "data.contract_detail.comment": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.comment", + }, "data.q1.adj_current": { color_type: yellowColumn, accessorKey: "data.q1.adj_current", @@ -310,12 +298,13 @@ export const config = { accessorKey: "data.q1.adj_rf", }, "data.q1.adj_reserve": { - color_type: whiteColumn, + color_type: yellowColumn, accessorKey: "data.q1.adj_reserve", }, - "1_kv_26_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc": { + "1_kvartal_2026_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc": { color_type: redColumn, - accessorKey: "1_kv_26_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc", + accessorKey: + "1_kvartal_2026_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc", }, "data.q1.adj_comment": { color_type: yellowColumn, @@ -325,6 +314,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q1.corrected_plan", }, + "1_kvartal_2026_ref_field": { + color_type: whiteColumn, + accessorKey: "1_kvartal_2026_ref_field", + }, "data.q1.pay_date": { color_type: blueColumn, accessorKey: "data.q1.pay_date", @@ -349,6 +342,10 @@ export const config = { color_type: blueColumn, accessorKey: "data.q1.pay_act", }, + "1_kvartal_2026_field_field": { + color_type: whiteColumn, + accessorKey: "1_kvartal_2026_field_field", + }, "data.q1.booking": { color_type: orangeColumn, accessorKey: "data.q1.booking", @@ -397,14 +394,6 @@ export const config = { color_type: redColumn, accessorKey: "data.q1.total", }, - "data.ckk.q2": { - color_type: orangeColumn, - accessorKey: "data.ckk.q2", - }, - "data.contract_detail.q2": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.q2", - }, "data.q2.rev_eco": { color_type: redColumn, accessorKey: "data.q2.rev_eco", @@ -429,6 +418,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q2.new_plan", }, + "2_kvartal_2026_field_field": { + color_type: whiteColumn, + accessorKey: "2_kvartal_2026_field_field", + }, "data.q2.adj_current": { color_type: yellowColumn, accessorKey: "data.q2.adj_current", @@ -445,14 +438,19 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q2.adj_reserve", }, - "2_kv_26_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc": { + "2_kvartal_2026_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc": { color_type: redColumn, - accessorKey: "2_kv_26_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc", + accessorKey: + "2_kvartal_2026_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc", }, "data.q2.corrected_plan": { color_type: yellowColumn, accessorKey: "data.q2.corrected_plan", }, + "2_kvartal_2026_ref_field": { + color_type: whiteColumn, + accessorKey: "2_kvartal_2026_ref_field", + }, "data.q2.pay_date": { color_type: blueColumn, accessorKey: "data.q2.pay_date", @@ -521,14 +519,6 @@ export const config = { color_type: redColumn, accessorKey: "data.q2.total", }, - "data.ckk.q3": { - color_type: orangeColumn, - accessorKey: "data.ckk.q3", - }, - "data.contract_detail.q3": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.q3", - }, "data.q3.rev_eco": { color_type: redColumn, accessorKey: "data.q3.rev_eco", @@ -553,6 +543,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q3.new_plan", }, + "3_kvartal_2026_field_field": { + color_type: whiteColumn, + accessorKey: "3_kvartal_2026_field_field", + }, "data.q3.adj_current": { color_type: yellowColumn, accessorKey: "data.q3.adj_current", @@ -569,14 +563,19 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q3.adj_reserve", }, - "3_kv_26_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc": { + "3_kvartal_2026_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc": { color_type: redColumn, - accessorKey: "3_kv_26_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc", + accessorKey: + "3_kvartal_2026_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc", }, "data.q3.corrected_plan": { color_type: yellowColumn, accessorKey: "data.q3.corrected_plan", }, + "3_kvartal_2026_ref_field": { + color_type: whiteColumn, + accessorKey: "3_kvartal_2026_ref_field", + }, "data.q3.pay_date": { color_type: blueColumn, accessorKey: "data.q3.pay_date", @@ -641,14 +640,6 @@ export const config = { color_type: redColumn, accessorKey: "data.q3.total", }, - "data.ckk.q4": { - color_type: orangeColumn, - accessorKey: "data.ckk.q4", - }, - "data.contract_detail.q4": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.q4", - }, "data.q4.rev_eco": { color_type: redColumn, accessorKey: "data.q4.rev_eco", @@ -677,6 +668,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q4.new_plan", }, + "4_kvartal_2026_field_field": { + color_type: whiteColumn, + accessorKey: "4_kvartal_2026_field_field", + }, "data.q4.adj_current": { color_type: yellowColumn, accessorKey: "data.q4.adj_current", @@ -697,6 +692,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q4.corrected_plan", }, + "4_kvartal_2026_ref_field": { + color_type: whiteColumn, + accessorKey: "4_kvartal_2026_ref_field", + }, "data.q4.pay_date": { color_type: blueColumn, accessorKey: "data.q4.pay_date", @@ -753,9 +752,9 @@ export const config = { color_type: greenColumn, accessorKey: "data.q4.rem_actual", }, - "4_kv_26_zakrytie_4_go_kvartala_field": { + "4_kvartal_2026_zakrytie_4_go_kvartala_field": { color_type: redColumn, - accessorKey: "4_kv_26_zakrytie_4_go_kvartala_field", + accessorKey: "4_kvartal_2026_zakrytie_4_go_kvartala_field", }, "data.q4.economy": { color_type: redColumn, @@ -765,10 +764,18 @@ export const config = { color_type: redColumn, accessorKey: "data.q4.total", }, + "data.totals.fact_year": { + color_type: greenColumn, + accessorKey: "data.totals.fact_year", + }, + "data.totals.pay_year": { + color_type: blueColumn, + accessorKey: "data.totals.pay_year", + }, }, columns: [ { - header: "", + header: " ", accessorKey: "field", columns: [ { @@ -783,12 +790,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "ID статьи", @@ -802,12 +803,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "ID группы номенклатуры", @@ -821,12 +816,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "Наименование", @@ -840,12 +829,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "Внутренний заказ", @@ -859,12 +842,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, ], muiTableHeadCellProps: { @@ -1075,7 +1052,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, @@ -1096,12 +1073,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "Назначение расхода фактической аллокации", @@ -1116,17 +1087,11 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, @@ -1234,7 +1199,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, @@ -1342,7 +1307,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, @@ -1431,13 +1396,13 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, }, { - header: "-", + header: " ", accessorKey: "field_6", columns: [ { @@ -1487,12 +1452,23 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, }, - + ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, + }, + { + header: " ", + accessorKey: "field_10", + columns: [ { header: "ЦКК", accessorKey: "field_tskk", @@ -1518,7 +1494,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1531,7 +1507,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1544,7 +1520,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1557,7 +1533,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1630,11 +1606,23 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, }, + ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, + }, + { + header: " ", + accessorKey: "field_20", + columns: [ { header: "Договор", accessorKey: "field_dogovor", @@ -1725,7 +1713,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1738,7 +1726,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1751,7 +1739,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1764,7 +1752,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1876,7 +1864,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -1913,7 +1901,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -1932,7 +1920,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -1951,7 +1939,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -1970,7 +1958,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -1990,7 +1978,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2009,7 +1997,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2027,7 +2015,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2040,7 +2028,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2053,7 +2041,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2066,7 +2054,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2079,7 +2067,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2092,7 +2080,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2100,11 +2088,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, }, + { header: "Бронь 1 кв 26", accessorKey: "1_kvartal_2026_bron_1_kv_26", @@ -2125,7 +2114,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -2144,7 +2133,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2163,7 +2152,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2182,7 +2171,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2201,7 +2190,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2220,7 +2209,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -2239,7 +2228,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2256,8 +2245,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2269,8 +2258,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2282,8 +2271,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2295,8 +2284,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2308,16 +2297,16 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2354,8 +2343,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2373,8 +2362,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2392,8 +2381,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2411,8 +2400,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2430,8 +2419,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2449,7 +2438,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2475,7 +2464,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2494,7 +2483,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2513,7 +2502,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2532,7 +2521,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2552,11 +2541,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Платеж и предоставление акта", accessorKey: "2_kvartal_2026_platezh_i_predostavlenie_akta", @@ -2569,7 +2559,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2582,7 +2572,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2595,7 +2585,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2608,7 +2598,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2621,7 +2611,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2634,7 +2624,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2642,7 +2632,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2667,7 +2657,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -2686,7 +2676,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2705,7 +2695,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2724,7 +2714,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2743,7 +2733,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2762,7 +2752,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -2781,7 +2771,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2798,8 +2788,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2811,8 +2801,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2824,8 +2814,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2837,16 +2827,16 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2883,8 +2873,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2902,8 +2892,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2921,8 +2911,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2940,8 +2930,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2959,8 +2949,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2978,7 +2968,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3004,7 +2994,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3023,7 +3013,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3042,7 +3032,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3061,7 +3051,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3081,11 +3071,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Платеж и предоставление акта", accessorKey: "3_kvartal_2026_platezh_i_predostavlenie_akta", @@ -3098,7 +3089,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3111,7 +3102,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3124,7 +3115,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3137,7 +3128,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3150,7 +3141,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3163,7 +3154,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3171,7 +3162,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3196,7 +3187,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -3215,7 +3206,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3234,7 +3225,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3253,7 +3244,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3272,7 +3263,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3291,7 +3282,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -3310,7 +3301,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3327,8 +3318,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3340,8 +3331,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3353,16 +3344,16 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3399,8 +3390,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3418,8 +3409,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3437,8 +3428,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3456,8 +3447,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3482,8 +3473,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3501,7 +3492,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3527,7 +3518,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3546,7 +3537,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3565,7 +3556,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3584,7 +3575,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3603,11 +3594,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Платеж и предоставление акта", accessorKey: "4_kvartal_2026_platezh_i_predostavlenie_akta", @@ -3620,7 +3612,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3633,7 +3625,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3646,7 +3638,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3659,7 +3651,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3672,7 +3664,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3685,7 +3677,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3693,7 +3685,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3718,7 +3710,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -3737,7 +3729,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3756,7 +3748,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3775,7 +3767,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3794,7 +3786,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3813,7 +3805,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3832,7 +3824,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -3851,7 +3843,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3868,8 +3860,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3881,16 +3873,16 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3903,12 +3895,12 @@ export const config = { }, }, { - header: "Факт", - accessorKey: "fakt", + header: " ", + accessorKey: "88", columns: [ { header: "Факт 26", - accessorKey: "fakt_fakt_26", + accessorKey: "88_fakt_26", columns: [ { header: "", @@ -3916,11 +3908,17 @@ export const config = { columnLetter: "HE", size: 150, filterFn: "contains", + muiTableHeadCellProps: { + sx: { + backgroundColor: "#C2D69B", + color: "#000000", + }, + }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3934,12 +3932,12 @@ export const config = { }, }, { - header: "Сумма", - accessorKey: "summa", + header: " ", + accessorKey: "77", columns: [ { header: "Сумма оплаты", - accessorKey: "summa_summa_oplaty", + accessorKey: "77_summa_oplaty", columns: [ { header: "", @@ -3947,11 +3945,17 @@ export const config = { columnLetter: "HG", size: 150, filterFn: "contains", + muiTableHeadCellProps: { + sx: { + backgroundColor: "#95B3D7", + color: "#000000", + }, + }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, diff --git a/web/src/components/RealtimeTable/constants/FORM_2/OPER.js b/web/src/components/RealtimeTable/constants/FORM_2/OPER.js index 07065c6..2f68548 100644 --- a/web/src/components/RealtimeTable/constants/FORM_2/OPER.js +++ b/web/src/components/RealtimeTable/constants/FORM_2/OPER.js @@ -29,114 +29,6 @@ export const config = { color_type: blueColumn, accessorKey: "data.header.internal_order", }, - "data.collegial.approved": { - color_type: orangeColumn, - accessorKey: "data.collegial.approved", - }, - "data.collegial.protocol": { - color_type: orangeColumn, - accessorKey: "data.collegial.protocol", - }, - field_kollegialnye_organy_field: { - color_type: orangeColumn, - accessorKey: "field_kollegialnye_organy_field", - }, - "data.collegial.note": { - color_type: orangeColumn, - accessorKey: "data.collegial.note", - }, - "data.ckk.ceiling": { - color_type: orangeColumn, - accessorKey: "data.ckk.ceiling", - }, - "data.ckk.rf_schedule": { - color_type: orangeColumn, - accessorKey: "data.ckk.rf_schedule", - }, - "data.ckk.deadline": { - color_type: orangeColumn, - accessorKey: "data.ckk.deadline", - }, - "data.ckk.proc_plan": { - color_type: orangeColumn, - accessorKey: "data.ckk.proc_plan", - }, - "data.ckk.proc_method": { - color_type: orangeColumn, - accessorKey: "data.ckk.proc_method", - }, - "data.ckk.comment": { - color_type: orangeColumn, - accessorKey: "data.ckk.comment", - }, - "data.contract_detail.counterparty": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.counterparty", - }, - "data.contract_detail.reference": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.reference", - }, - "data.contract_detail.addenda": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.addenda", - }, - "data.contract_detail.subject": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.subject", - }, - "data.contract_detail.currency": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.currency", - }, - "data.contract_detail.ceiling": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.ceiling", - }, - "data.contract_detail.rf_schedule": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.rf_schedule", - }, - "data.contract_detail.vat_rate": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.vat_rate", - }, - "data.contract_detail.exchange_rate": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.exchange_rate", - }, - "data.contract_detail.amount_foreign": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.amount_foreign", - }, - "data.contract_detail.deadline": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.deadline", - }, - "data.contract_detail.payment_scheme": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.payment_scheme", - }, - "data.contract_detail.act": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.act", - }, - "data.contract_detail.comment": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.comment", - }, - field_ref_field: { - color_type: whiteColumn, - accessorKey: "field_ref_field", - }, - "data.totals.fact_year": { - color_type: greenColumn, - accessorKey: "data.totals.fact_year", - }, - "data.totals.pay_year": { - color_type: blueColumn, - accessorKey: "data.totals.pay_year", - }, "data.plan.q1": { color_type: blueColumn, accessorKey: "data.plan.q1", @@ -265,14 +157,134 @@ export const config = { color_type: blueColumn, accessorKey: "data.approved.year", }, + "data.collegial.approved": { + color_type: orangeColumn, + accessorKey: "data.collegial.approved", + }, + "data.collegial.protocol": { + color_type: orangeColumn, + accessorKey: "data.collegial.protocol", + }, + field_kollegialnye_organy_field: { + color_type: orangeColumn, + accessorKey: "field_kollegialnye_organy_field", + }, + "data.collegial.note": { + color_type: orangeColumn, + accessorKey: "data.collegial.note", + }, + "data.ckk.ceiling": { + color_type: orangeColumn, + accessorKey: "data.ckk.ceiling", + }, "data.ckk.q1": { color_type: orangeColumn, accessorKey: "data.ckk.q1", }, + "data.ckk.q2": { + color_type: orangeColumn, + accessorKey: "data.ckk.q2", + }, + "data.ckk.q3": { + color_type: orangeColumn, + accessorKey: "data.ckk.q3", + }, + "data.ckk.q4": { + color_type: orangeColumn, + accessorKey: "data.ckk.q4", + }, + "data.ckk.rf_schedule": { + color_type: orangeColumn, + accessorKey: "data.ckk.rf_schedule", + }, + "data.ckk.deadline": { + color_type: orangeColumn, + accessorKey: "data.ckk.deadline", + }, + "data.ckk.proc_plan": { + color_type: orangeColumn, + accessorKey: "data.ckk.proc_plan", + }, + "data.ckk.proc_method": { + color_type: orangeColumn, + accessorKey: "data.ckk.proc_method", + }, + "data.ckk.comment": { + color_type: orangeColumn, + accessorKey: "data.ckk.comment", + }, + "data.contract_detail.counterparty": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.counterparty", + }, + "data.contract_detail.reference": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.reference", + }, + "data.contract_detail.addenda": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.addenda", + }, + "data.contract_detail.subject": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.subject", + }, + "data.contract_detail.currency": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.currency", + }, + "data.contract_detail.ceiling": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.ceiling", + }, "data.contract_detail.q1": { color_type: orangeColumn, accessorKey: "data.contract_detail.q1", }, + "data.contract_detail.q2": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.q2", + }, + "data.contract_detail.q3": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.q3", + }, + "data.contract_detail.q4": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.q4", + }, + "data.contract_detail.rf_schedule": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.rf_schedule", + }, + "data.contract_detail.vat_rate": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.vat_rate", + }, + "data.contract_detail.exchange_rate": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.exchange_rate", + }, + "data.contract_detail.amount_foreign": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.amount_foreign", + }, + "data.contract_detail.deadline": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.deadline", + }, + "data.contract_detail.payment_scheme": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.payment_scheme", + }, + "data.contract_detail.act": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.act", + }, + "data.contract_detail.comment": { + color_type: orangeColumn, + accessorKey: "data.contract_detail.comment", + }, "data.q1.adj_current": { color_type: yellowColumn, accessorKey: "data.q1.adj_current", @@ -289,9 +301,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q1.adj_reserve", }, - "1_kv_26_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc": { + "1_kvartal_2026_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc": { color_type: redColumn, - accessorKey: "1_kv_26_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc", + accessorKey: + "1_kvartal_2026_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc", }, "data.q1.adj_comment": { color_type: yellowColumn, @@ -301,6 +314,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q1.corrected_plan", }, + "1_kvartal_2026_ref_field": { + color_type: whiteColumn, + accessorKey: "1_kvartal_2026_ref_field", + }, "data.q1.pay_date": { color_type: blueColumn, accessorKey: "data.q1.pay_date", @@ -325,6 +342,10 @@ export const config = { color_type: blueColumn, accessorKey: "data.q1.pay_act", }, + "1_kvartal_2026_field_field": { + color_type: whiteColumn, + accessorKey: "1_kvartal_2026_field_field", + }, "data.q1.booking": { color_type: orangeColumn, accessorKey: "data.q1.booking", @@ -373,14 +394,6 @@ export const config = { color_type: redColumn, accessorKey: "data.q1.total", }, - "data.ckk.q2": { - color_type: orangeColumn, - accessorKey: "data.ckk.q2", - }, - "data.contract_detail.q2": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.q2", - }, "data.q2.rev_eco": { color_type: redColumn, accessorKey: "data.q2.rev_eco", @@ -405,6 +418,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q2.new_plan", }, + "2_kvartal_2026_field_field": { + color_type: whiteColumn, + accessorKey: "2_kvartal_2026_field_field", + }, "data.q2.adj_current": { color_type: yellowColumn, accessorKey: "data.q2.adj_current", @@ -421,14 +438,19 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q2.adj_reserve", }, - "2_kv_26_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc": { + "2_kvartal_2026_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc": { color_type: redColumn, - accessorKey: "2_kv_26_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc", + accessorKey: + "2_kvartal_2026_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc", }, "data.q2.corrected_plan": { color_type: yellowColumn, accessorKey: "data.q2.corrected_plan", }, + "2_kvartal_2026_ref_field": { + color_type: whiteColumn, + accessorKey: "2_kvartal_2026_ref_field", + }, "data.q2.pay_date": { color_type: blueColumn, accessorKey: "data.q2.pay_date", @@ -497,14 +519,6 @@ export const config = { color_type: redColumn, accessorKey: "data.q2.total", }, - "data.ckk.q3": { - color_type: orangeColumn, - accessorKey: "data.ckk.q3", - }, - "data.contract_detail.q3": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.q3", - }, "data.q3.rev_eco": { color_type: redColumn, accessorKey: "data.q3.rev_eco", @@ -529,6 +543,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q3.new_plan", }, + "3_kvartal_2026_field_field": { + color_type: whiteColumn, + accessorKey: "3_kvartal_2026_field_field", + }, "data.q3.adj_current": { color_type: yellowColumn, accessorKey: "data.q3.adj_current", @@ -545,14 +563,19 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q3.adj_reserve", }, - "3_kv_26_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc": { + "3_kvartal_2026_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc": { color_type: redColumn, - accessorKey: "3_kv_26_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc", + accessorKey: + "3_kvartal_2026_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc", }, "data.q3.corrected_plan": { color_type: yellowColumn, accessorKey: "data.q3.corrected_plan", }, + "3_kvartal_2026_ref_field": { + color_type: whiteColumn, + accessorKey: "3_kvartal_2026_ref_field", + }, "data.q3.pay_date": { color_type: blueColumn, accessorKey: "data.q3.pay_date", @@ -617,14 +640,6 @@ export const config = { color_type: redColumn, accessorKey: "data.q3.total", }, - "data.ckk.q4": { - color_type: orangeColumn, - accessorKey: "data.ckk.q4", - }, - "data.contract_detail.q4": { - color_type: orangeColumn, - accessorKey: "data.contract_detail.q4", - }, "data.q4.rev_eco": { color_type: redColumn, accessorKey: "data.q4.rev_eco", @@ -653,6 +668,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q4.new_plan", }, + "4_kvartal_2026_field_field": { + color_type: whiteColumn, + accessorKey: "4_kvartal_2026_field_field", + }, "data.q4.adj_current": { color_type: yellowColumn, accessorKey: "data.q4.adj_current", @@ -673,6 +692,10 @@ export const config = { color_type: yellowColumn, accessorKey: "data.q4.corrected_plan", }, + "4_kvartal_2026_ref_field": { + color_type: whiteColumn, + accessorKey: "4_kvartal_2026_ref_field", + }, "data.q4.pay_date": { color_type: blueColumn, accessorKey: "data.q4.pay_date", @@ -729,9 +752,9 @@ export const config = { color_type: greenColumn, accessorKey: "data.q4.rem_actual", }, - "4_kv_26_zakrytie_4_go_kvartala_field": { + "4_kvartal_2026_zakrytie_4_go_kvartala_field": { color_type: redColumn, - accessorKey: "4_kv_26_zakrytie_4_go_kvartala_field", + accessorKey: "4_kvartal_2026_zakrytie_4_go_kvartala_field", }, "data.q4.economy": { color_type: redColumn, @@ -741,10 +764,18 @@ export const config = { color_type: redColumn, accessorKey: "data.q4.total", }, + "data.totals.fact_year": { + color_type: greenColumn, + accessorKey: "data.totals.fact_year", + }, + "data.totals.pay_year": { + color_type: blueColumn, + accessorKey: "data.totals.pay_year", + }, }, columns: [ { - header: "", + header: " ", accessorKey: "field", columns: [ { @@ -759,12 +790,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "ID статьи", @@ -778,12 +803,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "ID группы номенклатуры", @@ -797,12 +816,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "Наименование", @@ -816,12 +829,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "Внутренний заказ", @@ -835,17 +842,17 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, { - header: "Планируемые ССП показатели сметы расходов.", + header: "Планируемые ССП показатели сметы расходов", accessorKey: "planiruemye_ssp_pokazateli_smety_raskhodov", columns: [ { @@ -1045,13 +1052,13 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, }, { - header: "Аллокация расходов.", + header: "Аллокация расходов", accessorKey: "allokatsiya_raskhodov", columns: [ { @@ -1066,12 +1073,6 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, { header: "Назначение расхода фактической аллокации", @@ -1086,23 +1087,17 @@ export const config = { filterFn: "contains", }, ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, }, { - header: "Секвестирование ДФиП.", + header: "Секвестирование ДФиП", accessorKey: "sekvestirovanie_dfip", columns: [ { @@ -1204,7 +1199,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, @@ -1312,7 +1307,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, @@ -1401,13 +1396,13 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#BFBFBF", color: "#000000", }, }, }, { - header: "-", + header: " ", accessorKey: "field_6", columns: [ { @@ -1440,19 +1435,7 @@ export const config = { }, }, }, - { - header: "", - accessorKey: "field_kollegialnye_organy_field", - columnLetter: "AU", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, + { header: "Примечание", accessorKey: "data.collegial.note", @@ -1469,36 +1452,23 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, }, - { - header: "", - accessorKey: "field_field", - columns: [ - { - header: "", - accessorKey: "field_field_field", - columnLetter: "AW", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, + ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", }, + }, + }, + { + header: " ", + accessorKey: "field_10", + columns: [ { header: "ЦКК", accessorKey: "field_tskk", @@ -1524,7 +1494,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1537,7 +1507,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1550,7 +1520,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1563,7 +1533,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1636,11 +1606,23 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, }, + ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, + }, + { + header: " ", + accessorKey: "field_20", + columns: [ { header: "Договор", accessorKey: "field_dogovor", @@ -1731,7 +1713,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1744,7 +1726,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1757,7 +1739,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1770,7 +1752,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#C5D9F1", + backgroundColor: "#748C42", color: "#000000", }, }, @@ -1882,12 +1864,18 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, { header: "1 квартал 2026", @@ -1913,7 +1901,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -1932,7 +1920,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -1951,7 +1939,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -1970,31 +1958,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Перенос во 2 кв 26", - accessorKey: "1_kvartal_2026_perenos_vo_2_kv_26", - columns: [ - { - header: "Сумма, тыс. руб. (с учетом НДC)", - accessorKey: - "1_kvartal_2026_perenos_vo_2_kv_26_summa_tys_rub_s_uchetom_ndc", - columnLetter: "CF", - size: 310, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Комментарий", accessorKey: "1_kvartal_2026_kommentariy", @@ -2009,7 +1978,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2028,26 +1997,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "", - accessorKey: "1_kvartal_2026_field", - columns: [ - { - header: "", - accessorKey: "1_kvartal_2026_field_field", - columnLetter: "CI", - size: 150, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2064,7 +2014,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2077,7 +2027,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2090,7 +2040,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2103,7 +2053,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2116,7 +2066,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2129,7 +2079,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2137,11 +2087,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, }, + { header: "Бронь 1 кв 26", accessorKey: "1_kvartal_2026_bron_1_kv_26", @@ -2162,7 +2113,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -2181,7 +2132,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2200,7 +2151,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2219,7 +2170,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2238,7 +2189,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2257,7 +2208,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -2276,7 +2227,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2293,8 +2244,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2306,8 +2257,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2319,8 +2270,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2332,8 +2283,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2345,20 +2296,26 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, { header: "2 квартал 2026", @@ -2385,8 +2342,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2404,8 +2361,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2423,8 +2380,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2442,8 +2399,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2461,8 +2418,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2480,30 +2437,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "", - accessorKey: "2_kvartal_2026_field", - columns: [ - { - header: "", - accessorKey: "2_kvartal_2026_field_field", - columnLetter: "DK", - size: 150, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Текущие корректировки( = 0)", accessorKey: "2_kvartal_2026_tekuschie_korrektirovki_0", @@ -2524,7 +2463,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2543,7 +2482,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2562,7 +2501,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -2581,31 +2520,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Перенос в 3 кв 26", - accessorKey: "2_kvartal_2026_perenos_v_3_kv_26", - columns: [ - { - header: "Сумма, тыс. руб. (с учетом НДC)", - accessorKey: - "2_kvartal_2026_perenos_v_3_kv_26_summa_tys_rub_s_uchetom_ndc", - columnLetter: "DP", - size: 310, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Скорр. план 2 кв. 26", accessorKey: "2_kvartal_2026_skorr_plan_2_kv_26", @@ -2620,11 +2540,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Платеж и предоставление акта", accessorKey: "2_kvartal_2026_platezh_i_predostavlenie_akta", @@ -2637,7 +2558,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2650,7 +2571,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2663,7 +2584,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2676,7 +2597,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2689,7 +2610,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2702,7 +2623,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2710,7 +2631,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -2735,7 +2656,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -2754,7 +2675,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2773,7 +2694,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2792,7 +2713,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2811,7 +2732,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2830,7 +2751,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -2849,7 +2770,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -2866,8 +2787,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2879,8 +2800,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2892,8 +2813,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2905,20 +2826,26 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, { header: "3 квартал 2026", @@ -2945,8 +2872,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2964,8 +2891,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -2983,8 +2910,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3002,8 +2929,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3021,8 +2948,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3040,30 +2967,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "", - accessorKey: "3_kvartal_2026_field", - columns: [ - { - header: "", - accessorKey: "3_kvartal_2026_field_field", - columnLetter: "ET", - size: 150, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Текущие корректировки( = 0)", accessorKey: "3_kvartal_2026_tekuschie_korrektirovki_0", @@ -3084,7 +2993,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3103,7 +3012,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3122,7 +3031,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3141,31 +3050,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "Перенос в 4 кв 26", - accessorKey: "3_kvartal_2026_perenos_v_4_kv_26", - columns: [ - { - header: "Сумма, тыс. руб. (с учетом НДC)", - accessorKey: - "3_kvartal_2026_perenos_v_4_kv_26_summa_tys_rub_s_uchetom_ndc", - columnLetter: "EY", - size: 310, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Скорр. план 3 кв. 26", accessorKey: "3_kvartal_2026_skorr_plan_3_kv_26", @@ -3180,11 +3070,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Платеж и предоставление акта", accessorKey: "3_kvartal_2026_platezh_i_predostavlenie_akta", @@ -3197,7 +3088,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3210,7 +3101,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3223,7 +3114,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3236,7 +3127,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3249,7 +3140,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3262,7 +3153,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3270,7 +3161,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3295,7 +3186,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -3314,7 +3205,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3333,7 +3224,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3352,7 +3243,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3371,7 +3262,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3390,7 +3281,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -3409,7 +3300,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3426,8 +3317,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3439,8 +3330,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3452,20 +3343,26 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, { header: "4 квартал 2026", @@ -3492,8 +3389,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3511,8 +3408,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3530,8 +3427,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3549,8 +3446,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3575,8 +3472,8 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -3594,30 +3491,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "", - accessorKey: "4_kvartal_2026_field", - columns: [ - { - header: "", - accessorKey: "4_kvartal_2026_field_field", - columnLetter: "GB", - size: 150, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Текущие корректировки( = 0)", accessorKey: "4_kvartal_2026_tekuschie_korrektirovki_0", @@ -3638,7 +3517,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3657,7 +3536,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3676,7 +3555,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3695,7 +3574,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, @@ -3714,11 +3593,12 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FFFF66", color: "#000000", }, }, }, + { header: "Платеж и предоставление акта", accessorKey: "4_kvartal_2026_platezh_i_predostavlenie_akta", @@ -3731,7 +3611,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3744,7 +3624,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3757,7 +3637,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3770,7 +3650,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3783,7 +3663,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3796,7 +3676,7 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3804,7 +3684,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, @@ -3829,7 +3709,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -3848,7 +3728,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3867,7 +3747,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3886,7 +3766,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3905,7 +3785,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3924,7 +3804,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3943,7 +3823,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#FABF8F", color: "#000000", }, }, @@ -3962,7 +3842,7 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, @@ -3971,19 +3851,6 @@ export const config = { header: "Закрытие 4-го квартала", accessorKey: "4_kvartal_2026_zakrytie_4_go_kvartala", columns: [ - { - header: "", - accessorKey: "4_kvartal_2026_zakrytie_4_go_kvartala_field", - columnLetter: "GZ", - size: 150, - filterFn: "contains", - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, { header: "Перенос в фонд экономии", accessorKey: "data.q4.economy", @@ -3992,8 +3859,8 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, @@ -4005,28 +3872,34 @@ export const config = { filterFn: "contains", muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", - color: "#000000", + backgroundColor: "#903C39", + color: "#FFFFFF", }, }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, { - header: "Факт", - accessorKey: "fakt", + header: " ", + accessorKey: "11", columns: [ { header: "Факт 26", - accessorKey: "fakt_fakt_26", + accessorKey: "11_fakt_26", columns: [ { header: "", @@ -4038,20 +3911,26 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#C2D69B", color: "#000000", }, }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, { - header: "Сумма", - accessorKey: "summa", + header: " ", + accessorKey: "111", columns: [ { header: "Сумма оплаты", - accessorKey: "summa_summa_oplaty", + accessorKey: "111_summa_oplaty", columns: [ { header: "", @@ -4063,12 +3942,18 @@ export const config = { ], muiTableHeadCellProps: { sx: { - backgroundColor: "#FFFFFF", + backgroundColor: "#95B3D7", color: "#000000", }, }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, ], }, diff --git a/web/src/components/RealtimeTable/constants/FORM_3/LP.js b/web/src/components/RealtimeTable/constants/FORM_3/LP.js deleted file mode 100644 index b283987..0000000 --- a/web/src/components/RealtimeTable/constants/FORM_3/LP.js +++ /dev/null @@ -1,555 +0,0 @@ - - import { - greenColumn, - whiteColumn, - orangeColumn, - yellowColumn, - redColumn, - blueColumn, - } from '../columnColors'; - export const config = { - "config":{ - "colors":{ - "kod_razdela_kod_razdela":{ - "color_type":whiteColumn, - "accessorKey":"kod_razdela_kod_razdela" - }, - "id_stati_id_stati":{ - "color_type":whiteColumn, - "accessorKey":"id_stati_id_stati" - }, - "id_gruppy_nomenklatury_id_gruppy_nomenklatury":{ - "color_type":whiteColumn, - "accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury" - }, - "naimenovanie_naimenovanie":{ - "color_type":whiteColumn, - "accessorKey":"naimenovanie_naimenovanie" - }, - "korrektirovka_limita_po_statyam_smety":{ - "color_type":whiteColumn, - "accessorKey":"korrektirovka_limita_po_statyam_smety" - }, - "field_uvelichenie_smety":{ - "color_type":whiteColumn, - "accessorKey":"field_uvelichenie_smety" - }, - "field_za_yanvar":{ - "color_type":whiteColumn, - "accessorKey":"field_za_yanvar" - }, - "field_za_fevral":{ - "color_type":whiteColumn, - "accessorKey":"field_za_fevral" - }, - "field_itogo_i_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_i_kvartal" - }, - "field_za_aprel":{ - "color_type":whiteColumn, - "accessorKey":"field_za_aprel" - }, - "field_za_may":{ - "color_type":whiteColumn, - "accessorKey":"field_za_may" - }, - "field_itogo_ii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_ii_kvartal" - }, - "field_za_iyul":{ - "color_type":whiteColumn, - "accessorKey":"field_za_iyul" - }, - "field_za_avgust":{ - "color_type":whiteColumn, - "accessorKey":"field_za_avgust" - }, - "field_itogo_iii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_iii_kvartal" - }, - "field_za_oktyabr":{ - "color_type":whiteColumn, - "accessorKey":"field_za_oktyabr" - }, - "field_za_noyabr":{ - "color_type":whiteColumn, - "accessorKey":"field_za_noyabr" - }, - "field_spod":{ - "color_type":whiteColumn, - "accessorKey":"field_spod" - }, - "field_itogo_iv_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_iv_kvartal" - }, - "itogo_itogo":{ - "color_type":whiteColumn, - "accessorKey":"itogo_itogo" - }, - "fakt_zamart":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zamart" - }, - "fakt_zaiyun":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zaiyun" - }, - "fakt_zasentyabr":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zasentyabr" - }, - "fakt_zadekabr":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zadekabr" - }, - "ekonomiya_pereraskhod_ekonomiya_pereraskhod":{ - "color_type":whiteColumn, - "accessorKey":"ekonomiya_pereraskhod_ekonomiya_pereraskhod" - }, - "limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal" - }, - "limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal" - }, - "limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal" - } - }, - "columns":[ - { - "header":"Код раздела", - "accessorKey":"kod_razdela", - "columns":[ - { - "header":"Код раздела", - "accessorKey":"kod_razdela_kod_razdela", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"ID статьи", - "accessorKey":"id_stati", - "columns":[ - { - "header":"ID статьи", - "accessorKey":"id_stati_id_stati", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"ID группы номенклатуры", - "accessorKey":"id_gruppy_nomenklatury", - "columns":[ - { - "header":"ID группы номенклатуры", - "accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Наименование", - "accessorKey":"naimenovanie", - "columns":[ - { - "header":"Наименование", - "accessorKey":"naimenovanie_naimenovanie", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Корректировка лимита", - "accessorKey":"korrektirovka_limita", - "columns":[ - { - "header":"по статьям сметы *", - "accessorKey":"korrektirovka_limita_po_statyam_smety", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"", - "accessorKey":"field", - "columns":[ - { - "header":"увеличение сметы **", - "accessorKey":"field_uvelichenie_smety", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ЯНВАРЬ", - "accessorKey":"field_za_yanvar", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ФЕВРАЛЬ", - "accessorKey":"field_za_fevral", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого I квартал", - "accessorKey":"field_itogo_i_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за АПРЕЛЬ", - "accessorKey":"field_za_aprel", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за МАЙ", - "accessorKey":"field_za_may", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого II квартал", - "accessorKey":"field_itogo_ii_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ИЮЛЬ", - "accessorKey":"field_za_iyul", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за АВГУСТ", - "accessorKey":"field_za_avgust", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого III квартал", - "accessorKey":"field_itogo_iii_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ОКТЯБРЬ", - "accessorKey":"field_za_oktyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за НОЯБРЬ", - "accessorKey":"field_za_noyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"СПОД", - "accessorKey":"field_spod", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого IV квартал", - "accessorKey":"field_itogo_iv_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого", - "accessorKey":"itogo", - "columns":[ - { - "header":"Итого", - "accessorKey":"itogo_itogo", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Факт", - "accessorKey":"fakt", - "columns":[ - { - "header":"заМАРТ", - "accessorKey":"fakt_zamart", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заИЮНЬ", - "accessorKey":"fakt_zaiyun", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заСЕНТЯБРЬ", - "accessorKey":"fakt_zasentyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заДЕКАБРЬ", - "accessorKey":"fakt_zadekabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"экономия (+) перерасход (-)", - "accessorKey":"ekonomiya_pereraskhod", - "columns":[ - { - "header":"экономия (+) перерасход (-)", - "accessorKey":"ekonomiya_pereraskhod_ekonomiya_pereraskhod", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Лимит затрат / остаток лимита затрат на II квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal", - "columns":[ - { - "header":"Лимит затрат / остаток лимита затрат на II квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Лимит затрат / остаток лимита затрат на III квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal", - "columns":[ - { - "header":"Лимит затрат / остаток лимита затрат на III квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Лимит затрат / остаток лимита затрат на IV квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal", - "columns":[ - { - "header":"Лимит затрат / остаток лимита затрат на IV квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ] - } -} \ No newline at end of file diff --git a/web/src/components/RealtimeTable/constants/FORM_3/PROJECT.js b/web/src/components/RealtimeTable/constants/FORM_3/PROJECT.js deleted file mode 100644 index c4b84d3..0000000 --- a/web/src/components/RealtimeTable/constants/FORM_3/PROJECT.js +++ /dev/null @@ -1,577 +0,0 @@ - - import { - greenColumn, - whiteColumn, - orangeColumn, - yellowColumn, - redColumn, - blueColumn, - } from '../columnColors'; - export const config = { - "config":{ - "colors":{ - "kod_razdela_kod_razdela":{ - "color_type":whiteColumn, - "accessorKey":"kod_razdela_kod_razdela" - }, - "id_stati_id_stati":{ - "color_type":whiteColumn, - "accessorKey":"id_stati_id_stati" - }, - "id_gruppy_nomenklatury_id_gruppy_nomenklatury":{ - "color_type":whiteColumn, - "accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury" - }, - "naimenovanie_naimenovanie":{ - "color_type":whiteColumn, - "accessorKey":"naimenovanie_naimenovanie" - }, - "korrektirovka_plana_po_statyam_smety":{ - "color_type":whiteColumn, - "accessorKey":"korrektirovka_plana_po_statyam_smety" - }, - "field_uvelichenie_smety":{ - "color_type":whiteColumn, - "accessorKey":"field_uvelichenie_smety" - }, - "field_za_yanvar":{ - "color_type":whiteColumn, - "accessorKey":"field_za_yanvar" - }, - "field_za_fevral":{ - "color_type":whiteColumn, - "accessorKey":"field_za_fevral" - }, - "field_itogo_i_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_i_kvartal" - }, - "field_za_aprel":{ - "color_type":whiteColumn, - "accessorKey":"field_za_aprel" - }, - "field_za_may":{ - "color_type":whiteColumn, - "accessorKey":"field_za_may" - }, - "field_itogo_ii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_ii_kvartal" - }, - "field_za_iyul":{ - "color_type":whiteColumn, - "accessorKey":"field_za_iyul" - }, - "field_za_avgust":{ - "color_type":whiteColumn, - "accessorKey":"field_za_avgust" - }, - "field_itogo_iii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_iii_kvartal" - }, - "field_za_oktyabr":{ - "color_type":whiteColumn, - "accessorKey":"field_za_oktyabr" - }, - "field_za_noyabr":{ - "color_type":whiteColumn, - "accessorKey":"field_za_noyabr" - }, - "field_spod":{ - "color_type":whiteColumn, - "accessorKey":"field_spod" - }, - "field_itogo_iv_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_iv_kvartal" - }, - "itogo_korrektirovka_itogo_korrektirovka":{ - "color_type":whiteColumn, - "accessorKey":"itogo_korrektirovka_itogo_korrektirovka" - }, - "fakt_zamart":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zamart" - }, - "fakt_zaiyun":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zaiyun" - }, - "fakt_zasentyabr":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zasentyabr" - }, - "fakt_zadekabr":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zadekabr" - }, - "ekonomiya_pereraskhod_ekonomiya_pereraskhod":{ - "color_type":whiteColumn, - "accessorKey":"ekonomiya_pereraskhod_ekonomiya_pereraskhod" - }, - "smeta_raskhodov_po_razvitiyu_na_ii_kvartal_smeta_raskhodov_po_razvitiyu_na_ii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_ii_kvartal_smeta_raskhodov_po_razvitiyu_na_ii_kvartal" - }, - "itogo_skorrek_smeta_itogo_skorrek_smeta":{ - "color_type":whiteColumn, - "accessorKey":"itogo_skorrek_smeta_itogo_skorrek_smeta" - }, - "smeta_raskhodov_po_razvitiyu_na_iii_kvartal_smeta_raskhodov_po_razvitiyu_na_iii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_iii_kvartal_smeta_raskhodov_po_razvitiyu_na_iii_kvartal" - }, - "smeta_raskhodov_po_razvitiyu_na_iv_kvartal_smeta_raskhodov_po_razvitiyu_na_iv_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_iv_kvartal_smeta_raskhodov_po_razvitiyu_na_iv_kvartal" - } - }, - "columns":[ - { - "header":"Код раздела", - "accessorKey":"kod_razdela", - "columns":[ - { - "header":"Код раздела", - "accessorKey":"kod_razdela_kod_razdela", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"ID статьи", - "accessorKey":"id_stati", - "columns":[ - { - "header":"ID статьи", - "accessorKey":"id_stati_id_stati", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"ID группы номенклатуры", - "accessorKey":"id_gruppy_nomenklatury", - "columns":[ - { - "header":"ID группы номенклатуры", - "accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Наименование", - "accessorKey":"naimenovanie", - "columns":[ - { - "header":"Наименование", - "accessorKey":"naimenovanie_naimenovanie", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Корректировка плана", - "accessorKey":"korrektirovka_plana", - "columns":[ - { - "header":"по статьям сметы *", - "accessorKey":"korrektirovka_plana_po_statyam_smety", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"", - "accessorKey":"field", - "columns":[ - { - "header":"увеличение сметы **", - "accessorKey":"field_uvelichenie_smety", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ЯНВАРЬ", - "accessorKey":"field_za_yanvar", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ФЕВРАЛЬ", - "accessorKey":"field_za_fevral", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого I квартал", - "accessorKey":"field_itogo_i_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за АПРЕЛЬ", - "accessorKey":"field_za_aprel", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за МАЙ", - "accessorKey":"field_za_may", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого II квартал", - "accessorKey":"field_itogo_ii_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ИЮЛЬ", - "accessorKey":"field_za_iyul", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за АВГУСТ", - "accessorKey":"field_za_avgust", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого III квартал", - "accessorKey":"field_itogo_iii_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ОКТЯБРЬ", - "accessorKey":"field_za_oktyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за НОЯБРЬ", - "accessorKey":"field_za_noyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"СПОД", - "accessorKey":"field_spod", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого IV квартал", - "accessorKey":"field_itogo_iv_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого корректировка", - "accessorKey":"itogo_korrektirovka", - "columns":[ - { - "header":"Итого корректировка", - "accessorKey":"itogo_korrektirovka_itogo_korrektirovka", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Факт", - "accessorKey":"fakt", - "columns":[ - { - "header":"заМАРТ", - "accessorKey":"fakt_zamart", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заИЮНЬ", - "accessorKey":"fakt_zaiyun", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заСЕНТЯБРЬ", - "accessorKey":"fakt_zasentyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заДЕКАБРЬ", - "accessorKey":"fakt_zadekabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"экономия (+) перерасход (-)", - "accessorKey":"ekonomiya_pereraskhod", - "columns":[ - { - "header":"экономия (+) перерасход (-)", - "accessorKey":"ekonomiya_pereraskhod_ekonomiya_pereraskhod", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Смета расходов по развитию на II квартал", - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_ii_kvartal", - "columns":[ - { - "header":"Смета расходов по развитию на II квартал", - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_ii_kvartal_smeta_raskhodov_po_razvitiyu_na_ii_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого скоррек. смета", - "accessorKey":"itogo_skorrek_smeta", - "columns":[ - { - "header":"Итого скоррек. смета", - "accessorKey":"itogo_skorrek_smeta_itogo_skorrek_smeta", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Смета расходов по развитию на III квартал", - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_iii_kvartal", - "columns":[ - { - "header":"Смета расходов по развитию на III квартал", - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_iii_kvartal_smeta_raskhodov_po_razvitiyu_na_iii_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Смета расходов по развитию на IV квартал", - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_iv_kvartal", - "columns":[ - { - "header":"Смета расходов по развитию на IV квартал", - "accessorKey":"smeta_raskhodov_po_razvitiyu_na_iv_kvartal_smeta_raskhodov_po_razvitiyu_na_iv_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ] - } -} \ No newline at end of file diff --git a/web/src/components/RealtimeTable/constants/FORM_3/TR.js b/web/src/components/RealtimeTable/constants/FORM_3/TR.js deleted file mode 100644 index b283987..0000000 --- a/web/src/components/RealtimeTable/constants/FORM_3/TR.js +++ /dev/null @@ -1,555 +0,0 @@ - - import { - greenColumn, - whiteColumn, - orangeColumn, - yellowColumn, - redColumn, - blueColumn, - } from '../columnColors'; - export const config = { - "config":{ - "colors":{ - "kod_razdela_kod_razdela":{ - "color_type":whiteColumn, - "accessorKey":"kod_razdela_kod_razdela" - }, - "id_stati_id_stati":{ - "color_type":whiteColumn, - "accessorKey":"id_stati_id_stati" - }, - "id_gruppy_nomenklatury_id_gruppy_nomenklatury":{ - "color_type":whiteColumn, - "accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury" - }, - "naimenovanie_naimenovanie":{ - "color_type":whiteColumn, - "accessorKey":"naimenovanie_naimenovanie" - }, - "korrektirovka_limita_po_statyam_smety":{ - "color_type":whiteColumn, - "accessorKey":"korrektirovka_limita_po_statyam_smety" - }, - "field_uvelichenie_smety":{ - "color_type":whiteColumn, - "accessorKey":"field_uvelichenie_smety" - }, - "field_za_yanvar":{ - "color_type":whiteColumn, - "accessorKey":"field_za_yanvar" - }, - "field_za_fevral":{ - "color_type":whiteColumn, - "accessorKey":"field_za_fevral" - }, - "field_itogo_i_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_i_kvartal" - }, - "field_za_aprel":{ - "color_type":whiteColumn, - "accessorKey":"field_za_aprel" - }, - "field_za_may":{ - "color_type":whiteColumn, - "accessorKey":"field_za_may" - }, - "field_itogo_ii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_ii_kvartal" - }, - "field_za_iyul":{ - "color_type":whiteColumn, - "accessorKey":"field_za_iyul" - }, - "field_za_avgust":{ - "color_type":whiteColumn, - "accessorKey":"field_za_avgust" - }, - "field_itogo_iii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_iii_kvartal" - }, - "field_za_oktyabr":{ - "color_type":whiteColumn, - "accessorKey":"field_za_oktyabr" - }, - "field_za_noyabr":{ - "color_type":whiteColumn, - "accessorKey":"field_za_noyabr" - }, - "field_spod":{ - "color_type":whiteColumn, - "accessorKey":"field_spod" - }, - "field_itogo_iv_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"field_itogo_iv_kvartal" - }, - "itogo_itogo":{ - "color_type":whiteColumn, - "accessorKey":"itogo_itogo" - }, - "fakt_zamart":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zamart" - }, - "fakt_zaiyun":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zaiyun" - }, - "fakt_zasentyabr":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zasentyabr" - }, - "fakt_zadekabr":{ - "color_type":whiteColumn, - "accessorKey":"fakt_zadekabr" - }, - "ekonomiya_pereraskhod_ekonomiya_pereraskhod":{ - "color_type":whiteColumn, - "accessorKey":"ekonomiya_pereraskhod_ekonomiya_pereraskhod" - }, - "limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal" - }, - "limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal" - }, - "limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal":{ - "color_type":whiteColumn, - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal" - } - }, - "columns":[ - { - "header":"Код раздела", - "accessorKey":"kod_razdela", - "columns":[ - { - "header":"Код раздела", - "accessorKey":"kod_razdela_kod_razdela", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"ID статьи", - "accessorKey":"id_stati", - "columns":[ - { - "header":"ID статьи", - "accessorKey":"id_stati_id_stati", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"ID группы номенклатуры", - "accessorKey":"id_gruppy_nomenklatury", - "columns":[ - { - "header":"ID группы номенклатуры", - "accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Наименование", - "accessorKey":"naimenovanie", - "columns":[ - { - "header":"Наименование", - "accessorKey":"naimenovanie_naimenovanie", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Корректировка лимита", - "accessorKey":"korrektirovka_limita", - "columns":[ - { - "header":"по статьям сметы *", - "accessorKey":"korrektirovka_limita_po_statyam_smety", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"", - "accessorKey":"field", - "columns":[ - { - "header":"увеличение сметы **", - "accessorKey":"field_uvelichenie_smety", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ЯНВАРЬ", - "accessorKey":"field_za_yanvar", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ФЕВРАЛЬ", - "accessorKey":"field_za_fevral", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого I квартал", - "accessorKey":"field_itogo_i_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за АПРЕЛЬ", - "accessorKey":"field_za_aprel", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за МАЙ", - "accessorKey":"field_za_may", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого II квартал", - "accessorKey":"field_itogo_ii_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ИЮЛЬ", - "accessorKey":"field_za_iyul", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за АВГУСТ", - "accessorKey":"field_za_avgust", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого III квартал", - "accessorKey":"field_itogo_iii_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за ОКТЯБРЬ", - "accessorKey":"field_za_oktyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"за НОЯБРЬ", - "accessorKey":"field_za_noyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"СПОД", - "accessorKey":"field_spod", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого IV квартал", - "accessorKey":"field_itogo_iv_kvartal", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Итого", - "accessorKey":"itogo", - "columns":[ - { - "header":"Итого", - "accessorKey":"itogo_itogo", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Факт", - "accessorKey":"fakt", - "columns":[ - { - "header":"заМАРТ", - "accessorKey":"fakt_zamart", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заИЮНЬ", - "accessorKey":"fakt_zaiyun", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заСЕНТЯБРЬ", - "accessorKey":"fakt_zasentyabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"заДЕКАБРЬ", - "accessorKey":"fakt_zadekabr", - "size":150, - "filterFn":"contains", - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"экономия (+) перерасход (-)", - "accessorKey":"ekonomiya_pereraskhod", - "columns":[ - { - "header":"экономия (+) перерасход (-)", - "accessorKey":"ekonomiya_pereraskhod_ekonomiya_pereraskhod", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Лимит затрат / остаток лимита затрат на II квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal", - "columns":[ - { - "header":"Лимит затрат / остаток лимита затрат на II квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Лимит затрат / остаток лимита затрат на III квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal", - "columns":[ - { - "header":"Лимит затрат / остаток лимита затрат на III квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - }, - { - "header":"Лимит затрат / остаток лимита затрат на IV квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal", - "columns":[ - { - "header":"Лимит затрат / остаток лимита затрат на IV квартал", - "accessorKey":"limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal_limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal", - "size":150, - "filterFn":"contains" - } - ], - "muiTableHeadCellProps":{ - "sx":{ - "backgroundColor":"#C2D69B", - "color":"#000000" - } - } - } - ] - } -} \ No newline at end of file diff --git a/web/src/components/RealtimeTable/constants/PROJECT/CURRENT_EXPENSES.js b/web/src/components/RealtimeTable/constants/PROJECT/CURRENT_EXPENSES.js new file mode 100644 index 0000000..83d059f --- /dev/null +++ b/web/src/components/RealtimeTable/constants/PROJECT/CURRENT_EXPENSES.js @@ -0,0 +1,1003 @@ + + import { + greenColumn, + whiteColumn, + orangeColumn, + yellowColumn, + redColumn, + blueColumn, + } from '../columnColors'; + export const config = { + "config":{ + "colors":{ + "data.header.section_code":{ + "color_type":greenColumn, + "accessorKey":"data.header.section_code" + }, + "data.header.item_id":{ + "color_type":greenColumn, + "accessorKey":"data.header.item_id" + }, + "data.header.num_group_id":{ + "color_type":greenColumn, + "accessorKey":"data.header.num_group_id" + }, + "data.header.name":{ + "color_type":greenColumn, + "accessorKey":"data.header.name" + }, + "data.q1.adj_by_items":{ + "color_type":greenColumn, + "accessorKey":"data.q1.adj_by_items" + }, + "data.q1.adj_increase":{ + "color_type":greenColumn, + "accessorKey":"data.q1.adj_increase" + }, + "data.q1.total_corr":{ + "color_type":greenColumn, + "accessorKey":"data.q1.total_corr" + }, + "data.q1.m1":{ + "color_type":greenColumn, + "accessorKey":"data.q1.m1" + }, + "data.q1.m2":{ + "color_type":greenColumn, + "accessorKey":"data.q1.m2" + }, + "data.q1.m3":{ + "color_type":greenColumn, + "accessorKey":"data.q1.m3" + }, + "data.q1.quarter_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q1.quarter_actual" + }, + "data.q1.economy":{ + "color_type":greenColumn, + "accessorKey":"data.q1.economy" + }, + "data.q2.carryover":{ + "color_type":greenColumn, + "accessorKey":"data.q2.carryover" + }, + "data.q2.adj_by_items":{ + "color_type":greenColumn, + "accessorKey":"data.q2.adj_by_items" + }, + "data.q2.adj_increase":{ + "color_type":greenColumn, + "accessorKey":"data.q2.adj_increase" + }, + "data.q2.total_corr":{ + "color_type":greenColumn, + "accessorKey":"data.q2.total_corr" + }, + "data.q2.m1":{ + "color_type":greenColumn, + "accessorKey":"data.q2.m1" + }, + "data.q2.m2":{ + "color_type":greenColumn, + "accessorKey":"data.q2.m2" + }, + "data.q2.m3":{ + "color_type":greenColumn, + "accessorKey":"data.q2.m3" + }, + "data.q2.quarter_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q2.quarter_actual" + }, + "data.q2.economy":{ + "color_type":greenColumn, + "accessorKey":"data.q2.economy" + }, + "data.q3.carryover":{ + "color_type":greenColumn, + "accessorKey":"data.q3.carryover" + }, + "data.q3.adj_by_items":{ + "color_type":greenColumn, + "accessorKey":"data.q3.adj_by_items" + }, + "data.q3.adj_increase":{ + "color_type":greenColumn, + "accessorKey":"data.q3.adj_increase" + }, + "data.q3.total_corr":{ + "color_type":greenColumn, + "accessorKey":"data.q3.total_corr" + }, + "data.q3.m1":{ + "color_type":greenColumn, + "accessorKey":"data.q3.m1" + }, + "data.q3.m2":{ + "color_type":greenColumn, + "accessorKey":"data.q3.m2" + }, + "data.q3.m3":{ + "color_type":greenColumn, + "accessorKey":"data.q3.m3" + }, + "data.q3.quarter_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q3.quarter_actual" + }, + "data.q3.economy":{ + "color_type":greenColumn, + "accessorKey":"data.q3.economy" + }, + "data.q4.carryover":{ + "color_type":greenColumn, + "accessorKey":"data.q4.carryover" + }, + "data.q4.adj_by_items":{ + "color_type":greenColumn, + "accessorKey":"data.q4.adj_by_items" + }, + "data.q4.adj_increase":{ + "color_type":greenColumn, + "accessorKey":"data.q4.adj_increase" + }, + "data.q4.total_corr":{ + "color_type":greenColumn, + "accessorKey":"data.q4.total_corr" + }, + "data.q4.m1":{ + "color_type":greenColumn, + "accessorKey":"data.q4.m1" + }, + "data.q4.m2":{ + "color_type":greenColumn, + "accessorKey":"data.q4.m2" + }, + "data.q4.m3":{ + "color_type":greenColumn, + "accessorKey":"data.q4.m3" + }, + "data.q4.spod":{ + "color_type":greenColumn, + "accessorKey":"data.q4.spod" + }, + "data.q4.quarter_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q4.quarter_actual" + }, + "data.q4.economy":{ + "color_type":greenColumn, + "accessorKey":"data.q4.economy" + } + }, + "columns":[ + { + "header":"", + "accessorKey":"field", + "columns":[ + { + "header":"Код раздела", + "accessorKey":"field_kod_razdela", + "columns":[ + { + "header":"", + "accessorKey":"data.header.section_code", + "columnLetter":"A", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"ID статьи", + "accessorKey":"field_id_stati", + "columns":[ + { + "header":"", + "accessorKey":"data.header.item_id", + "columnLetter":"B", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"ID группы номенклатуры", + "accessorKey":"field_id_gruppy_nomenklatury", + "columns":[ + { + "header":"", + "accessorKey":"data.header.num_group_id", + "columnLetter":"C", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Наименование", + "accessorKey":"field_naimenovanie", + "columns":[ + { + "header":"", + "accessorKey":"data.header.name", + "columnLetter":"D", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + }, + { + "header":"Отчет об исполнении текущих расходов в I квартале", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_i_kvartale", + "columns":[ + { + "header":"Корректировка лимита", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_i_kvartale_korrektirovka_limita", + "columns":[ + { + "header":"по статьям сметы *", + "accessorKey":"data.q1.adj_by_items", + "columnLetter":"E", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"увеличение сметы **", + "accessorKey":"data.q1.adj_increase", + "columnLetter":"F", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_i_kvartale_itogo", + "columns":[ + { + "header":"", + "accessorKey":"data.q1.total_corr", + "columnLetter":"G", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_i_kvartale_fakt", + "columns":[ + { + "header":"за ЯНВАРЬ", + "accessorKey":"data.q1.m1", + "columnLetter":"H", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"за ФЕВРАЛЬ", + "accessorKey":"data.q1.m2", + "columnLetter":"I", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"заМАРТ", + "accessorKey":"data.q1.m3", + "columnLetter":"J", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого I квартал", + "accessorKey":"data.q1.quarter_actual", + "columnLetter":"K", + "size":160, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"экономия (+) перерасход (-)", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_i_kvartale_ekonomiya_pereraskhod", + "columns":[ + { + "header":"", + "accessorKey":"data.q1.economy", + "columnLetter":"L", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + }, + { + "header":"Отчет об исполнении текущих расходов в II квартале", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_ii_kvartale", + "columns":[ + { + "header":"Лимит затрат / остаток лимита затрат на II квартал", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_ii_kvartale_limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal", + "columns":[ + { + "header":"", + "accessorKey":"data.q2.carryover", + "columnLetter":"N", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Корректировка лимита", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_ii_kvartale_korrektirovka_limita", + "columns":[ + { + "header":"по статьям сметы *", + "accessorKey":"data.q2.adj_by_items", + "columnLetter":"O", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"увеличение сметы **", + "accessorKey":"data.q2.adj_increase", + "columnLetter":"P", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_ii_kvartale_itogo", + "columns":[ + { + "header":"", + "accessorKey":"data.q2.total_corr", + "columnLetter":"Q", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_ii_kvartale_fakt", + "columns":[ + { + "header":"за АПРЕЛЬ", + "accessorKey":"data.q2.m1", + "columnLetter":"R", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"за МАЙ", + "accessorKey":"data.q2.m2", + "columnLetter":"S", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"заИЮНЬ", + "accessorKey":"data.q2.m3", + "columnLetter":"T", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого II квартал", + "accessorKey":"data.q2.quarter_actual", + "columnLetter":"U", + "size":170, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"экономия (+) перерасход (-)", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_ii_kvartale_ekonomiya_pereraskhod", + "columns":[ + { + "header":"", + "accessorKey":"data.q2.economy", + "columnLetter":"V", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + }, + { + "header":"Отчет об исполнении текущих расходов в III квартале", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iii_kvartale", + "columns":[ + { + "header":"Лимит затрат / остаток лимита затрат на III квартал", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iii_kvartale_limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal", + "columns":[ + { + "header":"", + "accessorKey":"data.q3.carryover", + "columnLetter":"X", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Корректировка лимита", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iii_kvartale_korrektirovka_limita", + "columns":[ + { + "header":"по статьям сметы *", + "accessorKey":"data.q3.adj_by_items", + "columnLetter":"Y", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"увеличение сметы **", + "accessorKey":"data.q3.adj_increase", + "columnLetter":"Z", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iii_kvartale_itogo", + "columns":[ + { + "header":"", + "accessorKey":"data.q3.total_corr", + "columnLetter":"AA", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iii_kvartale_fakt", + "columns":[ + { + "header":"за ИЮЛЬ", + "accessorKey":"data.q3.m1", + "columnLetter":"AB", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"за АВГУСТ", + "accessorKey":"data.q3.m2", + "columnLetter":"AC", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"заСЕНТЯБРЬ", + "accessorKey":"data.q3.m3", + "columnLetter":"AD", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого III квартал", + "accessorKey":"data.q3.quarter_actual", + "columnLetter":"AE", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"экономия (+) перерасход (-)", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iii_kvartale_ekonomiya_pereraskhod", + "columns":[ + { + "header":"", + "accessorKey":"data.q3.economy", + "columnLetter":"AF", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + }, + { + "header":"Отчет об исполнении текущих расходов в IV квартале", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iv_kvartale", + "columns":[ + { + "header":"Лимит затрат / остаток лимита затрат на IV квартал", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iv_kvartale_limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal", + "columns":[ + { + "header":"", + "accessorKey":"data.q4.carryover", + "columnLetter":"AH", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Корректировка лимита", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iv_kvartale_korrektirovka_limita", + "columns":[ + { + "header":"по статьям сметы *", + "accessorKey":"data.q4.adj_by_items", + "columnLetter":"AI", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"увеличение сметы **", + "accessorKey":"data.q4.adj_increase", + "columnLetter":"AJ", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iv_kvartale_itogo", + "columns":[ + { + "header":"", + "accessorKey":"data.q4.total_corr", + "columnLetter":"AK", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iv_kvartale_fakt", + "columns":[ + { + "header":"за ОКТЯБРЬ", + "accessorKey":"data.q4.m1", + "columnLetter":"AL", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"за НОЯБРЬ", + "accessorKey":"data.q4.m2", + "columnLetter":"AM", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"заДЕКАБРЬ", + "accessorKey":"data.q4.m3", + "columnLetter":"AN", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"СПОД", + "accessorKey":"data.q4.spod", + "columnLetter":"AO", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого IV квартал", + "accessorKey":"data.q4.quarter_actual", + "columnLetter":"AP", + "size":170, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"экономия (+) перерасход (-)", + "accessorKey":"otchet_ob_ispolnenii_tekuschikh_raskhodov_v_iv_kvartale_ekonomiya_pereraskhod", + "columns":[ + { + "header":"", + "accessorKey":"data.q4.economy", + "columnLetter":"AQ", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/web/src/components/RealtimeTable/constants/PROJECT/LIMIT.js b/web/src/components/RealtimeTable/constants/PROJECT/LIMIT.js new file mode 100644 index 0000000..17c5234 --- /dev/null +++ b/web/src/components/RealtimeTable/constants/PROJECT/LIMIT.js @@ -0,0 +1,1003 @@ + + import { + greenColumn, + whiteColumn, + orangeColumn, + yellowColumn, + redColumn, + blueColumn, + } from '../columnColors'; + export const config = { + "config":{ + "colors":{ + "data.header.section_code":{ + "color_type":greenColumn, + "accessorKey":"data.header.section_code" + }, + "data.header.item_id":{ + "color_type":greenColumn, + "accessorKey":"data.header.item_id" + }, + "data.header.num_group_id":{ + "color_type":greenColumn, + "accessorKey":"data.header.num_group_id" + }, + "data.header.name":{ + "color_type":greenColumn, + "accessorKey":"data.header.name" + }, + "data.q1.adj_by_items":{ + "color_type":greenColumn, + "accessorKey":"data.q1.adj_by_items" + }, + "data.q1.adj_increase":{ + "color_type":greenColumn, + "accessorKey":"data.q1.adj_increase" + }, + "data.q1.total_corr":{ + "color_type":greenColumn, + "accessorKey":"data.q1.total_corr" + }, + "data.q1.m1":{ + "color_type":greenColumn, + "accessorKey":"data.q1.m1" + }, + "data.q1.m2":{ + "color_type":greenColumn, + "accessorKey":"data.q1.m2" + }, + "data.q1.m3":{ + "color_type":greenColumn, + "accessorKey":"data.q1.m3" + }, + "data.q1.quarter_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q1.quarter_actual" + }, + "data.q1.economy":{ + "color_type":greenColumn, + "accessorKey":"data.q1.economy" + }, + "data.q2.carryover":{ + "color_type":greenColumn, + "accessorKey":"data.q2.carryover" + }, + "data.q2.adj_by_items":{ + "color_type":greenColumn, + "accessorKey":"data.q2.adj_by_items" + }, + "data.q2.adj_increase":{ + "color_type":greenColumn, + "accessorKey":"data.q2.adj_increase" + }, + "data.q2.total_corr":{ + "color_type":greenColumn, + "accessorKey":"data.q2.total_corr" + }, + "data.q2.m1":{ + "color_type":greenColumn, + "accessorKey":"data.q2.m1" + }, + "data.q2.m2":{ + "color_type":greenColumn, + "accessorKey":"data.q2.m2" + }, + "data.q2.m3":{ + "color_type":greenColumn, + "accessorKey":"data.q2.m3" + }, + "data.q2.quarter_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q2.quarter_actual" + }, + "data.q2.economy":{ + "color_type":greenColumn, + "accessorKey":"data.q2.economy" + }, + "data.q3.carryover":{ + "color_type":greenColumn, + "accessorKey":"data.q3.carryover" + }, + "data.q3.adj_by_items":{ + "color_type":greenColumn, + "accessorKey":"data.q3.adj_by_items" + }, + "data.q3.adj_increase":{ + "color_type":greenColumn, + "accessorKey":"data.q3.adj_increase" + }, + "data.q3.total_corr":{ + "color_type":greenColumn, + "accessorKey":"data.q3.total_corr" + }, + "data.q3.m1":{ + "color_type":greenColumn, + "accessorKey":"data.q3.m1" + }, + "data.q3.m2":{ + "color_type":greenColumn, + "accessorKey":"data.q3.m2" + }, + "data.q3.m3":{ + "color_type":greenColumn, + "accessorKey":"data.q3.m3" + }, + "data.q3.quarter_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q3.quarter_actual" + }, + "data.q3.economy":{ + "color_type":greenColumn, + "accessorKey":"data.q3.economy" + }, + "data.q4.carryover":{ + "color_type":greenColumn, + "accessorKey":"data.q4.carryover" + }, + "data.q4.adj_by_items":{ + "color_type":greenColumn, + "accessorKey":"data.q4.adj_by_items" + }, + "data.q4.adj_increase":{ + "color_type":greenColumn, + "accessorKey":"data.q4.adj_increase" + }, + "data.q4.total_corr":{ + "color_type":greenColumn, + "accessorKey":"data.q4.total_corr" + }, + "data.q4.m1":{ + "color_type":greenColumn, + "accessorKey":"data.q4.m1" + }, + "data.q4.m2":{ + "color_type":greenColumn, + "accessorKey":"data.q4.m2" + }, + "data.q4.m3":{ + "color_type":greenColumn, + "accessorKey":"data.q4.m3" + }, + "data.q4.spod":{ + "color_type":greenColumn, + "accessorKey":"data.q4.spod" + }, + "data.q4.quarter_actual":{ + "color_type":greenColumn, + "accessorKey":"data.q4.quarter_actual" + }, + "data.q4.economy":{ + "color_type":greenColumn, + "accessorKey":"data.q4.economy" + } + }, + "columns":[ + { + "header":"", + "accessorKey":"field", + "columns":[ + { + "header":"Код раздела", + "accessorKey":"field_kod_razdela", + "columns":[ + { + "header":"", + "accessorKey":"data.header.section_code", + "columnLetter":"A", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"ID статьи", + "accessorKey":"field_id_stati", + "columns":[ + { + "header":"", + "accessorKey":"data.header.item_id", + "columnLetter":"B", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"ID группы номенклатуры", + "accessorKey":"field_id_gruppy_nomenklatury", + "columns":[ + { + "header":"", + "accessorKey":"data.header.num_group_id", + "columnLetter":"C", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Наименование", + "accessorKey":"field_naimenovanie", + "columns":[ + { + "header":"", + "accessorKey":"data.header.name", + "columnLetter":"D", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + }, + { + "header":"Отчет об исполнении лимита затрат, утвержденного Правлением Банка в I квартале", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_i_kvartale", + "columns":[ + { + "header":"Корректировка лимита", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_i_kvartale_korrektirovka_limita", + "columns":[ + { + "header":"по статьям сметы *", + "accessorKey":"data.q1.adj_by_items", + "columnLetter":"E", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"увеличение сметы **", + "accessorKey":"data.q1.adj_increase", + "columnLetter":"F", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_i_kvartale_itogo", + "columns":[ + { + "header":"", + "accessorKey":"data.q1.total_corr", + "columnLetter":"G", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_i_kvartale_fakt", + "columns":[ + { + "header":"за ЯНВАРЬ", + "accessorKey":"data.q1.m1", + "columnLetter":"H", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"за ФЕВРАЛЬ", + "accessorKey":"data.q1.m2", + "columnLetter":"I", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"заМАРТ", + "accessorKey":"data.q1.m3", + "columnLetter":"J", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого I квартал", + "accessorKey":"data.q1.quarter_actual", + "columnLetter":"K", + "size":160, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"экономия (+) перерасход (-)", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_i_kvartale_ekonomiya_pereraskhod", + "columns":[ + { + "header":"", + "accessorKey":"data.q1.economy", + "columnLetter":"L", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + }, + { + "header":"Отчет об исполнении лимита затрат, утвержденного Правлением Банка в II квартале", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_ii_kvartale", + "columns":[ + { + "header":"Лимит затрат / остаток лимита затрат на II квартал", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_ii_kvartale_limit_zatrat_ostatok_limita_zatrat_na_ii_kvartal", + "columns":[ + { + "header":"", + "accessorKey":"data.q2.carryover", + "columnLetter":"N", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Корректировка лимита", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_ii_kvartale_korrektirovka_limita", + "columns":[ + { + "header":"по статьям сметы *", + "accessorKey":"data.q2.adj_by_items", + "columnLetter":"O", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"увеличение сметы **", + "accessorKey":"data.q2.adj_increase", + "columnLetter":"P", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_ii_kvartale_itogo", + "columns":[ + { + "header":"", + "accessorKey":"data.q2.total_corr", + "columnLetter":"Q", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_ii_kvartale_fakt", + "columns":[ + { + "header":"за АПРЕЛЬ", + "accessorKey":"data.q2.m1", + "columnLetter":"R", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"за МАЙ", + "accessorKey":"data.q2.m2", + "columnLetter":"S", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"заИЮНЬ", + "accessorKey":"data.q2.m3", + "columnLetter":"T", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого II квартал", + "accessorKey":"data.q2.quarter_actual", + "columnLetter":"U", + "size":170, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"экономия (+) перерасход (-)", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_ii_kvartale_ekonomiya_pereraskhod", + "columns":[ + { + "header":"", + "accessorKey":"data.q2.economy", + "columnLetter":"V", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + }, + { + "header":"Отчет об исполнении лимита затрат, утвержденного Правлением Банка в III квартале", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iii_kvartale", + "columns":[ + { + "header":"Лимит затрат / остаток лимита затрат на III квартал", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iii_kvartale_limit_zatrat_ostatok_limita_zatrat_na_iii_kvartal", + "columns":[ + { + "header":"", + "accessorKey":"data.q3.carryover", + "columnLetter":"X", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Корректировка лимита", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iii_kvartale_korrektirovka_limita", + "columns":[ + { + "header":"по статьям сметы *", + "accessorKey":"data.q3.adj_by_items", + "columnLetter":"Y", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"увеличение сметы **", + "accessorKey":"data.q3.adj_increase", + "columnLetter":"Z", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iii_kvartale_itogo", + "columns":[ + { + "header":"", + "accessorKey":"data.q3.total_corr", + "columnLetter":"AA", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iii_kvartale_fakt", + "columns":[ + { + "header":"за ИЮЛЬ", + "accessorKey":"data.q3.m1", + "columnLetter":"AB", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"за АВГУСТ", + "accessorKey":"data.q3.m2", + "columnLetter":"AC", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"заСЕНТЯБРЬ", + "accessorKey":"data.q3.m3", + "columnLetter":"AD", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого III квартал", + "accessorKey":"data.q3.quarter_actual", + "columnLetter":"AE", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"экономия (+) перерасход (-)", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iii_kvartale_ekonomiya_pereraskhod", + "columns":[ + { + "header":"", + "accessorKey":"data.q3.economy", + "columnLetter":"AF", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + }, + { + "header":"Отчет об исполнении лимита затрат, утвержденного Правлением Банка в IV квартале", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iv_kvartale", + "columns":[ + { + "header":"Лимит затрат / остаток лимита затрат на IV квартал", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iv_kvartale_limit_zatrat_ostatok_limita_zatrat_na_iv_kvartal", + "columns":[ + { + "header":"", + "accessorKey":"data.q4.carryover", + "columnLetter":"AH", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Корректировка лимита", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iv_kvartale_korrektirovka_limita", + "columns":[ + { + "header":"по статьям сметы *", + "accessorKey":"data.q4.adj_by_items", + "columnLetter":"AI", + "size":180, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"увеличение сметы **", + "accessorKey":"data.q4.adj_increase", + "columnLetter":"AJ", + "size":200, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iv_kvartale_itogo", + "columns":[ + { + "header":"", + "accessorKey":"data.q4.total_corr", + "columnLetter":"AK", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Факт", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iv_kvartale_fakt", + "columns":[ + { + "header":"за ОКТЯБРЬ", + "accessorKey":"data.q4.m1", + "columnLetter":"AL", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"за НОЯБРЬ", + "accessorKey":"data.q4.m2", + "columnLetter":"AM", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"заДЕКАБРЬ", + "accessorKey":"data.q4.m3", + "columnLetter":"AN", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"СПОД", + "accessorKey":"data.q4.spod", + "columnLetter":"AO", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"Итого IV квартал", + "accessorKey":"data.q4.quarter_actual", + "columnLetter":"AP", + "size":170, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + }, + { + "header":"экономия (+) перерасход (-)", + "accessorKey":"otchet_ob_ispolnenii_limita_zatrat_utverzhdennogo_pravleniem_banka_v_iv_kvartale_ekonomiya_pereraskhod", + "columns":[ + { + "header":"", + "accessorKey":"data.q4.economy", + "columnLetter":"AQ", + "size":150, + "filterFn":"contains", + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ], + "muiTableHeadCellProps":{ + "sx":{ + "backgroundColor":"#C2D69B", + "color":"#000000" + } + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/web/src/components/RealtimeTable/contexts/RealtimeContext.js b/web/src/components/RealtimeTable/contexts/RealtimeContext.js index ff40381..9238aa1 100644 --- a/web/src/components/RealtimeTable/contexts/RealtimeContext.js +++ b/web/src/components/RealtimeTable/contexts/RealtimeContext.js @@ -25,17 +25,29 @@ export const RealtimeProvider = ({ formId, sheetName, direction, + year, userId, + isProject = false, }) => { // Формируем URL (кастомные секреты на фронте пока недоступны, делаем через REACT_APP_ROOT_PATH) - const wsUrl = `${(process.env.REACT_APP_API_URL || process.env.REACT_APP_API_URL || process.env.REACT_APP_ROOT_PATH || "ws://localhost:8000").replace(/^http/, "ws")}/api/v1/ws/form/${formId}/sheet/${sheetName}${direction ? `?direction=${direction}` : ""}`; + const wsUrl = + `${( + process.env.REACT_APP_API_URL || + process.env.REACT_APP_API_URL || + process.env.REACT_APP_ROOT_PATH || + "ws://localhost:8000" + ).replace(/^http/, "ws")}` + + (!isProject + ? `/api/v1/ws/form/${formId}/sheet/${sheetName}${direction ? `?direction=${direction}` : ""}` + : `/api/v1/ws/projects/${formId}/report/${year}/${sheetName}`); + //для ячеек которые редактируются другими пользователями const [lockedCells, setLockedCells] = useState([]); const handleMessage = useCallback((data) => { // Обработка ошибок if (data.error) { - console.log(data.error.message) - toast.error("Server error:" + data.error.message || ''); + console.log(data.error.message); + toast.error("Server error:" + data.error.message || ""); onErrorRef.current?.(data.error); return; } @@ -145,6 +157,19 @@ export const RealtimeProvider = ({ } }, [isConnected]); + const addCommonField = (message) => { + if (isProject) { + message.report_type = sheetName; + message.project_id = formId; + message.year = year; + } else { + message.sheet = sheetName; + message.form_id = formId; + message.direction = direction; + } + return message; + }; + // Функция для начала редактирования ячейки const startEditing = useCallback( async (row, column) => { @@ -249,10 +274,9 @@ export const RealtimeProvider = ({ const message = { event: "row_added", data: rowData, - sheet: sheetName, - form_id: formId, - direction: direction, }; + addCommonField(message); + return sendMessage(message); }, [isConnected, sendMessage, sheetName, formId, direction], @@ -268,10 +292,8 @@ export const RealtimeProvider = ({ const message = { event: "row_deleted", data: { row_id: rowId }, - sheet: sheetName, - form_id: formId, - direction: direction, }; + addCommonField(message); return sendMessage(message); }, diff --git a/web/src/components/RealtimeTable/hooks/useRealtimeData.js b/web/src/components/RealtimeTable/hooks/useRealtimeData.js index 964f1ab..0c2d101 100644 --- a/web/src/components/RealtimeTable/hooks/useRealtimeData.js +++ b/web/src/components/RealtimeTable/hooks/useRealtimeData.js @@ -4,8 +4,9 @@ import { useRealtime } from "../contexts/RealtimeContext"; import { deleteRow, insertCell, updateCells } from "../utils/cellUtils"; import { toast } from "react-toastify"; import { isVspNewRow, isVspRow } from "../utils/rowUtils"; +import { ProjectsApi } from "../../../api/projects"; -const useRealtimeData = (formId, sheetName, direction) => { +const useRealtimeData = (formId, sheetName, direction, formType, year) => { const [data, setData] = useState([]); const [isConnected, setIsConnected] = useState(false); const [error, setError] = useState(null); @@ -77,7 +78,10 @@ const useRealtimeData = (formId, sheetName, direction) => { try { setIsLoading(true); let res; - if (direction !== null) { + + if(formType == 'PROJECT'){ + res = await ProjectsApi.getTableData(formId, sheetName, year) + } else if (direction !== null) { res = await FormsSheetApi.get(formId, sheetName, { params: { direction: direction }, }); diff --git a/web/src/components/RealtimeTable/hooks/useWebSocket.js b/web/src/components/RealtimeTable/hooks/useWebSocket.js index 57e3958..8ee2f66 100644 --- a/web/src/components/RealtimeTable/hooks/useWebSocket.js +++ b/web/src/components/RealtimeTable/hooks/useWebSocket.js @@ -107,20 +107,6 @@ export const useWebSocket = (url, onMessage) => { return false; }, []); - const login = useCallback( - (token) => { - if (!token) { - console.warn("No token provided for login"); - return false; - } - return sendMessage({ - event: "user_login", - data: { token }, - }); - }, - [sendMessage], - ); - useEffect(() => { connect(); return () => disconnect(); @@ -130,7 +116,6 @@ export const useWebSocket = (url, onMessage) => { isConnected: isConnectedRef, error, sendMessage, - login, disconnect, }; }; diff --git a/web/src/components/common/NavigationToggle.jsx b/web/src/components/common/NavigationToggle.jsx new file mode 100644 index 0000000..077670d --- /dev/null +++ b/web/src/components/common/NavigationToggle.jsx @@ -0,0 +1,33 @@ +// components/NavigationToggle.jsx +import React from 'react'; +import { Box, Typography } from '@mui/material'; +import { PrimaryOutlinedButton } from './Buttons/Buttons'; // Ваш компонент кнопки + +const NavigationToggle = ({ currentView, onViewChange }) => { + const handleNavigateToTasks = () => { + onViewChange('/tasks'); + }; + + const handleNavigateToProjects = () => { + onViewChange('/projects'); + }; + + return ( + + {currentView === 'tasks' ? ( + + ← К проектам + + ) : ( + + ← К задачам + + )} + + {currentView === 'tasks' ? 'Управление задачами' : 'Управление проектами'} + + + ); +}; + +export default NavigationToggle; \ No newline at end of file diff --git a/web/src/components/common/PaginatedList.jsx b/web/src/components/common/PaginatedList.jsx index 430ce72..2933fb1 100644 --- a/web/src/components/common/PaginatedList.jsx +++ b/web/src/components/common/PaginatedList.jsx @@ -14,7 +14,7 @@ import { ExportExitButton, ExportWithTextButton, } from './Buttons/ButtonsActions'; -import { exportBulkForms, exportSingleForm } from '../../utils/exportForm'; +import { exportBulkForms, exportSingleForm } from '../../utils/exportFile'; /** * Универсальный компонент для отображения списка с пагинацией и экспортом @@ -32,12 +32,13 @@ import { exportBulkForms, exportSingleForm } from '../../utils/exportForm'; * @param {Function} props.getItemTitle - Функция получения заголовка элемента * @param {string} props.entityName - Название сущности (для текстов) * @param {string} props.emptyMessage - Сообщение при пустом списке - * @param {number} props.skeletonCount - Количество скелетонов + * @param {number} props.skeletonCount - Количество силуэтов таблиц при загрузки * @param {Object} props.extraActions - Дополнительные действия справа * @param {boolean} props.enableExport - Включить экспорт * @param {Array} props.limitOptions - Опции для выбора лимита * @param {number} props.maxHeight - Максимальная высота контейнера со скроллом * @param {boolean} props.enableScroll - Включить скролл для списка + * @param {boolean} props.filterActions - Элементы фильтрации */ export function PaginatedList({ items = [], @@ -58,6 +59,7 @@ export function PaginatedList({ limitOptions = [10, 20, 50, 100, 200], maxHeight = 'calc(100vh - 300px)', enableScroll = true, + filterActions = null, }) { const [exportMode, setExportMode] = useState(false); const [exportList, setExportList] = useState([]); @@ -104,37 +106,45 @@ export function PaginatedList({ }; return ( - + {/* Верхняя панель с экспортом и дополнительными действиями */} {enableExport && ( - - {exportMode && ( - - Выделено {entityName}: {exportList.length} - - )} - - - {!exportMode ? ( - <> - setExportMode(true)} - /> - {extraActions} - - ) : ( - <> - - setExportMode(false)} /> - + +
+ {filterActions} +
+ + {exportMode && ( + + Выделено {entityName}: {exportList.length} + )} -
+ + + {!exportMode ? ( + <> + setExportMode(true)} + height='2.5rem' + /> + {extraActions} + + ) : ( + <> + + setExportMode(false)} /> + + )} + +
+ )} {/* Контейнер со скроллом для списка */} @@ -238,7 +248,7 @@ export function PaginatedList({ /> )} /> - + )} diff --git a/web/src/components/common/TableList/TableList.jsx b/web/src/components/common/TableList/TableList.jsx index 4dcb645..1a9ea9f 100644 --- a/web/src/components/common/TableList/TableList.jsx +++ b/web/src/components/common/TableList/TableList.jsx @@ -6,15 +6,12 @@ import { toast } from 'react-toastify'; const TablesList = ({ filteredTables, - projects, query, basePath = '/table', - formInfo + formInfo, + isProject = false, }) => { const navigate = useNavigate(); - const isProject = useMemo(() => { - return !!projects; - }, [projects]) const handleNavigate = (path) => { navigate(path); @@ -25,7 +22,7 @@ const TablesList = ({ if (!formInfo){ return; } - const path = `${basePath}/form/${formInfo.id}/form-type/${isProject ? 'project' : formInfo.form_type_code}/${table.sheet}/${table?.direction}`; + const path = `${basePath}/form/${formInfo.id}/form-type/${isProject ? 'PROJECT' : formInfo.form_type_code}/${table.sheet}/${table?.direction}/${table?.year}`; return ( { +const TableInfo = ({ formId, sheetName, isProject = false }) => { + const path = (isProject ? `/project/` : '/task/') + formId; const portalContent = ( - + {sheetName && ( {SHEET_NAME[sheetName] || sheetName} )} @@ -28,20 +29,29 @@ const TableInfo = ({ formId, sheetName }) => { }; export default function NewTablePage() { - const { formId, formType, sheetName, direction } = useParams(); + const { formId, formType, sheetName, direction, year } = useParams(); const { user } = useAuth(); + const isProject = formType == 'PROJECT'; return ( <> - {formId && } + {formId && } {user && ( - + )} diff --git a/web/src/pages/ProjectsPage/ProjectsPage.jsx b/web/src/pages/ProjectsPage/ProjectsPage.jsx index 29bd04a..4b126b2 100644 --- a/web/src/pages/ProjectsPage/ProjectsPage.jsx +++ b/web/src/pages/ProjectsPage/ProjectsPage.jsx @@ -26,17 +26,18 @@ import { ROLES_NAME_ID, } from '../../constants/constants'; import { useAuth } from '../../app/context/AuthProvider'; -import { PrimaryButton } from '../../components/common/Buttons/Buttons'; +import { PrimaryButton, PrimaryOutlinedButton } from '../../components/common/Buttons/Buttons'; import { ExportExitButton, ExportWithTextButton, } from '../../components/common/Buttons/ButtonsActions'; -import { exportBulkForms, exportSingleForm } from '../../utils/exportForm'; +import { exportBulkForms, exportSingleForm } from '../../utils/exportFile'; import { WhitePlus } from '../../components/common/icons/icons'; import { useNavigate } from 'react-router-dom'; import { PaginatedList } from '../../components/common/PaginatedList'; import { DEFAULT_PROJECT_CONFIG } from '../../constants/projectConfig'; import { SspApi } from '../../api/ssp'; +import NavigationToggle from '../../components/common/NavigationToggle'; export { DEFAULT_PROJECT_CONFIG } from '../../constants/projectConfig'; @@ -213,10 +214,6 @@ export default function ProjectsPage() { exportSingleForm(projectId, projectTitle); }; - const handleNavigateToTasks = () => { - navigate('/tasks'); - }; - const handleRefresh = () => { loadProjects(page, limit); toast.info('Список проектов обновлен'); @@ -228,78 +225,7 @@ export default function ProjectsPage() { <> - - {/* Навигация */} - - - - Управление проектами - - - - {/* Фильтры */} - - - {/* Фильтр по году */} - - - - - {/* Фильтр по ССП/РФ */} - - option.title || option.name || '-'} - value={ - branchFilter - } - onChange={(event, newValue) => { - setBranchFilter(newValue); - }} - sx={{ height: '2.5rem', minWidth: '21.25rem' }} - renderInput={(params) => ( - - )} - /> - - - + navigate(path)} /> project.name || 'Проект'} extraActions={ user.role_id === ROLES_NAME_ID.admin && ( - }> + } height='2.5rem' > Создать проект ) } + filterActions={ + + + + option.title || option.name || '-'} + value={branchFilter} + onChange={(event, newValue) => setBranchFilter(newValue)} + sx={{ width: 200 }} + renderInput={(params) => ( + + )} + /> + Сбросить + + } /> diff --git a/web/src/pages/StyledForPage.jsx b/web/src/pages/StyledForPage.jsx index 7db3b82..49ee02f 100644 --- a/web/src/pages/StyledForPage.jsx +++ b/web/src/pages/StyledForPage.jsx @@ -1,7 +1,8 @@ import styled from '@emotion/styled'; const PageContainer = styled.div` - padding: 2.5rem; + padding: 2rem; + padding-top: 1rem; box-sizing: border-box; display: flex; flex-direction: column; diff --git a/web/src/pages/TaskPage/TaskPage.jsx b/web/src/pages/TaskPage/TaskPage.jsx index 9dfdfd9..591d23f 100644 --- a/web/src/pages/TaskPage/TaskPage.jsx +++ b/web/src/pages/TaskPage/TaskPage.jsx @@ -20,7 +20,7 @@ import { SettingModal as SettingStageModal } from '../../components/Stages/Setti import { PrimaryOutlinedButton } from '../../components/common/Buttons/Buttons'; import { FormsApi } from '../../api/forms'; import { ExportWithTextButton } from '../../components/common/Buttons/ButtonsActions'; -import { exportSingleForm } from '../../utils/exportForm'; +import { exportSingleForm } from '../../utils/exportFile'; import TablesList from '../../components/common/TableList/TableList'; import { DIRECTION_TRANSLATE, FORM_TYPE_TRANSLATE, SHEET_NAME } from '../../constants/constants'; @@ -66,11 +66,11 @@ export default function TaskPage() { const projectData = await ProjectsApi.get(id); setTask(projectData.result); setIsProjectData(true); - console.log(projectData.result.reports); const mappedTables = projectData.result.reports.map(sheet => ({ name: SHEET_NAME[sheet.report_type] || sheet.report_type, sheet: sheet.report_type, + year: sheet.year, })); setTables(mappedTables); } else { diff --git a/web/src/pages/TasksPage/TasksPage.jsx b/web/src/pages/TasksPage/TasksPage.jsx index f9bb40a..5a01f23 100644 --- a/web/src/pages/TasksPage/TasksPage.jsx +++ b/web/src/pages/TasksPage/TasksPage.jsx @@ -35,11 +35,13 @@ import { ExportExitButton, ExportWithTextButton, } from '../../components/common/Buttons/ButtonsActions'; -import { exportBulkForms, exportSingleForm } from '../../utils/exportForm'; +import { exportBulkForms, exportSingleForm } from '../../utils/exportFile'; import { WhitePlus } from '../../components/common/icons/icons'; import { OrgUnitsAutocompletePaper } from '../../components/common/OrgUnitsAutocompletePaper/OrgUnitsAutocompletePaper'; import { renderOrgUnitValue } from '../../components/common/OrgUnitsAutocompletePaper/renderOrgUnitValue'; import { PaginatedList } from '../../components/common/PaginatedList'; +import NavigationToggle from '../../components/common/NavigationToggle'; +import { useNavigate } from 'react-router'; const modalSelectMenuProps = { sx: { zIndex: 1301 }, @@ -53,6 +55,8 @@ const modalSelectSx = { }; export default function TasksPage() { + const navigate = useNavigate(); + const [items, setItems] = useState([]); const [loading, setLoading] = useState(false); const [loadingUpdate, setLoadingUpdate] = useState(false); @@ -256,7 +260,7 @@ export default function TasksPage() { <> - + navigate(path)} /> task.title || 'Задача'} extraActions={ user.role_id === ROLES_NAME_ID.admin && ( - }> + } height={'2.5rem'}> Создать задачу ) diff --git a/web/src/utils/exportFile.js b/web/src/utils/exportFile.js new file mode 100644 index 0000000..3009b55 --- /dev/null +++ b/web/src/utils/exportFile.js @@ -0,0 +1,64 @@ +import { FormsSheetApi } from "../api/form_sheet"; +import { ProjectsApi } from "../api/projects"; +import { TasksApi } from "../api/tasks"; +import { downloadFile } from "./downloadFile"; +import { getApiErrorMessage } from "./getApiErrorMessage"; +import { toast } from "react-toastify"; + +export const exportSingleForm = async (taskId, taskTitle) => { + try { + const response = await TasksApi.exportTask(taskId); + await downloadFile(response, taskTitle, "xlsx"); + } catch (error) { + const message = await getApiErrorMessage( + error, + "Ошибка при скачивании файла", + ); + toast.error(message); + } +}; + +export const exportSheet = async (formId, sheetName, direction) => { + try { + const normalizedDirection = + direction && direction !== "null" ? direction : undefined; + const params = normalizedDirection + ? { direction: normalizedDirection } + : {}; + const response = await FormsSheetApi.export(formId, sheetName, params); + await downloadFile(response, sheetName, "xlsx"); + } catch (error) { + const message = await getApiErrorMessage( + error, + "Ошибка при скачивании файла", + ); + toast.error(message); + } +}; + +export const exportSheetProject = async (formId, sheetName, year) => { + try { + const response = await ProjectsApi.export(formId, year, sheetName); + await downloadFile(response, sheetName, "xlsx"); + } catch (error) { + const message = await getApiErrorMessage( + error, + "Ошибка при скачивании файла", + ); + toast.error(message); + } +}; + +export const exportBulkForms = async (formIds, fileName = "Задачи") => { + try { + const response = await TasksApi.exportTasks({ form_ids: formIds }); + await downloadFile(response, fileName, "xlsx"); + } catch (error) { + const message = await getApiErrorMessage( + error, + "Ошибка при скачивании файла", + ); + toast.error(message); + throw error; + } +}; diff --git a/web/src/utils/exportForm.js b/web/src/utils/exportForm.js deleted file mode 100644 index 56eba58..0000000 --- a/web/src/utils/exportForm.js +++ /dev/null @@ -1,48 +0,0 @@ -import { FormsSheetApi } from '../api/form_sheet'; -import { TasksApi } from '../api/tasks'; -import { downloadFile } from './downloadFile'; -import { getApiErrorMessage } from './getApiErrorMessage'; -import { toast } from 'react-toastify'; - -export const exportSingleForm = async (taskId, taskTitle) => { - try { - const response = await TasksApi.exportTask(taskId); - await downloadFile(response, taskTitle, 'xlsx'); - } catch (error) { - const message = await getApiErrorMessage( - error, - 'Ошибка при скачивании файла', - ); - toast.error(message); - } -}; - -export const exportSheet = async (formId, sheetName, direction) => { - try { - const normalizedDirection = - direction && direction !== 'null' ? direction : undefined; - const params = normalizedDirection ? { direction: normalizedDirection } : {}; - const response = await FormsSheetApi.export(formId, sheetName, params); - await downloadFile(response, sheetName, 'xlsx'); - } catch (error) { - const message = await getApiErrorMessage( - error, - 'Ошибка при скачивании файла', - ); - toast.error(message); - } -}; - -export const exportBulkForms = async (formIds, fileName = 'Задачи') => { - try { - const response = await TasksApi.exportTasks({ form_ids: formIds }); - await downloadFile(response, fileName, 'xlsx'); - } catch (error) { - const message = await getApiErrorMessage( - error, - 'Ошибка при скачивании файла', - ); - toast.error(message); - throw error; - } -}; -- 2.47.2 From cc62551c92be931d3cac21b4ad62d6c7ccf6f89c Mon Sep 17 00:00:00 2001 From: PotapovaA Date: Thu, 2 Jul 2026 16:07:44 +0300 Subject: [PATCH 4/6] 1134 --- .../AdminPanel/AuditLogsPage/constants/configEvent.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/web/src/pages/AdminPanel/AuditLogsPage/constants/configEvent.jsx b/web/src/pages/AdminPanel/AuditLogsPage/constants/configEvent.jsx index 5ded6f4..bebd544 100644 --- a/web/src/pages/AdminPanel/AuditLogsPage/constants/configEvent.jsx +++ b/web/src/pages/AdminPanel/AuditLogsPage/constants/configEvent.jsx @@ -82,15 +82,15 @@ export const EVENT_CONFIGS = { }, ACCESS_EXTEND: { form_id: 'Информация о задаче', - closes_at_after: 'Дата закрытия', - closes_at_before: 'Дата открытия', + closes_at_after: 'Дата закрытия (новая)', + closes_at_before: 'Дата закрытия (старая)', phase_name: 'Названия этапа', sheet: "Лист", }, ACCESS_WINDOW_CHANGE: { form_id: 'Информация о задаче', closes_at: 'Дата закрытия', - open_at: 'Дата открытия', + opens_at: 'Дата открытия', phase_name: 'Названия этапа', role: 'Для роли', column_keys: 'Колонки в этапе', -- 2.47.2 From a23a2dffc61ab473da045bacd822c174bc2d9d8d Mon Sep 17 00:00:00 2001 From: PotapovaA Date: Thu, 2 Jul 2026 17:31:23 +0300 Subject: [PATCH 5/6] 865 --- .../RealtimeTable/Cell/Cell/Cell.jsx | 16 ++++++----- .../RealtimeTable/RealtimeTable.jsx | 6 +++++ .../RealtimeTable/TableHead/TableHead.jsx | 27 ++++++++++++------- .../components/RealtimeTable/tableColumns.jsx | 1 + 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/web/src/components/RealtimeTable/Cell/Cell/Cell.jsx b/web/src/components/RealtimeTable/Cell/Cell/Cell.jsx index 2164513..50a7c4a 100644 --- a/web/src/components/RealtimeTable/Cell/Cell/Cell.jsx +++ b/web/src/components/RealtimeTable/Cell/Cell/Cell.jsx @@ -31,12 +31,13 @@ const LockBadge = styled.div` `; // Функция для подсветки текста -const highlightText = (text, searchQuery) => { - if (!searchQuery || !text) return text; - - const escapedQuery = searchQuery.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - const regex = new RegExp(`(${escapedQuery})`, 'gi'); +const highlightText = (text, searchQueries) => { + if (!text) return text; + const cleanSearchQueries = searchQueries.filter(q => (q !== undefined && q !== '')); + if (cleanSearchQueries.length == 0) return text; + const escapedQueries = cleanSearchQueries.map(query => query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); + const regex = new RegExp(`(${ escapedQueries.join('|')})`, 'gi'); const parts = text.split(regex); return parts.map((part, index) => @@ -89,7 +90,7 @@ const formatNumber = (value, asInteger = false) => { }); }; -const Cell = React.memo(({ cell, row, column, onClick, globalFilter, backgroundColor, color, isEditable }) => { +const Cell = React.memo(({ cell, row, column, onClick, globalFilter, columnFilter, backgroundColor, color, isEditable }) => { const { lockedCells } = useRealtime(); const cellKey = `${row.id}_${column.id}`; @@ -105,9 +106,10 @@ const Cell = React.memo(({ cell, row, column, onClick, globalFilter, backgroundC } const highlightedContent = useMemo(() => { - return highlightText(textValue, globalFilter); + return highlightText(textValue, [globalFilter, columnFilter]); }, [textValue, globalFilter]); + // Базовые стили для заблокированной ячейки const lockedStyles = isLocked ? { border: '2px solid #e0e0e0', diff --git a/web/src/components/RealtimeTable/RealtimeTable.jsx b/web/src/components/RealtimeTable/RealtimeTable.jsx index b307303..b75259b 100644 --- a/web/src/components/RealtimeTable/RealtimeTable.jsx +++ b/web/src/components/RealtimeTable/RealtimeTable.jsx @@ -229,6 +229,12 @@ const RealtimeTable = ({ formType, formId, sheetName, direction, year }) => { minHeight: '1px', maxHeight: '1px', visibility: 'hidden', + '& svg': { + height: '1px', + minHeight: '1px', + maxHeight: '1px', + visibility: 'hidden', + } }, }, muiTablePaperProps: getTablePaperStyles(), diff --git a/web/src/components/RealtimeTable/TableHead/TableHead.jsx b/web/src/components/RealtimeTable/TableHead/TableHead.jsx index 9f819d9..efd1296 100644 --- a/web/src/components/RealtimeTable/TableHead/TableHead.jsx +++ b/web/src/components/RealtimeTable/TableHead/TableHead.jsx @@ -313,10 +313,10 @@ const FilterCell = ({ column, table }) => { onChange={(e) => handleFilterChange(e.target.value)} style={{ width: '100%', - padding: '4px 6px', - fontSize: '11px', + padding: '0.25rem 0.375rem', + fontSize: '0.6875rem', border: '1px solid #ddd', - borderRadius: '4px', + borderRadius: '0.25rem', backgroundColor: 'white', }} > @@ -330,23 +330,30 @@ const FilterCell = ({ column, table }) => { ); case 'range': { - // Для диапазона можно реализовать два поля const [min, max] = column.getFilterValue() || ['', '']; return ( -
+
{/* 4px */} column.setFilterValue([e.target.value, max])} - style={{ width: '50%', padding: '4px', fontSize: '11px' }} + style={{ + width: '50%', + padding: '0.25rem', + fontSize: '0.6875rem' + }} /> column.setFilterValue([min, e.target.value])} - style={{ width: '50%', padding: '4px', fontSize: '11px' }} + style={{ + width: '50%', + padding: '0.25rem', + fontSize: '0.6875rem' + }} />
); @@ -361,10 +368,10 @@ const FilterCell = ({ column, table }) => { placeholder="Поиск..." style={{ width: '100%', - padding: '4px 6px', - fontSize: '11px', + padding: '0.25rem 0.375rem', + fontSize: '0.6875rem', border: '1px solid #ddd', - borderRadius: '4px', + borderRadius: '0.25rem', boxSizing: 'border-box', }} /> diff --git a/web/src/components/RealtimeTable/tableColumns.jsx b/web/src/components/RealtimeTable/tableColumns.jsx index a47d5ce..2c6dd4e 100644 --- a/web/src/components/RealtimeTable/tableColumns.jsx +++ b/web/src/components/RealtimeTable/tableColumns.jsx @@ -112,6 +112,7 @@ export const getTableColumns = ({ globalFilter={ table.getState().globalFilter } + columnFilter={table.getState().columnFilters?.find(f => f.id === column.id)?.value} isEditable={row.original?.row_type === 'INPUT' || false} backgroundColor={columnColors[column.id]?.color_type?.[row.original?.row_type || row.row_type]} color={columnColors[column.id]?.color_type?.['COLOR']} -- 2.47.2 From 019b93092cb84f69791877242a0bd403cb5942d8 Mon Sep 17 00:00:00 2001 From: PotapovaA Date: Thu, 2 Jul 2026 17:45:00 +0300 Subject: [PATCH 6/6] fix-websocket --- .../RealtimeTable/contexts/RealtimeContext.js | 12 ++++++------ .../components/RealtimeTable/hooks/useWebSocket.js | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/web/src/components/RealtimeTable/contexts/RealtimeContext.js b/web/src/components/RealtimeTable/contexts/RealtimeContext.js index 9238aa1..5274d4f 100644 --- a/web/src/components/RealtimeTable/contexts/RealtimeContext.js +++ b/web/src/components/RealtimeTable/contexts/RealtimeContext.js @@ -93,7 +93,7 @@ export const RealtimeProvider = ({ } }, []); - const { isConnected, sendMessage, disconnect, lastError } = useWebSocket( + const { isConnectedRef, isConnected, sendMessage, disconnect, lastError } = useWebSocket( wsUrl, handleMessage, ); @@ -176,7 +176,7 @@ export const RealtimeProvider = ({ const columnId = column.id; const rowId = row.id; - if (!isConnected) { + if (!isConnectedRef) { onErrorRef.current?.("WebSocket не подключен"); return false; } @@ -208,7 +208,7 @@ export const RealtimeProvider = ({ const columnId = column.id; const rowId = row.id; - if (!isConnected) { + if (!isConnectedRef) { onErrorRef.current?.("WebSocket не подключен"); return false; } @@ -238,7 +238,7 @@ export const RealtimeProvider = ({ async (row, column, value) => { const columnId = column.id; const rowId = row.id; - if (!isConnected) { + if (!isConnectedRef) { onErrorRef.current?.("WebSocket не подключен"); return false; } @@ -266,7 +266,7 @@ export const RealtimeProvider = ({ const addRow = useCallback( async (rowData) => { - if (!isConnected) { + if (!isConnectedRef) { onErrorRef.current?.("Нет подключения или авторизации"); return false; } @@ -284,7 +284,7 @@ export const RealtimeProvider = ({ const deleteRow = useCallback( async (rowId) => { - if (!isConnected) { + if (!isConnectedRef) { onErrorRef.current?.("Нет подключения или авторизации"); return false; } diff --git a/web/src/components/RealtimeTable/hooks/useWebSocket.js b/web/src/components/RealtimeTable/hooks/useWebSocket.js index 8ee2f66..55f43b0 100644 --- a/web/src/components/RealtimeTable/hooks/useWebSocket.js +++ b/web/src/components/RealtimeTable/hooks/useWebSocket.js @@ -113,7 +113,8 @@ export const useWebSocket = (url, onMessage) => { }, [connect, disconnect]); return { - isConnected: isConnectedRef, + isConnectedRef, + isConnected, error, sendMessage, disconnect, -- 2.47.2