можно ли использовать новую методику контроля отрицательных остатков в 81 #573403


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

В этой группе 1С