Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как редактировать большие обработки?  (Прочитано 6047 раз)
0 Пользователей и 1 Гость смотрят эту тему.
dream
Гость
« : 20-01-2009 06:45 » 

Есть здоровая обработка, "Книга учёта расходов и доходов" работает замечательно, единственное хотелось бы ее усовершенствовать, чтоб в она ещё могла фильтравать по счетам! проблема в том что писалась она неизвестно когда и кем, разобраться в ней начинающему ламеру в 1с (мне) сложно, 4000 строк. интересует следущее: возможно ли в модуле, в конце, в начале или середине добавить функцию\процидуру которая бы удаляла из сформировавшейся печатной формы лишнее, т.е. чтоб не приходилось делать это в ручную? и как мне обратиться к печатной форме, если это конечно возможно, и мой вопрос не похож на бред?  Ага
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 20-01-2009 11:52 » 

Печатаная форма - это объет типа Таблица
Где-то создается в виде Таб=СоздатьОбъект("Таблица"); (Таб - переменная, может быть любой идентификатор)
Вроде как методов удаления ячеек в Таблице нету, потому придется поячеечно копировать значения Жаль
Вот накидал пример кода (в функции Тест сначала выводится 100 строк, потом удаляется каждая вторая, т.е. там, где не выполняется условие И1%2=0):
Код:
//******************************************************************************
// КопироватьОбласть(Таб, СтрКуда, СтрОткуда)
Функция КопироватьОбласть(Таб, СтрКуда, СтрОткуда)
Для И1=1 По Таб.ШиринаТаблицы() Цикл // Копируем по ячейкам
Сообщить(Шаблон("[СтрОткуда]->[СтрКуда] [И1]"));
ОблОткуда=Таб.Область(СтрОткуда,И1,СтрОткуда,И1);
ОблКуда=Таб.Область(СтрКуда,И1,СтрКуда,И1);

// Устанавливаем нужные реквизиты.
// Если текста недостаточно - смотри справку "Артибуты и методы ОбластиТаблицы"
ОблКуда.Текст=ОблОткуда.Текст;
КонецЦикла;
КонецФункции // КопироватьОбласть()

// ===============================
Процедура Тест()
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Для И1=1 По 100 Цикл
Таб.ВывестиСекцию("Тест");
КонецЦикла;
Таб.Показать();
Стр=0;
Шир=Таб.ШиринаТаблицы();
Для И1=1 По Таб.ВысотаТаблицы() Цикл
Если И1%2=0 Тогда Стр=Стр+1; КонецЕсли;
Если Стр=0 Тогда Продолжить; КонецЕсли;
Если Стр=И1 Тогда Продолжить; КонецЕсли;

КопироватьОбласть(Таб, Стр, И1);
КонецЦикла;
// Очистим оставшиеся строки
Обл=Таб.Область(Стр+1,1,И1,Шир);
// Если недостаточно очистить текст - смотри справку "Артибуты и методы ОбластиТаблицы"
Обл.Текст="";
Таб.Показать();
КонецПроцедуры
Воткнуть алгоритм (цикл) нужно перед Таб.Показать();
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 20-01-2009 11:53 » 

Но в принципе правильно было бы разобраться с алгоритмом: если встроить фильтр туда, то работать будет быстрее, т.к. заполнение таблицы процесс не быстрый
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines