Обновление нумерации объектов

Содержание

Сбросить счётчик нумерации документов или справочников в 1С

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

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

Система «кэширует» последний выделенный номер.

Для того, чтобы обнулить этот кэш существует функция ОбновитьНумерациюОбъектов.

  • После вызова объекты с номерами становятся невалидными, т.е. в момент записи, если этот номер уже был выдан, но не записан выйдет ошибка контроля уникальности.
  • Для уже записанных документов, ничем не грозит — их номера останутся прежними, даже если они не уникальные.
  • Название функции дает неверное толкование, никакого обновления не происходит.
  • Вызов допустим либо на сервере, либо в режиме толстого клиента
  • Права требуется Полные» или «Административные»

Исправление нумерации документов

Автонумератор хранит по каждому префиксу максимальный номер. Если случайно вручную ввести номер «АА9000004», то этот номер будет сохранен как максимальный и следующий номер будет «АА9000005».

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

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

ОбновитьНумерациюОбъектов(Метаданные.Документы.ПриходТовара);

1 ОбновитьНумерациюОбъектов(Метаданные.Документы.ПриходТовара);

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

Настройка нумерации документов

Настройка нумерации документов выполняется на закладке Нумерация:

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

Длина номера — данное свойство определяет длину номера. Если автоматически выданный новый номер меньше длины номера, то в начало номера добавляются лидирующие нули. Это нужно для правильной сортировки по номеру. Если установить длину номера равной нулю, то у документа не будет реквизита номер.

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

Контроль уникальности — при записи документа будет выполняться контроль уникальности номеров. Если уже есть документ с таким номером, то платформа не даст записать его с ошибкой «Значение поля «Номер» не уникально».

Периодичность — период, в пределах которого будет выполняться контроль уникальности. Можно выбрать в пределах:

  • дня
  • месяца
  • квартала
  • года
  • непериодический

Например, если установить периодичность = В пределах месяца, то платформа позволит записать несколько документов с одним номером, но в разных месяцах:

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

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

Также данный параметр влияет на выдачу номеров с начала нового периода. Если 31 декабря последний номер был 3782, то 1 января платформа снова начнет выдавать новые номера начиная с 1.

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

Код перенумерации одного вида документа

  • Написано для ситуации, когда нумерация у клиента ежемесячно начинается с 0.
  • Выполняется без контроля уникальности (Объект.ОбменДанными.Загрузка = Истина)
  • Без промежуточных перенумераций (обычно обработки сначала меняют нумерацию на другой префикс, а затем вызывают стандартный УстановитьНовыйНомер(«»), получается аналогично, но дольше.
  • В конце можно вызывать ОбновитьНумерациюОбъектов(Метаданные.Документы.ПоступлениеТоваровУслуг); (в монопольном режиме не обязательно)

НачатьС = 1; Префикс =»10-«; ПолнаяДлинаНомера = 8; НачПериода = Дата(2016,10,1); КонПериода = Дата(2016,10,31);

ТекНомер = НачатьС; ДлинаНомера = ПолнаяДлинаНомера -СтрДлина(Префикс); Док = Документы.ПоступлениеТоваровУслуг.Выбрать(НачПериода,КонецДня(КонПериода)); Счетчик = 0; Пока Док.Следующий() Цикл Объект = Док.ПолучитьОбъект(); НомерНовый = префикс+Прав(«000000000000″+формат(ТекНомер,»ЧГ=»),ДлинаНомера); Если не Лев(Объект.Номер,ПолнаяДлинаНомера) = НомерНовый Тогда Объект.Номер = НомерНовый;

Объект.ОбменДанными.Загрузка = Истина; Объект.Записать(); Счетчик = Счетчик+1; КонецЕсли; ТекНомер = ТекНомер+1;

КонецЦикла; Сообщить(«Выполнено замен «+Счетчик);

Источник



Особенности работы механизма автонумерации

Механизм автонумерации в «1С:Предприятии 8.1» имеет целью обеспечить более эффективную и предсказуемую работу с номерами, по сравнению с механизмом автонумерации предыдущей версии платформы.

В «1С:Предприятии 8.1» реализован специальный менеджер автонумерации, который отвечает за выдачу номеров. Использование менеджера автонумерации позволяет существенно повысить параллельность работы за счет отсутствия блокировок базы данных.

Существуют две возможные стратегии нумерации для разных категорий объектов:

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

Строки дерева значений

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

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

Имя Тип Описание
Свойства
Родитель СтрокаДереваЗначений ссылается на строку верхнего уровня. Для корневой строки имеет значение
Строки КоллекцияСтрокДереваЗначений содержит коллекцию подчиненных строк
Методы
Владелец() ДеревоЗначений возвращает ссылку на дерево значений, которому принадлежит строка
Уровень() Число возвращает уровень вложенности строки в иерархии дерева. Для строки, не имеющей родителя, уровень будет равен 0 (верхний уровень или корневой уровень). Подчиненная ей строка будет иметь уровень 1 и т.д.

Добавление и удаление строк

Для добавления новой строки используется метод Строки.Добавить(). Метод возвращает объект , с которым доступны дальнейшие манипуляции:

СтрокаДЗ = дз.Строки.Добавить();

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

СтрокаДЗ.Наименование = "Стул деревянный";
СтрокаДЗ.Количество = 1; 
СтрокаДЗ.Свойство = ТекущаяДата();

Для удаления строки используется метод Строки.Удалить(). Строку можно удалить передав методу либо саму строку, либо ее индекс:

//удаление строки
дз.Строки.Удалить(СтрокаДЗ);
//удаление по индексу
ИндексСтроки = дз.Строки.Индекс(СтрокаДЗ);
дз.Строки.Удалить(ИндексСтроки);
//безопасное удаление
НайдСтрока = дз.Строки.Найти("Стул деревянный", "Наименование");
Если НЕ НайдСтрока = Неопределено Тогда
    дз.Строки.Удалить(НайдСтрока);
КонецЕсли;

Перебор строк дерева значений

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

Для Каждого СтрокаДЗ Из дз.Строки Цикл 
    ИндСтроки = дз.Строки.Индекс(СтрокаДЗ);
    Сообщить("Строка: " + СтрокаДЗ.Наименование);
КонецЦикла;
//в редких случаях 
Для ИндСтроки =  По дз.Строки.Количество() - 1 Цикл
    СтрокаДЗ = дз.Строки.Получить(ИндСтроки);
    Сообщить("Строка: " + СтрокаДЗ.Наименование);
КонецЦикла;

Поиск строк

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

//удаление первой найденной строки
НайдСтрока = дз.Строки.Найти("Стул деревянный", "Наименование");
Если НЕ НайдСтрока = Неопределено Тогда
    дз.Строки.Удалить(НайдСтрока);
КонецЕсли;
//удаление всех найденных строк
ПараметрыПоиска = Новый Структура("Наименование", "Стул деревянный");
мНайдСтроки = дз.Строки.НайтиСтроки(ПараметрыПоиска);
Для каждого НайдСтрока Из мНайдСтроки Цикл
    дз.Строки.Удалить(НайдСтрока);
КонецЦикла;

Поиск возможен даже среди вложенных строк. Внимательно изучите документацию к методам Строки.Найти() и Строки.НайтиСтроки().

Все методы коллекции строк дерева значений:

Вставить() Вставляет строку на указанное место коллекции строк
ВыгрузитьКолонку() Выгружает значения ячеек указанной колонки из текущей коллекции строк в массив значений
Добавить() Добавляет новую строку в коллекцию строк
ЗагрузитьКолонку() Загружает значения из массива в ячейки указанной колонки коллекции строк
Индекс() Возвращает индекс строки дерева значений в коллекции
Итог() Возвращает просуммированный итог по колонке дерева значений
Количество() Возвращает количество строк в коллекции строк
Найти() Выполняет поиск строки по значению
НайтиСтроки() Выполняет поиск строк по указанным параметрам
Очистить() Удаляет все строки из текущей коллекции строк
Получить() Возвращает строку по ее индексу
Сдвинуть() Сдвигает строку вверх или вниз по коллекции строк
Сортировать() Выполняет сортировку строк в коллекции по указанным колонкам
Удалить() Удаляет строку из коллекции строк

Иерархию свойств и типов значений, связанных с деревом значений, схематически можно представить в виде дерева:

Материал дополняется…

Перенумерация документов в 1С 8.3 – как исправить нумерацию

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

Перед запуском перенумерации документов всегда делайте резервные копии ваших данных!

Исправление нумерации в 1С Бухгалтерия 3.0 штатной обработкой

Рассмотрим как исправить нумерацию в типовой конфигурации 1С 8.3 Бухгалтерия 3.0. В меню «Отчеты» выберите пункт «Экспресс–проверка».

В открывшейся форме выберите организацию и период. Далее нажмите «Выполнить проверку».

Программа выведет отчет с результатами проверки ведения учета. В данном примере мы перешли в группировку «Операции по кассе» и раскрыли пункт «Соблюдение нумерации ПКО». Надпись «Обнаружены ошибки» в колонке справа свидетельствует в 1С 8.3 о том, что в приходных кассовых документах нарушена последовательность нумерации документов.

Некоторое время 1С 8.3 будет анализировать данные. Обычно это происходит не долго, но все зависит от количества документов.

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

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

Создание обработки для перенумерации (для программистов)

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

Для начала расположим на форме те же элементы, что были в штатном механизме перенумерации.

Команда «Выполнить» будет вызывать серверную процедуру.

ЗапросТН = Новый Запрос; ЗапросТН.Текст = “ВЫБРАТЬ | ТребованиеНакладная.Ссылка, | ТребованиеНакладная.Организация.Префикс КАК Прф |ИЗ | Документ.ТребованиеНакладная КАК ТребованиеНакладная |ГДЕ | ТребованиеНакладная.Организация = &Орг | И ТребованиеНакладная.

Дата МЕЖДУ &НачалоПериода И &КонецПериода”; ЗапросТН.УстановитьПараметр(“НачалоПериода”, НачалоДня(Объект.НачалоПериода)); ЗапросТН.УстановитьПараметр(“КонецПериода”, КонецДня(Объект.КонецПериода)); ЗапросТН.УстановитьПараметр(“Орг”, Объект.Организация); РезультатЗапроса = ЗапросТН.

Выполнить(); ВыборкаТН = РезультатЗапроса.Выбрать();

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

Режим записи (запись или проведение) зависит от того, был ли изначально проведен документ.

Проведение); Иначе ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки КонецЦикла;

Изначально у нас было два документа «Требование – накладная». Как мы видим на рисунке, номера указаны не правильно. Чем раньше создан документ, тем меньше у него должен быть номер.

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

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

Перенос номенклатуры в характеристики и редактирование дополнительных реквизитов номенклатуры и характеристик в УТ 11, КА 2, ERP 2

Обработка для работы со справочниками: номенклатура, характеристики номенклатуры.
Позволяет выполнить:
Перенос номенклатуры в характеристики. Создание характеристик из выбранной номенклатуры, установка ссылок на характеристики в документах и регистрах, там где упоминалась номенклатура. В тех объектах, где характеристики не предусмотрены номенклатура просто заменяется на текущую.
Редактирование наборов свойств, просмотра доп. реквизитов и сведений, ссылок на них, их возможных значений и ссылок на значения.
Редактирование доп. реквизитов номенклатуры и характеристик в единой таблице, скопировать значения в другие позиции.
Обработка тестировалась на платформе 8.3.13.1809 в конфигурациях: Управление торговлей 11.4.6.188 — 11.4.10.62; Комплексная автоматизация 2.4.5.151 — 2.4.11.63; 1С:ERP Управление предприятием 2.4.6.188 — 2.4.11.43

1 стартмани

Расчет процентов по займам и кредитам

В свое время взяла с Инфостарта обработку по расчету процентов по полученным займам и кредитам и переработала ее. Подходит для автоматического расчета исчисленных процентов по полученным займам и кредитам (особенно при большом количестве договоров займа) с нетрудоемким отражением в бухгалтерском и налоговом учете исчисленных процентов. Уточнен налоговый учет расходов по процентам в соответствии с изменениями законодательства в 2015 году.
Внесены исправления по техническим ошибкам (в Бухучете расходы отражались по группе счета 91, а также в НУ по Дт счета отражены суммы процентов)

1 стартмани

17.04.2015   
20056   
17   
lvk74   

13
   

Описание конструктора

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

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

Кнопки «Назад» и «Далее» руководят переходом по полям регистра (поле В).

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

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

Кнопка «Очистить выражения» — очищает любые изменения.

Кнопка «ОК» завершает работу конструктора с сохранением изменений.

Кнопка «Отмена» завершает работу конструктора без сохранения изменений.

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

Результатом работы конструктора будет процедура ОбработкаПроведения() в модуле текущего объекта

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

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

// регистр ОстаткиНоменклатуры Расход
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
	Движение = Движения.ОстаткиНоменклатуры.Добавить();
	Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
	Движение.Период = Дата;
	Движение.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура;
	Движение.Партия = Партия;
	Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество;
	Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма;
КонецЦикла;

// регистр Продажи 
Движения.Продажи.Записывать = Истина;
Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
	Движение = Движения.Продажи.Добавить();
	Движение.Период = Дата;
	Движение.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура;
	Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество;
	Движение.Стоимость = Стоимость;
	Движение.СуммаПродажи = ТекСтрокаСписокНоменклатуры.Сумма;
	Движение.СуммаПрибыли = ТекСтрокаСписокНоменклатуры.Сумма - Стоимость;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ

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

Обмен с системой Ветис Меркурий для любых конфигураций. Гашение ВСД, списание продукции, пакетная печать ВСД (простые и управляемые формы)

Обработка предназначена для небольшого магазина или для небольшой торговой сети. Позволяет оперативно пакетно погасить ВСД, списать проданную продукцию в системе Меркурий, реализована пакетная печать ВСД.
Авторизация проходит через Логин и Пароль, предназначенный для входа через веб интерфейс Меркурий.
Проверка была проведена на релизе Обычные формы: «Управление торговлей», редакция 10.3 (10.3.53.2).
Управляемые формы: Управление торговлей, редакция 11 (11.4.7.128) Бухгалтерия предприятия, редакция 3.0 (3.0.75.37) Розница, редакция 2.2 (2.2.4.20)

10 стартмани

02.09.2019   
20888   
112   
Mister_Gluck   

120
   

Перенумерация с помощью Экспресс-проверки ведения учета

Данная обработка для перенумерации документов 1С находится в разделе «Отчеты». Далее ищем раздел «Анализ учета» и переходим в «Экспресс – проверка«. Появится следующее окно:

Устанавливаем нужный период и нажимаем кнопку «Выполнить проверку».

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

В своей тестовой конфигурации я специально создал несколько ошибочных ситуаций для наглядности:

Получите 267 видеоуроков по 1С бесплатно:

Как видим, у нас нарушена нумерация документов. И как написано, программа 1С 8.3 предлагает автоматически это исправить. Жмем на выделенную ссылку:

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

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

Это актуально, когда перенумерация происходит не с начала года.

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

Нажмем «Продолжить», и начнется процесс перенумерации.

Метод ЗаблокироватьДанныеДляРедактирования()

Данный метод обладает большим спектром возможностей, чем предыдущий:

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

С учетом этого, перепишем предыдущий пример следующим образом:

//установим блокировку перед началом работы с объектом
ЗаблокироватьДанныеДляРедактирования(Контрагент);
//если объект заблокирован, произойдет исключение
//пользователю увидит кто и откуда заблокировал объект
КонтрагентОбъект = Контрагент.ПолучитьОбъект();
КонтрагентОбъект.Наименование = "удалить " + КонтрагентОбъект.Наименование;
КонтрагентОбъект.Записать();
//явное снятие блокировки
РазблокироватьДанныеДляРедактирования(Контрагент);

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

ИзмеренияРегистра = Новый Структура("Контрагент", Контрагент);
КлючЗаписи = РегистрыСведений.ТелефоныКонтрагентов.СоздатьКлючЗаписи(ИзмеренияРегистра);
//установим блокировку перед началом работы с объектом
ЗаблокироватьДанныеДляРедактирования(КлючЗаписи,, ЭтаФорма.УникальныйИдентификатор);

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

Внимание! Методы ЗаблокироватьДанныеДляРедактирования() и доступны только начиная с версии платформы 1С 8.2.9

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

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

Например, в БД хранится максимальный номер 001. Мы получили очередной номер по префиксу 0, нам вернули 002. Далее мы получили очередной номер по префиксу 00, нам вернули номер 003, т. к. в этом случае максимальный номер соответствует обоим префиксам. Механизм автонумерации учитывает этот факт и изменяет максимальный номер зависимых префиксов соответствующим образом. Следует отметить, что на максимальный номер, соответствующий пустому префиксу, влияет изменение максимального номера по любому префиксу, если он превышает максимальный номер по пустому префиксу. Например, мы по пустому префиксу получили номер 001, далее по префиксу 0 получили номер 002, далее по префиксу А получили номер А01, далее по пустому префиксу получили номер А02, т. к. максимальный номер по пустому префиксу соответствует наибольшему из максимальных выданных номеров.

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

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

Навигатор по конфигурации базы 1С 8.3

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3.
Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д.
Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы.
Отображает структуру хранения объектов базы данных, для регистров доступен сервис «Управление итогами».
Платформа 8.3, управляемые формы. Версия 1.1.0.83 от 24.06.2021

3 стартмани

УПП. Реализация товаров в у.е. Формирование рублевых сумм проводок и регистров накопления с учетом ранее поступивших авансов : сразу при проведении документа

Договор с покупателем ведется в условных единицах.
Вид взаиморасчетов : по договору. Ведем взаиморасчеты в разрезе документов расчетов.
Ранее поступил аванс на 2 000 EUR. Курс был 45 руб
Теперь производим отгрузку на 5 000 EUR. Курс изменился и стал : 60 руб.
Проводки по отгрузке формируются с учетом ранее поступившего аванса.
Сумма реализации должна составить : 2 000 х 45 + 3 000 х 60 = 90 000 + 180 000 = 270 000 руб.е
В типовой реализации проведение дает сумму по реализации 270 000 только для регистра накопления «Взаиморасчеты с контрагентами по документам расчетов»
После внесения доработок в обработку проведения (процедура «Движения Регистров») данные по другим регистрам тоже выходят на сумму с учетом поступившего ранее аванса.
Проверено для вариантов настройки программы:
1.Валюта упр.учета — Рубли
2.Валюта упр.учета НЕ Рубли

2 стартмани

08.09.2015   
45181   
18   
Designer1C   

9
   

Принцип автоматической нумерации в 1С 8.3

Каждый элемент, занесенный в систему 1С (независимо от того, это элемент справочника или документ), имеет свой номер. Каждый номер уникален и присваивается объекту автоматически. Автоматическая нумерация 1С 8.3 для документов может задаваться:

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

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

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

Работа автонумерации в различных режимах

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

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

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

При явной установке номера механизм автонумерации увеличивает максимальный номер, если явно устанавливаемый номер больше максимального, и блокирует все свободные номера меньше явно устанавливаемого номера. Блокированные свободные номера не используются при получении очередного номера. При явной установке номера префикс не указывается, поэтому механизм автонумерации использует уже выданные номера для определения префикса. Для этого по всем префиксам пространства номеров ищется, подходит ли явно устанавливаемый номер под префикс. Если да, то найденный префикс используется при явной установке номера (таких префиксов может быть несколько). Следствием этого алгоритма является то, что явная установка номера может повлиять на выдачу номеров по нескольким префиксам. Например, по префиксу 00 мы получили номер 001, далее по префиксу 0 мы получили номер 002, далее мы установили номер 005, по префиксу 0 будет получен номер 006, а по префиксу 00 будет получен номер 007, т. к. префиксы 0 и 00 являются зависимыми.

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

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

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