Создать номер документа 1с

Обновлено: 02.07.2024

Все имеющиеся в 1С документы обязательно снабжаются специальными реквизитами - конкретнее, номером, временем и датой. Эти параметры гарантируют внутренние логику и порядок действия системы. Нумерация в системе автоматическая. Но может сбиваться, скажем, из-за неверных действий пользователей, меняющих номера "вручную". При отсутствии сторонних воздействий контроль за уникальностью номеров выполняется Нумератором документов.

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

Ниже подробнее расписано, как действует Нумератор в виде объекта метаданных, определяющего порядок нумерации документов, в качестве примера приводится программа «1С:Бухгалтерия 3.0».

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


Каждую из установок следует изучить внимательнее.

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

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

В поле "Периодичность" задаётся период, в течение которого номер гарантированно сохраняется уникальным. Обычно 1 год. Но можно задать четверть года, месяц или вообще один день. На практике результатом будет то, что при установке через месяц нумерация документов по прошествии месяца опять начнётся с первого номера.

Тип. Этой настройкой определяется, в каком виде формируется номер, т. е. в виде строки или числа. Скажем, если кроме цифры должны быть ещё разделяющие символы или буквы, отмечается "Строка".
Соответственно всем этим настройкам, когда документ сохраняется, то автоматически получает номер из 11 символов с временем проверки 1 год. Когда период обновится, то и нумерация тоже.

Главная функция нумератора - именно нумерование различных документов.

С его использованием можно пронумеровывать несколько их типов сразу. Это делается через дерево "Документы-Нумераторы".


Дабл-кликом мышки открывая "Нумератор", можно изучить на панели свойств характеристики. Такие же, как ранее рассматривались в свойствах нумерации документов.


Можно и создать собственный нумератор (через клавишу "Добавить" либо Ins) и назначить ему свойства.



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


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


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

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

(1) b-dm, эмс.. номер присваивается при записи же. у вас нумерация документов какая то особая ? Ну вообщето механизм следующих образом должен работать: вы создаете документ, пока его незаписываете у него нет номера, При записи (удачной) номер автомат проставляется Да-да, spa07 верно говорит. У Вас такие проблемы только с дописанными документами? С типовыми все хорошо? Если так, то смотрите, как настроена нумерация у новых документов? А вообще для своих документов необходимо перенести типовые процедуры работы с номером, типа:
ДобавитьВМенюДействияКнопкуРедактированияНомера
УстановитьДоступностьПоляВводаНомера
ОбновитьПодсказкуКодНомерОбъекта
и т.д. по аналогии с типовыми документами
И ничего придумывать не надо В Бухгалтерии как я увидел это сделано в общем модуле:
МеханизмНумерацииОбъектов.
Сейчас посмотрю как у пользователя получалось создать 2 объекта с одним номером одновременно.
Ну то есть по его слвам как то следующее:
создает документ с номером 1234, а у другого полтьзователя создается документ с таким же номером, но второй пользователь раньше записал документ и теперь первому епольховаетлю надо создавать документ с другим номером) UPD: Галка уникальности у данных документов стоит, странно как то , не могут же они в одну секунду создавать данный документ :) Да даже если и так, то кто то раньше кто то позже. Вот проблема: В настоящее время номер заявке присваивается при ее создании и к моменту окончательного оформления заявки, при нажатии кнопки сохранить заявку,
выдается надпись - "номер не уникален"
в связи с чем сохранение созданной и полностью оформленной заявки становиться невозможным. (9) b-dm, см. п6, если типовые процедуры не довалять, то по умолчанию работает как вы написали: номер создается при создании документа а ни при записи.

Офигеть что я обнаружил:

оказывается в каждой конфигурации есть такое свойство:
Режим автонумерации объектов и 2 значения:
Освобождать автоматически и
Не освобождать автоматически.

Вот интересно, какую опцию лучше ставить и что она реально обозначает.
В типовой Бух стоит по умолчанию "Не освобождать автоматически",
а в Подрядчике например стоит "Освобождать автоматически".

Какой вариант подходит больше в случае присваивания номера документу в момент создания ?

А то пользователи начали жаловаться что пока до кнопки "Записать" доберутся программа пишет:
Номер неуникальный и приходиться пересоздавать документ.

(11) b-dm, освобождать или не освобождать автоматически работает когда удаляешь элементы справочника\документа и тд. чтобы старые (удаленные) номера нельзя было использовать повторно. к твоему вопросу это не относится помоему (12) - где про это почитать можно ? Т.е. если документ под номером 256 помечен на удаление, то этот номер система освобождает, так что ли ?

(21) b-dm, нет, на простом примере:
Создали документ 1, 2, 3.

Документы 2 и 3 пометили на удаление, затем "Удалением помеченных объектов" их удалили из базы полностью. Если стоит признак "Освобождать", то при создании следующего документа он получит номер 2. Если стоит признак "Не освобождать", то номер следующего документа будет 4. В результате у вас в базе не будет документов под номерами 2 и 3 :)

(23) insurgut,
а если пока удаляли уже создали документы и 4 и 5 номерами, будет ли после удаления задействован 2 и 3 номер или присвоется 6 номер? (28) 2791, Прочтите внимательно 23 пост..
Всё зависит от настроек в свойствах конфигурации (29) Bukaska,
прочитав (23) и возник у меня этот вопрос. По ответу (30) в этом случае настройка не имеет значения. (31) 2791, как же не имеет. В случае если признак "Освобождать" стоит и никто документов во время удаления новых не создал, то нумерация продолжиться со 2 номера. Просто вы указали нештатный пример, т.к. удаление помеченных на удаление объектов производится обычно в монопольном режиме. (32) insurgut,
в (31) я имела ввиду именно нештатный пример. Именно для этого примера получается что не имеет. А в нормальном случае конечно имеет. (21) b-dm, вот видите какая бурная переписка возникла.
Не видел, где бы этот механизм описывался.
Исходя из того, о чем была переписка с insurgut, получается, что этот механизм в разных конфигурациях по-разному реализован.
Самое интересное, что с проблемой перенумерации я сталкивался только в бухгалтерии. А вот в УТП такая проблема вообще не возникала.
Просто если конфигурацию открыли для редактирования, то почему бы не попробовать механизм, который есть в той же УТ для конкретного документа.
Вот, кстати, вопрос для обсуждения: авторские права 1С мы так нарушаем, или нет? (24) sbr, конечно нет :) Если конфигурация куплена официально - переписывать вы ее для себя можете вдоль и поперек. Продавать - нельзя :) (25) insurgut, приятно было пообщаться в конечном итоге.
Желаю удачи в нашем нелегком деле.
На этом прощаюсь, тема, думаю, исчерпана.
Еще раз СПС за конструктивную информацию.

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

Зпр = Новый Запрос;
Зпр.Текст ;
Зпр.УстановитьПараметр("Вал",ВалютаДокумента);
Зпр.УстановитьПараметр("Год",Год(Дата));
Рез = Зпр.Выполнить().Выбрать();
Если Рез.Количество() = 0 Тогда
ЭтотОбъект.Номер = "00001";
Иначе
Пока Рез.Следующий() Цикл
Попытка
Ном = Число(Рез.Номер) + 1;
ЭтотОбъект.Номер = Формат(Ном,"ЧЦ=6; ЧВН=; ЧГ=0");
Прервать;
Исключение
КонецПопытки;
КонецЦикла;
КонецЕсли;

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

(13) sbr, простите, но вы извращенец :) красивее было бы префикс присваивать, а нумерацию оставить платформе. (15) insurgut,
О, класс!
Заработал себе лейбл - буду использовать!
А что, дорогой, по жизни не приходилось сталкиваться с тем что клиент говорит, что хочу так и хоть потолок пробивай лбом, надо сделать как клиент хочет.
А ему надо чтобы в этом квартале номера валютный счетов с 9 начинались.
И бегом срочно за 15 минут сделай, работа стоит, счас к генеральному директору побегу стучать!
Давай умник через 15 минут жду решения!
Применю и спасибо большое скажу!!
Жду - время пошло.

интересно в каком случае будет исключение? :-)
просто присвоение. Записи то Объекта нету. пока пользователь будет тупить этот же номер получит следующий документ

(17) sbr, для Ут 10.3 смотрим событие ПриУстановкеНовогоНомераДокумента - проваливаемся в процедуру ОбщегоНазначения.ПриУстановкеНовогоНомераДокументаПриУстановкеНовогоНомера , добавляем примерно такой код:

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

И так, сам макет документа мы уже создали, как это сделано, вы можете узнать в соответствующей статье.

Сейчас мы получим ранее созданный макет, заполним табличный документ 1С по этому макету, и нам останется вывести табличный документе 1С на просмотр для последующей печати.

Мы сделаем упрощенный (учебный) вариант: формирование всего нашего табличного документа будет осуществляться на модуле управляемой формы. Для этого мы на форме документа создадим команду «ПечатьДокумента», которую разместим в командной панели формы.

Создание и размещение команды печать

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

Создание обработчиков команды

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

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

Имейте в виду, что метод ПолучитьМакет напрямую доступен только или в модуле документа, или в модуле менеджера документа. Еще этот метод можно применить, используя менеджер конкретного объекта, как я сделал выше. Непосредственно на форме его использовать нельзя!

Доступность метода получить макет

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

Напомню, что макет у нас имеет четыре области: Шапка, ШапкаТаблицы, СтрокаТаблицы, Подвал. Области Шапка, ШапкаТаблицы и Подвал будут выведены в табличный документ всего один раз, а область СтрокаТаблицы будет выведена столько раз, сколько строк в табличной части обрабатываемого документа.

Области макета табличного документа

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

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

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

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

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

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

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

Обратите внимание, я использовал метод Заполнить, потому что названия параметров макета совпадают с названиями реквизитов табличной части документа.

Нам осталось получить область Подвал и вывести её в табличный документ.

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

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

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

Проверим, как работает наш код.

Управляемая форма документа

Показ табличного документа

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


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

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

Для этого в главном окне программы заходим в раздел "Нормативно-справочная информация". Далее в списке расположенном слева находим пункт "Нумераторы" и нажимаем на него.


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


Рассмотрим как составить нумератор на примере документов Бухгалтерской отчетности. Для это из списка нажимаем на строку "Бухгалтерские отчеты". Откроется окно с действующей вкладкой "Формат номера", которая нас и интересует. Все операции по созданию автоматической нумерации находятся в данной вкладке.


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

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

Рассмотрит что означает каждый из элементов:

  • "Номер" - является главным элементом, ведущим отсчет по порядку в рамках заданного периода. Для данного элемента нужно присваивать конкретную периодичность по истечении которой номер будет вестись заново;
  • "День месяца" - ведется в двухзначном формате, показывает день того месяца, к которому относится документ;
  • "Номер месяца" - аналогично предыдущему элементу, только отвечает за месяц;
  • "Номер квартала" - так же ведется в двухзначном формате, показывает номер квартала, к которому относится документ;
  • "Год (2 знака)" - отображаются последние два знака того года, когда сделан документ;
  • "Год (4 знака)" - аналогично предыдущему элементу, только отображаются все 4 цифры данного года;
  • "Индекс вида документа" - элемент номера, состоящий максимум из 10 символов, который кратко отображает разновидность документа. Заполняется в данном элементе на вкладе вид документа.
  • "Индекс подразделения" - так же состоит максимум из 10 символов и отображает краткое наименование подразделения, которое настраивается в карточке подразделения
  • "Индекс контрагента" - тоже максимум 10-значный элемент, отображающийся при том условии что задан учет по контрагентам, настраивается в данной карточке.


  • "Индекс организации" - 10 символов максимум, отображает в основном краткое название организации, к которой относится документ, настраивается в карточке организации.


  • "Индекс вопроса деятельности" - 10 символов максимум, показывает краткое название вопроса деятельности организации, настраивается в карточке данного элемента, как показано на рисунке 9.


  • "Индекс номенклатуры дел" - максимум 10 символов, показывает краткое название конкретной номенклатуры дел, настраивается в карточке данного элемента.


  • "Индекс проекта" - все те же 10 символов максимум, кратко прописывается суть проекта, настраивается индекс в карточке проекта.


  • "Номер связанного документа" - если включать этот элемент в формат номера, программа запросит Вас выбрать тип связи с другим документом и присвоит его номер для удобства дальнейшей работы.


  • Индекс ответственного - 10 символов максимум, показывает краткое название того, кто несет ответственность согласно данному документу, полностью настраивается в карточке данного элемента.


Все вышеперечисленные элементы начинают отображаться в карточках только после их добавления в формат номера!


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


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


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

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

При создании нового документа система 1С использует встроенный механизм автонумерации объектов. Номера содержат заранее назначенную разработчиком длину и тип значения. Например, при использовании только численных значений – число, при использовании буквенных и численных значений – строка. В данной статье разберём исправление автонумерации документов в 1С.

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


Механизм автонумерации интуитивно понятен, но не лишён своих особенностей.

При записи элемента в базу (программным или ручным методом) механизм автонумерации 1С присваивает номер, равный максимальному номеру элемента в этом пространстве имён + 1.

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

Например: создаётся новый документ реализации, база проверяет последний максимальный номер среди всех реализаций, пусть он будет 000-000785, новому документу назначается номер 0000-000786. Если же создаётся новый документ в банковских выписках, то 1С уже анализирует весь журнал документов (и поступления на р/с и списания с р/с) на предмет максимального номера, так как у всех банковских выписок одно пространство имён.


Пространство имён не ограничивается подчинением единому журналу документов. Среди границ использования номеров выступают:

  1. Период, если задана периодичность использования номеров.

Например: у документа, введённого 31 декабря, номер ААБП-000456, следующий введённый документ уже следующим годом от 1 января будет иметь номер ААБП -000001, так как у документов по умолчанию периодичность задана в пределах года.


Например: последний документ, созданный до введения префикса для организации, содержит номер 0000-000005, после установки префикса «ПК» в организации и ввода последующих документов код начнётся с ПК00-000001. При этом не важно, будет ли редактироваться префикс в номере в документах вручную, автонумератор в кодах создаваемых документов будет указывать префикс «ПК» этой организации *.


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

Использовался спецсимвол «/» вместо 0 в нумерации в реализациях.



2) Перезапустить текущий сеанс работы 1С**.


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

Если у вас остались вопросы по теме материала, то можете их задать на нашей Линии консультаций 1С. Первое обращение совершенно бесплатно!

* Стоит отметить, что префиксы созависимы по частичному указанию: если ввести префикс АБ, то документы с указанным префиксом А будут получать номера АБ, так как с точки зрения базы префикс А относится к группе префикса АБ.

** Либо нетиповыми способами вызвать функцию глобального контекста ОбновитьНумерациюОбъектов с указанием в качестве параметра типа объектов метаданных.

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