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, время: 15:42.

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