Имя: Пароль:
1C
1C 7.7
v7: Модуль документа, расчет регистра
0 exec11
 
14.03.23
10:55
v77
Всем добрый день !
Понадобилось посчитать прибыть в самописной конфе.
Есть регистр по попартиям. Есть отчет который показывается все красиво, какая накладная с какого прихода что списывает.
Захотелось прибыть для удобства занести в отдельный регистр, по каждому документу так сказать просуммировать.

Думаю, что велосипед городить не буду, копирую запрос из отчета по партиям, вставляю в модуль документа продажи при проведении. В запросе период с 2001 по ДатаДок.
Открываю документ, пере провожу, все ок. Радуюсь. Решаю все документы пере провести для выстроения нового регистра. ТА на первый документ в базе. На последний.

И тут повалились ошибки. "невозможно обращение к итогам после та"
То есть ТА например на начале марта, а документ например 12 числа. Ну логично, что ругается.
Сдвинуть в запросе, в модуле документа "по" с 12 числа на начало месяца нельзя. Расчет будет не верный.

А как быть ? Где почитать про велосипед, без интегралов (в стандандартной конфигурации) ?

Как выстроить ДокПокупка - ДокПродажа для расчета прибыли иначе чем в запросе с группировками ?

Может у кого есть примерчик ? Хотя бы что то похожее ..
1 p-soft
 
14.03.23
11:02
(0) хорошая фраза: "Думаю, что велосипед городить не буду, <дальше аццкий бред>", возьму на заметку, спасибо.
по теме, посмотрите, как выглядит блок проведения расходной накладной в том же ТиС 9.2 и сделайте так же - не изобретайте велосипед, да.
2 uno-group
 
14.03.23
11:02
В модуле проведения документов пишешь проведение по своему регистру. препроводишь все документы. Групповой обработкой или средствами 1с операция-провести.
Если они конечно пере проводятся. за частую когда-то отрицательные остатки разрешали когда-то запрещали. и сейчас чтобы пере провести всю базу придеться тону дерьма разгрести.
3 JeHer
 
14.03.23
11:06
(0) >>>Захотелось прибыть для удобства занести в отдельный регистр
Это и есть велосипед.
4 uno-group
 
14.03.23
11:08
Какое удобство в прибыли в отдельном регистре? Думаю с такими знаниями это высосанное из пальца удобство. За 20 с гаком лет работы с семеркой не возникало такого желания и потребности.
5 KJlag
 
14.03.23
11:08
а интересно, для чего было перепроводить?
если нужно было заполнить свой регистр, почему не обработкой дернуть доки и программно записать туда записи? чтобы не перепроводить все доки и тд.
6 uno-group
 
14.03.23
11:16
(5) Это уже высшая математика. Человек в 7.7 только сложение вычитание учит, ему еще таблицу умножения предстоит изучить просят же без интегралов. Что есть стандартная конфигурация? Очень сомневаюсь, что сейчас остались те кто сидит на 7 в стандартной конфе. У кого так было давно на 8 переехали. Кто остался на 7 у них в 99% случаях она миллион раз переписана и от стандартной там осталась заставка и константа с номером последнего релиза
7 Злопчинский
 
14.03.23
11:23
(0) Открой типовую ТиС и посмотри как построен регистр "Продажи" (оборотный). Не надо ничего мутить с уже сделанному по партиям.
если есть проблемы - стучись в скайп Zlopun? но обсуждение/обучение/пояснения - предметные будут.
8 Злопчинский
 
14.03.23
11:26
Спокойно можно перепровести все доки, не удаляя существующих движений, а дописывая новые для старых доков, а для новых доков - обычный полный алгоритм.
Вариантов куча как сделать
9 Злопчинский
 
14.03.23
11:28
(5) это тебе не снеговик. программно записать туда записи - весьма проблематично (прямые запросы, см.на ИС "граната для обезьяны" от Ёпрст). любая модификация регистра в клюшках - это есть исполнение модуля проведения документ прямо или косвенно (через доступ к контексту модуля проведения).
10 Bigbro
 
14.03.23
11:29
(4) недавно сделал отдельный регистр для выручки в нужных разрезах аналитики. чтобы дергать нужные записи сразу а не ждать перерасчета по документам с тысячами строк. потому что в исходных нужная аналитика отсутствует можно сделать расчет по первичным данным но это очень небыстрая процедура. поэтому регламентно - запуск обработки и формирование результатов месяца, а потом эти результаты дергай сколько влезет - получаются мгновенно.
11 Андрей_Андреич
 
naïve
14.03.23
11:50
(10) Ты народ-то не пугай. Или уже нашел замену? :)
12 Злопчинский
 
14.03.23
11:51
(11) "Я поэт, зовусь Незнайка, от меня вам - балалайка!" ;-)
13 Bigbro
 
14.03.23
11:58
(11) я все передал, начальство теперь пусть думает, завтра на новом месте. сегодня проставлялся, каждый не только пожелал удачи но и пообещал звонить))))))
чем пугать то, в наших условиях - это наиболее адекватный шаг, лучше один раз час посчитать, зато потом каждый отчет за секунду будет)  текущие документы и регистры трогать чревато, слишком большие объемы данных.
14 Андрей_Андреич
 
naïve
14.03.23
12:01
(13) Удачи!
15 Злопчинский
 
14.03.23
12:03
(13) Поздравляю! Желаю успехов в новых реалиях! Держи в курсе, интересно.
16 exec11
 
14.03.23
12:09
(7) Конфа самописная.
Все знать нельзя. По этому разбираюсь (можно сказать обучаюсь) по мере возникновения практических задач. Иногда на примере своих ошибок.

(10) (13) Согласен.
Я не рассказываю без надобности все невероятные желания скрестить ужа с колючей проволокой.
Но настал момент ( дорос ) до того, что хочу иметь данные в таком разрезе, которые можно удобно получать выборкой, без мудреных расчетов быстро, с минимальными затратами и временем.
Тем более что можно их один раз рассчитать, путь даже трудо затратно. А потом можем хоть пять раз в секунду дергать результат. Легко быстро и эффективно !
17 Злопчинский
 
14.03.23
12:14
(16) мля, читал что я написал выше - стукайся в скайп Zlopun, если есть интерес....
освобожусь где-то в 13-00 МСК
18 uno-group
 
14.03.23
16:16
"ТА на первый документ в базе. На последний." По логике все правильно делаешь должно работать. Обычно такая ошибка появляется когда ТА на не последнем проведенном документе стоит. Увеличивай интервал видимости Может так какой регламентированный документ на 10 лет вперед создали видал я таких умельцев.
19 uno-group
 
14.03.23
16:18
Или если делаешь это не в полном журнале.
20 johnnik
 
14.03.23
16:35
Думаю, что велосипед городить не буду, копирую запрос из отчета по партиям, вставляю в модуль документа продажи при проведении. В запросе период с 2001 по ДатаДок.
-----------
Вы в модуле проведения рассчитываете партии с 2001-го года???
21 АгентБезопасной Нацио
 
14.03.23
16:51
(20) у нас с 2001 года одна Партия! "Здесь вам не тут!"©ЧВС ИИ да,
22 uno-group
 
14.03.23
17:18
Зачем вообще в модуле проведения запрос. Обычно итоги по регистру рассчитывают и на их основании делают текущие проводки.
23 Chai Nic
 
14.03.23
17:31
(22) Работа в точке актуальности - не единственный вариант
24 uno-group
 
14.03.23
17:47
(23) РасчитатьТегистрыНа/По кто заставляет только в ТА работать? Единственное когда нужен период это всякие закрытия месяцев, калькуляции и т.п. Точно не в документе ДокПокупка - ДокПродажа.
Фраза "копирую запрос из отчета по партиям, вставляю в модуль документа продажи при проведении." говорит что человек говорить о "Но настал момент ( дорос ) " не верно и нужно сперва разобраться чем проведение документа от отчета отличается.
25 Злопчинский
 
14.03.23
19:51
РассчитатьРегистраНа/По - основной тормоз при проведении. А если еще и регистры не закрыты - то вместо пары тысяч записей тянутся десятки и сотни тысяч...
26 exec11
 
16.03.23
08:42
(20) Да.

(22) У каждой партии своя прибыть. Мне надо сгруппировать:
Приход Товара (что бы увидеть закупочную цену в документе)
  Отгрузка товара, может быть несколько, цены у всех разные, прибыли тоже разные.

Это к вопросу зачем мне этот сводный регистр. Что бы не считать каждый раз с 2001года всю простыню.

(22) Вопрос, как это сделать?

(24) По сути мне нужен не расчет регистра на какой то момент,а выборка сгруппированных партий, в которой есть блок из одного прихода и нескольких отгрузок. Перебрав документы этого блока, я могу посчитать прибыль по этому блоку. И так надо перебрать все блоки. (Что собственно отчет и делал. Вот прям один в один.)

Ну или менять как совсем модель подсчета прибыли.
27 Злопчинский
 
16.03.23
09:25
(26) блин, ну все же зависит от того какая структура у товего регистра партий.
или какую структуру регистра "Продажи" (типа как в ТИС) сделать для получения быстро запросом нужных тебе итогов сгруппированных как надо...
28 Злопчинский
 
16.03.23
09:33
делаешь регистр типа "Продажи", оборотный
Измерения: Номенклатура,Партия,Покупатель,Поставщик,Фирма
Ресурсы: Количество,Себестоимость,ПродажнаяСтоимость
.
При своем проведении по партиям по документу продажи добавляешь заполнение этого регистра.
.
Отчет работает быстро, собирается/группируется тривиально, выводится либо штатно по методике ТиС или универсальным отчетом по ТЗ с любыми группировками с вариантом в т.ч. и шахматкой.
29 Злопчинский
 
16.03.23
09:34
Возможно, если структура регистра партий достаточноая - то данные оттуда можно вытащить...
30 exec11
 
16.03.23
09:48
(27) В измерения - куча всего. Ресурсы - Остаток (количество крокодилов)
Ну так делаю Запросом в отчете. А Запросом в модуле документа не работает при движении ТА с первого на последний документ.
Если все документы в ручную пере проводить заходя в каждый то работает. Нужно что бы работало при движении ТА.

(28) Вы пишите ресурс - себестоимость. Так я ее и пытаюсь найти, так как товар не обнулятся по остатку за этот период, то пересчитывать с группировкой надо за весь большой период. Запрос в отчете с этим хорошо и быстро справляется. Но этот же запрос не работает в модуле. А что бы в документе Продажа заполнить Ресурс - Себестоимость нужно его рассчитать.

Как? Чем заменить Запрос ??

(29) Достаточная. Надо расширим.
31 Злопчинский
 
16.03.23
09:56
(30) что ты запросом в модуле документа-то делаешь?
32 exec11
 
16.03.23
09:57
Попробую визуализировать:

Покупка 1шт
Покупка 3шт
Покупка 2шт
Покупка 1шт

Продажа 6шт

Отчет группирует:
Покупка 1шт
--Продажа 1шт

Покупка 3шт
--Продажа 3шт

Покупка 2шт
--Продажа 2шт

Покупка 1шт

Имея любой блок, например:
Покупка 3шт
--Продажа 3шт

Посчитать прибыль просто:
ЦенаПлкупки*3 - ЦенаПродажи*3 = Прибыль.

(31) Делаю это. Считаю прибыть.
33 Злопчинский
 
16.03.23
10:22
(30) "А Запросом в модуле документа не работает при движении ТА с первого на последний документ."
что значит "не рабботает"..? откуда мы знаем что у тебя за запрос и какая ахинея в нем написана...?
34 Злопчинский
 
16.03.23
10:23
(32) хрень полная. зачем считать прибыль в модуле проведения?
35 Злопчинский
 
16.03.23
10:25
(32) Попробую визуализировать:
да и так понятно что ты "визуализируешь"...
самописная конфа... считать партионку на лету в каждом модуле проведения...
млин ТиСу уже без изменений как минимум с 1999г. За 20 лет можно было уже посмотреть хоть как чуть более-менее нормально сделать...
36 АгентБезопасной Нацио
 
16.03.23
10:25
(34) ну если у тебя в модуле проведения считается себес (ну, вычисляется партия, с которой продается) - то почему бы и не посчитать прибыль?
37 Злопчинский
 
16.03.23
10:26
(32) хрень полная-3
возвраты - не учтены.
списания - не учтены
оприходвания - не учтены
.
возможно ничего этого и нет в самописном этом адском костыле (это уже понятно что там ад и израиль)
но хрень полная
38 Злопчинский
 
16.03.23
10:27
(36) да без проблем, но не так как у ТС...
39 Злопчинский
 
16.03.23
10:28
(36) в (34) приавльнее мне было написать - зачем в модуле проведения считать партионку так как ТС написал в "визуализации"...
40 АгентБезопасной Нацио
 
16.03.23
10:30
(32) в модуле проведения тебе надо вычислить документ прихода, товар из которого ты продаешь.
для этого заводится регистр партий. куда документ прихода пишет себя, товар , количество и стоимость "в плюс". А документ расхода считает сколько товар апо каждому приходу осталось, и списывает (пишет "в минус")  те документ прихода, товар и количество и стоимось проданного товара. Это называется "партионный учет"
41 АгентБезопасной Нацио
 
16.03.23
10:31
(39) ахез. он художник, он так видит...
42 exec11
 
16.03.23
12:14
(33) -> (0) И тут повалились ошибки. "невозможно обращение к итогам после та"

(34) Что бы полученную прибыль по документу записать в новый Регистр, для более сложных дальнейших расчетов на основании Нового Регистра.
Ну а где ее считать ? Отчет есть уже. Обработкой пересчитывать ? Не хочу обработкой. Прибыть должна рассчитываться при расходе.

(35) - сижу, курю документацию, лазаю по другим конфигурациям, уровень феншуя пока не достаточен .. повышаю .. не повышается ..

(36) -> (0) Не считается! И тут повалились ошибки. "невозможно обращение к итогам после та"

(40) Да. "партионный учет" - это сейчас и реализовано. Документы+Регистр+Отчет.
Стоимость. Стоимость. Стоимость. Хорошо. Добавляем в Ресурсы стоимость.
При покупке, цена на колич = стоимость, ВыполнитьРасход.
Про продаже, цена на колич = стоимость, ВыполнитьПиход. А как тут как привязаться к конкретной партии ? Или ? Как ?

А получится, возьмем простой пример, на примере что был :
Покупка 1шт *10р = -10 (так как расход, обратное от прибыли, прибыль будем считать положительной)
Покупка 3шт *10р = -30  -40
Покупка 2шт *10р = -20  -60
Покупка 1шт *10р = -10  -70

Продажа 6шт *10р = 60  -10

Получается убыток -10р. Хотя должно быть 0. По чем купили, так и продали. И еще 1 крокодил остался.
В какой момент разбиваем по партиям ? И как это делать ?
В Запросе это делалось группировками, а тут как предполагается ?

Далее, мы понимаем, что если и накопить прибыль в регистре стоимость .
Как быть в случаях, когда надо рассчитать прибыть за определенный день, месяц, год с детализацией от куда она взялась. Задачи то в итоге шире. Учесть убытки, учесть бонусы, вычесть налоги, разные по разным статьям, зачесть что нибудь, логистику например, вычесть зарплату.
43 Arbuz
 
16.03.23
16:02
(42) Да посмотри уже как реализован регистр ПартииНаличие в стандартном ТиС'е. Не идеал конечно, но достаточно для большинства задач. Сразу скажу, что измерение по МОЛ это опосредованно по Складам.
44 Злопчинский
 
16.03.23
20:07
(42) то что ты написал в конце топика это уже задача шире чем определение прибыли той которую ты опи ал - она называется Валовая прибыль. А учёт логистики, фот, откаты, налоги, аренда офиса, у, Луги от поставщиков ид - это уже косвенные расходы, которые вместе с валовой прибылью формируют прибыль (упрощенно).И считать прибыль и фин результат по деятельности компании в торговоучетной проге это вам чревато боком и гроша выеденного не стоит.
45 Злопчинский
 
16.03.23
20:12
Открой тис и кури как написали выше доки поступления ТМЦ и реализации ТМЦ в части регистра партии наличие, а для валовой прибыли там оборотный регистр "Продажи", данные в который пихаются по данным регистра партий для упрощения расчётов и использования в отчёте соответствующем. В принципе можно обойтись только регистром партий, но там может быть много специф ки и движений нехарактерных доя данных по прибыли и придётся фильтровать в отчёте по прибыли. А подход простой - рассчитали и запихнули в регистр продажи один раз при проведении, а потом сотню раз быстро простым кодом выдернули всё готовое без расчетов
46 АгентБезопасной Нацио
 
16.03.23
20:25
(44)да ему самый примитив нужен.
47 Злопчинский
 
17.03.23
00:32
(46) ну дык делов на полдня/день с перекурами и покером чтобы сделать работающий макет. а дальше вылизыватьи дизайнерить можно до 8-кинабок
48 victuan1
 
17.03.23
07:41
Глянул для прикола структуру регистров, которые используются для расчета прибыли в отчете о продажах в типовой 1С 7.7: Предприниматель:
https://imgur.com/vWoUX9e
49 exec11
 
17.03.23
15:58
(48) Хорошую картинку отправил. Она меня натолкнула на следующее.
У меня же есть документ поступления в регистре ПоПартиям.
По этому все сопоставляется, оказывается. А от туда можно взять закупочную цену.

Поэтому:

Р=СоздатьОбъект("Регистр.ПоПартиям");
Р.ВыбратьДвиженияДокумента(ТекущийДокумент());
Пока Р.ПолучитьДвижение()>0 Цикл
     ДокПок=Р.Остаток*Р.ДокументПоступления.Цена;
     ДокПрод=Р.Остаток*Цена;
     Прибыль = Прибыль+(ДокПрод-ДокПок);
КонецЦикла;

Вопрос, при перемещении ТА на первый документ в базе, а потом на последний. Корректно будет работать:
Р.ВыбратьДвиженияДокумента(ТекущийДокумент());

Так как мы понимаем, что ТА при пере проведении будет стоять на начале месяца, у текущем документе дата например 17.03, в выборку попадут документы за 10.03 ??
Он получается после ТА, но раньше даты текущего документа.
50 АгентБезопасной Нацио
 
17.03.23
16:11
(48) у Предприимателя свои заморочки, связанные с законодательными особенностями ведения КУДиР. Которые ТС'у совершенно не нужны.
51 АгентБезопасной Нацио
 
17.03.23
16:14
(49) вы  пытаетесь применить "теорему о бесконечных обезьянах"? в частном ограниченном случае?
52 Злопчинский
 
17.03.23
19:22
(49) последний абзац какой-то бред непонятный. Похер где стоит та. Та позволяет получить итоги без расчёта на сейчас. А всё что не сейчас - для получения итогов требует расчёт временных итогов. Поэтому если ты итоги берёшь из регистра то должен понимать ать надо ли их брать на та или требуется расчёт временных итогов.
53 Злопчинский
 
17.03.23
19:23
(49) испольжуе ая цена в данном твоём коде херня полная и будет нормально работать только если цена задана в Шапке локумента
54 Злопчинский
 
17.03.23
19:25
(49) Та при пере проведении документа стоит либо на этом документе либо за ним (ближе к сейчас), а не начале месяца
55 АгентБезопасной Нацио
 
17.03.23
20:25
(52) в отношении ТС тебе корректнее использовать известную картинку с лётчиком...
56 Злопчинский
 
17.03.23
21:20
(49) госпадяяяяя...
Дерагать документ для получения цены - это херня полная. Это в качестве обучения. Ибо дергание документа - это обращение к такому неразделяемому ресурсу как общий журнал доков.поэтому в регистт партий в элемент справочника партий при проведении запихивают закупочную цену. Если в регистре партий нет измерения типа справочника партий, то закупочную цену можно запихнуть в реквизит регистра, но этот реквизит будет доступен только для движений регистра, но не для итогов регистра. Или иным образом непосредственно в регистре хранить закуп.цену каким-то иным образом. Нам, православным клюшечникам с нашей колокольни не видать что за структура у твоего регистра партий, а показать структуру регистпа партий ТСу видно религия не позволяет...
Или я пропустил?
57 Злопчинский
 
17.03.23
21:20
(55) про лётчика некопенгаген
58 Злопчинский
 
18.03.23
01:07
ТС - еще ничего...
тут вот на дрипцентре задание висит.
.
Доработка БП 8 000 руб.
Необходимо сделать так, чтобы была возможность списывать материалы со счета 10 на забалансовый счет 013 в БП 3.0
.
"Как низко пал секам..."
59 exec11
 
20.03.23
11:02
(52) Получается, что надо делать так:
Р.ВременныйРасчет();
Р.РассчитатьРегистыПо(ТекущийДокумент());
Р.ВыбратьДвиженияДокумента(ТекущийДокумент());
? ?

А в чем отличие РасчитатьРегистыНа и По ? ?

(53) - это для уплощения ..
(54) -> (0)
(56) Религия не при чем. Учту замечание. Замечание дельное. Надо его обдумать.
60 Андрей_Андреич
 
naïve
20.03.23
11:05
(59) На 1-е число это остатки на утро 1го, а По 1-е это остатки на конец дня 1го
61 exec11
 
20.03.23
11:14
(60) А если документ 12 числа создан ?
Это будет тоже справедливо ?
"На 12-е число это остатки на утро 12го, а По 12-е это остатки на конец дня 12го"  ? ?
62 АгентБезопасной Нацио
 
20.03.23
11:16
(60) он про отезок времени "в документ" говорит, а не "в день"
(59) МужикВКепке® отвечает вам:

РассчитатьРегистрыНа(<?>,);
Синтаксис:
РассчитатьРегистрыНа(<ГраницаРасчета>,<ГрафаОтбора>)
Назначение:
Рассчитать все регистры с установленным флагом временного расчета на начало события.

РассчитатьРегистрыПо(<?>,);
Синтаксис:
РассчитатьРегистрыПо(<ГраницаРасчета>,<ГрафаОтбора>)
Назначение:
Рассчитать все регистры с установленным флагом временного расчета на конец события.
63 exec11
 
20.03.23
11:20
(62) - это встроенная справка, я ее читал, несколько раз. Но события бываю разные. Поэтому и вопрос возник, уточняющий. (61) - это же верно ?
64 АгентБезопасной Нацио
 
20.03.23
11:24
(63) прочитать мало.
нужно попытаться понять.
даю на_водку: "регистры", это у вас "кошелек". Событие - "получение зарплаты". Будет ли у вас отличаться "регистрНа" и "регистрПо"? чем?
65 Irbis
 
20.03.23
11:24
(63) В целом верно. Границей расчета в "клюшках" может быть ещё и документ, ЕМНИП.
66 АгентБезопасной Нацио
 
20.03.23
11:26
(65) о чем МужикВКепке® и говорит: Параметры: <ГраницаРасчета> - значение типа дата, документ или позиция.
67 exec11
 
20.03.23
11:38
(66) Еще у документа есть время. Еще есть такой зверь как ТА.
С которым проблема описана в (0) когда документ от 14 числа, например, Запрос указываешь по ДатаДок. И получаешь ошибку, что ТА на начале месяца. А ты хочешь итоги на текущий момент (с учетом дата и времени документа). Почему ТА по прежнему где том, а не двигается, с каждым пере проведенным документом, для меня пока загадка.

Я эту кривость до конца не до понимаю. На верно не достаточный уровень феншуя. По этому и опасаюсь всего.

Получается <ГраницаРасчета> она такая, у каждого своя. И каждый по своему прав. Но нужна точность.
68 Андрей_Андреич
 
naïve
20.03.23
11:44
(67) Так запрос По ДатаДок это запрос на конец дня твоего же документа, то есть почти гарантирован залет за ТА
69 Андрей_Андреич
 
naïve
20.03.23
11:45
(67) Уже выложи модуль дока что ли
70 АгентБезопасной Нацио
 
20.03.23
11:47
(67)МужикВКепке® говорит: ПроводитьПослеТА(<?>,);
Синтаксис:
ПроводитьПослеТА(<ФлагДляНеПров>,<ФлагДляПров>)
Назначение:
Установить режим проведения документа после ТА. Возвращает текущее значение режима перепроведения документа в зависимости от проведенности.
Параметры:
<ФлагДляНеПров> - режим проведения документа после ТА. Число: -1 (минус единица) - проводить документ всегда задним числом; 0 - при проведении запрашивать режим проведения документа; 1 - проводить документ в реальном потоке времени, т.е. при проведении время документа автоматически устанавливается на время после ТА.
<ФлагДляПров> - режим перепроведения документа после ТА. Числовое выражение: -1 (минус единица) - проводить документ всегда задним числом; 1 - проводить документ в потоке.
Замечание:
Метод доступен только в Модуле формы документа и работает с документом доступным в локальном контексте.
71 uno-group
 
20.03.23
12:04
(25) что мешает перед этим установить нужные фильтры по регистрам? даже при незакрытых регистрах довольно быстро работает
72 АгентБезопасной Нацио
 
20.03.23
12:11
(71) насколько помню, он все итоги тянет на клиента, и там считает... примерно как чОрный запрос. ну и "довольно быстро" - зависит от размера базы.
73 uno-group
 
20.03.23
12:23
(59) Рег.УстановитьЗначениеФильтра("ТМЦ",СпТМЦ);
Если ИтогиАктуальны()=0 Тогда
  Рег.ВременныйРасчет(1);
  Регистры.РассчитатьРегистрыНа(ТекущийДокумент());
КонецЕсли;
Рег.ВыгрузитьИтоги(<ТаблЗнач>,<ВклФильтр>,<Очищать>);
И далее у тебя будет таблица с документами прихода. остатком ценой или стоимостью которые доступны на момент документа и ты сними работаешь
приходная 1 ост 4 цена 10
приходная 10 ост 5 цена 11
далее ты выбираешь прихода по нужному порядку и пишеш в свой регистр
без всяких там Р.ВыбратьДвиженияДокумента(ТекущийДокумент());
74 uno-group
 
20.03.23
12:31
Смотри не отчет по регистру партий, а движение по нему в модуле проведения и точно также работай.
Думаю что там вообще можно будет без всяких дополнительных расчетов просто добавить движения по своему регистру взяв нужные тебе данные.
Рег.Партии.Партия=таб.партия;
Рег.Партии.ТМЦ=таб.тмц;
Рег.Партии.Ост=ост;
Рег.Партии.Прибыль=прибыль;
Добавишь.
Рег.МойРегистр.ТМЦ=таб.тмц;
Рег.МойРегистр.Прибыль=прибыль;
Зачем ее по 10 раз рассчитывать, если ты ее уже посчитал для первого регистра.
75 exec11
 
20.03.23
12:56
(73) (74) - как вариант тоже рассматривал.
Но почему так плохо:
Р.ВременныйРасчет(1);
Р.РассчитатьРегистыПо(ТекущийДокумент());
Р.ВыбратьДвиженияДокумента(ТекущийДокумент());

?
В чем может быть проблема ? Запись простая. Не надо куда то выгружать. Сразу все перебирается.
76 exec11
 
20.03.23
13:25
Как понять, к чему .ВременныйРачет(1) применим ?

Так можно ?

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

Так как для:
Р.РассчитатьРегистыПо(ТекущийДокумент());
Р- надо что были РегистрЫ, а не Регистр. Опять надо переделывать.
77 АгентБезопасной Нацио
 
20.03.23
13:38
(76) чтобы взять деньги из тумбочки - нужно, чтоб кто-то их в тумбочку положил... Вот и чтоб выбрать движения документа - они должны быть. И нужен временный расчет тогда, когда документ не на ТА.
78 uno-group
 
20.03.23
14:04
(75) Потому что проведение документа происходит в транзакции и пока документ полностью не проведен, в регистре еще нет записей и выбирать нечего.
79 Андрей_Андреич
 
naïve
20.03.23
15:31
(78) И даже без автоочистки движений?
80 Злопчинский
 
20.03.23
22:07
(59) для выборки движений временный расчет не нужен.
движение само по себе привязано к вполне определенному времени всегда.
.
Регистр состоит из таблицы движений и таблицы итогов.
(ниже упрощенно для понимания)
сейчас 1.апреля
таблица итогов -
данные на 01.03.23 = остаток, 100шт
данные на 01.04.23 = остаток, 500шт

таблица движений: приход 10, расход -5, расход -6, приход 3, итд.
когда ты получаешь  остатки на сейчас- система тебе тупо выдаст 500 шт.
а когда тебе надо получить остаткина 8 марта - сказав системе про временный расчет - система берет остаток и начинает до 8 марат этот остаток догонять движениями: 100 +10-5-6+3итд и получает остаток на 8 марат = 245шт.
.
а когда получаешь движения - система тупо из таблицы движений выдает тебе записи по движеняим, без всяких расчетов, ибо движения и есть певрчиные данные - их не надо вычислять, их просто получаешь и все
81 Злопчинский
 
20.03.23
22:10
(71) мешает то, что установив нужные фильтры ты типа получишь правильные данные? нихера, если они кривонезакрытые по этим фильтрам то и будут тащиться все равно кучей записей, поменьше, но все равно. и есть разница будет тащитьяс 100Кб или 40 Мб - реально как-то смотрел скольо тащилось...
82 Злопчинский
 
20.03.23
22:12
(77) "Вот и чтоб выбрать движения документа - они должны быть. И нужен временный расчет тогда, когда документ не на ТА."
- это что-то не то...
83 Злопчинский
 
20.03.23
22:18
(75) тебе сверху все объяснили. ты не хочешь вкурить вдумчиво.
если ты при проведении документа (это ТЕКУЩИЙДОКУМЕНТ()) списываешь партии - то есть определяешь -источник, откуда взять себестоимость, определяешь получатель откуда взять выручку то для определения прибыли, не надо выбирать движения самого же документа. Прибыль = Выручка-Себестоимсоть.
Поэтому в модуле проведеняи выбирать движения документа (которые должны быть записаны этим же модулем проведения) - это немножко попахивает извращением... рекурсивный коктейль.
.
и перестань уже гнать пургу.
нарисуй МОДУЛЬ ПРОВЕДЕНИЯ ДОКУМЕНТА РЕАЛИЗАЦИИ в виде квадратиков. ну вот реально алгоритм проведения с детализацией до функциональных кусков кода (до операторов не надо), тогда хоть станет понятно что ты хочешь сделать, а то тумана все больше, у поганых болот чьи то тени встаюст...
84 Злопчинский
 
20.03.23
22:22
Модуль проведения: концептуально
.
Цикл ПоКаждойНоменклатуреДокумента
  ДляТекущейНоменклатурыОпределитьОстаткиПартйиПоДокументамПрихода
  ДляТекНоменклатурыРаспределитьКоличествоПродажиПоОстаткамПриходов
  ДляКаждогоРаспределенногоОстаткаПосчитатьПрибыль как Приб = СуммаПродажи - СуммаПРихода
  ....
конецЦикла

далее детализируешь каждую строчку, модифицируя согласно ситнатксиса и правилам работы
85 Злопчинский
 
20.03.23
22:23
(78) а есть такой флажок как Актуальность...
86 АгентБезопасной Нацио
 
21.03.23
08:57
87 uno-group
 
21.03.23
09:33
(85) Он не так работает.
Актуальность(<?>);
Синтаксис:
Актуальность(<ФлагАктуальности>)
Назначение:
Устанавливает флаг актуальности временного расчета. Возвращает текущее состояние флага актуальности временного  расчета. Число: 1 - временный расчет поддерживается в актуальном состоянии; 0 - не поддерживается.
Параметры:
<ФлагАктуальности> - необязательный параметр. Число: 1 - временный расчет поддерживать в актуальном состоянии; 0 - не поддерживать актуальность временного расчета.  Если параметр не задан, то метод просто возвращает текущий флаг актуальности, не меняя его.
Замечание:
Данный метод можно использовать только в модуле проведения документа. Если флаг установлен, то все последующие движения регистров будут изменять итоги временного расчета, и ,значит, итоги регистров временного расчета будут все время (при проведении документа) находиться в актуальном состоянии.

Он поддерживает актуальность именно временного расчета итогов. Движения по регистру от этого флажка в регистре не появляться до окончания транзакции проведения. Возможно если выключена авто очистка движений там, что то меняется, но не факт, что в правильном ключе высока вероятность, что будут выбраны движения которые в этом документе были изменены и эти изменения опять же не произошли пока не завершилась транзакция.
Основная теорема систематики: Новые системы плодят новые проблемы.