Имя: Пароль:
1C
1С v8
Остатки на несколько дат в Запросе
0 zhukovia
 
29.04.20
17:32
Можно ли как то в запросе получить остатки на момент времени следующий сразу за датой документов выбранных в другом запросе? Поясняю. У меня запросом выбираются документы, а после этого мне нужно выбрать остатки по некоторым счетам на момент времени после этих документов (для каждого). Сейчас я просто перебираю в цикле ТЗ документов и с помощью РегистрыБухгалтерии.Остатки(МоментСразуПослеДокумента,,Отбор) получаю нужные остатки и дописываю их в ТЗ. Но это очень медленно получается. Поэтому интересуюсь, можно или нет в одном запросе все сделать.
1 breezee
 
29.04.20
18:20
(0) Погуглите остатки на каждый день в запросе. Стал расписывать как это получается простыми словами, но решил Вас больше не путать. Тема уже была на обсуждении..
2 palsergeich
 
29.04.20
18:29
(0) Особо быстрее вряд ли получится, ибо если даты документов разные, а нужно получить остаток именно на момент времени - никак кроме как отдельный запрос на каждую дату каждого документа.
Возможно следует подумать как упростить задачу.
3 zhukovia
 
29.04.20
18:35
(1) Я смотрел уже это, но не совсем понимаю как мне это использовать. У меня не на каждый день надо, а на даты конкретных документов. А они могут быть с интервалом в месяц, или три в один день. Может намекнете еще как нибудь, как
делать то?
4 zhukovia
 
29.04.20
18:38
(2) Печально если так. Документы разные, причем может быть как раз в месяц, так и несколько за день, остатки соответственно за день будут разными. Т.е. нельзя в запрос список передать и остатки по нему получить?
5 breezee
 
29.04.20
19:00
А вообще я давно не делал запрос к регистру юухгалтреии. Остатки и обороты там есть? Конечный остаток и так будет остатком сразу за моментом времени документа
6 zhukovia
 
29.04.20
19:08
(5) Не совсем понял о чем речь. Да там есть и остатки и обороты. Но про какой остаток идет речь? Остаток на конец чего?
7 breezee
 
29.04.20
19:12
(6) Да, конечный остаток. В 1 таблице в запросе Вы выберите все документы, во втором в отбор по ним, в таблице РегистрБухгалтреии.ДВиженияхССубконто отбор по регистраторам из таблицы1 и выводить регистратор и конечный остаток
8 zhukovia
 
29.04.20
19:21
(7) Я об этом и спрашиваю. Как это сделать? Как передать этот отбор в запрос 2? Пример или ссылку на пример можно?
9 rsv
 
29.04.20
20:10
(0) как вариант при обходе таблицы доков делать динамический  текст запроса

Остатки  дата1
Union all
Остатки. Дата2
.
.
N

И тд и потом один раз выполнить запрос
10 Cyberhawk
 
29.04.20
20:19
(1) (5) Не прокатит та методика с моментом времени
11 zhukovia
 
30.04.20
09:36
(10) Т.е. никак получается?
12 zhukovia
 
30.04.20
09:37
(9) И быстрее получится? Доков может быть несколько сотен, значит и запросов будет столько же. Я правильно понял?
13 Cyberhawk
 
30.04.20
09:49
(11) Так ты определись, на дату или на момент времени
14 SleepyHead
 
гуру
30.04.20
10:13
(11) Рассчитать остаток на дату первого документа и выбрать движения всех последующих до последнего, а потом считать остатки в обходе предлагали уже?
15 zhukovia
 
30.04.20
11:03
(13) Мне надо на время документа, включая этот документ. Т.е. показать какие остатки получились после проведения этого документа.
16 Cyberhawk
 
30.04.20
11:06
(15) ОстаткиИОбороты с периодичностью по регистратору (РесурсКонечныйОстаток) тебе в помощь
17 zhukovia
 
30.04.20
11:06
(14) Дак заранее не понятно один документ в течении дня или несколько. Что за "хитрый" запрос нужно написать чтобы это все обрабатывалось, я не понимаю. Тогда уж, наверное проще оставить как я сделал, через перебор списка док в цикле с расчетом остатков по каждому. Медленно но зато понятно. Или я не правильно понял что вы предлагаете?
18 zhukovia
 
30.04.20
11:07
(16) А вот как туда список документов засунуть?
19 mistеr
 
30.04.20
11:17
(15) Постановка задачи вызывает сомнения. Одно проведение задним числом и эти данные уже неактуальны. Я бы докопался до истоков и скорректировал постановку.
20 mistеr
 
30.04.20
11:18
Отсутствие эффективных типовых механизмов для решения задачи это сигнал о том, что постановка возможно неадекватная. Либо структура метаданных неадекватная.
21 Cyberhawk
 
30.04.20
11:21
(18) Куда?
22 zhukovia
 
30.04.20
11:29
(21) В ОстаткиИОбороты с периодичностью по регистратору. Мне же нужно запрос составить с отбором по этим регистраторам. Во и вопрос как список подать туда? Не в цикле же. Я конечно скорее всего туплю, но не могу сообразить как
23 zhukovia
 
30.04.20
11:33
(20) Возможно и так. Но с этим ничего поделать уже не получится. Мне нужно вывести отчет в котором список документов (разных), а в дополнительных колонках остатки по 41 и 60 счетам. Причем не все документы двигают эти счета и у некоторых остаток будет повторятся.
24 mistеr
 
30.04.20
11:46
(22) Получи "ОстаткиИОбороты с периодичностью по регистратору" за весь период (мин., макс.) и отбирай по регистраторам.
25 zhukovia
 
30.04.20
12:05
(24) А как быть если документ не двигал этот счет? Как я понял тогда его не будет в остатках или не так?
26 НичегоНе Понятно
 
30.04.20
12:11
(3)>> У меня не на каждый день надо, а на даты конкретных документов
Так без разницы же. Вот здесь я выбирал цену на дату продажи товара http://developer1c.ru/srez-poslednikh-registra-svedenii-na-kazhduiu-datu-podrobno.html
27 mistеr
 
30.04.20
12:12
(25) Да, не будет. Если нужен, присоедини список доков.
28 mistеr
 
30.04.20
12:16
(27) Остатки нужно взять с предыдущего или следующего дока, как-то извернуться. ВычислитьВыражение() например.
29 mistеr
 
30.04.20
12:17
(26) Остатки РБ так не выберешь.
30 zhukovia
 
30.04.20
12:52
(27) Как присоединить то? Как вообще сделать подобный запрос? Например есть список из дат и как его засунуть в запрос остатков? РегистрБухгалтерии.РасчетыРегистр.Остатки(Дата в (&СписокДат)) КАК РасчетыРегистр Ведь так же не получится сделать или может через ГДЕ делать Дата в (&СписокДат). Дайте пример или ссылку на пример, ну или направление хотя бы. А то я правда не понимаю что делать и в каком направлении копать?
31 mistеr
 
30.04.20
13:46
(30) Нет готового решения, нужно думать, изобретать. Направление я указал.
32 zhukovia
 
30.04.20
14:07
(31) Ну спасибо и на этом.
33 Бертыш
 
30.04.20
14:20
(30) Как было сказано в знаменитом вирусном ролике про тех поддержку "Вы заходите не оттуда".
Вам нужно рассчитывать остатки путем добавления и вычитания к остатку на некую минимальную дату икс. Если речь идёт о датах документа то добавляем секунду при формировании таблицы дат, а если речь идёт о моментах времени, а у вас скорее всего речь именно о моментах времени, о границах, то даже и не знаю. Думать надо и самое простое что при этом выдумывается так это некая отстранённая структура хранения для нужных данных. Ни достоверности правда при этом ни эффективности.... Можно ещё в выдуманный реквизит при проведении писать якую чушь нужную
34 Бертыш
 
30.04.20
14:28
Я в прошлом году похожие кульбиты с расчетом долга на позицию документа и кучей сопутствующих параметров по просьбе заказчика крутил ибо он настаивал на том что нельзя менять структуру и перепроводить документы, то есть требовал что бы вместо получения данных из структур хранения цифирь бралась расчетным путём от момента начала ведения учёта. Отчёт менеджера о продажах или как то так эта хрень называлась. Ну я пошёл человеку на встречу, но по мере накручивания им хотелок становилось всё хуже и всё страшнее и я окончательно сломался и отказался продолжать работу когда мой запрос стал занимать эдак 11 тысяч строк. Пытаешься же держать всю логику в голове, а там и сальда на итую дату и просроченное сальдор на итую дату и ещё куча доп условий и выводимых параметров была
35 zhukovia
 
30.04.20
14:55
(33) Про то что можно добавить 1 сек к датам я понимаю, и можно так и сделать. Но вод как запрос сделать с запросом остатков на эти даты никак не пойму. Не делать же условие ГДЕ Дата в (&СписокДат). Так же не прокатит? И как соединить в одном запросе Таблицу с документами и Запрос остатка? Я понимаю, что эти вопросы может быть и тривиальны для знающих, но мой "скил" явно недостаточный для того чтобы слёту понимать "обороты" вроде "присоедини список доков". Можно пример на пальцах (схематично) как запихать этот чертов список в запрос? Ну типа так: ВЫБРАТЬ * ИЗ Регистр.Обороты(Дата В (ВЫБРАТЬ * ИЗ СписокДокументов).ДатаДокумента)
36 zhukovia
 
30.04.20
14:58
(34) И кстати, не подскажете как лучше в запросе сравнивать со счетом?
Так РасчетыРегистр.СчетКт.Код = ""41"" или так РасчетыРегистр.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Расчеты.Счет41)
37 Бертыш
 
30.04.20
15:40
(35) Да нет же.... вы не ставите условие на таблицу остатков, а формируете таблицу дат и на каждую дату соединением таблиц рассчитываете остаток
38 Бертыш
 
30.04.20
15:42
+37 Посмотрите как определяется курс валюты на каждую дату. от вам примерно также
39 Бертыш
 
30.04.20
15:43
40 Бертыш
 
30.04.20
15:44
Вот Вам оно надо, только у Вас вместо среза последних некое начальное сальдо на доистоическую дату обращением к таблицы остатков на тую дату, плюс минус движуха туда сюда
41 zhukovia
 
30.04.20
15:45
(40) Спасибо. Посмотрю сейчас.
42 mistеr
 
30.04.20
15:50
(40) Боюсь, не осилит ТС "плюс минус движуха". Да и я пожалуй не осилю. Пусть платформа этим занимается.
43 Бертыш
 
30.04.20
16:23
(42) Ну тогда таблица должна быть по любому не остатки, а остаткиобороты
44 Бертыш
 
30.04.20
16:27
+43 как кстати уже писал кто то ранее
45 Cyberhawk
 
01.05.20
09:42
(22) ГДЕ