Имя: Пароль:
1C
 
Запрос на подчиненный документ.
0 antihacker
 
26.03.16
14:23
Всем привет ! Есть документ заказ покупателя.

От туда вытаскиваю количество номенклатур

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


Но как здесь переделать запрос, что бы он брал те заказы на которых нет  реализации ?
1 Aleksandr N
 
26.03.16
14:26
(0) В смысле? Что здесь есть реализация?
2 antihacker
 
26.03.16
14:28
Ну на основание заказа создают реализация товаров. Это и есть.
3 antihacker
 
26.03.16
14:35
Ну хотя бы заказы вообще без подчиненных документов...
4 ДенисЧ
 
26.03.16
14:35
левое соединение реализация
по реализация.Заказ = номенклатуры.ссылка
где реализация есть NULL
5 antihacker
 
26.03.16
14:40
Левое соединение ?

ЗапросНомВЗаказе.Текст="
    |ВЫБРАТЬ
    |СУММА(Номенклатуры.Количество) КАК СуммаКоличествоНоменклатуры    
    |ИЗ
    |Документ.ЗаказПокупателя.Товары КАК Номенклатуры
    |ГДЕ
    | Номенклатуры.Ссылка.ПРОВЕДЕН=ИСТИНА И Номенклатуры.Ссылка.СкладГруппа=&Склад И Номенклатуры.Номенклатура=&Номенклатура И Номенклатуры.Ссылка.Дата>=&ДатаНачало И  Номенклатуры.Ссылка.Дата<=&ДатаКонца

ИЗ (Номенклатуры.РеализацияТоваровИУслуг КАК РеализацияТоваровИУслуг
           Левое соединение Документ.РеализацияТоваровИУслуг как РеализацияТоваровИУслуг ЕСТЬ NULL)
    | СГРУППИРОВАТЬ ПО Номенклатура";
6 antihacker
 
26.03.16
14:40
Не работает
7 ДенисЧ
 
26.03.16
14:41
(6) Радуйся, что 1с не может вылезти из экрана и набить тебе морду за такой запрос...
8 antihacker
 
26.03.16
14:43
а как  ))) Не делал левое соединение на подчиненного
9 antihacker
 
26.03.16
14:43
никогда
10 RomanYS
 
26.03.16
14:44
(0) есть регистр заказы покупателей. Остатки по нему - то, что ещё не отгрузили.
11 antihacker
 
26.03.16
14:48
Это где тип регистратор должен быть заказ ?
Как в запросе указать тип документа ?
12 RomanYS
 
26.03.16
14:52
(11) если ты про (10), то там есть измерение "Заказ". Убери руки от конфигуратора, возьми отчет по заказам - там всё есть. В крайнем случае универсальный отчет по регистру.
13 antihacker
 
26.03.16
15:05
Делаю вот так

        ЗапросНомВЗаказе=Новый Запрос;
    
    ЗапросНомВЗаказе.Текст=
            "ВЫБРАТЬ
            |   ТоварыНаЗаказах.Номенклатура КАК Номенклатура ,
            |   ТоварыНаЗаказах.КоличествоОстаток КАК КоличествоОстаток
            //|   ТоварыНаЗаказах.Склад КАК Склад                
            |ИЗ
            |РегистрНакопления.ЗаказыПокупателей.Остатки(    
            |            &ДатаКонца,
            //|            Склад В (&выбСписСклады)            
            |                ) КАК ТоварыНаЗаказах
            |        ГДЕ  ТоварыНаЗаказах.ЗаказПокупателя.СкладГруппа = &выбСписСклады И ТоварыНаЗаказах.Номенклатура = &СписокНоменклатурТЗ И ТоварыНаЗаказах.ЗаказПокупателя.Дата>=&ДатаНачало И  ТоварыНаЗаказах.ЗаказПокупателя.Дата<=&ДатаКонца";

    
    ЗапросНомВЗаказе.УстановитьПараметр("СписокНоменклатурТЗ",вхНоменклатура);
    ЗапросНомВЗаказе.УстановитьПараметр("выбСписСклады",вхСклад);    
    ЗапросНомВЗаказе.УстановитьПараметр("ДатаНачало",НачалоДня(ТекущаяДата()));
    ЗапросНомВЗаказе.УстановитьПараметр("ДатаКонца",КонецДня(ТекущаяДата()));
    
    Рез=ЗапросНомВЗаказе.Выполнить().Выбрать();
    
    Пока Рез.Следующий() Цикл
        
    сообщить(Рез.КоличествоОстаток);    
        
    КонецЦикла;    



Запрос пустой
14 ДенисЧ
 
26.03.16
15:11
ТоварыНаЗаказах.Номенклатура = &СписокНоменклатурТЗ

???
15 antihacker
 
26.03.16
15:17
RomanYS, что значит остатки по нему ? Это количество не отгруженных товаров ?
16 RomanYS
 
26.03.16
15:19
(14) я не удивлюсь, если  в параметрах наименования через запятую.
(13) в (12) абсолютно серьезное предложение - результат будет точно лучше
(15) да заказано, но не отгружено
17 antihacker
 
26.03.16
15:23
Но почему то возвраты по товарам зависают в остатке не загруженных. Почему ?
18 RomanYS
 
26.03.16
15:28
(17) потому что обязательства(отгрузить товар) по заказу не выполнено. Корректируй заказ, если не планируешь доотгружать возвращенное.
19 antihacker
 
26.03.16
15:31
корректировать заказ ? Что означает ?  Ведь нам потом нужно будет знать сколько заказно а сколько вернули
20 RomanYS
 
26.03.16
15:38
(19) блин посмотри на движения по регистру, включи голову.
Приход - заказано,
расход - отгружено,
приход с минусом - уменьшение(корректировка) заказа,
расход с минусом - возврат.
Обороты можно анализировать по типу регистратора, виду операции, ещё чему-то (я даже не знаю какая у тебя конфа).
21 antihacker
 
26.03.16
15:45
Нет все так и давайте вернемся на вопрос -"Но как здесь переделать запрос, что бы он брал те заказы на которых нет  реализации " ?

А ?
22 RomanYS
 
26.03.16
15:49
где НЕ Заказы.Ссылка в
(Выбрать различные Док.Сделка из Документы.Реализация)

либо (4)
23 antihacker
 
02.04.16
13:43
RomanYS , что означает Док.Сделка  ?
24 antihacker
 
02.04.16
13:52
Делаю так
    ЗапросНомВЗаказе.Текст="
    |ВЫБРАТЬ
    |СУММА(Номенклатуры.Количество) КАК СуммаКоличествоНоменклатуры    
    |ИЗ
    |Документ.ЗаказПокупателя.Товары КАК Номенклатуры
    |ГДЕ
    |НЕ Номенклатуры.Ссылка В (Выбрать Различные Документ.Сделка из Документ.РеализацияТоваровУслуг) И
    |Номенклатуры.Ссылка.ПРОВЕДЕН=ИСТИНА И Номенклатуры.Ссылка.СкладГруппа=&Склад И Номенклатуры.Номенклатура=&Номенклатура И Номенклатуры.Ссылка.Дата>=&ДатаНачало И  Номенклатуры.Ссылка.Дата<=&ДатаКонца
    | СГРУППИРОВАТЬ ПО Номенклатура";

Ругаеться
Поле не найдено "Документ.Сделка"
НЕ Номенклатуры.Ссылка В (Выбрать Различные <<?>>Документ.Сделка из Документ.РеализацияТоваровУслуг) И
25 RomanYS
 
02.04.16
13:55
(23) В УТ10, УПП и КА1 так в реализации называется ссылка на заказ.
26 RomanYS
 
02.04.16
13:57
..(Выбрать Различные Док.Сделка<ИлиКакУТебяНазываетсяСсылкаНаЗаказ> из Документ.РеализацияТоваровУслуг КАК Док)
27 antihacker
 
02.04.16
14:06
Теперь нет ошибки и результата тоже не дает.

    ЗапросНомВЗаказе.Текст="
    |ВЫБРАТЬ
    |СУММА(Номенклатуры.Количество) КАК СуммаКоличествоНоменклатуры    
    |ИЗ
    |Документ.ЗаказПокупателя.Товары КАК Номенклатуры
    |ГДЕ
    |НЕ Номенклатуры.Ссылка В (Выбрать Различные РТ.Сделка.ЗаказПокупателя ИЗ Документ.РеализацияТоваровУслуг КАК РТ) И
    |Номенклатуры.Ссылка.ПРОВЕДЕН=ИСТИНА И Номенклатуры.Ссылка.СкладГруппа=&Склад И Номенклатуры.Номенклатура=&Номенклатура И Номенклатуры.Ссылка.Дата>=&ДатаНачало И  Номенклатуры.Ссылка.Дата<=&ДатаКонца
    | СГРУППИРОВАТЬ ПО Номенклатура";
28 RomanYS
 
02.04.16
14:19
(27) не тупи. Я не знаю какая у тебя конфигурация и каким полем у тебя реализация связана с заказом.

Помотри в консоли результат

Выбрать Различные РТ.Сделка ИЗ Документ.РеализацияТоваровУслуг КАК РТ

и по

Выбрать Различные РТ.Сделка.ЗаказПокупателя ИЗ Документ.РеализацияТоваровУслуг КАК РТ


РТ.Сделка.ЗаказПокупателя - это вообще что? я конечно могу предположить, что реализация может быть связана с заказом через промежуточный счет. Но вряд ли это твой случай.
29 antihacker
 
02.04.16
14:21
Ну ты же сам писал
30 antihacker
 
02.04.16
14:21
Различные Док.Сделка<ИлиКакУТебяНазываетсяСсылкаНаЗаказ>
31 antihacker
 
02.04.16
14:21
вместо ИлиКакУТебяНазываетсяСсылкаНаЗаказ у меня ЗаказПокупателя
32 RomanYS
 
02.04.16
14:26
(31) это не добавка, это "или или".
"Док.Сделка" или "Док.Заказ" или "Док.ЗаказПокупателя" или "Док.ИлиКакУТебяНазываетсяСсылкаНаЗаказ"....
33 antihacker
 
02.04.16
14:26
Все работает

    ЗапросНомВЗаказе.Текст="
    |ВЫБРАТЬ
    |СУММА(Номенклатуры.Количество) КАК СуммаКоличествоНоменклатуры    
    |ИЗ
    |Документ.ЗаказПокупателя.Товары КАК Номенклатуры
    |ГДЕ
    |НЕ Номенклатуры.Ссылка В (Выбрать Различные РТ.Сделка ИЗ Документ.РеализацияТоваровУслуг КАК РТ) И
    |Номенклатуры.Ссылка.ПРОВЕДЕН=ИСТИНА И Номенклатуры.Ссылка.СкладГруппа=&Склад И Номенклатуры.Номенклатура=&Номенклатура И Номенклатуры.Ссылка.Дата>=&ДатаНачало И  Номенклатуры.Ссылка.Дата<=&ДатаКонца
    | СГРУППИРОВАТЬ ПО Номенклатура";
34 Живой Ископаемый
 
02.04.16
18:13
это Анти-джойн, который описан в (4)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший