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

29.10.10

Задачи пользователя - Поиск данных

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

Скачать исходный код

Наименование Файл Версия Размер
Поиск Ссылок
.ert 102,00Kb
217
.ert 102,00Kb 217 Скачать бесплатно

См. также

Универсальная обработка навигации по метаданным 1С:Предприятия 7.7 для пользователя (навигатор - органайзер открывает любые объекты в режиме 1С:Предприятия)

Поиск данных Платформа 1С v7.7 Абонемент ($m)

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

1 стартмани

09.10.2021    4899    0    ksnik    1    

6

Поиск и исправление дублей штрихкодов для номенклатурных единиц измерения

Поиск данных Чистка данных Логистика, склад и ТМЦ Оперативный учет 7.7 1С:Торговля и склад 7.7 Управленческий учет Абонемент ($m)

Простая и удобная обработка предназначена для поиска и исправления задублированных (повторяющихся) номенклатурных штрихкодов справочника Единицы. Также она даёт возможность посмотреть номенклатурные остатки. Полезна в случаях, когда номенклатура сопоставляется по штрихкоду с другими внешними источниками, а именно с модулем "Обмент ГИСМТ".

1 стартмани

19.11.2020    7690    1    Kuzya_brаtsk    4    

8

Вычленение из строки с набором букв и цифр номера сотового телефона

Поиск данных Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Россия Абонемент ($m)

Для 1с77 ТиС 9.2 отчет - выборка всех сотовых телефонов из справочника контрагенты для передачи в СМС рассылку. Для 1с8 Обработка с алгоритмом распознавания номера телефона из строки.

1 стартмани

20.03.2020    5332    5    AlexHelmer    1    

2

Где-то была обработка

Поиск данных Инструменты администратора БД Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка 1С 7.7 осуществляющая поиск по истории открытых обработок. Обработки могли быть открыты программистом в конфигураторе и пользователем в режиме предприятия. В редакции 0.5 добавлены плюшечки: Наравне с открытием обработки добавлено, открытие папки содержащей обработку. Так же понятно что поскольку история хранится в реестре, то данная обработка является примером для работы с реестром. Строго говоря в то время для эксплуатации реестра MSScriptControl.ScriptControl . Крест возле имения базы на форме означает что база нет (нет файла 1CV7.MD по указанному пути). Соответственно крест возле имени обработки означает что обработки нет по указанному пути. Добавлена сортировка. Убрана возможность разобрать понравившуюся обработку. Добавлена возможность показать в папке (не путать с открыть папку). Добавлена возможность скопировать обработку. Добавлена выборка обработок по истории отладчика.

1 стартмани

07.03.2013    14943    21    lamer19    25    

14

Поиск в движениях регистров битых ссылок на документы (<объект не найден>) и их пометка, как измененных, в другой базе для переноса по УРБД.

Поиск данных Обмен между базами 1C Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка предназначена для поиска в движениях регистров оперативного учета битых ссылок на документы (<объект не найден>), записи ID этих документов в файл и их пометки, как измененных, в другой (не поврежденной) базе для переноса в исходную с помощью УРБД.

1 стартмани

29.10.2012    21478    32    evgeniybel    3    

7

Поиск и замена дублей по артикулу в справочнике "Номенклатура" (торговля 7.7)

Поиск данных Логистика, склад и ТМЦ Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Абонемент ($m)

Обработка просматривает документы: Счет Входящий, Счет, Приходную накладную, расходную накладную. Если находятся движения по дублям, заменяет движение на первый из нашедших.

1 стартмани

09.06.2012    16550    36    serko8547    1    

2

Поиск и исправление повторов элементов в справочниках

Поиск данных Корректировка данных Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Конфигурации 1cv7 1С:Бюджет муниципального образования 7.7 1С:Бухгалтерия 7.7 1С:Зарплата и кадры 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Производство+Услуги+Бухгалтерия 1С:Бухгалтерия для бюджетных учреждений 7.7 Россия Абонемент ($m)

Обработка предназначена для поиска и ИСПРАВЛЕНИЯ(в полной версии) одинаковых по КОДУ элементов в указанном справочнике. Это бывает необходимо, например, если произошел сбой в работе 1С, если снят флаг "Контроль уникальности", если есть разные элементы, которые должны быть объединены в один.

1 стартмани

05.06.2012    14069    47    Gluk    1    

2

Перебор всех файлов в папке

Загрузка и выгрузка в Excel Поиск данных Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Обработка берет все файлы эксель в выбранной папке, затем перебирает все эти файлы.

1 стартмани

03.05.2012    20332    33    l2d808    5    

-2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Утюг 56 18.11.09 13:30 Сейчас в теме
глРаспечататьТаблицу<<?>>(тзСсылок);
{C:\TEMP\ПОИСКССЫЛОК.ERT(361)}: Процедура не обнаружена (глРаспечататьТаблицу)
5. MadDAD 152 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 152 19.11.09 10:40 Сейчас в теме
(6) Точно :) Затупил... Хотя у меня работает с таким запросом.
10. Утюг 56 19.11.09 10:50 Сейчас в теме
О, пока разглядывал, тут уже написали. Но Boog (6) не до конца прав - см. мое (9), п.2.
12. MadDAD 152 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 152 27.11.09 11:49 Сейчас в теме
(14)
Не был предусмотрен вариант справочников с одним уровнем.
Не был предусмотрен вариант остутствия объекта в видах субконто.
16. jj_mail 27.11.09 12:34 Сейчас в теме
Заголовок = глСтрРасставитьПробелы<<?>>(тз.ИмяКолонки(НомерКолонки));
{D:\ПОИСКССЫЛОК.ERT(33)}: Функция не обнаружена (глСтрРасставитьПробелы)
17. MadDAD 152 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 152 26.10.10 02:42 Сейчас в теме
(19) Спасибо за указанный недочет. Для собственного пользования обработка давно уже доработана, здесь не обновил.

Самое большое время тратится на запрос по таблице проводок. Если эта таблица не интересует - можно смело закомментировать. Вообще обработка и создавалась для того чтобы можно было искать ссылки выборочно а не по всем метаданным.
20. MadDAD 152 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 152 29.10.10 11:45 Сейчас в теме
(22) проверил сейчас. Действительно - верно 'О1'. Видимо при разработке недостаточно тестировал.

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

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

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