Имя: Пароль:
1C
1С v8
Как выбрать запросом документы которые проведены, а движений у них нет?
0 antidot
 
07.09.09
09:49
Как выбрать запросом документы которые проведены, а движений у них нет?
1 shuhard
 
07.09.09
09:50
(0) налево + Есть NULL
2 antidot
 
07.09.09
09:53
(1)-Что есть НУЛЛ ?
3 Nurik87
 
07.09.09
09:53
Может проведен = истина
4 Point
 
07.09.09
09:53
ССылкаДокумента в регистре ЕСТЬ NULL
5 antidot
 
07.09.09
09:53
(3)-Ну проведен, то "истина"-воистину :)
6 antidot
 
07.09.09
09:54
(4)-вот вот, кроме как соединить с регистром... правда по какому признаку ?

Скорее уж не ВСписке регистраторов, что-то в этом роде
7 Point
 
07.09.09
09:55
Левое соединение
8 Point
 
07.09.09
09:55
(7) + скорее всего правое )
9 antidot
 
07.09.09
09:56
(7)-с кем-чем соединять-то ?
10 Mitriy
 
07.09.09
09:57
плюнь, а то запутаешься...
11 Irbis
 
07.09.09
09:57
(7) А не пох какое соединение?
12 Ненавижу 1С
 
гуру
07.09.09
09:58
(9) таблицу документов соединяй слева с регистром по ссылке и регистратору
условия:
Проведен и Регистратор ЕСТЬ NULL
13 Point
 
07.09.09
09:58
Как то так:

"ВЫБРАТЬ
|    РасходнаяНакладная.Ссылка
|ИЗ
|    Документ.РасходнаяНакладная КАК РасходнаяНакладная
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваров КАК ПартииТоваров
|        ПО РасходнаяНакладная.Ссылка = ПартииТоваров.Регистратор
|            И (ПартииТоваров.Регистратор ЕСТЬ NULL )
|            И (РасходнаяНакладная.Проведен = ИСТИНА)"
14 Aloex
 
07.09.09
09:58
(0) Запрос к регистру бухгалтерии, по которому он делает движение. с указанием текущего регистратора(документа).
15 antidot
 
07.09.09
10:00
(13)-эээээ, а откуда в регистре регистраторы для соединения ?
16 Point
 
07.09.09
10:01
Ты логику смотри, а не вопросы задавай ))
17 antidot
 
07.09.09
10:02
ПО РасходнаяНакладная.Ссылка = ПартииТоваров.Регистратор

Вызывает определенное недоумение
18 Ненавижу 1С
 
гуру
07.09.09
10:02
(15) а не должно быть?
19 Ненавижу 1С
 
гуру
07.09.09
10:02
(17) тогда читай буквари
20 shuhard
 
07.09.09
10:03
(17) а стоит ли с бодуна садиться за 1С ?
21 Mitriy
 
07.09.09
10:04
(17)+ Где ПартииТоваров.Регистратор Есть Null
22 skunk
 
07.09.09
10:05
(13)а что документ делает движуху только по одному регистру?
23 vet7777
 
07.09.09
10:05
пример запроса в типовой торговле:

ВЫБРАТЬ
   КорректировкаДолга.Ссылка Док
ИЗ
   Документ.КорректировкаДолга КАК КорректировкаДолга
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НДСРасчетыСПокупателями КАК НДСРасчетыСПокупателями
       ПО НДСРасчетыСПокупателями.Регистратор = КорректировкаДолга.Ссылка
ГДЕ
   НДСРасчетыСПокупателями.Регистратор ЕСТЬ NULL И КорректировкаДолга.Проведен
24 Ненавижу 1С
 
гуру
07.09.09
10:06
(22) а что надо было здесь все расписать или дать автору право додумать?
25 skunk
 
07.09.09
10:07
(24)тупой вариант может просто не стоит предлагать?
26 Ненавижу 1С
 
гуру
07.09.09
10:08
(25) обоснуй, что он тупой, предложи лучше
27 Point
 
07.09.09
10:09
(25) спасибо, порадовал на весь оставшийся день
28 antidot
 
07.09.09
10:09
(27)-Щас протестирую
29 shuhard
 
07.09.09
10:09
(25) чем тупой ?
если регистров не один свяжет с каждым налево или Объединить все
30 Point
 
07.09.09
10:09
(23) условия лучше не спускать, а использовать в соединении - запрос будет быстрее выполнятся
31 skunk
 
07.09.09
10:10
(26)прочитай условие в (0) ... и хорошо подумай, что надо сделать
32 Ненавижу 1С
 
гуру
07.09.09
10:11
(31) и что там такого?
33 Point
 
07.09.09
10:11
(31) а что так сложно еще одно ЛЕвое присобачить )
34 Лефмихалыч
 
07.09.09
10:12
(0) на собеседование сходил?
35 antidot
 
07.09.09
10:15
(34)-по работе надо.
36 skunk
 
07.09.09
10:15
ребята не тупим ... надо выбрать ВСЕ документы у которых нет движения
37 antidot
 
07.09.09
10:15
(34)-кстати очень похоже на ту хрню, подобную которой на собеседовах спрашивают.
38 antidot
 
07.09.09
10:16
(36)-Ну если ВСЕ, то надо от регистратора плясать, но как раз дело в том, что нет регистратора- движений-то нет :)
39 Ненавижу 1С
 
гуру
07.09.09
10:16
(36) сам не тупи, тебе ж сказали, это фрагмент
дальше - больше
40 Ненавижу 1С
 
гуру
07.09.09
10:17
(38) дятел птица гордая?
41 Ненавижу 1С
 
гуру
07.09.09
10:18
+(40) хотя если человек понимает смысл "что нито"
42 Point
 
07.09.09
10:18
(38)как это у регистра в котором движения нет регистратора
43 antidot
 
07.09.09
10:28
ВЫБРАТЬ
   Документики.Ссылка
ИЗ
   (ВЫБРАТЬ
       ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка КАК Ссылка
   ИЗ
       Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК ПлатежныйОрдерСписаниеДенежныхСредств
   ГДЕ
       ПлатежныйОрдерСписаниеДенежныхСредств.Проведен = ИСТИНА
       И ПлатежныйОрдерСписаниеДенежныхСредств.Дата МЕЖДУ &НачДата И &КонДата) КАК Документики
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ДвиженияДенежныхСредствОбороты.Регистратор КАК Регистратор
       ИЗ
           РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&НачДата, &НачДата, Регистратор, ) КАК ДвиженияДенежныхСредствОбороты) КАК Движуха
       ПО Документики.Ссылка = Движуха.Регистратор
ГДЕ
   Движуха.Регистратор ЕСТЬ NULL



Не работает.
44 y22-k
 
07.09.09
10:35
(0)
http://infostart.ru/projects/3738/
посмотри эту обработку я писал недавно, там есть косячки, но работает)
сегодня еще перезалью новую, которая ищет пустые по регистру партии товаров на складах
45 Point
 
07.09.09
10:39
ВЫБРАТЬ
   Документики.Ссылка
ИЗ
 ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка КАК Ссылка
 ЛЕВОЕ СОЕДИНЕНИЕ
      ДвиженияДенежныхСредствОбороты.Обороты(&НачДата, &НачДата, Регистратор, ) КАК Регистратор
 ПО Документики.Ссылка = ДвиженияДенежныхСредствОбороты.Регистратор
 И ДвиженияДенежныхСредствОбороты.Регистратор ЕСТЬ NULL
 И Документики.Проведен = ИСТИНА
 И Документики.Ссылка ССЫЛКА Документ.ПлатежныйОрдерСписаниеДенежныхСредств

Как то так, хотя могут быть ошибки
46 Point
 
07.09.09
10:40
(45) хотя виртуальную таблицу оборотов можно и не юзать, можно все к основной сделать
47 vet7777
 
07.09.09
10:42
а так?

ВЫБРАТЬ
   Док.Ссылка КАК Ссылка
ИЗ
   Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК Док
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств КАК Рег
       ПО Рег.Регистратор = Док.Ссылка И Рег.Период МЕЖДУ &НачДата И &КонДата
ГДЕ
   Док.Проведен
   И Док.Дата МЕЖДУ &НачДата И &КонДата
   И Рег.Регистратор ЕСТЬ NULL
48 Point
 
07.09.09
10:42
(45)+ Есть ошибки связанные с псевдонимами
49 Point
 
07.09.09
10:43
(47) опередил )
50 Point
 
07.09.09
10:44
(47)+ не спускайте вы условия вниз, используйте их в соединении - работает быстрее. Проверено!
51 vet7777
 
07.09.09
10:49
(50) если проверку проведения закинуть вверх, то в выборку попадут все документы, в том числе не проведенные, тут же не внутреннее соединение
52 vet7777
 
07.09.09
10:49
(50) + прежде чем советовать проверь свои слова в консоле )
53 antidot
 
07.09.09
10:56
ВЫБРАТЬ
   ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка,
   ВыборкаДокументов.Регистратор
ИЗ
   Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК ПлатежныйОрдерСписаниеДенежныхСредств,
   ВыборкаДокументов КАК ВыборкаДокументов
ГДЕ
   ПлатежныйОрдерСписаниеДенежныхСредств.Проведен = ИСТИНА
   И ПлатежныйОрдерСписаниеДенежныхСредств.Дата МЕЖДУ &НачДата И &КонДата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДенежныеСредстваКСписаниюОбороты.Регистратор
ПОМЕСТИТЬ ВыборкаДокументов
ИЗ
   РегистрНакопления.ДенежныеСредстваКСписанию.Обороты(&НачДата, &КонДата, Регистратор, ) КАК ДенежныеСредстваКСписаниюОбороты


Никак не соображу, какое тут должно быть соединение.
54 antidot
 
07.09.09
10:56
(53)-или какой то аналог НЕ В (чего-то там)
55 Odin1C
 
07.09.09
11:01
(0) выбрать все документы из таблицы документа, на закладке условия добавить условие "ГДЕ Не ССЫЛКА В (выбрать различные регистратор из Имярегистра) И Проведен"
56 antidot
 
07.09.09
11:05
ВЫБРАТЬ
   ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка
ИЗ
   Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК ПлатежныйОрдерСписаниеДенежныхСредств
ГДЕ
   ПлатежныйОрдерСписаниеДенежныхСредств.Проведен = ИСТИНА
   И ПлатежныйОрдерСписаниеДенежныхСредств.Дата МЕЖДУ &НачДата И &КонДата
   И (НЕ ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка В
               (ВЫБРАТЬ
                   ВыборкаДокументов.Регистратор
               ИЗ
                   ВыборкаДокументов))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДенежныеСредстваКСписаниюОбороты.Регистратор
ПОМЕСТИТЬ ВыборкаДокументов
ИЗ
   РегистрНакопления.ДенежныеСредстваКСписанию.Обороты(&НачДата, &КонДата, Регистратор, ) КАК ДенежныеСредстваКСписаниюОбороты



Пишет что таблица не найдена
57 Point
 
07.09.09
11:10
(56) найди того кто это сделает и заплати ему (только не говори об этом никому)
58 Point
 
07.09.09
11:11
(57)+ а по сделаному потом изучай "что к чему"
59 1СCовец
 
07.09.09
11:16
(55) а ты сам это пробовал? количество записей в результате запроса будет равно  количество документов*количество не равных ему регистраторов
60 hhhh
 
07.09.09
11:28
(15) Возьми из типовой. Например в БП, посмотри процедуру

ОпределитьНаличиеДвиженийПоРегистратору.
61 antidot
 
07.09.09
11:38
Ладно, как поправить, чтоб вот это работало. Запрос конструктором открывается, но при исполнении выдает ошибку.
62 antidot
 
07.09.09
11:39
ВЫБРАТЬ
   ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка
ИЗ
   Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК ПлатежныйОрдерСписаниеДенежныхСредств
ГДЕ
   ПлатежныйОрдерСписаниеДенежныхСредств.Проведен = ИСТИНА
   И ПлатежныйОрдерСписаниеДенежныхСредств.Дата МЕЖДУ &НачДата И &КонДата
   И (НЕ ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка В
               (ВЫБРАТЬ
                   ВыборкаДокументов.ДокументРегистратор
               ИЗ
                   ВыборкаДокументов))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ДенежныеСредстваКСписаниюОбороты.Регистратор КАК ДокумВЫБРАТЬ
                                                             ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка
                                                         ИЗ
                                                             Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК ПлатежныйОрдерСписаниеДенежныхСредств
                                                         ГДЕ
                                                             ПлатежныйОрдерСписаниеДенежныхСредств.Проведен = ИСТИНА
                                                             И ПлатежныйОрдерСписаниеДенежныхСредств.Дата МЕЖДУ &НачДата И &КонДата
                                                             И (НЕ ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка В (&ячсячс))ентРегистратор
ПОМЕСТИТЬ ВыборкаДокументов
ИЗ
   РегистрНакопления.ДенежныеСредстваКСписанию.Обороты(&НачДата, &КонДата, Регистратор, ) КАК ДенежныеСредстваКСписаниюОбороты
63 antidot
 
07.09.09
11:57
ап
64 vet7777
 
07.09.09
12:04
мда, одно из двух - автор мазохист или просто тупит...
65 antidot
 
07.09.09
12:05
ну у меня вложенным запросов- выходит, а таблицей временной-нет
66 antidot
 
07.09.09
12:06
ВЫБРАТЬ
   ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка
ИЗ
   Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК ПлатежныйОрдерСписаниеДенежныхСредств
ГДЕ
   ПлатежныйОрдерСписаниеДенежныхСредств.Проведен = ИСТИНА
   И ПлатежныйОрдерСписаниеДенежныхСредств.Дата МЕЖДУ &НачДата И &КонДата
   И (НЕ ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка В
               (ВЫБРАТЬ РАЗЛИЧНЫЕ
                   ДенежныеСредстваКСписаниюОбороты.Регистратор КАК ДокументРегистратор
               ИЗ
                   РегистрНакопления.ДенежныеСредстваКСписанию.Обороты(&НачДата, &КонДата, Регистратор, ) КАК ДенежныеСредстваКСписаниюОбороты))

//////////// Вот это работает
67 vet7777
 
07.09.09
12:06
ты сильнее тужься, чаша то и выйдет )
68 vet7777
 
07.09.09
12:07
чем тебя ответы не устроили?
69 Asirius
 
07.09.09
12:10
Я бы делал так: Во временную таблицу помещваем все проведенные документы и колонку "КоличествоДвижений", заполненное единицами. Факт проведения будем воспринимать тоже как движение.
Запрос к регистру через объединение и группировку с сумированием по "КоличествоДвижений".
Т.о. делаем серию запросов по порядку ко всем регистрам и на выходе имеем временную таблицу со всеми документами и количеством их движений. Нас интересуют документы, у которых только одно движение.
70 antidot
 
07.09.09
12:17
(69)-да, блин... надо заставить запрос работать с временной таблицей, а я чет подтупливаю как
71 vet7777
 
07.09.09
12:19
зачем тебе через временную таблицу, если без нее можно обойтись?
72 vet7777
 
07.09.09
12:21
скажи чем тебя (47) не устроил?
73 antidot
 
07.09.09
12:25
(71)-не люблю, когда не получается чего-то
(66)-работает.
74 marvak
 
07.09.09
12:27
(0) Дык а не проще выбрать из регистра те строки у которых Не Регистратор.Проведен?
75 y22-k
 
07.09.09
12:40
(75) документа в регистре то нет, ты не понимаешь?)
76 vet7777
 
07.09.09
12:45
Кесарю кесарево, а дротику .... )
с ним бесполезно говорить, он пишет сам себе, остальных отфильтровывает )))
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс