Добавить взаиморасчеты в каталог и на сайт

Добавить взаиморасчеты в каталог и на сайт

Сообщение Aleksey » 23 окт 2014, 21:44

Хотелось бы выгружать для клиента текущее состояние о взаиморасчетах, в идеале какую то текстовую информацию, в которой можно было бы написать любое короткое сообщение, типа "Ваш долг составляет ХХ рублей. Последняя оплата - 23.10.14 на сумму УУ, последний учтенный возврат - 10.10.14 на сумму ЧЧ"

Конечно в теории можно было бы воспользоваться системой сообщений между нами и клиентами которая появилась в 7.0, но для этого нужен импорт этих сообщений из файла, чтобы можно было бы подготовить файл из учетной системы (так же как мы каталог выгружаем) и автоматом (без участия пользователя) загрузить на сервер и отправить клиентам
Aleksey
 
Сообщения: 75
Зарегистрирован: 04 июн 2010, 13:15

Re: Добавить взаиморасчеты в каталог и на сайт

Сообщение SInteZ » 30 окт 2014, 23:58

Выгружать сообщения для клиентов можно через библиотеку обмена.
Интерфейс IClientData Метод SendNotification(const aMessage,
aTechMessage: WideString)

Первый параметр текст сообщения, второй пустая строка. Зарезервированный параметр.

поддерживаются простые теги <b> <u> <i> <font color="yellow" size="12">
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42

Re: Добавить взаиморасчеты в каталог и на сайт

Сообщение Aleksey » 04 ноя 2014, 13:18

Вот хотелось бы без OLE. К тому же я так понимаю это для сообщения для всех клиентов, а нужно индивидуально для каждого
Aleksey
 
Сообщения: 75
Зарегистрирован: 04 июн 2010, 13:15

Re: Добавить взаиморасчеты в каталог и на сайт

Сообщение SInteZ » 04 ноя 2014, 13:37

Метод выполняется для каждого клиента.
Ниже пример перебора списка клиентов с отправкой информации о долге через метод SendNotification.
Сначала нужно найти клиента по его номеру:
1. ПеремКлиент =eOrderCat.FindClientByNumber(ВыборкаДетальныеЗаписи.Код)
Вернется Ссылка на интерфейс если клиент найден.
2. Далее можно отправить сообщение ПеремКлиент.SendNotification(СтрокаИнформации,"")

Библиотека интеграции это не OLE, а COM. COM - набор интерфейсов предоставляющий доступ к каталогу.
OLE - это надстройка над COM более медленная и в библиотеке не применяется.

Код: Выделить всё
Процедура Клиенты(eOrderCat)

Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| Контрагенты.Код,
| Контрагенты.Ссылка КАК Контрагент,
| СУММА(ВЫБОР
| КОГДА РасчетыСКлиентамиОстатки.СуммаОстаток <> NULL
| ТОГДА РасчетыСКлиентамиОстатки.СуммаОстаток
| ИНАЧЕ 0
| КОНЕЦ) КАК Долг,
| СУММА(БонусыОстатки.СуммаОстаток) КАК Бонус,
| ВЫБОР
| КОГДА ПартнерыДополнительныеРеквизиты.Свойство.Наименование =
""Соглашение по умолчанию""
| ТОГДА ПартнерыДополнительныеРеквизиты.Значение
| ИНАЧЕ """"
| КОНЕЦ КАК Статус
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.Остатки(, ) КАК
РасчетыСКлиентамиОстатки
| ПО Контрагенты.Ссылка =
РасчетыСКлиентамиОстатки.АналитикаУчетаПоПартнерам.Контрагент
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Бонусы.Остатки КАК БонусыОстатки
| ПО Контрагенты.Партнер = БонусыОстатки.Партнер
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.ДополнительныеРеквизиты КАК
ПартнерыДополнительныеРеквизиты
| ПО Контрагенты.Партнер = ПартнерыДополнительныеРеквизиты.Ссылка";
Если ЗначениеЗаполнено(ВыбКод) Тогда
ТекстЗапроса = ТекстЗапроса +
"
|ГДЕ
| Контрагенты.Код = &ВыбКод";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса +
"
|СГРУППИРОВАТЬ ПО
| Контрагенты.Ссылка,
| ВЫБОР
| КОГДА ПартнерыДополнительныеРеквизиты.Свойство.Наименование =
""Соглашение по умолчанию""
| ТОГДА ПартнерыДополнительныеРеквизиты.Значение
| ИНАЧЕ """"
| КОНЕЦ,
| Контрагенты.Код";

Запрос.Текст = ТекстЗапроса;

Запрос.УстановитьПараметр("ВыбКод",ВыбКод);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
     // сч=0;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
//Если Сч>10 Тогда
// Прервать;
//КонецЕсли;
//
Попытка
ПеремКлиент =eOrderCat.FindClientByNumber(ВыборкаДетальныеЗаписи.Код);
Если ПеремКлиент = Null Тогда //не нашли клиента
Продолжить;
КонецЕсли;
   Исключение
Сообщить(ОписаниеОшибки());
прервать;
КонецПопытки;
//обновляем информацию о клиенте
   СтрокаИнформации =
?(ВыборкаДетальныеЗаписи.Долг>0,
"<font size=""3"" color=""red"">Ваш <u>долг</u> составляет:
"+ВыборкаДетальныеЗаписи.Долг+" р.","")+
"</font> Остаток бонусов: <font size=""3""
color=""blue"">"+ВыборкаДетальныеЗаписи.Бонус+
"<br> Ваш статус клиента: <font size=""3""
color=""blue"">"+ВыборкаДетальныеЗаписи.Статус;
ПеремКлиент.SendNotification(СтрокаИнформации,"");
//сч=сч+1;
Сообщить("Выгружена информация по клиенту: "+ВыборкаДетальныеЗаписи.Код);
//"<font size="3" color=""red"">Ваш <u>долг</u> по заказам составляет 75
000 р!</font><br> Статус: <font size=""3"" color=""blue"">обычный
клиент.</font>"
   КонецЦикла;
КонецПроцедуры
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42

Re: Добавить взаиморасчеты в каталог и на сайт

Сообщение Aleksey » 04 ноя 2014, 15:25

Com, Ole.. в данном контексте не суть. А суть в том что нужен прямой доступ из базы 1С к базе eorder. А вот с этим у меня проблема, так как базы у меня физически находятся на разных серверах и в разных городах. А вы катастрофически не хотите дублировать com-команды через импорт из файла

Собственно как это сделано в других системах. Есть метод SendNotification, его можно использовать через com или загрузить из текстового файла с именим совпадающим с названием метода. Т.е. формируется файл SendNotification.csv содержащий через разделитель код клиента (Number, для функции FindClientByNumber) и само сообщения (для метода SendNotification), и далее при импорте программа в определенной последовательности просматривает файлы в каталоге и загружает их. Если ошибка (например клиент не найден), то программа формирует файл с имением метода и с расширением err куда записываются все ошибки, к примеру: "002548 - клиент не найден". Если всё хорошо и ошибок нет то просто формируется пустой файл с расширением res, говорящий нам о том что загрузка произошла успешно ошибок нет

Аналогично и остальные методы дублируются через текстовый файл.

Ну и для полноты картины учётная система формирует сигнальный файл ok.txt означающий что все данные выгружены можно загружать. Соответственно eorder просматривает каталог на наличие этого файла (например запуск по расписанию с определенной командой) и по окончанию загрузки формирует файл ok.res, означающий что данные загружены, ждем очередную порцию


Насколько долго это реализовать?
Aleksey
 
Сообщения: 75
Зарегистрирован: 04 июн 2010, 13:15

Re: Добавить взаиморасчеты в каталог и на сайт

Сообщение SInteZ » 04 ноя 2014, 18:15

Смысла городить дополнительный код внутри программы абсолютно никакого нет, когда специально упрощенный доступ к каталогу вынесен в отдельную библиотеку, которую можно вызывать из любой системы учета с поддержкой скриптовых языков программирования. Можно вызвать хоть из Excel в VBScript.

В самом простом случае можно написать отдельную небольшую программу-обертку, которая будет читать файлы и выполнять команды из библиотеке обмена.
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42

Re: Добавить взаиморасчеты в каталог и на сайт

Сообщение Aleksey » 04 ноя 2014, 20:13

Смысл в разделение серверов. Не у всех же ларёк с одним сервером который выполняет все задачи, и файлопомойка и 1С и интернет раздает и прочее.

В моем случае есть филиал со своим сервером и ставить туда левое ПО админы не разрешают
Есть централизованный сервер (виртуальный) для всякого левого ПО. т.е. прямой видимости нет и не планируется

Вот исходя их этих условий о какой обёртке идёт речь?
Aleksey
 
Сообщения: 75
Зарегистрирован: 04 июн 2010, 13:15

Re: Добавить взаиморасчеты в каталог и на сайт

Сообщение SInteZ » 04 ноя 2014, 21:16

модуль интеграции находится на том же ПК, где база данных ПО Электронный заказ.
Соответственно можно написать программу, которая используя библиотеку будет выполнять функции по загрузке данных из файлов в ЭЗ и передавать клиентам. Написать можно на любом языке не меняя код самого ПО
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42


Вернуться в Общие вопросы и пожелания

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron