Подготовка к собеседованию программиста 1С
Ключевые тезисы
- Самый эффективный способ повысить зарплату на 20-40% и более — смена работодателя.
- Лучше готовиться к собеседованиям заранее, а не в авральном режиме после потери работы.
- Знакомые вопросы не вызывают страха. Разбор типовых вопросов помогает быть готовым к любым сценариям на интервью.
- На собеседовании не всегда есть единственно правильный ответ; интервьюер может проверять знания, использовать устаревшую информацию или даже пытаться «завалить» кандидата.
Методика работы с материалом
- Прослушать вопрос.
- Поставить на паузу и ответить своими словами.
- Сверить ответ с объяснением из видео.
- Регулярно повторять материал для закрепления.
Технические вопросы и ответы
Отладка и запуск
Почему не работает отладка при запуске 1С из конфигуратора?
- Режим отладки не включён на сервере (в строке запуска службы должен быть ключ
-debug). - В настройках конфигуратора (Сервис → Параметры) не отмечены опции «Устанавливать режим разрешения отладки» и «Начинать отладку при запуске».
- Брандмауэр блокирует порты 1540 и 1541 (для отладки по TCP/IP).
- Неправильно указано имя/IP удалённого компьютера, если отлаживаемые сеансы на другом ПК.
- Не включено автоматическое подключение отладчика к фоновым заданиям.
- Решение: Перезапустить конфигуратор или службу 1С после изменения настроек.
Объекты метаданных и типы данных
В чём отличие между справочником и планом видов характеристик (ПВХ)?
- Справочник — база для хранения однотипных данных со строгой структурой (например, список товаров с кодом, названием, ценой).
- План видов характеристик (ПВХ) — инструмент для гибкого описания дополнительных свойств объектов справочников (например, к товару можно добавить характеристики «цвет», «размер» без изменения структуры справочника).
- Аналогия: Справочник — список контактов (имя, номер). ПВХ — дополнительные поля в контакте (день рождения, адрес).
В чём опасность функции ТекущаяДата()?
- В распределённых системах время на сервере и клиенте может отличаться, что ведёт к потере согласованности данных.
- При вызове в разных местах кода может возвращать разные значения, делая результат непредсказуемым.
- Усложняет тестирование и воспроизведение багов, так как результат зависит от времени выполнения.
- Частые вызовы в тяжёлых алгоритмах снижают производительность.
- Рекомендация: Фиксировать значение в переменной в начале выполнения и работать с ним.
В чём разница между Структурой и Соответствием?
- Структура:
- Ключи — только строки, соответствующие правилам именования переменных.
- Для фиксированных наборов данных.
- Доступ к значению через свойства (например,
Структура.Ключ).
- Соответствие:
- Ключи — любого типа (числа, строки, даты, ссылки).
- Для динамических данных.
- Доступ к значению через метод
Получить()или квадратные скобки (например,Соответствие["Ключ"]).
В чём разница между толстым и тонким клиентом?
- Толстый клиент:
- Полноценное приложение, устанавливаемое на компьютер.
- Обработка данных и бизнес-логика выполняются на компьютере пользователя.
- Есть доступ к режиму «Конфигуратор».
- Поддерживает автономную работу.
- Используется разработчиками и для сложных функций.
- Тонкий клиент:
- Облегчённое приложение, всегда работает через сервер.
- Вся обработка и логика — на сервере, на клиенте только интерфейс.
- Режим «Конфигуратор» недоступен.
- Всегда требуется подключение к серверу.
- Используется обычными пользователями для ввода документов, просмотра отчётов; экономит ресурсы компьютера.
Где хранится временная таблица?
- В оперативной памяти для ускорения доступа.
- При больших размерах может быть записана на диск (например, в базу
tempdbв MS SQL Server). - Существует в рамках выполнения запроса или работы менеджера временных таблиц, затем автоматически удаляется.
Директивы компиляции
Для чего вы можете использовать директивы 1С?
- Директивы (например,
&НаКлиенте,&НаСервере,&НаСервереБезКонтекста) — специальные команды, управляющие средой выполнения кода. - Помогают оптимизировать производительность, распределяя нагрузку между клиентом и сервером.
- Делают код понятнее, явно указывая место выполнения.
В чём разница директив &НаСервере и &НаСервереБезКонтекста?
&НаСервере: сервер получает полный контекст формы (реквизиты, состояние элементов). Удобно для обновления данных на форме, но создаёт нагрузку на сеть (контекст передаётся в XML).&НаСервереБезКонтекста: код выполняется на сервере, но контекст формы не передаётся. Нельзя изменить реквизиты формы, но нагрузка на сеть минимальна (передаются только явно указанные параметры). Выбор для расчётов без изменения интерфейса.
Какие директивы могут быть в модуле формы?
&НаКлиенте&НаСервере&НаСервереБезКонтекста&НаКлиентеНаСервереБезКонтекста
Запросы и данные
Для чего используется слово РАЗРЕШЕННОЕ в запросах?
- Конструкция
ВЫБРАТЬ РАЗРЕШЕННОЕпозволяет выбрать только те записи, на которые у текущего пользователя есть права доступа (при включённых ограничениях на уровне записей — RLS). - Преимущество: Избегает ошибок из-за недостатка прав.
- Недостаток: Пользователи могут получать неполную информацию, что может искажать аналитику.
В чём отличие между внутренним и полным соединением?
- Внутреннее соединение (
ВНУТРЕННЕЕ СОЕДИНЕНИЕ): возвращает только записи, где есть совпадение в обеих таблицах. - Полное соединение (
ПОЛНОЕ СОЕДИНЕНИЕ): возвращает все записи из обеих таблиц. При отсутствии данных в одной из таблиц в соответствующих полях будетNULL.
Для чего используется конструкция ВЫРАЗИТЬ?
- Позволяет явно указать тип данных в запросе.
- Необходима для группировки по полям с неопределённой длиной (например, строки).
- Ускоряет запросы, так как система сразу понимает, к какой таблице обращаться.
- Упрощает код при работе с составными типами данных.
Как могут навредить составные типы в запросе?
- Увеличивают размер данных (для каждого элемента — отдельное поле).
- Снижают производительность запросов (сложнее сравнение, возможен возврат избыточных данных).
- Создают проблемы с индексированием (индексы создаются для каждого простого типа, что увеличивает нагрузку).
- Могут приводить к непредсказуемому поведению (например, при использовании
Неопределено).
Операции в запросах
- ОБЪЕДИНИТЬ: возвращает уникальные строки из всех объединяемых наборов (удаляет дубликаты).
- ОБЪЕДИНИТЬ ВСЕ: возвращает все строки, включая дубликаты. Работает быстрее, чем
ОБЪЕДИНИТЬ.
Объекты конфигурации: назначение
Для чего используются справочники?
- Для хранения нормативно-справочной информации (номенклатура, контрагенты).
- Структурируют однотипные данные, упрощают их добавление, редактирование, удаление.
- Поддерживают целостность данных (например, выбор значения из справочника в документе).
- Могут быть иерархическими.
Для чего используется модуль менеджера и есть ли в нём обработчики событий?
- Модуль менеджера есть у каждого прикладного объекта (документ, справочник).
- Содержит методы, относящиеся ко всему объекту в целом, а не к конкретному экземпляру (статические методы).
- Может содержать обработчики событий (например,
ОбработкаПолученияДанныхВыбора). - Помогает избежать дублирования кода и улучшает структуру программы.
Для чего нужна галочка «Сервер» в общем модуле?
- Указывает, что код должен выполняться на серверной стороне.
- Переносит вычислительную нагрузку на сервер, разгружая клиентские станции.
- Обеспечивает доступ к объектам, доступным только на сервере (файловая система, внешние соединения).
- Повышает безопасность, так как критичная бизнес-логика выполняется в защищённой среде.
- Снижает объём передаваемых данных (сервер обрабатывает и отправляет только результат).
Для чего нужна функциональная опция?
- Объект метаданных для управления доступностью определённых функций в конфигурации.
- Позволяет включать/отключать части функционала без изменения конфигурации (например, учёт по нескольким организациям).
- Может иметь параметры, уточняющие поведение.
- Упрощает администрирование и адаптацию системы под нужды бизнеса.
Для чего нужны функции «ДанныеФормыВЗначение» и «ЗначениеВДанныеФормы»?
ДанныеФормыВЗначение: преобразует данные из элементов управления формы в объект прикладного типа для обработки (например, на сервере).ЗначениеВДанныеФормы: заполняет элементы формы данными из объекта прикладного типа (например, после загрузки из базы).
Определяемые типы
Пользовательские типы данных (появились в версии 8.3), позволяющие создавать собственные структуры для повторного использования в разных местах конфигурации.
Работа с формами и интерфейсом
Используется ли таблица значений на форме? Что используется?
- На форме используется не сама ТаблицаЗначений, а реквизит формы с типом ТаблицаЗначений.
- Для отображения создаётся элемент формы типа «Поле таблицы» или «ДанныеФормыКоллекция», связанный с этим реквизитом.
Как в модуле формы сделать обращение к переменной, доступной на сервере и на клиенте?
- Глобальная переменная: Объявить в модуле объекта или общем модуле (например,
Перем ГлобальнаяПеременная Экспорт;). Будет доступна везде, где подключён этот модуль. - Реквизиты формы: Самый распространённый способ. Данные в реквизитах формы доступны как на клиенте, так и на сервере.
Как в 1С добавить новый реквизит без доработки конфигурации?
- Дополнительные реквизиты и сведения: Включается в настройках (например, в «Администрирование» → «Общие настройки»). Позволяет добавлять реквизиты к объектам без изменения конфигурации.
- Расширение конфигурации: Современный подход, позволяющий добавлять новые объекты и реквизиты, сохраняя возможность обновления типовой конфигурации.
Как изменить типовую форму через обработчики событий?
- Расширение конфигурации: Предпочтительный современный способ.
- Общие модули с постфиксом «Переопределить»: Позволяют переопределять стандартные процедуры и обработчики событий (например,
ПриСозданииНаСервере,ПередЗаписью) без изменения исходного кода типовой конфигурации.
Какой наиболее аккуратный способ доработки формы без внесения изменений в типовую конфигурацию?
- Использование расширений — современный подход, позволяющий добавлять реквизиты и элементы, сохраняя поддержку и беспроблемные обновления.
- Программный способ: Добавление элементов через код в обработчике
ПриСозданииНаСервере. Даёт гибкость, но может создать проблемы после обновлений, если меняются имена стандартных элементов.
Если мы на сервере получили таблицу значений, то как мы её можем передать на клиент?
- Временное хранилище: Поместить таблицу во временное хранилище на сервере, забрать на клиенте по уникальному идентификатору (универсальный и простой способ).
- Реквизит формы: Создать на форме реквизит типа
ТаблицаЗначенийи заполнить его серверными данными. - Преобразование в массив структур: На сервере преобразовать таблицу в массив структур, передать его клиенту и там собрать обратно.
- Сериализация в строку (устаревший способ, для толстого клиента).
Какой тип значения на форме для вывода таблицы значений?
- Для работы с коллекциями на формах используется тип данных «ДанныеФормыКоллекция».
- Это типизированный список, похожий на массив, доступ к элементам которого осуществляется по индексу.
Что такое контекст формы?
- Всё, что доступно для работы на форме в конкретный момент: свойства, методы, события, реквизиты, элементы управления.
- Различают глобальный контекст (доступен везде в конфигурации) и локальный контекст формы.
- Для доступа к реквизитам формы используется объект
ЭтаФорма.
Транзакции и блокировки
Есть ли в 1С вложенные транзакции?
- В классическом понимании — нет. Поддерживается только счётчик активных транзакций.
- При вызове
НачатьТранзакцию()внутри другой транзакции счётчик увеличивается, но реально работает только самая внешняя (первая) транзакция. - Откат внутренней транзакции приводит к откату всех изменений, включая сделанные во внешней транзакции.
Что такое транзакция?
- Набор операций, выполняемых как единое целое (либо все, либо ни одной).
- Свойства (ACID): Атомарность, Согласованность, Изолированность, Долговечность.
- Основные методы в 1С:
НачатьТранзакцию(),ЗафиксироватьТранзакцию(),ОтменитьТранзакцию().
Какой уровень изоляции транзакций является самым высоким и предотвращает возникновение фантомов?
- Самый высокий уровень — SERIALIZABLE (Сериализуемый).
- В 1С для управления блокировками используется режим
РежимБлокировкиДанных.Исключительная. - Уровень изоляции зависит от настроек СУБД, использовать
SERIALIZABLEнужно осторожно из-за сильных блокировок и потенциального падения производительности.
Что такое автоматические блокировки?
- Механизм, автоматически предотвращающий одновременное изменение одних и тех же данных разными пользователями.
- Система сама блокирует запись при её редактировании, пока операция не завершена.
- Обеспечивает целостность данных в многопользовательском режиме без участия разработчика.
Что такое разделяемая блокировка?
- Механизм, позволяющий нескольким пользователям одновременно читать данные, но запрещающий их изменение другими транзакциями.
- Повышает производительность при анализе данных и формировании отчётов.
- Противоположность исключительной блокировке, которая запрещает и чтение, и изменение.
Блокировки
Блокировки бывают объектные (пессимистические/оптимистические на уровне 1С) и транзакционные (на уровне СУБД).
Архитектура и производительность
Что происходит, когда мы обращаемся к объекту через точку?
- При обращении
Объект.Реквизитплатформа загружает весь объект из базы данных (все реквизиты и табличные части) через SQL-запрос. - Недостаток: Неэффективно, если нужен только один реквизит, особенно для объектов с большим объёмом данных.
- Рекомендация: Для получения отдельных реквизитов использовать запросы, что снижает нагрузку на сервер.
Можно ли на клиенте получать реквизит через точку? Если нет, то как?
- Да, можно, но с ограничениями.
- В клиентском контексте нельзя получить значение реквизита ссылочного типа через точку из-за отсутствия доступа к полному объекту.
- Каждое обращение через точку загружает весь объект из базы, создавая избыточную нагрузку.
- Рекомендация: Использовать серверные функции или запросы для эффективного получения нужных данных.
Что делать, если выполнение запроса занимает много времени?
- Проанализировать план выполнения запроса (через
EXPLAINв PostgreSQL или SQL Server Management Studio для MSSQL). - Оптимизировать запрос: проверить использование индексов, переписать при необходимости.
- Добавить недостающие индексы в базу данных.
- Разбить сложный запрос на этапы с использованием временных таблиц.
- Проверить и настроить параметры СУБД (размер кэша, работа с памятью).
- Обязательно тестировать изменения на тестовой базе.
Какие операции в 1С можно выполнять без транзакций?
- Операции, не изменяющие данные в базе:
- Чтение данных (запросы, получение значений реквизитов).
- Работа с метаданными.
- Работа с временными данными (временные таблицы, структуры, массивы).
- Вывод информации (формирование отчётов, сообщений).
- Вызов внешнего кода (веб-сервисы, библиотеки).
- Анализ и преобразование данных в оперативной памяти.
Какие поля нужно индексировать в запросе?
- Поля, часто используемые в условиях
WHERE. - Поля, участвующие в соединениях таблиц (
JOIN), особенно при левых соединениях или больших таблицах. - Поля, используемые для сортировки (
УПОРЯДОЧИТЬ ПО). - Поля, требующие обеспечения уникальности (например, коды).
- Важно: Создавать составные индексы с учётом порядка полей в условиях запроса (индексы работают слева направо). Не индексировать редко используемые поля или таблицы с малым объёмом данных.
Индексация и производительность
- Индекс — объект БД, ускоряющий поиск данных, подобно оглавлению в книге.
- Поле Индексирования в метаданных указывает, по какому полю будет создан индекс.
- Порядок измерений в регистрах критически важен для скорости работы запросов, так как влияет на структуру кластерного индекса.
- Временные таблицы хранятся в оперативной памяти (при больших объёмах могут сбрасываться на диск). Их можно индексировать и передавать между запросами через Менеджер временных таблиц.
Оптимизация производительности
- Работа с БД: создание индексов, оптимизация запросов, реиндексация, очистка журналов транзакций.
- Управление транзакциями: разделение больших операций на части, использование режима разделения итогов, минимизация времени блокировок.
- Аппаратная часть: использование SSD, увеличение оперативной памяти.
- Профилирование: использование технологического журнала и инструментов мониторинга СУБД для поиска узких мест.
Обработка больших объёмов данных
- Оптимизация и параметризация SQL-запросов.
- Использование многопоточности для независимых задач.
- Вынос длительных операций в фоновые задания.
- Автоматизация загрузки через интеграцию со сторонними системами.
Отладка
- Измерение времени выполнения: с помощью функции
ТекущаяДата()или записи в журнал. - Отладка фоновых заданий: включается специальный режим в параметрах Конфигуратора.
- Диагностика ошибок: анализ технологического журнала и журнала регистрации.
Распространённые проблемы и их решение
- Ошибка "В данной транзакции уже происходили ошибки": возникает при откате вложенной транзакции, ошибках данных, нарушении прав доступа.
- Утечка памяти: может быть вызвана циклическими ссылками, неосвобождёнными объектами, глобальными переменными с большими данными, неоптимизированными запросами.
- Тормозящие отчёты: требуют оптимизации запросов, проверки индексов, анализа нагрузки на сервер, отключения ненужных фоновых процессов.
Расширения и доработки
Для чего используются расширения, как они устроены?
- Назначение: Инструмент для доработки типовых конфигураций без изменения исходного кода. Появился в версии 8.3.6.
- Преимущества: Сохранение поддержки и возможности обновления, гибкость настройки под бизнес.
- Недостатки: Ограниченные возможности изменений, потенциальное падение производительности при множестве расширений, усложнённая отладка, возможные конфликты между расширениями.
- Применение: Добавление новых отчётов, изменение интерфейса, исправление ошибки, адаптация под требования клиента.
Какие способы переопределения процедур и функций существуют в расширении?
- Использование аннотаций:
&Вместо— полностью заменяет реализацию.&Перед— добавляет код перед вызовом оригинальной процедуры.&После— добавляет код после завершения оригинальной процедуры.&Вместо(СКонтролем)и&ПродолжитьВызов— позволяют контролировать вызов оригинального кода.
Что происходит, если разрешить внесение изменений в типовую конфигурацию, находящуюся на поддержке?
- Конфигурация становится кастомизированной.
- Основная проблема: Крайне усложняется процесс обновления. Обновления от «1С» могут конфликтовать с внесёнными правками, что может привести к потере данных или отказу функционала.
- Рекомендация: По возможности использовать расширения вместо прямого редактирования типовой конфигурации.
Хранилище конфигурации
Инструмент для командной разработки, обеспечивающий контроль версий, историю изменений и предотвращение конфликтов при одновременной работе нескольких программистов.
Регистры и их виды
В чём разница между хранением информации в табличной части и в регистре?
- Табличная часть: данные привязаны к конкретному объекту (документу, справочнику). Существуют только внутри этого объекта. Для доступа используется объектный код.
- Регистр (сведений, накопления и др.): данные хранятся централизованно, независимо от объектов. Предназначены для аналитики и отчётности. К ним обращаются через запросы.
Чем существенно отличается регистр сведений от справочника?
- Справочник: для хранения условно постоянной информации (товары, контрагенты). Есть уникальный код/ссылка, могут быть табличные части.
- Регистр сведений: для хранения временной или аналитической информации (цены, курсы валют). Есть измерения (ссылки) и ресурсы (числовые значения). Нет табличных частей.
- Уникальность: В справочнике — по коду/ссылке. В регистре — по набору измерений (может быть перезапись).
- Связь с документами: Регистры сведений могут быть подчинены документам (регистраторам).
Для чего нужны регистры?
- Специализированные хранилища данных:
- Регистры сведений — для справочной информации (цены, курсы).
- Регистры накопления — для учёта движения (товары, деньги).
- Регистры бухгалтерии — для бухгалтерского учёта.
- Регистры расчёта — для расчётных операций (зарплата).
- Преимущества: Удобное хранение многомерных данных, отслеживание истории изменений, быстрая подготовка отчётов.
Выбор типа регистра
- Регистр накопления: для учёта движения (приход/убыль), анализа остатков и оборотов (товары, деньги).
- Регистр сведений: для хранения изменяющейся справочной информации (данные о контрагентах, характеристики).
Для чего нужно свойство «Ведущее» в регистре сведений?
- Обеспечивает целостность данных: при удалении объекта, на который ссылается ведущее измерение, автоматически удаляются все связанные записи регистра.
- Упрощает навигацию (создаются автоматические гиперссылки).
- Может ускорять запросы.
- Минусы: Может замедлять массовые операции удаления, создавать избыточные индексы.
Свойства объектов метаданных
- Ведущее измерение в регистре сведений обеспечивает целостность данных: при удалении объекта-владельца удаляются и связанные с ним записи.
- Основной отбор в регистре указывает системе на измерение, которое будет использоваться как основной фильтр в запросах для оптимизации.
Регистратор в регистре
Регистратором может быть только документ, так как у него есть механизм проведения. Справочник регистратором быть не может.
Какие виртуальные таблицы бывают у регистров?
- Регистр накопления:
Остатки,Обороты,ОстаткиИОбороты. - Регистр сведений:
СрезПоследних,СрезПервых. - Регистр бухгалтерии:
Остатки,Обороты,ОстаткиИОбороты,ДвиженияСубконто,ОборотыДтКт. - Регистр расчёта:
ДанныеГрафика,ФактическийПериодДействия,База. - Назначение: Упрощают запросы, избавляя от необходимости писать сложные SQL-конструкции. Платформа сама оптимизирует доступ к данным через них.
Что означает «закрыть регистр накопления»?
- Фиксация всех данных по остаткам и оборотам на конкретную дату («заморозка» информации).
- Необходимо для корректности отчётности (например, закрытие месяца по счёту 20 «Основное производство» для расчёта себестоимости).
- Другое значение: Отразить все накопленные суммы так, чтобы остаток на конец периода стал нулевым.
Закрытие регистров
Процедура закрытия регистра (например, счёта 20) необходима для корректного расчёта себестоимости и отчётности. Закрыть регистр означает отразить все накопленные суммы так, чтобы остатки на конец периода были равны нулю.
Система компоновки данных (СКД)
В чём разница между системой компоновки данных и схемой компоновки данных?
- Схема компоновки данных (СКД) — это «чертёж»: определяет, какие данные брать, как их фильтровать, группировать и вычислять.
- Система компоновки данных (Система КД) — это «строитель»: отвечает за визуализацию данных из СКД, формирует таблицы, диаграммы, итоги, позволяет пользователю настраивать параметры отчёта.
- Итог: СКД готовит данные, Система КД — отображает и позволяет с ними взаимодействовать.
Какие плюсы и минусы СКД?
- Плюсы: Быстрая автоматизация отчётности без программирования, визуальные настройки, гибкость (лёгкое добавление полей), возможность создания дашбордов, работа с внешними источниками данных.
- Минусы: Настройка сложных отчётов может быть трудоёмкой, язык запросов имеет ограничения, при больших данных может снижаться производительность без оптимизации, требуется время на обучение.
Управление доступом (RLS)
Используете ли вы RLS в своей практике?
- Да. RLS (Row Level Security) — ограничение доступа на уровне записей.
- Применение: Например, ограничение доступа к документам по организациям, чтобы пользователи видели только данные своего подразделения.
- Преимущества: Гибкость и тонкий контроль над данными.
- Недостатки: Может сильно снижать производительность на больших объёмах данных, если запросы не оптимизированы.
Как работает RLS? Где указываются ограничения?
- Ограничения настраиваются через роли пользователей.
- В каждой роли на вкладке «Шаблоны ограничений» задаются условия доступа к записям (чтение, изменение, удаление).
- Для корректной работы важно правильно настроить параметры сеанса.
- Пример: Менеджер видит только счета своих клиентов.
Чем могут быть полезны параметры сеанса при работе с RLS?
- Параметры сеанса хранят значения, специфичные для сеанса пользователя (например, его подразделение, роль).
- Эти параметры используются в условиях RLS для динамического ограничения доступа.
- Делают настройку прав гибкой: вместо жёстких условий в запросе используются значения параметров, зависящие от текущего пользователя.
Как организована система прав доступа в типовых конфигурациях?
- Основана на трёх элементах:
- Роли — наборы прав (что можно делать).
- Группы доступа — списки пользователей с общими ролями.
- Профили групп доступа — готовые наборы ролей для быстрой настройки.
- Настройка ведётся в режиме «1С:Предприятие» в разделе администрирования.
- Для детального ограничения включается опция «Ограничивать доступ на уровне записей» (RLS).
Интеграция и обмен данными
Веб-сервисы и HTTP-сервисы
- Веб-сервисы: работают по SOAP/XML-RPC, требуют строгого описания формата (XDTO), подходят для сложных корпоративных интеграций.
- HTTP-сервисы: работают по протоколу HTTP (REST), более гибкие, поддерживают JSON/XML, идеальны для мобильных и веб-приложений.
Форматы обмена: JSON vs XML
- JSON: простой, компактный, легко читаемый формат (пары "ключ-значение"), стандарт для современных REST-API.
- XML: структурированный, "громоздкий" формат (дерево с тегами), поддерживает сложные схемы (XSD), часто используется в legacy-системах и SOAP.
Конвертация данных (КД)
Инструмент для обмена данными между разными конфигурациями 1С.
- КД 2.0: обмен через написание правил, менее гибкая к изменениям.
- КД 3.0: использует промежуточный формат Enterprise Data на основе XDTO, более гибкая и современная, упрощает разработку.
Планы обмена и XDTO
- Планы обмена используются для автоматической синхронизации данных между базами 1С или с внешними системами (передаются только изменения).
- XDTO — механизм в 1С для работы с XML-данными через объекты, что упрощает интеграцию.
Публикация сервисов
Для публикации веб- или HTTP-сервиса необходимо:
- Настроить веб-сервер (IIS, Apache) с модулями расширения 1С.
- Опубликовать информационную базу через Конфигуратор.
- В параметрах публикации указать публикуемые сервисы.
Архитектура и методы разработки
Библиотека стандартных подсистем (БСП)
Набор готовых, протестированных модулей для типовых задач (управление пользователями, работа со справочниками, интеграция). Ускоряет разработку и стандартизирует код.
Подписки на события
Механизм, позволяющий выполнять пользовательский код (обработчик) при наступлении системных событий (перед записью, после записи и т.д.) без изменения типовых объектов.
Метод "НайтиПоНаименованию"
Имеет недостатки: зависит от точного наименования, ищет только по левой части строки, неэффективен для больших объёмов данных. Для сложных выборок предпочтительнее использовать запросы.
Общие реквизиты
Используются для стандартизации данных (например, "Организация", "Ответственный") across разных объектов (документы, справочники). По стандарту БСП используются как разделители.
Прочие важные понятия
Что такое Неопределено, ПустаяСсылка, БитаяСсылка и чем они отличаются?
- Неопределено: специальное значение, обозначающее отсутствие данных (не ноль и не пустая строка). Возвращается, например, когда метод ничего не нашёл.
- ПустаяСсылка: ссылка, которая ни на что не указывает. Проверяется функцией
ПустаяСсылка(). - БитаяСсылка: ссылка на объект, который был удалён из базы данных. При попытке получить объект вернётся
Неопределено.
Что такое мутабельность?
- Мутабельные (изменяемые) данные — те, которые можно изменить после создания (списки значений, таблицы значений, формы).
- Иммутабельные (неизменяемые) данные — строки, числа, даты. После создания можно только создать новое значение.
- Важно: С мутабельными значениями нужно быть осторожным при передаче между клиентом и сервером, так как они могут измениться в процессе.
Что такое момент времени?
- Инструмент для точного учёта последовательности объектов, состоит из даты, времени и ссылки на объект базы данных.
- Позволяет различать документы, созданные в одну и ту же секунду.
- Критически важен для корректного расчёта остатков в регистрах накопления.
Какие вы знаете виды торгового оборудования для программиста?
- Ключевое: оборудование для автоматизации торговли (кассовые аппараты, сканеры штрихкодов, терминалы сбора данных, весы).
- Остальное (стеллажи, витрины, холодильники) обычно не входит в сферу ответственности программиста 1С.
Что вам не нравится в платформе 1С?
- Перегруженный и не всегда интуитивный интерфейс.
- Частые обновления, которые иногда вносят новые ошибки или требуют доработок.
- Отсутствие модульности (изменения в одной части системы могут затронуть другие).
- Высокие требования к квалификации разработчиков.
- Популярность системы делает её мишенью для атак, что требует усилий по защите данных.
Бухгалтерский и складской учёт
Основные бухгалтерские счета
- 01 — Основные средства
- 10 — Материалы
- 20 — Основное производство
- 41 — Товары
- 50 — Касса
- 51 — Расчётные счёта
- 76 — Взаиморасчёты
Ключевые понятия
- Амортизация — постепенное списание стоимости основных средств.
- Валовая прибыль = Доходы - Себестоимость. Чистая прибыль = Валовая прибыль - Все расходы (налоги, проценты и т.д.).
- Курсовая разница — возникает из-за изменения курса валюты.
- Налоговая разница — возникает из-за разных правил признания доходов/расходов в бухгалтерском и налоговом учёте.
- Инвентаризация — сверка фактического наличия активов с данными в базе 1С.
Ордерный склад
Тип склада, где движение товара фиксируется через складские ордера, что позволяет разделить учёт товаров и финансовых документов.
Вопросы карьеры и опыта разработчика
Подход к работе
Важны понимание бизнес-потребностей пользователя, написание чистого и документированного кода, итеративность, командная работа и постоянное обучение.
Типичные сложности
- Нечёткие требования от пользователей.
- Работа с устаревшими версиями платформы.
- Проблемы с производительностью на больших объёмах данных.
- Необходимость постоянного отслеживания обновлений платформы и законодательства.
Демотивирующие факторы
Низкая зарплата, отсутствие обратной связи, неопределённость в требованиях, рутинные задачи, конфликты в команде.
Опыт работы
Опытный разработчик, как правило, работал с основными типовыми конфигурациями (Бухгалтерия предприятия, Управление торговлей, Зарплата и управление персоналом), имел опыт интеграций (веб-сервисы, HTTP-сервисы, JSON/XML) и оптимизации производительности.