|   |   | 
| 
 | 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 | 
        Всем спасибо, все получилось     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |