Имя: Пароль:
1C
1С v8
Как получить остатки на конец периода по счету ?
, chess1886, ,
0 never_be
 
12.06.13
17:20
Никогда не имел дело с запросами к регистрам бухгалтерии, мне надо на определенную дату запросом получить остатки на конец периода дебет и кредит (счет 631), какую таблицу для этого использовать, может пример есть какой-то ?
1 Alterife
 
12.06.13
17:21
Виртуальную таблицу регистра бухгалтерии. Также разберись с параметрами вируальных таблиц.
2 zak555
 
12.06.13
17:34
(1) +1

только учти, что есть "свёрнутые" итоги и развёрнутые
3 never_be
 
12.06.13
17:37
Вот такой запрос получился:

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

Не могу только вкурить как сюда период впихнуть, получаю остатки на текущую дату. В настройках таблицы есть период но его установить не могу,
4 zak555
 
12.06.13
17:38
1. читай, что такое параметры виртуальной таблицы
2. какой период, если ты хочешь получить остаток на дату ?
5 never_be
 
12.06.13
17:40
(4) Неправильно выразился, таки на дату.
6 never_be
 
12.06.13
17:41
(2) Вот, мне надо чтоб остались только "незакрытые" суммы, как это сделать ?
7 zak555
 
12.06.13
17:41
РегистрБухгалтерии.Хозрасчетный.Остатки (тут есть параметры, и тут тоже)
8 zak555
 
12.06.13
17:42
(6) незакрытые суммы --- это и есть остатки
9 never_be
 
12.06.13
17:43
(7) В настройках таблицы Остатки есть окошко период в котором только мои 2 параметра счет и субконто1, где тут дату впилить ?
10 never_be
 
12.06.13
17:44
В регистрах накопления все как-то проще.
11 zak555
 
12.06.13
17:45
(9) открой в конфигуруторе справку

(10) тоже самое
12 never_be
 
12.06.13
17:57
(11) Разобрался, спасибо.
13 zak555
 
12.06.13
18:05
(12) 790 рублёв мне бы не помешало на телефоне
14 never_be
 
12.06.13
18:23
(13) спасибо это намного больше :)

почему-то запрос выполняется подозрительно медленно
15 never_be
 
12.06.13
22:06
Ребята если упорядочиваю по Субконто1 получаю неправильный результат запроса, в Субконто1 Контрагент, я хочу результат получить отсортированный по алфавиту, как это сделать ?

Вот такой запрос выводит результат не правильно, без упорядочивания все гуд


"ВЫБРАТЬ
                       |    ХозрасчетныйОстатки.Счет,
                       |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
                       |    ХозрасчетныйОстатки.Субконто2,
                       |    ХозрасчетныйОстатки.Субконто4,
                       |    ХозрасчетныйОстатки.СуммаОстатокДт,
                       |    ХозрасчетныйОстатки.СуммаОстатокКт,
                       |    ХозрасчетныйОстатки.Субконто3
                       |ИЗ
                       |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаКон, , , ) КАК ХозрасчетныйОстатки
                       |ГДЕ
                       |    ХозрасчетныйОстатки.Счет = &Счет
                       |
                       |УПОРЯДОЧИТЬ ПО
                       |    Субконто1";
16 GoldenCalf
 
12.06.13
22:19
А что значит неправильный результат?
17 never_be
 
12.06.13
22:27
(16)  Нету половину контрагентов в результате, не совпадает с ОСВ по счету, показывает по сути движения, а не остатки потому что есть все суммы, даже закрытые.
18 never_be
 
12.06.13
22:27
(16) без упорядочивания все ок, результат совпадает с ОСВ
19 Фрэнки
 
12.06.13
22:33
в параметрах остатков поставь отбор по счету, а то у тебя возвращает всю-всю остаточную вирт-таблицу на дату... А условие ХозрасчетныйОстатки.Счет = &Счет срабатывает в том виде как у тебя уже после выполнения дефолтного подзапроса для виртуальной таблицы.
20 never_be
 
12.06.13
22:33
Так с результатом и без упорядочивания лажа, проверил не все, оказывается результат отличается от ОСВ и хз почему. Что не так в запросе ? Видимо дату не так кушает.
21 zak555
 
12.06.13
22:36
(14) надо было 14 000 просить ?
22 never_be
 
12.06.13
22:39
(21)  )) Напасть какая-то, не работает ничего.
23 Фрэнки
 
12.06.13
22:40
(20) попробуй КонецДня(ДатаКон)+1 - там есть пояснения насчет использования даты в остатках, надо было внимательней читать
24 zak555
 
12.06.13
22:49
(22) что мне нужно сделать ?
25 never_be
 
12.06.13
22:50
(23) не помагает

вот запрос

        Запрос = Новый Запрос();
        Запрос.Текст = "ВЫБРАТЬ
                       |    ХозрасчетныйОстатки.Счет,
                       |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
                       |    ХозрасчетныйОстатки.Субконто2,
                       |    ХозрасчетныйОстатки.Субконто4,
                       |    ХозрасчетныйОстатки.СуммаОстатокДт,
                       |    ХозрасчетныйОстатки.СуммаОстатокКт,
                       |    ХозрасчетныйОстатки.Субконто3
                       |ИЗ
                       |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , ) КАК ХозрасчетныйОстатки";
         Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("631"));
         Запрос.УстановитьПараметр("Период",КонецДня(НаДату)+1);
         РезультатПоСчету = Запрос.Выполнить().Выбрать();

ставлю любую дату результат всегда одинаковый, ничего не понимаю.
26 zak555
 
12.06.13
22:53
(25) осв покажи
27 hhhh
 
12.06.13
23:25
дальше что написано?
28 GROOVY
 
12.06.13
23:31
(25) В школу... Нефиг методом тырканья пальцем работать с серьезной системой.

Всего за 1000р на телефон я расскажу что такое параметр виртуальной таблицы "субконто", как он действует на производительность и как его использовать для выбора данных.
Так же расскажу почему не имеет смысла выбирать счет в том случсе если он задан как значение отбора.
29 GROOVY
 
12.06.13
23:32
А, забыл.... Еще рублей 300 и я рассажу про параметр "Период" о том, что есть такая штука как "Граница"  о том, почему это не катит при оперативном проведении.
30 zak555
 
12.06.13
23:32
(28) > Так же расскажу почему не имеет смысла выбирать счет в том случсе если он задан как значение отбора.


переведи
31 GROOVY
 
12.06.13
23:33
1300 должно на неделю хватить...
32 zak555
 
12.06.13
23:33
(31) ты много кушаешь
33 GROOVY
 
12.06.13
23:34
(30) Счет 631. Я это знаю. зачем мне в каждой строке в таблице еще и колонка с этим счетом? 631, 631, 631. Нафига? Счет что, другим будет?
34 GROOVY
 
12.06.13
23:35
(32) Я часто в роуминге. Это не я зажрался, а опсосы.
35 zak555
 
12.06.13
23:38
(33) это же укр, а у них нет субсчетов

(34) надо бывать чаще на Родине
36 GROOVY
 
12.06.13
23:40
(35) Где про субсчета?

Я часто, пока что, бываю на родине. Больше чем полгода.
37 zak555
 
12.06.13
23:43
я неправильно прочитал (33) )))


(36) в каких же странах ?
38 GROOVY
 
12.06.13
23:51
РФ, КЗ, Суоми, другое. По времени пребывания.
39 never_be
 
13.06.13
08:18
Вот окончательный вид запроса, какую дату не ставлю результат всегда одинаковый, кто-то кому не лень тыкните где не правильно, перерыл гугл но везде точно такой же запрос пишут и вроде работает

        Запрос = Новый Запрос();
        Запрос.Текст = "ВЫБРАТЬ
                       |    ХозрасчетныйОстатки.Счет,
                       |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
                       |    ХозрасчетныйОстатки.Субконто2,
                       |    ХозрасчетныйОстатки.Субконто4,
                       |    ХозрасчетныйОстатки.СуммаОстатокДт,
                       |    ХозрасчетныйОстатки.СуммаОстатокКт,
                       |    ХозрасчетныйОстатки.Субконто3
                       |ИЗ
                       |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , ) КАК ХозрасчетныйОстатки";
         Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.РасчетыСОтечественнымиПоставщиками);
         Запрос.УстановитьПараметр("Период",КонецДня(НаДату));
40 never_be
 
13.06.13
08:38
(39) Плющит меня, все работает, осталось только упорядочить результат.
Если делаю так, суммы правильные и упорядочивает как надо но в запрос попадают закрытые суммы, а мне контрагенты с нулевым остатком не нужны

"ВЫБРАТЬ
                       |    ХозрасчетныйОстатки.Счет,
                       |    ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
                       |    ХозрасчетныйОстатки.Субконто2,
                       |    ХозрасчетныйОстатки.Субконто4,
                       |    ХозрасчетныйОстатки.СуммаОстатокДт,
                       |    ХозрасчетныйОстатки.СуммаОстатокКт,
                       |    ХозрасчетныйОстатки.Субконто3
                       |ИЗ
                       |    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = &Счет, , ) КАК ХозрасчетныйОстатки
                       |
                       |УПОРЯДОЧИТЬ ПО
                       |    ХозрасчетныйОстатки.Субконто1.Наименование";
41 never_be
 
13.06.13
08:53
Как в результате запроса выкинуть закрытые суммы ?
                                   ДТ           КТ
21.02.2013                     1 156
30.04.2013        7 567,5    
27.05.2013        4 372,8    
29.01.2013        2 540,4    
29.05.2013                     1 271
29.01.2013                     2 540,4
23.04.2013                     7 567,5
30.04.2013        1 413    
30.04.2013                     1 413
22.05.2013                     844
22.02.2013        1 156    
28.05.2013                         844    
22.05.2013                     4372,8
42 Фрэнки
 
13.06.13
08:55
(41) а там у тебя аналититки одинаковы в этих якобы "закрытых"?
43 never_be
 
13.06.13
09:29
(42) Да, одно счет, второе оплата. В оплате есть ссылка на счет.
44 never_be
 
13.06.13
09:38
Вот еще пример:
                                                                                 ДТ           КТ
Поступление товаров и услуг 00000000437        3 424    
Поступление товаров и услуг 00000001761        3 828    
Платежное поручение исходящее 00000002097            3 828

нафига мне показывать 3828 если оно закрыто
45 Фрэнки
 
13.06.13
10:25
(44) по тексту запроса видно, что у тебя 4 субконто.
Сворачивание остатков происходит в виртуальной таблице остатков регистра, когда все 4 субконто совпадут. Т.е. движения по составу значений в каждой своей записи отличаются у разных регистраторов
46 never_be
 
13.06.13
10:30
(45) Отличаются, то есть прийдется вручную убрать лишние записи ?
47 Фрэнки
 
13.06.13
10:38
(46) из отчета? ну будешь каждый раз убирать. Правильный подход - исправить или поступление или платежки

А тебе в этом частном случае твоего отчета все 4-ре субконто сразу нужны? Я бы попробовал оставить в запросе только Субконто1 и посмотрел свернется оно автоматом или нет
48 acsent
 
13.06.13
10:40
(44) у  тебя НЕ ЗАКРЫТЫ остатки
49 Csar
 
13.06.13
10:53
(23) неправильно говоришь. Если проводки были не 31.12.12 23:59:59, а 01.01.13 00:00:00, то они тоже попадут в остатки. Правильно брать границу даты:
Запрос.УстановитьПараметр("Период",Новый Граница(КонецДня(НаДату), ВидГраницы.Включая));
50 never_be
 
13.06.13
11:01
(47) Мне надо только 1 и 3, пробовал их оставить ничего не меняется.
51 Фрэнки
 
13.06.13
11:15
(50) значит значения в третьем субконто выбраны разные. Во встроенной справке на таблицу остатков заявлено, что:
---
Позволяет получать остатки на произвольную дату в разрезе Счет, <Имя измерения>, Субконто<Номер субконто>.
Агрегация производится по полю счет, измерениям и субконто указанным в запросе.
---
Так что попробуй переписать агрегацию на свой лад или думай о заменене третьего субконто в регистраторах и перепроведении документов за отчетный период.
52 never_be
 
13.06.13
11:20
(51) Спасибо, вопрос закрыт.
53 Фрэнки
 
13.06.13
11:28
(49) я дословных развернутых разъяснений разработчиков сейчас не могу найти, но сам смысл у виртуальных таблиц остатков такой, что для них задано по описанию << Позволяет получать остатки на произвольную дату в разрезе Счет, <Имя измерения>, Субконто<Номер субконто>. >>

К сожалению, <<НА произольную дату>> разработчики сделали так, что запрос вернет разные результаты при подстановке в поле Период значений: ДАТА(01.01.13 00:00:00)
или Новый Граница(ДАТА(01.01.13 00:00:00), ВидГраницы.Включая)
.
54 Csar
 
13.06.13
11:39
(53) так, конечно, разные результаты. остатки на 'Дата' будут неполными и отличаться от истины. Что бы получить настоящие остатки на дату надо указывать дату через границу Граница('Дата', ВидГраницы.Включая). Это легко проверить посмотрев в ОСВ остаток по заданным условиям на дату 'Дата'.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший