1C-Code → Основы 1С → Что такое 1С:Предприятие: конфигурация и база
Платформа, конфигурация, информационная база — три разных вещи, которые новичок считает одной. С этого начинается всё остальное.
Глава 15 из 36 · чтение примерно 22 минут
Эта глава отвечает на вопрос, который кажется глупым, пока не попробуешь ответить: что вообще такое «1С». Без ответа на него дальше будет непонятно, где лежит ваш код, почему у соседней фирмы «та же 1С», но всё по-другому, и что значит «обновились и всё сломалось».
Если вы уже работали в конфигураторе — пролистайте до врезки «Три слова, которые путают на собеседовании».
Когда говорят «1С», имеют в виду одно из трёх. Это не придирка к словам: перепутав их, невозможно понять ни одну инструкцию.
Платформа — программа, которую вы ставите с диска или скачиваете. Она сама по себе ничего не умеет по части учёта: в ней нет ни товаров, ни накладных. Это движок — он умеет показывать формы, выполнять код, ходить в базу данных. Версии платформы выглядят как 8.3.24.1548.
Конфигурация — описание того, ЧТО вы учитываете: какие есть справочники, документы, отчёты, какой код за ними стоит. «Бухгалтерия предприятия», «Управление торговлей», «Зарплата и управление персоналом» — это конфигурации. Их пишут разработчики: фирма «1С», партнёры и вы.
Информационная база — сами данные конкретной фирмы: её контрагенты, её накладные, её остатки. У двух фирм может быть одна и та же конфигурация и совершенно разные базы.
Аналогия, которая помогает
Платформа — проигрыватель. Конфигурация — пластинка. База — то, что на ней записали именно вы.
Проигрыватель без пластинки молчит. Пластинку можно поменять на другую. А записи стереть и поставить чужие — значит потерять свою фирму.
Три слова, которые путают на собеседовании
«Обновить 1С» — три разных действия, и последствия у них разные:
Обновить платформу — поставить новый движок. Данные и конфигурация не меняются. Обычно безопасно.
Обновить конфигурацию — взять новую версию описания от фирмы «1С». Вот здесь и ломается то, что дописывали своими руками: об этом глава про поддержку.
Обновить базу — так не говорят вообще. Если сказали — переспросите, что имелось в виду. На собеседовании этот вопрос задают, чтобы проверить, отличаете ли вы три вещи от одной.
Из того, что это три разные вещи, следует и три разных обновления. Платформу ставят на компьютер как обычную программу — и рядом могут стоять сразу несколько версий. Конфигурацию обновляют внутри базы. Данные не обновляют вовсе.
У конфигурации есть минимальная версия платформы: открыть её на более старой нельзя. Отсюда обычный порядок обновления типовой — сначала платформа, потом конфигурация, а не наоборот.
И есть режим совместимости — настройка конфигурации, которая говорит платформе: «веди себя как версия 8.3.14». Её ставят, чтобы новая платформа не поломала поведение, на которое опирается старый код. Цена — новые возможности платформы при этом недоступны, и «почему у меня нет этого метода, он же есть в документации» чаще всего именно про неё.
Одну и ту же базу можно открыть тремя разными программами, и это не про удобство — от выбора зависит, какой код вообще может работать.
| Клиент | Что это | Чем важен разработчику |
|---|---|---|
| Тонкий | основной способ работы сегодня | умеет только управляемые формы; вся работа с данными — на сервере |
| Толстый | старый режим, остался для администрирования | может обращаться к данным напрямую с клиента — и поэтому прощает ошибки, которые в тонком падают |
| Веб | та же конфигурация в браузере | нет доступа к файлам и COM; всё, что «работает у меня», может не работать здесь |
Проверять надо в тонком клиенте
Код, написанный и проверенный в толстом клиенте, регулярно падает в тонком: там нельзя обратиться к справочнику прямо с клиента, а в толстом — можно.
Человек при этом работает в тонком. Получается «у меня работает, у него нет» — и причина не в правах и не в данных, а в том, каким клиентом открывали.
Правило: пишем так, будто клиент только тонкий. Это ровно то, ради чего существуют директивы компиляции.
Ещё одно деление, о которое спотыкаются при чтении старых примеров в интернете.
Обычные формы — старый механизм. Форма и данные живут вместе, код обращается к базе откуда угодно, деления на клиент и сервер в нём нет.
Управляемые формы — то, что делают сейчас. Форма разорвана на клиентскую и серверную половину, и это разделение и есть главная тема половины этого учебника.
Практический вывод: увидели в примере ОткрытьФорму без директив и обращение к справочнику прямо рядом с Предупреждение — это код для обычных форм, и переносить его нельзя.
Информационная база бывает двух видов, и разработчику это важно знать с первого дня.
Файловая — вся база лежит в одном файле 1Cv8.1CD в папке. Удобно для одного человека и маленькой фирмы. Работает медленно на объёме, плохо переносит много одновременных пользователей и не умеет нормальных блокировок.
Клиент-серверная — данные лежат в настоящей СУБД (PostgreSQL, MS SQL), а между ней и людьми стоит сервер 1С:Предприятия. Так работают все, у кого больше нескольких пользователей.
Почему это важно вам: один и тот же код ведёт себя по-разному. Запрос, который на файловой базе отрабатывает мгновенно, на клиент-серверной может встать в очередь из-за блокировки. Про это — отдельная глава.
| Файловая | Клиент-серверная | |
|---|---|---|
| Где данные | файл 1Cv8.1CD | СУБД: PostgreSQL или MS SQL |
| Сколько людей | до нескольких | десятки и сотни |
| Блокировки | грубые, на таблицу целиком | управляемые, на строки |
| Фоновые задания | только пока кто-то работает | сами по расписанию |
| Где встречается | малый бизнес, разработка | все остальные |
Три слова из клиент-серверного варианта, которые встречаются в любом разговоре про боевую базу.
Кластер серверов — то, что выполняет серверный код. Внутри него живут рабочие процессы; в консоли администрирования видно, сколько их и сколько памяти они заняли.
Сеанс — один вошедший человек (или одно фоновое задание). Сеанс занимает лицензию и виден в списке активных пользователей.
Соединение — техническая связь с базой. У одного сеанса их может быть несколько, а могут не быть вовсе: человек открыл базу и ушёл обедать — сеанс есть, соединения нет.
Разница нужна на практике в одном месте: перед обновлением базу просят освободить, и завершать надо сеансы. Закрытые соединения ничего не решают — человек вернётся из обеда и продолжит работать.
| Расширение | Что внутри | Когда нужен |
|---|---|---|
| .cf | конфигурация целиком, без данных | перенести разработку в другую базу |
| .cfu | обновление конфигурации от поставщика | обновить типовую |
| .dt | ВСЯ база: конфигурация и данные | перенести базу, сделать копию |
| .epf / .erf | внешняя обработка / внешний отчёт | разовая работа без правки конфигурации |
| .cfe | расширение конфигурации | доработка, не снимающая с поддержки |
Выгрузка конфигурации — не резервная копия
Ошибка, которая стоит дорого и делается один раз в жизни. .cf — это только конфигурация. Данных в нём нет: ни одного документа, ни одного остатка.
Копия базы — это .dt (или, на боевой клиент-серверной, копия средствами самой СУБД: так быстрее и надёжнее).
Проверочный вопрос перед любым опасным действием: «если сейчас всё пропадёт, из чего я восстановлю документы?» Если ответ «из cf» — резервной копии нет.
Человек, который меняет конфигурацию. Не платформу — её пишет фирма «1С». Не данные — их вводят бухгалтеры и кладовщики.
Меняет двумя способами, и разница принципиальна:
Мышью — добавить справочник, положить поле на форму, нарисовать структуру отчёта. Это тоже разработка, и её больше, чем кажется со стороны.
Кодом — описать поведение: что случится при проведении документа, как пересчитать сумму при смене количества, откуда взять цену. Код пишется на встроенном языке — том самом, которому посвящены первые главы.
Обычная работа — смесь обоих. Задача вида «добавьте в накладную колонку „Скидка“ и сделайте, чтобы сумма пересчитывалась» — это десять минут мышью и двадцать строк кода.
На чём спотыкаются
Ищут свой код в платформе. Его там нет. Всё, что написали вы, лежит в конфигурации — и уедет вместе с ней при переносе на другой компьютер.
Считают, что «типовая» значит «неизменяемая». Типовую конфигурацию можно менять, и половина работы разработчика — именно это. Вопрос в том, как менять, чтобы обновление потом не стёрло правки.
Путают «базу» и «конфигурацию» в разговоре. «Скинь мне базу» и «скинь мне конфигурацию» — просьбы о разном: первая содержит данные фирмы, вторая нет. Отдать не то — иногда нарушение закона.
Одну и ту же базу открывают в двух режимах, и это два разных окна с разными возможностями.
1С:Предприятие — режим работы. В нём сидят бухгалтеры: вводят документы, печатают отчёты. Ничего изменить в устройстве программы отсюда нельзя.
Конфигуратор — режим разработки. Здесь видно дерево всех объектов конфигурации, здесь пишется код и правятся формы. Про него — следующая глава.
Разработчик живёт в обоих: пишет в конфигураторе, проверяет в предприятии. Переключение между ними — движение, которое повторяется по сто раз в день.
Упражнение 1. Три слова
Функция ЧтоЭто(Название) получает строку и должна вернуть, к чему это относится: "платформа", "конфигурация" или "база". Правила: "8.3.24" — платформа (начинается с «8.»); "Бухгалтерия предприятия" и "Управление торговлей" — конфигурация; всё остальное — база.
Решается в тренажёре: код запускается и проверяется сразу.
Упражнение 2. Из чего восстановится база
Функция ЭтоКопияБазы(Расширение) получает расширение файла строкой — "cf", "dt", "cfe", "epf". Вернуть Истина только для того файла, из которого восстановятся и конфигурация, и данные.
Решается в тренажёре: код запускается и проверяется сразу.
Платформа — движок, её ставят. Конфигурация — описание учёта, её пишут. База — данные фирмы, их вводят. Разработчик 1С меняет конфигурацию: мышью и кодом. Работает в конфигураторе, проверяет в предприятии. База бывает файловой и клиент-серверной, и один и тот же код ведёт себя в них по-разному.
Читать про код и писать код — разные умения. В тренажёре к этой главе идут упражнения: вы пишете решение, оно запускается на настоящем интерпретаторе 1С и проверяется сразу, без установки платформы.
← Запросы в работе: как писать, что ломается, чем ускорять
→ Конфигуратор и дерево метаданных