|
А как работают фронты с более 9000 документов в сутки на 8-ке? | ☑ | ||
---|---|---|---|---|
0
Вуглускр1991
28.09.11
✎
08:19
|
Привет!
Леплю простой отчет объединяя регистр резерв с регистром наличие С/Н НО Прих Расх КО Регистратор ПерСекунда Склад,Товар 0 1 0 1 Заявка 7:41:54 Склад,Товар 0 1 0 1 Поступление 7:41:54 Склад,Товар 1 7 0 8 Поступление 7:41:54 Вот такую получаю таблицу. Все документы введены одним временем. Но резерв (первая строка) должен быть по порядку позже чем поступление (вторая строка). Я упорядочиваю по ПериодСекунда и Регистратор. Я понимаю почему так. Как сделать упорядочение по позиции документа в запросе? Как работают офисы в которых идет вколбашивание таких больших объемов данных, что ситуация документов с одинаковым временем ввода не редкость. Как программисты пишут им отчеты? |
|||
1
Нуф-Нуф
28.09.11
✎
08:21
|
добавь колонку индекс или приоритет для вида документа и сортируй еще по нему
|
|||
2
Jstunner
28.09.11
✎
08:21
|
(0) УПОРЯДОЧИТЬ ПО Ссылка
|
|||
3
IamAlexy
28.09.11
✎
08:22
|
(2)и? что это даст?
|
|||
4
Sammo
28.09.11
✎
08:22
|
Насильственное изменение времени - выделение интервалов для разных видов документов (если сие возможно)
|
|||
5
Jstunner
28.09.11
✎
08:22
|
(3) всегда документ будет в одном и том же случайном месте
|
|||
6
Нуф-Нуф
28.09.11
✎
08:25
|
(3) если автор хочет среди документов разного вида но с одним временим вывести первым документ определенного вида - то именно это и даст
|
|||
7
Вуглускр1991
28.09.11
✎
08:29
|
Автор хочет вот это ибо такова хронология
Склад,Товар 0 1 0 1 Поступление 7:41:54 Склад,Товар 0 1 0 1 Заявка 7:41:54 Склад,Товар 1 7 0 8 Поступление 7:41:54 |
|||
8
Нуф-Нуф
28.09.11
✎
08:30
|
(7) а почему именно такая хронология?
почему заявка в середине а не в начале или конце? |
|||
9
IamAlexy
28.09.11
✎
08:34
|
(8) потому что такая хронология по вводу документов.. а теперь с помощью ссылки осортируй чтобы оно так и было..
нафига? а допустим заявка резервирует партии и нужно чтобы заявка зарезервировала из первого поступления а не из второго.. |
|||
10
Нуф-Нуф
28.09.11
✎
08:36
|
(9) какая еще хронология? если документы введены одновременно?
|
|||
11
Вуглускр1991
28.09.11
✎
08:36
|
(8) Она так вводилась. Резерв по заявке был обеспечен первым поступлением. но это физика, я понимаю, что можно все заявки кинуть вниз после поступлений. Но есть перемещения, которые уже просто обязаны быть в строгой хронологии с остальными документами, иначе проверяющий отчет сотрудник просто замучается расставлять строки по правильным местам.
|
|||
12
Вуглускр1991
28.09.11
✎
08:37
|
(10) Не было бы поступления не провелась бы заявка.
|
|||
13
IamAlexy
28.09.11
✎
08:39
|
(10) одновременно да не одновременно.
тут прикол в том что даже если действительно в одну секунду были проведены документы да и еще действительно вручную - сотрудник который проводил документы получил в резервы партии доступные на момент проведения документа. а ты предлагаешь своей сортировкой "все изменить" |
|||
14
Нуф-Нуф
28.09.11
✎
08:39
|
я не понимаю, если документы вводятся одновременно с одним временем - то как вы их различаете что один раньше другой позже? со связанными заявками и поступлениями я понял - заявка должна быть после поступления. а как размещать поступления и заявки которые не связаны между собой если одни с одним и тем временем?
|
|||
15
Вуглускр1991
28.09.11
✎
08:40
|
(9) Да, один и тот же вид документов упорядочивается по ссылке. Ссылки присваиваются монотонно возрастая. А вот насчет документов разного вила, я за это не поручусь. Тут ещё вот что главное: я бы был удовлетворен итогом "на конец секунды" но я не знаю, какую строчку выбрать.
|
|||
16
ДемонМаксвелла
28.09.11
✎
08:40
|
МоментВремени (порядок внутри секунды)
|
|||
17
Вуглускр1991
28.09.11
✎
08:41
|
(16) Чё прямо в запросе?
|
|||
18
vde69
28.09.11
✎
08:43
|
у нас резерв - это отдельный регистр
документов бывает до 20тыс в день |
|||
19
ДемонМаксвелла
28.09.11
✎
08:46
|
(17) да
|
|||
20
vde69
28.09.11
✎
08:47
|
(18) не документов а записей :)
|
|||
21
IamAlexy
28.09.11
✎
08:47
|
(19) приведи пример работающего запроса позволяющего вывести (7)
|
|||
22
Нуф-Нуф
28.09.11
✎
08:47
|
а если создать для них последовательность (если ее нет) и юзать ее?
|
|||
23
Вуглускр1991
28.09.11
✎
08:49
|
(19) А ни фига!
УПОРЯДОЧИТЬ ПО ПериодСекунда, РегистраторМоментВремени Заявка опять на первом месте. |
|||
24
ДемонМаксвелла
28.09.11
✎
08:49
|
(21) лень ваять. а в чем проблема?
|
|||
25
Вуглускр1991
28.09.11
✎
08:56
|
Да оно просто внатуре невозможно:
у меня есть распределенная база и я знаю как из неё приходят документы. Там время указывается с точностью до секунды. Это значит, что в разных базах документы могут стоять на разных местах. Поэтому (7) ниполучитьникогда. Вопрос тогда переходит в риторический: как работать когда документов масса и нет возможности их построить в порядке хронологии. Неужели и впрямь можно отказаться от долей секунд про которые так любят говорить держатели электронных бирж. 1С красивая игрушка не годная к автоматизации электронных торгов? Где конец сегмена внедрений этой платформы? |
|||
26
unregistered
28.09.11
✎
08:56
|
Как-то так.
ВЫБРАТЬ // ... ВЫБОР КОГДА Регистратор ССЫЛКА Документ.Поступление ТОГДА 1 ИНАЧЕ 2 КОНЕЦ КАК ПорядокПоРегистратору, //.... УПОРЯДОЧИТЬ ПО Склад, Номенклатура, Период, ПорядокПоРегистратору, Ссылка |
|||
27
unregistered
28.09.11
✎
08:57
|
*(26) Ссылка = Регистратор
|
|||
28
IamAlexy
28.09.11
✎
08:57
|
(26) уверен что табличку типа (7) получишь? :)
|
|||
29
unregistered
28.09.11
✎
08:59
|
(28) А в чем проблема?
Если периодичность выборки хотя бы Регистратор, то получу. Единственное, что будет одно лишнее поле ПорядокПоРегистратору. Если речь об отчете, то вовсе не обязательно это поле из запроса выводить. |
|||
30
Sammo
28.09.11
✎
09:00
|
(25) Что-то я не увидел "электронных торгов" в 0.
Отказаться от долей секунд можно, нужна только правинльая архитектура решения. И главный вопрос - что надо? |
|||
31
Вуглускр1991
28.09.11
✎
09:00
|
В моей задаче мне теперь придется придумывать что-то типа: если в секунде один регистратор, то прицепи к этой записи начальный и конечный остатки на секунду это и будут правильные остатки на регистратор, а если регистраторов много, то забить нулями остатки на позицию и выводить по секунде.
|
|||
32
ptiz
28.09.11
✎
09:01
|
Если только вводить реквизит "СистемноеВремя" и туда писать миллисекунды. Только вот остатки на миллисекунды получать придется "закатом солнца вручную".
|
|||
33
IamAlexy
28.09.11
✎
09:01
|
(29) внимательно на время документов в (7) посмотри и еще раз прикинь как отсортируется в твоем запросе таблица
|
|||
34
ДемонМаксвелла
28.09.11
✎
09:02
|
(28) может в данном случае и не выйдет, скажем из-за (25), но момент времени для такого и предназначен. ещё вот заметил, что начальный остаток на момент заявки 0, хоты конечный после поступления 1. странно это.
|
|||
35
IamAlexy
28.09.11
✎
09:05
|
(32) Временной интервал между документами в 1С
процитирую себя же и свой опытный пример: "Результат: Размер базы 27 гигов. Из них размер файла данных 7250М, размер лога 16 гигов, размер папки “1Cv8FTxt” 3916М В одну секунду вместилось более 50 миллионов документов. затем файловый коллапс. Сейчас уже четыре часа идет тестирование и исправление ИБ." вопрос - когда милисекунды кончатся что будешь вводить? |
|||
36
Вуглускр1991
28.09.11
✎
09:06
|
(30) Надо получить табличку немного сложнее, чем в (7)
Есть два регистра наличие и резерв. На позицию каждого регистратора надо получить Нач. ост наличие, нач. остаток резерв, 1 - 2 = Нач. своб. остаток. затем ... приход 3 поля расход 3 поля и конечный остаток наличие, резерв свободно. Это можно сделать только соединяя регистры. И вот, если время регистрации различно - то получить такое - дело хорошей идеи + техники. А вот если время регистрации одинаково, тогда я не вижу как стыковать начальные остатки по одному регистру и начальными по второму. Проблема в расположении документов. |
|||
37
Нуф-Нуф
28.09.11
✎
09:09
|
последовательность...
|
|||
38
Вуглускр1991
28.09.11
✎
09:09
|
(34) См (23) момент времени это похоже все-таки секунда.
А начальный остаток у заявки это остаток резерва, а не наличия. |
|||
39
Вуглускр1991
28.09.11
✎
09:10
|
(37) Спасибо, буду смотреть в эту сторону. Пока полный ноль в последовательностях, потому и молчу.
|
|||
40
Sammo
28.09.11
✎
09:12
|
(36) Имхо, здесь вполне реально орг. решение - если поступление и резерв пришли в 1 секунду, то поступления пришли перед резервом.
Либо устанавливать правильную последовательность каким-либо образом - хоть регистром сведений, хоть установкой идентификаторов документов. Взависимости от источника данных (я не думаю, что это с такой скоростью колбасят операторы, скорее всего внешний источник данных, да?) |
|||
41
ДемонМаксвелла
28.09.11
✎
09:13
|
(38) момент времени это не секунда (http://help1c.com/faq/view/502.htm). почему в (23) у тебя так не знаю
|
|||
42
IamAlexy
28.09.11
✎
09:16
|
(40) чисто теоретически, если дофуя операторов и огромная база, то никто не мешает одному оператору в эту секунду фигануть поступление, другому оператору в эту же секунду зарезервировать доступный остаток, третьему оператору фигануть поступление другой партии и четвертому оператору фигануть резерв уже из четвертой партии...
маловероятно конечно... но в теории возможно |
|||
43
Вуглускр1991
28.09.11
✎
09:16
|
(41) Ошибка 404. Запости сюда, если не влом.
|
|||
44
unregistered
28.09.11
✎
09:17
|
(33) прав. Что-то я поспешил.
|
|||
45
Нуф-Нуф
28.09.11
✎
09:18
|
последовательность..
|
|||
46
IamAlexy
28.09.11
✎
09:22
|
(45) приведи пример запроса возвращающего (7)?
|
|||
47
vde69
28.09.11
✎
09:22
|
(39) последовательность не спасет, вообще любые попытки упорядочить по ссылки (в том числе и по моменту) не спасут, по скольку упорядовачине по моменту сделано не для выстраивания а для получения всегда одной последовательности.
в кратце по чему не выйдет: ты не сможешь контролировать время присовения гуида а в нем содержится время создания гуида (и оно не зависит от времени документа), по этому в общем случае мы имеем порядок создания гуидов... если распишешь подробно зачем это нужно - решим |
|||
48
ДемонМаксвелла
28.09.11
✎
09:22
|
(43) ОК.
Момент времени: Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Момент времени используется в тех случаях, когда важно различать моменты времени для объектов, имеющих одинаковую дату и время, например для сравнения положений документов на временной оси. |
|||
49
IamAlexy
28.09.11
✎
09:23
|
(48) момент времени это датавремя+ссылка
если типы разные - неприменимо |
|||
50
Вуглускр1991
28.09.11
✎
09:23
|
(40) Вот я из таблицы 7 сделаю результат, который мне нужен:
С/Н Нал_НО Рез_НО Сво_НО НалПрих РезПрих СвоПрих НалРасх РезРасх СвоРасх Нал_КО Рез_КО Сво_КО Склад,Товар 0 0 0 1 0 1 0 0 0 1 0 1 Поступление 7:41:54 Склад,Товар 1 0 1 1 1 0 0 0 0 1 1 0 Заявка 7:41:54 Склад,Товар 1 1 0 7 0 7 0 0 0 8 1 7 Поступление 7:41:5 Так вот! когда строки расставлены в этом порядке есть связь между 1 и 2 и между 2 и 3 если порядок другой - связи рушатся. |
|||
51
IamAlexy
28.09.11
✎
09:24
|
(47) эээ ну например вброс в базу в последнюю секунду месяца реестра из миллиона документов в следующем порядке:
поступление заявка реализация поступлеине заявка реализация и необходимость последующего перепроведения оных |
|||
52
Нуф-Нуф
28.09.11
✎
09:27
|
(46) запросом к последовательности можно запросто получить порядок документов именно так как они были введены в систему
|
|||
53
ptiz
28.09.11
✎
09:31
|
(52) Ошибаешься.
|
|||
54
ptiz
28.09.11
✎
09:32
|
(52) Хотя, даже если это так, остатки на нужный момент не получить по-человечески.
|
|||
55
vde69
28.09.11
✎
09:33
|
(51) например
сортировка по времени + ВидДокумента.Код |
|||
56
Axel2009
28.09.11
✎
09:34
|
ну да. сели 2 юзера.
первый зашел тот, кто занимается резервами. ему дали гуиды от 1 до 255. другой зашел позже ему дали гуиды от 256 до 512. в итоге первый колбасит колбасит документы свои 255 штук, а второй только один как только зашел. время у обоих документов совпадает, а вот резерв будет "позже", потому как для одной секунды время определяется порядком ссылки |
|||
57
Axel2009
28.09.11
✎
09:35
|
(56)+ поступление конечно будет "позже"
|
|||
58
Axel2009
28.09.11
✎
09:36
|
(55) моменту времени тоже объяснять про такой порядок? или каждый запрос переписывать, но и даже это не поможет, Остатки работают по принципу дата+ссылка сортировка
|
|||
59
Нуф-Нуф
28.09.11
✎
09:36
|
(52) причем здесь остатки? вопрос сабжа решается
|
|||
60
Вуглускр1991
28.09.11
✎
09:41
|
А вот когда они УТ писали они заранее это знали?
Я б тоже сделал резерв ресурсом регистра "остатки", кабы заранее знал. Архитектура. |
|||
61
temsa
28.09.11
✎
09:43
|
(0) А если размышлять в сторону того что В УРБД Разные базы и как следствие разные остатки разные движения в базых. И все отчеты надо строить по разделителю - по базам???
|
|||
62
Вуглускр1991
28.09.11
✎
09:49
|
(61) И это тоже часть процесса "закат солнца вручную", как и последовательность. Я так понял, что радоваться должен уже тому, что закат солнца возможен в принципе.
|
|||
63
Escander
28.09.11
✎
09:53
|
Это старый спор, с IamAlexy в предыдущей точно такой-же ветке неделю назад на том-же и закончили... ничего лучше чем приделать свой собственный нумератор на несколько видов док (а-ля в клюшках) и при записи сохранять чего он там выдаст в служебный реквизит а в отчёте сортировать по ДатаВремя+Нумератор видимо не придумать...
|
|||
64
Вуглускр1991
28.09.11
✎
09:58
|
Нет! Закат солнца невозможен.
Последовательность - даст в пределах базы. РИБ принесет хлам без всякой последовательности. |
|||
65
orefkov
28.09.11
✎
10:02
|
(63)
Ну так в 8ке ушли от клюшечной концепции единого 1sjourn. Поэтому о какой строгой последовательности можно говорить, если несколько доков могут одновременно проводиться. Так что да, легким движением напильника вытачиваем свой маленький клюшечный 1sjourn. |
|||
66
Нуф-Нуф
28.09.11
✎
10:03
|
а чем последовательность не устраивает?
|
|||
67
Escander
28.09.11
✎
10:06
|
(65) тоже считаю что амно, но ничего лучше не придумать... хотя есть кое какие ещё мысли - будет время попробую вечером
(66) в запросе нужно достать... видимо для использования в СКД |
|||
68
Escander
28.09.11
✎
10:07
|
+(67) кста, а кто сказал, что это должно быть в базе? Это вообще может быть внешний COM-объект который умеет быстро по запросу выдавать новый номер и всё!
|
|||
69
Вуглускр1991
28.09.11
✎
10:08
|
(66) РИБ! в разных базах разные последовательности и когда приходит обмен, там пакет упорядочен по виду документа, а не по последовательности. Последовательность пришедших документов будет строится по виду и времени (громкий смех в аудитории красное табло).
|
|||
70
Вуглускр1991
28.09.11
✎
10:12
|
Комментарий конспиролога:
В 1С есть проплаченные конкурентами предатели, работают в отделе проектирования платформы, делают платформу максимально непригодной. Комментарий эзотерика: Время данное в ощущение документам восьмерки отличается от времени данного семерочным документам. Могут ли документы узнать о существовании ещё третьего времени, всеобъемлющего и данного в ощущения людям, их создателям. Или же документы слепы и обрезаны как люди не могущие услышать стук более великих часов, чем те, что они носят на руке. |
|||
71
temsa
28.09.11
✎
10:12
|
(69) Так я о том же говорю что может не стоит придумывать задачи в которых требуется данные выстраивать в целом по всему предприятию а не по базам. Может быть сама постановка задачи ошибочна?
|
|||
72
Вуглускр1991
28.09.11
✎
10:14
|
(65) Ну ведь никто ж не запрещает писать микросекунды!! Не нужна для такой записи глобальная блокировка всего и вся как для 1sjourn
|
|||
73
Escander
28.09.11
✎
10:14
|
(69)В случае РИБ - ну опять-же помог-бы какой-то единый механизм раздачи номеров всем базам по запросу (тот-же COM -объект), но только если в пределах одной сетки... если одной на всех сетки нет - универсального решения не будет, но это не исключает наличие частных решений (с учётом особенностей хоз.операций данной конторы)
|
|||
74
IamAlexy
28.09.11
✎
10:17
|
(72) это бесконечная проблема.. ты будешь микросекунды писать, народ расчухает и через день нарисуется умник которому нужны наносекунды и который будет поносить 1С за то что она такая плохая платформа.. и так далее...
|
|||
75
Господин ПЖ
28.09.11
✎
10:18
|
(74) снеговик чудесен... только не в силах документы расставить как надо
|
|||
76
Вуглускр1991
28.09.11
✎
10:18
|
(71) Полная постановка задачи в (50). Она проста и технически выполнима, если в одну секунду не вводятся два документа. А я этого гарантировать не могу. И что это будет за отчет Если на 3 строки остатков есть несколько вариантов их склейки между собой, причем большинство из этих вариантов будут не правильны. А узнать об этом можно только при помощи калькулятора.
|
|||
77
IamAlexy
28.09.11
✎
10:19
|
(75) угу.. УГ этот снеговик.. ненадо на него переходить.. уужно на 7ке работать и не рыпаца никуда
|
|||
78
Господин ПЖ
28.09.11
✎
10:21
|
(77) чота на слив сильно похоже...
работать ведь невозможно - я не могу получить вменяемую последовательность документов... |
|||
79
Вуглускр1991
28.09.11
✎
10:21
|
(74) Вот до каких пор можно определить системное время на компе. Как это делают (ну где? В Оракле?)? Вот с такой точностью и надо записывать. Тогда и умнику можно сказать, чтобы сперва компьютер с наносекундами себе купил.
|
|||
80
5 Элемент
28.09.11
✎
10:25
|
Умеет же платформа получать остатки на момент времени документа. Как она это делает?
|
|||
81
orefkov
28.09.11
✎
10:29
|
(67), (72)
Это не амно, это системный косяк платформы. Затачивалась платформа под уменьшение блокировок, что бы уменьшать конфликты по непересекающимся наборам измерений. Но немного не учли того, что для движений, чувствительных к порядку проведения, время - само по себе является одним из измерений. А по нему то блокировок и нет. Даже писать время с точностью до микросекунд не панацея - теоретически у двух доков может быть время, совпадающее с любой представимой точностью - ведь единого журнала, выстраивающего всех по порядку - нет. Как костыль конечно может помочь, но с системной, абстрактной точки зрения это неверное решение проблемы. |
|||
82
Вуглускр1991
28.09.11
✎
10:34
|
(80) Она ведь отрицательный остаток не колеблясь получит.
Мне-то надо склеивать остатки резерва и остатки наличия и вычислять свободные там все, что угодно получиться может в результате. А главное склеенные остатки по последнему документу не сойдутся (могут не сойтись) с остатками по секунде. (81) Да, и правда. Микросекунды неважно. Микросекунды - предел возможностей операторов, если нормально сделала база, то блокировки все равно есть в случае использования одних и тех же ресурсов, математическая абстрактная проблема уходит дальше от практики. И, да. Как только вводишь синхронизатор для всех - тут же получается _1SJOURN |
|||
83
Escander
28.09.11
✎
10:37
|
(81)>Это не амно, это системный косяк платформы.
эт я про идею а не про платфому... чем внешний нумератор-то не подходит? |
|||
84
Axel2009
28.09.11
✎
10:37
|
(82) в чем проблема все поступления проводить неоперативно в 4 часа утра?
|
|||
85
Вуглускр1991
28.09.11
✎
10:38
|
(84) Перемещения?
|
|||
86
5 Элемент
28.09.11
✎
10:39
|
(82) а если это делать по данным регистра?
Насколько понимаю по данным регистра можно получить остатки в нужном порядке. |
|||
87
Вуглускр1991
28.09.11
✎
10:40
|
Комментарий Эйнштейна:
Специальную и общую теории относительности пора применять и вам, программистам. Вот вы уже увидели, что относительность одновременности проникает в ваши виртуальные миры. Пора вводить метрику и записывать документы с лоренцовым преобразованием. Вообще, жаль, что вы, 1сники так плохо изучали в школе труды всей моей жизни. |
|||
88
Вуглускр1991
28.09.11
✎
10:41
|
(86) Да, у меня два разных регистра наличие и резерв. Вопрос в том как их склеить внутри секунды.
|
|||
89
Вуглускр1991
28.09.11
✎
10:43
|
И самый цимус. Все это я пока делаю в СКД. Я против постобработки данных руками.
|
|||
90
5 Элемент
28.09.11
✎
10:46
|
(88) значит вопрос в том как из теплого сделать мягкое?
один регистр решит твою проблему? |
|||
91
Вуглускр1991
28.09.11
✎
10:48
|
(90) решит. Только теперь об этом поздно плакать. УТ ... (60)
|
|||
92
orefkov
28.09.11
✎
10:55
|
(83)
Да конечно и внешний подходит, и вообще хоть какой. Суть то одна и та же: некий счетчик, к которому одномоментно может обращаться только один документ. То есть некий арбитр, который единолично выстраивает всех по порядку. Еще раз повторю - если алгоритм чувствителен к порядку доков, то тогда порядок доков должен являться одной из блокируемых сущностей в момент проведения. И это на уровне платформы НЕ поддерживается. |
|||
93
rsv
28.09.11
✎
11:03
|
(92) Семера рулит.
|
|||
94
rsv
28.09.11
✎
11:08
|
И вот когда появится "некий арбитр, который единолично выстраивает всех по порядку. " сабж по теме 8000 доков в режиме OLTP поставит систему в доооооолгий тайм аут expirit :)
|
|||
95
IamAlexy
28.09.11
✎
11:13
|
тупой вариант пихнуть нужные доки в один журнал сработает?
|
|||
96
rsv
28.09.11
✎
11:15
|
1SJourn ? Было :)
|
|||
97
IamAlexy
28.09.11
✎
11:17
|
(95) не.. 1SJourn там все кучей.. имеется в виду в 8ке сделать журнал, положить туда НУЖНЫЕ для последовательности документы... остальные туда не подключать
не? |
|||
98
rsv
28.09.11
✎
11:23
|
(97) Имха чтото в этом духе.
|
|||
99
Вуглускр1991
28.09.11
✎
11:38
|
(97) РИБ принесет из документов хаос.
|
|||
100
temsa
28.09.11
✎
11:40
|
Соточка.
(99) Сам же ответил на свой вопрос. Вывод не возможно твою задачу решить в урбд. А в одной базе можно. |
|||
101
ДемонМаксвелла
28.09.11
✎
12:01
|
(87) Наглядную трактовку парадокса даёт многомировая интерпретация. Состояние заявки у операторов A и B (отделенных друг от друга пространственно-подобным интервалом) после запроса к серверу C представляет собой квантовую суперпозицию всевозможных состояний, отличающихся различными значениями резерва по заявке. Согласно Девитту, это можно интерпретировать как суперпозицию состояний одинаковых не взаимодействующих между собой заявок, каждая из которых содержит «альтернативную историю» регистра на сервере C и характеризуется своим значением резерва. Пока не проведены документы, невозможно установить, в какой именно из этих вселенных осуществляется эксперимент. В момент проведения заявок в пределах одной секунды происходит необратимое «расщепление вселенных», и история заявок операторов A и B с самого распада становится определённой. В рамках этой истории проведение заявки оператором A не оказывает влияния на проведение заявки оператором В, и противоречие с принципом причинности отсутствует. :)
|
|||
102
Вуглускр1991
28.09.11
✎
12:05
|
(101) Настоящий демон максвелла. Я это извините перепост сделаю. А контекст оторву.
|
|||
103
Escander
28.09.11
✎
12:15
|
Кста ещё вариант:
пользуем последовательность, периодически регламентное перебирая новые доки у которых не заполнен спец реквизит заполняет его им. |
|||
104
Вуглускр1991
28.09.11
✎
12:47
|
Вот так вот я с ними расправился
ВЫБРАТЬ НаличиеОстаткиИОбороты.Склад, НаличиеОстаткиИОбороты.Номенклатура, НаличиеОстаткиИОбороты.КолВоНачальныйОстаток КАК НалНО, НаличиеОстаткиИОбороты.КолВоПриход КАК НалПриход, НаличиеОстаткиИОбороты.КолВоРасход КАК НалРасход, НаличиеОстаткиИОбороты.КолВоКонечныйОстаток КАК НалКО, НаличиеОстаткиИОбороты.Регистратор КАК НалРегистратор, РезервОстаткиИОбороты.КолВоНачальныйОстаток КАК РезНО, РезервОстаткиИОбороты.КолВоПриход КАК РезПриход, РезервОстаткиИОбороты.КолВоРасход КАК РезРасход, РезервОстаткиИОбороты.КолВоКонечныйОстаток КАК РезКО, РезервОстаткиИОбороты.Регистратор КАК РезРегистратор, ЕСТЬNULL(НаличиеОстаткиИОбороты.ПериодСекунда, РезервОстаткиИОбороты.ПериодСекунда) КАК ПериодСекунда ПОМЕСТИТЬ ВСЕПОДРЯД ИЗ РегистрНакопления.Наличие.ОстаткиИОбороты(, , Авто, ДвиженияИГраницыПериода, Номенклатура = &Номенклатура) КАК НаличиеОстаткиИОбороты ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Резерв.ОстаткиИОбороты(, , Авто, ДвиженияИГраницыПериода, Номенклатура = &Номенклатура) КАК РезервОстаткиИОбороты ПО НаличиеОстаткиИОбороты.Склад = РезервОстаткиИОбороты.Склад И НаличиеОстаткиИОбороты.Номенклатура = РезервОстаткиИОбороты.Номенклатура И НаличиеОстаткиИОбороты.ПериодСекунда = РезервОстаткиИОбороты.ПериодСекунда ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ВложенныйЗапрос1.Склад, ВложенныйЗапрос1.Номенклатура, ВложенныйЗапрос1.НалРегистратор КАК Регистратор, ВложенныйЗапрос1.ПериодСекунда, НаличиеОстаткиИОбороты.КолВоНачальныйОстаток КАК НалНО, ВложенныйЗапрос1.НалПриход, ВложенныйЗапрос1.НалРасход, НаличиеОстаткиИОбороты.КолВоКонечныйОстаток КАК НалКО, РезервОстаткиИОбороты.КолВоНачальныйОстаток КАК РезНО, 0 КАК РезПриход, 0 КАК РезРасход, РезервОстаткиИОбороты.КолВоКонечныйОстаток КАК РезКО ПОМЕСТИТЬ НАЛВПРЕДСЕК ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ ВложенныйЗапрос.Склад КАК Склад, ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.НалРегистратор КАК НалРегистратор, ВложенныйЗапрос.ПериодСекунда КАК ПериодСекунда, ВложенныйЗапрос.НалНО КАК НалНО, ВложенныйЗапрос.НалПриход КАК НалПриход, ВложенныйЗапрос.НалРасход КАК НалРасход, ВложенныйЗапрос.НалКО КАК НалКО ИЗ (ВЫБРАТЬ ВСЕПОДРЯД.Склад КАК Склад, ВСЕПОДРЯД.Номенклатура КАК Номенклатура, ВСЕПОДРЯД.НалНО КАК НалНО, ВСЕПОДРЯД.НалПриход КАК НалПриход, ВСЕПОДРЯД.НалРасход КАК НалРасход, ВСЕПОДРЯД.НалКО КАК НалКО, ВСЕПОДРЯД.НалРегистратор КАК НалРегистратор, ВСЕПОДРЯД.РезНО КАК РезНО, ВСЕПОДРЯД.РезПриход КАК РезПриход, ВСЕПОДРЯД.РезРасход КАК РезРасход, ВСЕПОДРЯД.РезКО КАК РезКО, ВСЕПОДРЯД.РезРегистратор КАК РезРегистратор, ВСЕПОДРЯД.ПериодСекунда КАК ПериодСекунда ИЗ ВСЕПОДРЯД КАК ВСЕПОДРЯД ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВСЕПОДРЯД КАК ВСЕПОДРЯД1 ПО ВСЕПОДРЯД.Склад = ВСЕПОДРЯД1.Склад И ВСЕПОДРЯД.Номенклатура = ВСЕПОДРЯД1.Номенклатура И ВСЕПОДРЯД.ПериодСекунда = ВСЕПОДРЯД1.ПериодСекунда И ВСЕПОДРЯД.НалРегистратор = ВСЕПОДРЯД1.НалРегистратор И ВСЕПОДРЯД.РезРегистратор = ВСЕПОДРЯД1.РезРегистратор И ВСЕПОДРЯД.НалРегистратор <> ВСЕПОДРЯД1.РезРегистратор) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Наличие.ОстаткиИОбороты(, , Секунда, ДвиженияИГраницыПериода, ) КАК НаличиеОстаткиИОбороты ПО ВложенныйЗапрос1.Склад = НаличиеОстаткиИОбороты.Склад И ВложенныйЗапрос1.Номенклатура = НаличиеОстаткиИОбороты.Номенклатура И ВложенныйЗапрос1.ПериодСекунда = НаличиеОстаткиИОбороты.Период ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Резерв.ОстаткиИОбороты(, , Секунда, ДвиженияИГраницыПериода, ) КАК РезервОстаткиИОбороты ПО ВложенныйЗапрос1.Склад = РезервОстаткиИОбороты.Склад И ВложенныйЗапрос1.Номенклатура = РезервОстаткиИОбороты.Номенклатура И ВложенныйЗапрос1.ПериодСекунда = РезервОстаткиИОбороты.Период ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Склад, ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.РезРегистратор КАК Регистратор, ВложенныйЗапрос.ПериодСекунда, НаличиеОстаткиИОбороты.КолВоНачальныйОстаток КАК НалНО, 0 КАК НалПриход, 0 КАК НалРасход, НаличиеОстаткиИОбороты.КолВоКонечныйОстаток КАК НалКО, РезервОстаткиИОбороты.КолВоНачальныйОстаток КАК РезНО, ВложенныйЗапрос.РезПриход, ВложенныйЗапрос.РезРасход, РезервОстаткиИОбороты.КолВоКонечныйОстаток КАК РезКО ПОМЕСТИТЬ РЕЗВПРЕДСЕК ИЗ (ВЫБРАТЬ РАЗЛИЧНЫЕ ВложенныйЗапрос.Склад КАК Склад, ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.РезРегистратор КАК РезРегистратор, ВложенныйЗапрос.ПериодСекунда КАК ПериодСекунда, ВложенныйЗапрос.РезНО КАК РезНО, ВложенныйЗапрос.РезПриход КАК РезПриход, ВложенныйЗапрос.РезРасход КАК РезРасход, ВложенныйЗапрос.РезКО КАК РезКО ИЗ (ВЫБРАТЬ ВСЕПОДРЯД.Склад КАК Склад, ВСЕПОДРЯД.Номенклатура КАК Номенклатура, ВСЕПОДРЯД.НалНО КАК НалНО, ВСЕПОДРЯД.НалПриход КАК НалПриход, ВСЕПОДРЯД.НалРасход КАК НалРасход, ВСЕПОДРЯД.НалКО КАК НалКО, ВСЕПОДРЯД.НалРегистратор КАК НалРегистратор, ВСЕПОДРЯД.РезНО КАК РезНО, ВСЕПОДРЯД.РезПриход КАК РезПриход, ВСЕПОДРЯД.РезРасход КАК РезРасход, ВСЕПОДРЯД.РезКО КАК РезКО, ВСЕПОДРЯД.РезРегистратор КАК РезРегистратор, ВСЕПОДРЯД.ПериодСекунда КАК ПериодСекунда ИЗ ВСЕПОДРЯД КАК ВСЕПОДРЯД ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВСЕПОДРЯД КАК ВСЕПОДРЯД1 ПО ВСЕПОДРЯД.Склад = ВСЕПОДРЯД1.Склад И ВСЕПОДРЯД.Номенклатура = ВСЕПОДРЯД1.Номенклатура И ВСЕПОДРЯД.ПериодСекунда = ВСЕПОДРЯД1.ПериодСекунда И ВСЕПОДРЯД.НалРегистратор = ВСЕПОДРЯД1.НалРегистратор И ВСЕПОДРЯД.РезРегистратор = ВСЕПОДРЯД1.РезРегистратор И ВСЕПОДРЯД.НалРегистратор <> ВСЕПОДРЯД1.РезРегистратор) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Резерв.ОстаткиИОбороты(, , Секунда, ДвиженияИГраницыПериода, ) КАК РезервОстаткиИОбороты ПО ВложенныйЗапрос.Склад = РезервОстаткиИОбороты.Склад И ВложенныйЗапрос.Номенклатура = РезервОстаткиИОбороты.Номенклатура И ВложенныйЗапрос.ПериодСекунда = РезервОстаткиИОбороты.Период ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Наличие.ОстаткиИОбороты(, , Секунда, ДвиженияИГраницыПериода, ) КАК НаличиеОстаткиИОбороты ПО ВложенныйЗапрос.Склад = НаличиеОстаткиИОбороты.Склад И ВложенныйЗапрос.Номенклатура = НаличиеОстаткиИОбороты.Номенклатура И ВложенныйЗапрос.ПериодСекунда = НаличиеОстаткиИОбороты.Период |
|||
105
Вуглускр1991
28.09.11
✎
13:00
|
Ах! ошибку нашел ..
|
|||
106
Эстет хренов
28.09.11
✎
13:27
|
>>Все документы введены одним временем.
>>Но резерв (первая строка) должен быть по порядку позже чем поступление. никому он ничего не должен. wms-подобные OLTP системы не отвечают на вопрос "А что у нас было на складе на абстрактный прошедший момент времени 7:51:41:34. Эта информация никому не нужна, более того ее часто не существует и ее невозможно проверить. |
|||
107
Вуглускр1991
28.09.11
✎
13:33
|
(106) А если клиент заорал. Меня типа наипли! Покажите мне динамику остатка за период, в который мне отказали в покупке/продаже!
|
|||
108
IamAlexy
28.09.11
✎
13:36
|
(106) тут речь идет о следующей вероятности:
руками, толстый ленивый бух, попивая чаек и жуя баранки завел в 31.03.2011 23:59:59 документы в следующем порядке: поступление 1 шт. за 100 р. реализация 1 шт за 100 р. поступление 1 шт за 200 р. реализация 1 шт за 200 р. поступление 1 шт за 500 р реализация 1 шт за 500 р. провел, посчитал результаты, отчитался, сформировал отчет какойнить типа выручки в разрезе сделок/клиентов. через пару месяцев он перепроводит эти документы... дальше объяснять? |
|||
109
Sammo
28.09.11
✎
13:43
|
Хотя, имхо, фронты редко в таких системах делают на 1с. Обычно уже бэк-офисы.
|
|||
110
IamAlexy
28.09.11
✎
13:46
|
(109) да тут прикол что пофиг на фрот/бек... тут в процессе неторопливой работы ручками "задним числом" можно наколбасить по примеру (108)
|
|||
111
Гефест
28.09.11
✎
13:47
|
(110) Переходи на семерку...
|
|||
112
mikeA
28.09.11
✎
14:22
|
(0) (104) давно была подобная проблема с документами с одинаковыми датами когда делал задолженность по интервалам на СКД.
нужно было посчитать отгрузку нарастающим итогом на документ. для этого как обычно левое соединение таблицы отгрузки с собой же по всем необходимым измерениям плюс ОтгрузкаИтог.Дата <= Отгрузка.Дата и потом группировка. и вот когда попадались два документа с одинаковой датой начиналась полная опа. решилась проблема введением индекса, потом определением документов, у которых этот индекс одинаковый, корректировкой индекса и соединением таблицы отгрузки по этому индексу вместо даты. самый прикол в том, что в этом году переписал этот запрос на МоментВремени вместо даты. почему тогда не использовал МоментВремени, хз уже теперь, хотя мысли такие были. может платформа была другая, сейчас уже и не вспомню ВЫБРАТЬ ХозрасчетныйОбороты.Регистратор КАК Документ ПОМЕСТИТЬ ДокументыВнутрихозяйственныхРасчетов ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты( , &ДатаОтчета, Регистратор, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВнутрихозяйственныеРасчеты)), , &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ИЛИ Организация В ИЕРАРХИИ (&Организация) И (Субконто1 В ИЕРАРХИИ (&Организация) ИЛИ КорСубконто1 В ИЕРАРХИИ (&Организация)), , ) КАК ХозрасчетныйОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.Регистратор КАК Документ, ВзаиморасчетыСКонтрагентами.Регистратор.Дата КАК ДатаПлатежа, ВзаиморасчетыСКонтрагентами.СуммаУпрПриход КАК Сумма ПОМЕСТИТЬ ДокументыОтгрузки ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты( , &ДатаОтчета, Регистратор, &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ИЛИ Организация В ИЕРАРХИИ (&Организация)) КАК ВзаиморасчетыСКонтрагентами ГДЕ ВзаиморасчетыСКонтрагентами.СуммаУпрПриход > 0 И (НЕ ВзаиморасчетыСКонтрагентами.Регистратор В (ВЫБРАТЬ ДокументыВнутрихозяйственныхРасчетов.Документ ИЗ ДокументыВнутрихозяйственныхРасчетов)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.Документ, ВзаиморасчетыСКонтрагентами.ДатаПлатежа, ВзаиморасчетыСКонтрагентами.Сумма, СУММА(1) КАК Индекс ПОМЕСТИТЬ ДокументыОтгрузкиИндексНеуникальный ИЗ ДокументыОтгрузки КАК ВзаиморасчетыСКонтрагентами ЛЕВОЕ СОЕДИНЕНИЕ ДокументыОтгрузки КАК ВзаиморасчетыСКонтрагентамиИтог ПО (ВзаиморасчетыСКонтрагентамиИтог.Контрагент = ВзаиморасчетыСКонтрагентами.Контрагент) И (ВзаиморасчетыСКонтрагентамиИтог.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента) И (ВзаиморасчетыСКонтрагентамиИтог.ДатаПлатежа <= ВзаиморасчетыСКонтрагентами.ДатаПлатежа) СГРУППИРОВАТЬ ПО ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.ДатаПлатежа, ВзаиморасчетыСКонтрагентами.Сумма, ВзаиморасчетыСКонтрагентами.Документ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.Индекс, СУММА(1) КАК ИндексКоличество ПОМЕСТИТЬ ИндексыНеуникальные ИЗ ДокументыОтгрузкиИндексНеуникальный КАК ВзаиморасчетыСКонтрагентами СГРУППИРОВАТЬ ПО ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.Индекс ИМЕЮЩИЕ СУММА(1) > 1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДокументыОтгрузкиИндексНеуникальный.Контрагент, ДокументыОтгрузкиИндексНеуникальный.ДоговорКонтрагента, ДокументыОтгрузкиИндексНеуникальный.Индекс, ДокументыОтгрузкиИндексНеуникальный.Документ ПОМЕСТИТЬ ДокументыОтгрузкиИндексНеуникальныйОтбор ИЗ ИндексыНеуникальные КАК ИндексыНеуникальные ЛЕВОЕ СОЕДИНЕНИЕ ДокументыОтгрузкиИндексНеуникальный КАК ДокументыОтгрузкиИндексНеуникальный ПО (ДокументыОтгрузкиИндексНеуникальный.Контрагент = ИндексыНеуникальные.Контрагент) И (ДокументыОтгрузкиИндексНеуникальный.ДоговорКонтрагента = ИндексыНеуникальные.ДоговорКонтрагента) И (ДокументыОтгрузкиИндексНеуникальный.Индекс = ИндексыНеуникальные.Индекс) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентами.Документ, СУММА(1) - 1 КАК Корректировка ПОМЕСТИТЬ ИндексыКорректировка ИЗ ДокументыОтгрузкиИндексНеуникальныйОтбор КАК ВзаиморасчетыСКонтрагентами ЛЕВОЕ СОЕДИНЕНИЕ ДокументыОтгрузкиИндексНеуникальныйОтбор КАК ВзаиморасчетыСКонтрагентамиИтог ПО (ВзаиморасчетыСКонтрагентамиИтог.Контрагент = ВзаиморасчетыСКонтрагентами.Контрагент) И (ВзаиморасчетыСКонтрагентамиИтог.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента) И (ВзаиморасчетыСКонтрагентамиИтог.Индекс = ВзаиморасчетыСКонтрагентами.Индекс) И (ВзаиморасчетыСКонтрагентамиИтог.Документ <= ВзаиморасчетыСКонтрагентами.Документ) СГРУППИРОВАТЬ ПО ВзаиморасчетыСКонтрагентами.Документ, ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.Индекс ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.Документ, ВзаиморасчетыСКонтрагентами.ДатаПлатежа, ВзаиморасчетыСКонтрагентами.Сумма, ВзаиморасчетыСКонтрагентами.Индекс - ЕСТЬNULL(ИндексыКорректировка.Корректировка, 0) КАК Индекс ПОМЕСТИТЬ ДокументыОтгрузкиИндексыУникальные ИЗ ДокументыОтгрузкиИндексНеуникальный КАК ВзаиморасчетыСКонтрагентами ЛЕВОЕ СОЕДИНЕНИЕ ИндексыКорректировка КАК ИндексыКорректировка ПО ВзаиморасчетыСКонтрагентами.Документ = ИндексыКорректировка.Документ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.Документ, ВзаиморасчетыСКонтрагентами.ДатаПлатежа, ВзаиморасчетыСКонтрагентами.Сумма, СУММА(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиИтог.Сумма, 0)) КАК СуммаИтог ПОМЕСТИТЬ Отгрузка ИЗ ДокументыОтгрузкиИндексыУникальные КАК ВзаиморасчетыСКонтрагентами ЛЕВОЕ СОЕДИНЕНИЕ ДокументыОтгрузкиИндексыУникальные КАК ВзаиморасчетыСКонтрагентамиИтог ПО (ВзаиморасчетыСКонтрагентамиИтог.Контрагент = ВзаиморасчетыСКонтрагентами.Контрагент) И (ВзаиморасчетыСКонтрагентамиИтог.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента) И (ВзаиморасчетыСКонтрагентамиИтог.Индекс <= ВзаиморасчетыСКонтрагентами.Индекс) СГРУППИРОВАТЬ ПО ВзаиморасчетыСКонтрагентами.Контрагент, ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентами.ДатаПлатежа, ВзаиморасчетыСКонтрагентами.Документ, ВзаиморасчетыСКонтрагентами.Сумма ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОбороты.Контрагент, ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход + ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрПриход < 0 ТОГДА -ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрПриход ИНАЧЕ 0 КОНЕЦ КАК Сумма ПОМЕСТИТЬ ОплатаДетали ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты( , &ДатаОтчета {(&ДатаОтчета) КАК ДатаОтчета}, Регистратор, &Организация = ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) ИЛИ Организация В ИЕРАРХИИ (&Организация)) КАК ВзаиморасчетыСКонтрагентамиОбороты ГДЕ (НЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор В (ВЫБРАТЬ ДокументыВнутрихозяйственныхРасчетов.Документ ИЗ ДокументыВнутрихозяйственныхРасчетов)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОплатаДетали.Контрагент, ОплатаДетали.ДоговорКонтрагента, СУММА(ОплатаДетали.Сумма) КАК Сумма ПОМЕСТИТЬ ОплатаИтог ИЗ ОплатаДетали КАК ОплатаДетали СГРУППИРОВАТЬ ПО ОплатаДетали.ДоговорКонтрагента, ОплатаДетали.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Отгрузка.Контрагент, Отгрузка.ДоговорКонтрагента, Отгрузка.Документ, Отгрузка.ДатаПлатежа, РАЗНОСТЬДАТ(Отгрузка.ДатаПлатежа, &ДатаОтчета, ДЕНЬ) КАК ЧислоДнейПросрочки, Отгрузка.Сумма КАК Сумма, ВЫБОР КОГДА Отгрузка.СуммаИтог - Отгрузка.Сумма < ОплатаИтог.Сумма ТОГДА Отгрузка.СуммаИтог - ОплатаИтог.Сумма ИНАЧЕ Отгрузка.Сумма КОНЕЦ КАК СуммаДолга ПОМЕСТИТЬ ПросроченнаяЗадолженность ИЗ Отгрузка КАК Отгрузка ЛЕВОЕ СОЕДИНЕНИЕ ОплатаИтог КАК ОплатаИтог ПО Отгрузка.Контрагент = ОплатаИтог.Контрагент И Отгрузка.ДоговорКонтрагента = ОплатаИтог.ДоговорКонтрагента ГДЕ Отгрузка.СуммаИтог > ЕСТЬNULL(ОплатаИтог.Сумма, 0) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПросроченнаяЗадолженность.Контрагент ПОМЕСТИТЬ ИсключаемыеКонтрагенты ИЗ ПросроченнаяЗадолженность КАК ПросроченнаяЗадолженность СГРУППИРОВАТЬ ПО ПросроченнаяЗадолженность.Контрагент ИМЕЮЩИЕ СУММА(ПросроченнаяЗадолженность.СуммаДолга) < &МинимальнаяПросроченнаяСуммаКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПросроченнаяЗадолженность.Контрагент, ПросроченнаяЗадолженность.ДоговорКонтрагента, ПросроченнаяЗадолженность.ДатаПлатежа, РАЗНОСТЬДАТ(ПросроченнаяЗадолженность.ДатаПлатежа, &ДатаОтчета, ДЕНЬ) КАК ЧислоДнейПросрочки, ВЫБОР КОГДА РАЗНОСТЬДАТ(ПросроченнаяЗадолженность.ДатаПлатежа, &ДатаОтчета, ДЕНЬ) >= (ВЫРАЗИТЬ(&Интервал1 КАК ЧИСЛО(8, 0))) И РАЗНОСТЬДАТ(ПросроченнаяЗадолженность.ДатаПлатежа, &ДатаОтчета, ДЕНЬ) < (ВЫРАЗИТЬ(&Интервал2 КАК ЧИСЛО(8, 0))) ТОГДА &Интервал1 КОГДА РАЗНОСТЬДАТ(ПросроченнаяЗадолженность.ДатаПлатежа, &ДатаОтчета, ДЕНЬ) >= (ВЫРАЗИТЬ(&Интервал2 КАК ЧИСЛО(8, 0))) И РАЗНОСТЬДАТ(ПросроченнаяЗадолженность.ДатаПлатежа, &ДатаОтчета, ДЕНЬ) < (ВЫРАЗИТЬ(&Интервал3 КАК ЧИСЛО(8, 0))) ТОГДА &Интервал2 КОГДА РАЗНОСТЬДАТ(ПросроченнаяЗадолженность.ДатаПлатежа, &ДатаОтчета, ДЕНЬ) >= (ВЫРАЗИТЬ(&Интервал3 КАК ЧИСЛО(8, 0))) ТОГДА &Интервал3 КОНЕЦ КАК Интервал, ПросроченнаяЗадолженность.Документ, ПросроченнаяЗадолженность.Сумма КАК СуммаДокумента, ПросроченнаяЗадолженность.СуммаДолга КАК СуммаДолгаПоДокументу ИЗ ПросроченнаяЗадолженность КАК ПросроченнаяЗадолженность ГДЕ РАЗНОСТЬДАТ(ПросроченнаяЗадолженность.ДатаПлатежа, &ДатаОтчета, ДЕНЬ) >= (ВЫРАЗИТЬ(&Интервал1 КАК ЧИСЛО(8, 0))) И (НЕ ПросроченнаяЗадолженность.Контрагент В (ВЫБРАТЬ ИсключаемыеКонтрагенты.Контрагент ИЗ ИсключаемыеКонтрагенты)) |
|||
113
Aprobator
28.09.11
✎
14:36
|
служебное поле порядок в зависимости от вида документа типа:
ну и дальше немного покрутить с сортировкой результата запроса. |
|||
114
IamAlexy
28.09.11
✎
14:41
|
(113) было уже.. некатит, см (108)
|
|||
115
Nutsiiam
28.09.11
✎
14:50
|
портянка из (112) доставляет :) А в какой конфе сие писано?
|
|||
116
Вуглускр1991
28.09.11
✎
14:54
|
Мне не нравится писать такие портянки. Если я просты сбивание таблиц в одну кучу это решу зачем надо СКД?
|
|||
117
Aprobator
28.09.11
✎
14:56
|
СКД то тут каким боком?
|
|||
118
Вуглускр1991
28.09.11
✎
15:02
|
(117) Ну начинал я так "Сейчас сделаю хороший отчет в СКД и не буду мучиться. Такие простые вещи должны быть доступны легко". Оказывается надо самому пересчитывать по каждой строке "сколько будет на начало". Сне проще взять остаток на начало, на конец, построить таблицу пусть внутри секунды это будет любой порядок и построчно пересчитать остаток "на документ". Битва
моя по крайней мере шла за то, что остаток "на документ" легко считает платформа и не надо мучиться с таблицей. Оказывается надо и это не мучиться, это счастье ручного расчета. СКД для этого не годится. Заставить можно но органически это не решено. Сотню раз уже наверное точно на семинарах говорили "А почему нельзя вычисляемое поле вычислять от предыдущего" и умные конструкторы СКД говорили в ответ "а вы покажите такую задачу где это надо ..." и ржали в кулак. (0), (112) - вот они задачи. цирк это блошиный скд. |
|||
119
Господин ПЖ
28.09.11
✎
15:05
|
>а вы покажите такую задачу где это надо ...
такие ответы всегда доставляют... |
|||
120
Вуглускр1991
28.09.11
✎
15:30
|
А я токо-токо смирился с тем, что для того чтобы получить правильный итог на документ мне надо периодсекунда в поля добавлять, а то без этого оно не пашет. Костыли!
|
|||
121
Axel2009
28.09.11
✎
15:51
|
(118) после этого все плавно перейдут к вопросу, почему нельзя массово апдейтить записи, я уже все данные получил в запросе.
в примерах по 8.2.14 уже есть как получить нарастающий итог. которое можно "вычислить" от предыдущего. просуммировать все по текущую запись и вычесть текущую запись |
|||
122
NcSteel
28.09.11
✎
15:57
|
(0) Добавь реквизит и сортируй по нему
|
|||
123
NcSteel
28.09.11
✎
15:58
|
Еще варианты - ДОбавить последовательность или РС
|
|||
124
Эстет хренов
29.09.11
✎
02:13
|
(108) ггг, есть такое конечно
не толстый ленивый бух, а финик вводит в конце квартала сотню документов закрытия фин. результатов, и получает шиш с маслом. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |