Имя: Пароль:
1C
1С v8
можно ли использовать новую методику контроля отрицательных остатков в 81
0 asergn2
 
06.10.11
18:01
Можно ли использовать новую методику контроля отрицательных остатков в среде платформы 81. Хотелось бы аргументированный ответ..
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 как в УПП)
Закон Брукера: Даже маленькая практика стоит большой теории.