Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Условная нумерация документов

Условная нумерация документов
Я
   A_O_315
 
27.03.20 - 11:11
Здравствуйте.

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

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

Например как должно выглядеть:

Документ 001 - это основной документ
Документ 001/1 - это документ где в реквизите "ОсновнойДокумент" выбран вышеуказанный Документ 001
Документ 001/2 - это еще один документ где в реквизите "ОсновнойДокумент" выбран вышеуказанный Документ 001
Документ 002 - это новый документ без указания реквизита "ОсновнойДокумент"


Надеюсь я смог донести суть вопроса. Буду благодарен за идеи.
   lodger
 
1 - 27.03.20 - 11:15
специально для вас
ДокументОбъект.<Имя документа> (DocumentObject.<Document name>)
ПриУстановкеНовогоНомера (OnSetNewNumber)
Синтаксис:
ПриУстановкеНовогоНомера(<СтандартнаяОбработка>, <Префикс>)
Параметры:
<СтандартнаяОбработка>
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная генерация нового номера производиться не будет.
Значение по умолчанию: Истина.
<Префикс>
Тип: Строка.
Префикс, который будет использоваться для генерации номера. Может быть изменен в процедуре-обработчике события.
Описание:
Возникает в момент, когда выполняется установка нового номера документа.
Примечание:
Параметр <Префикс> может быть указан, если Номер имеет тип Строка.
Замечание:
Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
См. также:
ДокументОбъект.<Имя документа>, метод УстановитьНовыйНомер
   mikecool
 
2 - 27.03.20 - 11:16
(0) не используй суффиксы, используй только префиксы и будет тебе счастье и мало кодирования
   A_O_315
 
3 - 27.03.20 - 11:17
(1) Спасибо за копипаст)))) но я знаю что в природе водятся события ПриУстановкеНовогоНомера))) суть вопроса в логической реализации
   A_O_315
 
4 - 27.03.20 - 11:19
(2) По логике вещей для каждого "Подокумента" суффиксом должен служить номер документа указанный в реквизите "ОсновнойДокумент". Но насколько правильно такое писать? Был ли у кого такой опыт? И самый тревожащий меня вопрос - нагрузка на базу
   A_O_315
 
5 - 27.03.20 - 11:20
(4) сори. не суффиксом а префиксом
   mikecool
 
6 - 27.03.20 - 11:21
(4) главное чтобы у тебя хватило длины номера на это все, но - писать номер одного дока в номер другого - это хрень
видимо постановщик задачи не понимает., чего хочет или ты неверно его понял или не смог переубедить
   mikecool
 
7 - 27.03.20 - 11:22
в чем суть задачи? если для вывода в ПФ, то это решается другим способом
   lodger
 
8 - 27.03.20 - 11:23
(4) в ходе жизни объекта и его формы, каждый раз как удалось потыкать ДокументОснование читай из него номер и помещай в ДополнительныеСвойства объекта

Процедура ПриУстановкеНовогоНомера(Стд,Преф)

Если ДополнительныеСвойства.Свойство("ДокументОснованиеНомер") Тогда
//Стд = Ложь; может да а может нет, не помню

Преф = ДополнительныеСвойства.ДокументОснованиеНомер + "/";
Иначеесли значениезаполнено(ДокументОснование) Тогда
//Стд = Ложь;

Преф = ДокументОснование.Номер+ "/";
конецесли

Конецпроцедуры
   lodger
 
9 - 27.03.20 - 11:24
но нумератору от этих плясок станет дурно.
   mikecool
 
10 - 27.03.20 - 11:25
а если вложенность станет более двух уровней? вообще швах )
   A_O_315
 
11 - 27.03.20 - 11:33
(6) Я пытался переубедить но заказчик верит в чудо) Грубо говоря есть основная реализация товара и бывает так называемая "дореализация" - это когда после основной продажи клиент хочет докупить товара, но отражать это надо отдельным документом. Но при всем при этом заказчик хочет чтобы последовательность нумерации по основной реализации была отражена по инкременту для послеовательного отражение номеров продажи без "пробрешин"
   ptiz
 
12 - 27.03.20 - 11:34
(0) Добавить больше нулей и не страдать:
Документ 001 - это основной документ
Документ 001/0001 - это документ где в реквизите "ОсновнойДокумент" выбран вышеуказанный Документ 001

Т.е. "001/" - это префикс, формируемый по документу-основанию + обычный номер.
   ptiz
 
13 - 27.03.20 - 11:35
Кстати, это документы разных видов или одного?
Если одного, то будет так:
Документ 0000001
Документ 001/0001
   lodger
 
14 - 27.03.20 - 11:43
(13) на следующий документ автоинкремент сделает  001/0002. и ему пофиг, что надо было 002
   bolero
 
15 - 27.03.20 - 11:49
(11) как насчет прописывать в "суб-"реализации документом-основанием основную, потом хитрым способом выводить списки деревом?

он с этой нумерацией на штраф от ФНС напорется, если эти букеты реализаций будут не одним днем
   ptiz
 
16 - 27.03.20 - 11:54
(14) Для "обычных" документов делаем префикс = "0000" и всё ок.
   mikecool
 
17 - 27.03.20 - 12:04
(11) я же и говорю, что проблемы в консерватории
   mikecool
 
18 - 27.03.20 - 12:04
+17 дореализация суть реализация и пусть не парит никому мозг, но если клиент готов платить - то тут танцуем )))
   A_O_315
 
19 - 27.03.20 - 13:32
(18) Сделал очень примитивно. назначаю префиксом номер головного документа. Работало вроде корректно но в какой-то момент нумерация сбилась)) копаю дальше)) всем спасибо за советы)

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.