Имя: Пароль:
1C
1С v8
УТ 11. Формирование номеров для документов
0 AlexKulikov
 
30.03.17
19:34
Добрый вечер, уважаемые форумчане.  

Хочу попросить совета, как быть в такой ситуации:
У меня есть добавленный документ "Замер", и  есть два подразделения в организации "X" и "Y".
В зависимости от выбранного подразделения, я формирую номер : "Год+ подразделения + номер". Делаю это в "Подписках на события", "При записи". Там же формирую внешний вид Номера документа. Но возникает проблема, если например я добавляю документ с номером
17Y11, а затем создаю документ с номером 17X12, то вылетает ошибка контроля уникальности по номерам (+ я не попадаю в свой обработчик)

Как вести параллельную запись номеров?  

С Уважением, Алексей.
1 DrShad
 
30.03.17
19:54
Перед записью не предлагать?
2 AlexKulikov
 
30.03.17
21:54
Так, у меня при использовании следующих событий "Установка нового номера" Или "Перед записью" передается пустой номер.Мне редактировать нечего.

И еще немаловажный факт, пользователи хотят видеть нумерацию для своего подразделения, а при таком подходе получается, что они закончили работу на 140 документе, пришли на работу, а у них уже 240 номер из за того, что другое подразделение накидало своих документов.
3 Zhuravlik
 
30.03.17
22:12
1. Добавляем общий реквизит "Счетчик нумерации" (для таких случаев), заполняем его состав.
2. Определяемся с аналитикой нумерации: здесь номер формируется в разрезе года (от даты документа??), и подразделения.
3. В ПередЗаписью - находим максимальный счетчик а разрезе аналитики нумерации, проставляем значение общего реквизита.
4. Затем - если номер документа пуст (а его мог вбить сам пользователь), то генерируем его: реквизиты аналитики нумерации + счетчик с предыдущего шага.
Все.
4 Злопчинский
 
30.03.17
22:18
(2) какой ПРАКТИЧЕСКИЙ сымсл имеет желание "хотят видеть нумерацию"..? если это какой-нибудь порядковый номер замера, который имеет реальный смысл - не надо его вкладывать в номер документа.
5 shuhard
 
30.03.17
22:19
(3) достаточно задать каждому подразделению префикс
6 Serg_1960
 
30.03.17
22:39
(0) Делаю это в "Подписках на события", "При записи"...

В типовых конфигурациях это делается в подписке при установке номера документа простой подменой префикса конфигурации на Ваш. Проверяете на нужный тип и изменяете префикс. Далее платформа сама подставит нужный номер. Ибо пространство нумерации у них раздельное из-за разных префиксов.
7 AlexKulikov
 
31.03.17
12:40
<code>
Если ТипЗнч(Источник) = Тип("ДокументОбъект.Замеры") Тогда
        НомераДляЗамеров = ЗапросКЗамерам();
        ДатаДок = Формат(Источник.Дата, "ДЛФ=ДД");
        ТекГод = Формат(Источник.Дата, "ДФ=г");
        КолВоКА = 0;
        МаксНомерКА = 0;
        КолВоКО = 0;
        МаксНомерКО = 0;
        Для Каждого Элемента Из НомераДляЗамеров Цикл
              УсловиеКА = Найти(Элемента.Номер,"КА");
              УсловиеКО = Найти(Элемента.Номер,"КО");
              Если Не УсловиеКА = 0 Тогда
                  КолВоКА = КолВоКА + 1;
                  СтрокаНомера = СтрЗаменить(Элемента.Номер,"17КА-","");
                  ТекущийНомер = Число(СтрокаНомера);
                  Если МаксНомерКА < ТекущийНомер Тогда
                      МаксНомерКА = ТекущийНомер;
                  КонецЕсли;      
              ИначеЕсли Не УсловиеКО = 0 Тогда
                  КолВоКО = КолВоКО + 1;
                  СтрокаНомера = СтрЗаменить(Элемента.Номер,"17КО-","");
                  ТекущийНомер = Число(СтрокаНомера);
                  Если МаксНомерКО < ТекущийНомер Тогда
                      МаксНомерКО = ТекущийНомер;
                  КонецЕсли;      
              КонецЕсли;      
          КонецЦикла;
          мПодразделение = Источник.Менеджер;
          Если ЗначениеЗаполнено(мПодразделение) Тогда
              Если мПодразделение.Подразделение = Справочники.СтруктураПредприятия.НайтиПоКоду("00-000002") Тогда
                  ПрефиксПодразделения = "КА";
                  Источник.Номер = СокрЛП(ТекГод + ПрефиксПодразделения + "-" + (МаксНомерКА + 1));
                  Источник.Записать(РежимЗаписиДокумента.Запись);
              Иначе
                  ПрефиксПодразделения = "КО";
                  Источник.Номер = СокрЛП(ТекГод + ПрефиксПодразделения + "-" + (МаксНомерКО + 1));
                  Источник.Записать(РежимЗаписиДокумента.Запись);  
              КонецЕсли;
            
          Иначе
              Сообщить("Менеджер не выбран!");
              Отказ = Истина;
          КонецЕсли;

    КонецЕсли;

</code>

Добрый день, написал алгоритм при "Установке нового номера".
Появилась проблема, записывает он с одним номером: "17КА-1", а создает с другим "17КА-9".
При этом я не могу понять на каком этапе он меняет уже созданный ранее номер на свой. Подскажите пожалуйста, в какой процедуре происходит эта замена номера.
8 AlexKulikov
 
31.03.17
18:44
Разобрался. Накосячил с процедурой ПриУстановкеНомера.

Всем большое спасибо за помощь.