Восьмая версия платформы 1С существует уже более 20 лет. Это если считать от момента выпуска т.н. ознакомительной версии, которую обычно называют бетой. Сейчас в ней более 10 миллионов строк кода. И много, много всего. Но, как говорится, не все одинаково полезно. Нет ничего удивительного в том, что в таком большом хозяйстве какие-то концепции, объекты, функции оказались удачными и востребованными, а какие-то не очень. Разумеется, это всегда субъективно. Кому-то непонятно, зачем "в бухгалтерии" нужны тригонометрические функции, а кто-то жить без них не может. Кто-то страдал без паузы, пока ее наконец не сделали и т.д. Мой личный список бесполезных вещей в 1С такой же субъективный.
Я выбрал три наиболее бесполезных на мой взгляд предмета из того, что есть в платформе 1С. Важное замечание. Бесполезность предмета не означает, что его можно игнорировать во всех случаях. Если бесполезное встречается вам в типовой конфигурации, и вам надо решить проблему с его участием, то деваться некуда. Но если вы проектируете какое-то свое решение, тогда имеет смысл помнить о том, что принесет вам пользу, а что нет.
Бизнес-процессы
В 1С есть достаточно стройная концепция моделирования бизнеса, или, как любят выражаться в 1С, хозяйственной деятельности. Документы отражаются в регистрах, регистры служат источником данных для любого анализа в широком смысле (в узком смысле это называется отчетами). Справочники помогают структурировать информацию как в документах, так и в регистрах.
Бизнес-процессы прилетели в 1С откуда-то сбоку. Если опустить несущественные детали, идея такая. Рисуем... блок-схему.
Для элементов блок-схемы пишем код обработчиков событий и можно запускать процессы! Всякий запущенный процесс будет продвигаться по блок-схеме, а мы сможем на это смотреть.
Возможно, что для того, кто это придумал, идея совместить блок-схемы и бизнес казалась многообещающей. Но, довольно быстро выяснилось, что смотреть на эти красивые картинки некому. Программиста не волнует бизнес. А бизнесмена не волнуют блок-схемы.
Можно конечно и не смотреть. На сайте 1С так прямо и говорят:
...
В этом случае пользователи смогут работать привычным образом, не пользуясь списком заданий и не подозревая о существовании бизнес-процессов. Однако выполняемые ими операции будут приводить к продвижению соответствующих бизнес-процессов дальше по маршруту.
Но если пользователи не подозревают о бизнес-процессах, то разработчику они зачем? Процессы прекрасно можно моделировать на документах или, как вариант, на справочниках. При этом, бизнес логику можно упаковать в хорошо сделанный код, а не растаскивать ее по обработчикам событий.
На сегодняшний день бизнес-процессы все еще встречаются в типовых конфигурациях, но в ограниченных масштабах. А, например, в типовой бухгалтерии бизнес-процессы и вовсе выродились вот в это
Регистры расчета
Вообще, в 1С есть три вида регистров: регистр накопления, регистр бухгалтерии и регистр расчета. Добавлять ли к ним регистр сведений или нет, вопрос спорный, но мы не будем его сейчас обсуждать.
Можно сказать, что регистр бухгалтерии это дань традиции. Регистр накопления это удачное упрощение бухгалтерского регистра. А вот регистр расчета это попытка изобрести еще чего-то, чтобы было.
Как нетрудно догадаться, регистр расчета появился для того, чтобы считать зарплату. На заре компьютеризации расчетчики зарплаты любили рассказывать какая у них сложная работа. Только все рассчитал, а тут кто-то несет больничный лист. И теперь надо по этому человеку все пересчитывать. Внимательно смотреть на дни. Потому что если человек болел, значит он не работал.
Эта нехитрая мысль и легла в основу регистра расчета. Делаешь записи в регистр, и при этом одна запись может вытеснить другую. Дело в том, что одного этого не достаточно для такого фундаментального понятия, как регистр. Во-первых, это слишком узко, нигде, кроме расчета зарплаты не используется. Во-вторых, и это пожалуй главное, все то же самое можно сделать и без специального регистра. При этом результат будет прозрачнее.
У регистра расчета есть еще одна способность. Это расчет базы. Если вы платите премию процентом, то надо сначала посчитать от чего этот процент взять. Но даже эти две способности в сумме не тянут на отдельный регистр. Он живет почти исключительно в очень специфической типовой конфигурации под названием Зарплата и управление персоналом. Если кто-то проектирует свое решение, он скорее всего этим регистром пользоваться не будет. Лично я наблюдал зарождение и развитие идеи этого регистра еще с версии, которая была до седьмой. И именно потому, что я хорошо представляю себе что это такое, у меня и в мыслях не было использовать это в тех случаях, когда надо было реализовать расчет достаточно сложной зарплаты.
Срез последних
Получить последние по времени значения чего-либо это достаточно часто встречающаяся задача. В 1С можно создать специальный регистр сведений называемый периодическим. И этот регистр сможет выдавать последние записи (а также и первые, но этим никто не пользуется). Для начинающих специалистов выглядит, как магия. Но в основе этого лежит достаточно простой запрос. Например, у нас в регистре курсов валют есть дата, валюта и курс. Запрос на получение последних курсов выглядит так:
ВЫБРАТЬ валюта, курс, дата
ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ дата В (ВЫБРАТЬ МАКСИМУМ(дата) ИЗ КурсыВалют КАК Т ГДЕ Т.Валюта = КурсыВалют.Валюта)
Есть и чуть более громоздкий вариант этого запроса. Его можно использовать, если коррелированный подзапрос вызывает проблемы с производительностью.
Как бы там ни было, вы всегда можете получить список последних значений, используя простой или чуть более сложный запрос. И лучше использовать запрос, чем обращаться к срезу последних регистра сведений. Например, нам надо получить список последних документов по клиентам. Что делать? Создавать под это регистр сведений? Но это будет дополнительная сущность. Более того. Если нам нужен еще и список последних документов по товарам, а также список последних документов по связке товар+клиент, тогда надо будет создать три регистра сведений! Не один, с измерениями товар и клиент. Такой регистр будет работать только на связку товар+клиент, а по отдельности работать не будет. Это не оборотный регистр, где такое возможно.
Подход с использованием запроса более универсален. Есть только одно исключение. С некоторых пор периодический регистр сведений обзавелся опциональной служебной таблицей последних значений. В тех случаях, когда надо получать список последних значений из большого объема данных, эта таблица существенно ускоряет процесс. Поэтому, если есть проблемы с производительностью, следует использовать ее.
Как определить, какой программный продукт 1С подойдёт именно вашему предприятию / проекту? Это обсудим с коллегами из OTUS на открытом уроке 21 июня. На этой встрече мы:
Изучим функционал казначейства во флагманских продуктах 1С.
Обсудим преимущества и недостатки двух подсистем.
Определим критерии, благодаря которым мы сможем принять правильное решение о выборе программного продукта 1С для внедрения.
Записаться на открытый урок можно на странице курса «Бизнес-аналитик 1С».