Имя: Пароль:
1C
1С v8
Язык запросов выгрузка за исключением в списке
,
0 DenisVich
 
08.04.13
15:08
Здравствуйте, форумчане. УТ 10.3 Задача вывести список доков, которых нет в документах, но есть в регистре продажи
Вот запрос1
ВЫБРАТЬ
   ПоступлениеТоваровУслуг.Номер КАК Номер,
   ПоступлениеТоваровУслуг.Дата КАК Дата,
   ПоступлениеТоваровУслуг.Контрагент КАК Контрагент,
   ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ПоступлениеТоваровУслугДок
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
       ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка
ГДЕ
   ПоступлениеТоваровУслуг.Контрагент = &Поставщик
;

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

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

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

УПОРЯДОЧИТЬ ПО
   Продажи.Период


результатом запроса должен быть список документов которых нет в регистре продажи
Запрос выполняется черезмерно долго(данных много). Первые 1 не помогает.
1 DirecTwiX
 
08.04.13
15:10
Кто-нибудь что-нибудь понял?
"вывести список доков, которых нет в документах"
2 DenisVich
 
08.04.13
15:11
Вывести список доков, которых нет в журнале документов но есть в регистре продажи
3 DirecTwiX
 
08.04.13
15:12
Зачем выбирать номер, дату и контрагента? Такой бред..
4 DirecTwiX
 
08.04.13
15:12
А из журнала разве нельзя выборку сделать?
5 Галахад
 
гуру
08.04.13
15:12
Гм. А как поступление попадает в продажи?
6 DenisVich
 
08.04.13
15:12
>Зачем выбирать номер, дату и контрагента? Такой бред..
НУЖНО!
7 DenisVich
 
08.04.13
15:13
Задача такая
8 tdm
 
08.04.13
15:13
(0)РеализацияТоваровУслуг.Дата >= &НачалоПериода
   И РеализацияТоваровУслуг.Дата <= &КонецПериода
поправить на "Между"

РегистрНакопления.Продажи - задать период
9 DenisVich
 
08.04.13
15:13
Поступление не попадает в продажи
10 tdm
 
08.04.13
15:14
+(8) добавить условие на проведенность документа по идее
11 DenisVich
 
08.04.13
15:15
Документы все проведены, между не помогает
12 DenisVich
 
08.04.13
15:15
Запрос все равно выполняется медленно. Документ заказы не используется.
13 tdm
 
08.04.13
15:16
(11) это первые шаги)) надо уменьшать выборки до минимума
14 DenisVich
 
08.04.13
15:16
заказы покупателей, заказы поставщиков
15 tdm
 
08.04.13
15:16
(11) РегистрНакопления.Продажи - виртуальная таблицы, передать в параметры максимальное кол-во параметров
16 Галахад
 
гуру
08.04.13
15:17
А. Понял. По-моему из первого запроса нужно всего лишь получить список номенклатуры, а не документы.

А во втором по нему фильтровать.
17 tdm
 
08.04.13
15:18
(16) +100500,

вот это вообще капец:
  ПоступлениеТоваровУслугДок КАК ПоступлениеТоваровУслугДок
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
       ПО ПоступлениеТоваровУслугДок.Номенклатура.Код = РеализацияТоваровУслуг.Товары.Номенклатура.Код
18 DenisVich
 
08.04.13
15:19
Нельзя(16), потому как по определенному поставщику все делается
19 Bober
 
08.04.13
15:20
Запрос 1:
- первый запрос по документу ПТиУ нужно изменить на регистр Закупки
- второй РТиУ на регистр продажи
- заменить условие на РН.Номенклатура НЕ В (ВЫБРАТЬ ....)
20 DenisVich
 
08.04.13
15:20
По другому(17)Связать нельзя. Нету заказов.
21 DenisVich
 
08.04.13
15:20
Закупки некорректен.
22 tdm
 
08.04.13
15:21
(20) а если я две строки с одной номенклатурой заведу ?)
23 DenisVich
 
08.04.13
15:21
там стоит различные
24 Bober
 
08.04.13
15:22
(21) интересно, с чего это вдруг? может потому, что туда попадают только проведенные документы
25 Галахад
 
гуру
08.04.13
15:22
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       
ГДЕ
   ПоступлениеТоваровУслугТовары.Контрагент = &Поставщик
26 tdm
 
08.04.13
15:22
(21) =) хы)) вы счас всей ллогике 1с противоречите...на экзамене зам бы незачет поставили
27 Bober
 
08.04.13
15:23
(0) второй запрос:
- " И НЕ Продажи.Регистратор.Ссылка"  - это реально клиника.
28 DenisVich
 
08.04.13
15:23
(24)логика проведения нарушена, связано с обменом
29 DenisVich
 
08.04.13
15:23
(27) Так исправил конструктор запросов
30 tdm
 
08.04.13
15:24
(29) конструктор это лишь инструмент, как скальпель у хирурга, а что резать только вы решаете))
31 DenisVich
 
08.04.13
15:24
...И Продажи.Регистратор.Ссылка НЕ В(&Список)...
32 DenisVich
 
08.04.13
15:24
Не помогает
33 tdm
 
08.04.13
15:25
(31) вам про скорость работы написали а не про синтаксис))))
не будет такой запрос быстрым ну посто по определению)
34 DenisVich
 
08.04.13
15:28
Применение виртуальных таблиц, вопрос сложный, будет ли выполняться быстро? По сравнению с вложенными запросами возможен прирост.
35 DenisVich
 
08.04.13
15:28
А по сравнению с потоками нет
36 azernot
 
08.04.13
15:31
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ПоступлениеТоваровУслугТовары.Номенклатура
ПОМЕСТИТЬ НоменклатураПоставщика
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = &Поставщик
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
   РеализацияТоваровУслуг.Ссылка КАК РеализацияСсылка
ПОМЕСТИТЬ ДокументыРеализацииТоваровПоставщика
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
       ЛЕВОЕ СОЕДИНЕНИЕ НоменклатураПоставщика КАК НоменклатураПоставщика
       ПО РеализацияТоваровУслуг.Номенклатура = НоменклатураПоставщика.Номенклатура
ГДЕ
   РеализацияТоваровУслуг.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РегистрНакопленияПродажи.Регистратор
ИЗ
   РегистрНакопления.Продажи КАК РегистрНакопленияПродажи
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ НоменклатураПоставщика КАК НоменклатураПоставщика
       ПО РегистрНакопленияПродажи.Номенклатура = НоменклатураПоставщика.Номенклатура
       ЛЕВОЕ СОЕДИНЕНИЕ ДокументыРеализацииТоваровПоставщика КАК ДокументыРеализацииТоваровПоставщика
       ПО РегистрНакопленияПродажи.Регистратор = ДокументыРеализацииТоваровПоставщика.РеализацияСсылка
ГДЕ
   РегистрНакопленияПродажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
   И ДокументыРеализацииТоваровПоставщика.РеализацияСсылка ЕСТЬ NULL
37 azernot
 
08.04.13
15:35
Но, запрос в (36) основанный на задаче в (0) мне кажется попыткой почесать правое ухо левой рукой прокинув руку под левой коленкой...  Т.е. сделать можно, но недуобно и непонятно зачем такие сложности.
Автор, озвучь реальную задачу, наверняка можно проще.
38 tdm
 
08.04.13
15:35
разве это не оборотный регистр накопления -  РегистрНакопленияПродажи(&НачалоПериода,&КонецПериода ) ??
39 azernot
 
08.04.13
15:36
(38) Регистр.Продажи.Обороты() - было бы виртуальной таблицей.
40 tdm
 
08.04.13
15:37
(39) я понимаю, поэтому и говорю не правильнее ли её использовать ? - передавая туда впараметры и поставщика и номенклатуру (обычно это измерения)
41 DenisVich
 
08.04.13
15:38
В вашем варианте прироста не будет. Реализаций очень много(десяток тысяч в день). Цель вывести по поставщику реализации которых нет в журнале документов реализаций но есть в регистре продажи(проблемный обмен)
42 azernot
 
08.04.13
15:39
(40) Если бы поставщик был там измерением, я думаю сложности бы не понадобились. Ему не нужны обороты. Ему нужен список регистраоторов, в этом случае использованее реальной таблицы - более оптимально, чем виртуальной.
43 azernot
 
08.04.13
15:40
(41) Что такое реализация по поставщику? Реализация товаров когда-либо поступивших от поставщика? Но не документом РеализацияТоваровУслуг за указанный период?
44 DenisVich
 
08.04.13
15:41
(43) Да
45 tdm
 
08.04.13
15:41
>>вывести по поставщику реализации которых нет в журнале документов реализаций но есть в регистре продажи

- Движения без регистратора ?
46 DenisVich
 
08.04.13
15:41
да
47 tdm
 
08.04.13
15:41
(44) с партиями тоже беда ?) кроме регистра продажи обычно есть ПродажиСебестоимость, там есть документ поступления
48 DirecTwiX
 
08.04.13
15:42
(6) "НУЖНО!"?? Плохо.. Всё очень плохо. Дату и номер потом можно выбрать, а не тянуть за тридевять земель.
Лень читать.. Так как насчёт тянуть из журнала документов? Запрос на 10 строк максимум
49 azernot
 
08.04.13
15:44
ВЫБРАТЬ РАЗЛИЧНЫЕ
   РегистрНакопленияПродажи.Регистратор
ИЗ
   РегистрНакопления.Продажи КАК РегистрНакопленияПродажи
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
           ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура
       ИЗ
           Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ГДЕ
           ПоступлениеТоваровУслугТовары.Ссылка.Контрагент = &Поставщик) КАК НоменклатураПоставщика
       ПО РегистрНакопленияПродажи.Номенклатура = НоменклатураПоставщика.Номенклатура
ГДЕ
   РегистрНакопленияПродажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
   И НЕ(РегистрНакопленияПродажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
               И (РегистрНакопленияПродажи.Регистратор.Дата МЕЖДУ &НачалоПериода И &КонецПериода))

УПОРЯДОЧИТЬ ПО
   РегистрНакопленияПродажи.Период
50 tdm
 
08.04.13
15:53
(49) =) мощно,
осталось у ТС уточнить - сканает ли "РегистрНакопленияПродажи.Номенклатура = НоменклатураПоставщика.Номенклатура" а то вдруг у них только по кодам)))
51 tdm
 
08.04.13
15:54
+(50) в смысле записи без регистратора, то не удивительно если и номенклатура перекошена)
Программист всегда исправляет последнюю ошибку.