8.х Установить номер документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем dim-, 24 сен 2009.

  1. TopicStarter Overlay
    dim-
    Offline

    dim-

    Регистрация:
    24 сен 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    как можно установить номер в документе
    пишу:
    Код:
    Процедура ПриЗаписи(Отказ)
    Если ПустаяСтрока(Номер) Тогда 
    ОбщегоНазначения.УстановитьНомерДокумента(ЭтотОбъект);
    КонецЕсли;
    КонецПроцедуры
    
    в модуле ОбщегоНазначения
    Код:
    Процедура УстановитьНомерДокумента(ДокументОбъект) Экспорт
    
    МетаданныеДокумента = ДокументОбъект.Метаданные();
    НовыйНомер	= 0;
    ......
    Если НовыйНомер=0 Тогда 
    ДокументОбъект.УстановитьНовыйНомер();
    Иначе
    ДокументОбъект.Номер	= НомерДок;
    КонецЕсли;
    КонецПроцедуры // ЗаполнитьШапкуДокумента()
    
    
    при записи говорит "поле объекта недоступно для записи"
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    Из синтаксис-помощника

    Код:
    ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
    УстановитьНовыйНомер (SetNewNumber)
    Синтаксис:
    УстановитьНовыйНомер(<Префикс номера>) 
    Параметры:
    <Префикс номера> (необязательный)
    Тип: Строка. Префикс устанавливаемого номера.
    Значение по умолчанию: Пустая строка 
    Описание:
    Устанавливает новый номер документа для заданного префикса номера. 
    Примечание:
    Для документов с нумерацией в пределах периода, номер устанавливается в пределах периода, соответствующего установленной дате документа. Если дата - пустая, процедура установит номер в пределах периода соответствующего пустой дате. 
    Пример:
    РасходнаяНакладная.УстановитьНовыйНомер(ПрефиксИБ);
    См. также:
    ДокументОбъект, событие ПриУстановкеНовогоНомера
    
    
    т.е. Вам достаточно написать следующее

    Код:
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    ЭтотОбъект.УстановитьНовыйНомер(ПараметрыСеанса.ПрефиксУзлаРаспределеннойИнформационнойБазы);
    
    КонецПроцедуры
    
    
    Больше ничего писать не надо.

    Удачи!
  3. TopicStarter Overlay
    dim-
    Offline

    dim-

    Регистрация:
    24 сен 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    В том то и дело что нужно установить номер не стандартный с префиксом, а произвольный который генерится исходя из условий
  4. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    а номердок у вас что?
  5. TopicStarter Overlay
    dim-
    Offline

    dim-

    Регистрация:
    24 сен 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    номердок формируется исходя из того какое подразделение, тип документа и еще некоторые факторы, но это не принципиально, просто при попытке присвоить номер ругается что нельзя, а нужно
  6. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Скорее всего, ругается не на номер, а на другое какое-то поле.
    И я бы рекомендовал вообще переделать этот механизм, ибо криво написано :)
    Событие "ПриЗаписи" возникает уже после записи объекта. Поэтому измененые в этой процедуре реквизиты записаны не будут. Перенесите присвоение номера в процедуру "ПередЗаписью".
    Далее, менять номер в процедуре общего модуля не есть гут, лучше написать в общем модуле функцию вычисляющую этот номер и возвращающую его в документ. А уже в самом документе присваивать этот номер (хотя и с процедурой работать должно).
    Покажите, что Вы спрятали за многоточием. Возможно, там кроется разгадка.
  7. TopicStarter Overlay
    dim-
    Offline

    dim-

    Регистрация:
    24 сен 2009
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Все получилось, спасибо

Поделиться этой страницей