Как свернуть массив
Подскажите, есть массив (МС) с задублированными записями. Ниже код, которым я пытаюсь убрать дубли, но код не срабатывает: СвернутыйМассив всё равно содержит задублированные записи. Помогите.
МС = Новый Массив;
Пока ТЗ_Сотрудники.следующий() Цикл
МС.Добавить(новый Структура(«Подразделение, Сотрудник», ТЗ_Сотрудники.Подразделение, ТЗ_Сотрудники.Сотрудник)); //здесь задублированные сотрудники, подразделение всегда одинаковое
//добавим вспомогательный массив
СвернутыйМассив = Новый Массив;
Для каждого Элемент Из МС Цикл
Если СвернутыйМассив.Найти(Элемент.Сотрудник) = Неопределено Тогда
//если такого значения в массиве еще нет, добавим его
СвернутыйМассив.Добавить(новый Структура(«Подразделение, Сотрудник», Элемент.Подразделение, Элемент.Сотрудник));
Структ = Новый Структура(«Сотрудники, Факторы», СвернутыйМассив, МФ);
(0) Так ищите дубли по ссылке элемента справочника, а добавляете туда структуру.
(1) Мне надо, чтобы массив был в виде структуры.
ОбщегоНазначенияУТ.УдалитьПовторяющиесяЭлементыМассива()
ТЗ_Сотрудники это таблица? Сверните таблицу. ваш Кэп
(3) Нет у меня такого модуля в 1С:ЗУП3.
(5) в БСП есть такой модуль. Ищите.
(4) Там вначале очень сложный запрос, его менять нельзя. Вот откуда ТЗ_Сотрудники берётся:
ПакетЗапрос = Запрос.ВыполнитьПакет();
ТЗ_Сотрудники = ПакетЗапрос[5].Выбрать();
МС = Новый Массив;
Пока ТЗ_Сотрудники.следующий() Цикл
МС.Добавить(новый Структура(«Подразделение, Сотрудник», ТЗ_Сотрудники.Подразделение, ТЗ_Сотрудники.Сотрудник)); //здесь задублированные сотрудники
//добавим вспомогательный массив
СвернутыйМассив = Новый Массив;
Для каждого Элемент Из МС Цикл
Если СвернутыйМассив.Найти(Элемент.Сотрудник) = Неопределено Тогда
//если такого значения в массиве еще нет, добавим его
СвернутыйМассив.Добавить(новый Структура(«Подразделение, Сотрудник», Элемент.Подразделение, Элемент.Сотрудник));
КонецЕсли;
КонецЦикла;
Структ = Новый Структура(«Сотрудники, Факторы», СвернутыйМассив, МФ);
Возврат структ;
КонецЦикла;
ТЗ_Сотрудники_Свернутая = ТЗ_Сотрудники.Скопировать(); // или выгрузить, зависит от типа
ТЗ_Сотрудники_Свернутая.Свернуть(«Подразделение,Сотрудник»,»»);
если нужно свернуть массив —
1) отсортируйте его с помощью сз
2) пробегитесь по сз и выгрузите уникальные в массив
(8) Пишет, что «Метод объекта не обнаружен (Скопировать)». Аналогично «Метод объекта не обнаружен (Выгрузить)».
(6) А разве есть ещё какие-то модули, которые не видных в Общих?!
(10) Ну так в ТЗ_Сотрудники у вас внезапно Выборка, а она не имеет таких методов.
Тогда замените ТЗ_Сотрудники = ПакетЗапрос[5].Выбрать() на ТЗ_Сотрудники = ПакетЗапрос[5].Выгрузить().
(9) Я это не осилю ((
Если запрос возвращает «дубли», которые надо обрабатывать в результате запроса, значит это неправильный запрос.
Результат запроса можно выгрузить, тогда это будет таблица, которую можно свернуть.
Хотя правильней составить запрос, который вернет результата без дублей.
(14) Логично, но по некоторым причинам, запрос решено не трогать.
Можно еще сделать запрос к ТЗ и убрать из нее дубли запросом.
(12) Исправила, теперь ругается что «Метод объекта не обнаружен (Следующий)»:
ПакетЗапрос = Запрос.ВыполнитьПакет();
//ТЗ_Сотрудники = ПакетЗапрос[5].Выбрать();
ТЗ_Сотр = ПакетЗапрос[5].Выгрузить();
ТЗ_Сотрудники = ТЗ_Сотр.Скопировать();
ТЗ_Сотрудники.Свернуть(«Подразделение,Сотрудник»,»»);
МС = Новый Массив;
Пока ТЗ_Сотрудники.следующий() Цикл
МС.Добавить(новый Структура(«Подразделение, Сотрудник», ТЗ_Сотрудники.Подразделение, ТЗ_Сотрудники.Сотрудник)); //здесь задублированные сотрудники
////добавим вспомогательный массив
//СвернутыйМассив = Новый Массив;
//Для каждого Элемент Из МС Цикл
// Если СвернутыйМассив.Найти(Элемент.Сотрудник) = Неопределено Тогда
// //если такого значения в массиве еще нет, добавим его
// СвернутыйМассив.Добавить(новый Структура(«Подразделение, Сотрудник», Элемент.Подразделение, Элемент.Сотрудник));
// КонецЕсли;
//КонецЦикла;
Структ = Новый Структура(«Сотрудники, Факторы», МС, МФ);
Возврат структ;
КонецЦикла;
(17) Пока ТЗ_Сотрудники.следующий() Цикл — > Для Каждого СтрокаТЗ ИЗ ТЗ_Сотрудники Цикл
внутри цикла зменить ТЗ_Сотрудники — > СтрокаТЗ
СвернутьМассив (БСП)
Свернуть массив. Возвращает копию исходного массива с уникальными значениями.
// Возвращает копию исходного массива с уникальными значениями. // // Параметры: // Массив - Массив - массив произвольных значений. // // Возвращаемое значение: // Массив - массив уникальных элементов. // Функция СвернутьМассив(Знач Массив) Экспорт Результат = Новый Массив; ДополнитьМассив(Результат, Массив, Истина); Возврат Результат; КонецФункции /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////
// Возвращает копию исходного массива с уникальными значениями. // // Параметры: // Массив - Массив - массив произвольных значений. // // Возвращаемое значение: // Массив - массив уникальных элементов. // Функция СвернутьМассив(Знач Массив) Экспорт Результат = Новый Массив; ДополнитьМассив(Результат, Массив, Истина); Возврат Результат; КонецФункции /////////////////////////////////////////////////////////////////////////////////////////////////////// // Copyright (c) 2019, ООО 1С-Софт // Все права защищены. Эта программа и сопроводительные материалы предоставляются // в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) // Текст лицензии доступен по ссылке: // https://creativecommons.org/licenses/by/4.0/legalcode ///////////////////////////////////////////////////////////////////////////////////////////////////////
1С 8.3 Свернуть массив — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С
Перейти в раздел примеры кода 1С 8.3:

Свертка Массива с помощью соответствия (пример №1) в 1С 8.3:
Процедура Свертка_Массива_через_Соответствие () Экспорт
МассивДляСвертки = Новый Массив ;
МассивДляСвертки . Добавить ( 2 );
МассивДляСвертки . Добавить ( 4 );
МассивДляСвертки . Добавить ( 7 ); // Массив: (2, 4, 7)
СоответствиеДляСвертки = Новый Соответствие ;
Для Каждого ЭлементМ Из МассивДляСвертки Цикл
СоответствиеДляСвертки . Вставить ( ЭлементМ );
КонецЦикла;
МассивДляСвертки . Очистить ();
Для Каждого ЭлементС Из СоответствиеДляСвертки Цикл
МассивДляСвертки . Добавить ( ЭлементС . Ключ );
КонецЦикла;
Свертка Массива с помощью доп.массива (пример №2) в 1С 8.3:
Процедура Свертка_Массива_через_доп_Массив () Экспорт
МассивДляСвертки = Новый Массив ;
МассивДляСвертки . Добавить ( 2 );
МассивДляСвертки . Добавить ( 4 );
МассивДляСвертки . Добавить ( 7 ); // Массив: (2, 4, 7)
МассивДополнительный = Новый Массив ;
Для Каждого ЭлементМ Из МассивДляСвертки Цикл
Если МассивДополнительный . Найти ( ЭлементМ ) = Неопределено Тогда
//Если значения еще нет, то добавим его
МассивДополнительный . Добавить ( ЭлементМ );
КонецЕсли;
КонецЦикла;
Сообщить ( СтрСоединить ( МассивДополнительный , «,» ));
// 2, 4, 7
Свертка Массива с помощью ТЗ (пример №3) в 1С 8.3:
Процедура Свертка_Массива_через_ТаблицуЗначений () Экспорт
МассивДляСвертки = Новый Массив ;
МассивДляСвертки . Добавить ( 2 );
МассивДляСвертки . Добавить ( 4 );
МассивДляСвертки . Добавить ( 7 ); // Массив: (2, 4, 7)
ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «ВыгружаемоеЗначение» );
// Заполняем строки ТЗ (по количеству элементов массива)
Для А = 0 По МассивДляСвертки . ВГраница () Цикл
ТЗ . Добавить ();
КонецЦикла;
// Загружаем Массив в ТЗ и сворачиваем его
ТЗ . ЗагрузитьКолонку ( МассивДляСвертки , «ВыгружаемоеЗначение» );
ТЗ . Свернуть ( «ВыгружаемоеЗначение» );
// Если нужно — сортируем
//ТЗ.Сортировать(«ВыгружаемоеЗначение»);
// Выгружаем ТЗ в Массив
МассивДляСвертки = ТЗ . ВыгрузитьКолонку ( «ВыгружаемоеЗначение» );
Сообщить ( СтрСоединить ( МассивДляСвертки , «,» ));
// 2, 4, 7
1С 8.x : Массив ~ Как Свернуть Массив?


Google maps : вывод точек на карту и режим панорамы 8
В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне Автоматизация обмена данных используя обработку «Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку » Универсальный обмен данными в формате XML» В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки » Универсальный обме Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая » примерно» делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный Быстрая загрузка данных большого размера файла Excel в многомерный Массив 0
// OldthiefXXX Перем СерверExcel; Процедура КнопкаВыполнитьНажатие(Кнопка) ФайлХЛС=СерверExcel.Application.Workbooks.Open(ДокументХЛС); КонечнаяСтрокаДанных=ФайлХЛС.ActiveSheet.UsedRange.Rows.Count; КоличествоКолонокДанных=ФайлХЛС.ActiveSheet Посмотреть все результаты поиска похожих
Еще в этой же категории
Массив ~ Как удалить повторяющиеся элементы массива? 8
Функция УдалитьПовторяющиесяЭлементыМассива(Массив) Экспорт ТекущийИндекс = 0; ВсегоЭлементов = Массив.Количество(); Пока ТекущийИндекс ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 ВсегоЭлементов Цикл Если Массив = Сравнение двух структур 8
// Сравнение 2-х стурктур // Возвращает структуру с полями которые отличаются и значением из сравниваемой // Если в стСравнимое нет нужного поля,то в результат добавляется поля = Неопределенно // стОсновная, стСравнимое — сравниваемые структуры Структура ~ Создать структуру и добавить элементы 4
// Создание структуры СозданнаяСтруктура = Новый Структура; // Создание структуры и добавление элементов СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить(» Качество» , Качество); СтруктураОтбора.Вставить(» Номенклатура» , Номенкла Структура ~ Преобразовании Структуры в Таблицу Значений 4
//Струтура в ТЗ Функция СтруктураВТЗ(Структр) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить(» Значение» ); ТЗ.Колонки.Добавить(» Описание» ); Для Каждого ТекЭлем из Структр Цикл НовСтр=ТЗ.Добавить(); НовСтр.Значение = ТекЭлем.Ключ; НовСтр Структура ~ Перебор элементов Структуры 3
Для Каждого Элемент из СтруктураПараметров Цикл Сообщить(Элемент.Ключ + » : » + Элемент.Значение); КонецЦикла; Посмотреть все в категории Работа с Массивом, Структурой, Соответствием
