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

Определение

Приведу для начала две цитаты.

Основная задача регистра сведений - хранить существенную для прикладной задачи информацию, состав которой развернут по определенной комбинации значений и, при необходимости, развернут во времени. 

Это из встроенной справки. Ее еще называют синтакс-помощник. Слова тут простые, но если смотреть свежим взглядом, лишены какого-либо смысла. Есть регистр, который хранит существенную информацию? А что, есть регистр, который хранит чепуху? Что означает "развернутость" информации? Она была "свернута", а потом "развернулась"? Хотелось бы понять детали этого процесса!

Регистры сведений — это прикладные объекты конфигурации. Они позволяют хранить в прикладном решении произвольные данные в разрезе нескольких измерений.

А это с сайта 1С https://v8.1c.ru/platforma/registr-svedeniy/ Как можно что-то "хранить в разрезе"? Что тут "режется" и зачем?

Мое определение понятия "регистр сведений" звучит так.

Регистр сведений - это полный аналог таблицы базы данных.

Для тех, кто хоть немного знаком с базами данных, будет достаточно следующего дополнения.

В отличие от прочих объектов 1С:Предприятие, в регистре сведений есть возможность управлять первичным ключом.

Для тех, кто не знаком с теорией баз данных поясню, по возможности коротко и просто.

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

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

При проектировании почти в любой базы данных так или иначе возникает ситуация, когда требуется создать таблицу, в которой значения ключей будут храниться не в одной колонке, а в нескольких. Например, у нас есть таблица товаров и таблица складов. Мы хотим создать таблицу, в которой будут отображаться цены товаров на складах.

Регистр сведений в платформе 1С:Предприятие позволяет явным образом указать ключ (его еще называют первичный ключ). Этим он и отличается от всех прочих объектов. Для них первичные ключи создаются автоматически и не подлежат изменению.

Можно сказать, что регистр сведений самый универсальный инструмент среди всех прочих в 1С. Посмотрим, что можно делать с ним.

Регистр сведений со множеством измерений

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

Такие объекты платформы, как справочник или документ создаются с предопределенным первичным ключом. Этот первичный ключ состоит из одного поля. В 1С его называют ссылкой. Если же нам требуется составной первичный ключ, тогда мы используем регистр сведений.

Один пример я уже дал выше. Еще несколько примеров:

  • цены товаров у поставщиков;

  • подразделение и занимаемая должность работника;

  • место хранения товара на складе;

  • настройки заполнения банковских выписок;

  • график работы сотрудника.

Регистр сведений с одним измерением

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

Конечно, такая практика приводит к некоторой путанице. Открываешь справочник(документ) в режиме пользователя, вот он реквизит. Можно редактировать. Открываешь справочник(документ) в Конфигураторе, нет реквизита! Ищи в другом месте. Но есть и плюс, который заключается в том, что исходный справочник(документ) остается в неизменном виде. И если возникает именно такая задача (внести изменения, но не "трогать" исходный справочник или документ), тогда используют регистр сведений с одним измерением.

Регистр сведений без "измерений"

Можно создать регистр сведений вообще без измерений. Это не будет означать, что у регистра сведений нет ключа вообще и можно вводить сколько угодно записей. Это будет означать, что ключ есть, он представляет собой пустое значение и запись в таблице может быть только одна. В 1С:предприятие есть такой объект, который называется константа. Он не имеет ничего общего с тем, что под этим обычно подразумевается. Концептуально, константа в 1С - это таблица с одной колонкой и одной строкой. Чисто умозрительно, полезная штука, но на практике - не очень. Эти самые константы надо как-то группировать. Приходится задавать префиксы имен. Имена становятся уродливыми. Регистр сведений без измерений, по сути, представляет собой поименованное множество пар ключ-значение. И это отличная альтернатива константам.

Подчинение регистратору

Регистры сведений входят в семейство регистров 1С. По правде сказать, они не совсем полноправные члены этой семьи. Регистры сведений - это универсальный инструмент, в то время как регистры накопления гораздо более специализированы, а уж регистры бухгалтерии и регистры расчетов специализированы очень сильно. Единственное, что обнаруживает родственную связь регистров сведений с прочими регистрами, это то, что записи в регистрах сведений могут создаваться на основании документов. Здесь же, кстати, можно увидеть и отличие регистров сведений от остальных регистров. Во всех прочих регистрах записи создаются ТОЛЬКО на основании документов, а для регистров сведений этот вопрос оставлен на усмотрение разработчика. В принципе, этим пользуются и в типовых и в нетиповых конфигурациях, но лично я не вижу в этом большого смысла. Здесь имеет место скорее некоторая инерция. Разработчики привыкают использовать связку документ-регистр для регистров накопления, а потом переносят эту практику на регистры сведений.

Регистр сведений с измерением типа дата

Есть такая довольно часто встречающаяся задача, которая называется "Получить последние значения чего-либо". У нее есть известное решение, укладывающееся в три строки SQL запроса. В 1С-овском диалекте это выглядит так:

ВЫБРАТЬ валюта, курс, дата
ИЗ РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ дата В (ВЫБРАТЬ МАКСИМУМ(дата) ИЗ КурсыВалют КАК Т ГДЕ Т.Валюта = КурсыВалют.Валюта)

Чтобы избавить разработчиков от необходимости вспоминать это решение, в 1С решили сделать так. Регистры сведений, у которых в составе первичного ключа есть дата, были объявлены особенным подвидом и названы периодическими регистрами сведений. У этих периодических регистров сведений появились виртуальные таблицы под названием срез последних. При обращении к этим таблицам происходит выполнение запроса, являющегося аналогом того, что я указал выше. Там, правда, действует странное ограничение. Получить последние значения вы можете только по полному списку измерений. Это противоречит опыту, который разработчики получают при взаимодействии с регистрами накопления. Обращение к виртуальной таблице оборотов регистра накопления возможно по любому подмножеству измерений. Но в целом, периодические регистры сведений - это полезный инструмент. Хотя, в последнее время, с появлением версионирования и истории версий, он несколько утратил свое значение.

Заключение

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

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

Комментарии (15)


  1. iliabvf
    06.02.2023 14:35
    +1

    "Сильная сторона 1С в том, что можно не знать многие вещи, например, о базах данных. И при этом создавать работоспособные приложения" - это темная сторона 1С.
    Сильная сторона 1С состоит на данный момент в кроссплатформенности и работе из коробки.
    1С 8.3 на сегодня это как русский Flutter, только закрытый и на стероидах.
    Смотря на последние списки фич, не понятно куда смотрят визионеры 1С. Вместо того, чтобы по частям открывать "желтую коробку", улучшать IDE Конфигуратор, работать над скоростью работы, смены или эволюции ЯП и прочих полезных фич.


  1. Pavel_nobranch
    06.02.2023 14:38

    Пытаюсь залезть в php или c# программисты чтобы работать на Пхукете удаленно. Но в моем городе 3 вакансии которым я не интересен. Они висят больше полугода. За полгода можно медведя научить. А они все ждут принца. И есть вакансий 30 на 1С в том числе без опыта от слова совсем. У меня вопрос. Программистом 1С я смогу работать удаленно с Пхукета?

    PS С другой стороны, если можно научить медведя, то зачем нужен HR?)

    PPS Ну или это фэйковые вакансии.


    1. Pavel_nobranch
      06.02.2023 14:47

      Я просто по студенчеству писал программки на делфи. А потом 20 лет работал инженером, крутил железо с проводами. Сейчас понимаю, что ходить с чемоданом инструментов мне надоело. Пора сменить направление деятельности. Пора rjmp goto switch на Пхукет while true)


    1. DvoiNic
      06.02.2023 14:53
      +1

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


      1. Pavel_nobranch
        06.02.2023 15:17

        Спасибо.


    1. fosihas
      06.02.2023 15:38
      +1

      Больше учитывайте что за организации, внутренней политике подключения.

      У некоторых есть запрет на работу не из РФ.

      как счас.. но были вакансии по 1С: Вьетнам, АЭО, США.


      1. DvoiNic
        06.02.2023 15:47

        во вьетнам и эмираты — совсем недавно приходили предложения, месяц-два назад.


    1. fpir
      06.02.2023 15:42
      +1

      Насколько я знаю специфику работы франчайзи 1с(не разу не являясь 1с-ником) - у них обратная пирамида компетенции, по сравнению с другими программистами. Если дев-контрое требуется все синьоры, которые им по карману, много мидлов и один-два джуна, то у 1с-ников требуется куча джунов, которые будут ездить по клиентам- ставить обновление конфигураций и решать самые типовые проблемы, типа настройки бэкапов строго определённой программой, несколько мидлов которые могут написать типовую "нетиповую" конфигурацию и один( или 0) синьоров для решения действительно сложный кейсов. Кроме того, 1С должна стоять на каждой фирме, крупнее 10 человек. У неё может не быть даже помещения, но будет бух с 1с, и 1с надо "обслуживать". Отсюда такой набор и количество вакансий.

      Удалённо 1с ником работать можно, но начиная с "мидла".


      1. Pavel_nobranch
        06.02.2023 15:49

        Примерно так и предполагал. Моя женщина работает в малом ИП и я со стороны вижу как у них происходит взаимодействие с 1С-ником. Но на одном кейсе вывод не стал делать.


        1. Pavel_nobranch
          06.02.2023 15:55

          Никакой программисткой романтики, просто ремесло. В проекции на электронику тот же техник с чемоданом инструментов, а не конструктор с осциллографом.


      1. DvoiNic
        06.02.2023 15:51

        потому, что «разработкой» (особенно — тиражной) на 1с занимаются далеко не все, а очень малое количество.
        «обслуживать» 1с на мелких фирмах почти не нужно, «типовые» базы «обслуживаются» тем же бухом.
        «типовые проблемы» сейчас прекрасно решаются удаленным доступом.


        1. fpir
          06.02.2023 17:39

          потому, что «разработкой» (особенно — тиражной) на 1с занимаются далеко не все, а очень малое количество.

          и чего они делают, если

          «обслуживать» 1с на мелких фирмах почти не нужно, «типовые» базы «обслуживаются» тем же бухом.

          ?

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

          Рассказываю это, потому, что видел работу франчази с другой стороны, и потому, что несколько раз разговаривал по поводу работы сис.админа во франчази. Один раз даже собеседовался. Там прям открытым текстом сказали, что можно подрабатывать обслуживанием клиентов, когда можно по удалёнке, когда нельзя выездом. Дорогу они оплачивали общественным транспортом. Как-то я погрустнел после этого и собес не заладился.


          1. DvoiNic
            06.02.2023 18:49

            видел работу франчази с другой стороны, и потому, что несколько раз разговаривал по поводу работы сис.админа во франчази.

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


            1. fpir
              07.02.2023 14:25

              Удаленный доступ — предоставляли запросто, причем самые разные люди

              Так все предоставляют, если им хватит умения(согласен, не великого). И я-бы предоставил, если бы согласились его принять адекватный. Если вы не в курсе, то амиадмин определяется анитвирусами как вирус, да и другие нехорошие истории про него есть. А рдп на сервер я, конечно, не дам человеку, которого в глаза не видел, да ещё и с расширенными правами. TV или радмин хорош тем, что я вижу, что удалёнщик делает.

              Ну а про франчей - так сложилось, что все вакансии на джунов 1с и почти все на мидлов - они от франчайзи. Я имею ввиду вакансии, которые висят на HH или SuperJob. Надеется, что вас без опыта кто-то возьмёт на фирму непосредственного пользователя - проще в лотерею играть. Отсюда - практически нет вариантов начать заниматься 1с, если удалёнка обязательна.


              1. DvoiNic
                07.02.2023 15:08

                амиадмин [] рдп [] TV или радмин

                AnyDesk?
                Ну а про франчей — так сложилось, что все вакансии на джунов 1с и почти все на мидлов — они от франчайзи
                на мидлов — много вакансий на фикси на том же хаха.
                Надеется, что вас без опыта кто-то возьмёт на фирму непосредственного пользователя
                может, я чего-то упустил в жизни, но кмк миддлов без опыта не бывает. (имхо, и джунов тоже: без опыта это нуб)
                практически нет вариантов начать заниматься 1с, если удалёнка обязательна.
                Можно начать заниматься и без опыта, набрать какой-то, и уже тогда браться за оплачиваемую деятельность на внешнего заказчика. Можете напроситься к какому-нибудь спецу на «условно бесплатного помощника» по удаленке.
                Но да, тут нужно уже либо финансовую подушку (на «бесплатное обучение»), либо «в офис» (если на обучение, стажировку и все такое).