Список форумов Акцент Акцент
официальный форум разработчика программы Акцент
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Смена типа корреспондента

 
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.40
Предыдущая тема :: Следующая тема  
Автор Сообщение
Sergio



Зарегистрирован: 05.01.2009
Сообщения: 18

СообщениеДобавлено: Вт Июл 31, 2012 12:45 pm    Заголовок сообщения: Смена типа корреспондента Ответить с цитатой

Необходимо пройтись по папке и для всех корреспондентов типа "предприятие" поменять тип на "Физ. лицо".
Когда прохожу в цикле:
Код:
Set Ag = WorkArea.Agent("опр. ID")
Ag.Type = 4
Ag.Save

Возвращаюсь в меню корреспондентов, вижу что иконки поменялись, но сворачиваю папочку назад и разворачиваю и вижу что опять иконки стали прежними, тип корреспондента так и не поменялся.
Если выполнять это все через запрос:
Код:
UPDATE AGENTS Set AG_TYPE = 4 WHERE AG_TYPE = 1

то работает. В чем может быть причина. Стандарт 7. Акцент 7.4 (531).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Чт Авг 02, 2012 10:08 am    Заголовок сообщения: Ответить с цитатой

А не работает смена типа корреспондента через интерфейс программы. Можете репортить багу Smile (Accent SQL 7.4.535)

P.S. Если меняете тип корреспондента, то не забудьте перенести параметры и факты, т.к. они тоже зависят от типа.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Чт Авг 02, 2012 10:23 am    Заголовок сообщения: Ответить с цитатой

Краткое исследование ситуации профайлером показало:
1. Есть процедура ap_agent_save, но она не меняет тип
2. Есть процедура ap_agent_settype, но она не запускается при попытке сменить тип или сохранить корреспондента программно, но запускается при смене типа через интерфейс
3. Триггер на IF UPDATE(AG_TYPE) не отрабатывает при попытке смены типа программно, но срабатывает при смене типа через интерфейс (что логично исходя из п.2 Smile )

Очевидная бага.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Пт Авг 03, 2012 2:01 pm    Заголовок сообщения: Ответить с цитатой

kris писал(а):
Краткое исследование ситуации профайлером показало:
1. Есть процедура ap_agent_save, но она не меняет тип
2. Есть процедура ap_agent_settype, но она не запускается при попытке сменить тип или сохранить корреспондента программно, но запускается при смене типа через интерфейс
3. Триггер на IF UPDATE(AG_TYPE) не отрабатывает при попытке смены типа программно, но срабатывает при смене типа через интерфейс (что логично исходя из п.2 Smile )

Очевидная бага.

Не факт. Смена типа - это не просто изменение значения поля. А параметры ? А факты ?. Так что, может, правильнее запретить смену вообще.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Sergio



Зарегистрирован: 05.01.2009
Сообщения: 18

СообщениеДобавлено: Пн Авг 06, 2012 8:43 am    Заголовок сообщения: Ответить с цитатой

Факты и параметры я и переносил вручную... Но вот они то тоже к типу привязаны... Получается что просто создавал словарь и в него закидывал значение параметров, фактов. Потом менял тип коресп. и перезаписывал факты и параметры. Но тип не сохранялся...

Последний раз редактировалось: Sergio (Пн Авг 06, 2012 1:55 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Пн Авг 06, 2012 1:26 pm    Заголовок сообщения: Ответить с цитатой

Sergio писал(а):
Факты и параметры...
Но тип но сохранялся...


Если действительно нужно, то можно изменить тип корреспондента запросом, после чего обновить свойства командой ReLoad.

workarea.DaoDataBase.Execute("update AGENTS set AG_TYPE="& tp &" where AG_ID=" & ag.ID)
ag.ReLoad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Sergio



Зарегистрирован: 05.01.2009
Сообщения: 18

СообщениеДобавлено: Пн Авг 06, 2012 2:00 pm    Заголовок сообщения: Ответить с цитатой

Спасибо, помогло.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Вт Авг 07, 2012 5:09 pm    Заголовок сообщения: Ответить с цитатой

Sergio писал(а):
Факты и параметры я и переносил вручную... Но вот они то тоже к типу привязаны... Получается что просто создавал словарь и в него закидывал значение параметров, фактов. Потом менял тип коресп. и перезаписывал факты и параметры. Но тип не сохранялся...

Не только тип обновить, но и удалить параметры и факты, которые стали "мусором".
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
AllexL



Зарегистрирован: 10.03.2005
Сообщения: 434
Откуда: Donetsk

СообщениеДобавлено: Ср Авг 08, 2012 9:04 am    Заголовок сообщения: Ответить с цитатой

olimp писал(а):

Не только тип обновить, но и удалить параметры и факты, которые стали "мусором".

На SQL решается триггером замечательно....к дао - версии нужно отнестись с позиции ДАОсизма Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Пт Авг 10, 2012 4:22 pm    Заголовок сообщения: Ответить с цитатой

olimp писал(а):
Не факт. Смена типа - это не просто изменение значения поля. А параметры ? А факты ?. Так что, может, правильнее запретить смену вообще.

Если задокументирован функционал - он должен работать. Нигде не написано, что смена корреспондента приводит к обновлению параметров и фактов, но написано, что тип менять можно. Более, того, сказано, что именно для этого надо сделать:
Код:
Свойство Type (тип объекта)
Возвращает или устанавливает тип объекта. Для некоторых объектов свойство только для чтения.

Для объектов, которые хранятся в базе данных (напимер корреспондент Agent) установка свойства не приводит к немедленной записи нового значения в базу данных. Для записи изменений в базу данных необходимо установить все нужные свойства, а затем вызвать метод Save.

Потому - бага. Явная. Я даже провел краткое исследование, в каком именно месте по моему мнению бага сидит:
Цитата:
1. Есть процедура ap_agent_save, но она не меняет тип.

Как лично я борюсь со сменой типа корреспондента: триггером. Если ДАО... ну понятно, что надо делать Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.40 Часовой пояс: GMT + 2
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group