Имя: Пароль:
1C
1С v8
Пересчет ОСВ в валюту
0 N-S-B
 
24.03.16
23:03
Привет! Необходимо сформировать ОСВ по счету в пересчете на валюту. Но не просто остатки по счету умножить на текущий курс, а брать каждый оборот, умножать его на курс на дату оборота, все это просумировать и уже сумму оборотов выводить как остаток по счету.
В карточке счета я вижу все регистраторы и сумму каждого документа, могу все умножить на курс на дату регистратора и просуммировать.
Но как в ОСВ по счету это сделать? Подскажите, в какую сторону копать?
Спасибо.
1 Записьдампа
 
24.03.16
23:09
(0) Ты понимаешь, как формируется карточка счета и не понимаешь, как формируется оборотно-сальдовая ведомость, или тебе лень?
2 zak555
 
24.03.16
23:09
умножить или разделить ?
3 Записьдампа
 
24.03.16
23:17
(2) это обратные операции, не смущай ТС. Хотя контроль на нулевую кратность нужен, да.
4 RomanYS
 
24.03.16
23:29
(0) ну выбирай обороты по дням, дели на курс.

Только хрень получится полная: для нормальной ОСВ выполняется КонОстаток = НачОстаток+Приход-Расход. В твоей такого не будет. Объясни это заказчику и делать не придётся)
5 John83
 
24.03.16
23:32
если очень хочется, то ищи "остатки на каждый день"
6 ВРедная
 
24.03.16
23:35
(0) Интересно, что ты будешь делать, когда дойдешь до остатков на начало и конец.
7 ВРедная
 
24.03.16
23:36
(4) При похожей задаче мы вводили доп ресурс в регистр бухгалтерии.
8 N-S-B
 
29.03.16
16:10
Начал разбираться с ОСВ по счету, в принципе обороты то действительно можно поделить на курс, конец периода посчитать как сумму начального остатка и оборотов. А вот с начальным остатком как быть? Не могу ничего придумать.
9 N-S-B
 
29.03.16
16:25
Хм, а что, если начальный остаток высчитывать во временной таблице как сумму оборотов с самого начала по начало периода ОСВ?
10 RomanYS
 
29.03.16
16:28
(8) Это называется валютный учет, и написанием отчет он точно не решается. Кроме добавления полей для учета, например как (7), понадобятся некие процедуры/документ для учета курсовых разниц.

(9) Костыли здесь не помогут. Поймешь достаточно быстро, когда валютные остатки станут отрицательными при положительных рублевых.
11 N-S-B
 
31.03.16
12:36
Решил все таки попробовать. Но как-то странно себя СКД ведет, никак не разберусь в чем дело.

Вот ОСВ по счету: https://www.dropbox.com/s/x4jcj97prpowtnf/Скриншот%202016-03-29%2016.03.19.png?dl=0

Я сделал временную таблицу, где хранится курс доллара. Еще ничего не делю, никакие новые поля не добавил, никаких связей не сделал, только добавил таблицу: https://www.dropbox.com/s/kubm96n3m8ifigk/Скриншот%202016-03-29%2016.01.10.png?dl=0

И уже ОСВ становится какой-то кривой: https://www.dropbox.com/s/9r5exv623bvusla/Скриншот%202016-03-29%2016.00.39.png?dl=0

Если я уберу таблицу из средней колонки таблицы, но саму временную таблицу в запросе оставлю, ОСВ снова становится нормальной. В чем дело, где косяк?
12 N-S-B
 
31.03.16
17:04
(11) На результат ОСВ влияет любая таблица добавленная в запрос в СКД, но из которой даже не берем никакие поля. Как так?
13 Джинн
 
31.03.16
17:13
(0) Не взлетит.
14 RomanYS
 
31.03.16
23:55
(12) Всё так. У тебя запрос, где записи виртуальной таблицы регистра соединяется с 100500 записей курсов, каждая с каждой. СКД лишь свернула (просуммировала) результат по указанным группировкам и ресурсам.
15 N-S-B
 
04.04.16
11:32
(14) Так соединений тоже никаких нету.
16 los_hooliganos
 
04.04.16
11:37
Наверное задача посчитать курсовые разницы для рублевого банковского счета?
17 los_hooliganos
 
04.04.16
11:38
Самый быстрый вариант - пересчитывать все на MS SQL хранимой процедурой.
Делать это с помощью 1С не очень приятная задача.
18 N-S-B
 
04.04.16
18:54
(14) Подскажите, пожалуйста, где и каким образом соединяются таблицы, если я просто добавляю в запрос таблицу и никакие поля из нее не вытягиваю, никакие соединения не добавляю.
Я скопировать запрос ОСВ в консоль запросов, естественно от добавления таблицы результат никак не меняется, в СКД же каким-то образом меняется.
Добавил в запрос в СКД пустую таблицу регистра курса валют. Формирую ОСВ - значения верные. Добавляю одну запись в регистр - значения верные. Далее же после каждой добавленной записи значения всех полей в ОСВ увеличиваются непонятным образом. Значение добавленных записей в регистр на результат не влияют.
Подскажите, пожалуйста, куда копать?
19 Джинн
 
04.04.16
18:58
Пытка апельсинами длилась третий час... (с)

Говорю же - не взлетит. Даже если удастся пересчитать - баланс не сойдется. Задача бестолковая с момента постановки.
20 HeKrendel
 
04.04.16
19:02
(19) Баланс же должен сойтись, ведь проводка делает 2 записи, какая фиг разница по какому курсу?
21 HeKrendel
 
04.04.16
19:03
Вернее так, обороты должны сойтись
22 Джинн
 
04.04.16
19:03
(20) "На фиг разница" называется курсовой.
23 PR третий
 
04.04.16
19:06
Что самое интересное, за 22 поста никто не спросил, а нахрена автору запизхивать курсовые разницы в отчет да еще через анальное отверстие o_O
Только что (16) робко предположил и то в (17) тут же какую-то хрень предложил :))
24 HeKrendel
 
04.04.16
19:07
(23) Потому что спросившие за свою карьеру, какую-только хрень не реализовывали, а убеждать ТС за свою личное время я не намерен
25 PR третий
 
04.04.16
19:09
(24) Ну да, зачем писать короткое и правильное "Нахрена?", если можно написать пару — тройку развернутых предложений, как сделать полную куйню :))
26 HeKrendel
 
04.04.16
19:10
(25) Джинн диагноз дал еще в (13)
27 PR третий
 
04.04.16
19:11
(26) Джинн как всегда сказал как в армии, типа вот таблетка, половина от головы, половина от живота, не перепутай.
28 N-S-B
 
04.04.16
19:12
Ок, если баланс и обороты не сойдутся, мне теперь интересно почему так странно СКД себя ведет - (18) ? Каждое поле отчета ОСВ умножается на кол-во записей в таблице, которую я добавляю в запрос.
29 PR третий
 
04.04.16
19:14
(28) В (18) копать в сторону гугления "Левое соединение", потому что ты написал настолько детский вопрос, что даже непонятно, как тебе объяснить, что тебе нужно соединение по условию, а не тупое декартово произведение.
30 N-S-B
 
04.04.16
19:17
(29) Да причем тут левое соединение. Я ничего не соединяю, просто добавил таблицу в запрос, никакие поля из нее не вытягиваю. Через консоль запросов результат не меняется же.
31 PR третий
 
04.04.16
19:35
(30) Слушай, чувак, если ты никаких полей не вытягиваешь, то нахрена ты добавляешь таблицу?
Я тебе еще раз настоятельно советую погуглить или устроиться во франч, если возьмут, там из тебя быстро эту труху выбьют из головы.
32 N-S-B
 
04.04.16
20:32
(31) Я же выше описал. Я создал временную таблицу с курсами, соединяю её по периоду с таблицой оборотов, но получилась какая-то ерунда, даже в тех полях, которые я не трогаю. Начал разбираться и обнаружил, что результат отчета ОСВ меняется даже, если я просто добавляю таблицу и не вытягиваю никакие поля и ни с чем не соединяю её.
33 PR третий
 
04.04.16
20:43
(32) Причем здесь период? Соединять надо не по периоду, а по максисмальному периоду и валюте.
Вытягиваешь ли какие-либо поля, запрос не волнует.
Короче, читай про левое соединение.
34 N-S-B
 
04.04.16
20:49
(33) Ок, возможно я неправильно делал соединение, но проблема не в этом! Даже, если я добавлю таблицу без каких-либо соединений, просто в запросе добавлю таблицу вот так - https://www.dropbox.com/s/kubm96n3m8ifigk/Скриншот%202016-03-29%2016.01.10.png?dl=0
То уже все значения ОСВ меняются, а именно умножаются на кол-во записей в этом самой таблице.
35 PR третий
 
04.04.16
20:53
(34) Рукалицо

Это и есть соединение, блеать.

Иди читай основы.
36 hhhh
 
04.04.16
21:55
(34) если ты просто пишешь две таблицы - это называется полное декартово произведение, это совершенно дикий результат получится, всё умножается на всё, миллион строчек, другими словами грязная бомба.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший