0 / 0 / 0
Регистрация: 18.06.2010
Сообщений: 69
|
||||||
1 | ||||||
Не Сохраняется Документ. Создается Лишняя Копия.14.09.2014, 09:46. Показов 10418. Ответов 12
Метки нет (Все метки)
Помогите решить проблему.
Есть агент, который создает документ копированием. После заполнения полей пытаюсь сохранить док, но сохраняется еще одна копия документа, при этом половина полей заполнена в одном, половина в другом. З.ы. Ранее агент работал корректно. Вот часть кода.
0
|
14.09.2014, 09:46 | |
Ответы с готовыми решениями:
12
Не создается документ Создается ответный документ Создается лишняя строка в Таблице данных Создается лишняя строка при выводе в таблицу из БД |
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
|
||||||
14.09.2014, 10:27 | 2 | |||||
Где вызов функции и где инициализация второго параметра target_db
По коду:
0
|
0 / 0 / 0
Регистрация: 18.06.2010
Сообщений: 69
|
|
14.09.2014, 11:00 | 3 |
Сообщение от savl
Я беру документ по UNID, делаю его копию, после меняю почти все поля, в том числе и UNID нового документа. После пытаюсь сохранить, но при этом создается еще один документ. Т. е. я имею в итоге исходный док, промежуточный, который создан командой CopyToDatabase и документ созданный после сохранения. Ранее у меня все это работало. Получалось два дока. Исходный и новый с измененым UNID. Почему так происходит не могу понять уже 2 дня.
0
|
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
|
|
14.09.2014, 11:33 | 4 |
до замены унида сохранение есть?
0
|
0 / 0 / 0
Регистрация: 18.06.2010
Сообщений: 69
|
|
14.09.2014, 11:53 | 5 |
Сообщение от OKEN
При этом после вызова: Set Process = example_doc.CopyToDatabase( target_db ) в базе появляется документ Недавно пересоздал базу. Может где настройка бд не правильная?
0
|
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
|
|
14.09.2014, 11:54 | 6 |
CopyToDatabase - сама по себе уже сохраняет документ...
Новая копия создается только если меняется UniversalID проверял на 9-ке. Если 2 дня назад работало, то недавно обновляли сервер/клиент? Впрочем, может это так и в 8-ке работает. Мой совет: заменить CopyToDatabase на CreateDocument. Далее копируете необходимые поля и меняете UNID до первого сохранения. Добавлено: OKEN Ага, при CopyToDatabase
0
|
0 / 0 / 0
Регистрация: 18.06.2010
Сообщений: 69
|
|
14.09.2014, 12:07 | 7 |
Сообщение от savl
0
|
0 / 0 / 0
Регистрация: 25.07.2004
Сообщений: 109
|
|
14.09.2014, 12:35 | 8 |
А параметра CopyToDatabase_New_UNID со значением "1" в ini-файле случаем нету ?
Если да - то вот эта строка создает и сохраняет док с новым UNID: Set Process = example_doc.CopyToDatabase( target_db ) Вот эта строка меняет у созданного дока UNID на другой Process.UniversalID = mgr_doc.MaimProccesID(0) А вот эта приводит к созданию еще одного документа, т.к. UNID установленный при CopyToDatabase изменен Call Process.Save( False, False )
0
|
0 / 0 / 0
Регистрация: 18.06.2010
Сообщений: 69
|
|
14.09.2014, 13:06 | 9 |
Сообщение от Andre
0
|
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
|
|
14.09.2014, 13:11 | 10 |
Andre
Ну данный параметр был нужен для исправления ошибки CopyToDatabase, по которой новый UNID как раз таки НЕ генерился. Это исправили, начиная с 7-ки такого больше нет. Так же данный параметр для сервера. Может быть он и работает. Добавлено: Сервер переустанавливали? Клиентов? Машины меняли? Код где отрабатывает?
0
|
0 / 0 / 0
Регистрация: 25.07.2004
Сообщений: 109
|
|
14.09.2014, 16:02 | 11 |
Сообщение от savl
Согласно вот этим ссылкам - очень даже есть, и в качестве фикса предлагается использовать переменную в notes.ini : Documents copied using CopyToDatabase method reuse same UNID Some documents created using the LotusScript CopyToDatabase method do not replicate as expected Допускаю, что при установке клиента или сервера последних версий (или начиная например с 8) этот параметр прошивается автоматически в ini-шку. Но чтобы менялось поведение метода на противоположное (создание нового UNID вместо сохранения оригинального), вроде информации не встречал. P.S. Да и функциональность по умолчанию с "сохранением" оригинального UNID бывает очень полезной, например при архивации.
0
|
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
|
|
14.09.2014, 16:31 | 12 |
Andre
Нет данного параметра на сервере, проверил на наших (правда у нас 8-9), так что если и прошивается, то где-то глубже. Либо сам метод переопределили, за IBM это водится. Опять же, может настройка и работает, проверять не буду, так как это серверная часть. Да и на локале это работает именно так - новый UNID, по факту тот же сервер. Ну и SPR# ASHW4X9P8R Однако, справедливости ради стоит отметить, что если документа с таким UNID в базе нет, то копирование таким образом - сохранит первоначальный UNID, но вот если уже есть - создаст новый. Для первой архивации документа да, это хорошо, для второй (если был восстановлен) - нет. Лучше использовать запасной вариант с CWC-полем UNID. А для копирования: связку - CreateDocument + copyAllItems. Добавлено:
0
|
0 / 0 / 0
Регистрация: 25.07.2004
Сообщений: 109
|
|
14.09.2014, 19:40 | 13 |
Сообщение от savl
Вроде, как все то же самое, поведение метода не меняли - ввели параметр в ini - хочешь включай, хочешь выключай. И это вроде-как единственный фикс по этому методу.
Сообщение от savl
Хотя, на самом деле, при таком копировании сохраняются только последние 16 символов из UNID и ЕМНИП простое сравнение не покажет идентичноcть UNID. Но к теме топика это не относится
Сообщение от savl
Тут советов и рекомендаций не давал, просто привел в качестве возможного примера использования ;-)
0
|
14.09.2014, 19:40 | |
14.09.2014, 19:40 | |
Помогаю со студенческими работами здесь
13
Если с документом работать с флешки, сохраняется ли где-то в системе его копия Если с документом работать с флешки, сохраняется ли где-то в системе его копия Создается ли копия объекта при индексации вектора? Если объект копируется по ссылке, то почему копия сохраняется при обнулении оригинала? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |