Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как создать поиск клиента по номеру телефона          
Danaza Подменю пользователя
сообщение 09.03.20, 13:56
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте. В накладной есть 3 ячейки: Клиент, номер телефона и дисконтная карта. Если ввести номер дисконтной карты - автоматически выбивает Клиента и номер телефона. Если клиента вводить через каталог - автоматически выбивает дисконтную карту и номер телефона. А вот ячейка номер телефона таким способом не работает. Она имеет тип Строка. Прописав модуль она начинает работать, если изменить тип на Число, но при этом в программе происходит утеря данных уже существующих клиентов (существующие номера теряют цифры), да и при в вводе номера (0...........) 0-не вбивает.

nik389 Подменю пользователя
сообщение 09.03.20, 21:38
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 153
Из: Украина
Спасибо сказали: 37 раз
Рейтинг: 34

Danaza @ Сегодня, 13:56 * ,
И в чем вопрос? скинете код, вам укажут на ошибку, если в этом проблема

Sharzem Подменю пользователя
сообщение 11.03.20, 9:17
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

Danaza @ 09.03.20, 14:56 * ,
Потрібно в довіднику Ваших "Клієнтів" перевірити усі номери телефонів, щоб вони відповідали одному формату. Тобто, як наприклад, довжина номеру телефону не повинна перевищувати 10 цифр і має починатися з 0. Це необхідно виконати "руцями", оскілльки там можуть бути пробіли або символи (, ), +, починатися з 3 або 8. Можна і автоматом, але це потрібно дивитися.
В процедурі ПриЗаписи(), в модулі довідника необхідна перевірка на коректність (відповідність) номеру потрібному формату.
Приклад:
Функция РазобратьСтрокуНаЧисла(прСтрока)
    лпСтрока = прСтрока;
    лпКолСимв = СтрДлина(лпСтрока);
    лпИвлЧисла = "1234567890";
    лпСтрВозврата = "";
    Для к = 1 По лпКолСимв Цикл
        лпСимв = Сред(лпСтрока,к,1);
        Если Найти(лпИвлЧисла,лпСимв) <> 0 Тогда
            лпСтрВозврата = лпСтрВозврата+Строка(лпСимв);
        КонецЕсли;
    КонецЦикла;
    Если Лев(лпСтрВозврата,1) = "3" Тогда
        лпСтрВозврата = Сред(лпСтрВозврата,2,СтрДлина(лпСтрВозврата));
    КонецЕсли;
    Если Лев(лпСтрВозврата,1) = "8" Тогда
        лпСтрВозврата = Сред(лпСтрВозврата,2,СтрДлина(лпСтрВозврата));
    КонецЕсли;
    Если (Лев(лпСтрВозврата,1) <> "0") или (СтрДлина(лпСтрВозврата) <> 10)  Тогда
        лпСтрВозврата = "";
    ИначеЕсли (Лев(лпСтрВозврата,2) = "02") или (Лев(лпСтрВозврата,2) = "03") Тогда
        лпСтрВозврата = "";
    КонецЕсли;
    Возврат лпСтрВозврата;
КонецФункции // РазобратьСтрокуНаЧисла

Процедура ПриЗаписи()
    Если ПустаяСтрока(РазобратьСтрокуНаЧисла(Телефон)) = 1 Тогда    
        Сообщить("Введен некорректный номер телефона !");
    КонецЕсли;
КонецПроцедуры

Далі в процедурі, що відповідає за пошук дисконтної карти по номеру добавити пошук клієнта по номеру телефона, якщо не знайдена дисконтна карта.
Можна наприклад, побудувати запрос:
    лпТекст = "
    |Телефоны = Справочник.Клиенты.Телефоны;
    |Клиент = Справочник.Клиенты.ТекущийЭлемент;
    |Группировка Клиент без групп;
    |Условие (ПустаяСтрока(Телефоны) = 0);
    |Условие(Лев(Телефоны,лпСтрДлина) = лпКод);";

    Запрос = СоздатьОбъект("Запрос");
    лпТаблЗнач = СоздатьОбъект("ТаблицаЗначений");
    Если Запрос.Выполнить(лпТекст) = 1 Тогда
        Запрос.Выгрузить(лпТаблЗнач,1,0);
        лпТаблЗнач.ВыбратьСтроку();
    КонецЕсли;

В загальному це все, але це тільки приклад.

Сообщение отредактировал Sharzem - 11.03.20, 9:19


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 15:11
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!