Имя: Пароль:
1C
1С v8
Условная нумерация документов
0 A_O_315
 
27.03.20
11:11
Здравствуйте.

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

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

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

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


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

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

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

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

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

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