Переход в разработку на платформе 1С 7.7 может вызвать определенные трудности, особенно если у вас уже есть опыт работы с современными языками программирования, такими как C#, или более новыми версиями платформы 1С 8.x. В этой статье мы подробно разберем, как создать свою первую обработку, написать корректный код для версии 7.7 и запустить процесс отладки.
Проанализируем ситуацию, с которой сталкивается начинающий разработчик. В современных IDE нажатие клавиши F5 обычно компилирует проект и запускает его в режиме отладки с выводом в консоль. В 1С 7.7 логика иная. Конфигуратор — это среда проектирования метаданных и написания кода, а исполняется этот код в отдельном приложении — "1С:Предприятие".
Когда мы нажимаем F5 в конфигураторе, система просто запускает клиентское приложение. Если вы создали внутреннюю обработку в дереве конфигурации, вам придется найти ее в интерфейсе запущенной программы (через меню, которое нужно предварительно настроить). Чтобы ускорить процесс, мы разберем более эффективный метод — использование внешних обработок.
Рассмотрим по шагам, как создать минимальный исполняемый файл, который не требует изменения всей конфигурации:
.ert.TestMetadata.ert.Использование внешних обработок — это стандарт де-факто при разработке и отладке в 7.7. Это позволяет изменять код и проверять его работу без перезапуска всей системы и без необходимости сохранения (принятия) изменений в основной конфигурации.
В 1С 7.7 код не выполняется "сам по себе" при открытии файла (если он не написан в специальной предопределенной процедуре). Нам нужно создать кнопку, которая инициирует выполнение нашего алгоритма.
Сформировать().Теперь перейдем на закладку Модуль (внизу окна обработки) и опишем саму процедуру.
Типичная ошибка при переходе с 1С 8.x — использование конструкций вроде Для Каждого или обращение к коллекции Метаданные.Справочники. В версии 7.7 объектная модель метаданных плоская и доступ к ней осуществляется иначе.
Разберем пример кода, который выведет количество справочников и их идентификаторы в окно сообщений:
Процедура Сформировать()
// В 7.7 количество объектов метаданных получается вызовом метода без параметров
КолвоСправочников = Метаданные.Справочник();
Сообщить("Всего справочников в системе: " + КолвоСправочников);
// Используем классический цикл Для
Для Номер = 1 По КолвоСправочников Цикл
// Доступ к конкретному объекту метаданных по индексу
ИмяСправочника = Метаданные.Справочник(Номер).Идентификатор;
Сообщить("Справочник №" + Номер + ": " + ИмяСправочника);
КонецЦикла;
КонецПроцедуры
Проанализируем важный нюанс: функция Сообщить() выводит данные не в консоль конфигуратора, а в специальное Окно сообщений в пользовательском режиме "1С:Предприятие". Если вы его не видите, проверьте меню Вид -> Окно сообщений в запущенной программе.
Выясним, как правильно запустить отладку, чтобы иметь возможность идти по шагам:
Сформировать() и нажмем F9. Появится красная отметка.F5 в конфигураторе. Запустится "1С:Предприятие".TestMetadata.ert.В этот момент фокус автоматически вернется в конфигуратор (если он был запущен в режиме отладки), и выполнение программы остановится на вашей точке. Теперь мы можем использовать стандартные инструменты отладки:
F10 — шаг без захода в процедуры.F11 — шаг с заходом внутрь функций.Ctrl+F2, чтобы открыть окно, куда можно вписать имя любой переменной (например, Номер или ИмяСправочника) и увидеть ее текущее значение.Для разработчика на C# важно помнить, что 1С 7.7 — это язык с мягкой типизацией. Рассмотрим пример из обсуждения: Сообщить("Текст: " + Значение). Если Значение является числом, система автоматически приведет его к строке при сложении со строковым литералом. Явное использование функции Строка() не является ошибкой, но часто избыточно.
Однако будьте осторожны: если вы допустите ошибку в имени метода (например, напишете Метаданные.Справочники() вместо Метаданные.Справочник()), конфигуратор не выдаст ошибку при сохранении. Ошибка "Объект не обнаружен" возникнет только в момент выполнения кода. Именно поэтому навык работы с отладчиком и использование внешних файлов .ert являются критически важными для выживания в экосистеме 7.7.