Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 ноя 2024, 05:47

Не нравится код

Автор Омар Тишбаев, 24 июн 2019, 10:14

0 Пользователей и 1 гость просматривают эту тему.

Омар Тишбаев

Заполняю шаблон Excel. Посреди листа есть динамически изменяемая таблица. Часть ячеек можно править вручную, часть нет. На лист ставится пароль. Вопрос: что не так с кодом? Смотрю на него и он меня прям таки напрягает. Корявый какой то! Создаётся ощущение, что можно было решить как то по другому!

        Книга = ConnectExcel.WorkBooks.Open(ИмяВременногоФайла);
Лист  = Книга.WorkSheets(1);

Лист.Cells(9, 5).Value  = ТекущаяДата();
Лист.Cells(9, 5).Locked = Истина;
Лист.Cells(10, 5).Value = МассивСтрок[0].НомерВыгрузки;       //НомерВыгрузки   
Лист.Cells(10, 5).Locked = Истина;

ИндексСтроки = 18;
Для Каждого СтрокаТовар Из МассивСтрок Цикл
Если Пароль = Неопределено Тогда
Пароль = Строка(СтрокаТовар.Пароль);
КонецЕсли;

Лист.Cells(ИндексСтроки, 2).Value  = ИндексСтроки - 17;
Лист.Cells(ИндексСтроки, 2).Locked = Истина;
Лист.Cells(ИндексСтроки, 2).Borders.LineStyle = 1;             
Лист.Cells(ИндексСтроки, 3).Value  = СтрокаТовар.Номенклатура;
Лист.Cells(ИндексСтроки, 3).Locked = Истина;
Лист.Range(Лист.Cells(ИндексСтроки, 3),Лист.Cells(ИндексСтроки, 5)).Merge();
Лист.Cells(ИндексСтроки, 3).Borders.LineStyle = 1;     
Лист.Cells(ИндексСтроки, 4).Borders.LineStyle = 1; 
Лист.Cells(ИндексСтроки, 5).Borders.LineStyle = 1;
Лист.Cells(ИндексСтроки, 6).Value  = СтрокаТовар.ЕдИзм;
Лист.Cells(ИндексСтроки, 6).Locked = Истина;
Лист.Cells(ИндексСтроки, 6).Borders.LineStyle = 1;
Лист.Cells(ИндексСтроки, 7).Value  = СтрокаТовар.Количество;
Лист.Cells(ИндексСтроки, 7).Locked = Истина;
Лист.Cells(ИндексСтроки, 7).Borders.LineStyle = 1;

Лист.Cells(ИндексСтроки, 8).Borders.LineStyle = 1;     
Лист.Cells(ИндексСтроки, 9).Borders.LineStyle = 1; 
Лист.Cells(ИндексСтроки, 10).Borders.LineStyle = 1;       
Лист.Cells(ИндексСтроки, 11).Borders.LineStyle = 1; 
Лист.Cells(ИндексСтроки, 12).Borders.LineStyle = 1;

ИндексСтроки = ИндексСтроки + 1;
Лист.Rows(ИндексСтроки).Insert();
КонецЦикла;

Лист.Rows(ИндексСтроки).Delete();

ИмяФайла = МестоСохранения + "\Шаблон " + МассивСтрок[0].НомерВыгрузки + ".xlsx";

Если СписокКонтрагентов.Количество() = 0 Тогда
Лист.Protect(Пароль);
КонецЕсли;

Книга.Application.DisplayAlerts = False;

Попытка
Книга.SaveAs(ИмяФайла);
ConnectExcel.ActiveWorkbook.Close();
УдалитьФайлы(ИмяВременногоФайла);
Возврат ИмяФайла;
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено
КонецПопытки;

MuI_I_Ika

Если работает, то лучше не трогать.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск