1с удалить дубли из массива
1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута: * Географические координаты объектов, которые хранятся в базе; * Координаты начальной и коне ZIP-архив Чтение 0
Для того чтобы прочитать файлы из ZIP-архива необходимо выполнить несколько простых действий: - Открыть необходимый архив - Распаковать файлы Создание объекта ЧтениеZIPФайла можно осуществить двумя путями - создать инициализированный объект или Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме Посмотреть все результаты поиска похожих
Еще в этой же категории
Сравнение двух структур 7
// Сравнение 2-х стурктур // Возвращает структуру с полями которые отличаются и значением из сравниваемой // Если в стСравнимое нет нужного поля,то в результат добавляется поля = Неопределенно // стОсновная, стСравнимое - сравниваемые структуры Структура ~ Преобразовании Структуры в Таблицу Значений 4
//Струтура в ТЗ Функция СтруктураВТЗ(Структр) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить(" Значение" ); ТЗ.Колонки.Добавить(" Описание" ); Для Каждого ТекЭлем из Структр Цикл НовСтр=ТЗ.Добавить(); НовСтр.Значение = ТекЭлем.Ключ; НовСтр Структура ~ Создать структуру и добавить элементы 3
// Создание структуры СозданнаяСтруктура = Новый Структура; // Создание структуры и добавление элементов СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить(" Качество" , Качество); СтруктураОтбора.Вставить(" Номенклатура" , Номенкла Массив ~ Как Свернуть Массив? 2
НовыйМассив = Новый Массив; Соответствие = Новый Соответствие; Для каждого ЭлементМассива Из Массив Цикл Соответствие.Вставить(ЭлементМассива); КонецЦикла; Для каждого КлючИЗначение Из Соответствие Цикл НовыйМассив.Добавить(КлючИЗначение.Знач Как создать Фиксированный массив? 2
ФиксированныйМассив , элементами которого могут быть значения перечисленных типов, включая ФиксированныйМассив. ФиксированныйМассив не допускает никаких изменений своего содержимого и может быть сконструирован из объекта типа " Массив" ; А если про Посмотреть все в категории Работа с Массивом, Структурой, Соответствием
Столкнулся с задачей удаления дублей строк в таблице значений, при этом важным критерием для меня является производительность, из-за большых размеров таблиц значений. Написал процедуру, возможно эта процедура кому-нибудь еще будет полезной.
Специальные предложения
Нужно пару слов про идею и алгоритм написать, а не только текст процедуры. Чем Ваш вариант лучше того, что я сейчас сяду и напишу за 10 минут на коленке?
Алгоритм писателя на 1С 77. Проще всего:
ВЫБРАТЬ * ПОМЕСТИТЬ ВременнаяТаблица ИЗ &Таблица КАК ВременнаяТаблица;
ВЫБРАТЬ РАЗЛИЧНЫЕ * ИЗ ВременнаяТаблица
(6) В данном случае речь шла о таблице значений, которую на клиенте Вы никак не сможете получить. Использование метода "Скопировать" доступно только для универсальных коллекций значений, которые не могут существовать на клиенте. Иными словами сам код обработки предполагает серверный вызов.
(8) CagoBHuK, я и не спорю относительно серверного (сервера 1С) вызова, добавится вызов именно SQL сервера.
(4) CagoBHuK, это при условии что все поля строк одинаковые.
Если, например, в таблице 4 колонки и дубли удалять надо только по 3 колонкам, то вариант стар как мир и даже описан в синтакс-помощнике (осторожно, код в стиле "капитан очевидность"):
Предложу свой вариант, немного улучшенный (12) больше универсальности, про быстродействие так же не могу сказать, тесты не проводил:
Можно использовать и запрос, спорить не буду. Таблицу нужно будет подготовить - описать типы колонок, и также добавить колонку, по которой будет происходить суммирование.
Далее почти по тексту, только нужно будет выбирать не различные, а группировать по нужному списку колонок (строить запрос динимически), и добавить в запрос условие "Имеющие сумма(КолонкаСуммирования) = 1". (просто различные использовать нельзя из-за значений в других колонках таблицы). Далее эту сгруппированную временную таблицу нужно будет джойнить с первоначальной временной таблицей, в условиях связи прописывать равенство по выбранным полям (строить условие динамически), плюс нужно будет в случае если нужно не удалить все дублирующие строки, а оставить по одной из удаляемых тоже это предусмотреть.
Хотел еще сказать, что этот способ расчитан, на большое количество строк в таблице, и малое количество строк с дублями, для других случаев можно это делать быстрее другим способом.
Вариант написанный на коленке возможно будет эффективнее, если предоставится возможность, хотел бы на него посмотреть и возможно использовать с Вашего разрешения.
МассивДублей = Новый Массив;
МассивСотрудников = Новый Массив; // проверяемое на дубль значение
Для каждого Строка Из ТЗНачисления Цикл
Если Строка.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.СдельныйЗаработок Тогда // критерий сравнения на дубль, может быть любой
Если Элем = Неопределено Тогда // это первое вхождение проверяемого на дубль сотрудника
Иначе // а это - уже мы дубль встретили, по данному сотруднику и по данному критерию проверки на дубль
Мне кажется, не надо было такую свежую версию БСП брать. Что-нибудь из 3.0.х было бы более востребовано.
Хотя, далеко не все описанные методы являются "свежими".
(3) Я описал наиболее полезные функции которые помогут в решении многих задач. конечно это далеко не весь список, будем дополнять по мере возможности новыми процедурами и функциями)
БСП использовал наиболее актуальную, но большая часть используется и в 3.0 ) спасибо
(0) А где же ОбщегоНазначенияКлиентСервер: Проверить(. ) и ПроверитьПараметр(. ) .
Соблюдение контрактов - это наше все;)
Спасибо, отличная тема для циклов статей!
Предложение: указывать тип возвращаемого значения (для функций), было бы удобно)
(7) Вообще в модулях описывается каждая процедура и функция )
но постараюсь дополнить в статье в ближайшее время!)
(13) От перестановки слагаемых сумма не меняется)
Результат такой же - решения разные.
Кстати для получения текущего пользователя на Клиенте:
Выдает ошибку:
Ошибка разбора XML: - [1,1]
Фатальная ошибка:
Document is empty
Эту ТаблицаЗначений надо заранее создать и столбиками заполнить или как вообще.
Возвращает значение дополнительного свойства объекта:
УправлениеСвойствами.ЗначениеСвойства
Мне кажется часто нужен и достоин упоминания.
Просмотры 24016
Загрузки 0
Рейтинг 208
Создание 10.03.20 09:20
Обновление 14.01.21 12:35
№ Публикации 1207488
Тип файла Нет файла
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Да
Изучаем новую область через практику, ВАВОК, системную инженерию, под руководством опытного аналитика Ирины Гертовской
См. также
Библиотека стандартных подсистем (Механизм БСП) Промо
Конфигурации в 1С пишутся для пользователей и по их «правилам» (клиент всегда прав), поэтому в основном все конфигурации разные, но достаточно часто в них используются одни и те же объекты, которые незначительно отличаются друг от друга. Действительно, сложно представить конфигурацию, где не фигурировали бы такие сущности как номенклатура, контрагенты, пользователи, валюта. И некоторые задачи являются типичными: возможность базового разграничения прав, работа с электронной почтой, задачи пользователям и т.д. Но.
03.03.2017 86352 V.Stavinsky 22
Еще раз о дополнительных реквизитах и дополнительных сведениях
Дополнительные реквизиты и сведения существуют давно. Задумка очень хорошая. Суть этих механизмов понятна всем. По этому поводу написано много. Что тут можно сказать нового? Однако бес, как всегда, в деталях. Как создавали реквизиты в объектах типовых конфигураций, так и продолжаем это делать. Почему это происходит? За всех сказать не могу. Могу рассуждать только на своем примере. Являясь убежденным практиком, одно могу сказать вполне определенно. Если что-то на практике недостаточно удобно, то останется оно главным образом в теории. Если не приложить немного усилий.
вчера в 08:00 281 user1374747 5
Модули общего назначения - готовые полезные функции и процедуры конфигураций на БСП
В данной статье я рассматриваю несколько полезных "классических" функций и процедур для работы с данными, которые уже встроены в БСП и готовы к использованию.
1С 8.3 Удаление дублирующих строк в Таблице значений
Данная функция принимает таблицу значений (с любой структурой), а возвращает обработанную таблицу с удаленными одинаковыми строками. В параметр КолонкиТЗ можно передать колонки (через запятую), по которым нужно выполнять проверку и удаление строк-дублей. Если параметр пустой, то метод сворачивает ТЗ по всем колонкам.
Функция УдалениеДублирующихСтрокТЗ ( ТЗ , КолонкиТЗ = "" ) Экспорт
Если ПустаяСтрока ( КолонкиТЗ ) Тогда // свертка ТЗ по всем колонкам
Для Каждого ТЗКолонка Из ТЗ . Колонки Цикл
КолонкиТЗ = КолонкиТЗ + ?( ПустаяСтрока ( КолонкиТЗ ), "" , "," ) + ТЗКолонка . Имя ;
КонецЦикла;
КопияТЗ = ТЗ . Скопировать ();
КопияТЗ . Свернуть ( КолонкиТЗ );
КолонкиЗапроса = "ТЗ." + СтрЗаменить ( КолонкиТЗ , "," , ",ТЗ." );
Запрос = Новый Запрос ;
Запрос . Текст = "ВЫБРАТЬ
| " + КолонкиЗапроса + "
|ПОМЕСТИТЬ ВТ_ТЗ
|ИЗ
| &ТЗ КАК ТЗ
|;
|
|//////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| " + СтрЗаменить ( КолонкиЗапроса , "ТЗ." , "ВТ_ТЗ." ) + "
|ИЗ
| ВТ_ТЗ КАК ВТ_ТЗ
|" ;
Запрос . УстановитьПараметр ( "ТЗ" , ТЗ );
РезультатЗапроса = Запрос . Выполнить ();
Если Не РезультатЗапроса . Пустой () Тогда
ТаблицаЗапроса = РезультатЗапроса . Выгрузить ();
КопияТЗ = ТЗ . СкопироватьКолонки ();
Для Каждого СтрокаТЗ Из ТаблицаЗапроса Цикл
ОтборСтруктура = Новый Структура ( КолонкиТЗ );
ЗаполнитьЗначенияСвойств ( ОтборСтруктура , СтрокаТЗ );
ОтборТЗ = ТЗ . НайтиСтроки ( ОтборСтруктура );
Для Каждого СтрокаОтбораТЗ Из ОтборТЗ Цикл
НоваяСтрокаТЗ = КопияТЗ . Добавить ();
ЗаполнитьЗначенияСвойств ( НоваяСтрокаТЗ , СтрокаОтбораТЗ );
Прервать;
КонецЦикла;
КонецЦикла;
Иначе
КопияТЗ = ТЗ ;
КонецЕсли;
ТЗ = Новый ТаблицаЗначений ;
// Добавляем колонки в таблицу значений
КвалификаторыСтроки = Новый КвалификаторыСтроки ( 50 );
НовСтрока = Новый ОписаниеТипов ( "Строка" , , КвалификаторыСтроки );
ТЗ . Колонки . Добавить ( "Животное" , НовСтрока );
ТЗ . Колонки . Добавить ( "Размер" , НовСтрока );
ТЗ . Колонки . Добавить ( "Цвет" , НовСтрока );
// Добавляем строки в таблицу значений
Стр = ТЗ . Добавить ();
Стр . Животное = "Слон" ;
Стр . Размер = "большой" ;
Стр . Цвет = "зеленый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Слон" ;
Стр . Размер = "маленький" ;
Стр . Цвет = "желтый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Слон" ;
Стр . Размер = "маленький" ;
Стр . Цвет = "красный" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Тигр" ;
Стр . Размер = "здоровый" ;
Стр . Цвет = "розовый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Тигр" ;
Стр . Размер = "огромный" ;
Стр . Цвет = "черный" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Тигр" ;
Стр . Размер = "здоровый" ;
Стр . Цвет = "фиолетовый" ;
УдалениеДублирующихСтрокТЗ ( ТЗ , "Животное,Цвет" );
ТЗ = Новый ТаблицаЗначений ;
// Добавляем колонки в таблицу значений
КвалификаторыСтроки = Новый КвалификаторыСтроки ( 50 );
НовСтрока = Новый ОписаниеТипов ( "Строка" , , КвалификаторыСтроки );
ТЗ . Колонки . Добавить ( "Животное" , НовСтрока );
ТЗ . Колонки . Добавить ( "Размер" , НовСтрока );
ТЗ . Колонки . Добавить ( "Цвет" , НовСтрока );
// Добавляем строки в таблицу значений
Стр = ТЗ . Добавить ();
Стр . Животное = "Слон" ;
Стр . Размер = "большой" ;
Стр . Цвет = "зеленый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Слон" ;
Стр . Размер = "маленький" ;
Стр . Цвет = "желтый" ;
Стр = ТЗ . Добавить (); //дубль
Стр . Животное = "Слон" ;
Стр . Размер = "маленький" ;
Стр . Цвет = "желтый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Тигр" ;
Стр . Размер = "здоровый" ;
Стр . Цвет = "розовый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Тигр" ;
Стр . Размер = "огромный" ;
Стр . Цвет = "черный" ;
Стр = ТЗ . Добавить (); //дубль
Стр . Животное = "Тигр" ;
Стр . Размер = "огромный" ;
Стр . Цвет = "черный" ;
УдалениеДублирующихСтрокТЗ ( ТЗ , "Животное,Цвет" );
ТЗ = Новый ТаблицаЗначений ;
// Добавляем колонки в таблицу значений
КвалификаторыСтроки = Новый КвалификаторыСтроки ( 50 );
НовСтрока = Новый ОписаниеТипов ( "Строка" , , КвалификаторыСтроки );
ТЗ . Колонки . Добавить ( "Животное" , НовСтрока );
ТЗ . Колонки . Добавить ( "Размер" , НовСтрока );
ТЗ . Колонки . Добавить ( "Цвет" , НовСтрока );
// Добавляем строки в таблицу значений
Стр = ТЗ . Добавить ();
Стр . Животное = "Слон" ;
Стр . Размер = "большой" ;
Стр . Цвет = "зеленый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Слон" ;
Стр . Размер = "маленький" ;
Стр . Цвет = "желтый" ;
Стр = ТЗ . Добавить (); //дубль
Стр . Животное = "Слон" ;
Стр . Размер = "маленький" ;
Стр . Цвет = "желтый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Тигр" ;
Стр . Размер = "здоровый" ;
Стр . Цвет = "розовый" ;
Стр = ТЗ . Добавить ();
Стр . Животное = "Тигр" ;
Стр . Размер = "маленький" ;
Стр . Цвет = "черный" ;
Стр = ТЗ . Добавить (); //дубль т.к. размер не учитывается
Стр . Животное = "Тигр" ;
Стр . Размер = "огромный" ;
Стр . Цвет = "черный" ;
Объекты типа массив в 1С 8.3 представляют собой совокупность упорядоченных значений любого типа, в том числе и типа «массив», что в свою очередь позволяет организовывать многомерные массивы. Идентификация значений осуществляется по индексам, нумерация которых начинается с «0».
Создание массива
Синтаксис:
Примеры:
Добавление элементов в массив
Примеры:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Получение значения элемента по индексу
Поиск в массиве 1С
Присвоение значений элементам массива
Примеры:
Как узнать количество элементов массива (размер массива)
Перебор массива 1С
Примеры:
Перебор всех элементов двумерного массива
Примеры:
Удаление элементов из массива
Примеры:
Как разложить строку в массив
Пример преобразования массива в список значений
Пример преобразования массива в таблицу значений
Сортировка массива 1С разными способами
Примеры:
Как свернуть массив в 1С
Пример:
Поддержите нас, расскажите друзьям!
СПРОСИТЕ в комментариях!
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов. Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт.
Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.
Читайте также: