dmitry писал(а):На примере перемещения: в накладной нажмите "Выбор операции", выберите "Перемещение", нажмите "Изменить".
Нажмите внизу "Программа":
2.png
Скопируйте и вставьте текст:
Op.NumStr = "-П"
Dim T as Predpr.Tablesql, Str as string, Num as Integer
Str = "SELECT Max(Documents.Num) AS MaxNum FROM Documents WHERE Year(DocDate)=" & Op.DocDate.Year & " AND TmplID=" & Op.TemplID
T = Predpr.Datamain.DBmain.OpenRecordset(Str)
If T.RecordCount > 0 Then
Num = Predpr.GlobalFunction.Nz(T("MaxNum"),0)
End if
Op.Num = Num + 1
T.Close
If Op.Form is nothing = False Then
Op.Form.SetBoxText ("BoxNum", Op.Num)
Op.Form.SetBoxText ("BoxNumStr", Op.NumStr)
end ifНажмите "Сохранить".
Повторите те же действия со своей операцией, только измените в первой строчке "-П" на "-О".
Все хорошо, но работает только в случае если при сохранении документ проводится. Если документ не провести при сохранении (при выставленном подтверждении проводки) - нумерация не работает, вернее - она не унифицируется по шаблону операции - а будет сквозной по расходным накладным. И если впоследствии документ провести - то он добавит постфикс только к неиндивидуальной нумерации
ПС. Однако, если в проведенном документе сменить операцию на иную, а потом вернут к правильной - то ситуация выравняется - и нумерация станет правильной.
Приведу пример.
В "Счетах" создана операция "Договор" по методике изложенной выше с постфиксом"-С". Документов с шаблоном "Договор" еще нет, последний номер документа "Счет" - 250.
Создаем счет, выбираем операцию "Договор", сохраняем, не проводим. Номер нашего документа (договора) - 251 (хотя должен быть - 1).
Нажимаем - "Провести". Номер не меняется, но появляется постфикс - "-С". Сохраняем.
Не выходя из документа выбираем операцию "Счет". Проводим - сохраняем. Номер - без изменений.
Выбираем операцию "Договор". Проводим - сохраняем. И - о чудо! - номер стает верным - 1-С.
Дима, как подправить?
ПС2. Мож кому пригодится. Приведенная программа, помимо прочего, обеспечивает "новую" нумерацию с начала нового года, то есть с 2018 года номера документов начнутся с единицы.
В нашей компании применяется нумерация вида - <номер договора>/<месяц договора>, при этом каждый месяц нумерация начинается снова (то есть договора января - 1/1, 2/1, 3/1..., договора февраля -
1/2, 2/2, 3/2...). Заменив строку
Op.NumStr = "-П" на
Op.NumStr ="/" & Op.DocDate.Month, и в строке
Str = "SELECT Max(Documents.Num) AS MaxNum FROM Documents WHERE Year(DocDate)=" & Op.DocDate.Year & " AND TmplID=" & Op.TemplID два слова
"Year" заменить на
"Month", как раз и получим номер документа в требуемом формате.