// Начальные координаты
НомерСтроки1 = 2
НомерСтроки2 = 8
НомерСтолбца1 = 1
НомерСтолбца2 = 7
// Заголовок
Header = Data.Range("A1:G1")
Header.Merge
Header.RowHeight = 40
Header.Font.Name = "Courier New"
Header.Font.Size = 12
Header.Value = "ОБРАЩЕНИЯ В ИВЦ"
Header.HorizontalAlignment = -4108
R = 255
G = 255
B = 255
// Цвет для статус ячейки
if State == "В работе"
R = 178
G = 248
B = 195
endif
if State == 'Прекращена'
R = 209
G = 208
B = 232
endif
if State == 'На контроле'
R = 254
G = 254
B = 160
endif
if State == 'Выполнена'
R = 215
G = 215
B = 215
endif
// Результат выполнения
if ExResult == "Д"
ExResult = " [Отправлено на доработку]"
endif
if ExResult == "С"
ExResult = " [Выполнено]"
endif
if ExResult == 'И'
ExResult = " [Передано исполнителю в работу]"
endif
if ExResult == 'Р'
ExResult = " [Принято в работу]"
endif
// Формируем карточку обращения
CellHL = Data.Cells(НомерСтроки1; НомерСтолбца1) // Верхний левый угол
CellBR = Data.Cells(НомерСтроки2; НомерСтолбца2) // Нижний правый угол
SelectionTab = Data.Range(CellHL;CellBR)
SelectionTab.Font.Name = "Arial"
SelectionTab.Font.Size = 8
SelectionTab.HorizontalAlignment = -4108
SelectionTab.VerticalAlignment = -4108
SelectionTab.Borders(7).LineStyle = 1
SelectionTab.Borders(8).LineStyle = 1
SelectionTab.Borders(9).LineStyle = 1
SelectionTab.Borders(10).LineStyle = 1
SelectionTab.Borders(7).Weight = 3
SelectionTab.Borders(8).Weight = 3
SelectionTab.Borders(9).Weight = 3
SelectionTab.Borders(10).Weight = 3
//---------------- Устанавливаем заголовки параметров-------------------------
// {Номер}
Номер = Data.Cells(НомерСтроки1;НомерСтолбца1)
Номер.Font.Bold = True
Номер.Value = "№:"
Номер.Borders(10).LineStyle = 1
Номер.RowHeight = 20
// {Дата создания}
ДатаСоздания = Data.Cells(НомерСтроки1;НомерСтолбца1+2)
ДатаСоздания.Font.Bold = True
ДатаСоздания.Value = "Дата создания:"
ДатаСоздания.Borders(7).LineStyle = 1
ДатаСоздания.Borders(10).LineStyle = 1
// {Инициатор}
Инициатор = Data.Cells(НомерСтроки1;НомерСтолбца1+4)
Инициатор.Font.Bold = True
Инициатор.Value = "Инициатор:"
Инициатор.Borders(7).LineStyle = 1
Инициатор.Borders(10).LineStyle = 1
// {Тема}
Тема = Data.Range("A"&(НомерСтроки1+1)&":F"&(НомерСтроки1+1))
Тема.RowHeight = 20
Тема.Borders(8).LineStyle = 1
Тема.Borders(9).LineStyle = 1
Тема = Data.Range("C"&(НомерСтроки1+1)&":F"&(НомерСтроки1+1))
Тема.Merge
Тема = Data.Range("A"&(НомерСтроки1+1)&":B"&(НомерСтроки1+1))
Тема.Merge
Тема.Borders(10).LineStyle = 1
Тема = Data.Cells(НомерСтроки1+1;НомерСтолбца1)
Тема.Font.Bold = True
Тема.Value = "Тема:"
// {Обращение}
Обращение = Data.Range("A"&(НомерСтроки1+2)&":F"&(НомерСтроки1+2))
Обращение.RowHeight = 30
Обращение.Borders(9).LineStyle = 1
Обращение = Data.Range("C"&(НомерСтроки1+2)&":F"&(НомерСтроки1+2))
Обращение.Merge
Обращение = Data.Range("A"&(НомерСтроки1+2)&":B"&(НомерСтроки1+2))
Обращение.Merge
Обращение.Borders(10).LineStyle = 1
Обращение = Data.Cells(НомерСтроки1+2;НомерСтолбца1)
Обращение.Font.Bold = True
Обращение.Value = "Обращение:"
// {Исполнители}
Исполнители = Data.Range("A"&(НомерСтроки1+3)&":F"&(НомерСтроки1+3))
Исполнители.Merge
Исполнители.RowHeight = 20
Исполнители.Borders(9).LineStyle = 1
Исполнители = Data.Cells(НомерСтроки1+3;НомерСтолбца1)
Исполнители.Font.Bold = True
Исполнители.Value = "Исполнители"
Исполнители = Data.Range("C"&(НомерСтроки1+4)&":F"&(НомерСтроки1+4))
Исполнители.Merge
Исполнители = Data.Range("A"&(НомерСтроки1+4)&":B"&(НомерСтроки1+4))
Исполнители.Merge
Исполнители.Borders(10).LineStyle = 1
Исполнители = Data.Range("A"&(НомерСтроки1+4)&":F"&(НомерСтроки1+4))
Исполнители.Borders(9).LineStyle = 1
Исполнители.RowHeight = 30
Sheet.Rows((НомерСтроки1+4)&":"&(НомерСтроки1+4)).Hidden = true
Исполнители = Data.Range("C"&(НомерСтроки1+5)&":F"&(НомерСтроки1+5))
Исполнители.Merge
Исполнители = Data.Range("A"&(НомерСтроки1+5)&":B"&(НомерСтроки1+5))
Исполнители.Merge
Исполнители.Borders(10).LineStyle = 1
Исполнители = Data.Range("A"&(НомерСтроки1+5)&":F"&(НомерСтроки1+5))
Исполнители.Borders(9).LineStyle = 1
Исполнители.RowHeight = 30
Sheet.Rows((НомерСтроки1+5)&":"&(НомерСтроки1+5)).Hidden = true
Исполнители = Data.Range("C"&(НомерСтроки1+6)&":F"&(НомерСтроки1+6))
Исполнители.Merge
Исполнители = Data.Range("A"&(НомерСтроки1+6)&":B"&(НомерСтроки1+6))
Исполнители.Merge
Исполнители.Borders(10).LineStyle = 1
Исполнители = Data.Range("A"&(НомерСтроки1+6)&":F"&(НомерСтроки1+6))
Исполнители.Borders(9).LineStyle = 1
Исполнители.RowHeight = 30
Sheet.Rows((НомерСтроки1+6)&":"&(НомерСтроки1+6)).Hidden = true
// Заполняем данными шаблон
Номер = Data.Cells(НомерСтроки1;НомерСтолбца1+1)
Номер.Font.Underline = True
Номер.Value = TaskId
ДатаСоздания = Data.Cells(НомерСтроки1;НомерСтолбца1+3)
ДатаСоздания.Value = StartDate
Инициатор = Data.Cells(НомерСтроки1;НомерСтолбца1+5)
Инициатор.Value = Author
Тема = Data.Cells(НомерСтроки1+1;НомерСтолбца1+2)
Тема.HorizontalAlignment = -4131
Тема.Value = Subject
Обращение = Data.Cells(НомерСтроки1+2;НомерСтолбца1+2)
Обращение.HorizontalAlignment = -4131
Обращение.Value = Autext
if (Length(Autext))>100
Обращение.RowHeight = Обращение.RowHeight + Round(Length(Autext)/70;1)*10
endif
// Заполняем Исполнителей
Count = 1
ExCount = SubStringCount(Executor;'###')
ExecutorStr = НомерСтроки1 + 4
while Count<=ExCount
Ex = SubString(Executor;'###';Count)
Cell = Data.Cells(ExecutorStr;1)
Cell.Value = Ex
Count = Count + 1
Sheet.Rows(ExecutorStr&":"&ExecutorStr).Hidden = false
ExecutorStr = ExecutorStr + 1
endwhile
// Ответ исполнителей
Count = 1
ExCount = SubStringCount(Extext;'###')
ExtextStr = НомерСтроки1 + 4
while Count<=ExCount
Ext = SubString(Extext;'###';Count)
Cell = Data.Cells(ExtextStr;3)
Cell.HorizontalAlignment = -4131
if (Length(Ext))>100
Cell.RowHeight = Cell.RowHeight + Round(Length(Ext)/70;1)*12
endif
Cell.Value = Ext & ExResult
Count = Count + 1
ExtextStr = ExtextStr + 1
endwhile
// {Статус обращения}
Статус = Data.Range("G"&НомерСтроки1&":G"&(ExecutorStr-1))
Статус.Merge
Статус.Borders(7).LineStyle = 1
Статус.ColumnWidth = 6
Статус.Orientation = -4166
Статус.VerticalAlignment = -4108
Статус.Interior.Color = R + G * 256 + B * 256 * 256
Статус.Value = State
Data.Range("A"&(ExecutorStr-1)&":G"&(ExecutorStr-1)).Borders(9).Weight = 3
// Пустая строка для разделения обращений
Исполнители = Data.Range("A"&(НомерСтроки1 + 7)&":F"&(НомерСтроки1 + 7))
Исполнители.RowHeight = 20
НомерСтроки1 = НомерСтроки1 + 8
НомерСтроки2 = НомерСтроки2 + 8