Имя: Пароль:
1C
1С v8
ТЧ и регистр сведений
,
0 Valerian5557
 
07.06.16
11:51
Здравсвуйте!
Есть ТЧ в ней реквизиты: номенклатура,характеристика, количество
И есть такой же Регистр с такими же измерениями.
Надо обойти эту ТЧ так что бы удалились те строки которые есть в Регистре. Фрагмент кода
Подскажите как бы это сделать по лучше
        Для Каждого стр из Товары Цикл
        
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПроверкаСроковГодности.Номенклатура,
        |    ПроверкаСроковГодности.ХарактеристикаНоменклатуры,
        |    ПроверкаСроковГодности.Склад,
        |    ПроверкаСроковГодности.Количество,
        |    ПроверкаСроковГодности.Проверил
        |ИЗ
        |    РегистрСведений.ПроверкаСроковГодности КАК ПроверкаСроковГодности
        |ГДЕ
        |    ПроверкаСроковГодности.Номенклатура = &Номенклатура
        |    И ПроверкаСроковГодности.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
        |    И ПроверкаСроковГодности.Склад = &Склад
        //|    И ПроверкаСроковГодности.Количество = &Количество
        |    И ПроверкаСроковГодности.Проверил = &Проверил";
    
    Запрос.УстановитьПараметр("Количество", стр.Количество);
    Запрос.УстановитьПараметр("Номенклатура", стр.Номенклатура);
    //Запрос.УстановитьПараметр("Проверил", Истина);
    Запрос.УстановитьПараметр("Склад", стр.Склад);
    Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", стр.ХарактеристикаНоменклатуры);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

        
    КонецЦикла;
    



        
        
        
        
        
        КонецЦикла;
1 itlikbez
 
07.06.16
11:53
(0) Получше - это когда запрос находится перед циклом.
2 Mort
 
07.06.16
11:56
Выгрузить ТЧ в ТЗ
Поместить ТЗ в временную таблицу в запросе
Выбрать строки из регистра, которые входят в ТЗ и поместить во вторую таблицу
Выбрать строки из первой таблицы, которые не вошли во вторую.


Можно сразу выбрать записи из ТЗ, которых нет в регистре, но имхо будет медленнее работать если регистр большой.
3 Valerian5557
 
07.06.16
12:49
(2) Спасибо.
4 Valerian5557
 
08.06.16
16:48
Что то не получается разобраться с соединениями. У регистра 3 измерения и у строки 3 измерения. Как правильно сделать соединение ? Иии может как то по другому подойти к задаче?
Нужно выбрать только те записи которые отсутсвуют в регистре сведений.
вот код:
"ВЫБРАТЬ
        |    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        |    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
        |    ТоварыНаСкладахОстатки.Склад КАК Склад,
        |    ТоварыНаСкладахОстатки.Номенклатура.УсловьяВозврата КАК УсловьяВозврата
        |ПОМЕСТИТЬ Вт
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекущаяДата1, ХарактеристикаНоменклатуры.СрокГодности МЕЖДУ &ТекущаяДата1 И ДОБАВИТЬКДАТЕ(&ТекущаяДата1, МЕСЯЦ, Номенклатура.УсловьяВозврата)) КАК ТоварыНаСкладахОстатки
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ.Номенклатура КАК Номенклатура,
        |    ВТ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        |    ВТ.Количество КАК Количество,
        |    ВТ.Склад КАК Склад
        |ИЗ
        |    Вт КАК ВТ
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПроверкаСроковГодности КАК ПроверкаСроковГодности
        |        ПО ВТ.Номенклатура <> ПроверкаСроковГодности.Номенклатура
        |            И ВТ.ХарактеристикаНоменклатуры <> ПроверкаСроковГодности.ХарактеристикаНоменклатуры
        |            И ВТ.Склад <> ПроверкаСроковГодности.Склад
        |
        |УПОРЯДОЧИТЬ ПО
        |    Номенклатура
5 Valerian5557
 
08.06.16
16:50
когда делаю связь например по характеристике то всё прекрасно работает. а когда делаю и по номенклатуре и по характеристике то уже нечего не выводит запрос. Может у кого нить будет идея как решить.
6 catena
 
08.06.16
16:51
(4) зачем неравно то? Связь по равно и естьnull.
7 catena
 
08.06.16
16:51
И соединение левое
8 Mort
 
08.06.16
16:53
Нах соединения.
9 Valerian5557
 
08.06.16
16:55
А как тогда выбрать выбрать те записи которые отсутсвуют в регистре?
10 catena
 
08.06.16
16:55
(9)естьnull
11 Mort
 
08.06.16
17:03
(9)

ГДЕ НЕ (ТЗ.Номенклатура, ТЗ.Характеристика) В (ВЫБРАТЬ Номенуклатура, Характеристика из регистр... и т.д.)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший