Здравствуйте. В накладной есть 3 ячейки: Клиент, номер телефона и дисконтная карта. Если ввести номер дисконтной карты - автоматически выбивает Клиента и номер телефона. Если клиента вводить через каталог - автоматически выбивает дисконтную карту и номер телефона. А вот ячейка номер телефона таким способом не работает. Она имеет тип Строка. Прописав модуль она начинает работать, если изменить тип на Число, но при этом в программе происходит утеря данных уже существующих клиентов (существующие номера теряют цифры), да и при в вводе номера (0...........) 0-не вбивает.
Danaza @ Сегодня, 13:56
,
И в чем вопрос? скинете код, вам укажут на ошибку, если в этом проблема
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);
лпТаблЗнач.ВыбратьСтроку();
КонецЕсли;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua