|
Как програмно записать изменённые реквизиты у существующего документа | ☑ | ||
---|---|---|---|---|
0
Asadoff
18.05.12
✎
13:29
|
Не нашел нужного ответа, может ещё не научился как следут искать, но "я не волшебник - я только учусь!"
Есть Документ ПриходОтУслуг у него есть табличная часть ПриходПоКлиентам в ней реквизиты Контрагент, Договор, НомерДоговора, ДатаДоговора .... Этот документ играет роль реестра, и при проведении создаются документы: Соглашение, СчётКОплате, Квитанция и др... //Вот отрывок из процедуры проведения ПриходОтУслуг НовыйДок = Документы.Соглашение.СоздатьДокумент(); НовыйДок.Дата = ТекСтрокаПриходПоКлиентам.ДатаДоговора; НовыйДок.ДатаДоговора = ТекСтрокаПриходПоКлиентам.ДатаДоговора; НовыйДок.Номер = ТекСтрокаПриходПоКлиентам.НомерДоговора; НовыйДок.НомерДоговора = ТекСтрокаПриходПоКлиентам.НомерДоговора; НовыйДок.Контрагент = ТекСтрокаПриходПоКлиентам.Контрагент; НовыйДок.ВидДела = ТекСтрокаПриходПоКлиентам.ВидДела; НовыйДок.Сумма = ТекСтрокаПриходПоКлиентам.Сумма; НовыйДок.УстановитьВремя(); НовыйДок.УстановитьНовыйНомер(); Документ.Записать(РежимЗаписиДокумента.Запись); //Конец отрывка Всё дыло бы здорово, но при обнаружении ошибки, и повторном перепроведени такой код создаёт новые документы. Если закомментировать строки: //НовыйДок.УстановитьВремя(); //НовыйДок.УстановитьНовыйНомер(); новые не существующие ещё документы создаются нормально при первом проведении, а вот при повторном проведении выдаётся ошибка "Номер не уникален..." Какой код написать чтобы сбновить (изменить) содержание реквизитов уже существующих документов? (если это повтор, прошу прощения заранее, и попрошу ссылку на ответ) |
|||
1
rotting
18.05.12
✎
13:31
|
нужно сначала получить ДокументОбъект, изменить в нем нужные реквизиты, а потом записать
|
|||
2
Asadoff
18.05.12
✎
13:33
|
Это должно быть проверкой перед записью?
|
|||
3
rotting
18.05.12
✎
13:35
|
НовыйДок = Документы.Соглашение.СоздатьДокумент();
В этой строчке у тебя всегда будет создаваться новый объект. А вообще при проведении нельзя создавать документы. Бить по рукам за такое надо |
|||
4
DrShad
18.05.12
✎
13:36
|
еще раньше
|
|||
5
rotting
18.05.12
✎
13:36
|
Теперь у тебя наверное при перепроведении бока и лезут....
|
|||
6
n koretsky
18.05.12
✎
13:36
|
ну, как минимум, в коде я не увидел того, что база както узнаёт о том, что она создала документ в комплекте с тем, который проводишь...
|
|||
7
rotting
18.05.12
✎
13:37
|
господа, не советуйте ему ничего пока не уберет "при проведении создаются документы"
|
|||
8
Asadoff
18.05.12
✎
13:38
|
Бух долго работал в Екселе она хочет "набить таблицу поступления от физлиц" и "нажать на кнопочку",
всё было бы здорово, если бы "таблица" не нуждалась в редактировании ((( |
|||
9
n koretsky
18.05.12
✎
13:38
|
(7) согласен в какойто степени
|
|||
10
Ksandr
18.05.12
✎
13:39
|
Приход риальне наступает?
Вздръжне эффект? Создать реквизит ДокументОснование, писать ссылку на приход туда, перед созданием запросом получать документ, если нет - создавать |
|||
11
DrShad
18.05.12
✎
13:40
|
(8) сам то где до этого долго работал?
|
|||
12
n koretsky
18.05.12
✎
13:41
|
(10) все испортил. я его на эту мысль толкал, чтоб он сам понял. а ты взял все сам рассказал. эх.
|
|||
13
ЧеловекДуши
18.05.12
✎
13:44
|
Зачем тебе вейлосипед :)
Поройся в конфе УТ11, там есть механизм Истории изменения документов. |
|||
14
Asadoff
18.05.12
✎
13:44
|
В течении недели данные по приходу могут меняться несколько раз, и ГлБух задаёт такой вопрос: "Чтобы не было расхождений в пяти разных документах одних и тех же данных, можно сделать путём перепроведения одного табличного документа для синхронизации всех остальных?"
Вопрос с точки зрения ГлБуха выглядит логичным... |
|||
15
Maxus43
18.05.12
✎
13:47
|
(14) кури как при проведении РТУ например синхронизирует документы Счет фактура
|
|||
16
Asadoff
18.05.12
✎
13:48
|
Я до этого работал на велосипедной фабрике, изобретал велосипед. А в одинэс пошел самоучкой (пока не дошел)))
|
|||
17
ЧеловекДуши
18.05.12
✎
13:58
|
>>> Какой код написать чтобы сбновить (изменить) содержание реквизитов
уже существующих документов? Убрать строки: НовыйДок = Документы.Соглашение.СоздатьДокумент(); ... НовыйДок.УстановитьВремя(); НовыйДок.УстановитьНовыйНомер(); Добавить проверку на то, что все таки документ, не новый. |
|||
18
ЧеловекДуши
18.05.12
✎
13:59
|
(16)Очень жаль, жаль что вы покинули веЙлосипедную фабрику :)
|
|||
19
Asadoff
18.05.12
✎
14:09
|
Благодарю за поддержку и подсказки, пошел все это переварить...
|
|||
20
n koretsky
18.05.12
✎
15:15
|
тут не переваривать, тут переписывать надо
|
|||
21
Asadoff
19.05.12
✎
21:07
|
(15) Про РТУ не совсем понял поясни плиз подробней.
|
|||
22
Asadoff
19.05.12
✎
21:12
|
(17) это я сразу понял, только не нашел как правильно составить запрос.
|
|||
23
Asadoff
19.05.12
✎
21:14
|
(20) если не надо бы переписывать, я бы и не спрашивал)))
но задача в целом ведь разрешима, просто нужна помощь в написание запроса проверки наличия записанного документа. |
|||
24
Asadoff
19.05.12
✎
21:18
|
(18) на тему веЙлосипедной фабрики :) согласен!
но, можно подумать, что все, кто на этом форуме обладают регалиями и опытом таковыми родились))) (что делать я понимал с самого начала, вопрос не в этом, и даже не в том, что это криво или ровно, вопрос в том "как" это реализовать?) |
|||
25
hhhh
19.05.12
✎
22:29
|
ну если пустая клетка в таблице, то нужно создать документ, если уже заполнена, то создавать не надо, просто получить объект. Ну это же элементарно.
|
|||
26
Asadoff
19.05.12
✎
23:00
|
Вот этого элементарного я пока и не понимаю
//запрос типа Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ |Соглашение.ДокументОснование.Ссылка |ИЗ |Документ.Соглашение КАК Соглашение |ГДЕ |Соглашение.ДокументОснование ССЫЛКА Документ.ПриходОтУслуг |И Соглашение.ДокументОснование <> ЗНАЧЕНИЕ(Документ.ПриходОтУслуг.ПустаяСсылка)"; // а как дальше его обрабатывать не понятно |
|||
27
Asadoff
19.05.12
✎
23:02
|
(может предложить одминистрации форума запретить недоучкам регистрацию? а то ходят с элементарными вопросами, портят сайт где полно обсуждений про хокей комплексы и другие важные темы..)
|
|||
28
Asadoff
19.05.12
✎
23:24
|
можете написать три строчки кода - напишите.
Не можете (не хотите) не пишите, я спросил "как?" В результате получил двадцать ответов на вопрос "что?" |
|||
29
Asadoff
19.05.12
✎
23:42
|
Летят доктор Ватсон и Шерлок Холмс на воздушном шаре. Заблудились в тумане. Вдруг видят внизу какого-то пастуха. Кричат ему:
- Любезнейший, скажите, пожалуйста, где мы находимся? На что тот отвечает: - Вы находитесь на воздушном шаре! - Все ясно. - сказал Холмс. - Мы находимся в России. - Но, почему? - спросил Ватсон. - Элементарно! Только програмист мог дать такой точный и, в тоже время, такой бесполезный ответ, и только в России програмист может работать пастухом. |
|||
30
Has
19.05.12
✎
23:55
|
(26) выгрузить в ТЗ
|
|||
31
FIXXXL
20.05.12
✎
17:59
|
научите не создавать доки при проведении основного дока?
|
|||
32
Asadoff
20.05.12
✎
20:00
|
Может перебор из выборки на дату устроить
// ДокВыборка = Документы.Соглашение.Выбрать(ТекСтрокаПриходПоКлиентам.ДатаДоговора,ТекСтрокаПриходПоКлиентам.ДатаДоговора); Пока ДокВыборка.Следующий() Цикл // Только я не нашел как проверить пустую выборку и как проверить отсутствие записанного документа (стаж 2 недели обучения напишите две строчки кода плизз) |
|||
33
hhhh
20.05.12
✎
20:01
|
Если ЗначениеЗаполнено(ТвоеПолеГдеДокумент) Тогда
|
|||
34
Asadoff
20.05.12
✎
20:41
|
hhhh Спасибо Огромное!!!
за (33) всё заработало отлично |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |