Как сравнить две структуры в 1с
(17) так надож тогда предварительно отсортировать эти структуры. А сортировка в 50 раз тормознее перебора.
х = Новый Структура(«а, б», «а», «б»);
у = Новый Структура(«б, а», «б», «а»);
й = ЗначениеВСтрокуВнутр(х);
в = ЗначениеВСтрокуВнутр(у);
Если в = й Тогда
Сообщить(«равны»);
Иначе
Сообщить(«не равны»);
КонецЕсли;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан
Сравнение структур
Сравниваю в функции на сервере две структуры. (см скрин)
Одна в массиве — СведТСПроверка[0], другая — «свед». (сведения транспортных средств)
Сравнение по полям корректно, а структур полностью — нет.
Почему такое может быть? По-всякому уже вертел.
Прикрепленные файлы:
По теме из базы знаний
- Скрипт для сравнения структуры полей таблиц разных баз на SQL
- Сравнение структур XML-файлов
- Сравнение структуры метаданных неограниченного числа конфигураций
- Структура данных не поддерживает хранение расширений. Необходимо отключить режим совместимости
- Функция сравнения значений (рекурсивно)
Найденные решения
4. glek 119 25.04.23 13:00 Сейчас в теме
(1) Если есть БСП, то использовать надо ОбщегоНазначения.КоллекцииИдентичны
Zevzm; Kerubim; user1682124; simgo83; kimskiysanya; + 5 – Ответить
Остальные ответы
- Дата
- Дата
- Рейтинг всех уровней
- Рейтинг 1-го уровня
- Древо развёрнутое
- Древо свернутое
Свернуть все
3. RustamZz 25.04.23 12:51 Сейчас в теме
(1) Наверное потому что это две разные структуры, не правда ли, Анна?
8. starik-2005 2953 23.10.23 15:45 Сейчас в теме
Видимо Анна сменил пол.
4. glek 119 25.04.23 13:00 Сейчас в теме
(1) Если есть БСП, то использовать надо ОбщегоНазначения.КоллекцииИдентичны
Zevzm; Kerubim; user1682124; simgo83; kimskiysanya; + 5 – Ответить
5. spacecraft 25.04.23 13:08 Сейчас в теме
(1) Структура это объект. Два разных объекта, даже содержащих одинаковые значения не равны.
А = Новый Структура; Б = Новый Структура; С = А;
А не равно Б, так как это разные объекты
А равно С, так как это один и тот же объект
6. user1630260 25.04.23 13:22 Сейчас в теме
Спасибо, догадывался, но «правильных» сравнений тоже было немало — это смутило.
(5)
2. kimskiysanya 25.04.23 12:50 Сейчас в теме
Структуры не будут равны даже если они состоят из полностью одинаковых элементов. Структура это как бы место хранения, значений, а ее элементы это значения, которые в ней хранятся.
https://its.1c.ru/db/pubprogforbeginners#content:81:hdoc
user1835472; + 1 – Ответить
7. vik070777 292 23.10.23 14:06 Сейчас в теме
Если есть БСП то хорошая функция ОбщегоНазначения.ДанныеСовпадают
// Сравнивает данные сложной структуры с учетом вложенности. // // Параметры: // Данные1 - Структура, ФиксированнаяСтруктура. // - Соответствие, ФиксированноеСоответствие. // - Массив, ФиксированныйМассив. // - ХранилищеЗначения, ТаблицаЗначений. // - Простые типы, которые можно сравнивать на равно, // например, Строка, Число, Булево. // // Данные2 - те же типы, что и для параметра Данные1. // // Возвращаемое значение: // Булево. // Функция ДанныеСовпадают(Данные1, Данные2) Экспорт
user1981540; + 1 – Ответить
9. demonit 31.10.23 17:47 Сейчас в теме
(5)Попробуйте запустить следующий код на веб-клиенте:
Процедура ПриОткрытии(Отказ) с1 = Новый Структура; с2 = Новый Структура; Сообщить(с1 = с2); Возврат; КонецПроцедуры
Каков будет ответ. Ответ будет ИСТИНА.
Кто-нибудь может пояснить, как можно программировать на 1С, если поведение различается в разных контекстах исполнения.
10. user1880116 31.10.23 18:19 Сейчас в теме
как можно программировать на 1С
Бросай. Разрешаю.
user1826630; + 1 – Ответить
11. spacecraft 31.10.23 18:52 Сейчас в теме
(9) ну, это может и от версии платформы зависеть.
попробуйте положить в них одинаковые значения и сравнить.
12. user1826630 31.10.23 19:28 Сейчас в теме
(9) Сравнивать структуры нельзя через » clear»>
13. demonit 01.11.23 08:33 Сейчас в теме
(12)Процедура ПриОткрытии(Отказ)
с1 = Новый Структура;
c1.Вставить(«Ключ»);
с2 = Новый Структура;
c2.Вставить(«Ключ»);
Сообщить(с1 = с2);
Возврат;
КонецПроцедуры
«Сравнивать структуры нельзя через «=». Пустой объект всегда равен Пустому объекту — нет ни одного ключа, сравнивать нечего!»
Сравнил выше две непустые структуры. Результат ИСТИНА.
Сравнение двух структур


1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » — конкретный продукт, который выпускает компания 1С . Что такое Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора QR код в 1С 21
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог Алгоритм шифрования RC4 1
Для решения некоторых задач, иногда требуется имееть возможность шифровать и дешифровывать, какие-то данные. Но при этом нет возможности использовать стороние внешнии компоненты. Предлагаем пример реализации алгоритма шифрования RC4 на встроенном яз Библиотека кода: Сравнить две таблицы значений 0
//Сравнивает две таблицы значений // Функция ТаблицыЗначенийРавны(ТаблицаЗначений1, ТаблицаЗначений2) Экспорт Если ТипЗнч(ТаблицаЗначений1) Тип(«ТаблицаЗначений») ИЛИ ТипЗнч(ТаблицаЗначений2) Тип(«ТаблицаЗначений») Тогда Возв Посмотреть все результаты поиска похожих
Еще в этой же категории
Массив ~ Как удалить повторяющиеся элементы массива? 8
Функция УдалитьПовторяющиесяЭлементыМассива(Массив) Экспорт ТекущийИндекс = 0; ВсегоЭлементов = Массив.Количество(); Пока ТекущийИндекс ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 ВсегоЭлементов Цикл Если Массив = Структура ~ Преобразовании Структуры в Таблицу Значений 5
//Струтура в ТЗ Функция СтруктураВТЗ(Структр) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить(» Значение» ); ТЗ.Колонки.Добавить(» Описание» ); Для Каждого ТекЭлем из Структр Цикл НовСтр=ТЗ.Добавить(); НовСтр.Значение = ТекЭлем.Ключ; НовСтр Структура ~ Создать структуру и добавить элементы 4
// Создание структуры СозданнаяСтруктура = Новый Структура; // Создание структуры и добавление элементов СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить(» Качество» , Качество); СтруктураОтбора.Вставить(» Номенклатура» , Номенкла Структура ~ Перебор элементов Структуры 3
Для Каждого Элемент из СтруктураПараметров Цикл Сообщить(Элемент.Ключ + » : » + Элемент.Значение); КонецЦикла; Массив ~ Как получить последний элемент массива 3
Массив = Новый Массив(); Массив.Добавить(» ЭлементОдин» ); Массив.Добавить(» ЭлементДва» ); Массив.Добавить(» ЭлементТри» ); Массив.Добавить(» ЭлементЧетыре» ); ПроследнийЭлементМассива = Массив ; // ПроследнийЭлементМассива = ЭлементЧетыре Посмотреть все в категории Работа с Массивом, Структурой, Соответствием
1С 8.x : Сравнение двух структур


1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » — конкретный продукт, который выпускает компания 1С . Что такое Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора QR код в 1С 21
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог Библиотека кода: Сравнить две таблицы значений 0
//Сравнивает две таблицы значений // Функция ТаблицыЗначенийРавны(ТаблицаЗначений1, ТаблицаЗначений2) Экспорт Если ТипЗнч(ТаблицаЗначений1) Тип(«ТаблицаЗначений») ИЛИ ТипЗнч(ТаблицаЗначений2) Тип(«ТаблицаЗначений») Тогда Возв Битая ссылка, , Уникальный Идентификатор, GUID 74
Когда кто-то удаляет данные из базы без проверки ссылок на эти объекты, то везде где этот объект использовался появляется сообщение вида: Объект не найден (84:bf5600145e3710ab11dda4c605dbe824) . https://helpf.pro/uploads/img/_1-46z7I4U7Ww.png В Посмотреть все результаты поиска похожих
Еще в этой же категории
Массив ~ Как удалить повторяющиеся элементы массива? 8
Функция УдалитьПовторяющиесяЭлементыМассива(Массив) Экспорт ТекущийИндекс = 0; ВсегоЭлементов = Массив.Количество(); Пока ТекущийИндекс ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 ВсегоЭлементов Цикл Если Массив = Структура ~ Преобразовании Структуры в Таблицу Значений 5
//Струтура в ТЗ Функция СтруктураВТЗ(Структр) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить(» Значение» ); ТЗ.Колонки.Добавить(» Описание» ); Для Каждого ТекЭлем из Структр Цикл НовСтр=ТЗ.Добавить(); НовСтр.Значение = ТекЭлем.Ключ; НовСтр Структура ~ Создать структуру и добавить элементы 4
// Создание структуры СозданнаяСтруктура = Новый Структура; // Создание структуры и добавление элементов СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить(» Качество» , Качество); СтруктураОтбора.Вставить(» Номенклатура» , Номенкла Структура ~ Перебор элементов Структуры 3
Для Каждого Элемент из СтруктураПараметров Цикл Сообщить(Элемент.Ключ + » : » + Элемент.Значение); КонецЦикла; Массив ~ Как получить последний элемент массива 3
Массив = Новый Массив(); Массив.Добавить(» ЭлементОдин» ); Массив.Добавить(» ЭлементДва» ); Массив.Добавить(» ЭлементТри» ); Массив.Добавить(» ЭлементЧетыре» ); ПроследнийЭлементМассива = Массив ; // ПроследнийЭлементМассива = ЭлементЧетыре Посмотреть все в категории Работа с Массивом, Структурой, Соответствием