От оператора базы до разработчика: что на деле дают годы в 1С
Содержание
Работа в 1С почти у всех начинается одинаково: сначала вы вводите документы как пользователь, потом начинаете понимать, откуда берутся цифры в отчётах, и только потом открываете Конфигуратор. Опыт программиста 1С растёт из опыта пользователя, а не вместо него. Тот, кто сам проводил реализации и закрывал месяц, пишет код, который не ломает учёт.
Путь от пользователя до разработчика проходит одни и те же ступени: интерфейс, метаданные, запросы, клиент-сервер, отладка, обновления. На каждой есть свои грабли и приёмы, которые отличают практика от новичка. Речь о платформе 8.3 с интерфейсом «Такси».
Рабочее место пользователя 1С: с чего начинается опыт
Первые недели в 1С уходят не на учёт, а на привыкание к интерфейсу. Типовые конфигурации (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) построены одинаково: слева панель разделов, в разделе — списки документов, справочников и отчётов.
Что стоит настроить сразу:
- ⭐ Избранное. Звёздочка в заголовке формы добавляет документ или отчёт в избранное. Пять-шесть ежедневных форм под рукой экономят десятки кликов.
- 🗂 Панели. Расположение панелей меняется через
Главное меню → Вид → Настройка панелей. Многие убирают панель открытых окон и оставляют только разделы. - 🔎 Поиск в списке.
Ctrl+Fв любом списке ищет по видимым колонкам. Отбор по колонке задаётся через контекстное меню ячейки. - 🧰 Команда «Все функции». Включается флажком в
Главное меню → Сервис → Параметры. Через неё открывается любой объект базы, даже если его нет в разделах. Для пользователя это окно в «внутренности» базы и первый шаг к пониманию метаданных.
Настройки форм (колонки, отборы, сортировки) хранятся для каждого пользователя отдельно. Если форма «сломалась», в меню «Ещё» этой формы откройте её изменение и верните стандартные настройки. Данные при этом не меняются.
Что даёт пользовательский этап программисту
Пользователь понимает, как связаны документы: заказ → реализация → счёт-фактура → оплата. Он видит, что документ может быть записан, но не проведён, и чем это грозит отчётам. Он знает, что бухгалтер закрывает месяц и не любит, когда «плывут» прошлые периоды.
Без этого опыта программист делает формально правильные доработки, которые неудобны в работе.
Объекты метаданных: как устроена любая конфигурация 1С
Второй этап — понять, из чего состоит база. Откройте Конфигуратор (1cv8.exe с режимом «Конфигуратор» в окне запуска) и разверните дерево конфигурации. Там одни и те же виды объектов в любой типовой.
| Объект | Зачем нужен | Пример из типовой |
|---|---|---|
| Справочник | Списки, которые редко меняются | Номенклатура, Контрагенты |
| Документ | Факт хозяйственной операции, формирует движения | Реализация товаров и услуг |
| Регистр сведений | Значения во времени или по набору измерений | Курсы валют, цены |
| Регистр накопления | Остатки и обороты количественного и суммового учёта | Товары на складах |
| Регистр бухгалтерии | Проводки по плану счетов | Хозрасчётный |
| Перечисление | Фиксированный список значений | Виды операций, ставки |
| План видов характеристик | Дополнительные свойства «на лету» | Дополнительные реквизиты |
| Отчёт / обработка | Чтение и массовое изменение данных | Оборотно-сальдовая ведомость |
| Общий модуль | Переиспользуемый код | Модули БСП |
| Роль | Права доступа | Бухгалтер, Кладовщик |
Ключевая мысль, которая приходит не сразу: документ сам по себе в отчётах не участвует. Отчёты читают регистры. Документ при проведении записывает в них движения. Поэтому вопрос «почему документ не попал в отчёт» почти всегда сводится к вопросу «какие движения он сделал».
Движения любого проведённого документа видно из его формы: в Бухгалтерии 3.0 это кнопка «Дт/Кт» в командной панели документа, в других конфигурациях — отчёт о движениях документа в той же панели. Это главный инструмент разбора расхождений и для пользователя, и для программиста.
Подсистемы, роли и БСП
Подсистемы задают разделы интерфейса, роли — права. Все типовые построены на БСП — Библиотеке стандартных подсистем. Из неё приходят печатные формы, дополнительные реквизиты, права доступа , обновление версий. Разработчику полезно знать её общие модули: многие задачи решаются вызовом готовой функции, а не своим кодом.
Язык запросов 1С: откуда берутся данные для отчётов
Язык запросов — главный навык разработчика 1С. Он похож на SQL, но работает с объектами метаданных, а не с таблицами СУБД напрямую. Начинать удобно с конструктора запросов (в модуле — контекстное меню, «Конструктор запроса») и консоли запросов из обработок.
Простой пример — остатки товаров на дату по складу:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад) КАК Остатки
|ГДЕ
| Остатки.КоличествоОстаток > 0";
Запрос.УстановитьПараметр("Дата", КонецДня(ТекущаяДата()));
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Строка(Выборка.Номенклатура) + ": " + Формат(Выборка.Количество, "ЧГ=0"));
КонецЦикла;
Имя регистра в примере условное: в каждой конфигурации своё, смотрите в дереве метаданных.
Три вещи, которые отличают опытного разработчика:
- Условие в параметрах виртуальной таблицы, а не в ГДЕ.
Остатки(&Дата, Склад = &Склад)отбирает данные до расчёта остатков. Тот же отбор в ГДЕ заставит платформу сначала посчитать всё, потом отбросить лишнее. - Никаких запросов в цикле. Сто вызовов по одному товару медленнее одного запроса со списком через
В (&СписокТоваров)или через временную таблицу (ПОМЕСТИТЬ). - Осторожно с разыменованием. Обращение
Номенклатура.Родитель.Наименованиев запросе порождает соединения. Для составных типов их может быть много, и запрос резко тяжелеет. Тип уточняют черезВЫРАЗИТЬ.
Система компоновки данных
Отчёты в типовых сделаны на СКД. Запрос в ней — только источник; группировки, отборы и оформление пользователь настраивает сам. Освоить СКД — значит перестать писать «отчёты под каждую просьбу»: часто достаточно дать пользователю вариант отчёта с нужными полями.
Программирование в 1С: клиент, сервер и директивы компиляции
В управляемых формах код делится на клиентский и серверный. Это главный барьер для тех, кто пришёл из 7.7 или обычных форм 8.2.
| Директива | Где выполняется | Доступ к данным формы |
|---|---|---|
&НаКлиенте | на клиенте | да |
&НаСервере | на сервере | да, форма передаётся на сервер |
&НаСервереБезКонтекста | на сервере | нет, только параметры |
&НаКлиентеНаСервереБезКонтекста | там, откуда вызвали | нет |
Практические правила:
- 🚀 Каждый вызов сервера с клиента — это обмен по сети. Пять вызовов подряд при открытии формы заметны пользователю на удалённой базе. Собирайте нужное в один серверный вызов.
- 📦 Если серверу не нужны данные формы, пишите
&НаСервереБезКонтекста. Форма не передаётся целиком, вызов легче. - 🔒 На клиенте нельзя читать реквизиты ссылок через точку (
Контрагент.ИНН). Значение получают серверной функцией. - 🧩 Общие модули настраиваются флажками «Клиент», «Сервер», «Вызов сервера», «Привилегированный». Без флажка «Вызов сервера» серверную функцию общего модуля с клиента не вызвать.
Транзакции и блокировки
В типовых используется управляемый режим блокировок. При записи движений в рабочей базе важно ставить управляемую блокировку на читаемые остатки (Новый БлокировкаДанных). Без неё два пользователя одновременно спишут один и тот же товар, и остаток уйдёт в минус.
Отладка и типичные ошибки разработчика 1С
Отладка — то, что новички осваивают последней, хотя нужна она с первого дня.
Инструменты отладки
- 🐞 Отладчик Конфигуратора.
Отладка → Начать отладку(F5), точка останова — F9, вычисление выражения — Shift+F9. В «Табло» держат переменные, которые смотрят постоянно. - ⏱ Замер производительности. Включается в меню «Отладка» во время сеанса отладки. Показывает, на какие строки ушло время. Сначала замер, потом оптимизация, не наоборот.
- 📜 Технологический журнал. Настраивается файлом
logcfg.xmlв каталоге настроек платформы. Нужен, когда ошибка воспроизводится только на сервере или у одного пользователя. - 🖥 Отладка на сервере. В клиент-серверном варианте серверный код отлаживают, если служба агента запущена с ключом
-debug.
Чтобы включить отладку на сервере, службу агента придётся перезапустить. При перезапуске оборвутся сеансы всех пользователей кластера. Делайте это вне рабочего времени или на копии базы.
Ошибки, которые совершает почти каждый
Ещё одна частая беда — ловить исключения и молча их глотать. Попытка … Исключение КонецПопытки без записи в журнал регистрации прячет ошибку, и найти её потом почти невозможно. Пишите хотя бы ЗаписьЖурналаРегистрации с текстом ОписаниеОшибки().
Обновление и поддержка доработанных конфигураций
Любой практикующий программист 1С рано или поздно получает базу, которую «доработали так, что не обновить». Это следствие решений, принятых в начале.
Типовая конфигурация стоит на поддержке поставщика. Варианты работы с ней:
| Режим | Что можно | Цена при обновлении |
|---|---|---|
| На поддержке, изменения запрещены | Только расширения | Обновление в один шаг |
| Изменения разрешены, поддержка сохранена | Править типовые объекты | Сравнение-объединение при каждом релизе |
| Снята с поддержки | Всё | Ручной перенос каждого релиза |
Порядок обновления типовой с доработками:
- Сделайте выгрузку базы в
.dtили резервную копию СУБД. - Загрузите файл обновления (
.cfu) в конфигурацию поставщика. - В окне сравнения-объединения разберите конфликты по объектам, которые меняли и вы, и поставщик.
- Выполните «Обновить конфигурацию базы данных» (F7). Для изменения структуры нужен монопольный доступ: пользователи должны выйти.
- Запустите базу в режиме предприятия: обработчики обновления БСП доделают перенос данных.
Не снимайте типовую с поддержки ради одной доработки — вы потеряете автоматическое обновление на все следующие годы.
Расширения конфигурации
Расширения появились в платформе 8.3.6 и стали основным способом доработки типовых. Расширение подключается поверх конфигурации, может перехватывать процедуры (&Перед, &После, &Вместо) и добавлять свои объекты. При обновлении основной конфигурации расширение остаётся на месте; проверить нужно только то, что перехваченные процедуры не переименовали.
Как вырасти из пользователя в программиста 1С
Путь, который проходят большинство разработчиков, укладывается в несколько ступеней:
- Уверенный пользователь. Ввод документов, отчёты, команда «Все функции», движения документов.
- Администратор базы. Пользователи и права, резервные копии, обновления без доработок, загрузка и выгрузка
.dt. - Внедренец. Внешние печатные формы и отчёты на СКД, дополнительные реквизиты, настройка обменов.
- Разработчик. Запросы, управляемые формы, расширения, отладка и оптимизация.
- Эксперт по производительности. Технологический журнал, блокировки, работа с СУБД.
Учиться удобно на учебной версии платформы: она бесплатная, с ограничениями на объём данных и без клиент-серверного режима. Для подтверждения квалификации фирма 1С проводит экзамены «1С:Профессионал» и «1С:Специалист». Работодатели их спрашивают, но живые примеры решённых задач часто весят больше.