Имя: Пароль:
1C
1С v8
Запрос по остатку по счету для группы когнтрагентов
0 mrleo
 
01.12.17
12:57
1С 8.3 Предприниматель. Нужен остаток по 62-му счету для группы контрагентов. Запрос для произвольного контрагента выглядит так:
Запрос.Текст = "ВЫБРАТЬ
        |      ХозрасчетныйОстатки.Субконто1,
        |      ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |      РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 = &Контр) КАК ХозрасчетныйОстатки";
Для группы контрагентов пробовал запрос:
Запрос.Текст = "ВЫБРАТЬ
        |      ХозрасчетныйОстатки.Субконто1 КАК Конрагент,
        |      ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |      РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 = Контрагент В ИЕРАРХИИ (&ГрупКонтр)) КАК ХозрасчетныйОстатки";

Не работает. Помогите с правильным запросом.
1 Джинн
 
01.12.17
12:59
"= Контрагент" явно лишнее
2 mrleo
 
01.12.17
13:02
Попробовал, спасибо, выдает несколько сумм, а как свести к общей сумме?
3 Джинн
 
01.12.17
13:03
(2) Убрать "ХозрасчетныйОстатки.Субконто1 КАК Конрагент". Ваш Кэп.
4 mrleo
 
01.12.17
13:07
Запрос.Текст = "ВЫБРАТЬ
        |      ХозрасчетныйОстатки.Субконто1,
        |      ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |      РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&ГрупКонтр))) КАК ХозрасчетныйОстатки";

Запрос работает! Выдает остатки по счету для каждого контрагента, входящего в группу. А как изменить запрос, чтобы он выдавал одну сумма остатка для всей группы контрагентов?
5 vicof
 
01.12.17
13:09
(4) Группировать по родителю, выбирать родителя
Следующий вопрос: а как сделать суммы по иерархии?
6 mrleo
 
01.12.17
13:42
Выходит, только цикл по результатам запроса с суммированием  остатков?
7 Borteg
 
01.12.17
13:44
(6) Запрос.Текст = "ВЫБРАТЬ
        |      ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |      РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&ГрупКонтр))) КАК ХозрасчетныйОстатки";
8 Джинн
 
01.12.17
13:45
(6) Нет, выходит что сначала нужно в мозгу уложить то, чего вы хотите получить. Если Вам нужна только сумма, то на кой ляд Вы субконто включаете в результат?
9 Джинн
 
01.12.17
13:46
(7) См. (3) :))
10 Borteg
 
01.12.17
13:46
(9) :))
11 mrleo
 
01.12.17
15:35
Всем спасибо, в мозгу все уложилось!
12 mrleo
 
01.12.17
15:48
Запрос.Текст = "ВЫБРАТЬ
        |      ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |      РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&ГрупКонтр)) КАК ХозрасчетныйОстатки";
не работает!!!
13 mrleo
 
01.12.17
15:50
Результат запроса пустой, хоть в мозгу и уложилось...
14 Джинн
 
01.12.17
15:52
(13) Параметры кривые.
15 mrleo
 
01.12.17
15:52
Выходит, только (6) или возможны варианты?
16 hhhh
 
01.12.17
15:54
(15) только (12), но почитать книжки.
17 Джинн
 
01.12.17
15:54
(15) Ептыть, параметры передайте в запрос нормальные. Или по переданному набору параметров остатков нет.
18 azernot
 
01.12.17
15:56
Держу пари, что-нибудь типа

Запрос.УстановитьПараметр("ГрупКонтр", "Поставщики")
19 hhhh
 
01.12.17
15:56
(17) ну, (4) работает у него.
20 azernot
 
01.12.17
16:01
(13) Результат запроса пустой, или 0 в результате?
Может быть и в (4) было
Вася +4
Петя -4
?
21 mrleo
 
01.12.17
16:15
Запрос.Текст = "ВЫБРАТЬ
        |      ХозрасчетныйОстатки.Субконто1,
        |      ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |      РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&ГрупКонтр))) КАК ХозрасчетныйОстатки";

Запрос работает! Выдает остатки по счету для каждого контрагента, входящего в группу.
Запрос.Текст = "ВЫБРАТЬ
        |      ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |      РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&ГрупКонтр)) КАК ХозрасчетныйОстатки";
не работает! Результат запроса пустой.
22 mrleo
 
01.12.17
16:17
(18) пари проиграл
23 hhhh
 
01.12.17
16:17
(21) как результат получаете?
24 mrleo
 
01.12.17
16:18
Есть дельные советы?
25 hhhh
 
01.12.17
16:18
(21) дальше, что в коде после запроса?
26 mrleo
 
01.12.17
16:20
Результат = Запрос.Выполнить();
        Если Результат.Пустой() Тогда
        Иначе
            Записи = Результат.Выбрать();
        //Пока Записи.Следующий() Цикл
        //    СальдоНаНачало=СальдоНаНачало+Записи.СуммаОстаток;
        //КонецЦикла;
       Сообщить(" Остатки долга на дату:"+НачДата);
       Сообщить(   " Сумма [" + Записи.СуммаОстаток + " руб.]"      );
        КонецЕсли;
27 mrleo
 
01.12.17
16:20
закомментированная часть для работающего запроса дает верный результат
28 hhhh
 
01.12.17
16:21
(26) вот это

        //Пока Записи.Следующий() Цикл

реальнго бред. Надо

        Пока Записи.Следующий() Цикл


то есть по факту (18) выиграл пари.
29 mrleo
 
01.12.17
16:22
(28) ты не внимательно читаешь
30 mrleo
 
01.12.17
16:23
я ж писал - с циклом и работающим запросом все ок, спрашивал, можно без цикла?
31 hhhh
 
01.12.17
16:24
(29) ну еще раз , выбрасывать

        Записи.Следующий()

это дебилизм. Во втором варианте нет Записи.Следующий()

значит это дебильный вариант.
32 Михаил Козлов
 
01.12.17
16:26
(21) Можно попробовать счет вывести. Или сгруппировать, взяв сумму. Или выгрузить (с субконто1) в ТЗ и взять ИТОГ.
33 azernot
 
01.12.17
16:33
(26) Результат = Запрос.Выполнить();
        Если Результат.Пустой() Тогда
        Иначе
            Записи = Результат.Выбрать();
       Если Записи.Следующий() ТОгда
Сообщить(" Остатки долга на дату:"+НачДата);
       Сообщить(   " Сумма [" + Записи.СуммаОстаток + " руб.]"      );
        КонецЕсли;
34 mrleo
 
01.12.17
16:33
Запрос.Текст = "ВЫБРАТЬ
        |      ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстаток
        |ИЗ
        |      РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&ГрупКонтр)) КАК ХозрасчетныйОстатки";
Работает в следующем варианте:
Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
    Иначе
        Записи = Результат.Выбрать();
        Записи.Следующий();
       Сообщить(" Остатки долга на дату:"+НачДата);
       Сообщить(   " Сумма [" + Записи.СуммаОстаток + " руб.]"
35 mrleo
 
01.12.17
16:34
Всем спасибо, извините, если что не так...
36 vicof
 
01.12.17
16:57
Автора парил цикл, который проходил один раз? М-да...
37 vicof
 
01.12.17
16:58
Дарю, без циклов и запросов

РегистрБухгалтерииМенеджер.<Имя регистра бухгалтерии> (AccountingRegisterManager.<Имя регистра бухгалтерии>)
Остатки (Balance)
Синтаксис:

Остатки(<МоментВремени>, <ВидыСубконто>, <Отбор>, <Измерения>, <Ресурсы>)
Параметры:

<МоментВремени> (необязательный)

Тип: Дата; МоментВремени; Граница.
Момент времени, на который необходимо получить остатки. Если параметр не указан или установлен в Неопределено, то будут получены текущие остатки (на максимальную дату движений регистра). Если в качестве параметра передана Дата, то остатки будут получены на начало дня, если МоментВремени - то в остатках не будут учтены движения регистра, произошедшие в тот же момент времени.
<ВидыСубконто> (необязательный)

Тип: ПланВидовХарактеристикСсылка.<Имя плана видов характеристик>; Массив; ФиксированныйМассив.
Передается ссылка, или массив ссылок, или фиксированный массив ссылок на виды субконто. Виды субконто определяют, какие значения субконто будут доступны по именам "Субконто1", "Субконто2" и т.д. Кроме того, остатки будут посчитаны только по счетам, имеющим заданные виды субконто. Если виды субконто не заданы, то обращение к значениям субконто осуществляется по порядку (индексу), как они определены на соответствующем счете.
Параметр не существует, если при конфигурировании для плана счетов не указаны субконто.
<Отбор> (необязательный)

Тип: Структура.
Структура, содержащая набор значений измерений регистра, по которым надо отбирать итоги. Допустимые значения ключа: Счет, Субконто<Номер>, <Имя измерения>.
Если параметр не указан, то отбор не используется.
<Измерения> (необязательный)

Тип: Строка; Неопределено.
Список измерений, для которых надо получить остатки. Строка, содержащая имена измерений, разделенные запятыми. Допустимые имена измерений: Счет, Субконто<Номер>, <Имя измерения>.
Если параметр не указан или указано Неопределено, то остатки будут сформированы по всем измерениям.
Значение по умолчанию: Неопределено.
<Ресурсы> (необязательный)

Тип: Строка; Неопределено.
Список ресурсов, для которых надо получить остатки. Строка, содержащая имена ресурсов, разделенные запятыми.
Если параметр не указан или указано Неопределено, то остатки будут сформированы по всем ресурсам.
Значение по умолчанию: Неопределено.
Возвращаемое значение:

Тип: ТаблицаЗначений.
В таблице содержатся поля "ОстатокДт" и "ОстатокКт".
Описание:

Получает остатки по регистру бухгалтерии на заданный момент. Остатки получаются в разрезе заданных измерений и по заданным ресурсам. В измерения входят счет и субконто, зависящие от счета. Если параметр <ВидыСубконто> не задан, то обращение к субконто осуществляется по индексу в том порядке, как виды субконто определены на соответствующем счете. Если параметр <ВидыСубконто> задан, то остатки будут считаться только по счетам, у которых определены заданные виды субконто, обращение к значениям субконто осуществляется в порядке, заданном параметром <ВидыСубконто>.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Параметр <ВидыСубконто> не существует, если при конфигурировании для плана счетов не указаны субконто.
Пример:

Рег = РегистрыБухгалтерии.Хозрасчетный;
Отбор = Новый Структура("Субконто1,Организация,Счет",
        Ссылка,ТекОрганизация,СчетУчетаБУ);
ВыборкаЗаписей = Рег.Остатки(ДатаСведений,ВидСубконтоОС,Отбор);


--------------------------------------------------------------------------------

     Методическая информация
38 vicof
 
01.12.17
16:58
Хотя не...сторно