Функции и процедуры 1С
Функции и процедуры 1С
Функция — это именованный блок кода, который выполняет вычисления или действия с данными и обязательно возвращает результат своего выполнения. Результат может быть числом, строкой, булевым значением, ссылкой на объект базы данных или сложной структурой данных. Вызов функции происходит в выражении, где полученное значение используется для дальнейших операций. Синтаксис объявления функции начинается с ключевого слова Функция, за которым следует имя функции и список параметров в скобках. Тело функции содержит набор инструкций, завершающихся оператором Возврат, передающим результат вызывающей стороне.
Процедура — это именованный блок кода, который выполняет действия, но не возвращает никакого значения. Основная задача процедуры заключается в изменении состояния объектов, выполнении операций ввода-вывода, записи данных в базу или модификации внешних переменных. Объявление процедуры начинается с ключевого слова Процедура. В отличие от функции, тело процедуры не содержит оператора Возврат с результатом, так как результат работы передается через изменение аргументов или глобальных переменных.
Различия между функциями и процедурами
Различие между этими двумя конструкциями является фундаментальным для понимания архитектуры программ на платформе 1С:Предприятие. Это различие определяет способ использования кода в бизнес-логике приложения.
Функция всегда имеет точку входа и точку выхода с возвратом данных. Значение, возвращаемое функцией, является единственным способом передачи результата наружу. Если функция не содержит оператора Возврат, платформа автоматически возвращает пустое значение (Null) или значение по умолчанию типа данных, соответствующего контексту использования.
Процедура фокусируется на процессе выполнения действий. Она может выполнять множество побочных эффектов: менять содержимое полей документа, вызывать диалоговые окна, отправлять сообщения пользователю, изменять конфигурацию системы. Отсутствие возврата значения означает, что результат работы процедуры нельзя использовать непосредственно в математических выражениях или условиях.
Пример использования функции:
Результат = ПолучитьДатуЗаказа(ИдентификаторДокумента);
Если Результат > ТекущаяДата() Тогда
Сообщить("Заказ просрочен");
КонецЕсли;
В этом примере функция ПолучитьДатуЗаказа возвращает конкретное значение даты, которое сравнивается с текущей датой. Без возврата значения такая логика была бы невозможна.
Пример использования процедуры:
ОбработатьЗаказ(ИдентификаторДокумента);
Сообщить("Обработка завершена");
Здесь процедура ОбработатьЗаказ выполняет серию действий внутри себя. Код после вызова продолжает выполняться независимо от того, что именно сделала процедура.
Синтаксис объявления функций
Структура объявления функции в языке 1С строго регламентирована. Ключевые элементы включают имя функции, список формальных параметров, тип возвращаемого значения (опционально) и тело функции.
Имя функции должно быть уникальным в пределах области видимости модуля. Оно не должно совпадать с именами встроенных функций платформы или другими пользовательскими функциями в той же области. Имена могут содержать кириллицу, цифры и знак подчеркивания, но не должны начинаться с цифр.
Параметры функции объявляются в круглых скобках после имени. Каждый параметр состоит из имени и типа данных. Тип данных указывается через двоеточие после имени параметра. Если тип не указан, платформа пытается определить его автоматически при присваивании первого значения, но явное указание типов рекомендуется для надежности кода.
Оператор Возврат является обязательным элементом тела функции. Он должен встречаться хотя бы один раз. Если функция имеет несколько ветвей выполнения (например, внутри конструкции Если...То...Иначе), каждая ветвь должна заканчиваться оператором Возврат. Платформа генерирует предупреждение, если компилятор обнаруживает путь выполнения без возврата значения.
Пример объявления функции с явными типами:
Функция РассчитатьСуммуНДС(Цена, Ставка НДС, Количество) Экспорт
СуммаБазы = Цена * Количество;
СуммаНДС = СуммаБазы * Ставка НДС / 100;
Возврат СуммаНДС;
КонецФункции
В данном примере функция принимает три параметра: цена, ставка налога и количество. Она возвращает рассчитанную сумму налога. Ключевое слово Экспорт делает функцию доступной для вызова из других модулей.
Особенностью языка 1С является возможность неявного указания типа возвращаемого значения. Если оператор Возврат возвращает значение определенного типа, то весь код функции считается имеющим этот тип. Однако явное указание типов параметров и возвращаемого значения повышает читаемость и позволяет избежать ошибок приведения типов.
Синтаксис объявления процедур
Структура объявления процедуры аналогична структуре функции, за исключением отсутствия необходимости в возврате значения. Ключевым словом начала является Процедура, а завершается блок ключевым словом КонецПроцедуры.
Параметры процедуры объявляются так же, как и у функций. Однако процедура может работать с параметрами, изменяющими свои значения внутри тела. Это достигается использованием спецификатора По ссылке или По значению. По умолчанию параметры передаются по значению, что означает создание копии данных. Для изменения исходного значения необходимо явно указать режим передачи.
Процедура может иметь несколько точек завершения выполнения. Оператор Возврат в процедуре используется для досрочного выхода из неё, но он не передает никаких данных. Просто прекращает выполнение текущего блока кода и возвращает управление вызывающему коду.
Пример объявления процедуры:
Процедура ЗаписатьДокумент(Документ) Экспорт
Попытка
Документ.Записать();
Сообщение = "Документ успешно сохранен";
Исключение
Сообщение = "Ошибка сохранения: " + ОписаниеОшибки();
КонецПопытки;
Сообщить(Сообщение);
КонецПроцедуры
В этом примере процедура принимает ссылку на документ, пытается его записать и выводит сообщение об успехе или ошибке. Никакое значение не возвращается, вся работа сосредоточена на выполнении действия и информировании пользователя.
Режимы передачи параметров
Режим передачи параметров определяет, как данные попадают внутрь функции или процедуры и могут ли они быть изменены снаружи. В языке 1С существуют два основных режима: передача по значению и передача по ссылке.
Передача по значению создает копию переданного значения. Изменения, внесенные в параметр внутри функции или процедуры, не влияют на исходную переменную в вызывающем коде. Этот режим подходит для простых типов данных (числа, строки, даты), когда изменение не требуется.
Передача по ссылке передает адрес памяти, где хранится значение. Любое изменение параметра внутри функции или процедуры немедленно отражается на исходной переменной. Этот режим необходим, когда нужно изменить данные, переданные в функцию, или передать сложный объект.
Спецификатор По ссылке указывает, что параметр должен передаваться по ссылке. Если спецификатор отсутствует, используется передача по значению. Для сложных типов данных, таких как объекты справочников, документов или регистров, передача по ссылке является наиболее эффективным способом, так как避免了 копирования больших объемов данных.
Пример передачи по значению:
Функция УвеличитьЧисло(Число)
Число = Число + 10;
Возврат Число;
КонецФункции
// Вызов
Значение = 5;
НовоеЗначение = УвеличитьЧисло(Значение);
// Значение останется равным 5, НовоеЗначение будет равно 15
Пример передачи по ссылке:
Процедура УвеличитьЧислоПоСсылке(По Числу)
Число = Число + 10;
КонецПроцедуры
// Вызов
Значение = 5;
УвеличитьЧислоПоСсылке(Значение);
// Значение теперь равно 15
Параметры по умолчанию
Язык 1С поддерживает объявление параметров со значениями по умолчанию. Это позволяет вызывать функцию или процедуру, передавая меньшее количество аргументов, чем указано в списке параметров. Недостающие аргументы принимают значения, указанные в объявлении.
Параметры со значениями по умолчанию должны идти в конце списка параметров. Все параметры до них должны быть обязательными. Это обеспечивает предсказуемость работы кода и упрощает вызовы функций, когда некоторые опциональные настройки используются редко.
Пример объявления функции с параметрами по умолчанию:
Функция ПолучитьСумму(Товар, Количество = 1, Скидка = 0) Экспорт
БазоваяСумма = Товар.Цена * Количество;
ИтоговаяСумма = БазоваяСумма - (БазоваяСумма * Скидка / 100);
Возврат ИтоговаяСумма;
КонецФункции
// Вызовы
Сумма1 = ПолучитьСумму(Товар1); // Количество=1, Скидка=0
Сумма2 = ПолучитьСумму(Товар1, 5); // Количество=5, Скидка=0
Сумма3 = ПолучитьСумму(Товар1, 5, 10); // Количество=5, Скидка=10
В первом вызове используются значения по умолчанию для количества и скидки. Во втором вызове меняется только количество. В третьем вызове задаются все параметры явно.
Область видимости переменных
Область видимости определяет, где переменная доступна для использования. В языке 1С существуют локальные переменные, объявленные внутри функции или процедуры, и глобальные переменные, доступные во всем модуле или даже во всей базе данных.
Локальные переменные создаются при входе в функцию или процедуру и уничтожаются при её завершении. Они недоступны вне тела функции или процедуры. Это предотвращает конфликты имен и утечку данных между разными частями программы. Локальные переменные лучше всего подходят для хранения временных значений, используемых только в рамках одного алгоритма.
Глобальные переменные объявляются в секции «Объявления» модуля перед процедурой или функцией. Они доступны для всех процедур и функций в этом модуле. Использование глобальных переменных требует осторожности, так как их изменение в одном месте может привести к неожиданным последствиям в другом.
Пример локальной переменной:
Функция ПосчитатьСреднее(МассивЧисел)
Сумма = 0;
Количество = РазмерМассива(МассивЧисел);
Для Каждого Число Из МассивЧисел Цикл
Сумма = Сумма + Число;
КонецЦикла;
Возврат Сумма / Количество;
КонецФункции
Переменные Сумма и Количество видны только внутри функции ПосчитатьСреднее.
Пример глобальной переменной:
// Секция объявлений модуля
ГлобальныйКонстанта МаксимальноеЗначение = 1000;
Процедура ПроверитьЗначение(Значение)
Если Значение > МаксимальноеЗначение Тогда
Сообщить("Превышен лимит");
КонецЕсли;
КонецПроцедуры
Переменная МаксимальноеЗначение доступна для процедуры ПроверитьЗначение.
Рекурсия в функциях
Рекурсия — это способность функции вызывать саму себя. Эта техника используется для решения задач, которые можно разбить на подзадачи того же типа. В языке 1С рекурсия полностью поддерживается и работает корректно.
Каждая рекурсивная функция должна иметь условие завершения. Без условия завершения функция будет вызывать сама себя бесконечно, пока не закончится память стека. Условие завершения обычно проверяется в начале функции или перед рекурсивным вызовом.
Пример рекурсивной функции для вычисления факториала:
Функция Факториал(Число)
Если Число <= 1 Тогда
Возврат 1;
КонецЕсли;
Возврат Число * Факториал(Число - 1);
КонецФункции
// Вызов
Результат = Факториал(5); // Вернет 120
В этом примере функция вызывает сама себя с уменьшенным значением аргумента до тех пор, пока не достигнет базового случая (число меньше или равно 1).
Пример рекурсивной функции для обхода древовидной структуры:
Процедура ОбойтиДерево(Узел, Уровень)
Сообщить(Строка(Уровень) + " " + Узел.Название);
Для Каждого ДочернийУзел Из Узел.Дочерние Элементы Цикл
ОбойтиДерево(ДочернийУзел, Уровень + 1);
КонецЦикла;
КонецПроцедуры
Эта процедура вызывает сама себя для каждого дочернего узла, увеличивая уровень вложенности.
Обработка исключений в функциях и процедурах
Конструкция Попытка...Исключение позволяет обрабатывать ошибки, возникающие во время выполнения кода. Эта конструкция применима как к функциям, так и к процедурам. При возникновении ошибки управление передается в блок Исключение, где можно выполнить обработку ошибки, вывести сообщение или выполнить альтернативный код.
В функциях важно помнить, что ошибка может прервать выполнение и предотвратить возврат значения. Если функция должна гарантировать возврат значения даже при ошибке, необходимо обернуть критический код в блок Попытка...Исключение и вернуть значение по умолчанию или специальное значение ошибки.
Пример обработки исключения в функции:
Функция ПолучитьДанные(Идентификатор)
Попытка
Запрос = Новый Запрос;
Запрос.Текст = "Выбрать Идентификатор Из Справочник.Товары Где Идентификатор = &ID";
Запрос.УстановитьПараметр("ID", Идентификатор);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Пусто() Тогда
Возврат НеОпределено;
КонецЕсли;
Возврат Выборка.Идентификатор;
Исключение
Сообщить("Ошибка получения данных: " + ОписаниеОшибки());
Возврат НеОпределено;
КонецПопытки;
КонецФункции
При возникновении ошибки функция вернет НеОпределено, вместо того чтобы завершить работу программы.
Пример обработки исключения в процедуре:
Процедура СохранитьДанные(Данные)
Попытка
Данные.Записать();
Сообщить("Данные сохранены");
Исключение
Сообщить("Не удалось сохранить данные: " + ОписаниеОшибки());
// Можно попытаться повторить сохранение или сообщить пользователю
КонецПопытки;
КонецПроцедуры
Встроенные функции и стандартная библиотека
Платформа 1С:Предприятие предоставляет обширную библиотеку встроенных функций, которые реализуют типичные операции. Эти функции охватывают работу с датами, строками, числами, массивами, объектами базы данных и системными возможностями.
Функции работы с датами позволяют получать текущую дату, вычислять разницу между датами, форматировать даты в различные строковые представления. Функции работы со строками обеспечивают поиск подстрок, замену символов, разбиение строк, преобразование регистра.
Функции работы с числами предоставляют возможности округления, возведения в степень, вычисления корней, генерации случайных чисел. Функции работы с коллекциями позволяют добавлять элементы, удалять их, сортировать, искать и фильтровать.
Пример использования встроенной функции даты:
ТекущаяДата = ТекущаяДата();
ДатаЧерезМесяц = ДобавитьМесяц(ТекущаяДата(), 1);
Пример использования встроенной функции строки:
Имя = "Александр";
ВерхнийРегистр = ВерхнийРегистр(Имя); // АЛЕКСАНДР
НижнийРегистр = НижнийРегистр(Имя); // александр
Модули и область применения функций
Функции и процедуры могут быть размещены в различных типах модулей: модуль объекта, модуль формы, общий модуль, модуль расширения. От места размещения зависит область видимости и доступность кода.
Общие модули содержат функции и процедуры, доступные во всей базе данных. Они являются идеальным местом для размещения универсальной логики, которую используют разные части приложения. Ключевое слово Экспорт в объявлении делает элемент доступным для вызова из других модулей.
Модули объектов содержат методы, связанные с конкретными объектами конфигурации. Например, документы имеют свои модули с методами для проведения, печати, отмены проведения. Эти методы вызываются автоматически при взаимодействии с объектом.
Модули форм содержат обработчики событий, связанные с элементами интерфейса. Здесь размещаются процедуры, реагирующие на действия пользователя: нажатие кнопок, ввод текста, выбор элементов списка.
Пример общего модуля:
// Общий модуль "ЛогикаРасчетов"
Функция РассчитатьНалог(Сумма, Ставка) Экспорт
Возврат Сумма * Ставка / 100;
КонецФункции
Процедура ПроверитьЛимит(Сумма) Экспорт
Если Сумма > 100000 Тогда
Сообщить("Превышен лимит");
КонецЕсли;
КонецПроцедуры
Оптимизация производительности функций
Производительность функций и процедур важна для быстродействия всей системы. Неправильное использование конструкций может привести к замедлению работы приложения, особенно при обработке больших объемов данных.
Избегание лишних обращений к базе данных внутри циклов является критически важным правилом. Вместо многократных запросов к базе данных в цикле следует собрать все необходимые данные одним запросом и обработать их в памяти.
Использование локальных переменных вместо глобальных внутри функций снижает накладные расходы на доступ к памяти. Переменные, объявленные внутри функции, находятся в стеке и доступны быстрее, чем глобальные переменные.
Оптимизация работы с коллекциями включает использование эффективных структур данных. Массивы подходят для последовательного доступа, списки — для частых вставок и удалений, хэш-таблицы — для быстрого поиска по ключу.
Пример неэффективного кода:
Для Каждого Запись Из Таблица Цикл
Запрос = Новый Запрос;
Запрос.Текст = "Выбрать Сумму Из Документы.Продажа Где Ид = &ID";
Запрос.УстановитьПараметр("ID", Запись.Идентификатор);
Выборка = Запрос.Выполнить().Выбрать();
// ... обработка
КонецЦикла
Каждая итерация цикла выполняет новый запрос к базе данных, что значительно замедляет работу.
Пример оптимизированного кода:
Запрос = Новый Запрос;
Запрос.Текст = "Выбрать Идентификатор, Сумма Из Документы.Продажа";
Выборка = Запрос.Выполнить().Выбрать();
ВсеДанные = Новый ТаблицаЗначений;
Пока Выборка.Следующий() Цикл
ВсеДанные.Добавить();
ВсеДанные.ПоследняяСтрока().Идентификатор = Выборка.Идентификатор;
ВсеДанные.ПоследняяСтрока().Сумма = Выборка.Сумма;
КонецЦикла;
// Обработка данных из таблицы в памяти
Для Каждого Строка Из ВсеДанные Цикл
// Быстрая обработка без обращений к БД
КонецЦикла
Стандарты именования и оформления кода
Соблюдение стандартов именования облегчает чтение и поддержку кода. Имена функций и процедур должны быть осмысленными и описывать выполняемое действие. Рекомендуется использовать глаголы для названий процедур и существительные для названий функций, возвращающих данные.
Имена должны быть написаны на русском языке с использованием слов, понятных предметной области. Избегание сокращений и аббревиатур, кроме общепринятых, делает код более понятным для новых разработчиков.
Примеры хороших имен:
ЗаписатьДокумент— процедура записи документа;ПолучитьОстатокТовара— функция получения остатка;РассчитатьСуммуНДС— функция расчета налога;ОтправитьУведомление— процедура отправки уведомления.
Оформление кода включает правильное выравнивание, использование отступов и разделение логических блоков. Каждая функция или процедура должна быть достаточно короткой, чтобы поместиться на экране монитора без прокрутки. Длинные блоки кода следует разбивать на вспомогательные функции.
Комментарии должны объяснять сложные моменты логики, а не дублировать очевидный код. Хороший комментарий отвечает на вопрос «почему сделано именно так», а не «что делает эта строка».
Тестирование функций и процедур
Тестирование кода является важной частью разработки. В среде 1С:Предприятия можно создавать тестовые сценарии для проверки корректности работы функций и процедур. Тесты должны покрывать основные пути выполнения, граничные случаи и ситуации возникновения ошибок.
Использование конструкторов тестов позволяет автоматизировать проверку результатов. Тестовые данные должны быть изолированы от рабочих данных, чтобы не загрязнять базу. После завершения тестирования результаты анализируются, и при обнаружении несоответствий код исправляется.
Пример простого теста функции:
Функция ТестРассчитатьНалог()
Результат1 = РассчитатьНалог(100, 20);
Если Результат1 <> 20 Тогда
Сообщить("Ошибка теста 1");
Возврат Ложь;
КонецЕсли;
Результат2 = РассчитатьНалог(500, 10);
Если Результат2 <> 50 Тогда
Сообщить("Ошибка теста 2");
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
Такой тест проверяет правильность расчетов для нескольких входных значений.
Интеграция с внешними системами
Функции и процедуры часто используются для интеграции с внешними системами. Они могут выполнять HTTP-запросы, работать с файлами, подключаться к внешним базам данных или сервисам.
Библиотеки стандартных подключений предоставляют готовые функции для работы с сетью и криптографией. Эти функции упрощают создание интеграционных решений и снижают риск ошибок.
Пример вызова внешнего сервиса:
Функция ПолучитьДанныеИзИнтернета(URL)
Попытка
Клиент = Новый HTTPСервисКлиент();
Ответ = Клиент.Получить(URL);
Если Ответ.Статус == 200 Тогда
Возврат Ответ.ТелоКакСтрока();
КонецЕсли;
Исключение
Сообщить("Ошибка запроса: " + ОписаниеОшибки());
Возврат "";
КонецПопытки;
КонецФункции
Эта функция получает данные по URL и возвращает их содержимое. При ошибке она возвращает пустую строку и выводит сообщение об ошибке.
Работа с событиями и триггерами
Процедуры могут быть связаны с событиями объектов. При изменении данных, проведении документа или удалении записи запускаются соответствующие обработчики событий. Эти процедуры называются триггерами или обработчиками событий.
Обработчики событий имеют фиксированные имена и сигнатуры, определенные платформой. Их цель — выполнить дополнительные действия при определенных событиях в жизни объекта.
Пример обработчика события:
Процедура ПередЗаписью(Отказ, Режим)
Если Отказ Тогда
Возврат;
КонецЕсли;
Если Сумма < 0 Тогда
Отказ = Истина;
Предупреждение("Сумма не может быть отрицательной");
КонецЕсли;
КонецПроцедуры
Эта процедура срабатывает перед записью документа. Если сумма отрицательная, она запрещает запись, устанавливая флаг отказа.
Управление ресурсами и памятью
Функции и процедуры управляют выделением и освобождением памяти. Платформа автоматически отслеживает использование памяти и освобождает неиспользуемые объекты. Сборщик мусора удаляет объекты, на которые нет ссылок.
Избежание создания лишних объектов внутри циклов помогает снизить нагрузку на сборщик мусора. Повторное использование объектов, где это возможно, улучшает производительность.
Пример создания объектов:
Для Каждого Элемент Из Коллекция Цикл
Объект = Новый Объект();
// Использование объекта
Объект.Уничтожить(); // Освобождение ресурсов
КонецЦикла
Хотя платформа часто управляет памятью автоматически, явное освобождение ресурсов, таких как файлы или сетевые соединения, является хорошей практикой.
Безопасность и права доступа
Функции и процедуры могут ограничиваться правами доступа. Система прав пользователей контролирует, кто может вызывать определенные методы. Это обеспечивает безопасность данных и целостность бизнес-процессов.
Права доступа настраиваются в конфигураторе. Для каждой функции или процедуры можно указать, какие пользователи или роли имеют право на её вызов. Это предотвращает несанкционированный доступ к чувствительным данным.
Пример ограничения доступа:
Функция ПолучитьСекретныеДанные() Экспорт
Если Не Пользователь.ИмеетПраво("ПросмотрСекретныхДанных") Тогда
Сообщить("Доступ запрещен");
Возврат НеОпределено;
КонецЕсли;
// Возврат данных
Возврат Данные;
КонецФункции
Эта функция проверяет права пользователя перед возвратом секретных данных.
Расширение функциональности через расширения
Функции и процедуры могут быть расширены с помощью механизмов расширения конфигурации. Это позволяет добавлять новую функциональность без изменения основной конфигурации.
Расширения содержат свои модули с функциями и процедурами, которые вызываются в нужных местах основной программы. Это обеспечивает гибкость и возможность адаптации системы под новые требования.
Пример расширения:
// Модуль расширения
Функция ДополненнаяОбработка(Данные) Экспорт
// Дополнительная логика
Данные.ДополнительноеПоле = "Значение";
Возврат Данные;
КонецФункции
Эта функция добавляет новое поле к данным, используя механизм расширения.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Платформа 1С — Предприятие представляет собой фундаментальную программную среду, предназначенную для запуска специализированных бизнес-приложений. Это комплекс библиотек, механизмов управления… Социальное влияние платформы проявляется также в поддержке государственных проектов. Платформа используется для ведения электронных реестров, управления социальными выплатами и обеспечения… Экосистема 1С представляет собой комплексную совокупность программных продуктов, инструментов разработки, сервисов, инфраструктуры и человеческого капитала, объединенных вокруг единой технологической… Пагинация ограничивает количество записей, загружаемых за один раз. Это позволяет отображать большие списки без перегрузки памяти клиента. Пагинация используется в таблицах и списках результатов. Синтаксис языка программирования 1С — Предприятие — это строгий набор правил, определяющих структуру допустимых конструкций кода. Эти правила регулируют порядок написания ключевых слов, операторов,… Типизация, набор правил определения типа данных значений языка. Поток выполнения — это последовательность инструкций, которые платформа 1С — Предприятие выполняет для обработки бизнес-логики приложения. Система управляет этим процессом через механизмы синхронного… Классы объектов данных — это реализации классов метаданных, создаваемые во время выполнения программы. Каждый экземпляр объекта данных принадлежит к определенному классу и наследует все его свойства… Данные — это конкретные записи, созданные пользователями или автоматически системой в рамках определённых объектов. Каждая запись имеет уникальный идентификатор и соответствует описанию в метаданных. Обработка ошибок — это механизм платформы 1С — Предприятие, предназначенный для перехвата и обработки ситуаций, возникающих при выполнении кода во время работы программы. Ошибки возникают, когда… Интеграция — это процесс объединения разрозненных информационных систем, приложений и баз данных в единый комплекс для обеспечения беспрепятственного обмена данными и выполнения согласованных… Гайд по установке и настройке с написанием первой программы и её запуском.Платформа 1С
История 1С
Экосистема 1С
Архитектура и мета-объекты 1С
Синтаксис и пунктуация 1С
Переменные и типы данных 1С
Управление потоком выполнения 1С
Объекты и классы 1С
Работа с базами данных 1С
Обработка ошибок 1С
Интеграция и взаимодействие 1С
Первая программа на 1С