Переход с платформы 1С 7.7 на 1С 8.3 — это не просто смена версии программы, а полноценная смена парадигмы разработки. Многие механизмы, которые в «семерке» казались естественными, в современной «восьмерке» работают совершенно иначе или вовсе считаются устаревшими. В данной статье мы проанализируем опыт практикующих экспертов и разберем по шагам, на что именно стоит направить усилия начинающему разработчику, чтобы максимально быстро и эффективно влиться в современную экосистему 1С.
Первое и самое важное правило, которое отмечают все опытные специалисты: не тратьте время на изучение обычных форм. Обычные формы во многом напоминают интерфейсные решения 1С 7.7, и работа с ними может создать ложное ощущение преемственности. Однако современная 1С базируется на управляемом приложении.
Рассмотрим, почему это критично. В обычных формах интерфейс и логика тесно связаны, а в управляемых формах интерфейс строится платформой автоматически на основе декларативного описания. Управляемые формы заставляют разработчика разделять код на клиентскую и серверную части. Если вы начнете с обычных форм, вам придется позже мучительно переучиваться, так как логика взаимодействия с данными там принципиально иная.
Разберем одну из самых сложных тем для новичков — разделение контекста. В управляемом приложении мы всегда должны четко понимать, где выполняется наш код: на клиенте (в браузере или тонком клиенте) или на сервере (в кластере серверов 1С).
Проанализируем основные директивы компиляции, которые вы будете встречать в каждом модуле формы:
&НаКлиенте — здесь описывается логика взаимодействия с пользователем: открытие окон, вопросы, работа с файлами на локальном диске.&НаСервере — здесь происходит работа с базой данных, проведение документов и сложные расчеты.&НаСервереБезКонтекста — самый быстрый вариант вызова сервера, когда на сервер не передаются все данные текущей формы (контекст), что существенно экономит трафик и ресурсы.Посмотрим на типичный пример ошибки новичка — попытку обратиться к реквизиту объекта напрямую на клиенте. В управляемых формах это невозможно. Мы должны вызвать серверный метод, выполнить там действия и вернуть результат.
Выясним причину, почему работа с таблицами значений и объектами в 1С 8.3 вызывает трудности у выходцев из 1С 7.7. В управляемой форме данные существуют в виде реквизитов формы. Если вам нужно выполнить метод самого объекта (например, документа), вам необходимо преобразовать данные формы в объект, выполнить действие и вернуть результат обратно.
Для этого используются специальные методы. Рассмотрим пример преобразования данных формы в объект и обратно:
&НаСервере
Процедура ВыполнитьДействиеНаСервере()
// Преобразуем данные формы в прикладной объект
ЭтотОбъект = РеквизитФормыВЗначение("Объект");
// Вызываем метод объекта
ЭтотОбъект.РассчитатьСкидки();
// Возвращаем измененные данные обратно в форму
ЗначениеВРеквизитФормы(ЭтотОбъект, "Объект");
КонецПроцедуры
Важно помнить, что ТаблицаЗначений не живет на клиенте. Если вам нужно отобразить данные пользователю, вы используете ДанныеФормыКоллекция. Это принципиальное отличие, которое нужно осознать в первую очередь.
Если в 1С 7.7 отчеты часто строились путем ручного обхода выборок и формирования ячеек таблицы, то в 1С 8.3 основным инструментом является СКД (Система компоновки данных). Это мощнейший декларативный движок, который позволяет создавать сложнейшие отчеты практически без написания кода.
Рассмотрим, что нужно изучить в СКД:
Специалисты рекомендуют книгу Хрусталевой по разработке сложных отчетов как основной учебник. Помните: написание отчета «кодом» (через построитель или прямой вывод) в современной 1С считается признаком плохого тона и низкой квалификации, за исключением очень редких специфических задач.
Проанализируем еще один важный аспект: «велосипедостроение». В 1С 8.3 существует Библиотека стандартных подсистем (БСП). Это набор готовых блоков, которые фирма 1С использует во всех своих типовых решениях (УТ, БП, ERP).
Вам не нужно писать свой механизм прикрепления файлов, рассылки почты, версионирования объектов или управления правами доступа. Все это уже есть в БСП. Ваша задача как разработчика — научиться интегрировать эти подсистемы в свои решения. Это гораздо важнее, чем умение написать запрос к справочнику.
Современный подход к доработке типовых программ исключает изменение основной конфигурации. Рассмотрим механизм Расширений. Он позволяет добавлять свои реквизиты, формы и логику, не «снимая с замка» основную базу.
Это критически важно для последующих обновлений. Вы учитесь писать код так, чтобы он работал «рядом» с основной логикой, используя аннотации &Перед, &После или &Вместо. Изучение расширений — это входной билет в работу с реальными проектами на базе типовых конфигураций.
В эпоху 1С 7.7 обмен данными часто шел через текстовые файлы или COM. Сегодня стандартом является HTTP-сервисы. Ваша конфигурация 1С должна уметь общаться с внешним миром: сайтами, мобильными приложениями, государственными системами.
Разберем минимальный набор навыков в этой области:
HTTPЗапрос для получения данных извне.JSON через встроенные средства платформы (ЗаписьJSON, ЧтениеJSON).Это позволит вам создавать открытые системы, легко интегрируемые в любой ИТ-ландшафт.
И последнее, но не менее важное: мир 1С уходит от модальных окон. В браузере вы не можете просто остановить выполнение кода командой Вопрос() и ждать ответа. Рассмотрим современные методы работы.
Вместо классического Вопрос() мы используем ПоказатьВопрос() с описанием оповещения. Платформа не ждет ответа, она продолжает работу, а когда пользователь нажмет кнопку, выполнится отдельная процедура. Это требует иного структурирования программного кода, но обеспечивает работу системы в веб-интерфейсе.
Подведем итог: начинайте с управляемых форм, сразу погружайтесь в СКД, изучайте возможности БСП и расширений. Это те столпы, на которых держится современная разработка в среде 1С:Предприятие 8.