Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Остатки на несколько дат в Запросе

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

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

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


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