Имя: Пароль:
1C
1С v8
Запрос по 62 счету
, ,
0 SashaNox
 
02.03.12
11:30
Добрый день! Подскажите пожалуйста, как сделать запрос по счету 62, чтобы вывел следующие поля:
- Контрагент
- Договор контрагента
- Остаток по Кт62 на выбранную дату
- Дата первого документа движения по Кт62
- Дата первого документа движения по Кт62 + 15 дней
- Остаток по Кт62 на "Дата первого документа движения по Кт62 + 15 дней"
1 Нуф-Нуф
 
02.03.12
11:30
100 долларов
2 John83
 
02.03.12
11:33
если УПП, то лучше используй РН РасчетыПоРеализацииВУЕ
более подробно за 99$ :)
3 DrShad
 
02.03.12
11:35
(2) а зачем этот РН?
(0) $250
4 SashaNox
 
02.03.12
11:37
Не упп, бухгалтерия.
5 Maxus43
 
02.03.12
11:37
первые 3 пункта легко... а потом уже извращаться надо
6 SashaNox
 
02.03.12
11:40
хоть подсказку дайте пожалуйста, если тут теперь за деньги опытом делятся
7 salvator
 
02.03.12
11:42
(6) Подсказка: Открываешь конструктор запроса...
8 DrShad
 
02.03.12
11:43
+(7) в качестве таблицы выбираешь РегистрБухгалтерии
9 SashaNox
 
02.03.12
11:44
Таблицу остатков или движений с субконто?
10 Maxus43
 
02.03.12
11:45
>>Остаток по Кт62 на "Дата первого документа движения по Кт62 + 15 дней"
вот это в запросе проблематично сильно. остальное норм
11 SashaNox
 
02.03.12
11:48
а Дата первого документа движения по Кт62 связываешь?
12 John83
 
02.03.12
11:50
(10) ни разу не проблематично - самое главное моск включить
PS в РБ на субконто есть документы расчетов - вполне можно выкрутиться
13 John83
 
02.03.12
11:50
(3) затем, что там все есть, плюс пользоваться удобней и отрабатывать будет по-быстрее
14 John83
 
02.03.12
11:51
+13 даже не "по-быстрее", а в неск. раз быстрее, т.к. в УПП пришлось бы использовать реальную таблицу, а не виртуальную
15 DrShad
 
02.03.12
11:51
(14) а в РБ не все есть?
16 КМ155
 
02.03.12
11:52
(13) если есть договора в у.е., то в РасчетыПоРеализацииВУЕ и на 62.31 будут разные суммы
17 John83
 
02.03.12
11:53
(14) хотя не... можно использовать периодичность = регистратор
18 SashaNox
 
02.03.12
11:55
не понимаю как 4 поле все таки прилепить
19 Maxus43
 
02.03.12
11:55
всё, можете кидаться какашками. нет тока остака на первую дату + 15 дней

ВЫБРАТЬ
   ХозрасчетныйОбороты.Счет,
   МИНИМУМ(ХозрасчетныйОбороты.Период) КАК ПерваяДата,
   МИНИМУМ(ДОБАВИТЬКДАТЕ(ХозрасчетныйОбороты.Период, ДЕНЬ, 15)) КАК ПерваяДатаПлюс15
ПОМЕСТИТЬ втПерваяДатаДвижения
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, Счет = &Счет62, , Субконто2 = &Договор, , ) КАК ХозрасчетныйОбороты

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОбороты.Счет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ХозрасчетныйОстатки.Счет,
   ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
   ХозрасчетныйОстатки.Субконто2 КАК Договор,
   ХозрасчетныйОстатки.СуммаОстатокКт КАК ТекущийОстаток,
   втПерваяДатаДвижения.ПерваяДата,
   втПерваяДатаДвижения.ПерваяДатаПлюс15
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(&ТекДата, Счет = &Счет62, , Субконто2 = &Договор) КАК ХозрасчетныйОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ втПерваяДатаДвижения КАК втПерваяДатаДвижения
       ПО ХозрасчетныйОстатки.Счет = втПерваяДатаДвижения.Счет
20 DrShad
 
02.03.12
11:58
(19) я бы еще предложил соединение делать не только по счету, но и по договорам
21 Maxus43
 
02.03.12
11:59
(20) пример на 1 конкретный договор, запись одна. для разных контров-договоров - да
22 DrShad
 
02.03.12
12:00
(21) сорри, не заметил что отбор по договору
23 Maxus43
 
02.03.12
12:01
ДОБАВИТЬКДАТЕ(ХозрасчетныйОбороты.Период, ДЕНЬ, 15) КАК ПерваяДатаПлюс15

- это во второй пакет запроса надо, чтоб не напрягать при формировании ВТ )
24 Maxus43
 
02.03.12
12:01
ДОБАВИТЬКДАТЕ(втПерваяДатаДвижения.ПерваяДата, ДЕНЬ, 15) КАК ПерваяДатаПлюс15
25 SashaNox
 
02.03.12
12:03
спасибо большое, разбираюсь
26 SashaNox
 
02.03.12
12:08
получилось, спасибо, а как быть с последним полем?
27 Maxus43
 
02.03.12
12:12
(26) с последним (12) видимо знает, мне лень думать)
28 DrShad
 
02.03.12
12:24
(26) Вложенный запрос спасет отца русской демократии или еще несколько запросов в пакете
29 SashaNox
 
02.03.12
12:29
Сделал вложенный запрос, остатки и обороты, периодичность секунда, связь по периоду и ПерваяДатаПлюс15. Что-то явно не то
30 Maxus43
 
02.03.12
12:31
не всё так просто. надо остатки снять на нужную дату, которую мы получаем в запросе - значит надо снимать соаттки на каждую дату и соединять с нужной, слишком неоптимально...
31 SashaNox
 
02.03.12
12:37
как их снять на каждую дату? мой вариант не правильно работает
32 SashaNox
 
02.03.12
12:47
Сделал такую связь:
       
ВложенныйЗапрос1.Контрагент = ВложенныйЗапрос.Субконто1
И ВложенныйЗапрос1.Договор = ВложенныйЗапрос.Субконто2
И ВложенныйЗапрос1.ПерваяДатаПлюс15 >= ВложенныйЗапрос.Период

вложенный запрос содержит Остатки и обороты, периодичность секунда.
Возможно ли как то задать, чтобы он присоединял только ту запись, которая меньше ПерваяДатаПлюс15, но максимальна среди таких же
33 SashaNox
 
02.03.12
13:24
Как-то так в итоге напилил, поправьте меня:
ВЫБРАТЬ
   ХозрасчетныйОстаткиИОбороты.Период КАК Период,
   ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
   ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
   СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт) КАК СуммаКонечныйОстатокКт
ПОМЕСТИТЬ ВтПоСекундам
ИЗ
   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Секунда, , Счет В (&Счет62), , ) КАК ХозрасчетныйОстаткиИОбороты

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстаткиИОбороты.Субконто2,
   ХозрасчетныйОстаткиИОбороты.Субконто1,
   ХозрасчетныйОстаткиИОбороты.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   МИНИМУМ(ХозрасчетныйОбороты.Период) КАК ПерваяДата,
   ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
   ХозрасчетныйОбороты.Субконто2 КАК Субконто2
ПОМЕСТИТЬ ВтПерваяДата
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, Счет В (&Счет62), , , , ) КАК ХозрасчетныйОбороты

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОбороты.Субконто1,
   ХозрасчетныйОбороты.Субконто2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
   ХозрасчетныйОстатки.Субконто2 КАК Договор,
   ХозрасчетныйОстатки.СуммаОстатокКт КАК Задолженность,
   ВтПерваяДата.ПерваяДата КАК ДатаНачалаЗадолженности,
   ВЫБОР
       КОГДА ХозрасчетныйОстатки.Субконто2.УстановленСрокОплаты
           ТОГДА ХозрасчетныйОстатки.Субконто2.СрокОплаты
       ИНАЧЕ "Не изв."
   КОНЕЦ КАК ОтсрочкаПлатежа,
   ДОБАВИТЬКДАТЕ(ВтПерваяДата.ПерваяДата, ДЕНЬ, ХозрасчетныйОстатки.Субконто2.СрокОплаты) КАК ДатаЗадолженностиСУчетомОтсрочки
ПОМЕСТИТЬ ВтПолТаблицы
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В (&Счет62), , ) КАК ХозрасчетныйОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ ВтПерваяДата КАК ВтПерваяДата
       ПО ХозрасчетныйОстатки.Субконто1 = ВтПерваяДата.Субконто1
           И ХозрасчетныйОстатки.Субконто2 = ВтПерваяДата.Субконто2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВтПолТаблицы.Контрагент,
   ВтПолТаблицы.Договор,
   МАКСИМУМ(ВтПолТаблицы.Задолженность) КАК Задолженность,
   ВтПолТаблицы.ДатаНачалаЗадолженности,
   ВтПолТаблицы.ОтсрочкаПлатежа,
   ВтПолТаблицы.ДатаЗадолженностиСУчетомОтсрочки,
   МАКСИМУМ(ВтПоСекундам.Период) КАК Период
ПОМЕСТИТЬ ВтПолТаблицы2
ИЗ
   ВтПолТаблицы КАК ВтПолТаблицы
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтПоСекундам КАК ВтПоСекундам
       ПО ВтПолТаблицы.Контрагент = ВтПоСекундам.Субконто1
           И ВтПолТаблицы.Договор = ВтПоСекундам.Субконто2
           И ВтПолТаблицы.ДатаЗадолженностиСУчетомОтсрочки >= ВтПоСекундам.Период

СГРУППИРОВАТЬ ПО
   ВтПолТаблицы.Контрагент,
   ВтПолТаблицы.Договор,
   ВтПолТаблицы.ДатаЗадолженностиСУчетомОтсрочки,
   ВтПолТаблицы.ДатаНачалаЗадолженности,
   ВтПолТаблицы.ОтсрочкаПлатежа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВтПолТаблицы2.Контрагент,
   ВтПолТаблицы2.Договор,
   ВтПолТаблицы2.Задолженность,
   ВтПолТаблицы2.ДатаНачалаЗадолженности,
   ВтПолТаблицы2.ОтсрочкаПлатежа,
   ВтПолТаблицы2.ДатаЗадолженностиСУчетомОтсрочки,
   ВтПоСекундам.СуммаКонечныйОстатокКт КАК ЗадолженностьНаДатуЗадолженностиСУчетомОтсрочки
ИЗ
   ВтПолТаблицы2 КАК ВтПолТаблицы2
       ЛЕВОЕ СОЕДИНЕНИЕ ВтПоСекундам КАК ВтПоСекундам
       ПО ВтПолТаблицы2.Контрагент = ВтПоСекундам.Субконто1
           И ВтПолТаблицы2.Договор = ВтПоСекундам.Субконто2
           И ВтПолТаблицы2.Период = ВтПоСекундам.Период
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший