Имя: Пароль:
1C
1C 7.7
v7: ОбработкаПроведения() - получить итог по регистру с учетом движений документа
0 Злопчинский
 
22.01.16
15:18
...как получить итог регистра на момент включая проведенный документ - т.е. с учетом записанных движений по документу в этом проведении...
например на ТиС 9.2

Процедура ОбработкаПроведения()
   ...
   ...
   //здесь закончился штатный алгоритм проведения документа
   //проведение возможно как в ТА, так и задним числом
   //как здесь получить итоги по Регистр.Покупатели с учетом записанных движений по регистру, типа РассчитатьИтогиПо(ТекущийДокумент())
.
???
1 aka AMIGO
 
22.01.16
15:27
так вроде-б и должно получиться.. Закончил запись в регистр -выводи хоть движения, хоть итоги..
Текущий док войдет в их число..
2 Злопчинский
 
22.01.16
15:38
(1) как получить итоги?
3 Масянька
 
22.01.16
15:39
(0) А зачем в итогах текущий док-т?
4 aka AMIGO
 
22.01.16
15:45
(2)
у меня что-то похожее сделано, примерно так (для других, нужных мне, регистров)
    ТЗИР = СоздатьОбъект("ТаблицаЗначений"); // проверка полной продажи

    Рег = СоздатьОбъект("Регистры");
    РегЗаявки = Рег.Заявки;
    РегРезервыТМЦ = Рег.РезервыТМЦ;
    Если ИтогиАктуальны()=0 Тогда
        Рег.Актуальность(1);
        Рег.РассчитатьРегистрыНа(ТекущийДокумент());
    КонецЕсли;
        РегЗаявки.ВыгрузитьИтоги(ТЗИЗ,0,1);
        
        РегРезервыТМЦ.ВыгрузитьИтоги(ТЗИР,0,1);
5 trdm
 
22.01.16
15:47
блин, это было даже в одном из заданий экзаменнационных по торговле.
6 Злопчинский
 
22.01.16
15:47
(4) Почему
Рег.РассчитатьРегистрыНа(ТекущийДокумент());
а не
Рег.РассчитатьРегистрыПО(ТекущийДокумент());
..
?
7 Garykom
 
гуру
22.01.16
15:48
(6) потому что ТА
8 aka AMIGO
 
22.01.16
15:48
(6) А.. это мне так надо было :)
замени :)
9 Злопчинский
 
22.01.16
15:49
(5) да. я все понимаю, я - тупой...
но такой код В МОДУЛЕ ПРОВЕДЕНИЯ у меня выдает итоги почему-то на сейчас, а не по текущий документ() (заднее число)
10 Масянька
 
22.01.16
15:49
(6) ПО - начало, НА - конец.
11 Злопчинский
 
22.01.16
15:49
(7) а мну надо на заднее число
12 Злопчинский
 
22.01.16
15:50
(10) уверена? не наоборот?
13 trdm
 
22.01.16
15:50
(9) а я тоже уже забыл как это делается)
14 aka AMIGO
 
22.01.16
15:51
(11) так у мну и считается на заднее.. проверено на 100 рядов, 5 лет работает
15 Злопчинский
 
22.01.16
15:51
(4) зачем  Рег.Актуальность(1); - если никаких действий по изменению итогов регистра через Рег - не выполняется?
16 aka AMIGO
 
22.01.16
15:51
(15) для распальцовки.
17 Злопчинский
 
22.01.16
15:51
(14) поможешь в онлайне при необходимости?
18 aka AMIGO
 
22.01.16
15:52
(17) Друже, у меня к тимвьюеру перекрыт кислород.
19 aka AMIGO
 
22.01.16
15:53
+18 я-б с удовольствием.. :(
20 Масянька
 
22.01.16
15:53
(11) Не совсем (я не Бог), но по-моему.
21 Злопчинский
 
22.01.16
15:54
(19) понятно, слился...
22 aka AMIGO
 
22.01.16
15:56
(21) да нет, ты не понял..
Я не слился, только если вечером, из дому, во субботу, к примеру. Сегодня не могу, ДР у жены.

В проблеме вроде как ничего сложного-то и нет..
23 Масянька
 
22.01.16
15:56
(21) А вообще посмотри в ТиС: номенклатура для подбора - там по кнопке фильтр можно выставить.
24 Масянька
 
22.01.16
15:56
(22) Цветы купил? :)
25 Злопчинский
 
22.01.16
15:57
(22) угу, устроит в удобное для тебя время, на выходных наверное у компа буду
26 Злопчинский
 
22.01.16
15:58
(23) существенное условие - модуль проведения, транзакция незакрыта еще. подбор в номенклатуре - немножко другое
27 Mikeware
 
22.01.16
15:58
(21) так а рассчитатьПо() - не работает?
Ну или в конце концов, РасссчитатьРегистрыНа(СформироватьПозициюДокумента(ТекущийДок, 1))
?
28 Злопчинский
 
22.01.16
15:58
(20) РассчитатьРегистрыПо(<?>,);
Синтаксис:
РассчитатьРегистрыПо(<ГраницаРасчета>,<ГрафаОтбора>)
Назначение:
Рассчитать все регистры с установленным флагом временного расчета на конец события.
Параметры:
29 aka AMIGO
 
22.01.16
15:59
(25) угу. Спишемся через почту. Твоя у меня есть.
(24) нет, вечером в метро куплю.
30 Злопчинский
 
22.01.16
15:59
(27) да блин временный расчет - (провожу ПКО в 29.12.15) - выполняется, а в итогах - то что на сейчас - и это несмотря на то, что времрасчет - выполняется...
31 Mikeware
 
22.01.16
16:00
(25) Кстати, да - в сиквельной версии виртуальные таблицы врали, приходилось движения напрямую читать.
32 Злопчинский
 
22.01.16
16:00
ладно, ребят, спасибо - покручу еще, да и  aka AMIGO обещался помочь.
может просто страшный тупняк на меня напал...
33 Злопчинский
 
22.01.16
16:00
(31) дбфная база
34 Масянька
 
22.01.16
16:01
(28) Ну, вот нашел... Берет или начало дня (или там чего нужно), или конец.
35 Масянька
 
22.01.16
16:01
(30) Дык, посмотри в ТиС (23).
36 Злопчинский
 
22.01.16
16:02
просто тупо не вижу проблемы. Вроде все должно работает - но фигня получается
37 Mikeware
 
22.01.16
16:02
(30)
    РегРезервыТМЦ = Рег.РезервыТМЦ;
    Рег.Актуальность(1);
проведение...
    Рег.РассчитатьРегистрыНа(ТекущийДокумент());
?
(31) знаю, что ты только с ними раотаешь - потому и пишу.
38 Масянька
 
22.01.16
16:03
(29) Эх, ты... Надо было, блин, с утра... Кофе + цветы в постель :)))
39 Mikeware
 
22.01.16
16:04
(38) розы в постель? И залить кофеем? жестоко...
40 aka AMIGO
 
22.01.16
16:05
(38)(39) Я уходил - она спала :) Только разбудил поздравить, и убёг на работу.
Договорились с дочкой вечером поздравить :)
41 ЧеловекДуши
 
22.01.16
16:14
(0) Зачем? :)
42 HawkEye
 
22.01.16
18:33
(10) так-то наоборот )))

(0) Актуальность(<?>);
Синтаксис:
Актуальность(<ФлагАктуальности>)
Назначение:
Устанавливает флаг актуальности временного расчета. Возвращает текущее состояние флага актуальности временного  расчета. Число: 1 - временный расчет поддерживается в актуальном состоянии; 0 - не поддерживается.
Параметры:
<ФлагАктуальности> - необязательный параметр. Число: 1 - временный расчет поддерживать в актуальном состоянии; 0 - не поддерживать актуальность временного расчета.  Если параметр не задан, то метод просто возвращает текущий флаг актуальности, не меняя его.
Замечание:
Данный метод можно использовать только в модуле проведения документа. Если флаг установлен, то все последующие движения регистров будут изменять итоги временного расчета, и ,значит, итоги регистров временного расчета будут все время (при проведении документа) находиться в актуальном состоянии.
43 Злопчинский
 
22.01.16
19:45
(42)  не хочу лезть в типовой алгоритм
Хочу в конце проведения написать самостоятельный код, не привязанный к предыдущему
44 HawkEye
 
23.01.16
19:26
(43) ну и?

тогда еще проще... зачем тебе актуальность...


перед КонецПроведения

Рег = СоздатьОБъект("Регистры");
Остатки = Рег.ОстаткиТМЦ;
Рег.РассчитатьРегистрыПо(ТекущийДокумент(),);

Остатки.ВыбратьДвиженияДокумента(ТекущийДокумент());
пока Остатки.ПолучитьДвижение() = 1 Цикл


или что там тебе надо?
45 Злопчинский
 
23.01.16
19:27
(44)  попробую