Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как запросом выбрать номера, у которых построчно совпадают значения в табличной части?

Как запросом выбрать номера, у которых построчно совпадают значения в табличной части?
Я
   1сЮлия
 
27.05.19 - 13:02
Добрый день! Мне нужно все номера, у которых совпадают показатели и значения показателей построчно .К примеру: ВЫБРАТЬ
    СертификацияНоменклатурыАнализы.ЗначениеПоказателя КАК ЗначениеПоказателя,
    СертификацияНоменклатурыАнализы.ПоказательАнализа КАК ПоказательАнализа
ИЗ
    Документ.СертификацияНоменклатуры.Анализы КАК СертификацияНоменклатурыАнализы
ГДЕ
    СертификацияНоменклатурыАнализы.Ссылка.Подразделение = &Подразделение
    И СертификацияНоменклатурыАнализы.Ссылка.Номенклатура = &Номенклатура
    И СертификацияНоменклатурыАнализы.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
    И ДЕНЬ(СертификацияНоменклатурыАнализы.Ссылка.Дата) = &Дата
    И СертификацияНоменклатурыАнализы.Ссылка.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
    СертификацияНоменклатурыАнализы.ЗначениеПоказателя,
    СертификацияНоменклатурыАнализы.ПоказательАнализа

УПОРЯДОЧИТЬ ПО
    ПоказательАнализа
 
 
   Ёпрст
 
1 - 27.05.19 - 13:08
(0) Совпадают  с чем ?
   1сЮлия
 
2 - 27.05.19 - 13:15
Все номера деталей, у которых одинаковые значения   СертификацияНоменклатурыАнализы.ЗначениеПоказателя,
    СертификацияНоменклатурыАнализы.ПоказательАнализа,анализов. К примеру
номер 000003 у него ГраницаТек =350, ВремСопроитвление = 35 и у номера 00013 тоже ГраницаТек =350,ремСопроитвление = 35 эти все показатели и их значения сидят в табличной части и построчно указаны
   RomanYS
 
3 - 27.05.19 - 13:17
(2) посчитать количество совпадающих показателей и сравнить с количеством строк
   1сЮлия
 
4 - 27.05.19 - 13:19
Показатели у всех в табличной части одинаковые,значения разные
   Ёпрст
 
5 - 27.05.19 - 14:11
(2) ниосилил, что с чем сравнивать надо ?
   Ёпрст
 
6 - 27.05.19 - 14:18
(0) хз, что вам надо, возможно так, что ле ?

Выбрать
    СертификацияНоменклатурыАнализы.ЗначениеПоказателя КАК ЗначениеПоказателя, 
    СертификацияНоменклатурыАнализы.ПоказательАнализа КАК ПоказательАнализа, 
    СертификацияНоменклатурыАнализы.НомерСтроки КАК НомерСтроки 
ИЗ 
    Документ.СертификацияНоменклатуры.Анализы КАК СертификацияНоменклатурыАнализы 
ГДЕ
    СертификацияНоменклатурыАнализы.Ссылка.Подразделение = &Подразделение 
    И СертификацияНоменклатурыАнализы.Ссылка.Номенклатура = &Номенклатура 
    И ДЕНЬ(СертификацияНоменклатурыАнализы.Ссылка.Дата) = &Дата 
    И СертификацияНоменклатурыАнализы.Ссылка.Проведен
    И (СертификацияНоменклатурыАнализы.ЗначениеПоказателя,СертификацияНоменклатурыАнализы.ПоказательАнализа) В (
Выбрать
    СертификацияНоменклатурыАнализы.ЗначениеПоказателя, 
    СертификацияНоменклатурыАнализы.ПоказательАнализа 
ИЗ 
    Документ.СертификацияНоменклатуры.Анализы КАК СертификацияНоменклатурыАнализы 
ГДЕ 
    СертификацияНоменклатурыАнализы.Ссылка.Подразделение = &Подразделение 
    И СертификацияНоменклатурыАнализы.Ссылка.Номенклатура = &Номенклатура 
    И ДЕНЬ(СертификацияНоменклатурыАнализы.Ссылка.Дата) = &Дата 
    И СертификацияНоменклатурыАнализы.Ссылка.Проведен
СГРУППИРОВАТЬ ПО 
    СертификацияНоменклатурыАнализы.ЗначениеПоказателя, 
    СертификацияНоменклатурыАнализы.ПоказательАнализа 
Имеющие Количество (СертификацияНоменклатурыАнализы.ПоказательАнализа)>1
)


   Бишбармак
 
7 - 27.05.19 - 14:34
(6) Не угадал. :)
Надо из табличной части Анализы, документа СертификацияНоменклатуры, выбрать номера строк в которых значения реквизитов ЗначениеПоказателя и ПоказательАнализа совпадают попарно.
№. ГраницаТек. ВремСопр
1. 3500        35
2. 3000        38
3. 3000        35
4. 3500        35
5. 3500        33
Необходимо вывести 
1. 3500        35
4. 3500        35

Запросом сравнить таблицу саму с собой с условием по двум полям (во вложенном запросе или через ВТ без разницы).
Как-то так.
   RomanYS
 
8 - 27.05.19 - 14:38
(7) )))думаю тоже мимо. ИМХО задача найти документы, у которых идентичное содержание ТЧ (без учет сортировки).
   Ёпрст
 
9 - 27.05.19 - 14:40
(7) ты не поверишь, но именно это и выведет
   Ёпрст
 
10 - 27.05.19 - 14:42
добавить только в группировку ссылку на документ и в условие
   Ёпрст
 
11 - 27.05.19 - 14:43
Выбрать
    СертификацияНоменклатурыАнализы.ЗначениеПоказателя КАК ЗначениеПоказателя, 
    СертификацияНоменклатурыАнализы.ПоказательАнализа КАК ПоказательАнализа, 
    СертификацияНоменклатурыАнализы.НомерСтроки КАК НомерСтроки 
ИЗ 
    Документ.СертификацияНоменклатуры.Анализы КАК СертификацияНоменклатурыАнализы 
ГДЕ
    СертификацияНоменклатурыАнализы.Ссылка.Подразделение = &Подразделение 
    И СертификацияНоменклатурыАнализы.Ссылка.Номенклатура = &Номенклатура 
    И ДЕНЬ(СертификацияНоменклатурыАнализы.Ссылка.Дата) = &Дата 
    И СертификацияНоменклатурыАнализы.Ссылка.Проведен
    И (СертификацияНоменклатурыАнализы.Ссылка,СертификацияНоменклатурыАнализы.ЗначениеПоказателя,СертификацияНоменклатурыАнализы.ПоказательАнализа) В (
Выбрать
    СертификацияНоменклатурыАнализы.Ссылка,
    СертификацияНоменклатурыАнализы.ЗначениеПоказателя, 
    СертификацияНоменклатурыАнализы.ПоказательАнализа 
ИЗ 
    Документ.СертификацияНоменклатуры.Анализы КАК СертификацияНоменклатурыАнализы 
ГДЕ 
    СертификацияНоменклатурыАнализы.Ссылка.Подразделение = &Подразделение 
    И СертификацияНоменклатурыАнализы.Ссылка.Номенклатура = &Номенклатура 
    И ДЕНЬ(СертификацияНоменклатурыАнализы.Ссылка.Дата) = &Дата 
    И СертификацияНоменклатурыАнализы.Ссылка.Проведен
СГРУППИРОВАТЬ ПО 
    СертификацияНоменклатурыАнализы.Ссылка,
    СертификацияНоменклатурыАнализы.ЗначениеПоказателя, 
    СертификацияНоменклатурыАнализы.ПоказательАнализа 
Имеющие Количество (СертификацияНоменклатурыАнализы.Ссылка)>1
)

   Йохохо
 
12 - 27.05.19 - 14:45
(11) но если совпадений больше 2 табличка перестает быть читаемой)
   Ёпрст
 
13 - 27.05.19 - 14:59
(12) нужно выяснить, чего тс хочет, пока не ясно
   1сЮлия
 
14 - 27.05.19 - 16:34
Мне нужно выгрузить информацию с одних документов старых и загрузить в новые самописные,ранее велся учет в доке сертификация номенклатуры,там еще была табличная часть Анализы заполнялись механические анализы на один номер детали,теперь мы добавили самописный док ОперацияКВЛ, у которого номера деталей в табличной части серии,а анализы в табличной части Анализы,мне нужно со старых доков выгрузить Анализы и загрузить их в новый док предварительно сгруппровав их в одном доке ОперацияКВЛ,в табличной части Анализы должный быть Анализы,которые распространяются на номера деталей,которые находятся в табличной части Серии  
Я добавила запрос,в котором я получаю значения всех показателей Анализов за период
Функция ПолучитьМехИспытания(Подразделение,Номенклатура,Дата)
    перем ПоказательАнализа,ЗначениеПоказателя;    
    МехАнализы = Новый ТаблицаЗначений; 
    МехАнализы.Колонки.Добавить("ПоказательАнализа");
    МехАнализы.Колонки.Добавить("ЗначениеПоказателя");

    Запрос = Новый Запрос;
    Запрос.Текст = 

      "ВЫБРАТЬ
      |    СертификацияНоменклатурыАнализы.ЗначениеПоказателя КАК ЗначениеПоказателя,
      |    СертификацияНоменклатурыАнализы.ПоказательАнализа КАК ПоказательАнализа
      |ИЗ
      |    Документ.СертификацияНоменклатуры.Анализы КАК СертификацияНоменклатурыАнализы
      |ГДЕ
      |    СертификацияНоменклатурыАнализы.Ссылка.Подразделение = &Подразделение
      |    И СертификацияНоменклатурыАнализы.Ссылка.Номенклатура = &Номенклатура
      |    И СертификацияНоменклатурыАнализы.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
      |    И ДЕНЬ(СертификацияНоменклатурыАнализы.Ссылка.Дата) = &Дата
      |    И СертификацияНоменклатурыАнализы.Ссылка.Проведен = ИСТИНА
      |
      |СГРУППИРОВАТЬ ПО
      |    СертификацияНоменклатурыАнализы.ЗначениеПоказателя,
      |    СертификацияНоменклатурыАнализы.ПоказательАнализа
      |
      |УПОРЯДОЧИТЬ ПО
      |    ПоказательАнализа";
    
    Запрос.УстановитьПараметр("Подразделение",Подразделение);
    Запрос.УстановитьПараметр("Номенклатура",Номенклатура);
    Запрос.УстановитьПараметр("Дата",Дата);
    Запрос.УстановитьПараметр("НачДата",НачалоПериода);
    Запрос.УстановитьПараметр("КонДата",КонецПериода);
     
    ВыборкаМехИспытания = Запрос.Выполнить();    
    
    Если  Не (ВыборкаМехИспытания.Пустой()) Тогда
        
        МехАнализы = ВыборкаМехИспытания.Выгрузить();
        Возврат МехАнализы;
        
    КонецЕсли
КонецФункции    
2 Далее     ТиповойАнализ = Справочники.ТиповыеАнализыНоменклатуры.НайтиПоНаименованию("Механические свойства");
            
ОперацииКВЛАнализы = ПолучитьМехИспытания(Строка.Подразделение,Строка.Номенклатура,Строка.День);                
            
                    
       Границы = Новый Массив;
           Сопротивление = Новый Массив;
           Растяжение = Новый Массив;
           Сужение =  Новый Массив;
           Вязкость =  Новый Массив;
  
           Для Каждого Строка Из ОперацииКВЛАнализы Цикл
                Если Найти(Строка.ПоказательАнализа, "Граница текучести, МПа") Тогда
                    Границы.Добавить(Строка.ЗначениеПоказателя) ;
                ИначеЕсли Найти(Строка.ПоказательАнализа, "Временное сопротивление") Тогда
                    Сопротивление.Добавить(Строка.ЗначениеПоказателя);
                ИначеЕсли Найти(Строка.ПоказательАнализа, "Относительное растяжение") Тогда
                    Растяжение.Добавить(Строка.ЗначениеПоказателя); 
                ИначеЕсли Найти(Строка.ПоказательАнализа, "Относительное сужение") Тогда
                    Сужение.Добавить(Строка.ЗначениеПоказателя);
                ИначеЕсли Найти(Строка.ПоказательАнализа, "Ударная вязкость") Тогда
                    Вязкость.Добавить(Строка.ЗначениеПоказателя);
                КонецЕсли;
          КонецЦикла;

                            
            Для Сч =0 По Границы.ВГраница() Цикл
                
                   НовыйДокумент = Документы.аэсОперацияКВЛ.СоздатьДокумент();
                    
                    НовыйДокумент.ВидОперации = Перечисления.аэсВидыОперацийКВЛ.МеханическиеИспытания;
                    
                    Для Каждого ТекПоказатель Из ТиповойАнализ.ПоказателиАнализа Цикл
                        
                        Если  (ТекПоказатель.ПоказательАнализа.Наименование = "Граница текучести, МПа") Тогда 
                               Значение     = Границы[Сч];
                        иначеЕсли (ТекПоказатель.ПоказательАнализа.Наименование =    "Временное сопротивление")тОГДА
                               Значение  = Сопротивление[Сч];
                        иначеЕсли    (ТекПоказатель.ПоказательАнализа.Наименование = "Относительное растяжение") Тогда 
                               Значение = Растяжение[Сч];
                        иначеЕсли  (ТекПоказатель.ПоказательАнализа.Наименование = "Ударная вязкость") Тогда
                               Значение     = Вязкость[Сч];
                        КонецЕсли;       
                        
                        НоваяСтрока = НовыйДокумент.Анализы.Добавить();
                        НоваяСтрока.ПоказательАнализа = ТекПоказатель.ПоказательАнализа;
                        НоваяСтрока.ЗначениеПоказателя = Значение;
                        УстановитьТипЗначенияПоказателяВСтроке(НоваяСтрока);
                        НоваяСтрока.ЕдиницаИзмерения =
                            ?(  НоваяСтрока.ПоказательАнализа.ВидРезультатаАнализа = ПланыВидовХарактеристик.ВидыРезультатовАнализаНоменклатуры.ЧислоВИнтервале
                            ИЛИ НоваяСтрока.ПоказательАнализа.ВидРезультатаАнализа = ПланыВидовХарактеристик.ВидыРезультатовАнализаНоменклатуры.Погрешность
                            ИЛИ НоваяСтрока.ПоказательАнализа.ВидРезультатаАнализа = ПланыВидовХарактеристик.ВидыРезультатовАнализаНоменклатуры.Поддиапазон,
                                НоваяСтрока.ПоказательАнализа.ЕдиницаИзмерения,
                                Неопределено);
                                
                   КонецЦикла;
            //    

            //СерииАнализ = ОтобратьСерииПоАнализам(ОперацииКВЛАнализы);

            //

            //Для Каждого Стр из СерииАнализ Цикл

            //    ЗаполнитьЗначенияСвойств(НовыйДокумент.Серии.Добавить(), Стр);

            //КонецЦикла;

            //НовыйДокумент.Дата = ДатаДок;

            //НовыйДокумент.Организация = Организация;

            //

                Попытка
                     НовыйДокумент.Записать();
                  Исключение
                    Сообщить(ОписаниеОшибки());
                КонецПопытки;
            КонецЦикла;
   1сЮлия
 
15 - 27.05.19 - 16:38
2 Я заполняю по показателям документы создаются столько, сколько различных показателей показатели заполняются,ну как то не правильно мне кажется ,сдесь ,что то не так Для Каждого ТекПоказатель Из ТиповойАнализ.ПоказателиАнализа Цикл
                        
                        Если  (ТекПоказатель.ПоказательАнализа.Наименование = "Граница текучести, МПа") Тогда 
                               Значение     = Границы[Сч];
                        иначеЕсли (ТекПоказатель.ПоказательАнализа.Наименование =    "Временное сопротивление")тОГДА
                               Значение  = Сопротивление[Сч];
                        иначеЕсли    (ТекПоказатель.ПоказательАнализа.Наименование = "Относительное растяжение") Тогда 
                               Значение = Растяжение[Сч];
                        иначеЕсли  (ТекПоказатель.ПоказательАнализа.Наименование = "Ударная вязкость") Тогда
                               Значение     = Вязкость[Сч];
                        КонецЕсли;
   1сЮлия
 
16 - 27.05.19 - 16:40
Потом нужно выгрузить серии,(номера деталей),которые соответствую показателям

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.