10 вопросов по теории для разработчика 1С Middle-уровня (1–3 года опыта)

Этот тест предназначен для разработчиков 1С с опытом от 1 до 3 лет, которые уже уверенно работают с типовыми конфигурациями и хотят проверить свое понимание архитектурных решений, механизмов безопасности, производительности и расширенных возможностей платформы. Вопросы охватывают такие темы, как фоновые задания, транзакции, расширения, RLS, кэширование и работа с распределёнными базами — все то, с чем вы сталкиваетесь при переходе от простых доработок к проектированию сложных решений. Открывайте ответы только после того, как попробуете сформулировать их сами — так вы получите максимум пользы!  (смотрите также: вопросы для Junior-разработчиков 1С)

Вопрос 1. Что такое подсистема прав доступа на уровне записей (RLS) в 1С? Как она реализуется?

Посмотреть ответ

Подсистема RLS (Row Level Security) позволяет ограничивать доступ пользователей к отдельным записям данных (например, менеджер видит только своих клиентов).

Реализуется через:
Настройку ролей с указанием условий отбора по измерениям (например, «ТекущийПользователь = Менеджер»),
Использование ограничений на данные в конфигураторе (в свойствах ролей → «Ограничения на данные»),
Автоматическую подстановку условий в запросы при работе с защищёнными объектами.

Важно: RLS работает на уровне СУБД, если используется СУБД с поддержкой (PostgreSQL, MS SQL), или эмулируется на стороне сервера 1С.

Вопрос 2. Как работает механизм фоновых заданий в 1С? Приведите пример использования.

Посмотреть ответ

Фоновые задания позволяют выполнять длительные операции без блокировки интерфейса пользователя.
Пример: отправка email-рассылки.

Задание = Новый ФоновоеЗадание("ОтправкаРассылки", Параметры);
Задание.Запустить();

Обработчик ОтправкаРассылки описывается в общем модуле с признаком «Вызов сервера».
Фоновые задания выполняются на сервере, поддерживают прогресс, ошибки и повторный запуск.

Вопрос 3. Что такое расширение конфигурации? Чем оно отличается от доработки основной конфигурации?

Посмотреть ответ

Расширение — это отдельный файл (.cf), который не изменяет основную конфигурацию, а добавляет или переопределяет её функционал.

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

Вопрос 4. Как реализовать транзакцию в 1С? Зачем она нужна?

Посмотреть ответ

Транзакция группирует несколько операций записи в единую логическую единицу. Если одна операция завершится ошибкой — все изменения откатятся.

НачатьТранзакцию();
Попытка
Документ1.Записать();
Документ2.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;

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

Вопрос 5. Что такое план обмена? Как он используется в распределённых информационных базах?

Посмотреть ответ

План обмена — это механизм синхронизации данных между несколькими ИБ (например, центральный офис и филиалы).
Каждая ИБ регистрируется как узел обмена. При изменении данных создаются сообщения обмена, которые отправляются другим узлам.

Используется для:
Репликации справочников,
Обмена документами,
Централизованного учёта.
Требует настройки правил обмена и обработчиков получения/отправки.

Вопрос 6. Как оптимизировать медленный отчёт, строящийся более 30 секунд?

Посмотреть ответ

Шаги оптимизации:
Анализ запроса через «Журнал запросов» — найти узкие места.
Добавить индексы по полям, участвующим в ГДЕ, СГРУППИРОВАТЬ, СОЕДИНЕНИЕ.
Использовать временные таблицы вместо вложенных запросов.
Ограничить выборку (параметры периода, отбора).
Перенести вычисления на СУБД (избегать циклов в модуле).

При необходимости — использовать фоновое формирование.
Важно: избегать Выборка.Следующий() внутри других циклов — это N+1 проблема.

Вопрос 7. Что такое общие реквизиты у объектов метаданных? Приведите пример их применения.

Посмотреть ответ

Общие реквизиты — это реквизиты, определённые один раз и добавленные сразу ко всем объектам указанного типа (например, ко всем документам).

Пример:
Создать общий реквизит Автор (тип — Справочник.Пользователи),
Назначить его всем документам,
В модуле менеджера документов автоматически заполнять:

Процедура ПередЗаписью(Отказ)
Если ЭтотОбъект.Автор = Неопределено Тогда
ЭтотОбъект.Автор = Пользователи.ТекущийПользователь();
КонецЕсли;
КонецПроцедуры

Это упрощает поддержку и обеспечивает единообразие.

Вопрос 8. Как работает кэширование в 1С? Как создать собственный кэш?

Посмотреть ответ

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

Если НЕ ГлобальныйКонтекст.СвойствоКэша("МойКэш") Тогда
ГлобальныйКонтекст.УстановитьСвойствоКэша("МойКэш", РассчитатьДанные());
КонецЕсли;
Результат = ГлобальныйКонтекст.СвойствоКэша("МойКэш");

Кэш живёт в течение сеанса или до перезагрузки сервера. Для межсеансового кэша — использовать регистр сведений.

Вопрос 9. Что такое управляемое приложение и обыкновенное приложение? Когда что использовать?

Посмотреть ответ

Управляемое приложение — современный режим, использует управляемые формы, поддерживает веб-клиент, тонкий клиент, мобильные устройства. Рекомендуется для всех новых проектов.

Обыкновенное приложение — устаревший режим, работает только в толстом клиенте, использует обычные формы.

Используйте управляемое приложение, если:
Требуется работа из браузера,
Нужна поддержка мобильных устройств,
Проект новый или активно развивается.
Обыкновенное — только для поддержки старых решений.

Вопрос 10. Как реализовать защиту от параллельной записи одного и того же документа двумя пользователями?

Посмотреть ответ

Используется блокировка объекта на время редактирования:
При открытии формы — вызвать ЭтотОбъект.УстановитьБлокировку().
При закрытии формы — ЭтотОбъект.СнятьБлокировку().
При попытке открыть уже заблокированный документ — показать предупреждение.

Альтернатива: использовать механизм контроля версий (реквизит ВерсияДанных) и проверять его при записи. Если версия изменилась — отказать в записи с сообщением.


Смотрите также: Практические вопросы для разработчика 1С Middle-уровня (1–3 года опыта)

Ваша реакция?
Подписаться
Уведомление о
guest
0 Комментарий
Первые
Последние Популярные
Встроенные отзывы
Посмотреть все комментарии
Back to top button