Я уже писал как можно значительно ускорить проведение документа в 1С Предприятие 7.7 в статье Оптимизация проведения.

Теперь хочу осветить эту проблему более детально. Оговорюсь сразу, что данная статья будет представлять инетрес лишь для программистов 1С, обычные пользователи нифига не поймут и могут смело переходить в раздел лирика. :-)

tormoz

Я не буду рассматривать проблему долгого проведения документов, связанную с говеным железом или нестабильной работы сети. Это технические проблемы и решаются они просто – небольшим вливанием денежной массы в приобретение современных компьютеров и в организацию сервера терминалов. Также не буду приводить примеры кода – для каждой организации программый код может меняться. Выскажу лишь общие принципы.

Авторские права на предоставленный материал принадлежат автору сайта http://extremallife.ru


Итак у нас есть проблема – документ реализация долго проводится. Особенно актуально это для организаций с большим количеством номенклатуры и большим документооборотом, или же документы реализации имеют большую табличную часть (много строк). На самом деле эта проблема очень актуальна и портит жизнь (а также увеличивает затраты, например на операторов) фактически всем подразделения фирмы, так как при проведении документа «захватывается транзакция» и грубо говоря база «виснет«.

Проведем аналитику. Простыми, народными средствами, а точнее с помощью отладчика смотрим временные затраты на поведение рядового документа «Реализация»

Оценка времени проведения документа

Оценка времени проведения документа

Из замера производительности ясно видно, что 40% (в моем конкретном случае, в других базах это время может занимать до 90% времени). Впечатляет, не правдали?

Читаем далее что можно конкретно сделать для ускорения проведения документа

Расчет регистров на дату документа

Ну так вот, основная мысль состоит в том, что надо как то сократить это время. А нафига нам рассчитывать регистры на дату документа? Как нам шепчут реалии это даже плохо, потому что в организациях работают хитрые менеджеры и операторы, которые хотят провести документ задним числом, тем самым порушив вcю логическую цепочку 1С, а так же вогнав остатки на Точку Актуальности в красноту, то бишь, в минуса, не заботясь о последствиях.

1С ведь хранит все остатки по регистрам на Точку Актуальности, и доступ к ним можно получить мгновенно. По-моему, лучше брать остатки на ТА и уже от них отталкиваться, повысив тем самым производительность на 40% в моем примере.

Глупые вопросы

Смотрим далее на картинку. Чуть ниже можно увидеть «тупые» вопросы, типа

ответ1=вопрос(«записать?»,3,60);

и

ответ2=вопрос(«провести?»,3,60);

А программер, который писал эти «вопросы» не задумался о том, что если оператор нажел «ОК» и не глядя пошел курить/пить кофе/припудрить носик не глядя на экран, то на 60 секунд на каждый вопрос виснет база и в течение этого времени невозможно провести никакой другой документ? А так как там 2 тупых вопроса, то Ожидание захвата таблицы Журналы для начала транзакции блокирует базу на 2 минуты. Крута, да? Короче, убрать максимальное количество «глупых вопросов» из модуля проведения к чертовой матери.

Проведение по партиям

Проведение по партиям необходимо для правильного формирования себестоимости. Правильная себестоимость будет получена только при условии восстановленной Главной Последовательности. Нафига тратить время для проведения по партиям каждого документа? Дело в том, что себестоимость прибыль интересна за определенный период, например за месяц… или квартал… или, хрен с ним, неделю. Короче, предлагаю, перед отчетным периодом перепроводить все документы (восстанавливать ГП) и только в тот момент проводить их по партиям, например дописать в модуль проверку на пользователя. А если документ проводит оператор или менеджер, то отключить проведение по партиям, что сэкономит еще немного времени. Оставляем проведение по остаткам и взаиморасчетам – вполне достаточно для наших целей.

Отвлекусь, пока мысль не потерял. Для чего нужет справочник «Партии» в 1С? Громоздкий такой справочник я бы сказал, даже очень громоздкий. По-моему для одного – чтобы пользователь при реализации руками мог выбрать партию. Лично я ни разу в жизни не видел, чтобы пользователь руками выбирал партию. В этом нет смысла, потому что доблестные складские работкини один хрен не будут вести «партионный учет» в реале на складе.

Что то еще хотел написать, но забыл. Вспомню – отпишу. :-)

Рубрики: , Анализ

Теги: , ,


Комментарии

6 комментариев в “1C тормозит при проведении документа.”

  1. 6
    Cthulhu пишет:

    2(admin):Не могу обещать, но если будет время и возможности – может быть что-нибудь попробую сформулировать.и – да! Кстати! Очень(!) рекомендую попробовать поднять этот вопрос на Т1С – Территория1с, – я там в основном общаюсь и на мисте, но там контингент немного не тот чтобы вести содержательный разговор).
    ЗЫ: спасибо за исправление огрехов в оформлении – и за грядущие исправления тоже спеасибо, авансом. так сказать :)

  2. 5
    admin пишет:

    Давно статью писал, уже забыл про что.
    Тут оказывается написано как ускорить работу оператора)))
    Надо про себестоимость тоже написать. Как получить максимально близкое к истине значение.

    2 Cthulhu – поможешь?

  3. 4
    admin пишет:

    С твоего позволения немного поправлю комментарий – для лучшей читабельности.

    По поводу «расходы с недостаточными остатками«.
    Я когда-то давно при перепроведении старался исправлять все такие случаи… По ночам не спал…
    Сейчас отключаю контроль отрицательных остатков при проведении (что конечно же неправильно в теории – 1С не выдаст правильную себестоимость при непроведении по партиям).
    Однако ошибка получается не сильно большая. А если посмотреть на ситуацию с той точки зрения, что реальную себестоимость товара в реальности мы не можем получить в принципе (даже потому, что не можем рассчитать стоимость доставки, поставки, и пр. каждой конкретной единицы товара и все эти затраты списываем на весь товар) ошибка получается не столь большой.
    А насчет служебок - ты прав. Это вещь очень полезная, чтобы объяснить руководству, почему мы не можем посчитать себестоимость (прибыль) до копейки.

  4. 3
    Cthulhu пишет:

    «Эвристический анализ будет сводится к перемещению всех поступлений на начало дня, что на мой взгляд правильно. А вот со складскими перемещениями сложнее – надо анализировать.»

    - да, именно.

    «И кстати, для чего протоколировать нарушения? Все равно эти нарушения
    особо сильно никого не волнуют (это из реалий нашей жизни).»

    - имеются ввиду неисправленные случаи (расходы с недостаточным остатком) – ну, затем, чтобы «ручками» поправить и/или в служебную записку скопипастить. потому что корректный расчет себестоимости и прибыли вряд ли кого из руководства «не волнуют». ;)

  5. 2
    admin пишет:

    Работа задним числом – это действительно реалии «нашей повседневности». Я видел лишь пару контор, которые не работают задним числом, а используют «сторно». Все остальные всегда что-то правят задним числом.
    Эвристический анализ будет сводится к перемещению всех поступлений на начало дня, что на мой взгляд правильно. А вот со складскими перемещениями сложнее – надо анализировать.
    И кстати, для чего протоколировать нарушения? Все равно эти нарушения особо сильно никого не волнуют (это из реалий нашей жизни).

    ЗЫ. На правах прикола. Общение по аське (реальное):

     mage (13:17:40 28/09/2010)
    мне тут вопрос задали
     mage (13:17:57 28/09/2010)
    а что такого плохого в отрицательных остатках
     mage (13:17:57 28/09/2010)
    типа можно и с ними хорошо жить
     mage (13:18:01 28/09/2010)
    они ни на что не влияют
     piterpen323 (14:07:06 28/09/2010)
    ну да, правильно, а что напрягаться то?
    Тогда и приход и перемещения вводить не обязательно – продажи по магазинам и так видно, а инвентаризация нам и не нужна :-) . подумаешь фигня какая – инвентаризация :-) . У нас контора богатая, 100 позиций туда, сто сюда – никто и не заметит :-)

  6. 1
    Cthulhu пишет:

    «я конечно дико извиняюсь» (с). Но.в ряде случаев работы «задним числом» не избежать. и в ряде случаев проверка остатков на момент начала документа (а даже не только на дату) более чем необходима (и при этом ситуация, когда на ТА остатки «уже» есть а на момент документа остатка «ещё» не хватает – в равной степени реальна и недопустима). Как говорится, «добро пожаловать в реальный мир».Я Вам даже больше скажу. При работе «задним числом» для исключения ситуаций возникновения отрицательных остатков следует проверять не только остатки на момент документа. но и на момент каждого расходующего активы(товары) документа.Вопрос в том, КАК это реализовать. Тут имеет смысл именно разноска режимов проведения на «оперативный» (как Вы справедливо заметили (не тут), проводить по остаткам не трогая партии, и – да, тут можно «в лоб» проверять на ТА потому что если на ТА есть остаток – значит можно подвигав по временной оси приходы-расходы добиться корректных остатков на каждый документ) – и «восстановительный»(перепроведение как правило автоматом ночью, с формированием протоколов нарушения правилав наличия достаточного остатка для каждого документа, с допроведением по партиям если ситуация с остатками корректна; возможно докрутить эвристический алгоритм, который бы «тасовкой» документов по временной оси в пределах даты документов или иной допустимой дельты пробовал исправлять ситуацию с нарушением правила «достаточного остатка по каждому документу»).

Выскажи свое мнение