Длина кода в 1с это

Обновлено: 04.07.2024

Всем привет. продолжаем изучать платформу 1С: Предприятие 8.3. Это уже второй урок, в котором мы начнем изучать основные объекты платформы для возможности разработки собственного приложения. Первый объект - это константа.

Приступим к изучению!

Часть 1. Запуск созданной информационной базы ( Урок 1 )

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

Здесь нужно понять лишь один смысл! Если мы хотим разработать что-то свое, то это только режим разработчика. Если мы хотим работать в существующей программе, то это режим пользователя. Платформа позволяет работать одному человеку сразу в двух режимах (сначала что-то разработал, потом заходишь и проверяешь).Учебная версия - она ограничена по функционалу и дает возможность работать только одному человеку. А если лицензия - то их может доходить и до 300 (все зависит от вида лицензии).

Нажимаем кнопку "Конфигуратор" (Рисунок 1).

Произошел переход в режим разработчика (Рисунок 2).

На рисунке 2 показана иконка, на которую нужно нажать и у вас откроется дерево конфигурации (Рисунок 3).

Дерево конфигурации - это дерево, которое имеет ветви, а каждая ветвь в свою очередь имеет какие-то отростки - объекты. Объекты - это константы, справочники, документы и так далее. Более подробно можно почитать нажав сюда.

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

Как только разработчик создает справочник или константу, она сразу же отображается в режиме пользователя.

В прошлом уроке мы пробовали создавать справочник, но перед этим заходили в режим пользователя, чтобы убедиться в том, что там ничего нет. Добавили справочник и только после этого у пользователя появилась возможность сразу автоматизировать свою деятельность.

Ничего не создавая, перейдем в режим пользователя и еще раз убедимся в том, что там ничего нет. Для этого выполним команду: "Сервис-1С:Предприятие" (Рисунок 4).

Откроется знакомое окно и оно действительно пустое (Рисунок 5).

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

Выделим в дереве конфигурации корень этого дерева - слово Конфигурация, правой кнопкой мыши вызовем контекстное меню (или дважды щелкнем по нему правой кнопкой мыши) и выберем пункт "Свойства" (Рисунок 6).

Откроется палитра свойств (рисунок 7)

Палитра свойств - это окно, в котором отображаются все свойства, доступные для данного объекта. В данном случае, это свойства всего дерева конфигурации.

В открывшейся палитре свойств нам сейчас важны два свойства, Имя и Синоним.

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

Синоним - это имя, которое будет отображаться в пользовательском режиме и будет видно пользователю. То есть это то свойство, которое необходимо для пользователя.

Имя и синоним могут быть одинаковыми. Правила задания свойства "Имя":

1. Должно начинаться с буквы

2. Не может содержать пробелов и других специальных символов кроме подчеркивания "_"

3. Пишется слитно, но каждое слово с большой буквы - "АвтоматизацияПредприятия". Этот способ называется - верблюжий. В этом случае платформа понимает, что ей необходимо отделить каждое слово друг от друга (Рисунок 8).

Часть 2. Изменим имя конфигурации (программы)

Изменим имя "Конфигурация" на "АвтоматизацияПредприятия" и нажмем "Tab". В этом случае (Рисунок 8) синоним автоматически заполнится и разделится на два слова (но можно и просто перенести курсор в поле синоним), а свойство Имя останется также слитно - так и должно быть.

Таким образом мы изменили нашу программу (она называется конфигурация или программное решение - это термины 1С). Посмотрите на рисунок 8, в дереве объектов изменилось название. Теперь необходимо обновить программу, внести изменения и проверить все в пользовательском режиме. Нажмем клавишу F7 или значок на панели инструментов (Рисунок 9)

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

Перейдем теперь в режим пользователя и проверим изменения. Для этого необходимо выполнить команду "сервис-1С6Предприятие". Откроется знакомое окно, в котором будет название нашей программы (рисунок 10).

Сейчас вы уже сделали первых два шага по разработке своей конфигурации и это уже совсем не плохо!

Часть 2. Создание константы

Теперь необходимо как-то дальше разработать программу, чтобы она подходила для вашего предприятия.

Что такое константа? Константа - это объект дерева конфигурации, который предназначен для хранения постоянной величины или величины, которая меняется очень редко.
Константа я языках программирования - это то, что никогда не изменяется. Тем это и отличается в платформе. В платформе 1С это величина, которая изменяется крайне редко.

Вся платформа 1С создана так, что ее смысл понятен в русском языке. Константа в жизни каждого человека, это, например, его имя. Оно вроде является постоянной величиной, но его можно изменить. Или, это фамилия, инн, адрес и так далее. все это константы в понимании 1С.

Константа нужна для хранения "постоянной" величины. В нашем случае константами будут являться: 1. ИНН организации, имя директора магазина, адрес магазина и так далее - все это константы.

Перейдем в режим разработчика, выделим константу и правой кнопкой мыши добавим новую константу (или это можно сделать иначе. Выделить константы и нажать на плюсик в верхней панели дерева объектов).

// Слегка изменил. Можно для любого документа использовать Процедура УстановитьНомерДокумента(Источник, СтандартнаяОбработка, Префикс) Экспорт СтандартнаяОбработка = Ложь; Префикс = СокрЛП(Источник.Организация.Префикс); ВидДокумента = Источник.Метаданные().Имя; ДлинаНомера = Источник.Метаданные().ДлинаНомера; ДлинаПрефикса = СтрДлина(Префикс); Префикс4 = Префикс; НомерЧисло = 1; Запрос = Новый Запрос; Запрос.Текст="ВЫБРАТЬ ПЕРВЫЕ 1 | ПОДСТРОКА(Документ.Номер, "+Строка(ДлинаПрефикса+1)+", "+Строка(ДлинаНомера)+") КАК Номер |ИЗ | Документ."+ВидДокумента+" КАК Документ |ГДЕ | ПОДСТРОКА(Документ.Номер, 1, "+Строка(ДлинаПрефикса)+") = &Префикс | И Документ.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ГОД) И КОНЕЦПЕРИОДА(&Дата, ГОД) | И НЕ ПОДСТРОКА(Документ.Номер, "+Строка(ДлинаПрефикса+1)+", "+Строка(ДлинаНомера)+") ПОДОБНО ""%[^0-9]%"" | |УПОРЯДОЧИТЬ ПО | Номер УБЫВ"; Запрос.УстановитьПараметр("Префикс",Префикс4); Запрос.УстановитьПараметр("Дата",Источник.Дата); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ПрефиксНовый = Префикс4; Для ъъ= СтрДлина(Префикс4) по Источник.метаданные().ДлинаНомера - СтрДлина(Строка(Число(Выборка.Номер)))-1 Цикл ПрефиксНовый = ПрефиксНовый + "0"; КонецЦикла; Попытка НомерЧисло = Число(Выборка.Номер)+1; Источник.Номер = ПрефиксНовый+Формат(НомерЧисло,"ЧЦ="+Строка(ДлинаНомера-СтрДлина(ПрефиксНовый))+"; ЧВН=; ЧГ="); Исключение КонецПопытки; Иначе НомерЧисло = 1; Источник.Номер = ПрефиксНовый+Формат(НомерЧисло,"ЧЦ="+Строка(ДлинаНомера-СтрДлина(ПрефиксНовый))+"; ЧВН=; ЧГ timeline-seperator text-center text-primary no-margin no-border"> Показать

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

Это длина номера:
Метаданные.Справочник("Номенклатура").ДлинаКода

Это длина реквизита, если реквизит - это число или строка.
Метаданные.Справочник("Номенклатура").Реквизит("Себестоимость").Длина

Справочник Номенклатура

Справочники в конфигураторе 1С 8

Основные параметры

Иерархия справочника

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Здесь устанавливается иерархичность справочника.

Также в настройках можно ограничить количество групп иерархии справочника соответствующей настройкой.

Владелец справочника

Владельцем справочника могут также быть следующие объекты метаданных: планы обмена, планы видов характеристик, планы счетов, планы видов расчета.

Данные

Самая важная вкладка с точки зрения программиста. На ней указываются реквизиты справочника.

Стандартные реквизиты

Остановлюсь на каждом подробнее:

Нумерация

Формы справочника

Прочие свойства

На странице можно также определить список предопределенных элементов справочника. Это элементы, которые невозможно удалить в режиме Предприятия. К предопределенным элементам можно обратиться в конфигураторе напрямую, по имени, например: Справочники.Номенклатура.Услуга.

Минивидео, как работать со справочниками:

Рассмотрим основные нормы применения и оформления программного кода 1С. Соблюдение данных правил обязательно для получения сертификата 1С:Совместимо.

Эталон кода 1С

Общие требования к конфигурации

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

Для типизированных объектов метаданных строкового типа рекомендуется использовать переменную длину строки. Свойство «Фиксированная длина» может устанавливаться только в тех случаях, когда действительно необходимо при манипуляции этими данными иметь гарантию, что строка имеет определенную длину, даже несмотря на наличие концевых пробелов.

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

Имя, синоним комментарий

Многократное выполнение запросов

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

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

Проверка на пустой результат выполнения запросов

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

Оформление текстов запросов

Использование строк неограниченной длины

Для хранения строк, максимально возможная длина которых заведомо известна, используются строковые реквизиты с длиной, равной максимально возможной.

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

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

Программное управление формой

В разделе инициализации модуля формы запрещается открывать другие формы или диалоги (например, операторами Вопрос(), Предупреждение() и т. д.).

Программное управление формой из других модулей производится через присвоение её реквизитам (свойствам) значений и через вызов её методов или экспортных процедур (функций).

Не допускается делать предположения о свойствах реквизитов формы.

Обращение к данным информационной базы в обработчиках часто вызываемых событий

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

События табличного поля:

В качестве средств минимизации в зависимости от ситуации могут быть:

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

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

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

В функции НСтр() строка ограничивается символами одинарных кавычек.

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

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

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

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

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

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

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

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

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

С крайней левой позиции должны начинаться только:

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

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

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

Небольшие комментарии пишутся в конце строки, которую комментируют, например:

Большие комментарии или комментарии к фрагменту кода пишутся перед комментируемым кодом в отдельной строке.

Структура модулей

В программном модуле в общем случае могут присутствовать следующие разделы в приведенной ниже последовательности:

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

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

Заголовок модуля

Заголовок модуля представляет собой комментарий в самом начале модуля.

В заголовке модуля приводится его краткое описание и условия применения.

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

Раздел описания переменных

Экспортные переменные модуля должны быть снабжены комментарием, достаточным для понимания их назначения. Для не экспортных переменных наличие комментария желательно, но не обязательно.

Комментарий рекомендуется размещать в той же строке, где объявляется переменная.

Процедуры и функции модуля

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

Обработчики событий элементов формы

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

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

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

Обработчики событий

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

Раздел инициализации

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

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

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

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

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

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

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

Исключение составляют функции, которые предназначены только для проверки истинности некоторого факта и которые возвращают в качестве результата проверки значение типа Булево.

Имена таких функций образуются из написания проверяемого факта.

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

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

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

Имена следует образовывать путем удаления пробелов между словами. При этом каждое слово в имени пишется с прописной буквы. Предлоги и местоимения из одной буквы также пишутся прописными буквами.

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

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

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

Перенос выражений

Длинные арифметические выражения переносятся следующим образом:

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

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

Сложные логические условия в Если…ИначеЕсли…КонецЕсли могут переноситься следующим образом:

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

Определение типа значения переменной

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

Получение метаданных объектов

Сортировка таблиц значений

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

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

Использование объекта РегистрСведенийМенеджерЗаписи

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

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

Копирование строк между таблицами значений произвольной структуры

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

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

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

Поэтому в качестве параметров следует указывать сами представления.

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

Это может приводить к увеличению времени выполнения запроса (и как следствие, общего времени формирования итогового документа), а при большом количестве типов – к невозможности его выполнения в клиент-серверной версии из-за ограничения Microsoft SQL Server, по которому в запросе не может участвовать больше 256 таблиц. Такие случаи также могут быть исключением для данного правила, в них представления для ссылочных значений допускается получать в момент их вывода в табличный документ.

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

Программное создание прикладных объектов

Для программного создания прикладных объектов следует использовать методы соответствующих менеджеров (СоздатьЭлемент(), СоздатьДокумент(), СоздатьНаборЗаписей() и т.д.)

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

Особенности контекстного выполнения на сервере и в режиме внешнего соединения

При разработке кода общего модуля и модулей объектов, которые должны быть доступны на сервере и во внешнем соединении, следует соблюдать следующие правила:

1. Запрещено использование объектов, имеющих тип данных, недоступный на сервере и во внешнем соединении:

  • ТабличныйДокумент
  • ТекстовыйДокумент
  • ДиалогВыбораФайла
  • все другие типы, использование которых невозможно на сервере 1С:Предприятие и во внешнем соединении.

2. Запрещено использование средств, отвечающих за диалог с пользователем:

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

3. Запрещается вызов экспортных процедур других общий модулей, у которых не установлен признак компиляции на сервере и/или во внешнем соединении.

4. Участки кода, в которых используются конструкции, не доступные на сервере или во внешнем соединении, должны выделяться соответствующими инструкциями препроцессору, например:

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

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

7. Для внешнего соединения: Текст модулей объектов следует писать таким образом, чтобы при работе во внешнем соединении (в частности, при работе WEB-приложения), обеспечивалась работоспособность всей прикладной логики с учетом того, что часть объектов недоступна для использования во внешнем соединении, например, использование средств диалога с пользователем. Недопустимо размещать в общих модулях процедуры и функции, которые недоступны во внешнем соединении и без которых невозможна запланированная методика использования и работы объектов.

Читайте также: