Merge pull request 'fix-front' (#64) from fix-front into test

Reviewed-on: #64
This commit is contained in:
PotapovaA 2026-06-22 20:34:14 +03:00
commit 2fcaea1d8b
25 changed files with 20804 additions and 22278 deletions

View File

@ -12,11 +12,28 @@ const ContainerForText = styled.span`
white-space: pre-wrap; white-space: pre-wrap;
`; `;
// Стилизованный компонент для плашки блокировки
const LockBadge = styled.div`
position: absolute;
top: 2px;
right: 2px;
background: rgba(0, 0, 0, 0.7);
color: white;
font-size: 9px;
padding: 1px 4px;
border-radius: 3px;
pointer-events: none;
z-index: 10;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
letter-spacing: 0.3px;
backdrop-filter: blur(4px);
border: 1px solid rgba(255, 255, 255, 0.1);
`;
// Функция для подсветки текста // Функция для подсветки текста
const highlightText = (text, searchQuery) => { const highlightText = (text, searchQuery) => {
if (!searchQuery || !text) return text; if (!searchQuery || !text) return text;
// Экранируем спецсимволы в поисковом запросе
const escapedQuery = searchQuery.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); const escapedQuery = searchQuery.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
const regex = new RegExp(`(${escapedQuery})`, 'gi'); const regex = new RegExp(`(${escapedQuery})`, 'gi');
@ -49,7 +66,6 @@ const formatNumber = (value) => {
const num = Number(value); const num = Number(value);
if (isNaN(num)) return String(value); if (isNaN(num)) return String(value);
// Форматируем число с 1 знаком после запятой и разделением по 3 цифры
return num.toLocaleString('ru-RU', { return num.toLocaleString('ru-RU', {
minimumFractionDigits: 1, minimumFractionDigits: 1,
maximumFractionDigits: 1, maximumFractionDigits: 1,
@ -58,21 +74,34 @@ const formatNumber = (value) => {
}; };
const Cell = React.memo(({ cell, row, column, onClick, globalFilter, backgroundColor, color, isEditable }) => { const Cell = React.memo(({ cell, row, column, onClick, globalFilter, backgroundColor, color, isEditable }) => {
const { lockedCells } = useRealtime();
const cellKey = `${row.id}_${column.id}`;
const isLocked = lockedCells.includes(cellKey);
const cellValue = cell.getValue(); const cellValue = cell.getValue();
let textValue = String(cellValue || ''); let textValue = String(cellValue || '');
// Проверяем, является ли значение числом, и форматируем его
const isNumeric = !isNaN(Number(cellValue)) && cellValue !== null && cellValue !== undefined && cellValue !== ''; const isNumeric = !isNaN(Number(cellValue)) && cellValue !== null && cellValue !== undefined && cellValue !== '';
if (isNumeric) { if (isNumeric) {
textValue = formatNumber(cellValue); textValue = formatNumber(cellValue);
} }
// Подсвечиваем текст с учетом поискового запроса
const highlightedContent = useMemo(() => { const highlightedContent = useMemo(() => {
return highlightText(textValue, globalFilter); return highlightText(textValue, globalFilter);
}, [textValue, globalFilter]); }, [textValue, globalFilter]);
const lockedStyles = !isEditable ? { // Базовые стили для заблокированной ячейки
const lockedStyles = isLocked ? {
border: '2px solid #e0e0e0',
backgroundColor: '#f5f5f5',
color: '#999999',
cursor: 'not-allowed',
opacity: 0.85,
} : {};
// Если isEditable false, добавляем дополнительные стили
const editableStyles = !isEditable ? {
border: '2px solid #d3d3d3', border: '2px solid #d3d3d3',
color: '#525252', color: '#525252',
cursor: 'not-allowed', cursor: 'not-allowed',
@ -95,13 +124,19 @@ const Cell = React.memo(({ cell, row, column, onClick, globalFilter, backgroundC
bottom: 0, bottom: 0,
border: '2px solid transparent', border: '2px solid transparent',
padding: '8px', padding: '8px',
backgroundColor: backgroundColor, backgroundColor: isLocked ? '#f5f5f5' : backgroundColor,
color: color, color: isLocked ? '#999999' : color,
...lockedStyles ...lockedStyles,
...editableStyles,
}} }}
onClick={onClick} onClick={isLocked ? undefined : onClick}
> >
<ContainerForText>{highlightedContent}</ContainerForText> <ContainerForText>{highlightedContent}</ContainerForText>
{isLocked && (
<LockBadge>
🔒
</LockBadge>
)}
</div> </div>
); );
}); });

View File

@ -25,13 +25,14 @@ import { toast } from 'react-toastify';
import { CircularProgress } from '@mui/material'; import { CircularProgress } from '@mui/material';
const RealtimeTable = ({ formType, formId, sheetName, direction }) => { const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
const { data, setData, isLoading: isTableLoading } = useRealtimeData(formId, sheetName, direction); const { data, setData, isLoading: isTableLoading, editingCells: dataEditingCells } = useRealtimeData(formId, sheetName, direction);
const [globalFilter, setGlobalFilter] = useState(''); const [globalFilter, setGlobalFilter] = useState('');
const [showColumnFilters, setShowColumnFilters] = useState(false); const [showColumnFilters, setShowColumnFilters] = useState(false);
const [selectedColumn, setSelectedColumn] = useState(); const [selectedColumn, setSelectedColumn] = useState();
const [rowSelection, setRowSelection] = useState({}); const [rowSelection, setRowSelection] = useState({});
const [isLoadingData, setIsLoadingData] = useState(false); const [isLoadingData, setIsLoadingData] = useState(false);
const [isPending, startTransition] = useTransition(); const [isPending, startTransition] = useTransition();
const [editingCell, setEditingCell] = useState(null);
const handleGlobalFilterChange = (value) => { const handleGlobalFilterChange = (value) => {
startTransition(() => { startTransition(() => {
@ -42,13 +43,14 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
const { const {
isConnected, isConnected,
isAuthenticated, isAuthenticated,
subscribeToCellUpdates,
subscribeToErrors, subscribeToErrors,
subscribeToAuthSuccess, subscribeToAuthSuccess,
error: wsError, error: wsError,
updateCell: contextUpdateCell, updateCell: contextUpdateCell,
addRow: contextAddRow, addRow: contextAddRow,
deleteRow: contextDeleteRow, deleteRow: contextDeleteRow,
startEditing: contextStartEditing,
endEditing: contextEndEditing,
} = useRealtime(); } = useRealtime();
const { const {
@ -63,18 +65,6 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
handleToggleColumnVisibility, handleToggleColumnVisibility,
} = useColumnSettings(`${formId}_${formType}_${sheetName}_${direction}`); } = useColumnSettings(`${formId}_${formType}_${sheetName}_${direction}`);
useEffect(() => {
// Принудительно обновляем состояние закрепленных колонок
// если так не сделать при скролле будут пропадать закрепленные колонки
if (columnPinning && Object.keys(columnPinning).length > 0) {
const timer = setTimeout(() => {
setColumnPinning(prev => ({ ...prev }));
}, 10);
return () => clearTimeout(timer);
}
}, [columnPinning, setColumnPinning]);
const { headerPortalRef, containerRef } = useHeaderPortal(); const { headerPortalRef, containerRef } = useHeaderPortal();
const { sizeMult, setSizeMult, tableScaleStyle, tableWrapperStyle } = const { sizeMult, setSizeMult, tableScaleStyle, tableWrapperStyle } =
@ -98,7 +88,7 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
const handleUpdateCell = useCallback(async (row, column, value) => { const handleUpdateCell = useCallback(async (row, column, value) => {
return await contextUpdateCell(row, column, value); return await contextUpdateCell(row, column, value);
}, [contextUpdateCell, setData]); }, [contextUpdateCell]);
const handleClickRowCell = useCallback((rowId) => { const handleClickRowCell = useCallback((rowId) => {
setRowSelection((prev) => ({ setRowSelection((prev) => ({
@ -127,9 +117,7 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
} }
}, [columnsConfig, handleUpdateCell]); }, [columnsConfig, handleUpdateCell]);
const tableMeta = useMemo(() => ({ const tableMeta = useRef({ updateCell: handleUpdateCell }).current;
updateCell: handleUpdateCell,
}), [handleUpdateCell]);
// Конфигурация таблицы // Конфигурация таблицы
const tableConfig = useMemo( const tableConfig = useMemo(
@ -144,6 +132,14 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
scrollPaddingStart: 0, scrollPaddingStart: 0,
scrollPaddingEnd: 0, scrollPaddingEnd: 0,
}, },
onEditingCellChange: (cell) => {
if (cell) {
if (editingCell) return;
contextStartEditing?.(cell.row, cell.column);
} else {
contextEndEditing?.(editingCell.row, editingCell.column);
}
},
columnVirtualizerOptions: ({ table }) => ({ columnVirtualizerOptions: ({ table }) => ({
overscan: 5, overscan: 5,
measureElement: (el) => { measureElement: (el) => {
@ -163,6 +159,7 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
globalFilter, globalFilter,
showColumnFilters, showColumnFilters,
rowSelection, rowSelection,
editingCell,
}, },
initialState: { initialState: {
expanded: true, expanded: true,
@ -214,11 +211,43 @@ const RealtimeTable = ({ formType, formId, sheetName, direction }) => {
const table = useMaterialReactTable(tableConfig); const table = useMaterialReactTable(tableConfig);
useEffect(() => {
if (!dataEditingCells || !dataEditingCells.line_id) {
setEditingCell(null);
return;
}
if (editingCell) return;
const rowId = dataEditingCells.line_id;
const columnId = dataEditingCells.column;
try {
const row = table.getRow(rowId);
const column = table.getColumn(columnId);
const cell = row?.getVisibleCells().find(c => c.column.id === columnId);
if (cell) {
setEditingCell(cell);
}
} catch (error) {
console.error(error);
toast.error('Ошибка редактирования ячейки');
}
}, [dataEditingCells, table]);
useEffect(() => { useEffect(() => {
if (table && data && columns.length !== 0) { if (table && data && columns.length !== 0) {
setIsLoadingData(true) setIsLoadingData(true)
} }
}, [data, columns, table]) }, [data, columns, table])
useEffect(() => {
// Принудительно обновляем состояние закрепленных колонок
// если так не сделать при скролле будут пропадать закрепленные колонки
if (columnPinning && Object.keys(columnPinning).length > 0) {
const timer = setTimeout(() => {
setColumnPinning(prev => ({ ...prev }));
}, 10);
return () => clearTimeout(timer);
}
}, [table]);
const handleAddRow = useCallback(() => { const handleAddRow = useCallback(() => {
const allRows = table.getRowModel().rows; const allRows = table.getRowModel().rows;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -62,6 +62,10 @@
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"data.plan.total_year" "accessorKey":"data.plan.total_year"
}, },
"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_podderzhka_i_kvartal":{
"color_type":whiteColumn,
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_podderzhka_i_kvartal"
},
"data.approved.support.q1":{ "data.approved.support.q1":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"data.approved.support.q1" "accessorKey":"data.approved.support.q1"
@ -98,9 +102,13 @@
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"data.approved.development.q4" "accessorKey":"data.approved.development.q4"
}, },
"data.approved.development.year":{ "data.approved.total_year":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"data.approved.development.year" "accessorKey":"data.approved.total_year"
},
"fakticheskie_raskhody_za_2024_god_podderzhka_podderzhka_ii_kvartal":{
"color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka_podderzhka_ii_kvartal"
}, },
"data.fact.support.q1":{ "data.fact.support.q1":{
"color_type":whiteColumn, "color_type":whiteColumn,
@ -134,14 +142,18 @@
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"data.fact.development.q3" "accessorKey":"data.fact.development.q3"
}, },
"data.fact.development.q4":{
"color_type":whiteColumn,
"accessorKey":"data.fact.development.q4"
},
"data.fact.development.year":{ "data.fact.development.year":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"data.fact.development.year" "accessorKey":"data.fact.development.year"
}, },
"data.fact.total_year":{
"color_type":whiteColumn,
"accessorKey":"data.fact.total_year"
},
"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka_podderzhka_iv_kvartal":{
"color_type":whiteColumn,
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka_podderzhka_iv_kvartal"
},
"data.corrected.support.q2":{ "data.corrected.support.q2":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"data.corrected.support.q2" "accessorKey":"data.corrected.support.q2"
@ -153,18 +165,6 @@
"data.corrected.support.q4":{ "data.corrected.support.q4":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"data.corrected.support.q4" "accessorKey":"data.corrected.support.q4"
},
"data.corrected.development.q2":{
"color_type":whiteColumn,
"accessorKey":"data.corrected.development.q2"
},
"data.corrected.development.q3":{
"color_type":whiteColumn,
"accessorKey":"data.corrected.development.q3"
},
"data.corrected.development.q4":{
"color_type":whiteColumn,
"accessorKey":"data.corrected.development.q4"
} }
}, },
"columns":[ "columns":[
@ -181,11 +181,17 @@
"accessorKey":"pp_pp_pp", "accessorKey":"pp_pp_pp",
"columns":[ "columns":[
{ {
"header":"№ п/п", "header":"",
"accessorKey":"data.section_code", "accessorKey":"data.section_code",
"columnLetter":"B", "columnLetter":"B",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
} }
] ]
} }
@ -212,11 +218,17 @@
"accessorKey":"perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat", "accessorKey":"perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat",
"columns":[ "columns":[
{ {
"header":"Перечень расходов и затрат", "header":"",
"accessorKey":"data.name", "accessorKey":"data.name",
"columnLetter":"C", "columnLetter":"C",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
} }
] ]
} }
@ -239,17 +251,15 @@
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_podderzhka", "accessorKey":"raskhody_planiruemye_ssp_na_2024_god_podderzhka",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"Поддержка",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_podderzhka_i_kvartal", "accessorKey":"raskhody_planiruemye_ssp_na_2024_god_podderzhka_podderzhka",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"data.plan.support.q1", "accessorKey":"data.plan.support.q1",
"columnLetter":"D", "columnLetter":"D",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -257,18 +267,12 @@
} }
} }
}, },
{
"header":"II квартал",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_podderzhka_ii_kvartal",
"columns":[
{ {
"header":"II квартал", "header":"II квартал",
"accessorKey":"data.plan.support.q2", "accessorKey":"data.plan.support.q2",
"columnLetter":"E", "columnLetter":"E",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -276,18 +280,12 @@
} }
} }
}, },
{
"header":"III квартал",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_podderzhka_iii_kvartal",
"columns":[
{ {
"header":"III квартал", "header":"III квартал",
"accessorKey":"data.plan.support.q3", "accessorKey":"data.plan.support.q3",
"columnLetter":"F", "columnLetter":"F",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -295,18 +293,12 @@
} }
} }
}, },
{
"header":"IV квартал",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_podderzhka_iv_kvartal",
"columns":[
{ {
"header":"IV квартал", "header":"IV квартал",
"accessorKey":"data.plan.support.q4", "accessorKey":"data.plan.support.q4",
"columnLetter":"G", "columnLetter":"G",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -314,18 +306,12 @@
} }
} }
}, },
{
"header":"ИТОГОПоддержка",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_podderzhka_itogopodderzhka",
"columns":[
{ {
"header":"ИТОГОПоддержка", "header":"ИТОГОПоддержка",
"accessorKey":"data.plan.support.year", "accessorKey":"data.plan.support.year",
"columnLetter":"H", "columnLetter":"H",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -333,6 +319,8 @@
} }
} }
} }
]
}
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -346,17 +334,15 @@
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_razvitie", "accessorKey":"raskhody_planiruemye_ssp_na_2024_god_razvitie",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"Развитие",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_razvitie_i_kvartal", "accessorKey":"raskhody_planiruemye_ssp_na_2024_god_razvitie_razvitie",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"data.plan.development.q1", "accessorKey":"data.plan.development.q1",
"columnLetter":"I", "columnLetter":"I",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -364,18 +350,12 @@
} }
} }
}, },
{
"header":"II квартал",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_razvitie_ii_kvartal",
"columns":[
{ {
"header":"II квартал", "header":"II квартал",
"accessorKey":"data.plan.development.q2", "accessorKey":"data.plan.development.q2",
"columnLetter":"J", "columnLetter":"J",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -383,18 +363,12 @@
} }
} }
}, },
{
"header":"III квартал",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_razvitie_iii_kvartal",
"columns":[
{ {
"header":"III квартал", "header":"III квартал",
"accessorKey":"data.plan.development.q3", "accessorKey":"data.plan.development.q3",
"columnLetter":"K", "columnLetter":"K",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -402,18 +376,12 @@
} }
} }
}, },
{
"header":"IV квартал",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_razvitie_iv_kvartal",
"columns":[
{ {
"header":"IV квартал", "header":"IV квартал",
"accessorKey":"data.plan.development.q4", "accessorKey":"data.plan.development.q4",
"columnLetter":"L", "columnLetter":"L",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -421,18 +389,12 @@
} }
} }
}, },
{
"header":"ИТОГОРазвитие",
"accessorKey":"raskhody_planiruemye_ssp_na_2024_god_razvitie_itogorazvitie",
"columns":[
{ {
"header":"ИТОГОРазвитие", "header":"ИТОГОРазвитие",
"accessorKey":"data.plan.development.year", "accessorKey":"data.plan.development.year",
"columnLetter":"M", "columnLetter":"M",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -440,6 +402,8 @@
} }
} }
} }
]
}
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -469,11 +433,17 @@
"accessorKey":"itogo_2024_itogo_2024_itogo_2024", "accessorKey":"itogo_2024_itogo_2024_itogo_2024",
"columns":[ "columns":[
{ {
"header":"ИТОГО 2024", "header":"",
"accessorKey":"data.plan.total_year", "accessorKey":"data.plan.total_year",
"columnLetter":"N", "columnLetter":"N",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
} }
] ]
} }
@ -496,17 +466,28 @@
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka", "accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"Поддержка",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_i_kvartal", "accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_podderzhka",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_podderzhka_i_kvartal",
"columnLetter":"O",
"size":150,
"filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
},
{
"header":"II квартал",
"accessorKey":"data.approved.support.q1", "accessorKey":"data.approved.support.q1",
"columnLetter":"P", "columnLetter":"P",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -515,17 +496,11 @@
} }
}, },
{ {
"header":"II квартал", "header":"III квартал",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_ii_kvartal",
"columns":[
{
"header":"II квартал",
"accessorKey":"data.approved.support.q2", "accessorKey":"data.approved.support.q2",
"columnLetter":"Q", "columnLetter":"Q",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -534,17 +509,11 @@
} }
}, },
{ {
"header":"III квартал", "header":"IV квартал",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_iii_kvartal",
"columns":[
{
"header":"III квартал",
"accessorKey":"data.approved.support.q3", "accessorKey":"data.approved.support.q3",
"columnLetter":"R", "columnLetter":"R",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -553,42 +522,19 @@
} }
}, },
{ {
"header":"IV квартал", "header":"ИТОГОПоддержка",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_iv_kvartal",
"columns":[
{
"header":"IV квартал",
"accessorKey":"data.approved.support.q4", "accessorKey":"data.approved.support.q4",
"columnLetter":"S", "columnLetter":"S",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
"color":"#000000" "color":"#000000"
} }
} }
},
{
"header":"ИТОГОПоддержка",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_podderzhka_itogopodderzhka",
"columns":[
{
"header":"ИТОГОПоддержка",
"accessorKey":"data.approved.support.year",
"columnLetter":"T",
"size":150,
"filterFn":"contains"
}
],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
} }
]
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -603,17 +549,28 @@
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_razvitie", "accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_razvitie",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"Развитие",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_razvitie_i_kvartal", "accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_razvitie_razvitie",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"data.approved.support.year",
"columnLetter":"T",
"size":150,
"filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
},
{
"header":"II квартал",
"accessorKey":"data.approved.development.q1", "accessorKey":"data.approved.development.q1",
"columnLetter":"U", "columnLetter":"U",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -622,17 +579,11 @@
} }
}, },
{ {
"header":"II квартал", "header":"III квартал",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_razvitie_ii_kvartal",
"columns":[
{
"header":"II квартал",
"accessorKey":"data.approved.development.q2", "accessorKey":"data.approved.development.q2",
"columnLetter":"V", "columnLetter":"V",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -641,17 +592,11 @@
} }
}, },
{ {
"header":"III квартал", "header":"IV квартал",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_razvitie_iii_kvartal",
"columns":[
{
"header":"III квартал",
"accessorKey":"data.approved.development.q3", "accessorKey":"data.approved.development.q3",
"columnLetter":"W", "columnLetter":"W",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -660,42 +605,19 @@
} }
}, },
{ {
"header":"IV квартал", "header":"ИТОГОРазвитие",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_razvitie_iv_kvartal",
"columns":[
{
"header":"IV квартал",
"accessorKey":"data.approved.development.q4", "accessorKey":"data.approved.development.q4",
"columnLetter":"X", "columnLetter":"X",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
"color":"#000000" "color":"#000000"
} }
} }
},
{
"header":"ИТОГОРазвитие",
"accessorKey":"utverzhdennye_bazovye_raskhody_na_2024_god_razvitie_itogorazvitie",
"columns":[
{
"header":"ИТОГОРазвитие",
"accessorKey":"data.approved.development.year",
"columnLetter":"Y",
"size":150,
"filterFn":"contains"
}
],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
} }
]
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -722,17 +644,41 @@
"accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka", "accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"Поддержка",
"accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka_i_kvartal", "accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka_podderzhka",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"data.approved.total_year",
"columnLetter":"Z",
"size":150,
"filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
},
{
"header":"II квартал",
"accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka_podderzhka_ii_kvartal",
"columnLetter":"AA",
"size":150,
"filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
},
{
"header":"III квартал",
"accessorKey":"data.fact.support.q1", "accessorKey":"data.fact.support.q1",
"columnLetter":"AB", "columnLetter":"AB",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -741,17 +687,11 @@
} }
}, },
{ {
"header":"II квартал", "header":"IV квартал",
"accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka_ii_kvartal",
"columns":[
{
"header":"II квартал",
"accessorKey":"data.fact.support.q2", "accessorKey":"data.fact.support.q2",
"columnLetter":"AC", "columnLetter":"AC",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -760,61 +700,19 @@
} }
}, },
{ {
"header":"III квартал", "header":"ИТОГОПоддержка",
"accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka_iii_kvartal",
"columns":[
{
"header":"III квартал",
"accessorKey":"data.fact.support.q3", "accessorKey":"data.fact.support.q3",
"columnLetter":"AD", "columnLetter":"AD",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
"color":"#000000" "color":"#000000"
} }
} }
},
{
"header":"IV квартал",
"accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka_iv_kvartal",
"columns":[
{
"header":"IV квартал",
"accessorKey":"data.fact.support.q4",
"columnLetter":"AE",
"size":150,
"filterFn":"contains"
}
],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
},
{
"header":"ИТОГОПоддержка",
"accessorKey":"fakticheskie_raskhody_za_2024_god_podderzhka_itogopodderzhka",
"columns":[
{
"header":"ИТОГОПоддержка",
"accessorKey":"data.fact.support.year",
"columnLetter":"AF",
"size":150,
"filterFn":"contains"
}
],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
} }
]
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -829,17 +727,41 @@
"accessorKey":"fakticheskie_raskhody_za_2024_god_razvitie", "accessorKey":"fakticheskie_raskhody_za_2024_god_razvitie",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"Развитие",
"accessorKey":"fakticheskie_raskhody_za_2024_god_razvitie_i_kvartal", "accessorKey":"fakticheskie_raskhody_za_2024_god_razvitie_razvitie",
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"data.fact.support.q4",
"columnLetter":"AE",
"size":150,
"filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
},
{
"header":"II квартал",
"accessorKey":"data.fact.support.year",
"columnLetter":"AF",
"size":150,
"filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
},
{
"header":"III квартал",
"accessorKey":"data.fact.development.q1", "accessorKey":"data.fact.development.q1",
"columnLetter":"AG", "columnLetter":"AG",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -848,17 +770,11 @@
} }
}, },
{ {
"header":"II квартал", "header":"IV квартал",
"accessorKey":"fakticheskie_raskhody_za_2024_god_razvitie_ii_kvartal",
"columns":[
{
"header":"II квартал",
"accessorKey":"data.fact.development.q2", "accessorKey":"data.fact.development.q2",
"columnLetter":"AH", "columnLetter":"AH",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -867,61 +783,19 @@
} }
}, },
{ {
"header":"III квартал", "header":"ИТОГОРазвитие",
"accessorKey":"fakticheskie_raskhody_za_2024_god_razvitie_iii_kvartal",
"columns":[
{
"header":"III квартал",
"accessorKey":"data.fact.development.q3", "accessorKey":"data.fact.development.q3",
"columnLetter":"AI", "columnLetter":"AI",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
"color":"#000000" "color":"#000000"
} }
} }
},
{
"header":"IV квартал",
"accessorKey":"fakticheskie_raskhody_za_2024_god_razvitie_iv_kvartal",
"columns":[
{
"header":"IV квартал",
"accessorKey":"data.fact.development.q4",
"columnLetter":"AJ",
"size":150,
"filterFn":"contains"
}
],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
},
{
"header":"ИТОГОРазвитие",
"accessorKey":"fakticheskie_raskhody_za_2024_god_razvitie_itogorazvitie",
"columns":[
{
"header":"ИТОГОРазвитие",
"accessorKey":"data.fact.development.year",
"columnLetter":"AK",
"size":150,
"filterFn":"contains"
}
],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
} }
]
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -948,17 +822,15 @@
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka", "accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka",
"columns":[ "columns":[
{ {
"header":"II квартал", "header":"Поддержка",
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka_ii_kvartal", "accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka_podderzhka",
"columns":[ "columns":[
{ {
"header":"II квартал", "header":"II квартал",
"accessorKey":"data.corrected.support.q2", "accessorKey":"data.fact.development.year",
"columnLetter":"AN", "columnLetter":"AK",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -968,16 +840,10 @@
}, },
{ {
"header":"III квартал", "header":"III квартал",
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka_iii_kvartal", "accessorKey":"data.fact.total_year",
"columns":[ "columnLetter":"AL",
{
"header":"III квартал",
"accessorKey":"data.corrected.support.q3",
"columnLetter":"AO",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -987,16 +853,10 @@
}, },
{ {
"header":"IV квартал", "header":"IV квартал",
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka_iv_kvartal", "accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_podderzhka_podderzhka_iv_kvartal",
"columns":[ "columnLetter":"AM",
{
"header":"IV квартал",
"accessorKey":"data.corrected.support.q4",
"columnLetter":"AP",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -1004,6 +864,8 @@
} }
} }
} }
]
}
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -1017,17 +879,15 @@
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_razvitie", "accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_razvitie",
"columns":[ "columns":[
{ {
"header":"II квартал", "header":"Развитие",
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_razvitie_ii_kvartal", "accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_razvitie_razvitie",
"columns":[ "columns":[
{ {
"header":"II квартал", "header":"II квартал",
"accessorKey":"data.corrected.development.q2", "accessorKey":"data.corrected.support.q2",
"columnLetter":"AQ", "columnLetter":"AN",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -1037,16 +897,10 @@
}, },
{ {
"header":"III квартал", "header":"III квартал",
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_razvitie_iii_kvartal", "accessorKey":"data.corrected.support.q3",
"columns":[ "columnLetter":"AO",
{
"header":"III квартал",
"accessorKey":"data.corrected.development.q3",
"columnLetter":"AR",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -1056,16 +910,10 @@
}, },
{ {
"header":"IV квартал", "header":"IV квартал",
"accessorKey":"skorrektirovannaya_smeta_raskhodov_na_2024_god_razvitie_iv_kvartal", "accessorKey":"data.corrected.support.q4",
"columns":[ "columnLetter":"AP",
{
"header":"IV квартал",
"accessorKey":"data.corrected.development.q4",
"columnLetter":"AS",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
}
],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#BFBFBF", "backgroundColor":"#BFBFBF",
@ -1073,6 +921,8 @@
} }
} }
} }
]
}
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{

File diff suppressed because it is too large Load Diff

View File

@ -1,328 +1,369 @@
import {
import {
greenColumn, greenColumn,
whiteColumn, whiteColumn,
orangeColumn, orangeColumn,
yellowColumn, yellowColumn,
redColumn, redColumn,
blueColumn, blueColumn,
} from "../columnColors"; } from '../columnColors';
export const config = { export const config = {
config: { "config":{
colors: { "colors":{
n_pp_n_pp: { "section_no":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "n_pp_n_pp", "accessorKey":"section_no"
}, },
id_stati_gruppy_nomenklatury_id_stati_gruppy_nomenklatury: { "expense_item_code":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "accessorKey":"expense_item_code"
"id_stati_gruppy_nomenklatury_id_stati_gruppy_nomenklatury",
}, },
naimenovanie_statey_raskhodov_naimenovanie_statey_raskhodov: { "name":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "accessorKey":"name"
"naimenovanie_statey_raskhodov_naimenovanie_statey_raskhodov",
}, },
normiruemaya_edinitsa_normiruemaya_edinitsa: { "unit":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "normiruemaya_edinitsa_normiruemaya_edinitsa", "accessorKey":"unit"
}, },
limit_v_rubs_uchetom_nds_limit_v_rubs_uchetom_nds: { "limit_with_vat":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "limit_v_rubs_uchetom_nds_limit_v_rubs_uchetom_nds", "accessorKey":"limit_with_vat"
}, },
limit_v_rubbez_ucheta_nds_limit_v_rubbez_ucheta_nds: { "limit_without_vat":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "limit_v_rubbez_ucheta_nds_limit_v_rubbez_ucheta_nds", "accessorKey":"limit_without_vat"
}, },
i_kvartal_2026_g_kolichestvov_sht: { "i_kvartal_2026_g_kolichestvov_sht":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "i_kvartal_2026_g_kolichestvov_sht", "accessorKey":"i_kvartal_2026_g_kolichestvov_sht"
}, },
i_kvartal_2026_g_raskhody_v_smetu_v_rublyakh: { "qty_q1":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "i_kvartal_2026_g_raskhody_v_smetu_v_rublyakh", "accessorKey":"qty_q1"
}, },
ii_kvartal_2026_g_kolichestvov_sht: { "amount_q1":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "ii_kvartal_2026_g_kolichestvov_sht", "accessorKey":"amount_q1"
}, },
ii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh: { "ii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "ii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh", "accessorKey":"ii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh"
}, },
iii_kvartal_2026_g_kolichestvov_sht: { "qty_q2":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "iii_kvartal_2026_g_kolichestvov_sht", "accessorKey":"qty_q2"
}, },
iii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh: { "amount_q2":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "iii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh", "accessorKey":"amount_q2"
}, },
iv_kvartal_2026_g_kolichestvov_sht: { "iv_kvartal_2026_g_kolichestvov_sht":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "iv_kvartal_2026_g_kolichestvov_sht", "accessorKey":"iv_kvartal_2026_g_kolichestvov_sht"
}, },
iv_kvartal_2026_g_raskhody_v_smetu_v_rublyakh: { "qty_q3":{
color_type: whiteColumn, "color_type":whiteColumn,
accessorKey: "iv_kvartal_2026_g_raskhody_v_smetu_v_rublyakh", "accessorKey":"qty_q3"
}
}, },
}, "columns":[
columns: [
{ {
header: "N п/п", "header":"N п/п",
accessorKey: "n_pp", "accessorKey":"n_pp",
columns: [ "columns":[
{ {
header: "N п/п", "header":"",
accessorKey: "n_pp_n_pp", "accessorKey":"section_no",
size: 150, "columnLetter":"B",
filterFn: "contains", "size":150,
}, "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#A5A5A5",
"color":"#000000"
}
}
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "ID статьи / группы номенклатуры", "header":"ID статьи / группы номенклатуры",
accessorKey: "id_stati_gruppy_nomenklatury", "accessorKey":"id_stati_gruppy_nomenklatury",
columns: [ "columns":[
{ {
header: "ID статьи / группы номенклатуры", "header":"",
accessorKey: "accessorKey":"expense_item_code",
"id_stati_gruppy_nomenklatury_id_stati_gruppy_nomenklatury", "columnLetter":"C",
size: 150, "size":150,
filterFn: "contains", "filterFn":"contains",
}, "muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#A5A5A5",
"color":"#000000"
}
}
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "Наименование статей расходов", "header":"Наименование статей расходов",
accessorKey: "naimenovanie_statey_raskhodov", "accessorKey":"naimenovanie_statey_raskhodov",
columns: [ "columns":[
{ {
header: "Наименование статей расходов", "header":"",
accessorKey: "accessorKey":"name",
"naimenovanie_statey_raskhodov_naimenovanie_statey_raskhodov", "columnLetter":"D",
size: 150, "size":150,
filterFn: "contains", "filterFn":"contains",
}, "muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#A5A5A5",
"color":"#000000"
}
}
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "Нормируемая единица", "header":"Нормируемая единица",
accessorKey: "normiruemaya_edinitsa", "accessorKey":"normiruemaya_edinitsa",
columns: [ "columns":[
{ {
header: "Нормируемая единица", "header":"",
accessorKey: "normiruemaya_edinitsa_normiruemaya_edinitsa", "accessorKey":"unit",
size: 150, "columnLetter":"E",
filterFn: "contains", "size":150,
}, "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#A5A5A5",
"color":"#000000"
}
}
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "Лимит, в руб.(с учетом НДС)", "header":"Лимит, в руб.(с учетом НДС)",
accessorKey: "limit_v_rubs_uchetom_nds", "accessorKey":"limit_v_rubs_uchetom_nds",
columns: [ "columns":[
{ {
header: "Лимит, в руб.(с учетом НДС)", "header":"",
accessorKey: "limit_v_rubs_uchetom_nds_limit_v_rubs_uchetom_nds", "accessorKey":"limit_with_vat",
size: 150, "columnLetter":"F",
filterFn: "contains", "size":150,
}, "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#A5A5A5",
"color":"#000000"
}
}
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "Лимит, в руб.(без учета НДС)", "header":"Лимит, в руб.(без учета НДС)",
accessorKey: "limit_v_rubbez_ucheta_nds", "accessorKey":"limit_v_rubbez_ucheta_nds",
columns: [ "columns":[
{ {
header: "Лимит, в руб.(без учета НДС)", "header":"Лимит, в руб.(без учета НДС)",
accessorKey: "limit_v_rubbez_ucheta_nds_limit_v_rubbez_ucheta_nds", "accessorKey":"limit_without_vat",
size: 150, "columnLetter":"G",
filterFn: "contains", "size":290,
}, "filterFn":"contains"
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "I квартал 2026 г.", "header":"I квартал 2026 г.",
accessorKey: "i_kvartal_2026_g", "accessorKey":"i_kvartal_2026_g",
columns: [ "columns":[
{ {
header: "Количество,в шт.", "header":"Количество,в шт.",
accessorKey: "i_kvartal_2026_g_kolichestvov_sht", "accessorKey":"i_kvartal_2026_g_kolichestvov_sht",
size: 150, "columnLetter":"H",
filterFn: "contains", "size":170,
muiTableHeadCellProps: { "filterFn":"contains",
sx: { "muiTableHeadCellProps":{
backgroundColor: "#A5A5A5", "sx":{
color: "#000000", "backgroundColor":"#A5A5A5",
}, "color":"#000000"
}, }
}
}, },
{ {
header: "Расходы в смету, в рублях", "header":"Расходы в смету, в рублях",
accessorKey: "i_kvartal_2026_g_raskhody_v_smetu_v_rublyakh", "accessorKey":"qty_q1",
size: 150, "columnLetter":"I",
filterFn: "contains", "size":260,
muiTableHeadCellProps: { "filterFn":"contains",
sx: { "muiTableHeadCellProps":{
backgroundColor: "#A5A5A5", "sx":{
color: "#000000", "backgroundColor":"#A5A5A5",
}, "color":"#000000"
}, }
}, }
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "II квартал 2026 г.", "header":"II квартал 2026 г.",
accessorKey: "ii_kvartal_2026_g", "accessorKey":"ii_kvartal_2026_g",
columns: [ "columns":[
{ {
header: "Количество,в шт.", "header":"Количество,в шт.",
accessorKey: "ii_kvartal_2026_g_kolichestvov_sht", "accessorKey":"amount_q1",
size: 150, "columnLetter":"J",
filterFn: "contains", "size":170,
muiTableHeadCellProps: { "filterFn":"contains",
sx: { "muiTableHeadCellProps":{
backgroundColor: "#A5A5A5", "sx":{
color: "#000000", "backgroundColor":"#A5A5A5",
}, "color":"#000000"
}, }
}
}, },
{ {
header: "Расходы в смету, в рублях", "header":"Расходы в смету, в рублях",
accessorKey: "ii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh", "accessorKey":"ii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh",
size: 150, "columnLetter":"K",
filterFn: "contains", "size":260,
muiTableHeadCellProps: { "filterFn":"contains",
sx: { "muiTableHeadCellProps":{
backgroundColor: "#A5A5A5", "sx":{
color: "#000000", "backgroundColor":"#A5A5A5",
}, "color":"#000000"
}, }
}, }
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "III квартал 2026 г.", "header":"III квартал 2026 г.",
accessorKey: "iii_kvartal_2026_g", "accessorKey":"iii_kvartal_2026_g",
columns: [ "columns":[
{ {
header: "Количество,в шт.", "header":"Количество,в шт.",
accessorKey: "iii_kvartal_2026_g_kolichestvov_sht", "accessorKey":"qty_q2",
size: 150, "columnLetter":"L",
filterFn: "contains", "size":170,
muiTableHeadCellProps: { "filterFn":"contains",
sx: { "muiTableHeadCellProps":{
backgroundColor: "#A5A5A5", "sx":{
color: "#000000", "backgroundColor":"#A5A5A5",
}, "color":"#000000"
}, }
}
}, },
{ {
header: "Расходы в смету, в рублях", "header":"Расходы в смету, в рублях",
accessorKey: "iii_kvartal_2026_g_raskhody_v_smetu_v_rublyakh", "accessorKey":"amount_q2",
size: 150, "columnLetter":"M",
filterFn: "contains", "size":260,
muiTableHeadCellProps: { "filterFn":"contains",
sx: { "muiTableHeadCellProps":{
backgroundColor: "#A5A5A5", "sx":{
color: "#000000", "backgroundColor":"#A5A5A5",
}, "color":"#000000"
}, }
}, }
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, },
{ {
header: "IV квартал 2026 г.", "header":"IV квартал 2026 г.",
accessorKey: "iv_kvartal_2026_g", "accessorKey":"iv_kvartal_2026_g",
columns: [ "columns":[
{ {
header: "Количество,в шт.", "header":"Количество,в шт.",
accessorKey: "iv_kvartal_2026_g_kolichestvov_sht", "accessorKey":"iv_kvartal_2026_g_kolichestvov_sht",
size: 150, "columnLetter":"N",
filterFn: "contains", "size":170,
muiTableHeadCellProps: { "filterFn":"contains",
sx: { "muiTableHeadCellProps":{
backgroundColor: "#A5A5A5", "sx":{
color: "#000000", "backgroundColor":"#A5A5A5",
}, "color":"#000000"
}, }
}
}, },
{ {
header: "Расходы в смету, в рублях", "header":"Расходы в смету, в рублях",
accessorKey: "iv_kvartal_2026_g_raskhody_v_smetu_v_rublyakh", "accessorKey":"qty_q3",
size: 150, "columnLetter":"O",
filterFn: "contains", "size":260,
muiTableHeadCellProps: { "filterFn":"contains",
sx: { "muiTableHeadCellProps":{
backgroundColor: "#A5A5A5", "sx":{
color: "#000000", "backgroundColor":"#A5A5A5",
}, "color":"#000000"
}, }
}, }
}
], ],
muiTableHeadCellProps: { "muiTableHeadCellProps":{
sx: { "sx":{
backgroundColor: "#A5A5A5", "backgroundColor":"#A5A5A5",
color: "#000000", "color":"#000000"
}, }
}, }
}, }
], ]
}, }
}; }

View File

@ -10,49 +10,49 @@
export const config = { export const config = {
"config":{ "config":{
"colors":{ "colors":{
"pp_pp_pp_pp":{ "pp_pp_pp_field":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"pp_pp_pp_pp" "accessorKey":"pp_pp_pp_field"
}, },
"adres_arenduemogo_pomescheniya_adres_arenduemogo_pomescheniya_adres_arenduemogo_pomescheniya_zapolnyaetsya_avto_iz_tabl_info_v_zavisimosti_ot_vybrannogo_obekta":{ "address":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"adres_arenduemogo_pomescheniya_adres_arenduemogo_pomescheniya_adres_arenduemogo_pomescheniya_zapolnyaetsya_avto_iz_tabl_info_v_zavisimosti_ot_vybrannogo_obekta" "accessorKey":"address"
}, },
"obekt_obekt_obekt_neobkhodimo_vybrat_iz_spiska":{ "object_type":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"obekt_obekt_obekt_neobkhodimo_vybrat_iz_spiska" "accessorKey":"object_type"
}, },
"arenduemaya_ploschad_arenduemaya_ploschad_arenduemaya_ploschad_v_kvm":{ "rented_area":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"arenduemaya_ploschad_arenduemaya_ploschad_arenduemaya_ploschad_v_kvm" "accessorKey":"rented_area"
}, },
"srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_v_formate_mesyatsgod":{ "contract_end_date":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_v_formate_mesyatsgod" "accessorKey":"contract_end_date"
}, },
"nomer_dogovora_nomer_dogovora_nomer_dogovora_field":{ "contract_number":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"nomer_dogovora_nomer_dogovora_nomer_dogovora_field" "accessorKey":"contract_number"
}, },
"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field":{ "planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field" "accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field"
}, },
"planiruemaya_summa_raskhodov_na_2026_god_ii_kvartal_ii_kvartal_field":{ "plan.q1":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_ii_kvartal_ii_kvartal_field" "accessorKey":"plan.q1"
}, },
"planiruemaya_summa_raskhodov_na_2026_god_iii_kvartal_iii_kvartal_field":{ "plan.q2":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_iii_kvartal_iii_kvartal_field" "accessorKey":"plan.q2"
}, },
"planiruemaya_summa_raskhodov_na_2026_god_iv_kvartal_iv_kvartal_field":{ "plan.q3":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_iv_kvartal_iv_kvartal_field" "accessorKey":"plan.q3"
}, },
"kommentariy_kommentariy_kommentariy_kommentariy":{ "plan.q4":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"kommentariy_kommentariy_kommentariy_kommentariy" "accessorKey":"plan.q4"
}, },
"fakticheskie_raskhody_za_i_kv_2026_goda_yanvar_yanvar_v_tys_rubley":{ "fakticheskie_raskhody_za_i_kv_2026_goda_yanvar_yanvar_v_tys_rubley":{
"color_type":whiteColumn, "color_type":whiteColumn,
@ -66,61 +66,61 @@
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_mart_mart_v_tys_rubley" "accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_mart_mart_v_tys_rubley"
}, },
"fakticheskie_raskhody_za_i_kv_2026_goda_itog_i_kv_itog_i_kv_v_tys_rubley":{ "fact_q1.jan":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_itog_i_kv_itog_i_kv_v_tys_rubley" "accessorKey":"fact_q1.jan"
}, },
"fakticheskie_raskhody_za_ii_kv_2026_goda_aprel_aprel_v_tys_rubley":{ "fact_q1.feb":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_aprel_aprel_v_tys_rubley" "accessorKey":"fact_q1.feb"
}, },
"fakticheskie_raskhody_za_ii_kv_2026_goda_may_may_v_tys_rubley":{ "fact_q1.mar":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_may_may_v_tys_rubley" "accessorKey":"fact_q1.mar"
}, },
"fakticheskie_raskhody_za_ii_kv_2026_goda_iyun_iyun_v_tys_rubley":{ "fact_q1.total":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_iyun_iyun_v_tys_rubley" "accessorKey":"fact_q1.total"
}, },
"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley":{ "fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley" "accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley"
}, },
"fakticheskie_raskhody_za_iii_kv_2026_goda_iyul_iyul_v_tys_rubley":{ "fact_q2.apr":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_iyul_iyul_v_tys_rubley" "accessorKey":"fact_q2.apr"
}, },
"fakticheskie_raskhody_za_iii_kv_2026_goda_avgust_avgust_v_tys_rubley":{ "fact_q2.may":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_avgust_avgust_v_tys_rubley" "accessorKey":"fact_q2.may"
}, },
"fakticheskie_raskhody_za_iii_kv_2026_goda_sentyabr_sentyabr_v_tys_rubley":{ "fact_q2.jun":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_sentyabr_sentyabr_v_tys_rubley" "accessorKey":"fact_q2.jun"
}, },
"fakticheskie_raskhody_za_iii_kv_2026_goda_itog_iii_kv_itog_iii_kv_v_tys_rubley":{ "fact_q2.total":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_itog_iii_kv_itog_iii_kv_v_tys_rubley" "accessorKey":"fact_q2.total"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley":{ "fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley" "accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_noyabr_noyabr_v_tys_rubley":{ "fact_q3.jul":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_noyabr_noyabr_v_tys_rubley" "accessorKey":"fact_q3.jul"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_dekabr_dekabr_v_tys_rubley":{ "fact_q3.aug":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_dekabr_dekabr_v_tys_rubley" "accessorKey":"fact_q3.aug"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_spod_spod_v_tys_rubley":{ "fact_q3.sep":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_spod_spod_v_tys_rubley" "accessorKey":"fact_q3.sep"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_itog_iv_kv_itog_iv_kv_v_tys_rubley":{ "fact_q3.total":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_itog_iv_kv_itog_iv_kv_v_tys_rubley" "accessorKey":"fact_q3.total"
} }
}, },
"columns":[ "columns":[
@ -137,10 +137,17 @@
"accessorKey":"pp_pp_pp", "accessorKey":"pp_pp_pp",
"columns":[ "columns":[
{ {
"header":"№ п/п", "header":"",
"accessorKey":"pp_pp_pp_pp", "accessorKey":"pp_pp_pp_field",
"columnLetter":"C",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#DDDDDD",
"color":"#000000"
}
}
} }
] ]
} }
@ -168,8 +175,9 @@
"columns":[ "columns":[
{ {
"header":"(заполняется авто из табл. \"INFO\" в зависимости от выбранного объекта)", "header":"(заполняется авто из табл. \"INFO\" в зависимости от выбранного объекта)",
"accessorKey":"adres_arenduemogo_pomescheniya_adres_arenduemogo_pomescheniya_adres_arenduemogo_pomescheniya_zapolnyaetsya_avto_iz_tabl_info_v_zavisimosti_ot_vybrannogo_obekta", "accessorKey":"address",
"size":150, "columnLetter":"D",
"size":700,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -204,8 +212,9 @@
"columns":[ "columns":[
{ {
"header":"(необходимо выбрать из списка)", "header":"(необходимо выбрать из списка)",
"accessorKey":"obekt_obekt_obekt_neobkhodimo_vybrat_iz_spiska", "accessorKey":"object_type",
"size":150, "columnLetter":"I",
"size":300,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -240,7 +249,8 @@
"columns":[ "columns":[
{ {
"header":"в кв.м.", "header":"в кв.м.",
"accessorKey":"arenduemaya_ploschad_arenduemaya_ploschad_arenduemaya_ploschad_v_kvm", "accessorKey":"rented_area",
"columnLetter":"J",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -276,8 +286,9 @@
"columns":[ "columns":[
{ {
"header":"в формате \"месяц.год\"", "header":"в формате \"месяц.год\"",
"accessorKey":"srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_v_formate_mesyatsgod", "accessorKey":"contract_end_date",
"size":150, "columnLetter":"L",
"size":210,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -312,7 +323,8 @@
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"nomer_dogovora_nomer_dogovora_nomer_dogovora_field", "accessorKey":"contract_number",
"columnLetter":"N",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -349,6 +361,7 @@
{ {
"header":"", "header":"",
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field", "accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field",
"columnLetter":"O",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -378,7 +391,8 @@
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_ii_kvartal_ii_kvartal_field", "accessorKey":"plan.q1",
"columnLetter":"P",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -402,7 +416,8 @@
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_iii_kvartal_iii_kvartal_field", "accessorKey":"plan.q2",
"columnLetter":"Q",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -426,7 +441,8 @@
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_iv_kvartal_iv_kvartal_field", "accessorKey":"plan.q3",
"columnLetter":"R",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -461,10 +477,17 @@
"accessorKey":"kommentariy_kommentariy_kommentariy", "accessorKey":"kommentariy_kommentariy_kommentariy",
"columns":[ "columns":[
{ {
"header":"Комментарий", "header":"",
"accessorKey":"kommentariy_kommentariy_kommentariy_kommentariy", "accessorKey":"plan.q4",
"columnLetter":"S",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#DDDDDD",
"color":"#000000"
}
}
} }
] ]
} }
@ -493,6 +516,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_yanvar_yanvar_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_yanvar_yanvar_v_tys_rubley",
"columnLetter":"W",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -523,6 +547,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_fevral_fevral_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_fevral_fevral_v_tys_rubley",
"columnLetter":"X",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -547,6 +572,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_mart_mart_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_mart_mart_v_tys_rubley",
"columnLetter":"Y",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -570,7 +596,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_itog_i_kv_itog_i_kv_v_tys_rubley", "accessorKey":"fact_q1.jan",
"columnLetter":"Z",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -606,7 +633,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_aprel_aprel_v_tys_rubley", "accessorKey":"fact_q1.feb",
"columnLetter":"AA",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -636,7 +664,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_may_may_v_tys_rubley", "accessorKey":"fact_q1.mar",
"columnLetter":"AB",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -660,7 +689,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_iyun_iyun_v_tys_rubley", "accessorKey":"fact_q1.total",
"columnLetter":"AC",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -685,6 +715,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley",
"columnLetter":"AD",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -720,7 +751,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_iyul_iyul_v_tys_rubley", "accessorKey":"fact_q2.apr",
"columnLetter":"AE",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -750,7 +782,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_avgust_avgust_v_tys_rubley", "accessorKey":"fact_q2.may",
"columnLetter":"AF",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -774,7 +807,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_sentyabr_sentyabr_v_tys_rubley", "accessorKey":"fact_q2.jun",
"columnLetter":"AG",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -798,7 +832,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_itog_iii_kv_itog_iii_kv_v_tys_rubley", "accessorKey":"fact_q2.total",
"columnLetter":"AH",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -835,6 +870,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley",
"columnLetter":"AI",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -864,7 +900,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_noyabr_noyabr_v_tys_rubley", "accessorKey":"fact_q3.jul",
"columnLetter":"AJ",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -888,7 +925,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_dekabr_dekabr_v_tys_rubley", "accessorKey":"fact_q3.aug",
"columnLetter":"AK",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -912,7 +950,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_spod_spod_v_tys_rubley", "accessorKey":"fact_q3.sep",
"columnLetter":"AL",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -936,7 +975,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_itog_iv_kv_itog_iv_kv_v_tys_rubley", "accessorKey":"fact_q3.total",
"columnLetter":"AM",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }

View File

@ -10,45 +10,45 @@
export const config = { export const config = {
"config":{ "config":{
"colors":{ "colors":{
"pp_pp_pp_pp":{ "pp_pp_pp_field":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"pp_pp_pp_pp" "accessorKey":"pp_pp_pp_field"
}, },
"adres_okhranyaemogo_obekta_adres_okhranyaemogo_obekta_adres_okhranyaemogo_obekta_zapolnyaetsya_avto_iz_tabl_info_v_zavisimosti_ot_vybrannogo_obekta":{ "address":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"adres_okhranyaemogo_obekta_adres_okhranyaemogo_obekta_adres_okhranyaemogo_obekta_zapolnyaetsya_avto_iz_tabl_info_v_zavisimosti_ot_vybrannogo_obekta" "accessorKey":"address"
}, },
"obekt_obekt_obekt_neobkhodimo_vybrat_iz_spiska":{ "object_type":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"obekt_obekt_obekt_neobkhodimo_vybrat_iz_spiska" "accessorKey":"object_type"
}, },
"nomer_dogovora_nomer_dogovora_nomer_dogovora_field":{ "contract_number":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"nomer_dogovora_nomer_dogovora_nomer_dogovora_field" "accessorKey":"contract_number"
}, },
"srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_v_formate_mesyatsgod":{ "contract_end_date":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_v_formate_mesyatsgod" "accessorKey":"contract_end_date"
}, },
"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field":{ "planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field" "accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field"
}, },
"planiruemaya_summa_raskhodov_na_2026_god_ii_kvartal_ii_kvartal_field":{ "plan.q1":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_ii_kvartal_ii_kvartal_field" "accessorKey":"plan.q1"
}, },
"planiruemaya_summa_raskhodov_na_2026_god_iii_kvartal_iii_kvartal_field":{ "plan.q2":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_iii_kvartal_iii_kvartal_field" "accessorKey":"plan.q2"
}, },
"planiruemaya_summa_raskhodov_na_2026_god_iv_kvartal_iv_kvartal_field":{ "plan.q3":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_iv_kvartal_iv_kvartal_field" "accessorKey":"plan.q3"
}, },
"kommentariy_kommentariy_kommentariy_kommentariy":{ "plan.q4":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"kommentariy_kommentariy_kommentariy_kommentariy" "accessorKey":"plan.q4"
}, },
"fakticheskie_raskhody_za_i_kv_2026_goda_yanvar_yanvar_v_tys_rubley":{ "fakticheskie_raskhody_za_i_kv_2026_goda_yanvar_yanvar_v_tys_rubley":{
"color_type":whiteColumn, "color_type":whiteColumn,
@ -62,61 +62,61 @@
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_mart_mart_v_tys_rubley" "accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_mart_mart_v_tys_rubley"
}, },
"fakticheskie_raskhody_za_i_kv_2026_goda_itog_i_kv_itog_i_kv_v_tys_rubley":{ "fact_q1.jan":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_itog_i_kv_itog_i_kv_v_tys_rubley" "accessorKey":"fact_q1.jan"
}, },
"fakticheskie_raskhody_za_ii_kv_2026_goda_aprel_aprel_v_tys_rubley":{ "fact_q1.feb":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_aprel_aprel_v_tys_rubley" "accessorKey":"fact_q1.feb"
}, },
"fakticheskie_raskhody_za_ii_kv_2026_goda_may_may_v_tys_rubley":{ "fact_q1.mar":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_may_may_v_tys_rubley" "accessorKey":"fact_q1.mar"
}, },
"fakticheskie_raskhody_za_ii_kv_2026_goda_iyun_iyun_v_tys_rubley":{ "fact_q1.total":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_iyun_iyun_v_tys_rubley" "accessorKey":"fact_q1.total"
}, },
"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley":{ "fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley" "accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley"
}, },
"fakticheskie_raskhody_za_iii_kv_2026_goda_iyul_iyul_v_tys_rubley":{ "fact_q2.apr":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_iyul_iyul_v_tys_rubley" "accessorKey":"fact_q2.apr"
}, },
"fakticheskie_raskhody_za_iii_kv_2026_goda_avgust_avgust_v_tys_rubley":{ "fact_q2.may":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_avgust_avgust_v_tys_rubley" "accessorKey":"fact_q2.may"
}, },
"fakticheskie_raskhody_za_iii_kv_2026_goda_sentyabr_sentyabr_v_tys_rubley":{ "fact_q2.jun":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_sentyabr_sentyabr_v_tys_rubley" "accessorKey":"fact_q2.jun"
}, },
"fakticheskie_raskhody_za_iii_kv_2026_goda_itog_iii_kv_itog_iii_kv_v_tys_rubley":{ "fact_q2.total":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_itog_iii_kv_itog_iii_kv_v_tys_rubley" "accessorKey":"fact_q2.total"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley":{ "fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley" "accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_noyabr_noyabr_v_tys_rubley":{ "fact_q3.jul":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_noyabr_noyabr_v_tys_rubley" "accessorKey":"fact_q3.jul"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_dekabr_dekabr_v_tys_rubley":{ "fact_q3.aug":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_dekabr_dekabr_v_tys_rubley" "accessorKey":"fact_q3.aug"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_spod_spod_v_tys_rubley":{ "fact_q3.sep":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_spod_spod_v_tys_rubley" "accessorKey":"fact_q3.sep"
}, },
"fakticheskie_raskhody_za_iv_kv_2026_goda_itog_iv_kv_itog_iv_kv_v_tys_rubley":{ "fact_q3.total":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_itog_iv_kv_itog_iv_kv_v_tys_rubley" "accessorKey":"fact_q3.total"
} }
}, },
"columns":[ "columns":[
@ -133,10 +133,17 @@
"accessorKey":"pp_pp_pp", "accessorKey":"pp_pp_pp",
"columns":[ "columns":[
{ {
"header":"№ п/п", "header":"",
"accessorKey":"pp_pp_pp_pp", "accessorKey":"pp_pp_pp_field",
"columnLetter":"B",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#DDDDDD",
"color":"#000000"
}
}
} }
] ]
} }
@ -164,8 +171,9 @@
"columns":[ "columns":[
{ {
"header":"(заполняется авто из табл. \"INFO\" в зависимости от выбранного объекта)", "header":"(заполняется авто из табл. \"INFO\" в зависимости от выбранного объекта)",
"accessorKey":"adres_okhranyaemogo_obekta_adres_okhranyaemogo_obekta_adres_okhranyaemogo_obekta_zapolnyaetsya_avto_iz_tabl_info_v_zavisimosti_ot_vybrannogo_obekta", "accessorKey":"address",
"size":150, "columnLetter":"C",
"size":700,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -200,8 +208,9 @@
"columns":[ "columns":[
{ {
"header":"(необходимо выбрать из списка)", "header":"(необходимо выбрать из списка)",
"accessorKey":"obekt_obekt_obekt_neobkhodimo_vybrat_iz_spiska", "accessorKey":"object_type",
"size":150, "columnLetter":"H",
"size":300,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -236,7 +245,8 @@
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"nomer_dogovora_nomer_dogovora_nomer_dogovora_field", "accessorKey":"contract_number",
"columnLetter":"I",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -272,8 +282,9 @@
"columns":[ "columns":[
{ {
"header":"в формате \"месяц.год\"", "header":"в формате \"месяц.год\"",
"accessorKey":"srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_srok_okonchaniya_dogovora_v_formate_mesyatsgod", "accessorKey":"contract_end_date",
"size":150, "columnLetter":"J",
"size":210,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -309,6 +320,7 @@
{ {
"header":"", "header":"",
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field", "accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_i_kvartal_i_kvartal_field",
"columnLetter":"M",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -338,7 +350,8 @@
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_ii_kvartal_ii_kvartal_field", "accessorKey":"plan.q1",
"columnLetter":"N",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -362,7 +375,8 @@
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_iii_kvartal_iii_kvartal_field", "accessorKey":"plan.q2",
"columnLetter":"O",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -386,7 +400,8 @@
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"planiruemaya_summa_raskhodov_na_2026_god_iv_kvartal_iv_kvartal_field", "accessorKey":"plan.q3",
"columnLetter":"P",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -421,10 +436,17 @@
"accessorKey":"kommentariy_kommentariy_kommentariy", "accessorKey":"kommentariy_kommentariy_kommentariy",
"columns":[ "columns":[
{ {
"header":"Комментарий", "header":"",
"accessorKey":"kommentariy_kommentariy_kommentariy_kommentariy", "accessorKey":"plan.q4",
"columnLetter":"Q",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#DDDDDD",
"color":"#000000"
}
}
} }
] ]
} }
@ -453,6 +475,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_yanvar_yanvar_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_yanvar_yanvar_v_tys_rubley",
"columnLetter":"U",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -483,6 +506,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_fevral_fevral_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_fevral_fevral_v_tys_rubley",
"columnLetter":"V",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -507,6 +531,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_mart_mart_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_mart_mart_v_tys_rubley",
"columnLetter":"W",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -530,7 +555,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_i_kv_2026_goda_itog_i_kv_itog_i_kv_v_tys_rubley", "accessorKey":"fact_q1.jan",
"columnLetter":"X",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -566,7 +592,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_aprel_aprel_v_tys_rubley", "accessorKey":"fact_q1.feb",
"columnLetter":"Y",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -596,7 +623,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_may_may_v_tys_rubley", "accessorKey":"fact_q1.mar",
"columnLetter":"Z",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -620,7 +648,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_iyun_iyun_v_tys_rubley", "accessorKey":"fact_q1.total",
"columnLetter":"AA",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -645,6 +674,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_ii_kv_2026_goda_itog_ii_kv_itog_ii_kv_v_tys_rubley",
"columnLetter":"AB",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -680,7 +710,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_iyul_iyul_v_tys_rubley", "accessorKey":"fact_q2.apr",
"columnLetter":"AC",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -710,7 +741,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_avgust_avgust_v_tys_rubley", "accessorKey":"fact_q2.may",
"columnLetter":"AD",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -734,7 +766,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_sentyabr_sentyabr_v_tys_rubley", "accessorKey":"fact_q2.jun",
"columnLetter":"AE",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -758,7 +791,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iii_kv_2026_goda_itog_iii_kv_itog_iii_kv_v_tys_rubley", "accessorKey":"fact_q2.total",
"columnLetter":"AF",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -795,6 +829,7 @@
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley", "accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_oktyabr_oktyabr_v_tys_rubley",
"columnLetter":"AG",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -824,7 +859,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_noyabr_noyabr_v_tys_rubley", "accessorKey":"fact_q3.jul",
"columnLetter":"AH",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -848,7 +884,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_dekabr_dekabr_v_tys_rubley", "accessorKey":"fact_q3.aug",
"columnLetter":"AI",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -872,7 +909,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_spod_spod_v_tys_rubley", "accessorKey":"fact_q3.sep",
"columnLetter":"AJ",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -896,7 +934,8 @@
"columns":[ "columns":[
{ {
"header":"в тыс. рублей", "header":"в тыс. рублей",
"accessorKey":"fakticheskie_raskhody_za_iv_kv_2026_goda_itog_iv_kv_itog_iv_kv_v_tys_rubley", "accessorKey":"fact_q3.total",
"columnLetter":"AK",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -14,89 +14,89 @@
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_eslilevsimvb1713b17eslid170stsepitc17_d17c17_field" "accessorKey":"field_eslilevsimvb1713b17eslid170stsepitc17_d17c17_field"
}, },
"kod_razdela_kod_razdela_kod_razdela":{ "section_code":{
"color_type":whiteColumn,
"accessorKey":"kod_razdela_kod_razdela_kod_razdela"
},
"id_stati_id_stati_id_stati":{
"color_type":whiteColumn,
"accessorKey":"id_stati_id_stati_id_stati"
},
"id_gruppy_nomenklatury_id_gruppy_nomenklatury_id_gruppy_nomenklatury":{
"color_type":whiteColumn,
"accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury_id_gruppy_nomenklatury"
},
"naimenovanie_oborudovaniya_naimenovanie_oborudovaniya_naimenovanie_oborudovaniya":{
"color_type":whiteColumn,
"accessorKey":"naimenovanie_oborudovaniya_naimenovanie_oborudovaniya_naimenovanie_oborudovaniya"
},
"60401_60404_vkhodyaschiy_ostatok_kol_vo_sht":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60401_60404_vkhodyaschiy_ostatok_kol_vo_sht" "accessorKey":"section_code"
}, },
"60401_60404_vkhodyaschiy_ostatok_summa_tys_rub":{ "item_id":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60401_60404_vkhodyaschiy_ostatok_summa_tys_rub" "accessorKey":"item_id"
}, },
"60401_60404_fakticheski_priobreteno_v_otchetnom_mesyatse_kol_vo_sht":{ "field_id_gruppy_nomenklatury_field":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60401_60404_fakticheski_priobreteno_v_otchetnom_mesyatse_kol_vo_sht" "accessorKey":"field_id_gruppy_nomenklatury_field"
}, },
"60401_60404_fakticheski_priobreteno_v_otchetnom_mesyatse_summa_tys_rub":{ "equipment_name":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60401_60404_fakticheski_priobreteno_v_otchetnom_mesyatse_summa_tys_rub" "accessorKey":"equipment_name"
}, },
"60401_60404_vybytie_v_otchetnom_mesyatse_kol_vo_sht":{ "b_604.opening_qty":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60401_60404_vybytie_v_otchetnom_mesyatse_kol_vo_sht" "accessorKey":"b_604.opening_qty"
}, },
"60401_60404_vybytie_v_otchetnom_mesyatse_summa_tys_rub":{ "b_604.opening_amt":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60401_60404_vybytie_v_otchetnom_mesyatse_summa_tys_rub" "accessorKey":"b_604.opening_amt"
}, },
"60415_vkhodyaschiy_ostatok_kol_vo_sht":{ "b_604.acquired_qty":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60415_vkhodyaschiy_ostatok_kol_vo_sht" "accessorKey":"b_604.acquired_qty"
}, },
"60415_vkhodyaschiy_ostatok_summa_tys_rub":{ "b_604.acquired_amt":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60415_vkhodyaschiy_ostatok_summa_tys_rub" "accessorKey":"b_604.acquired_amt"
}, },
"60415_fakticheski_priobreteno_v_otchetnom_mesyatse_kol_vo_sht":{ "b_604.disposed_qty":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60415_fakticheski_priobreteno_v_otchetnom_mesyatse_kol_vo_sht" "accessorKey":"b_604.disposed_qty"
}, },
"60415_fakticheski_priobreteno_v_otchetnom_mesyatse_summa_tys_rub":{ "b_604.disposed_amt":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60415_fakticheski_priobreteno_v_otchetnom_mesyatse_summa_tys_rub" "accessorKey":"b_604.disposed_amt"
}, },
"60415_pereneseno_na_bschet_604_kol_vo_sht":{ "b_60415.opening_qty":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60415_pereneseno_na_bschet_604_kol_vo_sht" "accessorKey":"b_60415.opening_qty"
}, },
"60415_pereneseno_na_bschet_604_summa_tys_rub":{ "b_60415.opening_amt":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"60415_pereneseno_na_bschet_604_summa_tys_rub" "accessorKey":"b_60415.opening_amt"
}, },
"itogo_fakticheski_priobreteno_v_otchetnom_mesyatse_tys_rub":{ "b_60415.acquired_qty":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"itogo_fakticheski_priobreteno_v_otchetnom_mesyatse_tys_rub" "accessorKey":"b_60415.acquired_qty"
}, },
"itogo_sredstva_tolko_po_balansuiz_go_so_znakom_tys_rub":{ "b_60415.acquired_amt":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"itogo_sredstva_tolko_po_balansuiz_go_so_znakom_tys_rub" "accessorKey":"b_60415.acquired_amt"
}, },
"itogo_vybytie_v_otchetnom_mesyatse_tys_rub":{ "b_60415.transferred_qty":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"itogo_vybytie_v_otchetnom_mesyatse_tys_rub" "accessorKey":"b_60415.transferred_qty"
}, },
"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_kol_vo_sht":{ "b_60415.transferred_amt":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_kol_vo_sht" "accessorKey":"b_60415.transferred_amt"
}, },
"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_summa_tys_rub":{ "totals.acquired_total":{
"color_type":orangeColumn, "color_type":orangeColumn,
"accessorKey":"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_summa_tys_rub" "accessorKey":"totals.acquired_total"
},
"totals.go_balance_only":{
"color_type":orangeColumn,
"accessorKey":"totals.go_balance_only"
},
"totals.disposed_total":{
"color_type":orangeColumn,
"accessorKey":"totals.disposed_total"
},
"totals.balance_qty":{
"color_type":orangeColumn,
"accessorKey":"totals.balance_qty"
},
"totals.balance_amt":{
"color_type":orangeColumn,
"accessorKey":"totals.balance_amt"
} }
}, },
"columns":[ "columns":[
@ -105,34 +105,34 @@
"accessorKey":"field", "accessorKey":"field",
"columns":[ "columns":[
{ {
"header":" ", "header":"=ЕСЛИ(ЛЕВСИМВ(B17;1)="3";B17;ЕСЛИ(D17<>0;СЦЕПИТЬ(C17;"_";D17);C17))",
"accessorKey":"field_eslilevsimvb1713b17eslid170stsepitc17_d17c17", "accessorKey":"field_eslilevsimvb1713b17eslid170stsepitc17_d17c17",
"columns":[ "columns":[
{ {
"header":"", "header":"",
"accessorKey":"field_eslilevsimvb1713b17eslid170stsepitc17_d17c17_field", "accessorKey":"field_eslilevsimvb1713b17eslid170stsepitc17_d17c17_field",
"columnLetter":"A",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
] ]
}
]
}, },
{ {
"header":"Код раздела", "header":"Код раздела",
"accessorKey":"kod_razdela", "accessorKey":"field_kod_razdela",
"columns":[ "columns":[
{ {
"header":"Код раздела", "header":"",
"accessorKey":"kod_razdela_kod_razdela", "accessorKey":"section_code",
"columns":[ "columnLetter":"B",
{
"header":"Код раздела",
"accessorKey":"kod_razdela_kod_razdela_kod_razdela",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#FABF8F",
"color":"#000000"
}
} }
]
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -144,19 +144,20 @@
}, },
{ {
"header":"ID статьи", "header":"ID статьи",
"accessorKey":"id_stati", "accessorKey":"field_id_stati",
"columns":[ "columns":[
{ {
"header":"ID статьи", "header":"",
"accessorKey":"id_stati_id_stati", "accessorKey":"item_id",
"columns":[ "columnLetter":"C",
{
"header":"ID статьи",
"accessorKey":"id_stati_id_stati_id_stati",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#FABF8F",
"color":"#000000"
}
} }
]
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -168,19 +169,20 @@
}, },
{ {
"header":"ID группы номенклатуры", "header":"ID группы номенклатуры",
"accessorKey":"id_gruppy_nomenklatury", "accessorKey":"field_id_gruppy_nomenklatury",
"columns":[ "columns":[
{ {
"header":"ID группы номенклатуры", "header":"",
"accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury", "accessorKey":"field_id_gruppy_nomenklatury_field",
"columns":[ "columnLetter":"D",
{
"header":"ID группы номенклатуры",
"accessorKey":"id_gruppy_nomenklatury_id_gruppy_nomenklatury_id_gruppy_nomenklatury",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#FABF8F",
"color":"#000000"
}
} }
]
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -192,19 +194,20 @@
}, },
{ {
"header":"Наименование оборудования", "header":"Наименование оборудования",
"accessorKey":"naimenovanie_oborudovaniya", "accessorKey":"field_naimenovanie_oborudovaniya",
"columns":[ "columns":[
{ {
"header":"Наименование оборудования", "header":"",
"accessorKey":"naimenovanie_oborudovaniya_naimenovanie_oborudovaniya", "accessorKey":"equipment_name",
"columns":[ "columnLetter":"E",
{
"header":"Наименование оборудования",
"accessorKey":"naimenovanie_oborudovaniya_naimenovanie_oborudovaniya_naimenovanie_oborudovaniya",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains",
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#FABF8F",
"color":"#000000"
}
} }
]
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -213,6 +216,8 @@
"color":"#000000" "color":"#000000"
} }
} }
}
]
}, },
{ {
"header":"60401, 60404", "header":"60401, 60404",
@ -224,7 +229,8 @@
"columns":[ "columns":[
{ {
"header":"Кол-во (шт.)", "header":"Кол-во (шт.)",
"accessorKey":"60401_60404_vkhodyaschiy_ostatok_kol_vo_sht", "accessorKey":"b_604.opening_qty",
"columnLetter":"F",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -236,8 +242,9 @@
}, },
{ {
"header":"Сумма (тыс. руб.)", "header":"Сумма (тыс. руб.)",
"accessorKey":"60401_60404_vkhodyaschiy_ostatok_summa_tys_rub", "accessorKey":"b_604.opening_amt",
"size":150, "columnLetter":"G",
"size":170,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -260,7 +267,8 @@
"columns":[ "columns":[
{ {
"header":"Кол-во (шт.)", "header":"Кол-во (шт.)",
"accessorKey":"60401_60404_fakticheski_priobreteno_v_otchetnom_mesyatse_kol_vo_sht", "accessorKey":"b_604.acquired_qty",
"columnLetter":"H",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -272,8 +280,9 @@
}, },
{ {
"header":"Сумма (тыс. руб.)", "header":"Сумма (тыс. руб.)",
"accessorKey":"60401_60404_fakticheski_priobreteno_v_otchetnom_mesyatse_summa_tys_rub", "accessorKey":"b_604.acquired_amt",
"size":150, "columnLetter":"I",
"size":170,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -296,7 +305,8 @@
"columns":[ "columns":[
{ {
"header":"Кол-во (шт.)", "header":"Кол-во (шт.)",
"accessorKey":"60401_60404_vybytie_v_otchetnom_mesyatse_kol_vo_sht", "accessorKey":"b_604.disposed_qty",
"columnLetter":"J",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -308,8 +318,9 @@
}, },
{ {
"header":"Сумма (тыс. руб.)", "header":"Сумма (тыс. руб.)",
"accessorKey":"60401_60404_vybytie_v_otchetnom_mesyatse_summa_tys_rub", "accessorKey":"b_604.disposed_amt",
"size":150, "columnLetter":"K",
"size":170,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -344,7 +355,8 @@
"columns":[ "columns":[
{ {
"header":"Кол-во (шт.)", "header":"Кол-во (шт.)",
"accessorKey":"60415_vkhodyaschiy_ostatok_kol_vo_sht", "accessorKey":"b_60415.opening_qty",
"columnLetter":"L",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -356,8 +368,9 @@
}, },
{ {
"header":"Сумма (тыс. руб.)", "header":"Сумма (тыс. руб.)",
"accessorKey":"60415_vkhodyaschiy_ostatok_summa_tys_rub", "accessorKey":"b_60415.opening_amt",
"size":150, "columnLetter":"M",
"size":170,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -380,7 +393,8 @@
"columns":[ "columns":[
{ {
"header":"Кол-во (шт.)", "header":"Кол-во (шт.)",
"accessorKey":"60415_fakticheski_priobreteno_v_otchetnom_mesyatse_kol_vo_sht", "accessorKey":"b_60415.acquired_qty",
"columnLetter":"N",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -392,8 +406,9 @@
}, },
{ {
"header":"Сумма (тыс. руб.)", "header":"Сумма (тыс. руб.)",
"accessorKey":"60415_fakticheski_priobreteno_v_otchetnom_mesyatse_summa_tys_rub", "accessorKey":"b_60415.acquired_amt",
"size":150, "columnLetter":"O",
"size":170,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -416,7 +431,8 @@
"columns":[ "columns":[
{ {
"header":"Кол-во (шт.)", "header":"Кол-во (шт.)",
"accessorKey":"60415_pereneseno_na_bschet_604_kol_vo_sht", "accessorKey":"b_60415.transferred_qty",
"columnLetter":"P",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -428,8 +444,9 @@
}, },
{ {
"header":"Сумма (тыс. руб.)", "header":"Сумма (тыс. руб.)",
"accessorKey":"60415_pereneseno_na_bschet_604_summa_tys_rub", "accessorKey":"b_60415.transferred_amt",
"size":150, "columnLetter":"Q",
"size":170,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -464,7 +481,8 @@
"columns":[ "columns":[
{ {
"header":"тыс. руб.", "header":"тыс. руб.",
"accessorKey":"itogo_fakticheski_priobreteno_v_otchetnom_mesyatse_tys_rub", "accessorKey":"totals.acquired_total",
"columnLetter":"R",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -488,12 +506,13 @@
"columns":[ "columns":[
{ {
"header":"тыс. руб.", "header":"тыс. руб.",
"accessorKey":"itogo_sredstva_tolko_po_balansuiz_go_so_znakom_tys_rub", "accessorKey":"totals.go_balance_only",
"columnLetter":"S",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#FFFFFF", "backgroundColor":"#FF0000",
"color":"#000000" "color":"#000000"
} }
} }
@ -501,7 +520,7 @@
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
"backgroundColor":"#FFFFFF", "backgroundColor":"#FF0000",
"color":"#000000" "color":"#000000"
} }
} }
@ -512,7 +531,8 @@
"columns":[ "columns":[
{ {
"header":"тыс. руб.", "header":"тыс. руб.",
"accessorKey":"itogo_vybytie_v_otchetnom_mesyatse_tys_rub", "accessorKey":"totals.disposed_total",
"columnLetter":"T",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -543,12 +563,13 @@
"accessorKey":"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu", "accessorKey":"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu",
"columns":[ "columns":[
{ {
"header":"ИТОГО основные средства на балансе на отчетную дату", "header":"",
"accessorKey":"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu", "accessorKey":"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_field",
"columns":[ "columns":[
{ {
"header":"Кол-во (шт.)", "header":"Кол-во (шт.)",
"accessorKey":"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_kol_vo_sht", "accessorKey":"totals.balance_qty",
"columnLetter":"U",
"size":150, "size":150,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -560,8 +581,9 @@
}, },
{ {
"header":"Сумма (тыс. руб.)", "header":"Сумма (тыс. руб.)",
"accessorKey":"itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_itogo_osnovnye_sredstva_na_balanse_na_otchetnuyu_datu_summa_tys_rub", "accessorKey":"totals.balance_amt",
"size":150, "columnLetter":"V",
"size":170,
"filterFn":"contains", "filterFn":"contains",
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
"sx":{ "sx":{
@ -570,7 +592,13 @@
} }
} }
} }
] ],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#FABF8F",
"color":"#000000"
}
}
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{

View File

@ -10,81 +10,81 @@
export const config = { export const config = {
"config":{ "config":{
"colors":{ "colors":{
"field_pp_pp_pp":{ "section_code":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_pp_pp_pp" "accessorKey":"section_code"
}, },
"field_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat":{ "name":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat" "accessorKey":"name"
}, },
"field_raskhody_planiruemye_rf_na_2026_god_i_kvartal_i_kvartal":{ "plan.support.q1":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_raskhody_planiruemye_rf_na_2026_god_i_kvartal_i_kvartal" "accessorKey":"plan.support.q1"
}, },
"field_raskhody_planiruemye_rf_na_2026_god_ii_kvartal_ii_kvartal":{ "plan.support.q2":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_raskhody_planiruemye_rf_na_2026_god_ii_kvartal_ii_kvartal" "accessorKey":"plan.support.q2"
}, },
"field_raskhody_planiruemye_rf_na_2026_god_iii_kvartal_iii_kvartal":{ "plan.support.q3":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_raskhody_planiruemye_rf_na_2026_god_iii_kvartal_iii_kvartal" "accessorKey":"plan.support.q3"
}, },
"field_raskhody_planiruemye_rf_na_2026_god_iv_kvartal_iv_kvartal":{ "plan.support.q4":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_raskhody_planiruemye_rf_na_2026_god_iv_kvartal_iv_kvartal" "accessorKey":"plan.support.q4"
}, },
"field_utverzhdennye_bazovye_raskhody_na_2026_god_i_kvartal_i_kvartal":{ "field_utverzhdennye_bazovye_raskhody_na_2026_god_i_kvartal_i_kvartal":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_i_kvartal_i_kvartal" "accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_i_kvartal_i_kvartal"
}, },
"field_utverzhdennye_bazovye_raskhody_na_2026_god_ii_kvartal_ii_kvartal":{ "approved.support.q1":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_ii_kvartal_ii_kvartal" "accessorKey":"approved.support.q1"
}, },
"field_utverzhdennye_bazovye_raskhody_na_2026_god_iii_kvartal_iii_kvartal":{ "approved.support.q2":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_iii_kvartal_iii_kvartal" "accessorKey":"approved.support.q2"
}, },
"field_utverzhdennye_bazovye_raskhody_na_2026_god_iv_kvartal_iv_kvartal":{ "approved.support.q3":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_iv_kvartal_iv_kvartal" "accessorKey":"approved.support.q3"
}, },
"field_fakticheskie_raskhody_za_2026_god_i_kvartal_i_kvartal":{ "approved.support.year":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_fakticheskie_raskhody_za_2026_god_i_kvartal_i_kvartal" "accessorKey":"approved.support.year"
}, },
"field_fakticheskie_raskhody_za_2026_god_ii_kvartal_ii_kvartal":{ "field_fakticheskie_raskhody_za_2026_god_ii_kvartal_ii_kvartal":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_fakticheskie_raskhody_za_2026_god_ii_kvartal_ii_kvartal" "accessorKey":"field_fakticheskie_raskhody_za_2026_god_ii_kvartal_ii_kvartal"
}, },
"field_fakticheskie_raskhody_za_2026_god_iii_kvartal_iii_kvartal":{ "fact.support.q1":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_fakticheskie_raskhody_za_2026_god_iii_kvartal_iii_kvartal" "accessorKey":"fact.support.q1"
}, },
"field_fakticheskie_raskhody_za_2026_god_iv_kvartal_iv_kvartal":{ "fact.support.q2":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_fakticheskie_raskhody_za_2026_god_iv_kvartal_iv_kvartal" "accessorKey":"fact.support.q2"
}, },
"field_skorrektirovannaya_smeta_raskhodov_na_2026_god_ii_kvartal_ii_kvartal":{ "fact.support.q4":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_skorrektirovannaya_smeta_raskhodov_na_2026_god_ii_kvartal_ii_kvartal" "accessorKey":"fact.support.q4"
}, },
"field_skorrektirovannaya_smeta_raskhodov_na_2026_god_iii_kvartal_iii_kvartal":{ "fact.support.year":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"field_skorrektirovannaya_smeta_raskhodov_na_2026_god_iii_kvartal_iii_kvartal" "accessorKey":"fact.support.year"
}, },
"v_tys_rubley_raskhody_planiruemye_rf_na_2026_god_itogopodderzhka_itogopodderzhka":{ "plan.support.year":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"v_tys_rubley_raskhody_planiruemye_rf_na_2026_god_itogopodderzhka_itogopodderzhka" "accessorKey":"plan.support.year"
}, },
"v_tys_rubley_utverzhdennye_bazovye_raskhody_na_2026_god_itogopodderzhka_itogopodderzhka":{ "approved.support.q4":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"v_tys_rubley_utverzhdennye_bazovye_raskhody_na_2026_god_itogopodderzhka_itogopodderzhka" "accessorKey":"approved.support.q4"
}, },
"v_tys_rubley_fakticheskie_raskhody_za_2026_god_itogopodderzhka_itogopodderzhka":{ "fact.support.q3":{
"color_type":whiteColumn, "color_type":whiteColumn,
"accessorKey":"v_tys_rubley_fakticheskie_raskhody_za_2026_god_itogopodderzhka_itogopodderzhka" "accessorKey":"fact.support.q3"
}, },
"v_tys_rubley_skorrektirovannaya_smeta_raskhodov_na_2026_god_iv_kvartal_iv_kvartal":{ "v_tys_rubley_skorrektirovannaya_smeta_raskhodov_na_2026_god_iv_kvartal_iv_kvartal":{
"color_type":whiteColumn, "color_type":whiteColumn,
@ -101,16 +101,23 @@
"accessorKey":"field_pp", "accessorKey":"field_pp",
"columns":[ "columns":[
{ {
"header":"№ п/п", "header":"",
"accessorKey":"field_pp_pp", "accessorKey":"field_pp_field",
"columns":[ "columns":[
{ {
"header":"№ п/п", "header":"",
"accessorKey":"field_pp_pp_pp", "accessorKey":"section_code",
"columnLetter":"B",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
] ],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -125,16 +132,23 @@
"accessorKey":"field_perechen_raskhodov_i_zatrat", "accessorKey":"field_perechen_raskhodov_i_zatrat",
"columns":[ "columns":[
{ {
"header":"Перечень расходов и затрат", "header":"",
"accessorKey":"field_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat", "accessorKey":"field_perechen_raskhodov_i_zatrat_field",
"columns":[ "columns":[
{ {
"header":"Перечень расходов и затрат", "header":"",
"accessorKey":"field_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat_perechen_raskhodov_i_zatrat", "accessorKey":"name",
"columnLetter":"C",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
] ],
"muiTableHeadCellProps":{
"sx":{
"backgroundColor":"#BFBFBF",
"color":"#000000"
}
}
} }
], ],
"muiTableHeadCellProps":{ "muiTableHeadCellProps":{
@ -154,7 +168,8 @@
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"field_raskhody_planiruemye_rf_na_2026_god_i_kvartal_i_kvartal", "accessorKey":"plan.support.q1",
"columnLetter":"D",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -172,7 +187,8 @@
"columns":[ "columns":[
{ {
"header":"II квартал", "header":"II квартал",
"accessorKey":"field_raskhody_planiruemye_rf_na_2026_god_ii_kvartal_ii_kvartal", "accessorKey":"plan.support.q2",
"columnLetter":"E",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -190,7 +206,8 @@
"columns":[ "columns":[
{ {
"header":"III квартал", "header":"III квартал",
"accessorKey":"field_raskhody_planiruemye_rf_na_2026_god_iii_kvartal_iii_kvartal", "accessorKey":"plan.support.q3",
"columnLetter":"F",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -208,7 +225,8 @@
"columns":[ "columns":[
{ {
"header":"IV квартал", "header":"IV квартал",
"accessorKey":"field_raskhody_planiruemye_rf_na_2026_god_iv_kvartal_iv_kvartal", "accessorKey":"plan.support.q4",
"columnLetter":"G",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -239,6 +257,7 @@
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_i_kvartal_i_kvartal", "accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_i_kvartal_i_kvartal",
"columnLetter":"I",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -256,7 +275,8 @@
"columns":[ "columns":[
{ {
"header":"II квартал", "header":"II квартал",
"accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_ii_kvartal_ii_kvartal", "accessorKey":"approved.support.q1",
"columnLetter":"J",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -274,7 +294,8 @@
"columns":[ "columns":[
{ {
"header":"III квартал", "header":"III квартал",
"accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_iii_kvartal_iii_kvartal", "accessorKey":"approved.support.q2",
"columnLetter":"K",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -292,7 +313,8 @@
"columns":[ "columns":[
{ {
"header":"IV квартал", "header":"IV квартал",
"accessorKey":"field_utverzhdennye_bazovye_raskhody_na_2026_god_iv_kvartal_iv_kvartal", "accessorKey":"approved.support.q3",
"columnLetter":"L",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -322,7 +344,8 @@
"columns":[ "columns":[
{ {
"header":"I квартал", "header":"I квартал",
"accessorKey":"field_fakticheskie_raskhody_za_2026_god_i_kvartal_i_kvartal", "accessorKey":"approved.support.year",
"columnLetter":"N",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -341,6 +364,7 @@
{ {
"header":"II квартал", "header":"II квартал",
"accessorKey":"field_fakticheskie_raskhody_za_2026_god_ii_kvartal_ii_kvartal", "accessorKey":"field_fakticheskie_raskhody_za_2026_god_ii_kvartal_ii_kvartal",
"columnLetter":"O",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -358,7 +382,8 @@
"columns":[ "columns":[
{ {
"header":"III квартал", "header":"III квартал",
"accessorKey":"field_fakticheskie_raskhody_za_2026_god_iii_kvartal_iii_kvartal", "accessorKey":"fact.support.q1",
"columnLetter":"P",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -376,7 +401,8 @@
"columns":[ "columns":[
{ {
"header":"IV квартал", "header":"IV квартал",
"accessorKey":"field_fakticheskie_raskhody_za_2026_god_iv_kvartal_iv_kvartal", "accessorKey":"fact.support.q2",
"columnLetter":"Q",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -406,7 +432,8 @@
"columns":[ "columns":[
{ {
"header":"II квартал", "header":"II квартал",
"accessorKey":"field_skorrektirovannaya_smeta_raskhodov_na_2026_god_ii_kvartal_ii_kvartal", "accessorKey":"fact.support.q4",
"columnLetter":"S",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -424,7 +451,8 @@
"columns":[ "columns":[
{ {
"header":"III квартал", "header":"III квартал",
"accessorKey":"field_skorrektirovannaya_smeta_raskhodov_na_2026_god_iii_kvartal_iii_kvartal", "accessorKey":"fact.support.year",
"columnLetter":"T",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -466,7 +494,8 @@
"columns":[ "columns":[
{ {
"header":"ИТОГОПоддержка", "header":"ИТОГОПоддержка",
"accessorKey":"v_tys_rubley_raskhody_planiruemye_rf_na_2026_god_itogopodderzhka_itogopodderzhka", "accessorKey":"plan.support.year",
"columnLetter":"H",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -490,7 +519,8 @@
"columns":[ "columns":[
{ {
"header":"ИТОГОПоддержка", "header":"ИТОГОПоддержка",
"accessorKey":"v_tys_rubley_utverzhdennye_bazovye_raskhody_na_2026_god_itogopodderzhka_itogopodderzhka", "accessorKey":"approved.support.q4",
"columnLetter":"M",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -514,7 +544,8 @@
"columns":[ "columns":[
{ {
"header":"ИТОГОПоддержка", "header":"ИТОГОПоддержка",
"accessorKey":"v_tys_rubley_fakticheskie_raskhody_za_2026_god_itogopodderzhka_itogopodderzhka", "accessorKey":"fact.support.q3",
"columnLetter":"R",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }
@ -539,6 +570,7 @@
{ {
"header":"IV квартал", "header":"IV квартал",
"accessorKey":"v_tys_rubley_skorrektirovannaya_smeta_raskhodov_na_2026_god_iv_kvartal_iv_kvartal", "accessorKey":"v_tys_rubley_skorrektirovannaya_smeta_raskhodov_na_2026_god_iv_kvartal_iv_kvartal",
"columnLetter":"U",
"size":150, "size":150,
"filterFn":"contains" "filterFn":"contains"
} }

View File

@ -7,7 +7,6 @@ import React, {
useEffect, useEffect,
} from "react"; } from "react";
import { useWebSocket } from "../hooks/useWebSocket"; import { useWebSocket } from "../hooks/useWebSocket";
import { useCellLocks } from "../hooks/useCellLocks";
import { toast } from "react-toastify"; import { toast } from "react-toastify";
const RealtimeContext = createContext(null); const RealtimeContext = createContext(null);
@ -28,7 +27,9 @@ export const RealtimeProvider = ({
userId, userId,
}) => { }) => {
// Формируем URL (кастомные секреты на фронте пока недоступны, делаем через REACT_APP_ROOT_PATH) // Формируем 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}` : ""}`; console.log() 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 [lockedCells, setLockedCells] = useState([]);
const handleMessage = useCallback((data) => { const handleMessage = useCallback((data) => {
// Обработка ошибок // Обработка ошибок
if (data.error) { if (data.error) {
@ -38,8 +39,21 @@ export const RealtimeProvider = ({
} }
switch (data.event) { switch (data.event) {
case "cell_edit_start":
console.log("Cell edit started:", data);
if (onCellEditStartRef.current) {
onCellEditStartRef.current(data);
}
break;
case "cell_edit_end":
console.log("Cell edit ended:", data);
if ( onCellEditEndRef.current) {
onCellEditEndRef.current(data);
}
break;
case "cell_updated": case "cell_updated":
console.log(onCellUpdateRef.current);
if (data.result && onCellUpdateRef.current) { if (data.result && onCellUpdateRef.current) {
const updatedCells = Array.isArray(data.result) const updatedCells = Array.isArray(data.result)
? data.result ? data.result
@ -69,19 +83,14 @@ export const RealtimeProvider = ({
wsUrl, wsUrl,
handleMessage, handleMessage,
); );
const {
isCellLocked,
tryLockCell,
unlockCell,
getCellLockInfo,
releaseAllLocks,
} = useCellLocks(null);
const onCellUpdateRef = useRef(null); const onCellUpdateRef = useRef(null);
const onRowAddRef = useRef(null); const onRowAddRef = useRef(null);
const onRowDeleteRef = useRef(null); const onRowDeleteRef = useRef(null);
const onErrorRef = useRef(null); const onErrorRef = useRef(null);
const onAuthSuccessRef = useRef(null); const onAuthSuccessRef = useRef(null);
const onCellEditStartRef = useRef(null);
const onCellEditEndRef = useRef(null);
const authAttemptedRef = useRef(false); const authAttemptedRef = useRef(false);
const reconnectTimerRef = useRef(null); const reconnectTimerRef = useRef(null);
@ -134,6 +143,70 @@ export const RealtimeProvider = ({
} }
}, [isConnected]); }, [isConnected]);
// Функция для начала редактирования ячейки
const startEditing = useCallback(
async (row, column) => {
const columnId = column.id;
const rowId = row.id;
if (!isConnected) {
onErrorRef.current?.("WebSocket не подключен");
return false;
}
const lineId = row.id || null;
const colId = columnId.slice(5); // убираем префикс "data."
const message = {
event: "cell_edit_start",
data: {
line_id: lineId,
column: colId,
},
};
const sent = sendMessage(message);
if (!sent) {
return false;
}
return true;
},
[isConnected, sendMessage],
);
// Функция для завершения редактирования ячейки
const endEditing = useCallback(
async (row, column) => {
const columnId = column.id;
const rowId = row.id;
if (!isConnected) {
onErrorRef.current?.("WebSocket не подключен");
return false;
}
const lineId = row.id || null;
const colId = columnId.slice(5);
const message = {
event: "cell_edit_end",
data: {
line_id: lineId,
column: colId,
},
};
const sent = sendMessage(message);
if (!sent) {
return false;
}
return true;
},
[isConnected, sendMessage],
);
const updateCell = useCallback( const updateCell = useCallback(
async (row, column, value) => { async (row, column, value) => {
const columnId = column.id; const columnId = column.id;
@ -180,7 +253,7 @@ export const RealtimeProvider = ({
}; };
return sendMessage(message); return sendMessage(message);
}, },
[isConnected, sendMessage], [isConnected, sendMessage, sheetName, formId, direction],
); );
const deleteRow = useCallback( const deleteRow = useCallback(
@ -200,7 +273,7 @@ export const RealtimeProvider = ({
return sendMessage(message); return sendMessage(message);
}, },
[isConnected, sendMessage], [isConnected, sendMessage, sheetName, formId, direction],
); );
const subscribeToCellUpdates = useCallback((callback) => { const subscribeToCellUpdates = useCallback((callback) => {
@ -238,6 +311,20 @@ export const RealtimeProvider = ({
}; };
}, []); }, []);
const subscribeToCellEditStart = useCallback((callback) => {
onCellEditStartRef.current = callback;
return () => {
onCellEditStartRef.current = null;
};
}, []);
const subscribeToCellEditEnd = useCallback((callback) => {
onCellEditEndRef.current = callback;
return () => {
onCellEditEndRef.current = null;
};
}, []);
const retryLogin = useCallback(() => { const retryLogin = useCallback(() => {
if (isConnected) { if (isConnected) {
authAttemptedRef.current = false; authAttemptedRef.current = false;
@ -250,19 +337,21 @@ export const RealtimeProvider = ({
value={{ value={{
isConnected, isConnected,
error: lastError, error: lastError,
startEditing,
endEditing,
updateCell, updateCell,
addRow, addRow,
deleteRow, deleteRow,
isCellLocked: (rowId, columnId) =>
isCellLocked(rowId, columnId, userId),
getCellLockInfo: (rowId, columnId) => getCellLockInfo(rowId, columnId),
tryLockCell: (rowId, columnId) => tryLockCell(rowId, columnId, userId),
subscribeToCellUpdates,
subscribeToRowAdds, subscribeToRowAdds,
subscribeToRowDeletes, subscribeToRowDeletes,
subscribeToErrors, subscribeToErrors,
subscribeToAuthSuccess, subscribeToAuthSuccess,
subscribeToCellEditStart,
subscribeToCellEditEnd,
subscribeToCellUpdates,
retryLogin, retryLogin,
lockedCells,
setLockedCells,
releaseAllLocks: () => releaseAllLocks(userId), releaseAllLocks: () => releaseAllLocks(userId),
}} }}
> >

View File

@ -1,122 +0,0 @@
import { useState, useCallback, useRef, useEffect } from 'react';
export const useCellLocks = (userId, lockTimeout = 30000) => {
const [lockedCells, setLockedCells] = useState(new Map());
const lockTimersRef = useRef(new Map());
const getCellKey = (rowId, columnId) => `${rowId}_${columnId}`;
const lockCell = useCallback((rowId, columnId, lockingUserId) => {
const cellKey = getCellKey(rowId, columnId);
setLockedCells(prev => {
const newLocks = new Map(prev);
const existingLock = newLocks.get(cellKey);
if (existingLock && existingLock.userId !== lockingUserId) {
return prev; // Cell already locked by another user
}
newLocks.set(cellKey, {
userId: lockingUserId,
lockedAt: Date.now(),
rowId,
columnId
});
return newLocks;
});
return true;
}, []);
const unlockCell = useCallback((rowId, columnId, unlockingUserId) => {
const cellKey = getCellKey(rowId, columnId);
setLockedCells(prev => {
const newLocks = new Map(prev);
const lock = newLocks.get(cellKey);
if (lock && lock.userId === unlockingUserId) {
newLocks.delete(cellKey);
}
return newLocks;
});
// Clear timer if exists
if (lockTimersRef.current.has(cellKey)) {
clearTimeout(lockTimersRef.current.get(cellKey));
lockTimersRef.current.delete(cellKey);
}
}, []);
const tryLockCell = useCallback((rowId, columnId, currentUserId) => {
const cellKey = getCellKey(rowId, columnId);
const existingLock = lockedCells.get(cellKey);
if (existingLock && existingLock.userId !== currentUserId) {
return false; // Cell is locked by another user
}
if (!existingLock) {
lockCell(rowId, columnId, currentUserId);
// Auto-unlock after timeout
const timer = setTimeout(() => {
unlockCell(rowId, columnId, currentUserId);
}, lockTimeout);
lockTimersRef.current.set(cellKey, timer);
}
return true;
}, [lockedCells, lockCell, unlockCell, lockTimeout]);
const releaseAllLocks = useCallback((userId) => {
setLockedCells(prev => {
const newLocks = new Map(prev);
for (const [key, lock] of newLocks.entries()) {
if (lock.userId === userId) {
newLocks.delete(key);
if (lockTimersRef.current.has(key)) {
clearTimeout(lockTimersRef.current.get(key));
lockTimersRef.current.delete(key);
}
}
}
return newLocks;
});
}, []);
const isCellLocked = useCallback((rowId, columnId, currentUserId) => {
const cellKey = getCellKey(rowId, columnId);
const lock = lockedCells.get(cellKey);
return lock && lock.userId !== currentUserId;
}, [lockedCells]);
const getCellLockInfo = useCallback((rowId, columnId) => {
const cellKey = getCellKey(rowId, columnId);
return lockedCells.get(cellKey);
}, [lockedCells]);
useEffect(() => {
return () => {
// Clear all timers on unmount
for (const timer of lockTimersRef.current.values()) {
clearTimeout(timer);
}
lockTimersRef.current.clear();
};
}, []);
return {
lockedCells,
lockCell,
unlockCell,
tryLockCell,
isCellLocked,
getCellLockInfo,
releaseAllLocks
};
};

View File

@ -8,6 +8,7 @@ const useRealtimeData = (formId, sheetName, direction) => {
const [isConnected, setIsConnected] = useState(false); const [isConnected, setIsConnected] = useState(false);
const [error, setError] = useState(null); const [error, setError] = useState(null);
const [isLoading, setIsLoading] = useState(true); const [isLoading, setIsLoading] = useState(true);
const [editingCells, setEditingCells] = useState({});
const dataRef = useRef(data); const dataRef = useRef(data);
const { const {
@ -17,9 +18,11 @@ const useRealtimeData = (formId, sheetName, direction) => {
subscribeToRowAdds, subscribeToRowAdds,
subscribeToRowDeletes, subscribeToRowDeletes,
subscribeToErrors, subscribeToErrors,
subscribeToCellEditStart,
subscribeToCellEditEnd,
setLockedCells,
} = useRealtime(); } = useRealtime();
// Ваша существующая функция форматирования
const formatedToSubRows = useCallback((depth, oldData) => { const formatedToSubRows = useCallback((depth, oldData) => {
if (depth === 0) return oldData; if (depth === 0) return oldData;
@ -204,6 +207,32 @@ const useRealtimeData = (formId, sheetName, direction) => {
}); });
}); });
// Обработчик начала редактирования ячейки
const unsubscribeCellEditStart = subscribeToCellEditStart((data) => {
const dataCell = data.data;
dataCell.column = "data." + dataCell.column;
if (data.is_self) {
setEditingCells(data.data);
return;
}
const { line_id, column } = dataCell;
const cellKey = `${line_id}_${column}`;
// Сохраняем информацию о том, кто начал редактирование
setLockedCells((prev) => [...prev, cellKey]);
});
// Обработчик завершения редактирования ячейки
const unsubscribeCellEditEnd = subscribeToCellEditEnd((data) => {
setEditingCells(null);
const dataCell = data.data;
dataCell.column = "data." + dataCell.column;
const { line_id, column } = dataCell;
const cellKey = `${line_id}_${column}`;
setLockedCells((prev) => prev.filter((c) => c !== cellKey));
});
const unsubscribeErrors = subscribeToErrors((err) => { const unsubscribeErrors = subscribeToErrors((err) => {
console.error("WebSocket error:", err); console.error("WebSocket error:", err);
setError(err); setError(err);
@ -215,6 +244,8 @@ const useRealtimeData = (formId, sheetName, direction) => {
unsubscribeRowAdds(); unsubscribeRowAdds();
unsubscribeRowDeletes(); unsubscribeRowDeletes();
unsubscribeErrors(); unsubscribeErrors();
unsubscribeCellEditStart();
unsubscribeCellEditEnd();
}; };
}, [ }, [
wsConnected, wsConnected,
@ -222,6 +253,8 @@ const useRealtimeData = (formId, sheetName, direction) => {
subscribeToRowAdds, subscribeToRowAdds,
subscribeToRowDeletes, subscribeToRowDeletes,
subscribeToErrors, subscribeToErrors,
subscribeToCellEditStart,
subscribeToCellEditEnd,
formatedToSubRows, formatedToSubRows,
]); ]);
@ -247,10 +280,10 @@ const useRealtimeData = (formId, sheetName, direction) => {
return { return {
data, data,
setData, setData,
// setData: updateData,
isConnected, isConnected,
isLoading, isLoading,
error, error,
editingCells,
}; };
}; };

View File

@ -97,22 +97,13 @@ export const getTableColumns = ({
EditCell, EditCell,
columnsConfig, columnsConfig,
onCellUpdateError, onCellUpdateError,
onCellNumberClick onCellNumberClick,
}) => { }) => {
const columnColors = { ...columnsConfig.colors }; const columnColors = { ...columnsConfig.colors };
const columns = [...columnsConfig.columns]; const columns = [...columnsConfig.columns];
const processColumns = (columns, EditCell, Cell) => { const processColumns = (columns, EditCell, Cell) => {
columns.forEach((col) => { columns.forEach((col) => {
if (col.header.length > 15) {
col.size = 250;
}
if(col.header.length >= 20){
col.size = 350;
}
if(col.header.length >= 30){
col.size = 400;
}
col.Cell = ({ cell, table, column, row }) => ( col.Cell = ({ cell, table, column, row }) => (
<Cell <Cell
row={row} row={row}

View File

@ -26,6 +26,7 @@ import { formatDate } from '../../utils/formatDate';
import { IconWithContent } from './IconWithContent'; import { IconWithContent } from './IconWithContent';
import { Chip } from '../styles/StyledChip'; import { Chip } from '../styles/StyledChip';
import { ExportButton } from '../common/Buttons/ButtonsActions'; import { ExportButton } from '../common/Buttons/ButtonsActions';
import { FROM_TYPE_TRANSLATE } from '../../constants';
const TaskCard = styled.div` const TaskCard = styled.div`
width: 26.8rem; width: 26.8rem;
@ -99,15 +100,9 @@ export const TaskCardComponent = ({
const [isEditModalOpen, setEditModalOpen] = useState(false); const [isEditModalOpen, setEditModalOpen] = useState(false);
const [editedTitle, setEditedTitle] = useState(''); const [editedTitle, setEditedTitle] = useState('');
const [currentTitle, setCurrentTitle] = useState(form_type_code ||''); const [currentTitle, setCurrentTitle] = useState(FROM_TYPE_TRANSLATE[form_type_code] ||'');
const [isChecked, setIsChecked] = useState(false); const [isChecked, setIsChecked] = useState(false);
const initialTitle = form_type_code ||'';
useEffect(() => {
setCurrentTitle(initialTitle);
}, [initialTitle]);
useEffect(() => { useEffect(() => {
setIsChecked(false); setIsChecked(false);
}, [exportMode]); }, [exportMode]);
@ -202,7 +197,7 @@ export const TaskCardComponent = ({
{!isForm && !exportMode && ( {!isForm && !exportMode && (
<ExportButton onClick={handleExportTask} /> <ExportButton onClick={handleExportTask} />
)} )}
<Edit onClick={handleOpenEdit} /> {/* <Edit onClick={handleOpenEdit} /> */}
</Stack> </Stack>
</CardHeader> </CardHeader>

View File

@ -36,6 +36,7 @@ export const EDIT_ACCESS_RUSSIAN = {
}; };
export const FORM_TYPE_OPTIONS = ['FORM_1', 'FORM_2', 'FORM_3', 'FORM_4']; export const FORM_TYPE_OPTIONS = ['FORM_1', 'FORM_2', 'FORM_3', 'FORM_4'];
export const FROM_TYPE_TRANSLATE = { 'FORM_1': 'Смета ССП', 'FORM_2': 'Смета РФ', 'FORM_3': 'Программа развитие ПРРС', 'FORM_4': 'Проектная деятельность' };
export const ORG_UNIT_TYPE_OPTIONS = [ export const ORG_UNIT_TYPE_OPTIONS = [
{ value: 'ssp', label: 'ССП' }, { value: 'ssp', label: 'ССП' },

View File

@ -22,13 +22,13 @@ import { ModalCreateProject } from './ModalCreateProject';
import { ExportWithTextButton } from '../../components/common/Buttons/ButtonsActions'; import { ExportWithTextButton } from '../../components/common/Buttons/ButtonsActions';
import { exportSingleForm } from '../../utils/exportForm'; import { exportSingleForm } from '../../utils/exportForm';
import TablesList from '../../components/common/TableList/TableList'; import TablesList from '../../components/common/TableList/TableList';
import { SHEET_NAME } from '../../constants'; import { FROM_TYPE_TRANSLATE, SHEET_NAME } from '../../constants';
const TaskInfo = ({ task }) => { const TaskInfo = ({ task }) => {
const portalContent = ( const portalContent = (
<TaskInfoContainer> <TaskInfoContainer>
<BackButton to="/tasks" /> <BackButton to="/tasks" />
<NameTask>{task.form_type_code}</NameTask> <NameTask>{FROM_TYPE_TRANSLATE[task.form_type_code] || ''}</NameTask>
</TaskInfoContainer> </TaskInfoContainer>
); );