02.09.2022 Сергей Кулажевский 18635
Сортировка массивов в 1С

Содержание:

1.     Что такое массив в 1С 8? Задача сортировки массива в 1С

2.     Описание метода сортировки массивов пузырьком

3.     Методы сортировки с использованием встроенных типов данных   


1.     Что такое Массив в 1С 8? Задача сортировки массива в 1С

 

Для того чтобы рассмотреть сортировку массивов в 1С в первую очередь нужно понять, что собой представляет тип под названием массив.


Массив в 1С 8 является не чем иным как совокупностью упорядоченных данных разных типом. Под упорядочиваем мы понимаем то, что каждый новый объект в массиве имеет свой индекс, номер. Как примитивный пример каждый объект массива мы можем рассматривать как квартиру в многоквартирном доме, мы можем пройтись по всем квартирам и заглянуть в каждую и увидеть, что там есть, либо зная конкретный номер квартиры, зайти только в нее. Требуется также учитывать, что мы можем ранжировать данные(квартиры) в нужном нам порядке.


Задача сортировки массива в 1С зачастую является вещью тривиальной, ввиду того что используется повсеместно, однако собственных методов сортировки данный тип в среде 1С не получил. Однако мы можем использовать другие типы для правильной сортировки массива в 1С, не говоря еще о ручном методе сортировке массива.   


2.     Ручные методы сортировки массив

 

В программировании известны многие методы сортировки массивов данных, например такие, как:

·        Сортировка массива пузырьком

·        Шейкер сортировка

·        Сортировка вставками

·        Быстрая сортировка массива

·        И т.д.


Рассмотрим для примера сортировку массива пузырьком на встроенном языке 1С:


Суть данной сортировки заключается в попарном сравнении двух последующих элементов массива, больший элемент устанавливается в 1 из 2 ячеек, исходя из направления сортировки. Если от большего к меньшему - в левую, иначе наоборот. Алгоритм работает до тех пор, пока будут идти перестановки.


Итак, что нам нужно для решения задачи:

·        Массив для сортировки

·        Итератор - отображает индекс массива 1С

·        ИтераторПросмотров - количество просмотров массива


Создаем массив в 1С и заполняем его:


МассивОбработки = новый Массив;

МассивОбработки.добавить(5);

МассивОбработки.добавить(27);

МассивОбработки.добавить(9);

МассивОбработки.добавить(8);

МассивОбработки.добавить(23);

 

Далее создаем двойной цикл обработки:

 

Для ИтераторПросмотров = 0 По МассивОбработки.ВГраница

Для Итератор = 0 По МассивОбработки.ВГраница()- 1 Цикл

Если МассивОбработки [i] > МассивОбработки [i + 1] Тогда

ЭлементЗаменты = МассивОбработки [i];

МассивОбработки [i] = МассивОбработки [i + 1];

МассивОбработки [i + 1] = ЭлементЗаменты;

КонецЕсли;

КонецЦикла;

КонецЦикла;


Вот и весь листинг. Код весьма прост, однако имеет весьма эффективную скорость.  


3.     Методы сортировки с использованием встроенных типов данных

 

Теперь давайте рассмотрим методы сортировки, которые мы можем организовать в среде 1С используя типы данных.


К таким типам данных, в которые мы можем загрузить массив и имеют встроенный механизм сортировки относятся

·        Таблица значений в 1С 8

·        Список значений в 1С 8


Рассмотрим сортировку используя готовый массив из прошлого примера и таблицу значений:


МассивОбработки = новый Массив;

МассивОбработки.добавить(5);

МассивОбработки.добавить(27);

МассивОбработки.добавить(9);

МассивОбработки.добавить(8);

МассивОбработки.добавить(23);

 

Далее нам нужно создать таблицу значений в 1С 8 и добавить колонку:


ТаблицаСортировки = Новый ТаблицаЗначений;

ТаблицаСортировки.Колонки.Добавить("Числа");

Далее нам нужно загрузить массив в созданную колонку

ТаблицаСортировки.ЗагрузитьКолонку(МассивОбработки, " Числа ");


Далее сделаем сортировку с помощью метода сортировать, в параметр укажем имя колонки и через пробел -порядок сортировки. Под порядком сортировки подразумевается направление сортировки-по возрастанию(Возр) или по убыванию(Убыв).


ТаблицаСортировки.Сортировать("Числа Возр");


Таблица отсортирована. Далее нам нужно преобразовать колонку таблицы значений обратно в массив. Для этого есть встроенный метод ВыгрузитьКолонку с параметром имени колонки.


Массив = ТаблицаСортировки.ВыгрузитьКолонку("Числа");

Выгрузка в массив произошла успешно.

 

Аналогично мы можем рассмотреть сортировку используя список значений в 1С 8:


СписокСортировки = Новый СписокЗначений;

СписокСортировки.ЗагрузитьЗначения(МассивОбработки);

СписокСортировки.СортироватьПоЗначению(НаправлениеСортировки.Возр);

МассивОбработки = СписокСортировки.ВыгрузитьЗначения();

 

Специалист компании «Кодерлайн»

Сергей Кулажевский

Наши проекты

Внедрение ПП "1С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:CRM ПРОФ

- Управление отношениями с клиентами (CRM) ...

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

Внедренное типовое решение:
1С:Управление холдингом

- Зафиксировали процессы по блокам бухгалтерского, налогового учета, казнач...

ООО "СЖД"
ООО "СЖД"

Отрасль:
Торговля, склад, логистика, транспорт

Внедренное типовое решение:
1С:Бухгалтерия 8 ПРОФ

Расчет зарплаты
Подбор кадров
Кадровый учет
Анализ кадрового состава...

Внедрение блока бухгалтерского учета «1С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление производственным предприятием

Бухгалтерский учет:
- Завершение периода;
- Регламентированная отчетнос...

Автоматизация складских операций на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
1С:Управление холдингом

Реализовали разработку уникального модуля «Интернет-магазины» на базе прог...

Автоматизация учета на базе ПП "1С:Комплексная автоматизация 8" в ЗАО "Крюгер-Гранд"
ЗАО «Крюгер-Гранд»

Отрасль:
Производство

Внедренное типовое решение:
1С:Комплексная автоматизация

- Создание интерфейсов и наборов прав пользователей;
- Отражению временных ...

Внедрение ПП "1С:Корпоративный инструментальный пакет 8" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Различная отраслевая специфика:
- Переработка давальческого сырья
- Уче...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Объемно-календарное планирование производства Автоматизация бизнес-проце...

ФГОУ ВПО «Горский государственный аграрный университет»
ФГОУ ВПО «Горский государственный аграрный университет»

Отрасль:
Образование

Внедренное типовое решение:
1С:Колледж ПРОФ

- Управление персоналом и кадровый учет (HRM):
Кадровый учет
Управление об...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

Оптимизация производительности системы
ЗАО ИД «Комсомольская правда»

Отрасль:
Медиа

Внедренное типовое решение:
1С:Бухгалтерия

- Оптимизация производительности системы, в том числе сервера Postgre. ...

Автоматизация системы учета продаж газа на базе «1С:ERP Управление предприятием 2.0»
ООО «Эйр Продактс Газ»

Отрасль:
Производство промышленных газов

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Расчеты с контрагентами;
- Производственные операции;
- Управление скла...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение