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

Как изменить запись в 1 поле во многих документах.

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





СообщениеДобавлено: Ср Сен 07, 2011 10:12 am    Заголовок сообщения: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

Добрый день. Нужно заменить запись в 1 поле во многих документах. В этом поле записано ПРОБА, а нужно заменить на УДАЧА. В периоде 2011 07 месяца по 2011 08 месяца. В конструкторе имя поля selAgent. В программном коде поле заполняется так selAgent.Text = .MiscBind(mscAgent).Name. Я так понимаю записываются данные в Таблице Misc в поле Msc_No. Но когда я смотрю через Microsoft SQL Server там разные данные. Помогите кто знает.

ПС. Акцент 7(SQL)
Вернуться к началу
AllexL



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

СообщениеДобавлено: Ср Сен 07, 2011 11:14 am    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

KoCM писал(а):
Добрый день. Нужно заменить запись в 1 поле во многих документах. В этом поле записано ПРОБА, а нужно заменить на УДАЧА. В периоде 2011 07 месяца по 2011 08 месяца. В конструкторе имя поля selAgent. В программном коде поле заполняется так selAgent.Text = .MiscBind(mscAgent).Name. Я так понимаю записываются данные в Таблице Misc в поле Msc_No. Но когда я смотрю через Microsoft SQL Server там разные данные. Помогите кто знает.

ПС. Акцент 7(SQL)


Хм.....можно больше деталей? Меняем элемент формы? Данные? Журнала операций? аналитик? счетов?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
KoCM
Гость





СообщениеДобавлено: Ср Сен 07, 2011 12:12 pm    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

AllexL писал(а):


Хм.....можно больше деталей? Меняем элемент формы? Данные? Журнала операций? аналитик? счетов?


Версия Акцента 7(SQL). Есть форма, поле формы в котором надо заменить данные называется selAgent. В нем сейчас записано ПРОБА нужно заменить на УДАЧА. Можно это все конечно вручную заменять, но там документов более 1000 вот и нужно заменить данные в поле формы. Я думал это все проделать SQL запросом в Microsoft SQL Server так не пойму что там перезаписывать(
Вернуться к началу
kris



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

СообщениеДобавлено: Ср Сен 07, 2011 12:21 pm    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

KoCM писал(а):
selAgent.Text = .MiscBind(mscAgent).Name.

Вариантов 2:
Или просто переименовать аналитику .MiscBind(mscAgent).Name
Или установить новую аналитику.
Но при этом совершенно непонятно, какой из выходов вам подходит. Это раз. А во-вторых - что стоит до точки? При указанном вами количестве информации задача решения не имеет :)

П.С. Судя по постановке задачи, лучше не трогайте SQL Server...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Jeck



Зарегистрирован: 17.05.2005
Сообщения: 171
Откуда: Донецк

СообщениеДобавлено: Ср Сен 07, 2011 12:53 pm    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

kris писал(а):
П.С. Судя по постановке задачи, лучше не трогайте SQL Server...

Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AllexL



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

СообщениеДобавлено: Ср Сен 07, 2011 1:30 pm    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

KoCM писал(а):
AllexL писал(а):


Хм.....можно больше деталей? Меняем элемент формы? Данные? Журнала операций? аналитик? счетов?


Версия Акцента 7(SQL). Есть форма, поле формы в котором надо заменить данные называется selAgent. В нем сейчас записано ПРОБА нужно заменить на УДАЧА. Можно это все конечно вручную заменять, но там документов более 1000 вот и нужно заменить данные в поле формы. Я думал это все проделать SQL запросом в Microsoft SQL Server так не пойму что там перезаписывать(


Вы знаете, откуда берутся данные в данном поле? Из шаблона? Ручной ввод? Аттрибут сущности? Код формы?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
KoCM
Гость





СообщениеДобавлено: Ср Сен 07, 2011 1:43 pm    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

Jeck писал(а):
kris писал(а):
П.С. Судя по постановке задачи, лучше не трогайте SQL Server...

Laughing

хм(
1.Акцент 7.0 (SQL) сборка 0496.
2.Код selAgent.Text = Op.Trans(1,1).MiscBind(mscAgent)
3.Имя поля selAgent (в котором необходимо изменить данные)
4.Это форма, в этом поле можно менять значения. Создается в вкладке Документы в папке к которой прикреплен шаблон. К шаблону прикреплена форма (с которой значения выше).
5.В этом поле сейчас данные Андрейко Андрей Андреевич надо заменить на Сергейко Сергей Сергеевич.
6.Документов в которых надо заменить данные в этом поле более 1000. Таких документов в Акценте много (по человеку Андрейко Андрей Андреевич), но необходимо заменить те которые в периоде с 2011 07 месяца по 2011 09 месяц созданы.
7.В этом поле выбирается корреспондент (вручную).

ПС. Лучше помогли бы чем причитать(
Вернуться к началу
kris



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

СообщениеДобавлено: Ср Сен 07, 2011 2:00 pm    Заголовок сообщения: Ответить с цитатой

Ну извините, как ставите задачу, так и отвечаем...
Судя по всему, вам таки надо заменить одну аналитику другой. Технически сделать это несложно... Сложить все документы, которые надо перепровести в одну подшивку, написать нехитрый скрипт на сиквеле или небольшую программку на скрипте.
НО: я не уверен, что у вас это хорошо и гладко получится, если же вы все-таки рискнете, то даю скрипт на сиквеле:
Код:
declare @id_from int
declare @id_to int
declare @msc_no int
declare @bind_id int

set @id_from = 0
set @id_to = 0
set @msc_no = 0
set @bind_id = 0

update   JRN_MISC
set      MSC_ID = @id_to
where   MSC_NO = @msc_no and MSC_ID = @id_from and J_ID in
      (
         select   J.J_ID
         from   DOCUMENTS D
               inner join JOURNAL J on D.DOC_ID = J.DOC_ID and J.J_TR_NO = 0 and J.J_LN_NO = 0
               inner join BIND_DOCS B on D.DOC_ID = B.DOC_ID and B.BIND_ID = @bind_id
      )

Где-то так. Я не тестировал, жалко базу :)

П.С. Надеюсь, биндов у вас на этот контрол нет? А то то ли вы так описали, то ли и правда данные в этот контрол так через одно место пишутся.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


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

СообщениеДобавлено: Ср Сен 07, 2011 2:31 pm    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

Нужно посмотреть, как устроена аналитика "Разное", которая используется. Это может быть как собственный элемент, так и ссылка на корреспондента.

В первом случае, нужно менять свойства аналитики, во втором - свойства корреспондента. В любом случае, если меняется только текст, трогать документы не нужно.

В аналитике текст может храниться в свойствах .Name, .Tag, .String1, .String2, .String3
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
kris



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

СообщениеДобавлено: Ср Сен 07, 2011 4:11 pm    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

olimp писал(а):
Нужно посмотреть, как устроена аналитика "Разное", которая используется. Это может быть как собственный элемент, так и ссылка на корреспондента.

В первом случае, нужно менять свойства аналитики, во втором - свойства корреспондента. В любом случае, если меняется только текст, трогать документы не нужно.

В аналитике текст может храниться в свойствах .Name, .Tag, .String1, .String2, .String3

Текст-то может храниться где угодно, но берется из miscbind.name, значит, из имени аналитики (хоть бы и ссылочного типа, как, возможно подразумевается - судя по названию переменной). Хужее то, что поскольку автор, судя по всему, не совсем понимает что делает, там могут быть и другие способы заполнения этого поля. В частности, это может быть вообще селектор (как я понял из фразы "7.В этом поле выбирается корреспондент (вручную). ") с биндом на аналитику (что было бы весьма логично).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Jeck



Зарегистрирован: 17.05.2005
Сообщения: 171
Откуда: Донецк

СообщениеДобавлено: Пт Сен 09, 2011 8:22 pm    Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах. Ответить с цитатой

KoCM писал(а):

ПС. Лучше помогли бы чем причитать(

1) в вашем случае версия акцента неважна, важно откуда настройка.
2) если это написали до вас, то лучше заплатить 100 грн специалисту.
там действительно есть варианты, а восстанавливать базу будет дороже.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Юров Ю.С.



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

СообщениеДобавлено: Вт Сен 13, 2011 5:37 am    Заголовок сообщения: Ответить с цитатой

Перебрать все видимые документы в папке и заменить во всех проводках аналитику. Нужно знать номер аналитике и идентиф. корневого элемента. В диалог проводок заглянуть обязательно, до и после. Не забывать про резервное копирование.
Как аналитика размножается в документе - неважно. Но случай, когда форма при смене аналитики пересчитывает документ на основании значений её атрибутов (очень редкий) не поддерживается.
Код:
Const mscNo=16   ' #16=контрагент
Const rootMscID=323 ' ИД корня аналитики - проще посмотреть.

Sub make
  Dim st : Set st=workarea.Site
  Dim oldID : oldID=workarea.Browse(acMisc,,rootMscID,1,"Старое значение")
            : If oldID=0 Then Exit Sub   'отказ от выбора.
  Dim newID : newID=workarea.Browse(acMisc,oldID,rootMscID,1,"Новое значение")
            : If newID=0 Then Exit Sub   'отказ от выбора.
  If Not ask("Подтвердите необходимость замены аналитического показателя"&vbCrLf&_
             "["&workarea.Misc(rootMscID).Name&"] в документах по "&vbCrLf&_
             Token("Папке,Счёту,Корр,Товару,Misc,Подшивке,Шаблону",st.Kind)&_
             "="&st.Name&vbCrLf&_
             "в периоде "&workarea.Period.Title&vbCrLf&_
             "Будут проверены док. в количестве "&st.Operations.Count) Then Exit Sub
  Dim mt : Set mt=Meter : mt.Open "...",,st.Operations.Count
  Dim op : For Each op In st.Operations
    Dim trNo : For trNo=1 To op.TransCount
      Dim row : For row=1 To op.TransList(trNo).Rows
        Dim n : If op.Trans(trNo,row).MiscID(mscNo)=oldID Then _
                   op.Trans(trNo,row).MiscID(mscNo)=newID : n=n+1
      Next
    Next
    op.Save 2+8+16
    DoEvent
    If CreateLibObject("WinAPI").IsEscPressed Then _
                                If Ask("Прервать процесс") Then Exit Sub
    Dim nn : nn=nn+1 : If nn Mod 10 =0 Then mt.StepIt
  Next
  If n>0 Then MsgBox "Изменено "&n&" значений"
End Sub
make
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0 Часовой пояс: GMT + 2
Страница 1 из 1

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


Powered by phpBB © 2001, 2005 phpBB Group