|
|
|
| Поделитеся кто как выходит из положения.
На основе данных базы создаются и заключаются договора...
Если сделать в виде отчета, то пользователю исправить текст договора это проблема...
Если сделать в WORD то там нужно вставить метки и по этим меткам вставлять нужные значения.
Юзер может редактировать содержимое, но так же может удалять метки
(случайно)
А как лучшее? Какие ещё есть варьянты??? | |
|
| |
|
|
|
| я, например, не вывожу договор в редактируемый файл - если позволить пользователю редактировать содержимое договора за пределами БазыДанных - теряется смысл самой БД - накапливаются разночтения в тексте, если такую БД и удастся использовать то только как справочник по типовым формулировкам а не как БД договоров.
мои договоры печатаются прямо из БД на ПДФ принтер - если нужно что-то менять, меняем в БД.
в общем случае, нужно выводить текст документа в шаблон Word, который, в свою очередь, и сам хранится в БД. | |
|
| |
|
|
|
| Интересно, а как это всё.....
Где ба почерпнуть чего нибудь.
Я чета пока не въезжаю. | |
|
| |
|
|
|
| я стараюсь оформлять любой документ ввиде таблицы (набора таблиц): в определенную ячейку заносится нужная информация | |
|
| |
|
|
|
| А можно образец такого договора посмотреть? | |
|
| |
|
40 Кб. |
|
| типового договора у меня нет, к сожалению. в прикрепленном файле стандариный "счет" | |
|
| |
|
|
|
| тут кроме автора документа и компании чтот ничего не читаеццо :))) | |
|
| |
|
|
|
| это ж шаблон - остальное вставляется при генерации нового документа на основе сего шаблона. данные из БД. | |
|
| |
|
14 Кб. |
|
| я не о том :))) проехали | |
|
| |
|
|
|
| А как юриты смотрят на такую форму договора - Дают добро? | |
|
| |
|
|
|
|
а что по твоему такое "форма договора" - кирпич бумаги на котором он напечатан и буквы и полосочки? или ты видишь претензии именно к "форме договора"...
на рисуке приведен скриншот с сеткой таблицы для примера, естественно на самом договоре ее нет - а если бы и была это никак не изменило бы собственно "формы договора" | |
|
| |
|
|
|
| Понятно...
просто выглядит необычно. | |
|
| |
|
|
|
| извините а в каком это формате?
Что-то абра кадабра тока и всё... | |
|
| |
|
|
|
| попробуй сохранить и открыть... вероятно IE не понимает расширения dot и открывает как текст | |
|
| |
|
|
|
| Спасибо попробую.
попробовал сохранил как dot
и просто сохранил
абра кадабра. | |
|
| |
|
|
|
| http://hiprog.com/index.php?option=com_content&task=view&id=379&Itemid=35 | |
|
| |
|
|
|
| Спасибо пойду почитаю...
http://hiprog.com/index.php?option=com_content&task=view&id=379&Itemid=35
ААААААА эт я читал Спасибо. | |
|
| |
|
|
|
| e Word.application есть класное свойство Protect(защита )-попробуй | |
|
| |
|
|
|
| Это для того, чтобы не поправили часть текста? | |
|
| |
|
|
|
| Это чтобы весь тект не правили. | |
|
| |
|
|
|
| А зачем тогда в Word выводить? Ведь для того и выводят, чтобы правили. А иначе делай обычный отчет Access.
Вообще, чего вы тут намудрили, только заморочили человека... Все просто: делаешь документ в Worde, втыкаешь метки посреди текста (обзываешь их также, как и соответвующие параметры в нижепреведенной процедуре) и созраняешь как Dot. Потом создаешь процедуру типа такой:
Function ВыводПоШаблону(ПутьШаблона As String, ПутьДокумента As String, ИмяШаблона As String) As Boolean
On Error GoTo 999
Dim app As Word.Application
Dim strDOC As String, strDOT As String, DateFormatLong As String
Dim DlgUser As Integer
Dim ИтДопОткос, ИтКомплОткос, ИтогоОткосы, ВсегоПоЗаказу As Double
DateFormatLong = FormatDateTime(Date, vbLongDate)
strDOT = ПутьШаблона
strDOC = ПутьДокумента & [НомЗаказа] & [КодФирмача] & ".doc"
If Dir(strDOC) <> "" Then
DlgUser = MsgBox("Документ с таким именем ранее уже был создан. Заменить его?", vbYesNo, NomWers)
If DlgUser = vbNo Then
Set app = CreateObject("Word.Application")
With app
.Visible = True
.Documents.Open strDOC
End With
Set app = Nothing
Else
GoTo nn
End If
Else
nn:
ИтДопОткос = Nz(DLookup("СумЦена", "СправДоб", "[КодЗаказа]=" & Me.КодЗаказа & " and [Параметр]=" & "'" & "откосы" & "'"), 0)
ИтКомплОткос = Nz(DLookup("СумЦена", "СправКомпл", "[КодЗаказа]=" & Me.КодЗаказа & " and [Параметр]=" & "'" & "откосы" & "'"), 0)
ИтогоОткосы = ИтДопОткос + ИтКомплОткос + Nz(Forms!Заказы!Панели, 0) + Nz(Forms!Заказы!ВнутрОбналичка, 0) + Nz(Forms!Заказы!ЦенаПорога, 0)
ВсегоПоЗаказу = Forms!Заказы!Итог - (Nz(Forms!Заказы!Скидка, 1) * Forms!Заказы!Итог) + ИтогоОткосы - Nz(Forms!Заказы!СкидкаОткосы, 0) * ИтогоОткосы
Set app = New Word.Application
app.Visible = True
app.Documents.Add strDOT
With app.ActiveDocument
If ИмяШаблона = "АктПриемки" Then
.Bookmarks.Item("Заказчик").Range.Text = "" & [Заказчик]
.Bookmarks.Item("НомЗакКодЗак").Range.Text = "" & [НомЗаказа] & "" & [КодФирмача] & " от " & "" & [ДатаЗаказа]
.Bookmarks.Item("НомЗакКодЗак1").Range.Text = "" & [НомЗаказа] & "" & [КодФирмача] & " от " & "" & [ДатаЗаказа]
ElseIf ИмяШаблона = "Договор" Or ИмяШаблона = "ДоговорВремянка" Then
.Bookmarks.Item("НомЗакКодзак2").Range.Text = "" & [НомЗаказа] & "" & [КодФирмача]
.Bookmarks.Item("ТекДата").Range.Text = Date
.Bookmarks.Item("ТекДата1").Range.Text = Date + 2 & "г."
.Bookmarks.Item("СумПроп").Range.Text = Num2Str(ВсегоПоЗаказу)
.Bookmarks.Item("Текст1").Range.Text = [Заказчик] & ", " & IIf(Forms!Заказы!КодФирмача = "н", "действующее на основании устава", "действующий(ая) на основании " & [Паспорт]) & ", " & IIf(Forms!Заказы!КодФирмача = "н", "именуемое в дальнейшем Заказчик и ", "именуемый(ая) в дальнейшем Заказчик и ") & ДанныеОрг.Form!Исполнитель & " " & ДанныеОрг.Form!Ини & IIf(ДанныеОрг.Form!Исполнитель = "предприниматель", ", действующий на основании свидетельства индивидуального предпринимателя, именуемый ", ", действующее на основании устава, именуемое ") & "в дальнейшем Исполнитель, заключили настоящий договор о нижеследующем."
.Bookmarks.Item("Текст2").Range.Text = IIf([КодФирмача] = "н", "Срок выполнения работ с " & DateFormatLong & " до ______ _______________ " & Year(Date) & "г. при условии поступления денежных средств на расчетный счет Исполнителя не позднее______ _______________" & Year(Date) & "г. Исполнитель имеет право выполнить работы досрочно.", "Срок выполнения работ с " & Date & " до______ _______________" & Year(Date) & "г. Исполнитель имеет право выполнить работы досрочно.")
.Bookmarks.Item("Текст3").Range.Text = IIf([КодФирмача] = "н", "Оплата заказчиком услуг осуществляется путем перечисления средств на расчетный счет Исполнителя, указанный в настоящем договоре.", "Оплата Заказчиком услуг осуществляется путем внесения наличными в кассу Исполнителя 70% при заключении договора и 30% при подписании акта приемки - передачи в момент окончания работ на месте монтажа.")
.Bookmarks.Item("Исполнитель").Range.Text = ДанныеОрг.Form!Исполнитель & " " & ДанныеОрг.Form!Ини
.Bookmarks.Item("АдресФирмы").Range.Text = "Адрес: " & ДанныеОрг.Form!АдресФирмы
.Bookmarks.Item("ИНН").Range.Text = "ИНН " & ДанныеОрг.Form!ИНН
.Bookmarks.Item("Банк").Range.Text = "" & ДанныеОрг.Form!Банк
.Bookmarks.Item("РС").Range.Text = "Р/с " & ДанныеОрг.Form!РС
.Bookmarks.Item("КС").Range.Text = "К/с " & ДанныеОрг.Form!КС
.Bookmarks.Item("БИК").Range.Text = "БИК " & ДанныеОрг.Form!БИК
.Bookmarks.Item("Телефон").Range.Text = "Телефон: " & ДанныеОрг.Form!Телефон
.Bookmarks.Item("ДопТелефон").Range.Text = " " & ДанныеОрг.Form!ДопТелефон
.Bookmarks.Item("Заказчик").Range.Text = Nz(Forms!Заказы!Заказчик, "")
.Bookmarks.Item("Паспорт").Range.Text = IIf(IsNull(ИНН), Nz(Forms!Заказы!Паспорт, ""), "ИНН " & ИНН)
.Bookmarks.Item("ВыданПаспорт").Range.Text = IIf(IsNull(Банк), "выдан " & Nz(Forms!Заказы!ВыданПаспорт.Column(1), ""), Банк)
.Bookmarks.Item("АдресЖит").Range.Text = IIf(Not IsNull(АдресЖит), "Адрес: " & Forms!Заказы!АдресЖит, "")
.Bookmarks.Item("ТелЗаказчика").Range.Text = IIf(Not IsNull(Телефон), "Телефон: " & Forms!Заказы!Телефон, "")
.Bookmarks.Item("ДопТелЗаказчика").Range.Text = IIf(Not IsNull(Сотовый), "Доп. телефон: " & Forms!Заказы!Сотовый, "")
.Bookmarks.Item("РСЗак").Range.Text = IIf(Not IsNull(РС), "Р/с " & Forms!Заказы!РС, "")
.Bookmarks.Item("КСЗак").Range.Text = IIf(Not IsNull(КС), "К/с " & Forms!Заказы!КС, "")
.Bookmarks.Item("БИКЗак").Range.Text = IIf(Not IsNull(БИК), "БИК " & Forms!Заказы!БИК, "")
.Bookmarks.Item("ПримЗак").Range.Text = IIf(Not IsNull(ПримОргЗаказчика), Forms!Заказы!ПримОргЗаказчика, "")
End If
.SaveAs strDOC
End With
Set app = Nothing
End If
ВыводПоШаблону = True
Exit_:
Exit Function
999:
ВыводПоШаблону = False
MsgBox Err.Description
Err.Clear
app.Quit
Resume Exit_
End Function
|
я кинул как есть, не стал там ничего править - думаю разберешься.
Это конечно самый простой вариант, можно и поумнее: хранить параметры в таблице и дергать их оттуда через DLookup.
Вот еще вдогонку, чтобы писало не фераПя, а февраля
Function StringMonth(dateData As Date, strTip As String) As String
If Month(dateData) = 2 Then
StringMonth = Replace(Format(dateData, strTip), "п", "л")
Else
StringMonth = Format(dateData, strTip)
End If
End Function
|
| |
|
| |
|
|
|
| Блин.... как топик раздуло... не расчитал... | |
|
| |
|
|
|
| Спасибо большое.
Я имею ввиду, что при правке договора юзеры могут метки постирать нафиг, а кто им потом с теми же названиями и в нужном месте метки проставит... | |
|
| |
|
|
|
| Так они же "постирают" метки в документе WORD, а не в шаблоне DOT. Ведь в процедуре создается НОВЫЙ документ .doc на основе шаблона. И пускай себе стирают... | |
|
| |
|
|
|
| АААААААААААААААААА
Извините не внимателен был... | |
|
| |