// Сравнение 2-х стурктур // Возвращает структуру с полями которые отличаются и значением из сравниваемой // Если в стСравнимое нет нужного поля,то в результат добавляется поля = Неопределенно // стОсновная, стСравнимое - сравниваемые структуры // ДоПервойРазницы - ищет только одно отличие Функция СравнитьСтруктуры(стОсновная, стСравнимое,ДоПервойРазницы = Ложь) Экспорт Результат = Новый Структура; Для каждого текПоле из стОсновная цикл ЗначениеСравнение = ?(стСравнимое.Свойство(текПоле.Ключ), стСравнимое[текПоле.Ключ], Неопределено); Если текПоле.Значение ЗначениеСравнение тогда Результат .Вставить(текПоле.Ключ,ЗначениеСравнение); Если ДоПервойРазницы тогда Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции
// Сравнивает два массива однотипных значений (кроме коллекций значений) // // Параметры: // ПервыйМассив,ВторойМассив - сравниваемые массивы // // Возвращаемое значение: // булево. // Функция МассивыИдентичны(ПервыйМассив,ВторойМассив) Экспорт ЭлементовМассива = ПервыйМассив.Количество(); МассивыСовпадают = (ЭлементовМассива = ВторойМассив.Количество()); Если МассивыСовпадают Тогда Для Сч = 1 По ЭлементовМассива Цикл Если ПервыйМассив[Сч-1] <> ВторойМассив[Сч-1] Тогда Возврат Ложь КонецЕсли; КонецЦикла; КонецЕсли; Возврат МассивыСовпадают КонецФункции
// сравнение значений перечислений на больше/меньше // применяется для перечислений, для которых последовательность // значений имеет определяющее значение // // Параметры: // Значение1, Значение2 - сравниваемые значения перечислений // // Возвращаемое значение: число // 1 - если Значение1 > Значение2 // -1 - если Значение1 < Значение2 // 0 - если Значение1 = Значение2 // Функция СравнениеПеречислений(Значение1, Значение2) Экспорт ИмяПеречисления = Метаданные.НайтиПоТипу(ТипЗнч(Значение1)).Имя; Менеджер = Перечисления[ИмяПеречисления]; Если Менеджер.Индекс(Значение1) > Менеджер.Индекс(Значение2) Тогда Возврат 1; ИначеЕсли Менеджер.Индекс(Значение1) < Менеджер.Индекс(Значение2) Тогда Возврат -1; Иначе Возврат 0; КонецЕсли; КонецФункции