8.х Установка доп.префикса к документам БП 3.0

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

  1. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте!

    Помогите разобраться с префиксацией документов.

    В частности стоит задача установки доп.префикса к имеющимся уже "ПрефиксОрганизации"+"ПрефикИБ"+"-"+"МойПрефикс/"
    Мой префикс хочется устанавливать в зависимости от текущего квартала 1, 2, 3 или 4.

    В принципе все просто:
    нашел подписку на событие УстановитьПрефиксИнформационнойБазыОрганизацииПодразделенияНомеруДокумента и в процедуре ПрефиксацияОбъектовБПСобытия.УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения описал механизм установки моего доп.префикса.
    НО тогда нумерация документов в каждого квартала начинается с начала.
    К примеру за 1 квартал: "КФБП-1/00001", "КФБП-1/00002" .....
    2 квартал: "КФБП-2/00001", "КФБП-2/00002" ..... и т.д.​

    А вот как сделать нумерацию сквозную в течение года не смог разобраться.

    Вставил в процедуру ПриЗаписи модуля объекта: Номер = .......;
    так же без результатно, даже номер не поменял, остается прежним.

    Заранее спасибо за подсказки и помощь.
  2. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    У вас видимо нумерация настроена в пределах квартала. Посмотрите в конфигураторе, в свойствах объекта.
  3. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Под рукой нет типовой БП 3.0.
    Но вроде в 2.0 было годовая!!!

    Не обозначил сразу тип документа - "Счет на оплату покупателя".
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    И должна быть годовая. Вы смотрели в конфигураторе ??????
  5. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    просмотрел типовую, там стоит годовая!
  6. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Значит отладчкик вам в помощь. Трассеруйте код, смотрите по какой причине выставляет номер в пределах квартала.
  7. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Отладчик всегда в помощь нам....
    Ладненько, если мыслей нету, бум трассировать.
  8. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    А тут другого не остается. Видимо где-то программно выставляется.
  9. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Покажите как вы код отредактировали
  10. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    В типовом решении в ПрефиксацияОбъектовБПСобытия.УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения устанавливается значение Префикса
    Префикс = ПрефиксОП + ПрефиксИБ + "-" + Префикс.
    В итоге получается к примеру "КФБП-"
    Я его меняю следующим образом
    Код:
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.СчетНаОплатуПокупателю") или Тип(Источник) = ТипЗнч("ДокументОбъект.РеализацияТоваровУслуг") Тогда
            НомерКвартала = "";
            Если Месяц(Источник.Дата)=1 или Месяц(Источник.Дата)=2 Или Месяц(Источник.Дата)=3 Тогда
                НомерКвартала = 1;
            ИначеЕсли Месяц(Источник.Дата)=4 или Месяц(Источник.Дата)=5 Или Месяц(Источник.Дата)=6 Тогда
                НомерКвартала = 2;
            ИначеЕсли Месяц(Источник.Дата)=7 или Месяц(Источник.Дата)=8 Или Месяц(Источник.Дата)=9 Тогда
                НомерКвартала = 3;
            Иначе
                НомерКвартала = 4;
            КонецЕсли;
            Префикс = "" + НомерКвартала + "/";
        КонецЕсли;  
    
        Префикс = ПрефиксОП + ПрефиксИБ + "-" + Префикс;
    
    Последнее редактирование модератором: 7 апр 2014
  11. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Предполагал, что исходит дальше запись документа методом УстановитьНовыйНомер(Префикс), но найти его не удалось...его просто нет.
    Видимо система делает следующее: назначает префикс в процедуре описанной выше и устанавливает новый номер в соответствии с этим префиксом.
    А вот где именно она его установила не нашел...а может и нет никакой процедуры?
    тогда каким образом конфа знает, что надо именно этот префикс установить в документе?
    Что я упускаю?
  12. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    На F12 нажимали на УстановитьНовыйНомер(Префикс) ?
  13. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Дело в том, что нажимать то не на что.... нет таковой профедуры
  14. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    :D Вы в СП смотрели описание ???
  15. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Вот отличное решение)))) туды как раз и не заходил....
    Заглянем попозже
  16. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Посмотрел в СП и БСП...нового ничего не узнал.
    Итак, процедура УстановитьПрефиксИнформационнойБазыОрганизацииПодразделения() общего модуля ПрефиксацияОбъектовБПСобытия назначает ПРЕФИКС к номеру документа.
    И далее платформа сама присваивает новый номер по порядку в зависимости от периодичности документа.
    Я устанавливал ПРЕФИКС в вышеописанной процедуре и получалось, что с каждого квартала нумерация шла своя в течение года.
    Мне же необходимо сквозную нумерацию в течение года и с указанием номера квартала, я выбрал обозначение "1/", "2/"...
    Т.е. процедура установки префикса мне не подходит по определению.
    Тогда необходимо устанавливать моё обозначение номера квартала ("1/", "2/"...) уже после назначения номера документа системой.
    Вставил в процедуру ПриЗаписи(), получаю уже готовый номер документа и вставляю своё обозначение квартала. НО пока я повторно не нажму кнопку Записать в документе, номер не запишется.
    Это "плохое" решение...
    Все таки хотелось бы добить задачу... в какую процедуру вставить моё обозначение номера квартала в номер документа?
  17. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Лучше конечно в процедуре ПриЗаписи(), желательно в подписке на событие. Но тут на форуме недавно поднимался вопрос по поводу срабатывания этого обработчика при проведении. По сути обработчик ПриЗаписи() должен срабатывать при проведении, но мнения разделились.
  18. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Проблема скорее всего кроется в том, что система воспринимает ваши 1/ как часть номера и просто определяет по этой части старшинство и поэтому слетает.
    Не пробовали писать в префикс 1к/ например?
  19. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Попробовал...не удалось, все на том же уровне.
  20. TopicStarter Overlay
    ANDRE
    Offline

    ANDRE Опытный в 1С

    Регистрация:
    12 мар 2008
    Сообщения:
    456
    Симпатии:
    0
    Баллы:
    26
    Протестировал это событие в подписке на событие...и опять такая же система, пока два раза не нажмешь кнопку Записать в документе, номер не записывается и даже сам документ)))
    Т.е. первый раз он присваивает номер и если на этом этапе закрыть документ, то он даже не сохранится в базе данных.
    И вот пока еще раз не нажмешь записать, документ в БД не запишется.

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