Имя: Пароль:
1C
1С v8
Вопрос про запрос
,
0 НайдуУбъю
 
18.09.12
12:59
Народ подскажите как получить остатки по рег накоплению без учета по одному из регистраторов (например реализации)
1 Cube
 
18.09.12
13:00
ГДЕ НЕ(Регистратор ССЫЛКА Документ.РеализацияТоваровИУслуг)
2 Mort
 
18.09.12
13:05
Жостко. Среднюю температуту по больнице измеряете?
3 МишКа
 
18.09.12
13:05
Без учета одного документа или одного типа?
4 Шапокляк
 
18.09.12
13:11
Своеобразная задача. Т.е. сейчас на складе 100 ящиков, но нужно исключить движения каких-то документов и получить 37? Тогда только перебором всех движений.
5 shuhard
 
18.09.12
13:14
(4) а вычесть из прихода расход считается перебором ?
6 Азат
 
18.09.12
13:15
(4) ну это же банально - перемещения просто исключают...
7 НайдуУбъю
 
18.09.12
13:27
(1) да но у остатков нету отбора по регистратору
8 НайдуУбъю
 
18.09.12
13:28
(3) без одного типа, именно реализаций
9 Maxus43
 
18.09.12
13:28
(7) и слава богу
10 МишКа
 
18.09.12
13:31
(8) Тогда виртуальная таблица остатков тебе без пользы. Пиши запрос к физической таблице.
11 shuhard
 
18.09.12
13:31
(7) ВЫБРАТЬ
   ТоварыНаСкладахОбороты.Номенклатура,
   СУММА(ТоварыНаСкладахОбороты.КоличествоОборот) КАК КоличествоОборот
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Обороты(, , Регистратор, ) КАК ТоварыНаСкладахОбороты
ГДЕ
   ТИПЗНАЧЕНИЯ(ТоварыНаСкладахОбороты.Регистратор) <> ТИП(Документ.РеализацияТоваровУслуг)

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура
12 МишКа
 
18.09.12
13:32
(7) Как ты думаешь, почему?
13 НайдуУбъю
 
18.09.12
13:33
(12) да это понятно почему, на то они и остатки
14 МишКа
 
18.09.12
13:33
(11) Таблица оборотов тоже бесполезна, хотя можно получить остатки и на ней.
15 unregistered
 
18.09.12
13:34
(14) Что мешает из остатков вычесть обороты отобранные по регистратору нужного типа?
16 НайдуУбъю
 
18.09.12
13:35
(11) оно то все здовово, но вторым шагом мне надо прикрутить сюды выборку из второй таблицы, у которых регистраторы будут отличаться
17 МишКа
 
18.09.12
13:35
(13) Так что:
ВЫБРАТЬ
....
ИЗ РегистрНакопления.ТоварыНаСкладах

+ (1)
тебе поможет
18 unregistered
 
18.09.12
13:36
(16) В чем проблема?
19 shuhard
 
18.09.12
13:36
(16) шуруповёрт сломался ?
20 Cube
 
18.09.12
13:37
(9) :)
(10) +1
21 МишКа
 
18.09.12
13:38
(15) Запрос все равно к данным за все время. Так проще сразу остаточный запрос написать.
22 zladenuw
 
18.09.12
13:40
(0) а что вообще нужно сделать ?
23 НайдуУбъю
 
18.09.12
13:42
(18)(19) проблема в том что у этих двух таблиц с остатками, связь можно наладить только по двум реквизитам, по номенклатуре и заказу покупателя, следовательно если мы делаем выборку с по регистратору, то строки одной таблицы не будут соответсвовать строкам другой
24 НайдуУбъю
 
18.09.12
13:43
(22)да отчет долбанный клиент хочет, сначала сломал мозг себе чтобы это придумать, а затем ломает его мне
25 МишКа
 
18.09.12
13:45
(23) Это тебе только кажется проблемой. Хочешь - разбирайся, не хочешь - делай как в (17), там ничего соединять не надо.
26 НайдуУбъю
 
18.09.12
13:48
ладно что нибудь придумаем:)
27 shuhard
 
18.09.12
13:55
(23) отмазки
28 НайдуУбъю
 
18.09.12
13:57
короче смысл в том что необходимо сравнивать остатки по заказам покупателей и остатки по резервам без учета реализаций
29 shuhard
 
18.09.12
13:58
(28) сравни обороты по Рг без учета реализаций
30 НайдуУбъю
 
18.09.12
13:59
отдельно все выбирается как написано в (17) но если прибавить сюда еще выборку из второй таблицы то обороты резко увеличиваются, о чем я и пытался сказать в (23)
31 МишКа
 
18.09.12
14:00
(28) Ну ты даешь! Никакой связи с (0).
32 НайдуУбъю
 
18.09.12
14:01
(31) возможно, извентиляюсь, хотелось разобраться на простом примере
33 МишКа
 
18.09.12
14:03
Что без учета реализаций. Только резервы или заказы и резервы?
34 shuhard
 
18.09.12
14:05
(30) криво соединил
других причин нет
используй ВТ
35 zladenuw
 
18.09.12
14:10
запрос в студию
36 НайдуУбъю
 
18.09.12
14:38
(33) и резервы и заказы без учета реализаций
37 НайдуУбъю
 
18.09.12
14:38
(35) ща
38 НайдуУбъю
 
18.09.12
14:44
ВЫБРАТЬ
   ЗаказыПокупателейОбороты.ЗаказПокупателя.Контрагент КАК Покупатель,
   ЗаказыПокупателейОбороты.ЗаказПокупателя.Номер КАК НомерЗаказа,
   ЗаказыПокупателейОбороты.Номенклатура КАК Номенклатура,
   ЗаказыПокупателейОбороты.КоличествоОборот КАК ЗаказОборот,
   ТоварыВРезервеНаСкладахОбороты.КоличествоОборот КАК РезервОборот
ИЗ
   РегистрНакопления.ЗаказыПокупателей.Обороты(&СДаты, &НаДату, Регистратор, ) КАК ЗаказыПокупателейОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Обороты(&СДаты, &НаДату, Регистратор, ) КАК ТоварыВРезервеНаСкладахОбороты
       ПО ЗаказыПокупателейОбороты.ЗаказПокупателя = ТоварыВРезервеНаСкладахОбороты.ДокументРезерва
           И ЗаказыПокупателейОбороты.Номенклатура = ТоварыВРезервеНаСкладахОбороты.Номенклатура
ГДЕ
   ((НЕ ЗаказыПокупателейОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг)
           ИЛИ (НЕ ТоварыВРезервеНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг))
ИТОГИ
   СУММА(ЗаказОборот),
   СУММА(РезервОборот)
ПО
   Покупатель,
   НомерЗаказа
39 НайдуУбъю
 
18.09.12
14:46
(38) вариант без группировок, результат виден как раз детально по каждой записи регистратора, в общем не то что нужно
40 Шапокляк
 
18.09.12
14:49
А не проще соединить приход по заказу покупателя с приходом по резерву?
41 НайдуУбъю
 
18.09.12
14:55
возможно, только если корректировка по заказу и снятие с резерва ложится в приход
42 Шапокляк
 
18.09.12
14:58
а посмотреть? У меня в УТ10.3 отрицательный приход
43 НайдуУбъю
 
18.09.12
14:59
не прокатило, закрытие заказа ложится в расход
44 НайдуУбъю
 
18.09.12
15:40
ну так и че в итоге то?
45 НайдуУбъю
 
18.09.12
18:09
в итоге сделал так:

ВЫБРАТЬ
   ОстаткиЗаказ.ЗаказПокупателя.Контрагент КАК Покупатель,
   ОстаткиЗаказ.ЗаказПокупателя.Номер КАК НомерЗаказа,
   ОстаткиЗаказ.Номенклатура,
   ОстаткиЗаказ.ЗаказПриход - ОстаткиЗаказ.ЗаказРасход КАК ЗаказОстаток,
   ОстаткиРезерв.РезервПриход - ОстаткиРезерв.РезервРасход КАК РезервОстаток
ИЗ
   (ВЫБРАТЬ
       ЗаказыПокупателейОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
       ЗаказыПокупателейОбороты.Номенклатура КАК Номенклатура,
       СУММА(ЗаказыПокупателейОбороты.КоличествоПриход) КАК ЗаказПриход,
       СУММА(ВЫБОР
               КОГДА ЗаказыПокупателейОбороты.Регистратор ССЫЛКА Документ.ЗакрытиеЗаказовПокупателей
                   ТОГДА ЗаказыПокупателейОбороты.КоличествоРасход
               ИНАЧЕ 0
           КОНЕЦ) КАК ЗаказРасход
   ИЗ
       РегистрНакопления.ЗаказыПокупателей.Обороты(&СДаты, &НаДату, Регистратор, ) КАК ЗаказыПокупателейОбороты
   ГДЕ
       (НЕ ЗаказыПокупателейОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг)
   
   СГРУППИРОВАТЬ ПО
       ЗаказыПокупателейОбороты.Номенклатура,
       ЗаказыПокупателейОбороты.ЗаказПокупателя) КАК ОстаткиЗаказ
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ТоварыВРезервеНаСкладахОбороты.ДокументРезерва КАК ДокументРезерва,
           ТоварыВРезервеНаСкладахОбороты.Номенклатура КАК Номенклатура,
           СУММА(ТоварыВРезервеНаСкладахОбороты.КоличествоПриход) КАК РезервПриход,
           СУММА(ВЫБОР
                   КОГДА ТоварыВРезервеНаСкладахОбороты.Регистратор ССЫЛКА Документ.ЗакрытиеЗаказовПокупателей
                       ТОГДА ТоварыВРезервеНаСкладахОбороты.КоличествоРасход
                   ИНАЧЕ 0
               КОНЕЦ) КАК РезервРасход
       ИЗ
           РегистрНакопления.ТоварыВРезервеНаСкладах.Обороты(&СДаты, &НаДату, Регистратор, ) КАК ТоварыВРезервеНаСкладахОбороты
       ГДЕ
           (НЕ ТоварыВРезервеНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг)
       
       СГРУППИРОВАТЬ ПО
           ТоварыВРезервеНаСкладахОбороты.ДокументРезерва,
           ТоварыВРезервеНаСкладахОбороты.Номенклатура) КАК ОстаткиРезерв
       ПО ОстаткиЗаказ.ЗаказПокупателя = ОстаткиРезерв.ДокументРезерва
           И ОстаткиЗаказ.Номенклатура = ОстаткиРезерв.Номенклатура
ИТОГИ
   СУММА(ЗаказОстаток),
   СУММА(РезервОстаток)
ПО
   ОБЩИЕ,
   Покупатель,
   НомерЗаказа
46 НайдуУбъю
 
18.09.12
18:12
берем весь приход по регистрам и вычитаем только расход от закрытия заказов....
пардон условия отбора по типу реализации не нужны совсем, забыл выкинуть...
а так вроде в целом все ок.)))
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший