Wednesday, March 25, 2015

Простая схема передачи данных между 1с и битрикс используя post запросы

Используем битрикс как сайт. И для несложных схем обмена использую php скрипты. С Get проблем не было, с Post пришлось поковыряться. Простое решение

Код 1с 8.2

 ИФ = ПолучитьИмяВременногоФайла();
 ЗФ = Новый ЗаписьТекста(ИФ);
 ЗФ.ЗаписатьСтроку("Привет1");
 ЗФ.ЗаписатьСтроку("Привет2");
 ЗФ.ЗаписатьСтроку("Привет3");
 ЗФ.ЗаписатьСтроку("Привет4");
 ЗФ.ЗаписатьСтроку("Привет5");
 ЗФ.ЗаписатьСтроку("Привет6");
 ЗФ.Закрыть();
 //Фл = Новый Файл(ИФ);
 ХТТП = Новый COMОбъект("Microsoft.XMLHTTP");
 adoStream = Новый COMОбъект("ADODB.Stream");
 
 adoStream.Mode = 3;          // read write
 adoStream.Type = 1;          // adTypeBinary
 
 adoStream.Open();
 adoStream.LoadFromFile(ИФ);
 adoStream.Position = 0;
 
 connectstring = Константы.ПорталB2BАдресСайта.Получить()+"/tools/get_users_info.php";
 request = "POST";
 ХТТП.Open(request, connectstring, Ложь);  
 ХТТП.SetRequestHeader("Content-Type", "application/upload");
 //ХТТП.SetRequestHeader("X-File-Name", "input.txt");
 //ХТТП.SetRequestHeader("X-File-Size", Фл.Размер());
 ХТТП.Send(adoStream.Read(adoStream.Size));
 Сообщить(ХТТП.Status);
 Сообщить( ХТТП.ResponseText);


код на сервере php
<?php
$data = file_get_contents('php://input');//ile_get_contents("input.txt"); //read the file
$convert = explode("\n", $data); //create array separate by new line

for ($i=0;$i<count($convert);$i++)  
{
    echo $convert[$i].', '; //write value by index
}
?>

Итого, создаем файл запихиваем в него 6 приветов и отправляем, от сервера получаем ответ.

Wednesday, March 11, 2015

Конверт таблицы excel в BB code (Convert Excel table to bb code)

Имеем проблему для сайта (в нашем случае для Bitrix) необходимо разместить "красивую" табличку с данными.
Для этого делаем следующие шаги
1. Копируем таблицу

2. Переходим на сайт http://www.avalanche.kiev.ua/site/free/convert-table-html.html и конвертим таблицу в html
3. Копируем исходный код html
4. Переходим на сайт http://onlinehtmltools.com/bbcode-html-convertor/#sthash.UyEuMmUL.dpbs
5. Выбираем "галку" html и после вставляем код



6. Снимаем галку html

7. Жмем "Switch On/Off WYSIWYG Mode" и получаем необходимый нам BB code




После этого вставляем в bitrix КП, вспоминая разрабов не злым тихим словом.

Sunday, February 22, 2015

Coolors - The super fast color palettes generator!

Coolors - The super fast color palettes generator!:

Хороший генератор, пробел сгенерировать новые палеты.
Иногда не срабатывает замок, необходимо быть более внимательным!

'via Blog this'

Tuesday, January 20, 2015

BItrix CIBlockElementRights расширенные права — blog.t2er.com

BItrix CIBlockElementRights расширенные права — blog.t2er.com:

'via Blog this'

Установка ftp на VM Bitrix

Делаем так, взято тут

Для открытия и разделения доступа к папкам по ftp мы сделали следующее:

1. установка ftp демона для Centos

yum install proftpd

2. Ставим эту службу в автозагрузку

chkconfig proftpd on

3. Стартуем сервис

service proftpd start

4. Узнаем id группы и id пользователя, под которым работает Apache. По умолчанию логин и группа этого пользователя - bitrix

[root@CentOS-65-64-minimal ~]# id bitrix
uid=501(bitrix) gid=501(bitrix) groups=501(bitrix)

5. Создаем пользователя с идентификаторами пользователя и группы bitrix для нужной нам директории

adduser userlogin -g501 -o -u501 -d /home/bitrix/www/
6. Задаем пароль пользователю

passwd userlogin

Все. Теперь у нас есть ftp пользователь с доступом только на определенный сайт или раздел сайта в зависимости от заданного пути.

Далее, взято тут

Как правило, режим передачи (активный/пассивный) определяется в настройках FTP-клиента. Большинство клиентов, к сожалению, используют пассивный режим по умолчанию.

Если по какой-то причине активный режим использовать не получается, например, из-за ограничений клиента, или настроек сетевого фильтра на стороне клиента, то на стороне сервера необходимо выполнить дополнительные действия, как то:
Отредактировать шестую строку в файле /etc/sysconfig/iptables-config: заменить IPTABLES_MODULES="" на IPTABLES_MODULES="ip_conntrack_ftp".
Перезапустить iptables:
Код
service iptables save
service iptables restart

После этого FTP заработает в обоих режимах.

После этого в файлике /etc/sysconfig/iptables
добавляем следующий строки
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT.
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT.

П.С. Вот только после этого у меня заработало...

Wednesday, January 14, 2015

Android Expandable List View Tutorial

Android Expandable List View Tutorial:

'via Blog this'

Get Device ID Example in Android | Javatechig

Get Device ID Example in Android | Javatechig:

'via Blog this'

Creating an Alternate-Colored List View in Android

Как сделать брал тут Creating an Alternate-Colored List View in Android | Androidie:

'via Blog this'

Доступно и понятно как разукрасить listview, пришлось поискать как разукрасить
мини код моей реализации

public class ParseGroupViewAdapter extends ParseQueryAdapter<ParseGroups> {
    private final int[] bgColors = new int[]{Color.rgb(245, 245, 245), Color.rgb(224, 255, 255)};
    private Context context;
    private LayoutInflater inflater;
    private ImageLoader imageLoader;
    private LinkedHashSet mySet;


    public ParseGroupViewAdapter(Context context) {
        super(context, new ParseQueryAdapter.QueryFactory<ParseGroups>() {
            public ParseQuery create() {
                ParseQuery query = ParseGroups.getQuery();
                query.setMaxCacheAge(TimeUnit.HOURS.toMillis(4));
                query.setCachePolicy(ParseQuery.CachePolicy.CACHE_ELSE_NETWORK);
                query.whereEqualTo("parentid", "00000000-0000-0000-0000-000000000000");
                query.whereEqualTo("Enable", true);
                query.orderByAscending("sortcode");
                return query;
            }
        });
        this.context = context;
        inflater = LayoutInflater.from(context);
        this.imageLoader = ImageLoader.getInstance();
        this.mySet = new LinkedHashSet();
    }

    public ParseGroupViewAdapter(Context context, final String parentId) {
        super(context, new ParseQueryAdapter.QueryFactory<ParseGroups>() {
            public ParseQuery create() {
                ParseQuery query = ParseGroups.getQuery();
                query.setMaxCacheAge(TimeUnit.HOURS.toMillis(4));
                query.setCachePolicy(ParseQuery.CachePolicy.CACHE_ELSE_NETWORK);
                query.whereEqualTo("parentid", parentId);
                query.orderByAscending("sortcode");
                return query;
            }
        });
        this.context = context;
        inflater = LayoutInflater.from(context);
        this.imageLoader = ImageLoader.getInstance();
        this.mySet = new LinkedHashSet();
    }

    /**
     * Notifies the attached observers that the underlying data has been changed
     * and any View reflecting the data set should refresh itself.
     */
    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
    }

    @Override
    public View getItemView(ParseGroups object, View view, ViewGroup parent) {
        final ViewHolder holder;
        if (view == null) {
            holder = new ViewHolder();
            view = inflater.inflate(R.layout.groupview, null);
            holder.tvGroupName = (TextView) view.findViewById(R.id.tvName);
            holder.ivGroup = (ParseImageView) view.findViewById(R.id.imageView3);
            view.setTag(holder);
        } else {
            holder = (ViewHolder) view.getTag();

        }
        super.getItemView(object, view, parent);
        mySet.add(object);
        int colorPosition = new ArrayList<ParseItems>(mySet).indexOf(object) % bgColors.length;
        view.setBackgroundColor(bgColors[colorPosition]);

        holder.tvGroupName.setText(object.getString("name"));
        ParseFile photoFile = object.getParseFile("image");
//        holder.ivGroup.setParseFile(photoFile);
//        holder.ivGroup.loadInBackground();
        ImageLoader imageLoader = ImageLoader.getInstance();
        if (photoFile != null) {

            imageLoader.displayImage(photoFile.getUrl(), holder.ivGroup);
        }
//        else
//        {
//            holder.ivGroup = null;
//        }

        return view;
    }

    public class ViewHolder {
        TextView tvGroupName;
        ParseImageView ivGroup;
    }

}

Saturday, January 3, 2015

Публикация картинок на parse.com

Решил переделать схему работы на мобильных устройствах в связи с проблемами в работе SOAP, постоянная не хватка памяти и проблемы в работе с 1С (Скорость и ключи). Возникла проблема в передаче на parse.com картинок в правильном формате, заставила данная проблема повозиться и поискать решений, итого код:


ХТТП = Новый COMОбъект("Microsoft.XMLHTTP");
  
 ХТТП.Open("GET", "https://api.parse.com/1/login?username=1&password=F7/83?b5bf", Ложь);
 ХТТП.SetRequestHeader("Host", "api.parse.com");
 ХТТП.SetRequestHeader("Content-Type", "application/json");
 ХТТП.SetRequestHeader("X-Parse-Application-Id", "*********************************************");
 ХТТП.SetRequestHeader("X-Parse-REST-API-Key","****************************************");
 ХТТП.Send(""); 
 Ses = json.ПрочитатьJSON(ХТТП.ResponseText);
 
 sessionToken = Ses.Получить("sessionToken");
 
 
 ТНом = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор("c564fdf4-247e-11e4-9dd2-000c29ce19d5"));
 СсылкаНаФайл = РаботаСПрайсами.ПолучениеКартинкиНоменклатуры(ТНом,"png",200,200,50,true);
 Если не СсылкаНаФайл=неопределено тогда
  adoStream = Новый COMОбъект("ADODB.Stream");
    
     adoStream.Mode = 3;          // read write
     adoStream.Type = 1;          // adTypeBinary
    
     adoStream.Open();
     adoStream.LoadFromFile(СсылкаНаФайл);
  adoStream.Position = 0;
  
  connectstring = "https://api.parse.com/1/files/"+Строка(ТНом.УникальныйИдентификатор())+".png";
  request = "POST";
  ХТТП.Open(request, connectstring, Ложь);
  ХТТП.SetRequestHeader("Host", "api.parse.com");
  ХТТП.SetRequestHeader("Content-Type", "image/png");
  ХТТП.SetRequestHeader("X-Parse-Application-Id", "***********************************");
  ХТТП.SetRequestHeader("X-Parse-REST-API-Key","******************************");
  ХТТП.SetRequestHeader("X-Parse-Session-Token",sessionToken);
  ХТТП.Send(adoStream.Read(adoStream.Size));
  Сообщить(ХТТП.Status);
  Сообщить( ХТТП.ResponseText);
  ТСО =  json.ПрочитатьJSON(ХТТП.ResponseText);
  fileName = ТСО.Получить("name");
  
  
  
  
 КонецЕсли;

Tuesday, December 23, 2014

Android - Enable Google Cloud Messaging in your Android App : Mag Support

Понадобилось подключить сообщения, довольно подробная документация

Android - Enable Google Cloud Messaging in your Android App : Mag Support: "Android - Enable Google Cloud Messaging in your Android App"

'via Blog this'

Sunday, December 7, 2014

Ох и замучал меня parse.com и 1С, схема логирования

Так и хочется написать "Будь проклят тот, кто не соблюдает стандартны", в данном контексте это в разрабам 1С и куча вопросов по решению по работе с web. Как говориться спасибо за кучу потраченного в пустую времени.
В общем пишу на java под андроид. Решил использовать parse.com в разработке, на android вроде проблем нет, а вот в 1С - одни палки в колеса.
Уже жалею что не начал делать велосипед через c# и доп. библиотеки.
В общем код по логированию:


ХТТП = Новый COMОбъект("Microsoft.XMLHTTP");
ХТТП.Open("GET", "https://api.parse.com/1/login?username=cooldude6&password=p_n7!-e8", Ложь);
ХТТП.SetRequestHeader("Host", "api.parse.com");
ХТТП.SetRequestHeader("Content-Type", "application/json");
ХТТП.SetRequestHeader("X-Parse-Application-Id", "**************************");
ХТТП.SetRequestHeader("X-Parse-REST-API-Key","*****************************");
ХТТП.Send("");
Сообщить(ХТТП.Status);
Сообщить( ХТТП.ResponseText);
Сообщить(ХТТП.responseBody);

Thursday, December 4, 2014

1С и все такое: 1С:JSON парсер и сериализатор

1С и все такое: 1С:JSON парсер и сериализатор: JSON парсер и сериализатор c полной поддержкой стандарта, широким набором сериализуемых типов и продвинутым синтаксический анализатором...

Friday, October 24, 2014

1С БСП История изменений

Ссылка на подсистему версионирования объектов http://1clancer.ru/article/bsp_-_podsistema_versionirovanie_obektov_1185