Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Функция 1С 7.7 глОтобратьСтрокиТаблицы()   Найти похожие ветки 

 
Тульский ©   (2005-09-08 15:17) [0]

Люди добрые, у кого есть исходный текст этой функции из релиза 4.5 и выше, поделитесь со мной, несчастным.


 
Zeqfreed ©   (2005-09-08 15:25) [1]

Тульский ©   (08.09.05 15:17)

//******************************************************************************
// глОтобратьСтрокиТаблицы(Таб, СписокКолонок)
//
// Параметры:
//  Таб           - ТаблицаЗначений. Обрабатываемая таблица.
//  СписокКолонок - СписокЗначений. Идентификаторы колонок таблицы и значения,
//                  которые следует отбирать. Значения передаются, как значения
//                  списка, идентификаторы, как их представления.
//
// Возвращаемое значение:
//  Таблица значений.
//
// Описание:
//  Функция выделяет из таблицы значений строки, содержащие
// определенные значения в определенных колонках и формирует
// из них отдельную таблицу значений.
//
Функция глОтобратьСтрокиТаблицы(Таб, СписокКолонок) Экспорт

// Создадим отдельную таблицу для обработки данных.
Т = СоздатьОбъект("ТаблицаЗначений");
Таб.Выгрузить(Т);
Результат = СоздатьОбъект("ТаблицаЗначений");

Если Т.КоличествоСтрок() = 0 Тогда
 Возврат Т;
КонецЕсли;

Если СписокКолонок.РазмерСписка() = 0 Тогда
 Возврат Т;
КонецЕсли;

// Отсортируем полученную таблицу по переданным в функцию колонкам
ИменаКолонок = "";
ИмяКолонки = "";
Для а = 1 по СписокКолонок.РазмерСписка() Цикл
 СписокКолонок.ПолучитьЗначение(а, ИмяКолонки);
 ИменаКолонок = ИменаКолонок + ?(ИменаКолонок="","",",") + ИмяКолонки;
КонецЦикла;
Т.Сортировать(ИменаКолонок);

// Определим начальную и конечную строки таблицы, в которых есть указанные
// значения.
НачСтрока = 0;
КонСтрока = 0;

// Пропустим первые ненужные строки таблицы.
НачСтрокаПоиска = 0;
ИмяПервойКолонки = "";
Если Т.НайтиЗначение(СписокКолонок.ПолучитьЗначение(1, ИмяПервойКолонки),
      НачСтрокаПоиска, ИмяПервойКолонки) = 0 Тогда

 Т.УдалитьСтроки();
 Возврат Т;
КонецЕсли;

Для а = НачСтрокаПоиска по Т.КоличествоСтрок() Цикл
 СтрокаУдовлетворяетУсловиям = 1;
 Для б = 1 по СписокКолонок.РазмерСписка() Цикл
  ИмяКолонки = "";
  ЗначениеЯчейки = СписокКолонок.ПолучитьЗначение(б, ИмяКолонки);
  Если (Т.ПолучитьЗначение(а, ИмяКолонки) <> ЗначениеЯчейки) Тогда
   СтрокаУдовлетворяетУсловиям = 0;
   Прервать;
  КонецЕсли;
 КонецЦикла;
 Если СтрокаУдовлетворяетУсловиям = 1 Тогда
  Если НачСтрока = 0 Тогда // начальная строка пока не найдена
   НачСтрока = а;
  КонецЕсли;
 Иначе
  Если НачСтрока > 0 Тогда // начальная строка уже была найдена
   КонСтрока = а - 1;
   Прервать;
  КонецЕсли;
 КонецЕсли;
КонецЦикла;

Если НачСтрока = 0 Тогда // ни одной строки не найдено
 Т.УдалитьСтроки();
 Возврат Т;
КонецЕсли;

Если КонСтрока = 0 Тогда // последняя строка таблицы удовлетворяла условиям
 КонСтрока = Т.КоличествоСтрок();
КонецЕсли;

Результат = СоздатьОбъект("ТаблицаЗначений");
Т.Выгрузить(Результат, НачСтрока, КонСтрока);
Возврат Результат;

КонецФункции // глОтобратьСтрокиТаблицы()


%)


 
Тульский ©   (2005-09-08 15:27) [2]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
2-1124952269
markers
2005-08-25 10:44
2005.10.02
TreeView


4-1123252993
i-s-v
2005-08-05 18:43
2005.10.02
Как обрабатывать WM_MOUSEMОVE для контрола


6-1118303841
dDan
2005-06-09 11:57
2005.10.02
Ограничить загрузку


2-1124490678
TStas
2005-08-20 02:31
2005.10.02
Русский текс на компьютере с языком по умолчанию английский.


1-1126549999
VadimX
2005-09-12 22:33
2005.10.02
RECV и TMemoryStream