Добавлено: Ср Сен 07, 2011 10:12 am Заголовок сообщения: Как изменить запись в 1 поле во многих документах.
Добрый день. Нужно заменить запись в 1 поле во многих документах. В этом поле записано ПРОБА, а нужно заменить на УДАЧА. В периоде 2011 07 месяца по 2011 08 месяца. В конструкторе имя поля selAgent. В программном коде поле заполняется так selAgent.Text = .MiscBind(mscAgent).Name. Я так понимаю записываются данные в Таблице Misc в поле Msc_No. Но когда я смотрю через Microsoft SQL Server там разные данные. Помогите кто знает.
Добавлено: Ср Сен 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)
Хм.....можно больше деталей? Меняем элемент формы? Данные? Журнала операций? аналитик? счетов?
Добавлено: Ср Сен 07, 2011 12:12 pm Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах.
AllexL писал(а):
Хм.....можно больше деталей? Меняем элемент формы? Данные? Журнала операций? аналитик? счетов?
Версия Акцента 7(SQL). Есть форма, поле формы в котором надо заменить данные называется selAgent. В нем сейчас записано ПРОБА нужно заменить на УДАЧА. Можно это все конечно вручную заменять, но там документов более 1000 вот и нужно заменить данные в поле формы. Я думал это все проделать SQL запросом в Microsoft SQL Server так не пойму что там перезаписывать(
Добавлено: Ср Сен 07, 2011 12:21 pm Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах.
KoCM писал(а):
selAgent.Text = .MiscBind(mscAgent).Name.
Вариантов 2:
Или просто переименовать аналитику .MiscBind(mscAgent).Name
Или установить новую аналитику.
Но при этом совершенно непонятно, какой из выходов вам подходит. Это раз. А во-вторых - что стоит до точки? При указанном вами количестве информации задача решения не имеет :)
П.С. Судя по постановке задачи, лучше не трогайте SQL Server...
Добавлено: Ср Сен 07, 2011 1:30 pm Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах.
KoCM писал(а):
AllexL писал(а):
Хм.....можно больше деталей? Меняем элемент формы? Данные? Журнала операций? аналитик? счетов?
Версия Акцента 7(SQL). Есть форма, поле формы в котором надо заменить данные называется selAgent. В нем сейчас записано ПРОБА нужно заменить на УДАЧА. Можно это все конечно вручную заменять, но там документов более 1000 вот и нужно заменить данные в поле формы. Я думал это все проделать SQL запросом в Microsoft SQL Server так не пойму что там перезаписывать(
Вы знаете, откуда берутся данные в данном поле? Из шаблона? Ручной ввод? Аттрибут сущности? Код формы?
Добавлено: Ср Сен 07, 2011 1:43 pm Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах.
Jeck писал(а):
kris писал(а):
П.С. Судя по постановке задачи, лучше не трогайте SQL Server...
хм(
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.В этом поле выбирается корреспондент (вручную).
Добавлено: Ср Сен 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
)
Где-то так. Я не тестировал, жалко базу :)
П.С. Надеюсь, биндов у вас на этот контрол нет? А то то ли вы так описали, то ли и правда данные в этот контрол так через одно место пишутся.
Добавлено: Ср Сен 07, 2011 2:31 pm Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах.
Нужно посмотреть, как устроена аналитика "Разное", которая используется. Это может быть как собственный элемент, так и ссылка на корреспондента.
В первом случае, нужно менять свойства аналитики, во втором - свойства корреспондента. В любом случае, если меняется только текст, трогать документы не нужно.
В аналитике текст может храниться в свойствах .Name, .Tag, .String1, .String2, .String3
Добавлено: Ср Сен 07, 2011 4:11 pm Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах.
olimp писал(а):
Нужно посмотреть, как устроена аналитика "Разное", которая используется. Это может быть как собственный элемент, так и ссылка на корреспондента.
В первом случае, нужно менять свойства аналитики, во втором - свойства корреспондента. В любом случае, если меняется только текст, трогать документы не нужно.
В аналитике текст может храниться в свойствах .Name, .Tag, .String1, .String2, .String3
Текст-то может храниться где угодно, но берется из miscbind.name, значит, из имени аналитики (хоть бы и ссылочного типа, как, возможно подразумевается - судя по названию переменной). Хужее то, что поскольку автор, судя по всему, не совсем понимает что делает, там могут быть и другие способы заполнения этого поля. В частности, это может быть вообще селектор (как я понял из фразы "7.В этом поле выбирается корреспондент (вручную). ") с биндом на аналитику (что было бы весьма логично).
Добавлено: Пт Сен 09, 2011 8:22 pm Заголовок сообщения: Re: Как изменить запись в 1 поле во многих документах.
KoCM писал(а):
ПС. Лучше помогли бы чем причитать(
1) в вашем случае версия акцента неважна, важно откуда настройка.
2) если это написали до вас, то лучше заплатить 100 грн специалисту.
там действительно есть варианты, а восстанавливать базу будет дороже.
Добавлено: Вт Сен 13, 2011 5:37 am Заголовок сообщения:
Перебрать все видимые документы в папке и заменить во всех проводках аналитику. Нужно знать номер аналитике и идентиф. корневого элемента. В диалог проводок заглянуть обязательно, до и после. Не забывать про резервное копирование.
Как аналитика размножается в документе - неважно. Но случай, когда форма при смене аналитики пересчитывает документ на основании значений её атрибутов (очень редкий) не поддерживается.
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
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах