|
Поиск дублей в справочнике | ☑ | ||
---|---|---|---|---|
0
Dersus
10.05.20
✎
10:45
|
Здравствуйте, подскажите как в момент добавления строчки(номер телефона) в табличную часть(номера телефона) в форме элемента справочника(клиенты) проверить нет ли точно такой же записи у другого клиента и получить ссылку на клиента где встречается такой же номер телефона.
|
|||
1
Dersus
10.05.20
✎
10:47
|
Версия 8.3
|
|||
2
PuhUfa
10.05.20
✎
10:50
|
Запросом
|
|||
3
Dersus
10.05.20
✎
10:55
|
(2) А как запрос должен выглядеть, приблизительно?
|
|||
4
acht
10.05.20
✎
10:57
|
(3) Выбрать ссылку из табличной части где номер телефона равен нашему номеру и ссылка не равна ссылке на нашего клиента
|
|||
5
Dersus
10.05.20
✎
11:03
|
(4) "ВЫБРАТЬ
| Клиенты.Ссылка КАК Ссылка, | КлиентыНомераТелефонаКлиента.НомерТелефонаКлиента КАК НомерТелефонаКлиента |ИЗ | Справочник.Клиенты.НомераТелефонаКлиента КАК КлиентыНомераТелефонаКлиента | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Клиенты КАК Клиенты | ПО КлиентыНомераТелефонаКлиента.Ссылка = Клиенты.Ссылка |ГДЕ | КлиентыНомераТелефонаКлиента.НомерТелефонаКлиента = &ТекСтрок" | И Клиенты.Ссылка <> Объект.Ссылка Вот у меня что-то типо этого вышло, что подправить? |
|||
6
lodger
10.05.20
✎
11:05
|
(0) первый вопрос который надо задать в данном контексте - а номера телефонов нормированы? храняться в одинаковом виде или +79992228833 89871234455 8(495)999-99-99?
второй вопрос уже запрос к таблице хранимых номеров. если ответ на первый позитивный, то полечить запрос из (5) "ВЫБРАТЬ | КлиентыНомераТелефонаКлиента.Ссылка КАК Ссылка, | КлиентыНомераТелефонаКлиента.НомерТелефонаКлиента КАК НомерТелефонаКлиента |ИЗ | Справочник.Клиенты.НомераТелефонаКлиента КАК КлиентыНомераТелефонаКлиента |ГДЕ | КлиентыНомераТелефонаКлиента.НомерТелефонаКлиента = &ТекСтрок | И КлиентыНомераТелефонаКлиента.Ссылка <> &ТекСсылка" |
|||
7
Dersus
10.05.20
✎
11:09
|
(6) &ТекСсылка мне нужно переменную завести отдельную? Ведь &ТекСтрок = Элементы.НомераКлиента.ТекущиеДанные;
|
|||
8
acht
10.05.20
✎
11:11
|
(7) В 1с8 параметры запроса не имеют никакого отношения к текущему контексту кода (как, например, в 7.7) и устанавливаются отдельно методом УстановитьПараметр, где уже передается имя, используемое внутри запроса.
|
|||
9
Dersus
10.05.20
✎
11:40
|
(8) Не совсем понял
|
|||
10
Dersus
10.05.20
✎
11:43
|
(8) (6) &НаКлиенте
Процедура НомераКлиентаПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ) ... //Поиск такого же номера у других клиентов НайтиДубликатНомераКлиента(ТекСтрок.НомерТелефонаКлиента, Объект.Ссылка) КонецПроцедуры Функция НайтиДубликатНомераКлиента(Номер,ссылка) УстановитьПапаметрЗ //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Номер = Параметры.Номер; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КлиентыНомераТелефонаКлиента.Ссылка КАК Ссылка, | КлиентыНомераТелефонаКлиента.НомерТелефонаКлиента КАК НомерТелефонаКлиента |ИЗ | Справочник.Клиенты.НомераТелефонаКлиента КАК КлиентыНомераТелефонаКлиента |ГДЕ | КлиентыНомераТелефонаКлиента.НомерТелефонаКлиента = Номер | И КлиентыНомераТелефонаКлиента.Ссылка <> ссылка"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецФункции Как мне сделать правильно, чтобы у меня сработал запрос и выдал мне например код клиента у которого встречается такой же номер? |
|||
11
acht
10.05.20
✎
11:55
|
(9) Твоя переменная в коде "ТекСтрок" не имеет никакого отношения к параметру запроса "&ТекСтрок". Значение параметра, фактически используемое запросом, устанавливается методом объекта запроса "УстановитьПараметр".
Иди-ка ты в https://online.1c.ru/books/book/17269783/ Ну и еще в обработчике ПередОкончаниемРедактирования нельзя использовать серверные методы формы с директивой компиляции &НаСервере, а также изменять свойства, которые могут привести к серверному вызову. Это можно проконтролировать, если в конфигураторе установить флажок "Проверять серверные вызовы в обработчиках событий" на вкладке "Сервис/Параметры/Запуск 1С:Предприятия/Дополнительно" и, запустив отладку, добится выполнения обработчика/ |
|||
12
Dersus
10.05.20
✎
12:03
|
(11) Так я для того, чтобы выполнить запрос создал отдельную функцию, с помощью неё то ведь можно сделать запрос?
|
|||
13
acht
10.05.20
✎
12:10
|
(12) О, точно. Еще и вот сюда сходи - https://online.1c.ru/books/book/23177431/
|
|||
14
Dersus
10.05.20
✎
12:35
|
(13) Я обязательно прочту эти книги, но мне нужно срочно данный вопрос решить, подскажите пожалуйста как должен выглядеть код?
|
|||
15
acht
10.05.20
✎
13:00
|
(14) Печалька. Посмотри на https://1lancer.ru/ или https://kwork.ru/search?query=1c
|
|||
16
Dersus
10.05.20
✎
13:45
|
(15) Ну я понял, что вы не знаете, и присылаете мне сервисы, которыми сами пользуетесь. Я лучше найду людей, которые действительно знают и могут подсказать.
|
|||
17
Fish
10.05.20
✎
16:55
|
(16) Подсказать тебе уже подсказали в (8). Ты хочешь чтобы за тебя кто-то запрос написал?
|
|||
18
Chameleon1980
10.05.20
✎
16:57
|
(16) да ты офигел говорить "не знаете"?
это букварь (азы) тебя хотят научить искать и не задавать глупых вопросов, а раз нужно срочно - иди на 1сланцер |
|||
19
Dersus
10.05.20
✎
17:11
|
(18) (17) Вопрос уже решён, помогли на другом форуме, и при чём просто словами, а не написали мне сразу готовый код.
|
|||
20
Chameleon1980
10.05.20
✎
17:42
|
(19) так и здесь словами жеж.
😜 |
|||
21
acht
10.05.20
✎
18:27
|
(19) И ты даже те слова понял? Не зря, не зря столько лет учился!
А дай-ка ссылочку на тот форум, пожалуйста. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |