|
можно ли использовать новую методику контроля отрицательных остатков в 81 | ☑ | ||
---|---|---|---|---|
0
asergn2
06.10.11
✎
18:01
|
Можно ли использовать новую методику контроля отрицательных остатков в среде платформы 81. Хотелось бы аргументированный ответ..
|
|||
1
Jstunner
06.10.11
✎
18:02
|
о чем это ты?
|
|||
2
asergn2
06.10.11
✎
18:03
|
||||
3
shuhard
06.10.11
✎
18:03
|
(1) про сначала двинули, потом получили минус, потом откатили транзакцию
|
|||
4
asergn2
06.10.11
✎
18:03
|
именно!
|
|||
5
Necessitudo
06.10.11
✎
18:03
|
А зачем ее вообще использовать? Что-то очень уж редко я вижу простейший контроль остатков, где можно применить этот новый подход.
|
|||
6
Jstunner
06.10.11
✎
18:06
|
в 8.1 движения вообще лучше делать на сервере
|
|||
7
asergn2
06.10.11
✎
18:06
|
быстрее должно работать.. просто этот метод описан как метод для 82, но не объясняется почему.. может этот метод возможно применять и в 81?
|
|||
8
shuhard
06.10.11
✎
18:07
|
(7) а в 8.1 у документа есть свойство не менять модифицированные движения ?
|
|||
9
asergn2
06.10.11
✎
18:09
|
нету вроде как..
|
|||
10
shuhard
06.10.11
✎
18:10
|
(9) может об этом стоит задуматься
|
|||
11
ado
06.10.11
✎
18:22
|
(0) Увидев этот метод в Радченко, подумал: "Ля, какая ересь. Провели, потом откатили -- это ж лишние телодвижения над базой, снижение производительности."
А вот у Чистова прочитал: "Нет необходимости получать излишние данные (остатки) для проведения документа. Ведь мы чаще все же записываем документ с правильными цифрами и он проводится, чем документы которые уводят остатки в минус.", и чорд, а ведь верно. |
|||
12
unregistered
06.10.11
✎
18:31
|
(11) Дело не только в том, что "мы чаще все же записываем документ с правильными цифрами и он проводится, чем документы которые уводят остатки в минус".
Там еще выигрыш по времени действия установленных блокировок. Только от момента записи до окончания проведения. В случае классического способа проведения блокировки необходимо устанавливать раньше - перед/в момент чтением остатков. |
|||
13
DmitrO
06.10.11
✎
18:39
|
(10)задумался.. не вижу препятствий применять этот метод
|
|||
14
DmitrO
06.10.11
✎
18:45
|
(12) но в новом способе остатки тоже считаются и тоже во время блокировки. в чем тут изюм?
|
|||
15
unregistered
06.10.11
✎
18:46
|
(13) Будешь дважды записывать наборы записей в регистры.
Первый раз принудительно Движения.Записать(). Второй раз - автоматически по окончании выполнения обработки проведения. В 8.2 при установке свойства "Записывать выбранные" по окончании обработки проведения будут записаны только те наборы записей, у которых свойство Записывать = Истина. Метод Записать() коллекции Движения сбрасывает это свойство в значение Ложь, исключая таким образом повторную запись. |
|||
16
DmitrO
06.10.11
✎
18:48
|
(15) разьве после записи набора записей регистра у него останется модифицированность? (в следствие которой и происходит запись набора по окончании обработки проведения)
|
|||
17
GreyK
06.10.11
✎
18:51
|
Попытка использования контроля отрицательных остатков при любых движениях - это плюс.
|
|||
18
unregistered
06.10.11
✎
18:51
|
(14) Блокировки устанавливаются одинаково, но в разное время:
Классический метод: Установка блокировок Чтение остатков Формирование наборов с одновременной проверкой нехватки. Запись движений по окончании обработки проведения. Снятие блокировки Новый метод: Формирование наборов Запись движений !Тут устанавливается блокировка Чтение остатков Окончание обработки проведения Снятие блокировки. Как видно, во время формирования наборов записей (которое в некоторых случаях может быть не фига не быстрым) блокировки отсутствуют. Соответственно другие пользователи могут работать с этими же наборами по этим же измерениям. |
|||
19
unregistered
06.10.11
✎
19:03
|
(16) А разве 8.1 анализирует Модифицированность набора?
|
|||
20
DmitrO
06.10.11
✎
19:06
|
т.е. выигрываем время формирования наборов, ну это плюс, согласен
но минусом является не возможность использования текущих данных регистра по этим измерениям (средняя стоимость, партии и т.п.), т.е. регистр должен быть весьма простой, время формирования набора по такому регистру потенциально не велико, но оно есть. |
|||
21
unregistered
06.10.11
✎
19:10
|
(20) Для случая, когда необходимо расчитывать себестоимость или среднюю стоимость, новый метод неприменим. Только для тупого контроля остатков.
Предполагается, что расчет себестоимости будет проводиться отдельным регламентом или обработкой. |
|||
22
Asmody
06.10.11
✎
19:15
|
(20) а кто-то всё ещё считает себестоимость при проведении документов?
|
|||
23
DmitrO
06.10.11
✎
19:18
|
(22)автоматический зачет аванса по документам взаиморасчетов, например?
|
|||
24
GreyK
06.10.11
✎
19:23
|
(23) Издеваешься?
|
|||
25
Asmody
06.10.11
✎
19:24
|
(23) ну может быть. у нас авансы к заказам привязаны, там особых проблем нет
|
|||
26
DmitrO
06.10.11
✎
22:03
|
И еще одно замечание. Учитывая все выше сказанное, и если исходить из того, что для проведения по регистру не нужны текущие данные регистра, то набор записей и в классическом методе проведения можно сформировать до чтения остатков (т.о. до начала блокировки, т.о. также сэкономить время формирования набора), при этом в запросе чтения остатков можно также учесть данные уже записанного документа и получать в выборку только отрицательные.
Кстати сказать, на 77 прямыми запросами через 1сpp так и делали, уже давно. |
|||
27
ОчкарикСлава
06.10.11
✎
22:24
|
Ура!
Наконец то в этой ветке (ИМХО) копья по теме доломали и сожгли. Сколько их тут было прежде, не сосчитать... |
|||
28
zak555
06.10.11
✎
22:26
|
(0) это методика нужна для доков с возможностью оперативного проведения
|
|||
29
DmitrO
06.10.11
✎
22:44
|
(28)а это еще почему? неужели потому, что статье описывающей методику в запросе контроля остатков не стоит параметр периода в виртуальной таблице?
|
|||
30
iamnub
06.10.11
✎
22:48
|
(11)
Сначала ты подумал "ля, какая ересь". Потом ты подумал "Чорд, а ведь правильно". |
|||
31
zak555
06.10.11
✎
22:52
|
(29) потому что док, который есть возможность оперативного проведения не всегда может провестись неопреативно
тогда смысла контроля остатков отпадает |
|||
32
zak555
06.10.11
✎
22:53
|
(29) где статья и причём тут параметры виртуальной таблицы ? о_О
|
|||
33
shuhard
06.10.11
✎
22:54
|
(31) полный бред,
ни какого отношения к предмету топика |
|||
34
zak555
06.10.11
✎
22:56
|
+ (31) тем более проще приявязвать строки ТЧ к строкам движений по регистру
|
|||
35
zak555
06.10.11
✎
22:56
|
(33) ???
|
|||
36
cost10
06.10.11
✎
23:05
|
Вот 2 видео по теме:
http://www.youtube.com/watch?v=Bn5cUahkuR8 http://www.youtube.com/watch?v=S2qCuvuEuxQ Может быть что то прояснит. |
|||
37
Asmody
06.10.11
✎
23:11
|
(28) если док проводится неоперативно, то какой смысл проверять остатки? Точнее, какие остатки проверять?
|
|||
38
kiruha
06.10.11
✎
23:27
|
Судя по всему - если очень много строк - по новой методике будет выигрыш, если мало - пофиг
|
|||
39
Snovy
06.10.11
✎
23:33
|
Вариант А) Перед проведением сняли остаток, посмотрели - не хватает - фиг вам...
Вариант Б) Во время проведения - сняли остаток, попытались списать - не хватает - фиг вам... Вариант В) Во время проведения - списали?, после списания посмотрели остаток - не хватает - фиг вам... Какой из вариантов лучше? ИМХО А) - но его никогда не было в типовых - раньше Б), теперь В). |
|||
40
Asmody
06.10.11
✎
23:38
|
(39) стоп-стоп! а чем А) от Б) отличается? способом сравнения двух чисел?
|
|||
41
unregistered
06.10.11
✎
23:41
|
(38) А как же экономия на записи?
При старой методике запись наборов делается дважды: первый раз перед снятием остатков (удаление движений в 8.1) второй раз - по окончании обработки проведения. По новой методике - один единственный раз Движения.Записать(). Запись на самом деле занимает дофига времени. |
|||
42
DmitrO
06.10.11
✎
23:45
|
(41) да што ж такое, почему ты решил что будет писаться дважды-то?
|
|||
43
unregistered
06.10.11
✎
23:47
|
(42) Перед началом обработки роведния старые движения документа
|
|||
44
DmitrO
06.10.11
✎
23:47
|
пишутся только модифицированные наборы! В 8.2 у документа тоже есть такой способ записи движений, он как раз и остался от 8.1 и 8.0
|
|||
45
unregistered
06.10.11
✎
23:48
|
(42) Перед началом обработки проведения старые движения документа куда денуться?
|
|||
46
DmitrO
06.10.11
✎
23:48
|
(43)и чего?
|
|||
47
unregistered
06.10.11
✎
23:49
|
(44) в 8.1 и 8.0 движения писались дважды:
первый раз - пустые наборы второй раз - модифицированые |
|||
48
unregistered
06.10.11
✎
23:49
|
(46) см. (45)
|
|||
49
Snovy
06.10.11
✎
23:50
|
(40) В 2004 я тоже думал, что офигенная разница... А когда узнал, что транзация начинается в форме перед записью - то ничем... Но все зависит от реализации в коде.
Например - единожды Перед записью получили остаток, проверили, при прохождении использовани полученный остаток в проведении, если не прошло - выдали отказ (перед записью). Это А. Б - это зашли в обработку проведения и уже там получили остаток и проверили и списали либо выдали отказ. Еще раз - по хорошему А) правильнее, но с точки зрения начала транзакции в 1С - А и Б одинаковы. Но если посмотреть код типовых - то до начала проверки наличия остатка типовая фигачит кучу запросов к базе, которые можно бы не делать, если остатка не хватает... |
|||
50
unregistered
06.10.11
✎
23:50
|
в 8.2 по умолчанию пустые наборы не записываются.
Поэтому до тех пор пока ты не скажешь Движения.Записать() или дойдя до конца обработки проведения система сама не запишет новые наборы, старые вполне себе живут. |
|||
51
DmitrO
06.10.11
✎
23:52
|
(45) пустые наборы пишутся перед началом обработки проведения если у документа стоит признак Удалять движения автоматически. Это тут причем?
|
|||
52
Snovy
06.10.11
✎
23:52
|
(50) Еще раз мое мнение - мы теряем кучу времени на проведение документа, который все равно учйдет в отказ - это правильно?
|
|||
53
Asmody
06.10.11
✎
23:53
|
(49) т.е. ты предлагаешь в методе А получить остатки, а потом начать транзакцию? дык, у тебя между этими двумя моментами остатки поменяются сто питсот раз
|
|||
54
unregistered
06.10.11
✎
23:53
|
(52) Ну если у тебя большинство документов уходят в отказ, то ты теряешь время. В противно случае - выигрываешь.
|
|||
55
Snovy
06.10.11
✎
23:55
|
(53) Да, я предлагаю так. Но, во первых - вы правы по поводу "сто питсот раз" (хотя и это решаемо), во вторых - в платформе 1С это невозможно...
|
|||
56
unregistered
06.10.11
✎
23:56
|
(51) Ты издеваешься? Почему надо по сто раз тебе одно и то же рассказывать?
При оперативном проведении по старой методе тебе придется записать пустой набор принудительно, чтобы получить остатки БЕЗ учета старых движений документа. А потом еще раз по окончании обработки проведения. |
|||
57
Snovy
06.10.11
✎
23:57
|
(54) А степень "большинства" документов неизвестна... Если свято верить, что пользователь правдиво вводит в док именно то, что есть на остатках, тогда и контролировать остатки не нужно. Но получать их все равно нужно для оценки себестоимости выбытия, так почему бы заодно и не проверить на достаточность списанного?
|
|||
58
unregistered
06.10.11
✎
23:57
|
+ к (56) Конечно при неоперативном проведении (остатки на МоментВремени) старые движения можно и не удалять, записывая пустые наборы.
|
|||
59
unregistered
06.10.11
✎
23:59
|
(57) Еще раз: при необходимости расчета себестоимости новый метод использовать невозможно. Так что и обсуждать нечего.
Новый метод используется там, где нужно ТОЛЬКО контролировать остаток. |
|||
60
Asmody
07.10.11
✎
00:01
|
(55) возможно. ключевое слово "управляемые блокировки". только зачем огород городить?
|
|||
61
Snovy
07.10.11
✎
00:05
|
(60) Не, это тут совсем ни при чем... Давайте отвлечемся...
У вас в саду на яблоне висят пять яблок. Пришел чел и говорит: А) продай мне три яблока Б) продай мне шесть яблок Ваши действия? |
|||
62
Asmody
07.10.11
✎
00:06
|
(61) в порядке поступления. первому три, второму два (если захочет)
|
|||
63
Asmody
07.10.11
✎
00:07
|
и вообще, есть отдел маркетинга и рекламы, вот пусть они и объяснят челу, почему ему нужно именно пять яблок
|
|||
64
DmitrO
07.10.11
✎
00:08
|
(56)да при оперативном получается необходимо чистить набор, корректируя таблицу оперативных итогов - это не эффективно.
Эффективно будет просто вычесть старые движения из оперативных итогов. |
|||
65
Snovy
07.10.11
✎
00:11
|
(62) Не, не так. Чел один, запросов (вариантов) два...
1) Сказал продам, пошел в сад, сорвал яблочки, отдал 2) Сорвал яблочки, если три продал, если пять - не хватает 3) Пошел в сад, посмотрел сколько яблок.... далее алгоритм понятен 4) Продал, взял деньги.... шесть нет, отдал деньги ну или .... Вот как бы вы действаовли с точки зрения автоматизации? |
|||
66
unregistered
07.10.11
✎
00:12
|
(64) То есть получить итоги, потом выполнить вычитание, потом всё остальное?
Ну может это и будет быстрее (?), чем запись пустого набора. Только мы опять вернемся к необходимости установки блокировки в самом начале. Причем набор измерений в старом наборе записей и в новом могут не совпадать... |
|||
67
Adept
07.10.11
✎
00:17
|
(0) Вроде кто то писал что будут проблемы. Типа в 8.2 раз записал и все, автоматом при проведении не запишутся, а в 8.1 будет полюбому еще раз записано(хотя в документации сказано что только модифицированные наборы должны записаться)
|
|||
68
unregistered
07.10.11
✎
00:17
|
(65) Мне твоя логика понятна.
Но остается один вопрос. Предположим, я, еще до того как дал согласие на продажу яблок, проверил их наличие. Яблок хватает. Ок. После этого иду рвать яблоки с дерева, прихожу - а яблок осталось два (какая-то падла сорвала их, пока я давал добро на продажу). И что? |
|||
69
DmitrO
07.10.11
✎
00:19
|
(66)в старом методе мы блокируем именно при выполнении запроса контроля остатков, просто в нем надо еще учесть возможные текущие движения по регистратору, это представляется простой задачей.
|
|||
70
Adept
07.10.11
✎
00:21
|
(66) Обнеси заборчиком дерево на время пока бегать будишь
|
|||
71
Adept
07.10.11
✎
00:21
|
+(70) к (68)
|
|||
72
unregistered
07.10.11
✎
00:22
|
(67) Еще один. Ну при чем тут модифицированность?
В 8.1 запись делается в любом случае дважды - первый раз (перед обработкой проведения или в самой обработке если НеУдалятьДвиженияАвтоматически) пустые наборы, второй раз - по окончании обработки проведения вновь сформированные. В 8.2 - пустые наборы не записываются. Старые движения живы, пока не запишутся новые. |
|||
73
unregistered
07.10.11
✎
00:22
|
(70) Установить блокировку вне транзакции?
|
|||
74
Adept
07.10.11
✎
00:23
|
(72) Вариант перед я вообще не рассматривал, тогда трижды от начала проведения, первый для очищения, второй для проверки, третий автоматом
|
|||
75
Adept
07.10.11
✎
00:23
|
(73) Почему вне? в Транзакции при проведении
|
|||
76
ОбычныйЧеловек
07.10.11
✎
00:24
|
(70) т.е. в 8.2 не надо очищать движения регистров перед перепроведением документа с вариантом "НеУдалятьДвиженияАвтоматически"?
|
|||
77
Adept
07.10.11
✎
00:25
|
(76)а нафига? сами удаляться когда ты туда новые наборы писать будешь.
|
|||
78
ОбычныйЧеловек
07.10.11
✎
00:26
|
(77) а откуда такая уверенность то туда будут записаны новые данные?
|
|||
79
unregistered
07.10.11
✎
00:26
|
(69) >> надо еще учесть возможные текущие движения
А старые движения Пушкин учитывать будет? |
|||
80
Asmody
07.10.11
✎
00:27
|
(65) проблема в том, что продавцов у нас не один, а сто один и каждый яблоки рвать ходит.
|
|||
81
unregistered
07.10.11
✎
00:27
|
(78) Для это дятел-программист должен написать
Движения.МойЧудоРегистр.Записывать = Истина; |
|||
82
Adept
07.10.11
✎
00:27
|
(78) Ну если ты используешь методику контроля в (0) то будут полюбому, если не используешь то все равно запишешь результирующие движения в конце проведения, то есть руками надо только при отмене проведения
|
|||
83
unregistered
07.10.11
✎
00:28
|
(80) +100500 Вот и я о том же в (68).
|
|||
84
Adept
07.10.11
✎
00:29
|
(83)(80) Они ж к дереву не смогут подойти, даже остатков не прочитают, в чем проблема то?
|
|||
85
unregistered
07.10.11
✎
00:32
|
(84) Проблема в том, что ты ветку не прочитал.
Snovy агитирует 1С за проверку движений ДО начала транзакции. Когда ни каких блокировок еще нет. Лично я - против. |
|||
86
DmitrO
07.10.11
✎
00:36
|
да Snovy не прав, это было ясно с самого 1го его поста
|
|||
87
DmitrO
07.10.11
✎
00:39
|
а для того чтобы использовать новый метод в 8.1 необходимо и достаточно:
1.снять флажок у документа: Автоматическое удаление движений; 2.в обработке удаления проведения обеспечить удаление движений; 3.в обработке проведения использовать новый метод проведения. |
|||
88
unregistered
07.10.11
✎
00:41
|
(87) в пункте 2 вместо "обработке УДАЛЕНИЯ проведения" надо просто в "обработке проведения"
И весь профит от нового метода коту под хвост. Но формально его использовать можно. А толку?... |
|||
89
ОбычныйЧеловек
07.10.11
✎
00:42
|
(81) если у регистра "МойЧудоРегистр" были движения а при перепроведении документа модифицированности это регистра не произошло то данный регистр сам обнулится, так?
|
|||
90
DmitrO
07.10.11
✎
00:46
|
(88)ты не прав, там все правильно написано
|
|||
91
unregistered
07.10.11
✎
00:47
|
(90) Я уже устал для тебя повторять. Там не правильно написано.
|
|||
92
unregistered
07.10.11
✎
00:48
|
(89) Если в обработке проведения указано Записывать = Истина для этого регистра и при этом в набор ни чего не добавлялось, то запишется пустой набор.
|
|||
93
ОбычныйЧеловек
07.10.11
✎
00:50
|
(92) ясно, пасиб.
|
|||
94
DmitrO
07.10.11
✎
01:08
|
(92)и что? В 8.1 у коллекции движений нет метода Записать, поэтому там мы будем записывать сам набор записей, даже если туда ничего не добавлялось он запишется, тем самым очистит старые движения.
|
|||
95
unregistered
07.10.11
✎
01:10
|
(94) Принудительная запись отдельных наборов влечет повышение риска взаимных блокировок.
Запись всех движений сразу этот риск снижает. А так-то - да ни чего. |
|||
96
DmitrO
07.10.11
✎
01:12
|
ну я тебя умоляю, это же легко организовать, они наверняка еще в коллекции именно в том самом нужном порядке содержятся.
|
|||
97
unregistered
07.10.11
✎
01:15
|
(96) Что легко организовать? Сортировать вручную наборы по порядку следования их в метаданных, а потом записывать?
Ну хочется тебе так - ради бога пиши всё это руками. Только зачем?... Ты на одной только работе с метаданными прокакаешь времени больше, чем на саму запись с контролем остатков и расчетом себестоимости. |
|||
98
DmitrO
07.10.11
✎
01:21
|
(97)не то чтобы хочется, это необходимо для применения этого метода в 8.1. Мне кажется в реальных задачах у документов с таким методом проведения регистров будет не много, обеспечить правильную запись будет легко.
|
|||
99
unregistered
07.10.11
✎
01:23
|
(98) Еще раз: Формально метод применить можно, но выигрыша он не даст ни какого. СОВЕРШЕННО.
Слишком много извращений придется предпринять для его реализации в 8.1. |
|||
100
DmitrO
07.10.11
✎
01:27
|
(99) он даст точно такой же выигрыш как и на 8.2, ибо он делает тоже самое. Чего много? каких извращений? На 8.2 просто чуть-чуть удобнее.
|
|||
101
kiruha
07.10.11
✎
01:35
|
(99)
Насчет удаление движений Во первых - большинство документов проводится один раз, а не перепроводится Во вторых - насчет перепроведения. 1С не поддерживает вложенных транзакций - как тут уже тут писали она начинается в ПередЗаписью в форме. А теперь сюрприз - посмотри что делается в УТ 11 до проведения |
|||
102
unregistered
07.10.11
✎
08:42
|
(101) >> большинство документов проводится один раз
Совершенно верно. Однако это не избавляет от необходимости записывать пустые наборы записей, если тебе нужны остатки без учета старых движений. >> посмотри что делается в УТ 11 до проведения А разве УТ при списании проводится по новой методике? |
|||
103
Дикообразко
07.10.11
✎
08:45
|
контроль остатков вообще ересь
|
|||
104
ado
07.10.11
✎
09:39
|
(102) Зачем записывать пустые наборы данных, если старых движений у нас нет? Если документ в первый раз проводится?
|
|||
105
Дикообразко
07.10.11
✎
09:44
|
(104) да и перепроведении совсем не всегда обязательно старые движения очищать (это кстати реализовано уже года 2 как в УПП)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |