Уменьшение номера документа

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 5 май 2010.

  1. Гость

    1с Бухгалтерия 8

    Номер документов имеет вид: А0510/00001
    А префикс, 05 месяц, 10 год.. дальше номер.
    Необходимо сделать чтоб номер имел не 5 цифр, а три, то есть:
    А0510/001
    Зачем? Требования начальства.

    Пробовала создать новый номер в ручную и тогда дальше по сути должны аналогично задавать такие же номера, но тогда с наступлением нового месяца формат номера становится пятизначным...

    Что изменить необходимо или как это решить?
     
  2. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Можно в конфигураторе укоротить поле "Номер". а в обработчике "ПриУстановкеНовогоНомера" написать как надо формировать новый номер. Или руками постоянно изменять номер. В первом и во втором случае надо помнить, что если есть у документа нумератор, то номера собьются у всех документов подчиненных регистратору.
     
  3. Гость

    В конфигураторе укоротить поле номер, это длину?
    А тогда не у всех ли документов изменится номер? думаю это повлияет на предыдущие документы...

    Способ руками не подходит =(
     
  4. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Само собой повлияет, т.к. единый объект метаданных.другой путь - набить пробелов в начале (перед префиксом). Должно помочь. В противном случае, без вмешательства в длину номера не обойтись. потому как у вас радикальное изменение нумерации. Если увеличение - проблем нет (добавляются лидирующие нуль), а у вас уменьшение номера происходит.
     
  5. Hryv

    Hryv Гость

    1. Как формировался номер вида А0510/00001 для уже созданных документов? Программой или руками?
    2. Вы хотите перенумеровать уже существующие докуметы? Или(и?) чтобы новые нумеровались по новому правилу?


    Добавлено:
    а что в 1С 8 все так запущено? если длина номера 5, то нельзя создать док с номером 3, а только с номером 00003? или " 3"?
     
  6. Гость

    1. Программно через подписку

    2. Хочу чтоб новые нумеровались по новому правилу.
     
  7. Hryv

    Hryv Гость

    Я с 1С 8 плохо знаком, но аж самому стало интересно, что за проблема такая
    Для 7.7 - это как будто на пустом месте проблема
    Дома вечером полистаю книжку по 1С 8, утром отпишу что найду
     
  8. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Через подписку можно, если вы описали программно как сформировать номер, и этот программный код внесен не в модуль формы, а в глобальный обработчик в модуле объекта (ОбработкаЗаполнения, ПриЗаписи, ПослеЗаписи и т.п.)
     
  9. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    1. Без программного кода "Как формировался номер вида..."- гадание на кофейной гуще, могу только предположить следующий способ:

    Если бы я разрабатывал нумерацию, я бы руки человека не пустил бы в номер ИМХО.

    Код ( (Unknown Language)):
    Префикс = "А" + Формат(ТекущаяДата(), "ДФ=MMyy");
    Номер = Префикс + "/" + Номер;
    2. Если уменьшать длину номера с "5" до "3" символов в конфигураторе, то все документы потеряют 2 символа (и старые и новые).
    3. Если у вас программный способ формирования нумерации и нет нумератора у докмента, то можно рассмотреть следующий вариант:
    Код ( (Unknown Language)):
    Префикс = "А" + Формат(ТекущаяДата(), "ДФ=MMyy");
    Номер = Префикс + "/" + Прав(Номер, 3);
    Нумератор - некий объект метаданных, который отвечает за порядок следования и присвоения номеров документам при создании. Для нескольких документов может быть 1 общий нумератор:
    например, в системе есть 2 документа "Реализация товаров" и "Реализация автомобилей". У них общий нумератор "Расход". Если вы руками/программно измените хоть один номер в документе (без разницы, реализация товаров или автомобилей), то при вводе следующего документа система сама проанализирует последовательность номеров нумератора и предложит новый номер отвечающий последним требованиям. (Длина, префикс, последняя цифра и т.п.).

    Решение вашей проблемы, думаю, лежит именно в реализации механизма программной установки нового номера (обработчик "ПриУстановкеНовогоНомера" в модуле объекта документа), в котором вы опишите как формировать новый номер. При этом, надо помнить, что если номер стал короче (с 5 символов до 3), то новые документы будут идти по порядку номеров раньше (5>3). Если есть нумератор, то уменьшение длины номера повредить ему не должно. Обратная ситуация, если вы сделаете потом длину 6 символов, то последовательность присвоения номера нумератором будет уже не корректной для всей группы документов подчиненных нумератору.
     
  10. Гость

    Кажется я уже запуталась...
    В общем номер вида формировался в подписке в процедуре ПриУстановкиНовогоНомера добавила
    ДобавитьПрефиксГодИМесяц(Источник, Префикс);

    И далее в процедуре

    Процедура ДобавитьПрефиксГодИМесяц(ДокументОбъект, Префикс) Экспорт
    Если ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.СчетНаОплатуПокупателю")
    ИЛИ ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.РеализацияТоваровУслуг")
    ИЛИ ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.СчетФактураВыданный")
    Тогда

    Префикс = Префикс + Формат(ДокументОбъект.Дата, "ДФ=MMyy") + "/";

    КонецЕсли;
    КонецПроцедуры

    То есть по сути вид номера даже не задавался, задавался формат префикса.
    Кстати, почему то еще не срабатывает это на документ СчетФактураВыданный.. не реагирует на префикс..
     
  11. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Проверьте состав объектов метаданных подписанных на событие (в свойствах подписки на события). Скорее всего документ не подключен.

    Вам надо дописать одну строку, чтоб было красиво и как вы хотите:
    Код ( (Unknown Language)):
    Номер = Прав(Номер, 3)
     
  12. Hryv

    Hryv Гость

    Походу без меня уже выяснили
    Надо или найти в коде место где номер генерится и там исправить
    или добавить код, чтобы номер правильно генерился
    примерно как Darlock предложил
    Длину номера менять не надо точно
     
  13. Гость

    Да... документ банально оказался не подключен... =)

    про номер сейчас попробую.
     
  14. Гость

    Почему то программа не реагирует на задание вот так номера..
    Пробовала добавить такую строчку в процедуру ПриУстановкиНовогоНомера
     
  15. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    "ПриУстановкеНовогоНомера" вызывается когда происходит обращение к методу "УстановитьНовыйНомер()".

    Если вы программно создаете документ, то строку кода "Номер = Префикс + Прав(Номер, 3)" надо писать в обработчике "ПриУстановкеНовогоНомера". А если нет, то можно попробовать в обработчике "ОбработкаЗаполнения" (в модуле объекта). Потому как самый первый вызывается он, а потом, "ПередОткрытием", "ПриОткрытии" и т.п.
     
  16. Гость

    Мучалась мучалась... пока вроде убедила начальство не резать номер.. =)

    Всем спасибо! Узнала по крайней мере много интересного про нумерацию.
     
Загрузка...

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