Вход | Регистрация


1С:Предприятие ::

Метки: 

Запрос по остатку по счету для группы когнтрагентов

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

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

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

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

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

        //    СальдоНаНачало=СальдоНаНачало+Записи.СуммаОстаток;

        //КонецЦикла;

       Сообщить(" Остатки долга на дату:"+НачДата);
       Сообщить(   " Сумма [" + Записи.СуммаОстаток + " руб.]"      );
        КонецЕсли;
   mrleo
 
27 - 01.12.17 - 16:20
закомментированная часть для работающего запроса дает верный результат
   hhhh
 
28 - 01.12.17 - 16:21
(26) вот это
        //Пока Записи.Следующий() Цикл


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует