Ускорение работы пользователей 1с
Разработки

Ускорение работы операторов. Часть 1: Подбор номенклатуры

 

Жизнь очень похожа на электричество: с напряжением встаешь, с сопротивлением идешь на работу, весь день искришь, наэлектризованным возвращаешься домой, а потом вырубаешься. Именно так можно охарактеризовать любую работу, тем более работу любого оператора. О том, как облегчить работу за компьютером и ускорить в несколько раз всем кто имеет дело с 1с и пойдет речь в данной статье.


«Слова волнуют, примеры влекут»
Античный афоризм

 


На одном предприятии требовался переход из самописанной программы на платформу 1с. Переход обуславливался тем, что та программа не отвечала требованиям скорости работы, и многое там отсутствовало для ведения учета в постоянных изменяющихся бизнес-процессах. Программа выполняла только функцию складского учета, простого производственного процесса выпуска готовой продукции. И плюс ведения кассы. При этом, ведение учета производственного не позволяло делать это через нормы расхода по спецификациям. Только регистрировало факт выпуска и расхода. В последующем, конечно, были добавлены отчеты, показывающие процент отклонения, но скорость вывода отчетов оказалась критичной. Получить, чтобы общую картину по всем взаиморасчетам контрагентов нужно запускать отчет вечером и к утру (в лучшем случае) получали результат. Объем данных рос. Платформа не справлялась. Приходилось постоянно каждый год делать обрезку базы данных. Терялась аналитика. Вполне естественно, так работать чрезвычайно непроизводительно. Но есть одно но. В программе присутствуют вещи, которые в процессе работы были востребованы пользователями в удобстве интерфейсной части. Они прорабатывали и оттачивались годами. 

 

 

Мысль: довольно спорный вопрос про то, стоит ли менять программу под пользователя. Речь идет о том, стоит ли видоизменять типовые конфигурации. Конечно, если это делать, то возникает следующий закономерный вопрос, а кто тогда будет это поддерживать и контролировать все изменения? Возникает достаточно большая трудность в обновлении конфигурации на другую версию. Но кто сказал, что мы должны подстраиваться под программу? Конечно, многие именно так и делают. Может быть, их все устраивает. Скорее всего, документооборот не столь значительный, что время, затрачиваемое на ввод, их мало интересует. Но стоит документообороту в базе увеличиться в тысячи раз, то работать без оптимизации работ уже будет проблематично и особенно в типовой конфигурации. Увеличивать штат? До каких пределов?

 

 
«Мы далеко не лучше знаем то, что видим ежедневно»
Л. Мерсье
 

 

 

 

Предисловие

Так именно и получилось в работе с самописанной программой. Все устраивало, пока объем данных был не критичен. Каждый год производилось обрезка базы. Это ускоряло работу в начале года. Для получения информации об остатках по складам, кассам этой программы было достаточно. Но вот организовать работу по анализу, ведению учета план-факта, организации учета по маршрутам, распечатке множества отчетности и многое другое просто не реально сделать по одной простой причине. 

 

Самое критичное условие в самописанной программе — это то, что они пишутся индивидуальными специалистами (чаще один программист), который становится так сказать «монополистом» своего произведения искусства. И довольно трудно становится найти другого специалиста для того, чтобы продолжать поддерживать программу. Именно поэтому, платформа 1с позволяет гораздо больше не зависеть от этого момента. Специалистов по 1с достаточно много. Возможно этот момент спорный. И в 1с действительных специалистов найти бывает трудно. Все же найти гораздо реальней, чем такого узкого специалиста по самописанной программе. Практика доказала. 

 

Так вот, вернемся к тому, что удобство работы в самописанных программах с накопленным опытом работы за многие года бывает достаточно полезным в разработке подсистем. Не нужно полностью отбрасывать данный факт. И именно этот фактор и является наиболее сдерживающим при переходе на новую систему.

 

 

Подбор номенклатуры

 

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

 
«Непреодолимых преград нет, так что продолжим биться головой о стену»
Михаил Мамчич
 

Более подробно рассмотрим данный вопрос. Подбор номенклатуры осуществляется через обработку, в которой для того, чтобы выбрать номенклатуру и ввести количество, происходит в открывшейся обработке четыре действия. Прежде всего, нажимается в документе кнопка «Подбор» и уже в открывшейся обработке подбора осуществляются следующие действия:

 

1) Поиск номенклатуры в списке, нажатие на enter— это выбор номенклатуры;

 

2) В открывшемся на экране диалоговом окне, вводится количество;

 

3) Далее переходим с помощью мышки или клавиши tab, или enter на кнопку «Ок», нажимаем ее. Здесь может быть больше действий, если например, будут использоваться по номенклатуре характеристики, выбор цены;

 

4) Далее стрелка вниз – переход на следующую строку. 

 

Таким образом, в документ в табличную часть документа сразу попадает эта номенклатура с указанным количеством. И если понадобится изменить случайно набранное количество неправильное, тогда придется в сам документ переходить и в нем исправлять.

 

Заметим, что произведено четыре действия для одной номенклатуры. А если подобрать требуется позиций очень много? Более тысячи, несколько тысяч…

 

И вот как делать работу очень быстро, не прибегая к многочисленным лишним действиям?

 

Есть, конечно, еще один режим в данной обработке – это режим без выбора количества в диалоговом окне. Если это касается штучной номенклатуры это возможно и пригодится кому, только на практике это встречается довольно редко. Ну может быть в рознице. В нашем случае это совсем оказалось не нужным. Всегда пользователь четко понимает, какое количество ему нужно и вводит это количество в колонке рядом с номенклатурой? Всегда количество разное. 

 
Сказать, что заказчики привередливы? Но это не так. При этом они показывают, как это у них существует в самописанной программе и понимаешь, что, почему собственно элементарная вещь не существует в типовой программе. Именно – элементарная вещь!
 
 

 

Элементарная вещь

 

 

В последующем для 1с 8.2 такую обработку подбора пришлось делать с нуля новую. Тогда это было сделано для платформы 1с 7.7 и пришлось действовать через внешнюю компоненту с перехватом клавиш.

 

Мы все-таки добились двух действий.

  

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

 

Именно в отдельной колонке! Мы должны видеть рядом то количество, которое подобрали. Ну, а если вдруг ошиблись, то просто вернулись на строку и ввели другое количество.

 

Без подключенной внешней компоненты (перехвата клавиш) в 1с7.7, это было бы также четыре действия в стандарте: для того, чтобы ввести в строку количество, то требуется нажать на enter, далее вводим количество, далее опять нажимаем enter для сохранения количества в ячейке, затем стрелка вниз для перехода наследующую строку.

 

У нас получилось, ускорить работу операторов минимум в два раза. На деле это повлияло на производительность гораздо больше.


«Рано ли, поздно ли, но непременно достигают цели, если стремятся к ней с той уверенностью, которую внушает гений или инстинкт»
Ф.Бэкон

 

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

 

При переходе на платформу 1с8.2 была сделана аналогичная, но уже без использования внешних компонент. То есть сама платформа 1с8 позволяет делать ввод значения в строку сразу и переходить на следующую строку без подтверждения через enter. Вот только почему-то в типовых конфигурациях по-прежнему такой именно обработки не оказалось. Пришлось опять изобретать велосипед— обработку писать с нуля. Отличие от обработки в 1с7.7 стало то, что в обработку было включено понятие «корзина», куда скапливаются выбранные позиции. В типовой обработке подбора корзиной является табличная часть самого документа. 

 

Мы конечно же в нашей обработке оставили выбор количества в двух режимах: и с вводом количества в отдельной колонке по строке, и в диалоговом окне. Сделано это было для того, чтобы пользователь мог в отдельном окне выбирать не только количество по базовой единице измерения, , но и по единице измерения мест, а также для ввода цены, в случае допустим с документом «Поступление товара», где цена берется не из справочника 1с, а из документа поставщика. Почти также как в типовом подборе. Но отличия все же есть. И существенные.

 

Высшим пилотажем в такой обработке является то, что выбор реквизитов и переход из группы в группу происходит через работу только с клавиатурой (!). Самое важное здесь переход из группы в группу. Многие пользователи не знают, что переход на верхний уровень группы справочника осуществляется через нажатие на клавиатуре ctrl+стрелка вверх, а также вход в группу это ctrl+стрелка вниз. Мы же немного добавили возможности перехода по одному нажатию enter. Немного уточним, это на обычных формах. На сегодня на управляемых формах именно также сделано. Видимо не мы одни эксперименты проводим и улучшаем работу пользователей. 

 

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

 

С управляемыми формами нас так же объединил момент: у нас можно раскрывать группы без перехода, т.е. можно как бы раскрыть несколько групп сразу в дереве списка. Иной раз и это необходимо.

 

 

 

Связка

 

«Решение сложной задачи поручайте ленивому сотруднику — он найдет более легкий путь»
Закон Хлейда
 

Нюансов в такой обработке подбора еще много. В документах 1с есть одна проблема постоянного характера. Нет понятия четкой связки номенклатура + характеристика + серия + остаток + цена, т.е. выбор происходит по-очереди: сначала номенклатуру, затем выбираем характеристику и уж, если мы видим остаток и цену по этой связи, и то хорошо. А далее уже потом выбираем серию номенклатуры уже в табличной части. В нашей обработке мы видим четко одну строку, в которой уже все это соединено. Видим и цену, и остаток, и еще дополнительную информацию такую как, допустим, текст акции, вес нетто, вес брутто. Можно внести просто множество информации, которая позволит принять решение для выбора номенклатуры в документ. 

 

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

 

При правильном программировании, скорость получения данных будет достаточно высока. При не правильном, обработка может возыметь обратный эффект. При этом если обработка подбора открывается больше 5 секунд— это становится критично. Хотя, казалось бы, позволяет дальнейшее работать нормально. Но если при каждом пролистывании списка эти 5 секунд будут маячить, то это уже никуда не годиться. 

 

Здесь все важно: и скорость открытия (получения данных), и работа внутри обработки, и переход между реквизитами внутри.

 

Во многих случаях обработки подбора делают в виде отдельной обработки, в которой делается выбор номенклатуры в корзину. И это правильно. Только в таких обработках вряд ли есть возможность вернуться обратно к табличной части документа и что-либо отредактировать: добавить или удалить через эту обработку. Возможно, это там и не нужно. Все зависит от потребности конкретных бизнес-процессов. Возможно достаточно эти моменты править уже в табличной части документа. Мы же не понимаем почему формуляров работы с подбором должно быть несколько. Если мы вернулись в режим подбора, то он должен всю картину первого подбора показать и дать возможность наглядно видеть исправления в текущем моменте.

 

На нашей практике типовой подбор всегда являлся камнем преткновения. Когда была необходима скорость подбора, то он всегда не устраивал. И еще он не устраивал из-за малой информативности. Не понятно, зачем разработчики именно такой способ подбора реализовали. Конечно, он имеет место быть, но у наших заказчиков требования не столь завышенные и, тем не менее, этот подбор сразу же воспринимался в штыки.

 

На практике это вылилось в разработку двух систем подбора. Первым способом реализовывали в виде обработки подбора номенклатуры, где количество вносилось в отдельной колонке по каждой номенклатуре о чем мы выше писали и где все действия происходят с минимальным использованием клавиатуры. Все максимально информативно. И все хорошо, если бы не один момент. Там где мы в начале эту обработку внедрили и настроили, она работает очень хорошо, просто летает со скоростью «самолета». А все потому, что там справочник номенклатуры не столь велик, до пары тысяч номенклатур в прайсе. И обработка спокойно получала по ним все данные и быстро открывалась на экране. Речь идет о времени менее 1-й секунды открытия формы. Но стоило эту обработку начать использовать у другого заказчика с двухсоттысячами номенклатурными позициями в прайсе, как выявились некоторые не оптимальные моменты, которые явно показали, что обработка в этом проекте не будет работать. Потратив усилия по ее оптимизации, мы добились скорости открытия формы с 16-ти до 8-ми секунд. Казалось, можно было бы и потерпеть. Ведь дальше обработка работала нормально после открытия. Но эти 8 секунд стали камнем преткновения. Если не увеличить скорость, то внедрение делать бесполезно. Именно так ставились условия. И ведь они правы. Целых 8 секунд ждать чтоб отредактировать список накладной.

 
У нас проснулся очередной «спортивный» интерес в решении данной задачи. При этом, у нас уже есть практический опыт в работе со вторым способом подбора номенклатур. Второй способ подозревался, что не сможет удовлетворить данную потребность. Как оказалось, наоборот. Способ достаточно простой — это открытие справочника номенклатуры в режиме подбора с выводом информации по остаткам на складах (нескольким) с выводом цен (нескольких) в отдельных колонках. Открытие справочника, оказалось, работает быстрее, даже при получении большого массива данных по остаткам по всем складам и по всем существующим ценам.
  

 

Вывод

 

Итак, скорость подбора номенклатур очень важный момент в работе в учетной системе. И не оптимизировав его, мы замедляем работу в программе практически на каждом участке, а вернее на самой передовой, где работают операторы системы. И стоит эту работу увеличить по быстродействию, как по остальным участкам данные появляются гораздо быстрее. Что очень важно. 

 

 



 


Нравится 0 Не нравится
Комментарии
Иван 23 января 2017 04:00
То есть сама платформа 1с8 позволяет делать ввод значения в строку сразу и переходить на следующую строку без подтверждения через enter. Вот только почему-то в типовых конфигурациях по-прежнему такой именно обработки не оказалось.
Поясните, пожалуйста, подробнее, как это реализовано? Я понимаю переход на следующую строку без подтверждения через Enter - с помощью стрелок. Если можно выложите реализацию именно этой возможности.
Нравится 0 Не нравится
Цитировать         
Пользователь offline admin 23 января 2017 23:23
В табличной части в колонке "Количество" в параметре "Режим редактирования" указывается "Вход при вводе", тем самым обеспечивается ввод сразу в ячейку значения количества, т.е. сработает сразу режим редактирования ячейки. В самой ячейке по этой колонке указывается в параметре "Режим выбора не заполненного" - "При активизации". После чего при отработке "Enter" или стрелкой вниз осуществляется переход на следующую строку. Единственный минус в этом способе, что ячейка в этой колонке будет всегда активной, т.е. будет всегда режим входа в ячейку при активизации строки. 
Нравится 0 Не нравится
Цитировать         
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Добавить комментарий
Ваше имя: *
Ваш e-mail: *
Вопрос: Юзабилити - это удобство работы в программе?
Ответ:
Код: Кликните на изображение чтобы обновить код, если он неразборчив
Введите код: