СчётФактура

  • Автор темы Greml1N
  • Дата начала
G

Greml1N

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

unknown181538

НеГуру
28.12.2008
1 417
0
#2
В обработке заполнения примерно то, что вы написали. Дальше отладчик в зубы...
 
G

Guest

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

Greml1N

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

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

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

Guest

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

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

Darlock

Well-known member
04.01.2008
560
1
#6
Установка номера производится в одном из двух мест:
1 - процедура ПриУстановкеНовогоНомера (модуль объекта)
2 - процедура ОбработкаЗаполнения (модуль объекта)
 
G

Guest

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

Greml1N

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

Guest

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

Greml1N

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

Guest

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

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

Greml1N

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