Требования по локализации модулей
--------------------------------------------------------------------------------
Если в модулях конфигурации встречаются строки, предназначенные для пользовательского интерфейса (сообщения пользователю, надписи в формах, названия и подсказки команд и т.п.) необходимо обеспечить возможность локализации таких строк.
Для этого необходимо применять функцию НСтр() вместо прямого использования строковых литералов. Иное использование строк, предназначенных для пользовательского интерфейса, не допускается.
В том случае если строка является составной и включает в себя части, зависящие от тех или иных условий, тем не менее, настоятельно рекомендуется использовать логически завершенные, целостные фразы. Для формирования переменной составляющей строки при этом необходимо применять замену подстрок по определенным правилам. При этом можно использовать как функцию СтрЗаменить, так и предусмотреть в конфигурации специально предназначенную для этого функцию.
Неправильно:
СообщениеОНехватке = "Не хватает товара " + НаименованиеТовара + " на складе " + НаименованиеСклада + "!";
СообщениеОНехватке = НСтр("ru='Не хватает товара %Товар% на складе %Склад%!'")
СтрЗаменить(СообщениеОНехватке, "%Товар%", НаименованиеТовара);
СтрЗаменить(СообщениеОНехватке, "%Склад%", НаименованиеСклада);
Сообщить(НСтр("ru='Переменная типа ""Строка""'"));
Сообщить(НСтр("ru=Переменная типа ""Строка"""));
Сообщить(НСтр("ru=""Переменная типа ""Строка"""""));
ТекстСообщения = НСтр("ru = 'Остаток выданных подотчетому лицу денежных средств:'") + " " + ВыборкаИзРезультатаЗапроса.ОстатокУПодотчетногоЛица;
ТекстСообщения = НСтр("ru = 'Остаток выданных подотчетому лицу денежных средств: '") + ВыборкаИзРезультатаЗапроса.ОстатокУПодотчетногоЛица;
ЗапросПоВерсиям = Новый Запрос("
|ВЫБРАТЬ
|Версии.Ссылка,
|ВЫБОР КОГДА Версии.Выпущена = ИСТИНА
| ТОГДА &ТекстВыпущеннойВерсии
| ИНАЧЕ &ТекстНеВыпущеннойВерсии
|КОНЕЦ КАК ТекстПояснения
| ИЗ
| Справочник.Версии КАК Версии");
ЗапросПоВерсиям.УстановитьПараметр("&ТекстВыпущеннойВерсии", НСтр("ru='(выпущена)'"));
ЗапросПоВерсиям.УстановитьПараметр("&ТекстНеВыпущеннойВерсии", НСтр("ru='(в разработке)'"));
ЗапросПоВерсиям = Новый Запрос("
|ВЫБРАТЬ
|Версии.Ссылка,
|ВЫБОР КОГДА Версии.Выпущена = ИСТИНА
| ТОГДА ""(выпущена)""
| ИНАЧЕ ""(в разработке)""
|КОНЕЦ КАК ТекстПояснения
| ИЗ
| Справочник.Версии КАК Версии");
Тексты модулей
--------------------------------------------------------------------------------
Тексты модулей должны быть написаны на русском языке.
Размер табуляции стандартный (4 символа).
Программные модули не должны иметь неиспользуемых процедур и функций.
Программные модули не должны иметь закомментированных фрагментов кода.
Тексты модулей оформляются по принципу "один оператор в одной строке". Наличие нескольких операторов допускается только для "однотипных" операторов присваивания, например:
А = 0; Б = 0; С = 0;
НайденныеОшибки.Колонки.Добавить("Номер"); // для совместимости
// Инициализируем переменные для выполнения расчетов.
ТекущаяДата = ОбщегоНазначения.ПолучитьРабочуюДату();
ТекущийГод = Год(ТекущаяДата);
ТекущийМесяц = Месяц(ТекущаяДата);
ТекущаяНеделя = НеделяГода(ТекущаяДата);
ТекущийДень = День(ТекущаяДата);
Структура модуля
--------------------------------------------------------------------------------
В программном модуле в общем случае могут присутствовать следующие разделы в приведенной ниже последовательности:
• заголовок модуля;
• раздел описания переменных;
• процедуры и функции модуля;
• обработчики событий элементов формы;
• обработчики событий;
• раздел инициализации.
Некоторые разделы могут присутствовать только в модулях определенного вида. Например, обработчики событий элементов форм могут присутствовать только в модулях форм, а раздел описания переменных и раздел инициализации не могут быть определены в неглобальных общих модулях, модулях менеджеров объектов, наборов записей, значений констант и модуле сеанса.
Допускается располагать процедуры и функции в особом порядке, если такое расположение лучше иллюстрирует логику работы модуля. Например, если некоторая процедура вызывается из обработчика события элемента формы, то правильным будет расположить их одну за другой, а не "разносить" в разные разделы.
Заголовок модуля
Заголовок модуля представляет собой комментарий в самом начале модуля.
В заголовке модуля приводится его краткое описание и условия применения.
Для общих модулей заголовок является обязательным.
Раздел описания переменных
Переменным модуля обычного приложения, модуля управляемого приложения и внешнего соединения назначается префикс "гл".
Экспортные переменные модуля должны быть снабжены комментарием, достаточным для понимания их назначения. Для не экспортных переменных наличие комментария желательно, но не обязательно.
Комментарий рекомендуется размещать в той же строке, где объявляется переменная.
Пример:
Перем глВалютаУчета Экспорт; // Валюта, в которой ведется учет
Перем глАдресПоддержки Экспорт; // Адрес электронной почты, куда направляются сообщения об ошибках
Описание процедур и функций
--------------------------------------------------------------------------------
Процедуры и функции рекомендуется комментировать.
Обязательного комментирования требуют экспортные процедуры и функции.
Прочие процедуры и функции, в том числе обработчики событий, рекомендуется комментировать если требуется пояснить назначение процедуры (функции) или особенности её работы. Если процедура(функция) не сложна для понимания и ее назначение и порядок работы следуют из ее названия и имен формальных параметров, комментарий можно не писать. Следует избегать комментариев, не дающих дополнительных пояснений о работе процедуры(функции).
Комментарий размещается перед объявлением процедуры(функции) и имеет следующий формат:
Секция "Описание"
Содержит словесное краткое описание назначения и/или принципов работы процедуры(функции).
Секция "Параметры"
Описывает параметры процедуры(функции). Если их нет, секция пропускается. Предваряется строкой "Параметры:".
Секция "Возвращаемое значение"
Описывает тип и содержание возвращаемого значения функции. Предваряется строкой "Возвращаемое значение:". Для процедур эта секция отсутствует.
Пример:
// Проверяет существование файлов - архивов данных в переданном каталоге.
//
// Параметры:
// ПутьККаталогу - Строка - путь к каталогу, который необходимо
// просмотреть на наличие файлов
//
// Возвращаемое значение:
// Строка.
// Полный путь к файлам на диске ИТС. Если строка пустая,
// значит файлов на диске ИТС не найдено.
//
Функция ПроверитьНаличиеФайловНаДискеИТС (знач ПутьКДискуИТС) Экспорт
Функция ПроверитьТипРеквизитаОбъекта(Объект, ИмяРеквизита, ТипЗначения)
Функция ВыполнитьПроверку(Параметр1, Рекв, ТЗ)
Процедура ЗагрузитьКонтрагента()
...
Функция ПолучитьПутьКФайлуОписаниюДанных()
Процедура ЗагрузкаКонтрагента()
...
Функция ПутьКФайлуОписаниюДанных()
...
Функция НамПодходит()
Правила образования имен переменных
--------------------------------------------------------------------------------
Имена переменных следует образовывать от терминов предметной области таким образом, чтобы из имени переменной было понятно ее назначение.
Имена следует образовывать путем удаления пробелов между словами. При этом, каждое слово в имени пишется с прописной буквы. Предлоги и местоимения из одной буквы также пишутся прописными буквами.
Пример:
Перем ДиалогРаботыСКаталогом; // Диалог работы с каталогом
Перем КоличествоПачекВКоробке; // Количество пачек в коробке
Перем ЕстьОшибки; // Признак наличия ошибок в процедуре.
Перем ЭтоТоварТара; // Признак, что товар относится к возвратной таре.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua