Что такое префикс в 1с
Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам
На картинке вверху приведена коротенькая функция, в которой "обыграно" только лишь одно слово "Колонка", из которого получилось целых 4 переменных. В других функциях количество переменных из одного ключевого слова может быть и больше. И это благодаря "венгерской нотации переменных".
Понятие "венгерская нотация переменных" хорошо прописано тут: Википедия о венгерской нотации переменных
Венгерская нотация в программировании — соглашение об именовании переменных, констант и прочих идентификаторов в коде программ. Своё название венгерская нотация получила благодаря программисту компании Microsoft венгерского происхождения Чарльзу Симонаи (венг. Simonyi Károly), предложившему её ещё во времена разработки первых версий MS-DOS. Эта система стала внутренним стандартом Майкрософт[1].
Суть венгерской нотации сводится к тому, что имена идентификаторов предваряются заранее оговорёнными префиксами, состоящими из одного или нескольких символов. При этом, как правило, ни само наличие префиксов, ни их написание не являются требованием языков программирования, и у каждого программиста (или коллектива программистов) они могут быть своими.
Применяемая система префиксов зависит от многих факторов:
- языка программирования (чем более «либеральный» синтаксис, тем больше контроля требуется со стороны программиста, а значит, тем более развита система префиксов. К тому же использование в каждом из языков программирования своей терминологии также вносит особенности в выбор префиксов);
- стиля программирования (объектно-ориентированный код может вообще не требовать префиксов, в то время как в «монолитном» для разборчивости они зачастую нужны);
- предметной области (например, префиксы могут применяться для записи единиц измерения);
Этот подход даёт мне, программисту, читаемость текста, экономию сил на выдумывание переменных и контроль типов. Так как тип переменной следует из первых букв нижнего регистра переменной.Пример из обработки "Загрузка выписки из клиент-банка в 1С:Бухгалтерию 2.0" :
Контрагенты.Ссылка КАК КонтрагентСсылка,
Контрагенты.Наименование КАК Имя,
Контрагенты.ИНН КАК ИНН,
Контрагенты.КПП КАК КПП,
Контрагенты.Код КАК Код,
1 КАК КоличествоРаз
Справочник.Контрагенты КАК Контрагенты
И Контрагенты.ИНН <> &ПустаяСтрока
Код";
впКонтрагенты=зпКонтрагенты.Выполнить();
Сообщить("Запрос к базе по контрагентам выполнен !");
вбКонтрагентыИНН=впКонтрагенты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ИНН");
Пока вбКонтрагентыИНН.Следующий() Цикл
сИНН=вбКонтрагентыИНН.ИНН;
Сообщить(сИНН);
Если СтрДлина(сИНН) Продолжить;
КонецЕсли;
вбКонтрагентыКПП=вбКонтрагентыИНН.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"КПП");
Пока вбКонтрагентыКПП.Следующий() Цикл
Сообщить(сИНН+" "+вбКонтрагентыКПП.КПП);
Если вбКонтрагентыКПП.КоличествоРаз>1 Тогда
Если тдЭлементФормы=Неопределено Тогда
Сообщить("Контрагент с ИНН "+СокрЛП(вбКонтрагентыКПП.ИНН)+?(ПустаяСтрока(вбКонтрагентыКПП.КПП),""," и КПП "+СокрЛП(вбКонтрагентыКПП.КПП))+" встречается "+Строка(вбКонтрагентыКПП.КоличествоРаз)+" раз");
КонецЕсли;
лУникальностьПоИНН=Ложь;
нЗадвоенийВсего=нЗадвоенийВсего+1;
обГруппировка.Параметры.НомерПоБазе=Строка(нЗадвоенийВсего)+".";
обГруппировка.Параметры.Заполнить(вбКонтрагентыКПП);
тдКонтрагенты.Вывести(обГруппировка);
нКонтрагент=0;
вбКонтрагентКод=вбКонтрагентыКПП.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Код");
тдКонтрагенты.НачатьГруппуСтрок();
Пока вбКонтрагентКод.Следующий() Цикл
вбКонтрагентСсылка=вбКонтрагентКод.Выбрать();
Пока вбКонтрагентСсылка.Следующий() Цикл
Сообщить(сИНН+" "+вбКонтрагентыКПП.КПП+" "+вбКонтрагентКод.Имя);
нКонтрагент=нКонтрагент+1;
обСтрока.Параметры.НомерПоКонтрагенту=Строка(нКонтрагент)+")";
обСтрока.Параметры.Заполнить(вбКонтрагентСсылка);
тдКонтрагенты.Вывести(обСтрока);
КонецЦикла;
КонецЦикла;
тдКонтрагенты.ЗакончитьГруппуСтрок();
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если тдЭлементФормы=Неопределено Тогда
// Если предстоит выводить отчет в отдельном окне, то проверить : есть ли задвоения ?
// Если задвоений нет, то лишнее окно на экран выводить не следует
Если нЗадвоенийВсего>0 Тогда
тдКонтрагенты.Показать("Отчет о задвоенных контрагентах");
Иначе
Сообщить("Нет задвоенных контрагентов !");
КонецЕсли;
Иначе
// Окно для вывода печати содержится на дополнительной закладке.
// По умолчанию, туда и так выводится отчет и сразу показывается информация.
КонецЕсли;
Возврат лУникальностьПоИНН;
КонецФункции
Я пользуюсь следующим перечнем префиксов :
Функция создана для проверки уникальности контрагентов по ИНН и КПП.
Поэтому в качестве переменной используется ключевое слово "Контрагент".
А благодаря применению префиксов я получил необходимое количество переменных для работы с записями в справочнике "Контрагенты".
Также благодаря префиксам переменных отпадает необходимость придумывать подробные имена переменных. Зачем тратить воображение и буквы, если с первого взгляда становится понятно :
и в этот же вопрос: нумерация кадровых документов нарушилась. Как восстановить?
Добрый день, Екатерина.
Уточните, пожалуйста в какой момент произошли нарушение в программе? После обновления или это ни с чем не связано. Из ЗУП выгрузки нет?
Проверьте наличие префикса в карточке предприятия. Смотрите прикрепленный файл.
Попробуйте почистить кэш: Очистка кэш 1С 8.3 Сделайте тестирование базы: Тестирование и исправление базы 1С 8.3: какие галочки ставить Перед тестирование обязательно сделайте копию базу: Как сделать копию базы 1С 8.3 .
Татьяна, добрый день.
ЗУП не имеем, кадры ведем в 1С бух.
Как проверить наличие префикса в карточке?
Здравствуйте, Екатерина.
Раздел Главное — Настройки — Организации открываете организацию там есть поле Префикс.
Если префикс стоит, то он включается в номер документов. Нажав на ? возле поля можно прочитать, для чего в программе указывается префикс. Сморите прикрепленный файл.
Татьяна, нет такого поля в карточке. И сама карточка отражается только на начальной странице. Где еще настройки префикса найти?
Уточните, пожалуйста редакцию программы.
В базе учет ведется по одной или нескольким организациям?
После каких действий изменилась нумерация.
Судя по шаблону номера документа где-то указан префикс.
Бухгалтерия предприятия (базовая), редакция 3.0 (3.0.79.14)
База на 1 организацию.
Я взяла эту организацию 16 июня и что-то поменяла(.
Подскажите, пожалуйста, где задан префикс на кадровые документы? И как настроить сплошную нумерацию кадровых документов? сейчас приходится вручную номера присваивать.
Добрый день, Екатерина.
В карточке предприятия по кнопке ЕЩЕ — Изменить форму поставьте флажок в поле Префикс. Кнопка Ок. Смотрите прикрепленный файл
Татьяна, добрый день. Префикс в Начальной форме и был поставлен, но в форме не отражается. Еще есть настройка Префикса?
Добрый день, Екатерина.
Если программа не дорабытывалась, то префикс указывается либо в карточке предприятия. Либо Все функции — Константы — Префикс информационной базы (Константы). Проверьте. Судя по вашему номеру у вас в базе префикс указан в карточке предприятия. Попробуйте в копии базы удалить в карточке предприятия префикс и после этого ввести либо нового сотрудника, либо новый приказ.
Посмотрите какая нумерация будет.
Как сделать копию базы можно посмотреть здесь: Как сделать копию базы 1С 8.3 .
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
В 1С нумерация документов по умолчанию имеет сквозной характер, независимо от того, по какой организации оформляется документ. Но помимо префикса по организации также в 1С присутствуют и другие префиксы, который также будут иметь отдельную нумерацию:
Префикс по организации
Чтобы нумерация документов была отдельной, для каждой организации установите Префикс в справочнике Организации , раздел Главное — Настройки — Организации .
Префикс включается в состав номера документа и состоит из 2 символов (букв, цифр).
Префикс имеет смысл устанавливать, только если ведется учет по нескольким организациям. Для разных организаций префиксы не должны совпадать.
Отдельная нумерация будет только по тем организациям, для которых задан Префикс . В нашем случае —по Экспортер ООО и Импортер ООО. А для Организаций ПБУ 18/02 ООО и Налоговый агент ООО будет сквозная нумерация.
Рассмотрим нумерацию документов при заполнении поля Префикс .
Если создаются документы по Организации , в которой задан Префикс , то Префикс указывается в самом начале номера.
Если Префикс не задан, то вместо него отразятся нули.
Если Префикс введен после того, как были созданы документы, то номера по уже введенным документам не исправляются, а новая нумерация начинается сначала.
Номер документа на печатном бланке
При печати Префикс не отображается в номере документов.
Префикс информационной базы
Префикс информационной базы устанавливается, если база синхронизируется с другими базами 1С, т.е. настроен обмен, например, между конфигурациями Бухгалтерия предприятия и Управление торговлей.
В отличие от префикса организации, префикс информационной базы добавляется не только к номерам документов, но и к кодам справочников. Это сделано для того, чтобы не было конфликта при переносе документов, справочников из другой конфигурации.
Установите Префикс этой информационной базы в разделе Администрирование — Настройки программы — Синхронизация данных .
Префикс этой информационной базы также состоит из 2 символов (букв, цифр).
- Конфигурация Бухгалтерия предприятия — БП;
- Конфигурация Управление торговлей — УТ;
- Бухгалтерия предприятия (главная база) — 01;
- Бухгалтерия предприятия (дополнительные базы) — 02, 03, 04 и т.д.
Дополнительные префиксы в 1С
Дополнительные префиксы устанавливаются программой автоматически для определенных документов:
- для документа Счет-фактура выданный на аванс :
- А — если задана отдельная нумерация авансовых счетов фактур в разделе Справочники — Налоги — НДС ;
При обмене и переносе данных из других конфигураций, например:
- с конфигурацией Управление торговлей:
- С — для документа Поступление на расчетный счет вид операции Перевод с другого счета — аналог документа Перемещение денежных средств вид операции Перечисление на другой счет ;
- Р — для документа Поступление на расчетный счет вид операции Взнос наличными в кассу — аналог документа Перемещение денежных средств вид операции Сдача в банк ;
- П — для документа Списание с расчетного счета вид операции Снятие наличных — аналог документа Перемещение денежных средств вид операции Поступление из банка ;
См. также:
Если Вы еще не являетесь подписчиком системы «БухЭксперт8: Рубрикатор 1С Бухгалтерия»:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Правила именования переменных при разработке конфигураций на платформе 1С:Предприятие 7.7.
Префикс отделяется от основного имени переменной символом «_» для лучшей читаемости программы.
Гл_ - глобальная переменная, процедура или функция. Описана в глобальном модуле с ключевым словом ЭКСПОРТ.
м_ - переменная, описанная явно или неявно в текущем программном модуле. Рекомендуется всегда явно описывать переменные модуля в начале текста модуля с помощью оператора Перем.
л_ - переменная, описанная явно или неявно в текущей процедуре или функции. Рекомендуется никогда явно не описывать локальные переменные процедур и функций, а создавать их с помощью оператора присваивания, например: л_НомерСтроки=0.
п_ - параметр текущей процедуры или функции.
рд_ - реквизит диалога. Описан в форме диалога.
яч_ - ячейка таблицы в режиме ввода данных. Определена в таблице. Может использоваться в тексте программы в качестве переменных. Является первичной ячейкой и/или группой соседних ячеек, объединенных командой "объединить ячейки". Представляет собой единую неделимую единицу ввода и/или отображения информации в таблице.
от_ - область таблицы. Определена в таблице. Представляет собой группу ячеек таблицы. Используется, как правило, для форматирования ячеек области.
Отсутствие префикса означает, что переменная является реквизитом того объекта (справочника, документа, …), модулем которого является фрагмент программы. Как следствие, в модулях отчетов и обработок, в том числе и внешних, не должны встречаться переменные без префикса.Правила именования переменных при разработке конфигураций на платформе 1С:Предприятие 8.
Гл_ - глобальная переменная, процедура или функция для основного режима работы конфигурации. Описана в модуле приложения с ключевым словом ЭКСПОРТ.
ГлВС_ - глобальная переменная, процедура или функция для работы конфигурации в режиме внешнего соединения. Описана в модуле внешнего соединения с ключевым словом ЭКСПОРТ.
м_ - (переменная модуля) переменная, описанная явно или неявно в текущем программном модуле. Рекомендуется всегда явно описывать переменные модуля в начале текста модуля с помощью оператора Перем.
л_ - переменная, описанная явно или неявно в текущей процедуре или функции. Рекомендуется никогда явно не описывать локальные переменные процедур и функций, а создавать их с помощью оператора присваивания, например: л_НомерСтроки=0.
п_ - параметр текущей процедуры или функции.
рф_ - реквизит формы. Определен как реквизит формы (на закладке «Реквизиты»).
Отсутствие префикса означает, что переменная является реквизитом того объекта (справочника, документа, …), модулем которого является фрагмент программы. Как следствие, в модулях отчетов и обработок, в том числе и внешних, не должны встречаться переменные без префикса.Комментарий.
Давно пользуюсь этой системой и уже не могу с ней расстаться.
Природа префиксов - "по месту рождения" переменной. Префикс отлично дополняет смысл, который можно узнать из имени переменной. Потому что всегда полезно знать, является переменная локальной или объявлена в модуле или это параметр процедуры (функции) или вообще является реквизитом объекта, к которому модуль относится. Когда писал на 7.7 до этой системы,был у меня случай (и потом еще пара случаев, когда другим помогал), когда объявлена переменная в модуле формы и с таким же именем реквизит диалога на форме. Первый раз очень трудно такую ошибку найти.
При использовании префиксов такое просто невозможно.
Когда ко мне обращались за помощью в поиске ошибки и показывают модуль без префиксов, я часто говорю: "префиксов нет, поэтому и не работает". И на самом деле ошибка находится сама, стоит только расставить префиксы в модуле. Ну не все ошибки, конечно, а те, которые не позволяли двигаться дальше.Хотел еще суффиксы ввести, "Ссылка" и "Объект". Но не прижились: писать долго, и хотя для смысла они очень полезны, но острой проблемы нет. Поэтому я их использую, но только в случаях, когда это необходимо, поэтому в систему для обязательного применения они не записаны. Но требуются они довольно часто, потому что все-таки важно понимать, переменная "л_Контрагент", например, является "л_КонтрагентСсылка" или "л_КонтрагентОбъект".
Сейчас и разработчики 1С стали использовать префикс "м" в переменных модулей, правда без подчеркивания. На мой вкус с подчеркиванием лучше. Но все равно, когда читаешь текст какой-нибудь процедуры (функции) и сразу не понимаешь, локальная это переменная, параметр процедуры (функции) или реквизит объекта у меня возникает раздражение. Ну если уж пришли к префиксу "м_", то дальше просто просятся префиксы "п_" и "л_", с моей точки зрения, конечно.
Что такое префикс базы 1С? Этот вопрос можно часто услышать из уст клиента, который обратился к Вам с проблемой сбившейся нумерации документов.
В системе "1С:Предприятие 8" (конфигурациях), которые разработаны на основе Библиотеки Стандартных Подсистем (БСП), реализовано автоматическое формирование номеров документов и других основных объектов конфигурации, с назначением префиксов базы 1С, в которых хранится уникальный идентификатор организации, информационной базы и другой дополнительной информации.
Начиная с версии 2.2 в БСП реализован интересный механизм нумерации объектов системы. Для более ранних версий БСП, а также для конфигураций без БСП используется другой принцип нумерации и префиксации объектов. Давайте рассмотрим принципы нумерации на примере 1С:УНФ (Управление нашей фирмой 8). Примерный вид номера объекта, в данной конфигурации, будет такой:
00 ФР -000002
· 00 – Префикс для обмена с сайтом.
· ФР– Префикс информационной базы.
· 123 – Порядковый номер документа.
2. Префикс базы для обмена с сайтом.
Давайте разберем каждый префикс базы 1С по отдельности. И начнем мы с префикса для обмена с сайтом. Данный префикс базы устанавливается в константе «Префикс для обмена с сайтом». Для этого необходимо зайти во «Все функции» и выбрать раздел «Константы». После этого находим необходимую нам константу.
В зависимости от того, какой идентификатор установлен у Вас в этой константе, такой префикс базы и будет добавляться при нумерации объектов. В данном случае в этой константе у нас никакое значение не установлено. Потому вместо уникального идентификатора префикса базы 1С выводятся «00». Так происходит со всеми префиксами в системе.
3. Префикс информационной базы.
Следующий префикс базы у нас – это префикс информационной базы или префикс организации, как кому будет удобнее его использовать. В большинстве случаев, когда этот префикс используется как идентификатор организации, в основном в нем отображают первые буквы из наименования организации. Для того чтобы установить значения этого префикса базы, необходимо снова заходить во «Все функции», раздел «Константы». Но на этот раз необходимо искать другую константу, а именно: «Префикс информационной базы». Если идентификатор не установлен, то снова вместо необходимых символов будут выводиться нули «00».
После настройки всех идентификаторов для нумерации, номера документов и других объектов конфигурации будут выглядеть примерно так, как на рисунке. Ничего сложного в настройке префиксации нет, главное знать, какая нумерация у Вас должна получиться в итоге.
Специалист компании ООО «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Читайте также: