|
v7: Удалить справочник цен | ☑ | ||
---|---|---|---|---|
0
shegy
26.11.11
✎
19:15
|
Всем, привет, подскажите пож. Ситуация следующая, при помощи кривой обработки, справочник цен забился по полной катушке, т.е. по одному и тому же типу цен, может быть от 1 до 10 записей, вопрос как можно удалить по шурику все эти записи, сейчас пытаюсь удалить его стандартными средствами, через выборку и элементов и последующем Спр.Удалить(1), но уж больно долгий процесс получается, может знает кто-нибудь более быстрый вариант?
|
|||
1
Rie
26.11.11
✎
19:18
|
(0) Тебе вообще весь? Напрочь? Грохни таблицу целиком.
|
|||
2
Rie
26.11.11
✎
19:20
|
+(1) Хотя стоп. Цены - у них периодические реквизиты есть?
|
|||
3
Guk
26.11.11
✎
19:20
|
(2) ессно. если грохнуть только таблицу справочника, то константы то останутся...
|
|||
4
Rie
26.11.11
✎
19:22
|
Тогда почистить константы - а потом грохнуть таблицу. Используя или 1С++, если есть. Или ADO, если нет 1С++.
|
|||
5
shegy
26.11.11
✎
19:23
|
Весь, напрочь, просто один умник через одно место обработку написал, по записи цен, в итоге такая х..., творится в справочнике цен, решил все грохнуть,а цены записывать при проведении поступления ТМЦ
|
|||
6
shegy
26.11.11
✎
19:24
|
Не с 1С++ не с ADO дело не когда не имел. есть еще вариант, а то пока разбираться буду, еще больше времени пройдет
|
|||
7
Rie
26.11.11
✎
19:24
|
(5) Так 1С++ имеется или нет?
|
|||
8
Rie
26.11.11
✎
19:25
|
(6) Там особо разбираться не надо. Посмотри в 1Cv7.DD, какая таблица соответствует справочнику цен.
|
|||
9
МастерВопросов
26.11.11
✎
19:26
|
(8) это таблица констант, т.к. цена периодический реквизит
|
|||
10
shegy
26.11.11
✎
19:26
|
ну с 1Cv7.DD это все понятно, что дальше то делать?
|
|||
11
Rie
26.11.11
✎
19:26
|
(9) Ему нужны обе таблицы.
|
|||
12
Rie
26.11.11
✎
19:27
|
(10) База DBF или SQL?
|
|||
13
shegy
26.11.11
✎
19:27
|
DBF
|
|||
14
МастерВопросов
26.11.11
✎
19:28
|
Не совсем в тему канеш...
При интерактивной пометке на удаление элемента справочника владельца, база задает вопрос: "пометить на удаление подчиненные справочники?" - отвечаешь "да". Потом снимаешь пометку на удаление с владельца и на вопрос "снять пометку с подчиненных" отвечаешь "нет". У тебя кстати не один владелец всех этих цен? |
|||
15
shegy
26.11.11
✎
19:29
|
неа, разные
|
|||
16
shegy
26.11.11
✎
19:30
|
прошло минут 15 еще даже 1 % не удалился
|
|||
17
Rie
26.11.11
✎
19:31
|
(13) Это хуже. Установи драйвер для Visual FoxPro - например, отсюда: http://www.onlinedisk.ru/file/776979/
|
|||
18
shegy
26.11.11
✎
19:32
|
и что дальше?
|
|||
19
МастерВопросов
26.11.11
✎
19:35
|
(5) закеж код, который создавал неправильные цены, может там что интересного.
А новые цены сколько времени создавались? Почему нельзя столько же потратить на их удаление. |
|||
20
Rie
26.11.11
✎
19:35
|
Потом
СтрокаСоединения = "Provider=VFPOLEDB.1;Deleted=Yes;Data Source="+КаталогИБ()+";Mode=ReadWrite;Extended Properties='';User ID='';Password="";Mask Password=False;Collating Sequence=MACHINE;DSN=''"; Соединение = СоздатьОбъект("ADODB.Connection"); Соединение.Open(СтрокаСоединения,,,); |
|||
21
МастерВопросов
26.11.11
✎
19:38
|
Дурацкий вопрос: ты хоть монопольно в базе?
|
|||
22
shegy
26.11.11
✎
19:38
|
(19) Ну как тебе сказать, видимо потому-что база с апреля месяца и каждый день после прихода товара, создавались новые записи, причем из разговора с людьми, которые пользуются базой, записывались данные не только по товару из приходу. но и по другому товару
|
|||
23
shegy
26.11.11
✎
19:38
|
(21) в базе монопольно
|
|||
24
shegy
26.11.11
✎
19:39
|
(20) а дальше?
Я так понимаю User ID='' это имя пользователя в базе, так? |
|||
25
Rie
26.11.11
✎
19:41
|
(24) Нет. Там пустая строка. Дальше
ТекстЗапроса = "DELETE [1SCONST] |FROM [1SCONST] Constants | INNER JOIN SCНомерСправочникаЦен Prices | ON Prices.ID=Constants.OBJID |"; Соединение.Execute(ТекстЗапроса,,); |
|||
26
shegy
26.11.11
✎
19:42
|
(25) енто все?
|
|||
27
Rie
26.11.11
✎
19:42
|
+(25) НомерСправочникаЦен - это цифирь такая, которую в 1Cv7.DD посмотришь.
Ну и затем ТекстЗапроса = "DELETE FROM SCНомерСправочникаЦен"; Соединение.Execute(ТекстЗапроса,,); |
|||
28
shegy
26.11.11
✎
19:43
|
жесть, понял, спасибо, сейчас попробую
|
|||
29
Rie
26.11.11
✎
19:44
|
(26) Вот теперь всё.
Только тренируйся на копии базы сначала. И кто-нибудь из знающий - гляньте мой код, где-то мог и очепятаться, и описаться (ударение по выбору). |
|||
30
zak555
26.11.11
✎
19:45
|
del *.dbf
?? |
|||
31
shegy
26.11.11
✎
19:45
|
(29) ну про копию это понятно, но вот этим "И кто-нибудь из знающий - гляньте мой код, где-то мог и очепятаться, и описаться (ударение по выбору)." сразу настроение поднял, какие последствия могут быть?
|
|||
32
aka AMIGO
26.11.11
✎
19:46
|
что за конфа?
|
|||
33
shegy
26.11.11
✎
19:48
|
типовая торговля и склад
|
|||
34
Rie
26.11.11
✎
19:49
|
(31) Никаких. Я мог ошибиться в строке соединения - тогда просто не подконнектишься к базе.
Мог ошибиться в запросе на очистку таблицы констант - тогда удалишь пару-тройку реквизитов у других справочников :-) Но я сейчас ещё разок этот код гляну сам. |
|||
35
shegy
26.11.11
✎
19:49
|
Соединение.Open(СтрокаСоединения,,,);
{C:\USERS\SHEGY\DESKTOP\УДАЛИТЬ ЧЕРЕЗ ADO.ERT(6)}: ADODB.Connection: Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом. |
|||
36
zak555
26.11.11
✎
19:50
|
чувствуется мне, что все проблемы кроются в нелицензионной винде
|
|||
37
shegy
26.11.11
✎
19:51
|
(36) это сейчас к чему?
|
|||
38
МастерВопросов
26.11.11
✎
19:51
|
(22) по идее можно из майского бекапа взять файл const.dbf (или как он там называется) + файл справочника цен и их подменить в рабочей базе.
Но так ты грохнешь все периодические реквизиты и константы с мая. Так что лучше не делать. |
|||
39
Rie
26.11.11
✎
19:51
|
(35) Строка соединения - именно такая, как в (20)?
|
|||
40
shegy
26.11.11
✎
19:52
|
ну да, не чего не менял
|
|||
41
shegy
26.11.11
✎
19:54
|
а то что я монопольно в базе, это не играет роли?
|
|||
42
Rie
26.11.11
✎
19:57
|
(40) Попробуй так:
СтрокаСоединения = "Provider=VFPOLEDB.1;Null=Yes;Exclusive=No;Data Source="+КаталогИБ()+";Mode=ReadWrite;Extended Properties="""";User ID="""";Password="""";Mask Password=False;Collating Sequence=MACHINE;DSN="""";" (41) Ну и как к тебе подключаться-то, если ты - монопольно в базе? |
|||
43
МастерВопросов
26.11.11
✎
19:57
|
(41) играет, надо не монопольно. Т.к. ты пытаешься еще раз подключиться к базе, но уже через ФоксПро провайдера.
|
|||
44
shegy
26.11.11
✎
19:58
|
ну ладно, все понял, исправлюсь
(42) сейчас попробую |
|||
45
shegy
26.11.11
✎
20:00
|
Вроде как поперло, о результатах сообщу
|
|||
46
shegy
26.11.11
✎
20:01
|
Rie - может где есть в сети справочка по ADO
|
|||
47
shegy
26.11.11
✎
20:01
|
и последний вроде как вопрос, а на сколько долго обработка будет таблицы грохать?
|
|||
48
Rie
26.11.11
✎
20:02
|
(46) Есть, конечно же. На msdn.microsoft.com и на www.w3schools.com посмотри.
|
|||
49
Rie
26.11.11
✎
20:02
|
(47) Почти мгновенно.
|
|||
50
Rie
26.11.11
✎
20:04
|
(47) И ещё посмотри насчёт 1SCONST (погугли, к примеру). Что-то нет у меня уверенности, что соединения по OBJID достаточно.
|
|||
51
Ёпрст
26.11.11
✎
20:05
|
(0) delete from 1sconst where id = $ИсторияРеквизита.Цены.Цена
delete from $Справочник.Цены |
|||
52
shegy
26.11.11
✎
20:06
|
Все всем спасибо, все грохнул, сейчас буду пробовать проводить документы, дабы встало все по человеческий
|
|||
53
Rie
26.11.11
✎
20:06
|
+(50) И на самом деле правильно гложет - там должен ещё ID реквизита участвовать.
|
|||
54
Ёпрст
26.11.11
✎
20:06
|
+51 потом упаковать таблички
|
|||
55
shegy
26.11.11
✎
20:07
|
чейт в обще не чего, не понял
|
|||
56
Rie
26.11.11
✎
20:07
|
(52) См. (51). Это правильно, а (25) - нет.
|
|||
57
Rie
26.11.11
✎
20:08
|
+(56) $ИсточнияРеквизита.Цены.Цена - это из 1С++, в ADO нужно ставить сам ID реквизита.
|
|||
58
МастерВопросов
26.11.11
✎
20:09
|
(46) Вопрос по прямому запросу
http://www.1cpp.ru/forum/YaBB.pl?num=1148874473 там и про Адо тоже были примеры, вроде. |
|||
59
shegy
26.11.11
✎
20:13
|
Т.е. получается должно быть так:
ТекстЗапроса = "DELETE FROM 1SCONST Constants where id = $ИсторияРеквизита.Цены.Цена"; Соединение.Execute(ТекстЗапроса,,); Только не пойму от куда брать $ИсторияРеквизита.Цены.Цена??? |
|||
60
shegy
26.11.11
✎
20:17
|
а блин, так это и надо так писать?
|
|||
61
shegy
26.11.11
✎
20:20
|
Народ где взять этот ID?
|
|||
62
Rie
26.11.11
✎
20:24
|
(61) В 1Cv7.MD
|
|||
63
shegy
26.11.11
✎
20:25
|
эээ, в смысле, просто написать $Справочник.Цены.Цена ???
|
|||
64
Rie
26.11.11
✎
20:25
|
+(62) Лучше скачай 1С++ c www.1cpp.ru
Драйвер у тебя уже стоит, так что добавишь одну dll - и наступит счастье. |
|||
65
shegy
26.11.11
✎
20:26
|
а без 1с++ в обще не как не получится?
|
|||
66
Rie
26.11.11
✎
20:26
|
(63) Нет.
Если у тебя стоит что-то, умеющее читать составной документ (например, Far с плагином), то залезаешь им в 1Cv7.MD и смотришь. |
|||
67
Rie
26.11.11
✎
20:26
|
(65) У тебя Торговля - совсем-совсем типовая?
|
|||
68
shegy
26.11.11
✎
20:27
|
ну практический
|
|||
69
shegy
26.11.11
✎
20:28
|
скачал я 1с++, куда его засунуть в каталог с базой или в BIN?
|
|||
70
Rie
26.11.11
✎
20:30
|
+(66) Или ещё проще - создай пустую базу с тем же MD, убери в этой пустой базе признак периодического реквизита с Цена и посмотри в DD его ID. Вроде как должен совпадать.
(69) В BIN |
|||
71
shegy
26.11.11
✎
20:32
|
эксперименты с мд, это пипец, лучше подскажите как при помощи 1с++ сделать все это дело, подключаться так же? Текст запроса какой писать?
|
|||
72
Rie
26.11.11
✎
20:34
|
(70) Если используешь 1C++, то
Соединение = СоздатьОбъект("OLEDBData"); Соединение.Соединение(СтрокаСоединения); Запрос = Соединение.СоздатьКоманду(); Запрос.Выполнить(ТекстЗапроса); Тексты запросов - в (51). |
|||
73
Rie
26.11.11
✎
20:35
|
+(72) 1С++ - это внешняя компонента.
|
|||
74
Rie
26.11.11
✎
20:36
|
+(73) То есть, надо
ЗагрузитьВнешнююКомпоненту("1cpp.dll"); перед тем, как. |
|||
75
shegy
26.11.11
✎
20:36
|
delete from 1sconst where id = $ИсторияРеквизита.Цены.Цена
delete from $Справочник.Цены а это 2 разных запроса или один, можно увидеть как он должен быть, а то ну совсем не в теме, как это работает, будет время обязательно изучу |
|||
76
mdocs
26.11.11
✎
20:36
|
Сколько миллионов записей в справочнике Цены?
|
|||
77
Rie
26.11.11
✎
20:36
|
(75) Два разных.
Сначала первый, потом - второй. После выполнения первого у тебя все цены будут с пустыми значениями. |
|||
78
shegy
26.11.11
✎
20:43
|
Всем спасибо, все получилось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |