![]() |
![]() |
![]() |
|
ЗаписатьПроводки(), ВыполнитьЗапрос(текущийДокумент(),текущийДокумент()) | ☑ | ||
---|---|---|---|---|
0
FAR
18.10.04
✎
14:54
|
Вот такая проблема: провожу документ. Проведение разбито, упрощенно говоря, на 2 этапа. В первом из них записываются проводки по счету А. Во втором надо использовать результаты работы первого этапа. После первого блока ставлю Операция.ЗаписатьПроводки(), Операция.Записать().
Во втором выполняю ВыполнитьЗапрос(текущийДокумент(), текущийДокумент(),"А"). И НИЧЕГО! Запрос мне выдает би.ДО() = 0; Притом, если заменять текущийДокумент() на ДатаДок, то он выдает би.ДО() не равный нулю, где учитывает оборот по счету А в первом блоке. Примечание: если испольлзую би.выполнитьЗапрос(датаДок,датаДок,"А",,,"Операция"), а потом выбратьПериоды, получитьпериод, то 1с пробегает по циклу всего лишь 1 раз, и выдает консолидированную сумму, равную обороту за датуДок. Я уже ничего не понимаю:кто глючит: я или 1С. Хелп! Заранее спасибо, FAR |
|||
1
Rovan
гуру
18.10.04
✎
15:01
|
Запись в базу не производиться пока не закрыта транзакция, коя произходит после удачного завершения процедуры проведения. Так что как-ньть по другому надо.
|
|||
2
FAR
18.10.04
✎
15:04
|
А в чем же тогда сама ссуть записатьПроводки() ? Только в том, что можешь учитывать их минимум за день, а по этому конкретному документу не можешь?
Кстати, ручная операция позволяет такое !!!! |
|||
3
FAR
18.10.04
✎
16:49
|
Так что , совсем все плохо?
|
|||
4
Rovan
гуру
18.10.04
✎
16:53
|
Видимо все-таки я неправ, извиняюсь, читаем тут
http://www.mista.ru/tutor_1c/buh_oper.htm Делаем Операция.Записать() в самую последнюю очередь. |
|||
5
FAR
18.10.04
✎
17:23
|
Вообще, делал и в последнюю, не помогало.
|
|||
6
FAR
18.10.04
✎
17:25
|
ХОТЯ.....
|
|||
7
OctoberHammer
18.10.04
✎
17:32
|
2(5) Э... У меня так сделано в проведении БВ. скажем по одному заказу может быть две строки, и нужно чтобы ко второй строке учитывались проводки, сделанные по первой строке...
так вот смотри: ИТ.ВыполнитьЗапрос(ТекДок,,); ИТ.СНД();//так было ---- Теперь я переписал так: ИТ.ВыполнитьЗапрос(,ТекДок,); Ит.СКД();//Берем конечное сальдо, понятно почему. Операция.ЗаписатьПроводки(); ====== Еще я заходил отладчиком, ставил точку останова на оператор Операция.ЗаписатьПроводки(), запускал в разделенном режиме два экземпляра 1С, в одном проводил документ, а в другом находил его операцию в журнале операций и буквально смотрел, как появляются проводки после каждой строки... |
|||
8
FAR
18.10.04
✎
18:06
|
to OctoberHAmmer
3 строки последнего примера - это при формировании 2 строки ? тогда зачем там тебе нужны записатьПроводки а не просто операция.записать? |
|||
9
OctoberHammer
18.10.04
✎
18:27
|
2(8) Нет, это после каждой строки. Просто первый пример - это как было в типовой, а второй - как пришлось переписать. То есть поменять начальную дату на конечную, и взятие конечного сальдо вместо начального.
|
|||
10
FAR
18.10.04
✎
18:31
|
То есть ты не можешь просто получить обороты по этому документу, пока проведение не закончилось, поэтому полагаешь оборот, как разница между сальдо ?
|
|||
11
OctoberHammer
18.10.04
✎
18:39
|
2(10) ффух... Нет, это я показал для примера. В твоем случе вроде все правильно, но все равно нужно быть внимательным, в частности применить прием, описаный в последнем абзаце (7) То есть - вда экземпляра - под одним юзером проводим документ и держим точку останова на Операция.ЗаписатьПроводки(), а во втором смотрим проводки после проведения каждой строки - действительно ли они там появлятся. что будет, если заказать оборотку - включены ли проводки в обороты за период, и т.п.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |