Имя: Пароль:
1C
1С v8
сравнить номенклатуру 1с 8,2
0 KonstantinK90
 
24.03.15
13:22
как правильно сделать мне нужно одним запросом выгрузить номенклатуру вот этот запрос
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
    |    РасходнаяНакладнаяТовары.Номенклатура
    |ИЗ
    |    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладная КАК РасходнаяНакладная
    |        ПО РасходнаяНакладнаяТовары.Ссылка = РасходнаяНакладная.Ссылка
    |ГДЕ
    |    РасходнаяНакладная.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    |    И РасходнаяНакладная.Проведен = &Истина
    |    И РасходнаяНакладная.Контрагент = &ман";
                                 
    Запрос.УстановитьПараметр("НачалоПериода"            ,ЗначениеПараметраНачалоПериода.Значение);
    Запрос.УстановитьПараметр("КонецПериода"             ,ЗначениеПараметраКонецПериода.Значение);
    Запрос.УстановитьПараметр("Истина"                   ,Истина);
    Запрос.УстановитьПараметр("ман"                      ,МАНТракЭндБасРУС);                                         //Справочники.Контрагенты.НайтиПоКоду("00000802"));                                                               //Справочники.ДоговорыКонтрагентов.НайтиПоКоду("00000802"));
    
    
     РезультатЗапроса = Запрос.Выполнить().Выбрать();
    
       Пока РезультатЗапроса.Следующий() Цикл

        КонецЦикла;
и второй запрос аналогичный только будет приходная накладная (документ) как правильно
1) выгрузить номенклатуру
2) и как правильно ее сравнить?
1 KonstantinK90
 
24.03.15
13:23
смысл таков если номенклатура совпала то тогда 1 иначе 0
2 фобка
 
24.03.15
13:25
Одним запросом всё делай
3 KonstantinK90
 
24.03.15
13:28
а как7
4 фобка
 
24.03.15
13:32
Семёрошник... Во первых у тебя в (0) лишее соединение, реквизиты шапки тащи через расхнакладнаястроки.ссылка.дата.
(3) "левое соединение"
5 KonstantinK90
 
24.03.15
13:36
если убрать лево соединение то тогда и убереться шапка а у меня стоит параметр контрагент
6 фобка
 
24.03.15
13:38
(5) ответ в (4), ты не дочитал. Посмотри запрос конструктором
7 KonstantinK90
 
24.03.15
13:39
ВЫБРАТЬ
    РасходнаяНакладнаяТовары.Номенклатура,
    РасходнаяНакладнаяТовары.Ссылка.Контрагент
ИЗ
    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
ГДЕ
    РасходнаяНакладнаяТовары.Ссылка.Контрагент = &контрагент
    И РасходнаяНакладнаяТовары.Ссылка.Дата МЕЖДУ &начало И &конец
8 KonstantinK90
 
24.03.15
13:39
вот так нужно ?
9 фобка
 
24.03.15
13:41
(8) верно. Теперь соединяй стаб частью  приходной накладной и тоже там через ссылку контрагента - если я правильно понял
10 KonstantinK90
 
24.03.15
13:43
ВЫБРАТЬ
    РасходнаяНакладнаяТовары.Номенклатура как НоменклатураРасход
ИЗ
    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
ГДЕ
    РасходнаяНакладнаяТовары.Ссылка.Контрагент = &контрагент
    И РасходнаяНакладнаяТовары.Ссылка.Дата МЕЖДУ &начало И &конец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПриходнаяНакладнаяТовары.Номенклатура как НоменклатураПриход
ИЗ
    Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары
ГДЕ
    ПриходнаяНакладнаяТовары.Ссылка.Контрагент = &контрагент
    И ПриходнаяНакладнаяТовары.Ссылка.Дата МЕЖДУ &начало И &Конец
11 KonstantinK90
 
24.03.15
13:43
вот так
12 фобка
 
24.03.15
13:44
(10) это пакетный запрос, а тебе заджойнить нужно.
Озвучь задачу, не так как в (0) а исходную
13 KonstantinK90
 
24.03.15
13:47
1)у меня задача взять номенклатуру из док. расходная за период 2) взять номенклатуру из док. приходная накладная за период и сравнить ее если есть совпадения в этом периоде тогда 1 иначе 0
14 фобка
 
24.03.15
13:48
(13) поставщик/покупатель не важен?
15 KonstantinK90
 
24.03.15
13:49
поставщик (контрагент важен)
16 KonstantinK90
 
24.03.15
13:53
???
17 фобка
 
24.03.15
13:57
Одним запросом не получится. Если только совпадения нужны то можно обойтись одним запросом. Оставляй (10)
18 KonstantinK90
 
24.03.15
14:01
вы мне скажите как правильно выгрузить в таблицу значений по очереди эти запроса и сравнить
19 фобка
 
24.03.15
14:03
Только учти колличество (группировка по номенклатуре, сумма по колву)
потом делаешь
результаты = запрос.выполнитьпакет();
Приходы = результаты[1].выгрузить();
Выборка = результаты[0].выбрать();
Пока выборка.следующий цикл
Массивстрок = приходы.найти(новый структура("номенклатура", выборка.номенклатура));
Если массивстрок.количество()=0 тогда // такой нет, 0
Иначе //1
Конецесли;
Конеццикла;
20 фобка
 
24.03.15
14:04
разбирайся кароч, устал на планшете набирать
21 KonstantinK90
 
24.03.15
14:08
хорошо спасибо буду разбираться
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший