• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

СчётФактура

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

Greml1N

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

unknown181538

В обработке заполнения примерно то, что вы написали. Дальше отладчик в зубы...
 
G

Guest

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

В этом случае номер при основании поступления не будет меняться на типовой.
 
G

Greml1N

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

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

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

Guest

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

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

У вас основанием может быть не только поступление! Может задвоится номер или не присвоится, если основание будет другой документ
 
D

Darlock

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

Guest

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

Greml1N

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

Guest

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

Greml1N

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

Guest

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

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

Greml1N

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!