Имя: Пароль:
1C
1С v8
Отбор только проведённых документов.
0 Ахиллес
 
05.08.11
13:15
1. Нормально 0% (0)
2. Лажа (надо делать так...) 0% (0)
Всего мнений: 0

Нужно выбрать в отчет документы только тех контрагентов по которым все документы проведены. Пока сделал так:

ВЫБРАТЬ
   ОтчетКомитентуОПродажах.Контрагент,
   МИНИМУМ(ОтчетКомитентуОПродажах.Проведен) КАК Проведен
ПОМЕСТИТЬ Контр
ИЗ
   Документ.ОтчетКомитентуОПродажах КАК ОтчетКомитентуОПродажах
ГДЕ
   ОтчетКомитентуОПродажах.Дата > &Дата
   И ОтчетКомитентуОПродажах.Ответственный = &Ответственный

СГРУППИРОВАТЬ ПО
   ОтчетКомитентуОПродажах.Контрагент
;

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

УПОРЯДОЧИТЬ ПО
   Контрагент

Но блин, случился приступ перфекционизма. Сижу, думаю, нормально так или ещё проще, лучше можно? Работать неохото нифига.
1 and2
 
05.08.11
13:17
наверное проведенные документы какой то регистр двигают....
2 vicof
 
05.08.11
13:18
а не проще взять данные из регистра, по которому этот вид документов делает движения?
3 Ахиллес
 
05.08.11
13:21
Вот по контрагенту два документа. Один проведен, второй не проведён. Документы по такому контрагенту в отчет попасть не должны. Как мне регистр в этом поможет?
4 palpetrovich
 
05.08.11
13:23
(3) в смысле, если есть хоть одни непровнеденный - не попадать должны все?
5 Ахиллес
 
05.08.11
13:23
Да. В том и соль.
6 butterbean
 
05.08.11
13:24
в первом отчете добавить ИМЕЮЩИЕ МИНИМУМ(ОтчетКомитентуОПродажах.Проведен) = ИСТИНА
во втором убрать все условия кроме первого и таблицу Контр
7 Maxus43
 
05.08.11
13:25
во втором запросе имхо условия почти все лишние

ГДЕ
   ОтчетКомитентуОПродажах.Контрагент В (Контр.Контрагент)
   И Контр.Проведен = ИСТИНА
   И ОтчетКомитентуОПродажах.Дата > &Дата
   И ОтчетКомитентуОПродажах.Ответственный = &Ответственный
8 vicof
 
05.08.11
13:25
выбирай всех контрагентов из непроведенных. Потом отбор по регистру без этих контрагентов.
9 Лефмихалыч
 
05.08.11
13:25
ВЫБРАТЬ Контрагент,
Сумма(ВЫБОР
  КОГДА Проведен
    Тогда 1
  Иначе 0
Конец) КАК КоличествоПроведенных,
Сумма(ВЫБОР
  КОГДА Проведен
    Тогда 1
  Иначе 0
Конец) КАК КоличествоНеПроведенных

ИЗ Документ.РасходнаяНакладная
СГРУППИРОВАТЬ ПО Контрагент ИМЕЮЩИЕ
Сумма(ВЫБОР
  КОГДА Проведен
    Тогда 1
  Иначе 0
Конец)=
Сумма(ВЫБОР
  КОГДА Проведен
    Тогда 1
  Иначе 0
Конец)
10 Лефмихалыч
 
05.08.11
13:27
ну, и нужен напильник - в поле КоличествоНеПроведенных ошибка досадная вкралась
11 lxs
 
05.08.11
13:31
А если проведен,но движений нет?
12 Ахиллес
 
05.08.11
13:33
(11) Пофиг. Пустые отчеты тоже отсылаем. Так, что вариант с регистром не взлетает.
13 Ахиллес
 
05.08.11
13:35
Кстати, на скуле есть разница между запросом к регистру и запросом к документам если требуется только ссылки на документы вытащить? Имхо не должно быть разницы.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший