Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Оформление модулей          
Vofka Подменю пользователя
сообщение 20.09.10, 12:58
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Требования по локализации модулей

--------------------------------------------------------------------------------

Если в модулях конфигурации встречаются строки, предназначенные для пользовательского интерфейса (сообщения пользователю, надписи в формах, названия и подсказки команд и т.п.) необходимо обеспечить возможность локализации таких строк.
Для этого необходимо применять функцию НСтр() вместо прямого использования строковых литералов. Иное использование строк, предназначенных для пользовательского интерфейса, не допускается.

В том случае если строка является составной и включает в себя части, зависящие от тех или иных условий, тем не менее, настоятельно рекомендуется использовать логически завершенные, целостные фразы. Для формирования переменной составляющей строки при этом необходимо применять замену подстрок по определенным правилам. При этом можно использовать как функцию СтрЗаменить, так и предусмотреть в конфигурации специально предназначенную для этого функцию.
Неправильно:

СообщениеОНехватке = "Не хватает товара " + НаименованиеТовара + " на складе " + НаименованиеСклада + "!";



Правильно:

СообщениеОНехватке = НСтр("ru='Не хватает товара %Товар% на складе %Склад%!'") 
СтрЗаменить(СообщениеОНехватке, "%Товар%", НаименованиеТовара);
СтрЗаменить(СообщениеОНехватке, "%Склад%", НаименованиеСклада);




В функции НСтр() строка ограничивается символами одинарных кавычек.
Такое требование обусловлено частым использованием двойных кавычек в строковых литералах.
Правильно:

Сообщить(НСтр("ru='Переменная типа ""Строка""'"));



Неправильно:

Сообщить(НСтр("ru=Переменная типа ""Строка""")); 
Сообщить(НСтр("ru=""Переменная типа ""Строка"""""));




В том случае, если все же применяется не замена строк в строке-шаблоне, а сложение строк, то неязыковые символы (пробелы, табуляция и пр.) в начале и конце строк необходимо выделять в отдельные строковые литералы.
Правильно:

ТекстСообщения = НСтр("ru = 'Остаток выданных подотчетому лицу денежных средств:'") + " " + ВыборкаИзРезультатаЗапроса.ОстатокУПодотчетногоЛица;



Неправильно:

ТекстСообщения = НСтр("ru = 'Остаток выданных подотчетому лицу денежных средств: '") + ВыборкаИзРезультатаЗапроса.ОстатокУПодотчетногоЛица;




В редких случаях строковые литералы из текстов запросов так же могут оказаться частью пользовательского интерфейса. В таких случаях строковые литералы необходимо выносить из текста запроса в параметры.
Правильно:

ЗапросПоВерсиям = Новый Запрос(" 
|ВЫБРАТЬ
|Версии.Ссылка,
|ВЫБОР КОГДА Версии.Выпущена = ИСТИНА
|    ТОГДА &ТекстВыпущеннойВерсии
|    ИНАЧЕ &ТекстНеВыпущеннойВерсии
|КОНЕЦ КАК ТекстПояснения
| ИЗ
|     Справочник.Версии КАК Версии");

ЗапросПоВерсиям.УстановитьПараметр("&ТекстВыпущеннойВерсии", НСтр("ru='(выпущена)'"));
ЗапросПоВерсиям.УстановитьПараметр("&ТекстНеВыпущеннойВерсии", НСтр("ru='(в разработке)'"));



Неправильно:

ЗапросПоВерсиям = Новый Запрос(" 
|ВЫБРАТЬ
|Версии.Ссылка,
|ВЫБОР КОГДА Версии.Выпущена = ИСТИНА
|    ТОГДА ""(выпущена)""
|    ИНАЧЕ ""(в разработке)""
|КОНЕЦ КАК ТекстПояснения
| ИЗ
|     Справочник.Версии КАК Версии");

Vofka Подменю пользователя
сообщение 20.09.10, 13:16
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Тексты модулей

--------------------------------------------------------------------------------

Тексты модулей должны быть написаны на русском языке.

Размер табуляции стандартный (4 символа).

Программные модули не должны иметь неиспользуемых процедур и функций.

Программные модули не должны иметь закомментированных фрагментов кода.

Тексты модулей оформляются по принципу "один оператор в одной строке". Наличие нескольких операторов допускается только для "однотипных" операторов присваивания, например:

А = 0; Б = 0; С = 0;



Текст модуля должен быть оформлен синтаксическим отступом. Для синтаксического отступа используется табуляция.

С крайней левой позиции должны начинаться только:
- операторы Процедура, КонецПроцедуры, Функция, КонецФункции;
- операторы предварительного объявления процедур и функций;
- заголовки(описания) процедур и функций;
- объявление переменных модуля;
- операторы "раздела основной программы" (с учетом синтаксического отступа).

Процедуры НачатьТранзакцию() и ЗафиксироватьТранзакцию() не являются операторными скобками, поэтому текст внутри этих процедур не сдвигается.

При длине строки более 120 символов следует использовать переносы. Строки длиннее 120 символов делать не рекомендуется, за исключением тех случаев, когда перенос невозможен.

Тексты модулей должны содержать комментарии.
Небольшие комментарии пишутся в конце строки, которую комментируют, например:

НайденныеОшибки.Колонки.Добавить("Номер"); // для совместимости



Большие комментарии или комментарии к фрагменту кода пишутся перед комментируемым кодом в отдельной строке.
Комментарии записываются по правилам русского языка, то есть должны начинаться с большой буквы и заканчиваться точкой. Текст выравнивается по левой границе комментируемого фрагмента. Межу символами комментария "//" и текстом комментария должен быть пробел.

    // Инициализируем переменные для выполнения расчетов. 
    ТекущаяДата    = ОбщегоНазначения.ПолучитьРабочуюДату();
    ТекущийГод     = Год(ТекущаяДата);
    ТекущийМесяц   = Месяц(ТекущаяДата);
    ТекущаяНеделя  = НеделяГода(ТекущаяДата);
    ТекущийДень    = День(ТекущаяДата);

Vofka Подменю пользователя
сообщение 20.09.10, 13:17
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Структура модуля

--------------------------------------------------------------------------------

В программном модуле в общем случае могут присутствовать следующие разделы в приведенной ниже последовательности:
• заголовок модуля;
• раздел описания переменных;
• процедуры и функции модуля;
• обработчики событий элементов формы;
• обработчики событий;
• раздел инициализации.

Некоторые разделы могут присутствовать только в модулях определенного вида. Например, обработчики событий элементов форм могут присутствовать только в модулях форм, а раздел описания переменных и раздел инициализации не могут быть определены в неглобальных общих модулях, модулях менеджеров объектов, наборов записей, значений констант и модуле сеанса.
Допускается располагать процедуры и функции в особом порядке, если такое расположение лучше иллюстрирует логику работы модуля. Например, если некоторая процедура вызывается из обработчика события элемента формы, то правильным будет расположить их одну за другой, а не "разносить" в разные разделы.

Заголовок модуля
Заголовок модуля представляет собой комментарий в самом начале модуля.
В заголовке модуля приводится его краткое описание и условия применения.
Для общих модулей заголовок является обязательным.

Раздел описания переменных
Переменным модуля обычного приложения, модуля управляемого приложения и внешнего соединения назначается префикс "гл".
Экспортные переменные модуля должны быть снабжены комментарием, достаточным для понимания их назначения. Для не экспортных переменных наличие комментария желательно, но не обязательно.
Комментарий рекомендуется размещать в той же строке, где объявляется переменная.
Пример:

Перем глВалютаУчета Экспорт;    // Валюта, в которой ведется учет 
Перем глАдресПоддержки Экспорт; // Адрес электронной почты, куда направляются сообщения об ошибках




Процедуры и функции модуля
Процедуры и функции, которые не являются обработчиками событий размещаются сразу же после описания переменных. Процедуры и функции, связанные между собой по характеру работы или логике работы рекомендуется располагать вместе.

Обработчики событий элементов формы
После процедур и функций в модуле формы располагают обработчики событий элементов формы. Рекомендуется обработчики одного элемента формы располагать вместе, придерживаясь, при этом, порядка их следования в описании встроенного языка.
У каждого события должен быть свой обработчик. Если одинаковые действия должны выполняться при возникновении событий в разных элементах формы следует:
• создать отдельную процедуру (функцию), выполняющую необходимые действия;
• для каждого элемента формы создать отдельный обработчик с именем, назначаемым по умолчанию;
• из каждого обработчика вызвать требуемую процедуру (функцию).

Обработчики событий
Последними из процедур располагаются обработчики событий модуля (формы, объекта, менеджера объекта и т.д.). Для них также рекомендуется придерживаться порядка следования, приведенного в описании встроенного языка.

Раздел инициализации
Раздел инициализации содержит операторы, инициализирующие переменные модуля или объект (форму).

Vofka Подменю пользователя
сообщение 20.09.10, 13:18
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Описание процедур и функций

--------------------------------------------------------------------------------

Процедуры и функции рекомендуется комментировать.

Обязательного комментирования требуют экспортные процедуры и функции.

Прочие процедуры и функции, в том числе обработчики событий, рекомендуется комментировать если требуется пояснить назначение процедуры (функции) или особенности её работы. Если процедура(функция) не сложна для понимания и ее назначение и порядок работы следуют из ее названия и имен формальных параметров, комментарий можно не писать. Следует избегать комментариев, не дающих дополнительных пояснений о работе процедуры(функции).

Комментарий размещается перед объявлением процедуры(функции) и имеет следующий формат:

Секция "Описание"
Содержит словесное краткое описание назначения и/или принципов работы процедуры(функции).

Секция "Параметры"
Описывает параметры процедуры(функции). Если их нет, секция пропускается. Предваряется строкой "Параметры:".

Секция "Возвращаемое значение"
Описывает тип и содержание возвращаемого значения функции. Предваряется строкой "Возвращаемое значение:". Для процедур эта секция отсутствует.


Пример:
// Проверяет существование файлов - архивов данных в переданном каталоге. 
//
// Параметры:
// ПутьККаталогу - Строка - путь к каталогу, который необходимо
// просмотреть на наличие файлов
//
// Возвращаемое значение:
// Строка.
// Полный путь к файлам на диске ИТС. Если строка пустая,
// значит файлов на диске ИТС не найдено.
//
Функция ПроверитьНаличиеФайловНаДискеИТС (знач ПутьКДискуИТС) Экспорт




Следует стремиться к тому, чтобы имена процедур и функций и имена формальных параметров были "говорящими" (документировали сами себя).

Правильно:

Функция ПроверитьТипРеквизитаОбъекта(Объект, ИмяРеквизита, ТипЗначения)




Неправильно:

Функция ВыполнитьПроверку(Параметр1, Рекв, ТЗ)





Имена процедур и функций в общем случае, следует образовывать от неопределенной формы глагола, например:

Правильно:

Процедура ЗагрузитьКонтрагента()  
...  
Функция ПолучитьПутьКФайлуОписаниюДанных()




Неправильно:

Процедура ЗагрузкаКонтрагента()    
...  
Функция ПутьКФайлуОписаниюДанных()  
...  
Функция НамПодходит()




Исключение составляют функции, которые предназначены только для проверки истинности некоторого факта, и которые возвращают в качестве результата проверки значение типа Булево.
Имена таких функций образуются из написания проверяемого факта.
Например, если функция должна проверить, что в переданной строке присутствуют только цифры, то она может называться ТолькоЦифрыВСтроке().

Описание процедур и функций должны отделятся друг от друга в тексте модуля пустыми строками.

Vofka Подменю пользователя
сообщение 20.09.10, 13:19
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

Правила образования имен переменных

--------------------------------------------------------------------------------

Имена переменных следует образовывать от терминов предметной области таким образом, чтобы из имени переменной было понятно ее назначение.

Имена следует образовывать путем удаления пробелов между словами. При этом, каждое слово в имени пишется с прописной буквы. Предлоги и местоимения из одной буквы также пишутся прописными буквами.
Пример:
Перем ДиалогРаботыСКаталогом;  // Диалог работы с каталогом 
Перем КоличествоПачекВКоробке; // Количество пачек в коробке



Имена переменных запрещается начинать с подчеркивания.
Имена переменных не должны состоять из одного символа. Использование коротких имен переменных допускается только для счетчиков циклов.

Переменные, отражающие состояние некоторого флага, следует называть так, как пишется истинное значение этого флага.
Например:

Перем ЕстьОшибки;   // Признак наличия ошибок в процедуре. 
Перем ЭтоТоварТара; // Признак, что товар относится к возвратной таре.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 16:16
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!