СчётФактура

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

  1. Greml1N

    Greml1N Гость

    Всем доброго времени суток. Нужна помощ вот с таким делом. При создании товарной накладной,мы её записуем,и делаем счетФактура. Номер СчетаФактура равен Номеру Накладной. Но Если к примеру мы создали 3 накладных,записали НО не провели их. И возьмём любую из этих накладных и введём счёт фактуру,то у неё номер будет не такой как у товарной накладной. Вроде бы счёт фактура делается на основании товарной накладной. А помощ нужная в том скажите как это реализовать. Прежде всего это будет в Форму документа счета фактуры,или в модуле. Ну и натолкните на код,пробывал к примеру Номер=ДокументОснование.Номер не пашет. (.Значение приписывал то же)
    Всем сэнкс за потраченное время)) Версия 8.1.14
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    В обработке заполнения примерно то, что вы написали. Дальше отладчик в зубы...
     
  3. Гость

    Greml1N
    Дело в типовом механизме установки нового номера. В модуле объекта Счет-фактуры есть процедура "ПриУстановкеНовогоНомера()". Там пропишите
    Код ( (Unknown Language)):
    Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
    СтандартнаяОбработка = Ложь;
    КонецЕсли;
    В этом случае номер при основании поступления не будет меняться на типовой.
     
  4. Greml1N

    Greml1N Гость

    В процедуре ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    Прописал как вы и написали. Но эффекта никакого. Счёт фактура по прежнему получает непонятно какой номер,а не номер накладной. Может где ещё записано заполнение номера счета фактуры? :lovecodeby:

    Добавлено: Сделал)

    Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    СтандартнаяОбработка = Ложь;
    Номер = ДокументОснование.Номер;
    + отключил Автонумерацию.Найлло спасибо)
     
  5. Гость

    Автонумерацию вы зря отключили. И условие на тип основания лучше оставить... Просто дописать номер:

    Код ( (Unknown Language)):
    Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
    СтандартнаяОбработка = Ложь;
    Номер = ДокументОснование.Номер;
    КонецЕсли;
    У вас основанием может быть не только поступление! Может задвоится номер или не присвоится, если основание будет другой документ
     
  6. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Установка номера производится в одном из двух мест:
    1 - процедура ПриУстановкеНовогоНомера (модуль объекта)
    2 - процедура ОбработкаЗаполнения (модуль объекта)
     
  7. Гость

    Darlock
    В обработке заполнения можно только вызвать метод ЭтотОбъект.УстановитьНомер(). Присвоить значение напрямую нельзя. Еще есть подписки на событие ПриУстановкеНомера, но там меняется только префикс обычно.
     
  8. Greml1N

    Greml1N Гость

    Ещё подскажите. При создании Товарной накладной номер присвается по непнятному мне алгоритму) Нужно что бы номер был на 1 больше предыдущей. К примеру идут номера накладных 000002,000003 то при создании накладной будет номер 000004. А он что то мудрит хитрит,и предыдущие номера вобщем вобще не берёт в расчёт. Это наверно надо делать в процедуре ПриУстановкеНомера ?
     
  9. Гость

    Greml1N
    Автонумерация включена? Если нет, то в процедуре "ПриУстановкеНовогоНомера"
     
  10. Greml1N

    Greml1N Гость

    С этим я разобрался. До этого была бух,она поставила номер накладной примерно такой 00096. Как ей это удалось непонима) Но всё же при удалении документа всё пошло нормально. Но тут ещё кое что интересно. Если создать реквизит к примеру Пункт(Числовой) И что бы при создани очередного документа у него номер был на 1 больше чем предыдущий,вобщем автонумерацию сделать.Можно сказат как обычная автнумеровка в номере документа,или в кодах. Но надо сделать это отдельному реквизиту.
     
  11. Гость

    Greml1N
    На мой взгляд тут 2 варианта.
    1. Запрос. Формируешь запрос, в котором получаешь самое большое значение реквизита. И присваиваешь значение на 1 больше этого значения.
    2. Константа. При записи документа в константу пишется текущее значение реквизита. При присвоении читается значение из константы и прибавляется 1.

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

    Greml1N Гость

    Спасибо большое. Сделал по другому. Просто Код мы спрятали вобще от пользователя. А им нужна нумерация. Ну я дёргал Значение кода,его в переменную,а потом переменную в сам реквизит "Пункт Получилось всё хорошо. Имеет вид 1,2,3. И без уникальности,можно повторять.
     

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