| 
    
            
         
         | 
    
  | 
Сравнения Массивов | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Profenixxx    
     04.07.14 
            ✎
    18:47 
 | 
         
        Добрый день!
 
        Подскажите пожалуйста схему следующей отработки Есть 2 ва Массива в них разные данные, как можно получить объект которого нет в 1ом массиве, например: 1 Массив: 1.Апельсин 2.Мандарин 2Массив: 1.Апельсин 2.Мандарин 3.Яблоко Т.е. Получить яблоко, я обычно сравниваю только массивы но получаю либо истину либо ложь, но мне необходимо еще получить название не имеющегося элемента массива при исключении.  | 
|||
| 
    1
    
        Wobland    
     04.07.14 
            ✎
    18:49 
 | 
         
        таб2 левое таб1 где таб1 есть нулл?     
         | 
|||
| 
    2
    
        Господин ПЖ    
     04.07.14 
            ✎
    18:52 
 | 
         
        (1) + затолкать в запрос     
         | 
|||
| 
    3
    
        Wobland    
     04.07.14 
            ✎
    18:56 
 | 
         
        готов спорить, что массивы для данных автор выбирал сам и бывал немного неправ     
         | 
|||
| 
    4
    
        Profenixxx    
     04.07.14 
            ✎
    18:58 
 | 
         
        Да может. Я использовал Массив для хранения значения 2х баз. Т.е. я беру Запросом значение в одной базе и в Основной, вгоняю их в массив и сравниваю.
 
        Это корректно?  | 
|||
| 
    5
    
        Wobland    
     04.07.14 
            ✎
    18:59 
 | 
         
        (4) доставай запросом ТЗ оттуда, загоняй еёв запрос здесь и сравнивай     
         | 
|||
| 
    6
    
        acsent    
     04.07.14 
            ✎
    19:00 
 | 
         
        если они отсортированы, то можно общим проходом сравнить их и вывести различи     
         | 
|||
| 
    7
    
        Profenixxx    
     04.07.14 
            ✎
    19:02 
 | 
         
        ЗначениеВСтрокуВнутр(Массив1Базы) = ЗначениеВСтрокуВнутр(Массив2Базы)
 
        В массивах хранятся наименования этих элементов. Каким общим проходом можно их сравнить?  | 
|||
| 
    8
    
        Wobland    
     04.07.14 
            ✎
    19:03 
 | 
         
        (7) не знаешь, как работают циклы?     
         | 
|||
| 
    9
    
        Profenixxx    
     04.07.14 
            ✎
    19:03 
 | 
         
        Циклами туда и загонял наименования с запросом     
         | 
|||
| 
    10
    
        mdocs    
     04.07.14 
            ✎
    19:14 
 | 
         
        Две зависимые базы должны сравниваться по UID, остальное велосипед     
         | 
|||
| 
    11
    
        Wobland    
     04.07.14 
            ✎
    19:16 
 | 
         
        бывает на свете КД... но что там делает автор, мы не в курсе     
         | 
|||
| 
    12
    
        Profenixxx    
     04.07.14 
            ✎
    19:21 
 | 
         
        Пример моего кода
 
        //Подключаюсь к 1ой базе, получаю данные ЗапросУдаленнаяБаза = ОткрытаяИБ.NewObject("Запрос", "ВЫБРАТЬ | Поступление.Номер |ИЗ | Документ.Поступление КАК Поступление"); Результат1 = ЗапросУдаленнаяБаза.Выполнить(); ВыборкаДетальныеЗаписи1 = Результат1.Выбрать(); Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл //Забрасываю все номера в массив для сравнения Массив1Базы.Добавить(ВыборкаДетальныеЗаписи1.Номер); КонецЦикла; /// Делаю еще один запрос в основной базе Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Поступление.Номер |ИЗ | Документ.Поступление КАК ПоступлениеНМА"); Результат1 = ЗапросУдаленнаяБаза.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл //Заганяю во 2ой массив Массив2Базы.Добавить(ВыборкаДетальныеЗаписи.Номер); КонецЦикла; Делаю сравнения Если ЗначениеВСтрокуВнутр(Массив1Базы) = ЗначениеВСтрокуВнутр(Массив2Базы)  | 
|||
| 
    13
    
        Profenixxx    
     04.07.14 
            ✎
    19:22 
 | 
         
        Разборка по номерам массив бессмыслен, либо что то я недогоняю.     
         | 
|||
| 
    14
    
        Wobland    
     04.07.14 
            ✎
    19:28 
 | 
         
        >ЗначениеВСтрокуВнутр(Массив1Базы) = ЗначениеВСтрокуВнутр(Массив2Базы)
 
        ты вот это назвал сравнением? даже не поинтересовавшись, что там у массивов внутри  | 
|||
| 
    15
    
        Profenixxx    
     04.07.14 
            ✎
    19:34 
 | 
         
        У массивов Тип строка, с нужными номерами.     
         | 
|||
| 
    16
    
        Эмбеддер    
     04.07.14 
            ✎
    19:34 
 | 
         
        в чем проблема, не пойму
 
        2 цикла последовательно - по 1-му массиву и по 2-му. если элемент из 1-го массива не найден во 2-м массиве (используя Найти), значит он отсутствует в другом массиве  | 
|||
| 
    17
    
        Wobland    
     04.07.14 
            ✎
    19:36 
 | 
         
        (16) а массивы обязательно?;)     
         | 
|||
| 
    18
    
        МихаилМ    
     04.07.14 
            ✎
    19:44 
 | 
         
        (0)
 
        выгрузить в тз далее искать на форуме темы типа "сравнить 2 тз"  | 
|||
| 
    19
    
        МихаилМ    
     04.07.14 
            ✎
    19:45 
 | 
         
        (16)
 
        найти - это тот же цикл. тогда уж отсортировать и без найти.  | 
|||
| 
    20
    
        Эмбеддер    
     04.07.14 
            ✎
    19:46 
 | 
         
        (17) массивы уже есть в условии задачи
 
        не нравятся массивы - можно сделать таблицу значений, перенести в нее значения в колонку и сделать 2 колонки "Количество1, Количество2". и свернуть таблицу ТЗ.Свернуть("Элемент", "Количество1, Количество2") второй вариант скорей всего медленнее, но я бы воспользовался им  | 
|||
| 
    21
    
        Эмбеддер    
     04.07.14 
            ✎
    19:48 
 | 
         
        (19) "найти - это тот же цикл" - зависит от реализации. тогда уж сортировка в таблице, если требуется гарантированно линейная сложность (время)     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |