Поиск ссылок прямыми запросами для SQL версии.

Публикация № 60727 13.11.09

Администрирование - Администрирование данных 1С - Поиск данных

Поиск ссылок стандартным методом довольно долгая процедура.
В этой обработке реализован обход метаданных для поиска реквизитов, которые могут содержать ссылку на искомый объект, составление и выполнение запросов по найденным таблицам.
Для работы необходима компонента 1С++.

Скачать файлы

Наименование Файл Версия Размер
Поиск Ссылок

.ert 102,00Kb
193
.ert 102,00Kb 193 Скачать бесплатно

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Утюг 56 18.11.09 13:30 Сейчас в теме
глРаспечататьТаблицу<<?>>(тзСсылок);
{C:\TEMP\ПОИСКССЫЛОК.ERT(361)}: Процедура не обнаружена (глРаспечататьТаблицу)
5. MadDAD 144 19.11.09 02:41 Сейчас в теме
(1), (2). Прошу прощения не отвязал от конфгурации.
(3) - Максимально количество субконто не определялось, стояло 4 по умолчанию.

Добавил недостающую процедуру вывода таблицы значений - удобно, если не хочется делать печатную формую

Поправил определение количества субконто.
2. Boog 50 18.11.09 15:36 Сейчас в теме
глРаспечататьТаблицу<<?>>(тзСсылок);
{E:\!1C_BASE\EXTFORMS\1\POISKSSYLOK.ERT(361)}: Процедура не обнаружена (глРаспечататьТаблицу)
3. Boog 50 18.11.09 15:39 Сейчас в теме
Извиняюсь за дубль - не обновил страницу.
4. Boog 50 18.11.09 16:56 Сейчас в теме
Ошибка обработки запроса:

SELECT DISTINCT
:Объект As [Объект $Справочник.Контрагенты]
,Tab.DOCID As [Ссылка $Документ]
,'Субконто' As Реквизит
,'Проводка' As Метаданные
,J.IDDOCDEF AS Ссылка_вид
, CASE :Объект
When
Tab.DTSC0 then 'Дт1'
When
Tab.KTSC0 then 'Кт1'
When
Tab.DTSC1 then 'Дт1'
When
Tab.KTSC1 then 'Кт1'
When
Tab.DTSC2 then 'Дт2'
When
Tab.KTSC2 then 'Кт2'
When
Tab.DTSC3 then 'Дт3'
When
Tab.KTSC3 then 'Кт3'
END As Субконто
FROM
_1SENTRY As Tab
INNER JOIN _1sjourn J On J.IDDOC = Tab.DOCID
where (Tab.DTSC0 = :Объект And Tab.VDTSC0 in (450)) OR (Tab.KTSC0 = :Объект And Tab.VKTSC0 in (450))
OR (Tab.DTSC1 = :Объект And Tab.VDTSC1 in (450)) OR (Tab.KTSC1 = :Объект And Tab.VKTSC1 in (450))
OR (Tab.DTSC2 = :Объект And Tab.VDTSC2 in (450)) OR (Tab.KTSC2 = :Объект And Tab.VKTSC2 in (450))
OR (Tab.DTSC3 = :Объект And Tab.VDTSC3 in (450)) OR (Tab.KTSC3 = :Объект And Tab.VKTSC3 in (450))

State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'DTSC3'.
6. Boog 50 19.11.09 10:34 Сейчас в теме
В процедуре НайтиРеквизитыСсылок в цикле по субконто, нужно делать цикл от 1 по КолвоСубконто-1
и в ДопКолонке писать
When
Tab.DTSC"+Субконто+" then 'Дт"+(Субконто+1)+"'
When
Tab.KTSC"+Субконто+" then 'Кт"+(Субконто+1)+"'";

Тогда взлетит.
7. MadDAD 144 19.11.09 10:40 Сейчас в теме
(6) Точно :) Затупил... Хотя у меня работает с таким запросом.
10. Утюг 56 19.11.09 10:50 Сейчас в теме
О, пока разглядывал, тут уже написали. Но Boog (6) не до конца прав - см. мое (9), п.2.
12. MadDAD 144 19.11.09 11:15 Сейчас в теме
(10) В принципе то же самое, только у меня первые субконто задаются до цикла по остальным, тогда цикл с 1.

Добавил определение наличия таблицы, поправил максимально количество субконто, (6)поправил нумерацию субконто.

(8) Ссылка_вид содержит идентификатор вида документа для типизации документа в запросе. Если идет запрос по регистрам - в качестве сылки возвращается документ, который делал движения. В остальных случаях если ссылка не документ, то и вид документа не нужен, соответственно он пустой.
Это служебное поле, которое в принципе можно прятать.
8. Boog 50 19.11.09 10:47 Сейчас в теме
А что в колонке Ссылка_вид?
Если ссылка найдена в движении регистра, то там какое-то число, в остальных строках там пусто.
9. Утюг 56 19.11.09 10:48 Сейчас в теме
1. Еще бы надо проверять наличие таблицы _1sentry и, в зависимости от ее наличия, обрабатывать или пропускать строки 317-340. В ТиС и ЗиК ее нет и получаем ошибку.
2. В _1sentry нумерация субконто начинается с ноля, т.е. при 3-х субконто поля будут называться DTSC0, DTSC1, DTSC2. А в обработке они начинаются с единицы, в связи с чем имеем ошибку - Недопустимое имя столбца "DTSC3". Соответственно, строку 330 надо изменить на
Для Субконто = 0 По КолвоСубконто-1 Цикл
11. Boog 50 19.11.09 11:15 Сейчас в теме
С проверкой на ведение бух. учета в базе вообще - согласен.
По поводу цикла от 0 по КолвоСубконто-1:
там перед циклом определяются DTSC0 и KTSC0. Отдельно. (и условия для них).
13. Утюг 56 19.11.09 11:40 Сейчас в теме
(11) впопыхах не заметил
(12) угу, теперь летает
14. jj_mail 20.11.09 13:00 Сейчас в теме
Ошибка обработки запроса:

SELECT DISTINCT
:Объект As [Объект $Справочник.Фирмы]
,Tab.ID As [Ссылка $Справочник.Фирмы]
,'Родитель' As Реквизит
,'Справочник.Фирмы' As Метаданные

FROM
$Справочник.Фирмы As Tab

where Tab.PARENTID = :Объект

State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'PARENTID'.
--------------------------
Ошибка обработки запроса:

SELECT DISTINCT
:Объект As [Объект $Справочник.Фирмы]
,Tab.DOCID As [Ссылка $Документ]
,'Субконто' As Реквизит
,'Проводка' As Метаданные
,J.IDDOCDEF AS Ссылка_вид
, CASE :Объект
When
Tab.DTSC0 then 'Дт1'
When
Tab.KTSC0 then 'Кт1'
When
Tab.DTSC1 then 'Дт2'
When
Tab.KTSC1 then 'Кт2'
When
Tab.DTSC2 then 'Дт3'
When
Tab.KTSC2 then 'Кт3'
END As Субконто
FROM
_1SENTRY As Tab
INNER JOIN _1sjourn J On J.IDDOC = Tab.DOCID
where (Tab.DTSC0 = :Объект And Tab.VDTSC0 in ()) OR (Tab.KTSC0 = :Объект And Tab.VKTSC0 in ())
OR (Tab.DTSC1 = :Объект And Tab.VDTSC1 in ()) OR (Tab.KTSC1 = :Объект And Tab.VKTSC1 in ())
OR (Tab.DTSC2 = :Объект And Tab.VDTSC2 in ()) OR (Tab.KTSC2 = :Объект And Tab.VKTSC2 in ())

State 42000, native 102, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ')'.
15. MadDAD 144 27.11.09 11:49 Сейчас в теме
(14)
Не был предусмотрен вариант справочников с одним уровнем.
Не был предусмотрен вариант остутствия объекта в видах субконто.
16. jj_mail 27.11.09 12:34 Сейчас в теме
Заголовок = глСтрРасставитьПробелы<<?>>(тз.ИмяКолонки(НомерКолонки));
{D:\ПОИСКССЫЛОК.ERT(33)}: Функция не обнаружена (глСтрРасставитьПробелы)
17. MadDAD 144 27.11.09 12:34 Сейчас в теме
(16) Извиняюсь, выгрузил старую версию. Сейчас уже лежит новая.
18. afanasko 35 23.12.09 17:06 Сейчас в теме
18. Очень интересно сделано. Код понравился ))) +
19. maxim_ro 25.10.10 17:26 Сейчас в теме
Как раз искал похожую обработку. Все вроде бы хорошо но два нюанса. Стандартная функция НайтиСсылки() в большинстве случаев работает у меня быстрее но если в этой обработке убираю лишние метаданные тогда она работает намного быстрее чем стандартный механизм. Но эта обработка не учитывает метаданные где есть реквизиты неопределенного типа!
21. MadDAD 144 26.10.10 02:42 Сейчас в теме
(19) Спасибо за указанный недочет. Для собственного пользования обработка давно уже доработана, здесь не обновил.

Самое большое время тратится на запрос по таблице проводок. Если эта таблица не интересует - можно смело закомментировать. Вообще обработка и создавалась для того чтобы можно было искать ссылки выборочно а не по всем метаданным.
20. MadDAD 144 26.10.10 02:39 Сейчас в теме
Новая версия. Теперь учтены реквизиты неопределенного типа (Спасибо maxim_ro).
22. s_s_v 29.10.10 11:15 Сейчас в теме
Для реквизитов неопределенного типа в отчете для документа стоит

сзНеопределенных.Установить("Документ", "'A1'+");

т.е. в запросах получается типа того
where Tab.sp2265 = 'A1'+' 7K'+' 65GAE '

Провел трассировку стандартного метода НайтиСсылки() и там во временную табл. для документа передается 'O1', т.е. строка должна получиться вида
where Tab.sp2265 = 'О1'+' 7K'+' 65GAE '


Может подскажете как всетаки корректно определить правильное значение для документа или справочника.

23. MadDAD 144 29.10.10 11:45 Сейчас в теме
(22) проверил сейчас. Действительно - верно 'О1'. Видимо при разработке недостаточно тестировал.

Версия обновлена.
24. s_s_v 29.10.10 12:00 Сейчас в теме
Кстати я для справочника не проверял.

И еще меня это очень заинтересовало хочу доработать, а пока просто подкину идею по ускорению.
Если ищем ссылки на документ, то вероятность того, что на данный (искомый) документ встретятся ссылки в документах или на регистрах раньше самого документа чрезвычайно мала. А значит нет смысла проверять всю таблицу в запросе, а нужно отсекать по дате времени документа. Хотя не спорю могут быть специфичные ситуации, когда документ передвигают по датам и времени.

Но если добавить фильтры по времени, то на больших базах для документов поиск можно сократить в разы
Оставьте свое сообщение

См. также

Замена элементов в реквизитах и проводках документов, реквизитах справочников и движениях регистров. (SQL)

Чистка базы Поиск данных v7.7 1cv7.md Россия Бесплатно (free)

Иногда возникает необходимость заменить один элемент справочника на другой по всей конфигурации. При этом нежелательно перепроводить документы. Эта разработка позволит проделать такую операцию на SQL-базах

26.10.2010    18165    302    MadDAD    17    

Обработка для поиска Контрагентов

Поиск данных Универсальные функции Обработка справочников v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Не первая и не последняя.. Не лучшая, и не худшая. Просто вариант поиска контрагентов по нескольким словам или их частям в наименовании.

19.05.2010    12611    112    aka AMIGO    7    

Поиск и замена дублирующихся элементов справочников, КОД ОТКРЫТ, для 7.7

Сервисные утилиты Поиск данных Универсальные обработки v7.7 1cv7.md Бесплатно (free)

1. Работа над обработкой продолжается. Критика (любая) принимается. 2. Для установки: 2.1 Переименуйте файл WithoutConf.exe_ в WithoutConf.exe и разархивируйте (запустите на выполнение). 2.2 Каталог DLL скопируйте в Вашу базу (копию !!!), каталог ExtForms в одноименный каталог Вашей базы. 3. Для открытия: Сервис Дополнительные возможности 1С:Студио: Отчёты и обработки Поиск и замена элементов справочников 4. В обработке использованы 1С++, FormEx, StrMatch

11.05.2010    25432    624    Незнайка    64    

Поиск реализаций без выписаных Счет-фактур

Поиск данных v77::ОУ 1С7:ТиС НУ НДС Бесплатно (free)

Возникают случаи когда оператор не выписал счет-фактуру по реализации. Обработка выполняет поиск этих реализаций. Присутствует отбор по контрагенту и типу договора.

12.01.2010    10807    143    Maks_Alexey    10    

Обработки для печати и исправления реквизитов табличных частей документов (унив.)

Обработка документов Поиск данных Тестирование и исправление v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

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

28.09.2009    16002    288    swimdog    7    

[IFilter] Поиск в содержании файлов из 1С (ВК, .NET)

Разработка внешних компонент Поиск данных v7.7 v8 1cv8.cf 1cv7.md Бесплатно (free)

Компонента для работы с фильтрами поисковых систем. Получает текст из файла по установленном в системе фильтрам. Индексирует и ищет файлы по их содержанию (аналог Desktop Search) Поддерживает *.doc, *.xls, *.txt, *.ppt. Дополнительные фильтры можно скачать с http://www.ifilter.org/Links.htm

24.03.2009    34593    142    Душелов    44    

ЗиК: Исправление задвоенных шаблонов проводок

Чистка базы Поиск данных Тестирование и исправление Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v77::Расчет 1С7:ЗиК БУ Бесплатно (free)

Обработка предназначена для поиска одинаковых шаблонов проводок конфигурации Зарплата+Кадры 2.3, поиска и замены ссылок на один из них.

21.10.2008    18729    614    poppy    6    

Поиск одинаковых наименований в справочниках

Чистка базы Поиск данных Тестирование и исправление v77::БУ 1С7:Бух Бесплатно (free)

Обработка по кнопке "Поиск одинаковых наименований" ищет одинаковые по наименованию позиции справочника (Сотрудники или Контрагенты - по выбору!!!). По кнопке "Сформировать" перекодирует справочники в нормальный красивый вид!!! Писал быстро, так что не ругайте - мож кому пригодиться...

19.02.2008    11320    521    alegator    4    

Замена вида расчета

Поиск данных Тестирование и исправление Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v77::Расчет 1С7:ЗиК Бесплатно (free)

Замена вида расчета. Иногда пользователи заводят произвольные виды расчетов, хотя для тех же целей имеются предопределенные и наоборот. Например премии вводили предопределенным "Премия разовая", а потом не устраивает как она входит в расчет среднего. Данная обработка призвана исправить ситуацию. Не забывайте делать архивных копий!

18.02.2008    15527    1156    Kapitan911    6    

Поиск ТМЦ в документах

Управленческие Учет ТМЦ Поиск данных Учет ТМЦ v77::ОУ 1С7:ТиС Россия УУ Бесплатно (free)

Определяет разницу по количеству товара в документах.

06.12.2007    12777    413    Delon    1    

Чистка справочников

Чистка базы Поиск данных Тестирование и исправление v7.7 1cv7.md Бесплатно (free)

Обработка позволяет удалять дублированные элементы на которые уже существуют ссылки.

29.11.2007    9996    599    Kolek    10    

Поиск документов по номеру, используя нечеткое сравнение строк...

Поиск данных v77::ОУ 1С7:ТиС Россия Бесплатно (free)

Поиск документов по номеру по вхождению подстроки. Используются прямые запросы к SQL и DBF. Обычным запросом 1С не реализовано, соответственно не работает на dbf базах в монопольном режиме. Найденные документы группируются по годам и видам. Предусмотрено указание периода поиска документов (идея Victor Bolbat). Требуется наличие предварительно загруженных 1cpp.dll и formex.dll

26.10.2007    23990    321    Aleksey.Bochkov    11    

FormEx. Быстрый поиск в поле ввода 2.1

Поиск данных Разработка внешних компонент Универсальные функции v7.7 1cv7.md Бесплатно (free)

Универсальный инструмент пользователя, требует FormEx v2.0.5.0 - http://dorex.pro/?projects&formex&download Реализация механизма быстрого поиска элемента по первым символам непосредственно в поле ввода. Ограничения: Не работает для полей ввода многострочной части.

26.09.2007    20426    729    item    27    

Выборка документов

Обработка документов Поиск данных v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Выборка документов в базе за период по значению какого-либо реквизита шапки. Работает на всех конфигурациях.

04.06.2007    11997    1028    sevenlis    7    

Поиск номенклатуры (OLE DB) ТиС 9.2. + Любой справочник в любой конфе 7.7

Поиск данных v77::ОУ 1С7:ТиС Россия Бесплатно (free)

1.Шпаргалка. Пример НЕ универсальной работы с OLE DB дровами и Реестром win200x. 2. С возможностью выбрать Справочник и реквизиты для поиска.

02.06.2007    10904    352    dav405    3    

Универсальная обработка по поиску дубликатов в справочниках

Чистка базы Поиск данных Тестирование и исправление v77::ОУ v77::БУ v77::Расчет 1cv7.md Бесплатно (free)

Универсальная обработка по поиску дубликатов в любых справочниках по любым реквизитам!!!Бомба!

15.05.2007    18022    1415    denukraine    27    

Поиск в базах

Поиск данных v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Обработка осуществляет поиск в любом справочнике во всех зарегистрированных базах по наименованию. Может быть полезна при наличии большого количества однотипных баз.

23.03.2007    12631    362    MadDAD    1    

Замена элементов справочников по всей базе

Чистка базы Поиск данных Тестирование и исправление v77::БУ 1С7:Бух Бесплатно (free)

Заменяет один элемент справочника на другой, после чего заменяемый элемент можно удалить.[b] ДЛЯ ТЕХ, КТО В ТАНКЕ, обработка заточена под компоненту "Бухгалтерский учет", и ДОКУМЕНТЫ НЕ ПЕРЕПРОВОДИТ.[/b] Кто сталкивался с гиговыми базами и знает, что такое "закрытый период", тот поймет и оценит.

30.08.2006    16389    821    defini    12    

Поиск похожих документов по шаблону

Поиск данных v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Данная разработка предназначена для обнаружения похожих друг на друга документов в информационной базе с любой конфигурацией на платформе 1С: Предприятие 7.7

16.08.2006    13494    883    OlegTor    6    

Быстрый поиск по подстроке в любом!!! списке (или ТЗ на форме) при наборе с клавиатуры.

Поиск данных v7.7 1cv7.md Россия Бесплатно (free)

Работает для всех (в том числе и системных!) списков 1С и для таблиц значений на форме. Вызывается нажатием ALT-F7.

10.08.2006    25943    1070    antonrost    15    

Быстрый поиск документов по числовой составляющей номера.

Поиск данных v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Наверняка у многих бывает ситуация, когда нужно найти документ по номеру, но изобретательные пользователи (а иногда и программисты) вносят такое большое количество и разнообразие различных префиксов и прочего мусора, что на слух догадаться что такое, например, "АВ С5-1236пр" абсолютно невозможно. При использовании этой разработки необходимость "чтения мыслей" отпадает. Достаточно нажать кнопку поиск (или, при желании, функциональную клавишу), ввести "1236",и на экран выводится легкий для чтения список документов с этой числовой составляющей номера, сгрупированный по фирмам и видам документов. Список фильтруется по условиям отбора и периода журнала. Пара щелчков мышью, и нужный документ активизируется. При наличии FormEx.dll список выводится в виде дерева. Если в номере вообще нет цифр, то нужно искать номер 99999999 (восемь девяток).

20.07.2006    13314    444    antonrost    13    

Поиск дубликатов элементов в справочнике по любому реквизиту

Поиск данных v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Бесплатно (free)

Универсальная обработка для поиска дубликатов элементов по любым реквизитам(в т.ч. по наименованию и коду) в любом справочнике. Ищет по полному совпадению. Ограничение: Невозможен поиск по реквизитам имеющим тип "Строка" неограниченной длины из-за внутренних ограничений языка запросов 1С.

12.07.2006    22195    1165    Kavar    4    

Поиск пользователей в Active Directory домена

Поиск данных v7.7 1cv7.md Россия Бесплатно (free)

Отчет позволяет по части имени найти в Active Directory пользователя и получить его логин и полное имя

15.05.2006    13890    509    Gmix    3    

Поиск ошибок уникальности кода в справочниках

Поиск данных Обработка справочников v77::ОУ 1cv7.md Россия Бесплатно (free)

Поиск ошибок уникальности кода в справочниках

21.04.2006    8786    510    Nafanya    10