Прохождение онлайн-тестирования для 1С-программиста

Ключевые тезисы

  • Тестирование состояло из 20 вопросов с голосовыми ответами.
  • Вопросы охватывали ключевые аспекты платформы 1С: запросы, архитектуру, механизмы и объекты конфигурации.
  • Формат позволяет предварительно оценить знания кандидата перед полноценным собеседованием.

Работа с внешними источниками данных

Для связи с внешними базами данных (например, SQL) используется специальный объект конфигурации — внешние источники данных. Через него нельзя делать соединение данных текущей базы с данными другой СУБД.

Оптимизация запросов

  • Избегать: соединения с подзапросами и виртуальными таблицами в условии WHERE.
  • Использовать параметры виртуальных таблиц (срабатывают раньше) вместо условий в WHERE, особенно при отборе по измерениям.
  • Индексы: индексировать правую таблицу при соединении временных таблиц. Индексация рекомендуется от ~1000 записей, но нужно смотреть по ситуации.
  • Оператор ПОДОБНО: не ставить знак % в начале шаблона, чтобы не замедлять запрос.
  • Составной тип данных: использовать оператор ВЫРАЗИТЬ для явного указания типа, чтобы избежать неявных левых соединений.
  • Поля в WHERE: не делать вычисляемыми поле, по которому идёт отбор.
  • Параметры ВТ: не "проваливаться" через точку к реквизиту измерения (например, Организация.ИНН), иначе индекс не будет использоваться.
  • Запрос в цикле: избегать.
  • Явные соединения: явно указывать таблицы и поля для соединения в запросе, а не обращаться через точку.
  • Временные таблицы: уничтожать (Уничтожить) при большом количестве, чтобы освободить память.
  • ОБЪЕДИНИТЬ ВСЕ: использовать вместо ОБЪЕДИНИТЬ, чтобы избежать лишней группировки (актуально для распределённых баз).

Виртуальные таблицы (ВТ)

Виртуальные таблицы — это готовые, сгруппированные данные (вложенный запрос), позволяющие быстро получать агрегированные результаты.

  • Примеры: СрезПервых, СрезПоследних (регистр сведений), Обороты, Остатки (регистр накопления).
  • Параметры ВТ срабатывают быстрее, чем условия в WHERE.
  • Для регистров накопления эффективно использовать таблицу итогов Остатки, а не Обороты (последняя — физическая таблица).

Управляемые и неуправляемые формы

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

Роли и права

  1. Создаётся роль.
  2. Роли назначаются права на объекты (чтение, запись, проведение и т.д.).
  3. Роль назначается конкретному пользователю (обязательно сохранить).
  4. В типовых конфигурациях используется подсистема управления доступом (УДА), позволяющая гибко настраивать права вплоть до конкретных записей.
  5. Принцип работы: если право разрешено в одной роли, оно доступно пользователю, даже если в другой роле оно не указано (разрешающая логика).

План обмена

План обмена — механизм для организации обмена данными между базами (распределёнными ИБ).

  • Регистрация изменений фиксирует изменения объектов.
  • Обмен может происходить через файл или прямое подключение.
  • Регистрация может быть автоматической или программной (ручной).

Тестирование конфигурации

  • Пользовательское тестирование: интерактивная проверка.
  • Сценарное тестирование: указание последовательности действий.
  • Юнит-тестирование через макеты: в макет записываются тестируемые поля и ожидаемые результаты, после чего код прогоняется.

Механизм событий

События позволяют выполнять код в определённые моменты:

  • В модуле приложения: ПередНачаломРаботыСистемы, ПриНачалеРаботыСистемы и т.д.
  • В модуле управляемой формы: ПриСозданииНаСервере, ПриОткрытии и др.
  • В модуле объекта: транзакционные события (ПередЗаписью, ПриЗаписи), обработка проведения, проверки заполнения.
  • В модуле менеджера: события для работы с классом в целом (например, Печать).

Временные таблицы

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

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

Обновление конфигурации

  • Автоматическое: через пользовательский режим для типовых конфигураций (требует файла обновления CFU).
  • Рекомендации: не пропускать релизы, после обновления дождаться завершения обработчиков в пользовательском режиме или регламентных заданий.
  • Для нетиповых конфигураций: разработчик вручную сравнивает и переносит изменения через сравнение/объединение в конфигураторе.
  • Расширения: рекомендуется использовать для более плавного процесса обновления.

Блокировки

  • Транзакционные (на уровне СУБД):
    • Управляемые (блокируют на чтение и изменение).
    • Разделяемые (блокируют только на чтение).
  • Объектные (на уровне платформы 1С):
    • Оптимистические — основаны на контроле версии записи (при конфликте — ошибка).
    • Пессимистические — явно устанавливаются разработчиком методом Заблокировать() на объект.
  • Назначение: организация согласованного параллельного доступа, предотвращение конфликтов (например, двойной продажи одного товара).

Система компоновки данных (СКД)

СКД — механизм платформы для гибкого построения отчётов.

  • Позволяет настраивать отчёты интерактивно, без программирования.
  • Источники данных: запросы, объекты данных, таблицы значений.
  • Возможности: вычисляемые поля, группировки, условное оформление, собственные макеты, объединение источников данных, вложенные схемы.

Метаданные

Метаданные — это объекты конфигурации и их структура (реквизиты, табличные части и т.д.).

  • Позволяют программно получать информацию об объектах (например, количество реквизитов, имя объекта).

Общие модули

Предназначены для хранения повторно используемого кода (экспортных процедур и функций).

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

Транзакции

Транзакция — это атомарная последовательность действий, которая либо выполняется целиком, либо откатывается.

  • Порядок: НачатьТранзакцию() → попытка выполнения действий → ЗафиксироватьТранзакцию() / в случае исключения → ОтменитьТранзакцию().
  • Назначение: обеспечение целостности данных (консистентности).

Регистры сведений

  • Похожи на справочник, но хранят записи, а не объекты.
  • Виртуальные таблицы: СрезПервых, СрезПоследних (позволяют быстро получить актуальные данные на период или на текущий момент).
  • Физическая таблица содержит все несгруппированные записи.
  • Измерения контролируют уникальность записей и индексируются.
  • Периодичность: могут быть периодическими (с периодом: секунда, день, месяц) или подчинёнными регистратору.
  • Ресурсы могут быть любого типа данных.

Реквизиты и табличные части

  • Реквизиты объекта — это поля объекта (например, код, наименование). Бывают стандартные (от платформы) и созданные разработчиком. Могут индексироваться.
  • Табличные части — отдельные сущности в базе данных, связанные с основным объектом по ссылке. В запросах к ним можно обращаться как к отдельным таблицам.

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