Методы библиотеки ezcatalog.dll

Форум для сообщений об ошибках и проблемах, возникших при использовании ПО

Методы библиотеки ezcatalog.dll

Сообщение Confooz » 21 янв 2013, 15:16

Connect(DBPath ,FBClientDLL,ASQLType)
В описании сказано:
ASQLType - задает тип запроса. Может принимать значения:
0 - SQL запрос чтения данных (SELECT)
1 - SQL запрос изменения данных (UPDATE, INSERT, DELETE)

Я так понимаю что этот (ASQLType ) параметр пытается открыть базу с монопольным доступом?
Confooz
 
Сообщения: 9
Зарегистрирован: 21 янв 2013, 15:09

Re: Методы библиотеки ezcatalog.dll

Сообщение SInteZ » 21 янв 2013, 15:27

Параметр ASQLType указывает программе на вид SQL запроса, который будет выполняться.
И с каким типом транзакции (читающим ил пишущим данные)
Условно запросы разделяются на два типа: отбор данных (SELECT) и изменение данных (UPDATE, INSERT, DELETE)

В случае выборки данных с применением SELECT указывайте в параметре 0.
В случае изменения, добавления или удаления данных указывайте 1.

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

Re: Методы библиотеки ezcatalog.dll

Сообщение Confooz » 21 янв 2013, 15:31

{ВнешняяОбработка.ОбменEZ.МодульОбъекта(527)}: Ошибка при вызове метода контекста (SetSQL)
qSelect.SetSQL("INSERT INTO TADM_CLIENTS FCLIENTID,FNAME,FORGSTATE,FREGION,FADDR,FPHONE,FINN,FKPP VALUES (:FCLIENTID1,:FNAME1,:FORGSTATE1,:FREGION1,:FADDR1,:FPHONE1,:FINN1,:FKPP1");
по причине:
Произошла исключительная ситуация (EZCATALOG.DBQuery): Can't change sql text because dataset open.

База открыта с параметром ASQLType = 1
Запрос выполнялся при открытой программе "Электронный Каталог".
Confooz
 
Сообщения: 9
Зарегистрирован: 21 янв 2013, 15:09

Re: Методы библиотеки ezcatalog.dll

Сообщение SInteZ » 21 янв 2013, 15:50

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

Re: Методы библиотеки ezcatalog.dll

Сообщение Confooz » 22 янв 2013, 13:31

Есть ли методы работы со списком клиентов и менеджеров (торговых представителей)
Найти, добавить, обновить, удалить
Confooz
 
Сообщения: 9
Зарегистрирован: 21 янв 2013, 15:09

Пример загрузки ключа клиента на сервер по номеру клиента

Сообщение SInteZ » 22 янв 2013, 16:40

Пример для 1С 8.2 УТ11

Код: Выделить всё
Процедура ВыгрузитьКлючи( мСоглашений,  Лог = Ложь)

        eOrderCat = ИницилизацияНаСервере();

        qUpdate=ИницилизацияUPDATEНаСервере();
        qSelect = ИницилизацияSELECTНаСервере();

        Для Каждого СоглашениеКлиента ИЗ мСоглашений Цикл

        //ВыборкаДетальныеЗаписи.Сбросить();
        //Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        //      СоглашениеКлиента = ВыборкаДетальныеЗаписи.Соглашения;
                Попытка
                        ClientData = eOrderCat.FindClientByNumber(СоглашениеКлиента.ID);

                        qSelect.SetSQL("select faddr from tadm_clients_addr where fidadm_clients=:fidadm_client");
                        qSelect.SetParamValue("fidadm_client",ClientData.sysid);
                qSelect.Execute();

                        АдресаСтарые=Новый Массив;
                        Пока qSelect.EOF() = 0 Цикл
                                АдресаСтарые.Добавить(СокрЛП(qSelect.GetFieldValue("faddr")));
                                qSelect.Next();
                        КонецЦикла;
                        qSelect.Close();
                Исключение
                        сообщить(ОписаниеОшибки());
                        продолжить;
                КонецПопытки;


                Обновлять=Ложь;
                АдресаПартнеров=Новый Массив();
                Контактноелицо="";
                Если СоглашениеКлиента.Партнер.ЭтоГруппа тогда

                        Запрос = Новый Запрос;
                        Запрос.Текст =
                        "ВЫБРАТЬ
                        |       Партнеры.Ссылка КАК Партнер
                        |ИЗ
                        |       Справочник.Партнеры КАК Партнеры
                        |ГДЕ
                        |       Партнеры.Родитель = &Родитель
                        |       И (НЕ Партнеры.ПометкаУдаления)
                        |       И НЕ Партнеры.Ссылка.ЭтоГруппа";

                        Запрос.УстановитьПараметр("Родитель", СоглашениеКлиента.Партнер);

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

                        ВыборкаДетальныеЗаписи2 = Результат.Выбрать();
                        Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл

                                АдресПартнера = УзнатьАдресПартнера(ВыборкаДетальныеЗаписи2.Партнер);

                                Если НЕ ЗначениеЗаполнено(АдресПартнера) тогда
                                        продолжить;
                                КонецЕсли;

                                АдресаПартнеров.Добавить(АдресПартнера);

                                Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи2.Партнер.ОсновнойМенеджер) тогда
                                        Контактноелицо = ВыборкаДетальныеЗаписи2.Партнер.ОсновнойМенеджер.Наименование;
                                КонецЕсли;
                                инд = АдресаСтарые.Найти(АдресПартнера);
                                Если инд=неопределено тогда
                                        Обновлять=Истина;
                                иначе
                                        АдресаСтарые.Удалить(инд);
                                КонецЕсли;

                        КонецЦикла;

                иначе
                        АдресПартнера = УзнатьАдресПартнера(СоглашениеКлиента.Партнер);

                        Если НЕ ЗначениеЗаполнено(АдресПартнера) тогда
                                продолжить;
                        КонецЕсли;

                        АдресаПартнеров.Добавить(АдресПартнера);
                        АдресНовый = АдресПартнера;
                        Если ЗначениеЗаполнено(СоглашениеКлиента.Партнер.ОсновнойМенеджер) тогда
                                Контактноелицо = СоглашениеКлиента.Партнер.ОсновнойМенеджер.Наименование;
                        КонецЕсли;

                        инд = АдресаСтарые.Найти(АдресПартнера);
                        Если инд=неопределено тогда
                                Обновлять=Истина;
                        иначе
                                АдресаСтарые.Удалить(инд);
                        КонецЕсли;

                КонецЕсли;

                Если Обновлять=Ложь и АдресаСтарые.Количество()<>0 тогда
                        Обновлять=Истина;
                КонецЕсли;



                Если ЗначениеЗаполнено(СоглашениеКлиента.Контрагент) тогда

                        СведенияОПокупателе       = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(
                        СоглашениеКлиента.Контрагент,ТекущаяДата());
                        //Контактноелицо = СоглашениеКлиента.Партнер.ОсновнойМенеджер.Наименование;
                        Если НЕ (ClientData.INN=СведенияОПокупателе.ИНН
                                И ClientData.Name=СоглашениеКлиента.Контрагент.Наименование
                                И ClientData.Address=СведенияОПокупателе.ЮридическийАдрес
                                И ClientData.phones=СведенияОПокупателе.Телефоны
                                И ClientData.ContactPerson=?(СокрЛП(ClientData.email)="",Контактноелицо, Контактноелицо + "(email:"+ СокрЛП(ClientData.email) + ")")
                                ) тогда
                             Обновлять = Истина;
                        КонецЕсли;

                        ClientData.INN=СведенияОПокупателе.ИНН;
                        //ClientData.Name=СведенияОПокупателе.ПолноеНаименование;
                        ClientData.Name=СоглашениеКлиента.Контрагент.Наименование;
                        ClientData.Address=СведенияОПокупателе.ЮридическийАдрес;
                        ClientData.phones=СведенияОПокупателе.Телефоны;
                        ClientData.ContactPerson=?(СокрЛП(ClientData.email)="",Контактноелицо, Контактноелицо + "(email:"+ СокрЛП(ClientData.email) + ")");
                        //ClientData.email="";
                        ClientData.SaveChanges();

                КонецЕсли;

                Если Обновлять=ложь тогда
                        Если Лог тогда
                                сообщить("Не надо выгружать ключ для " + СоглашениеКлиента.Контрагент.Наименование);
                        КонецЕсли;
                        продолжить;
                КонецЕсли;

                qUpdate.SetSQL("delete from tadm_clients_addr where fidadm_clients=:fidadm_clients");
                qUpdate.SetParamValue("fidadm_clients",ClientData.sysid);
                qUpdate.Execute();
                qUpdate.Close();

        qUpdate.SetSQL("insert into tadm_clients_addr (fid,fidadm_clients,fguid,faddr)
                |values (gen_id(tadm_clients_addr ,1),:fidadm_clients,CREATEGUID(0),:faddr)");

                Для сч=0 по  АдресаПартнеров.Количество()-1 Цикл
                        qUpdate.SetParamValue("fidadm_clients",ClientData.sysid);
                        qUpdate.SetParamValue("faddr",АдресаПартнеров[сч]);
                        //сообщить(АдресаПартнеров[сч]);
                        qUpdate.Execute();
                        qUpdate.Close();
                Конеццикла;

                // высылаем новый ключ
                //ClientData.SendKey('FPRICE', 'FSTATE',0,
                //                      cbCanUpdate.Checked, cbCanMakeOrders.Checked, cbCanPrint.Checked,
                //                      cbCanExport.Checked, cbCanAddresModify.Checked, cbProtectApp.Checked);
                ЗащитаПоКодуПК = Ложь;
                МенятьАдреса = Ложь;
                ЭкспортКаталога = Истина;
                ВыводПечать = Истина;
                ДелатьЗаяки = Истина;
                Обновления = Истина;

                рез =ClientData.SendKey("FPRICE", "FSTATE",0,
                         Обновления, ДелатьЗаяки, ВыводПечать,
       ЭкспортКаталога, МенятьАдреса, ЗащитаПоКодуПК);

           Если Лог тогда
                        сообщить("Выгружен ключ для " + СоглашениеКлиента.Контрагент.Наименование);
                КонецЕсли;
        КонецЦикла;

        eOrderCat.Disconnect();

КонецПроцедуры


Дополнительные функции

Код: Выделить всё
Функция ИницилизацияUPdateНаСервере()

        ФайлБазы = Новый Файл(ФайлБазыEOrder);
        Если НЕ ФайлБазы.Существует() Тогда
                Сообщить("Не найден файл базы eorder: " + ФайлБазы.ПолноеИмя, СтатусСообщения.Важное);
                Возврат неопределено;
        КонецЕсли;

        Попытка
                qUpdate = Новый COMОбъект("EZCATALOG.DBQuery");
        Исключение
                Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
                Возврат неопределено;
        КонецПопытки;


        Если qUpdate.Connect(ФайлБазыEOrder, ФайлFBClient,1) = 0 Тогда
                qUpdate.Disconnect();
                Сообщить("Не удалось соединиться с базой eorder: "+ФайлБазы.ПолноеИмя+"!",СтатусСообщения.Важное);
                Возврат неопределено;
        КонецЕсли;

        Возврат qUpdate;

КонецФункции

&НаСервере
Функция ИницилизацияSelectНаСервере()

        ФайлБазы = Новый Файл(ФайлБазыEOrder);
        Если НЕ ФайлБазы.Существует() Тогда
                Сообщить("Не найден файл базы eorder: " + ФайлБазы.ПолноеИмя, СтатусСообщения.Важное);
                Возврат неопределено;
        КонецЕсли;

        Попытка
                qSelect = Новый COMОбъект("EZCATALOG.DBQuery");
        Исключение
                Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
                Возврат неопределено;
        КонецПопытки;


        Если qSelect.Connect(ФайлБазыEOrder, ФайлFBClient,0) = 0 Тогда
                qSelect.Disconnect();
                Сообщить("Не удалось соединиться с базой eorder: "+ФайлБазы.ПолноеИмя+"!",СтатусСообщения.Важное);
                Возврат неопределено;
        КонецЕсли;

        Возврат qSelect;

КонецФункции

Функция ИницилизацияНаСервере()

        ФайлБазы = Новый Файл(ФайлБазыEOrder);
        Если НЕ ФайлБазы.Существует() Тогда
                Сообщить("Не найден файл базы eorder: " + ФайлБазы.ПолноеИмя, СтатусСообщения.Важное);
                Возврат неопределено;
        КонецЕсли;

        Попытка
                eOrderCat = Новый COMОбъект("EZCATALOG.ProductCatalog");
        Исключение
                Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
                Возврат неопределено;
        КонецПопытки;

        Если eOrderCat.Connect(ФайлБазыEOrder, КаталогПрограммыEOrder, ФайлFBClient)=0 Тогда
                eOrderCat.Disconnect();
                Сообщить("ProductCatalog. Не удалось соединиться с базой eorder: " + ФайлБазы.ПолноеИмя + "!", СтатусСообщения.Важное);
                Возврат неопределено;
        КонецЕсли;

        Возврат eOrderCat;

КонецФункции

Функция УзнатьАдресПартнера(Партнер)

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

        Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.АдресПартнера);
        Запрос.УстановитьПараметр("Ссылка", Партнер);
        Результат = Запрос.Выполнить();

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

        АдресДоставки="";
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                //АдресДоставки = "("+ Партнер.ОсновнойМенеджер+ ")" + ВыборкаДетальныеЗаписи.АдресДоставки;
                АдресДоставки = ВыборкаДетальныеЗаписи.АдресДоставки + " id#" + ВыборкаДетальныеЗаписи.кодпартнера;
                прервать;
        КонецЦикла;


        Возврат СокрЛП(АдресДоставки);

КонецФункции
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42

Re: Методы библиотеки ezcatalog.dll

Сообщение Confooz » 23 янв 2013, 14:15

При создании товара методом AppendProduct не привязывается картинка. Как это исправить или каким методом привязать
Confooz
 
Сообщения: 9
Зарегистрирован: 21 янв 2013, 15:09

Пример изменения данных товара

Сообщение SInteZ » 23 янв 2013, 14:42

Код: Выделить всё
var ProductData,PictureList  : OLEVariant;
begin
  // FindProductByID - возвращает ссылку на объект товара по его ID
  // Чтобы получить ID необходимо выполнить поиск или добавление товара по коду
   ProductData := ProductCatalog.FindProductByID(aSysID);
   if not VarIsNull(ProductData) then
   begin
     // Изменение атрибутов товара
     ProductData.SetAttrValue('FNEW',aNew);
     ProductData.SetAttrValue('FSTATE',aState);
     ProductData.SetAttrValue('FNAME',aName);
     ProductData.SetAttrValue('FPRICE',aPrice);
    // изменение опций товара, если необходимо
     ProductData.OptionBeginUpdate(1);
     ProductData.OptionModify('','Размер 25',500,1);
     ProductData.OptionModify('','Размер 27',6000,2);
     ProductData.OptionEndUpdate;
     // Получение списка изображений
     PictureList := ProductData.GetPictureList;
     // Если изображений 0 то загружаем его
     if PictureList.Count = 0 then
       PictureList.Add('c:\файлы\изображение.jpg');

     // Сохранение изменений по атрибутам товара
     ProductData.SaveChanges;
   
   end;
end;
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42

Re: Методы библиотеки ezcatalog.dll

Сообщение Confooz » 27 янв 2013, 18:36

Confooz писал(а):Есть ли методы работы со списком клиентов и менеджеров (торговых представителей)
Найти, добавить, обновить, удалить

ClientData = eOrderCat.FindClientByNumber(Код); //Поиск клиента по коду
ClientData.INN = ИНН; //изменение реквизитов клиента
ClientData.SaveChanges(); //Запись измененных данных

Это все что я нашел. Необходима возможность добавлять клиентов.
А также добавлять, изменять, удалять и "привязывать" менеджеров
Confooz
 
Сообщения: 9
Зарегистрирован: 21 янв 2013, 15:09

Re: Методы библиотеки ezcatalog.dll

Сообщение Confooz » 06 фев 2013, 15:30

При синхронизации клиентов в EZ у Торговых представителей (Клиенты и заказы/Торговые представители)
очищается флаг "Право выбора клиента..".
Где находится этот флаг
Confooz
 
Сообщения: 9
Зарегистрирован: 21 янв 2013, 15:09

След.

Вернуться в Решение проблем

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

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

cron