|
v7: Рег.Временный Расчет() чтобы поддерживался в актуальном состоянии при добавлении движений | ☑ | ||
---|---|---|---|---|
0
Злопчинский
03.05.20
✎
13:26
|
77, ТиС 9.2,
Суть: как через ВремРегистр.ВыгрузитьИтоги() сделать так, чтобы в выгрузку итогов попадали сформированные движения этого же документа сфорированные чуть ранее..? . не получается как-то.. никак.. собственно стандартный код, партионка . Модуль документа. // Удаление движений по регистрам. Для Номер = 1 По Метаданные.Регистр() Цикл ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор); КонецЦикла; . ВремРегистры = СоздатьОбъект("Регистры"); ВремПартии = ВремРегистры.ПартииНаличие; . ВремПартии.УстановитьЗначениеФильтра(...); //фильтры . Если ИтогиАктуальны()=0 Тогда ВремПартии.ВременныйРасчет(1); ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); // _НА_ - прим.1 КонецЕсли; . РегПартии = Регистр.ПартииНаличие; . ТаблНоменклатуры.ВыбратьСтроки(); Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл ВремПартии.УстановитьЗначениеФильтра("Номенклатура",Номенклатура,1); //.... ВремПартии.ВыгрузитьИтоги(ТаблИтогов,1,1); //прим.2 // // тут распределение текущей строки документа по партиям . все хорошо работает, если в проводимом документе идет только списание партий если же в документе по товару одновременно присутствует и списание и оприходование партий - например возвраты - получается бяка... и самое хреновое когда после возврат сова идет расход, то есть например . остаток на документ = 1шт. расход = 1 //остаток = 0 возврат = -1 //остаток = 1 расход = 1 //остаток = 0 . Причем если это работает в ТА - то все нормально, а вот если в заднем числе с временными итогами - то бяка... 1. дописал оприходование партий - выясняю автоматом партию возврата - она могла быть списана и в предыдущих документах и в этом - тут все норм получается 2. провожу в текущем документе в этом же алгоритме возврат - все ок получается. 3. на следующем проходе этой же номенклатуры ВремПартии.ВыгрузитьИтоги(ТаблИтогов,1,1); //прим.2 - выгрузка итогов не видит проведенный в этом же документе возврат в предыдущих проведенных строках документа. . что делаю не так? . ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); // _НА_ - прим.1 - в01: вот это обеспечивает учет во временных итогах уже записанных движений документа? - в02: пробовал тупо (да, я такой, пробую тупо) ВремРегистры.РассчитатьРегистрыПО() / !_ПО_! - не помогло . где неверно именно в работе с временными итогами чтобы они подхватывали уже сделанные движения по текущему документу? (саму концепцию расход-возврат-расход итп - не обсуждаем). |
|||
1
AAA
03.05.20
✎
14:48
|
а зачем это? в 99% вполне достаточно рассчитать итоги без учета движений документа, а затем проверять остатки
Так сделано и в типовых конфигурациях. Кто мешает к исходным остатками добавить таблицу движений по регистру и получить то, что надо ? |
|||
2
Злопчинский
03.05.20
✎
15:17
|
(1) "рассчитать итоги без учета движений документа, а затем проверять остатки
Так сделано и в типовых конфигурациях." - в типовой нигде я не нашел/нет варианта когда получаются временные итоги с учетом уже сформированных движений проводимого этого же документа, но еще не все движения документа отработаны. мне во временных итогах хочется при обработке 25 строки "одной командой" получить итог с учетом например 24 строки. а дописывать ручками - это конечно можно - я над этим и думал, почему и ветку написал, что не хочется так делать... |
|||
3
AAA
03.05.20
✎
15:25
|
(2)Так ты не нашел, потому что это практически никогда не надо. Цель то какая на смысловом уровне? Я думаю, что если 30 лет без этого обходились, то и еще 30 можно))
Там дописывать то 5 строчек, по одним итогам в цикле пройтись, а в таблице движений поиском найти нужную строку |
|||
4
Злопчинский
03.05.20
✎
15:31
|
Сек.. очень странно. сейчас провожу задним числом - тоже все норм...
а вчера не норма... старнно.. или клинит меня... |
|||
5
Злопчинский
03.05.20
✎
15:34
|
ааааА!!! сейчас стоит РассчитатьРегистрыПО
а штатно - НА это я вчера изгалялся... сек.. |
|||
6
Злопчинский
03.05.20
✎
15:39
|
так. ПАУЗА. надо все проверить.
|
|||
7
Злопчинский
03.05.20
✎
16:07
|
что-то ничего непонятно.
Чем отличаются РассчитатьРегистрыНА(Текдок) и РассчитатьРегистрыПо(текдок) - в начале модуля проведения очищаются движения. потом устанавливается временный расчет. потом пишем движения документа. . вар1. РассчитатьРегистрыНА(Текдок) записали движение1 записали движение2 ВремРегистр.ВыгрузитьИтоги() - здесь будут присутсовать итоги по движение1 и движение2..? вар2. РассчитатьРегистрыПО(Текдок) записали движение1 записали движение2 ВремРегистр.ВыгрузитьИтоги() - здесь будут присутсовать итоги по движение1 и движение2..? |
|||
8
AAA
03.05.20
✎
16:14
|
Если очищаются, то ничем. Но можно же не очищать
|
|||
9
Злопчинский
03.05.20
✎
16:53
|
(8) понял. спсб.
|
|||
10
Злопчинский
03.05.20
✎
17:02
|
по проблемному сабжу - идут исследования...
предварительные "исследования" показали что есть зависимость в каком порядке идет обработка временных итогов по сути сводится к Пока ТаблНоменклатура.ПолучитьСтроку()=1 Цикл ВремПартии.УстановитьЗначениеФильтра("Номенклатура",Номенклатура,1); //???!!! вот здесь что-то... не так.. сбивается что-то..? ВремПартии.ВыгрузитьИтоги(ТаблИтогов) //обработка ТаблИтогов и запись в регистр КонецЦикла если в цикле обепечеить подряд (нач ост=1) Номенклатура1, расход 1шт Номенклатура1, возврат 1шт Номенклатура1, расход 1шт //здесь в выгрузке временных итогов ЕСТЬ остаток А если выполнение в цикле идет (нач ост=1) Номенклатура1, расход 1шт //какие-то другие номенклатуры Номенклатура1, возврат 1шт Номенклатура1, расход 1шт //здесь в выгрузке временных итогов НЕТ остаток..?! // непонятно... |
|||
11
Злопчинский
04.05.20
✎
01:24
|
Облазил оттрасировал. все переменные вроде правильно, вся логика тоже вроде ок. Но вот в каком-то из случаев - ну не хочет и все... непонятно. пока обходным способо закрыл, но неизвестно полученный вариант всегда ли будет давать нужные даннеы. трабл где-то в последовательности/взаимодействии фильтров, накладываемых на выгрузку временных итогов и фильтров накладываемых на выборку движенйи регистра.. короче пок анепонятно. может сваяю нулевой тест.
|
|||
12
vcv
04.05.20
✎
07:11
|
(2) > в типовой нигде я не нашел/нет варианта когда получаются временные итоги с учетом уже сформированных движений проводимого этого же документа
В типовых так и работает. И за это отвечает ВремРегистры.Актуальность(1); Например, в расходной накладной несколько строк одной номенклатуры. Списание в ТиС идёт построчно. Первая строка при списании получит полный начальный остаток на складе, вторая строка - за вычетом первой и так далее. Именно из-за Актуальность(1) |
|||
13
Salimbek
04.05.20
✎
07:46
|
(7) Вообще говоря - странно.
Т.к. РассчитатьРегистрыНА - они рассчитывают именно НА документ, т.е. на момент непосредственно перед этим документом. Далее предполагается, что ты сам на основе этих данных полностью в документе формируешь движения. А РассчитатьРегистрыПО - это движения уже вместе с данным документом. т.е. на момент, непосредственно после данного документа. И если тебе надо получать остатки с текущими движениями, то нужен именно второй вариант. |
|||
14
Провинциальный 1сник
04.05.20
✎
08:23
|
Регистры в семерке примитивны и из задача сводится к получению итогов на точку актуальности. Временный расчет - кривой тормозной костыль. Если надо получать итоги произвольно, то лучше уж использовать более эффективный костыль в виде прямых запросов.
|
|||
15
Mihenius
04.05.20
✎
09:33
|
(0) Ты лучше расскажи, раскопал ли ты знаменитое "решение по ускорению от pit-а за 500$"?
Когда-то на Т1С вроде он вскользь рассказал, а чем уже закончилось то дело? |
|||
16
Mihenius
04.05.20
✎
11:30
|
(15) Даже обсуждение старое нашел Покритикуйте идею выборочного восстановления последовательности
(0) Ты там тоже был ) |
|||
17
Злопчинский
04.05.20
✎
15:37
|
(12) это ка краз норм. движуха идет в одном направлении.. а тут приходится вне процесса такого движения отдельно искать партии для возвратов..
|
|||
18
Злопчинский
04.05.20
✎
15:40
|
(15) не 500 а 800. там речь шла о недопущении ухода в минус на всем промежутке от исправления до сейчас.
для количественного учета - решено. для суммового - в принципе тоже - зависит что имеется в виду про сумму |
|||
19
Злопчинский
04.05.20
✎
15:44
|
(16) "а "решение" простое - при проведении (создании, корректировке) задним числом документ либо проводится (при этом нет красноты по партиям), либо не проводится (ибо в случае проведения возникнет краснота по партиям/остаткам). Решение работает с 01.01.2002 года..." - это вот как раз решается и решается быстро с точки зрения ресурсов во время вычисления, то есть практически мгновенно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |