[ОТВЕТИТЬ]
25.10.2012 11:12
Eugin_S
 
Подскажите, как можно реализовать такую схему:
Клиента планируется заводить в 1С, и там же заполнять анкету. В УКМ будет только номер клиента который будет передавать в поле "фамилия", который будет совпадать с номером карты.
Как выгрузить клиентов в УКМ? Мы можем запросом из 1С добавлять их напрямую в базу УКМ, но при создании клиента из УКМ ему присваиваивается уникальный ID вида {0d2d00e2-466a-4b33-a898-3e9aee2f6da1} и присваивается счет вида ClAcc.{0d2d00e2-466a-4b33-a898-3e9aee2f6da1}.12.
Можем ли мы самим присвоить этот ID, например вида 000001?
25.10.2012 11:15
Mtirt
 
А может лучше наоборот? Заводить в УКМ4, выгружать в 1С?
Какие причины вас заставляют это делать именно в 1С?
25.10.2012 11:30
Eugin_S
 
Нужно заполнять по клиенту большую анкету для маркетинговых исследований. Не хочется грузить базу УКМ лишней информацией, поэтому заполнять будем в 1С.
25.10.2012 12:06
didinap
 
Цитата:
Eugin_S Можем ли мы самим присвоить этот ID, например вида 000001?
собственно это не ID а GUID, что собственно упростит вашу задачу.
25.10.2012 12:51
whitewizard
 
Если просто дисконтные карты делаете, то в чём проблема из 1с сформировать файл и скормить его УКМ4 ?
25.10.2012 12:58
Mtirt
 
Цитата:
whitewizard Если просто дисконтные карты делаете, то в чём проблема из 1с сформировать файл и скормить его УКМ4 ?
Наверное в том, что УКМ4 стандартно умеет грузить клиентов только посредством "Стандартный импорт 4", а там не из файлика данные загружаются, а из Mysql-ной базы данных.
Хотя, при наличии навыков, выкидывать данные из 1С в эту базу можно без особого труда.
25.10.2012 13:39
whitewizard
 
Возможно изначально неправильная формулировка?
Под "клиентом" подразумевался именно клиент, как он есть к УКМ4 или дисконт?
25.10.2012 13:46
Mtirt
 
Я поняла из формулировки вопроса, что именно клиент.
Хотя бы потому, что речь идет о связанных счетах.
25.10.2012 13:49
Mtirt
 
Цитата:
Eugin_S Нужно заполнять по клиенту большую анкету для маркетинговых исследований. Не хочется грузить базу УКМ лишней информацией, поэтому заполнять будем в 1С.

А оно вам действительно нужно? Даже в 1С?
Если честно, то я бы 500 раз подумала и перекрестилась.
Информация о держателях карт подпадает под действие закона "О защите персональных данных". И если у вас 100000 карточек и вы хотя бы спрашиваете дату рождения клиента, то это уже 4-ый класс защиты информации со всеми вытекающими отсюда расходами на её защиту.
Лично я пару лет назад удалила все данные кроме ФИО и сожгла анкеты клиентов.
26.10.2012 04:30
Eugin_S
 
Это именно клиенты для бонусной программы. Не дисконтные карты.

Насчет хранения информации о персональных данных решение принимать не мне, но отчасти еще и поэтому я хочу убрать всё лишнее из УКМ, ни в УКМ, ни в чеке никаких данных о клиенте не будет - только номер карты.

При загрузке клиентов через Стандартный импорт 4 как будут формироваться GUIDы счетов? Можно чуть поподробнее про эту процедуру?
26.10.2012 07:29
Mtirt
 
Цитата:
Eugin_S Насчет хранения информации о персональных данных решение принимать не мне, но отчасти еще и поэтому я хочу убрать всё лишнее из УКМ, ни в УКМ, ни в чеке никаких данных о клиенте не будет - только номер карты.
Тогда зачем вообще грузить информацию из 1С?
Можно назаводить клиентов по номерам карт, обезличенных, и всё...
26.10.2012 07:46
Eugin_S
 
Да их там 60 000 будет, руками неохота. Да и я за автоматизацию, лучше один раз отладить процесс.
Вроде разобрался со Стандартным Импортом 4, будем через него пробовать.
06.11.2012 14:02
avdeevalexey
 
Заранее создал 4 группы в справочнике Клиентов, у каждого клиента есть своя карта (которую можно блокировать при необходимости), за этими группами закрепил % дисконта, раз в день распихиваю клиентов между этими группами

СтрокаПодключенияКСерверуСуперМагУКМ4="Driver={MySQL ODBC 5.1 Driver};Server=192.168.1.150;Port=3306;Database=import;User=ukm_server;Password=CtHDbCGK.C;Option=3;STMT=set character_set_r esults=cp1251";

Версия=Константы.ТекВерсияДанныхВСуперМагУКМ4.Получить();


Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open(СтрокаПодключенияКСерверуСуперМагУКМ4);

ИмяТаблицыКлиентов="clients";
ИмяТаблицыКартКлиентов="client_card";
ИмяТаблицыСтопЛистовКартКлиентов="client_card_stoplist";



Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", текущаядата());

Запрос.Текст = "ВЫБРАТЬ
| ПроцентыСкидокСрезПоследних.ДисконтнаяКарта,
| ПроцентыСкидокСрезПоследних.ДисконтнаяКарта.код как идкарты,
| ПроцентыСкидокСрезПоследних.ДисконтнаяКарта.кодкарты как кодкарты,
| ПроцентыСкидокСрезПоследних.ДисконтнаяКарта.ВладелецКарты как ВладелецКарты,
| ПроцентыСкидокСрезПоследних.ДисконтнаяКарта.наименование как наименование,
| ПроцентыСкидокСрезПоследних.ДисконтнаяКарта.заблокирована как заблокирована,
| ПроцентыСкидокСрезПоследних.ПроцентСкидки
|ИЗ
| РегистрСведений.ПроцентыСкидок.СрезПоследних(&Дата,
| ) КАК ПроцентыСкидокСрезПоследних
|";

Выборка = Запрос.Выполнить().Выгрузить();




СпрСкидки=Справочники.ИнформационныеКарты;

//Добавим одного владельца губернских карт
Фамилия = "Губернская";
Имя = "Дисконтная";
Отчество = "Система";
Ид=1;

Стр = "INSERT INTO `"+ИмяТаблицыКлиентов+
"` SET "+
"`id` = '"+ид+"', "+
"`classifclient` = '"+23+"', "+ //предопределенная группа в УКМ4
"`sur_name`='"+Фамилия+ "', "+
"`name`='"+Имя+"', "+
"`patronymic`='"+Отчество+"', "+
"`type`='"+0+"', "+
"`allow_paycash`='"+1+"', "+
"`active`='"+1+"', "+


"`version`='"+версия+"'";
попытка
Connection.Execute(Стр);
исключение
сообщить("Не удалось добавить владельца губернской дисконтной карты!");
конецпопытки;




Для каждого текскидка из выборка Цикл
Если (лев(сокрлп(текскидка.КодКарты),2)="30") тогда
Ид=1;

иначе
Если ЗначениеЗаполнено(текскидка.ВладелецКарты) тогда
ФИОСрез = РегистрыСведений.ФИОФизЛиц.ПолучитьПоследнее(,Новый Структура("ФизЛицо", текскидка.ВладелецКарты));
Фамилия = ФИОСрез.Фамилия;
Имя = ФИОСрез.Имя;
Отчество = ФИОСрез.Отчество;
иначе
Фамилия = "Владелец карты №"+текскидка.КодКарты;
Имя = "Владелец карты №"+текскидка.КодКарты;
Отчество = "Владелец карты №"+текскидка.КодКарты;
конецесли;
Ид=текскидка.идкарты;

Если текскидка.ПроцентСкидки=5 тогда
типск=20;//предопределенная группа в УКМ4
иначеесли текскидка.ПроцентСкидки=7 тогда
типск=21;//предопределенная группа в УКМ4
иначеесли текскидка.ПроцентСкидки=10 тогда
типск=22;//предопределенная группа в УКМ4
конецесли;

Стр = "INSERT INTO `"+ИмяТаблицыКлиентов+
"` SET "+
"`id` = '"+ид+"', "+
"`classifclient` = '"+типск+"', "+
"`sur_name`='"+Фамилия+ "', "+
"`name`='"+Имя+"', "+
"`patronymic`='"+Отчество+"', "+
"`type`='"+0+"', "+
"`allow_paycash`='"+1+"', "+
"`active`='"+1+"', "+


"`version`='"+версия+"'";
попытка
Connection.Execute(Стр);
исключение
сообщить("Не удалось добавить владельца ДК! "+текскидка.КодКарты);
конецпопытки;
конецесли;
//Распределим карты по двум таблицам
Если текскидка.заблокирована тогда
Стр = "INSERT INTO `"+ИмяТаблицыСтопЛистовКартКлиентов+
"` SET "+
"`client` = '"+ид+"', "+
"`card_code`='"+текскидка.КодКарты+ "', "+
"`version`='"+версия+"'";
иначе
Стр = "INSERT INTO `"+ИмяТаблицыКартКлиентов+
"` SET "+
"`client` = '"+ид+"', "+
"`card_code`='"+текскидка.КодКарты+ "', "+
"`version`='"+версия+"'";
конецесли;
попытка
Connection.Execute(Стр);
исключение
сообщить("Не удалось добавить ДК! "+текскидка.КодКарты);
конецпопытки;

КонецЦикла;

Стр = "INSERT INTO `signal` SET `signal` = 'incr', `version`='"+версия+"'";
Connection.Execute(Стр);



Connection.close();
07.11.2012 12:20
Eugin_S
 
Подскажите, как можно помещать карты в стоп-лист через Стандартный конвертер импорта 1? Добавляю карту в таблицу card_stoplist, добавляю в signal строку incr с версией 1 - signal очищается, а card_stoplist - нет, данные оттуда не уходят в основную базу, карта не блокируется. Я так понял что данные из базы импорта не не переносятся если какое-то из полей заполнено неправильно. Я например ввожу такие данные:
Код:
INSERT INTO `card_stoplist` (`id`, `start_card_code`, `stop_card_code`, `version`, `deleted`)VALUES ('6', '000020', NULL, '1', '0');
Код:
INSERT INTO `card_stoplist_client` (`card_stoplist`, `client`, `version`, `deleted`)VALUES ('6', '{d637bd46-84d5-4c61-a9a3-318a31baf8cf}', '1', '0');
Остальные данные, например клиенты или карты клиентов загружаются в базу нормально.
07.11.2012 13:21
avdeevalexey
 
А если

INSERT INTO `card_stoplist` (`id`, `start_card_code`, `stop_card_code`, `version`, `deleted`)VALUES ('6', '000020', NULL, '1', '0');

заменить на

INSERT INTO `card_stoplist` (`id`, `start_card_code`, `stop_card_code`, `version`, `deleted`)VALUES ('6', '000020', '000020', '1', '0');
07.11.2012 13:27
Eugin_S
 
Цитата:
avdeevalexey А если

INSERT INTO `card_stoplist` (`id`, `start_card_code`, `stop_card_code`, `version`, `deleted`)VALUES ('6', '000020', NULL, '1', '0');

заменить на

INSERT INTO `card_stoplist` (`id`, `start_card_code`, `stop_card_code`, `version`, `deleted`)VALUES ('6', '000020', '000020', '1', '0');
пробовал - так же :(
07.11.2012 13:39
avdeevalexey
 
Цитата:
Eugin_S пробовал - так же :(
Тогда запусти 4й конвертер, и поправь под себя мой код написанный выше))))

Добавлено через 5 минут 0 секунд
Цитата:
Eugin_S пробовал - так же :(
В Стандартном конвертере 1, в таблице cards есть поле active - может с ним "поиграть"?
08.11.2012 07:58
Eugin_S
 
Всё получилось сделать через стандартный импорт 4. Сам не понимаю почему у меня изначально не получилось сделать через него и я решил делать через импорт 1
Опции темы


Часовой пояс GMT +3, время: 09:16.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.