Текущий архив: 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