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
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)