4 июл. 2017 г.

Не открывается форма внешней обработки

УНФ 1.6, подключение внешних печатных форм и обработок с предприятия задействовано с помощью БСП.

Старые методы подключения не подключали без проблем, но форма обработки не открывалась.

Новый способ, с минимальными надстройками подключения, выглядит вот так

Функция СведенияОВнешнейОбработке() Экспорт
     
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(); 
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
     
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Наименование внешней обработки";
    НоваяКоманда.Идентификатор = "НаименованиеВнешнейОбработки";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
     
    Возврат ПараметрыРегистрации;
     
КонецФункции

всю эту лабуду нужно запихнуть в модуль объекта внешней обработки.

Ну и самое главное РежимОткрытияОкна = Независимый в свойстве формы.

14 июн. 2017 г.

Печать с android

package com.example.jaroslavh.print1;
import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.v4.print.PrintHelper;import android.support.v7.app.AppCompatActivity;import android.view.View;
public class MainActivity extends AppCompatActivity {

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);
    }

   
public void doPhotoPrint(View view) {
        PrintHelper photoPrinter =
new PrintHelper(this);
        photoPrinter.setScaleMode(PrintHelper.
SCALE_MODE_FIT);
        Bitmap bitmap = BitmapFactory.
decodeResource(getResources(),
                R.drawable.
droids); // предварительно нужно добавив фотку droids в папку drawable
        photoPrinter.printBitmap(
"droids.jpg - test print", bitmap);
    }

}

Вывод в две колонки при печати \ 1С

Если нужно, что бы на одном табличном документе выводилось две копии по горизонтали тогда в процедуру передаем поле табличного документа размещенного на форме и табличный документ, который нужно задублировать и разместить горизонтально.

//++ jaroslav.h 12.06.2017 #1904
Процедура ВыводВНесколькоКолонок(ПолеТабличногоДокумента, ТабличныйДокументИсточник) Экспорт

т1 = Новый ТабличныйДокумент;
т2 = Новый ТабличныйДокумент;
т3 = Новый ТабличныйДокумент;

т1.Вывести(ТабличныйДокументИсточник);
т2.Вывести(ТабличныйДокументИсточник);

выс = Макс(т1.ВысотаТаблицы, т2.ВысотаТаблицы);

о1 = т1.ПолучитьОбласть(1,1, выс, т1.ШиринаТаблицы);
о2 = т2.ПолучитьОбласть(1,1, выс, т2.ШиринаТаблицы); ПолеТабличногоДокумента.Вывести(о1);

ПолеТабличногоДокумента.Присоединить(о2);

ПолеТабличногоДокумента.ПолеСверху = 1;
ПолеТабличногоДокумента.ПолеСправа = 1;
ПолеТабличногоДокумента.ПолеСнизу = 1;
ПолеТабличногоДокумента.ПолеСлева = 1;

ПолеТабличногоДокумента.АвтоМасштаб = Истина;
ПолеТабличногоДокумента.Защита = Истина;
ПолеТабличногоДокумента.ТолькоПросмотр = Истина; 

ПолеТабличногоДокумента.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

КонецПроцедуры //-- jaroslav.h 12.06.2017 #1904

Не влезает на одну страницу печати \ 1С

Для проверки, помещается ли готовый табличный документ на одну страницу печати, передаем в функцию

//++ jaroslav.h 12.06.2017 #1904
Функция ВозможностьПечатиНаОднойСтранице(ТабличныйДокументИсходный) Экспорт

ТабличныйДокументРезервный = Новый ТабличныйДокумент;
Возврат ТабличныйДокументРезервный.ПроверитьВывод(ТабличныйДокументИсходный);

КонецФункции //-- jaroslav.h 12.06.2017 #1904

готовый табличный документ и в результате получаем Истина или Ложь

Выпадающий список в Android

package com.example.jaroslavh.myapplication1;

import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Properties;

public class MainActivity extends AppCompatActivity {

    @Override    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        try {
            GetUser();
        } catch (Exception e) {
            print(e.toString());
        }

    }

    public void GetUser() throws Exception {

        Class.forName("org.firebirdsql.jdbc.FBDriver");

        Properties props = new Properties();
        props.setProperty("user""SYSDBA");
        props.setProperty("password""masterkey");
        props.setProperty("encoding""UTF8");

        Connection connection = DriverManager.getConnection(
                "jdbc:firebirdsql:192.168.0.96/3050:C:/IBExpert/db/TEST1.FDB",
                props);

        Statement statement = null;
        String query = " SELECT * FROM users";

        statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(query);

        Spinner spinner = (Spinner) findViewById(R.id.spinner);

        ArrayList<User> users = new ArrayList<User>();

        while (resultSet.next()) {
            users.add(new User(resultSet.getInt("ID"), resultSet.getString("NAME"), resultSet.getInt("PASSWD")));
        }

        ArrayAdapter<User> adapter = new ArrayAdapter<User>(this, android.R.layout.simple_spinner_item, users);
        spinner.setAdapter(adapter);

//        ArrayAdapter<User> adapter = new ArrayAdapter<User>(this, android.R.layout.simple_spinner_item, new User[]{//                new User(1, "Петя", 111),//                new User(2, "Саша", 222),//                new User(3, "Вася", 333),//        });
    }

    public void Exit(View view) {
        finishAffinity();
    }

    public void In(View view) {
        Intent intent = new Intent(this, ListOperations.class);
        intent.putExtra("p1""hello");
        startActivity(intent);
    }

    void print(String message) {
        Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG);
        toast.show();
    }
}





package com.example.jaroslavh.myapplication1;

/** * Created by jaroslav.h on 30.05.2017. */
public class User {

    int id;
    String name;
    int pass;

    User(int id, String name, int pass) {
        this.id = id;
        this.name = name;
        this.pass = pass;
    }

    User(){

    }

    @Override    public String toString() {
        return name;
    }

}

Сделать фотографию с android

package com.example.jaroslavh.myapplication1;

import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;

public class Nomenklature extends AppCompatActivity {

private static final int REQUEST_IMAGE_CAPTURE = 1;

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nomenklature);

}

void dispatchTakePictureIntent(View view) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {

ImageView mImageView = (ImageView) findViewById(R.id.imageView2);

Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(imageBitmap);
}
}
}

Сохранить значение формы при смене ориентации экрана

package com.example.jaroslavh.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {


EditText editText;
TextView textView;
TextWatcher tw;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

editText = (EditText) findViewById(R.id.editText2);
textView = (TextView) findViewById(R.id.textView);

tw = new TextWatcher() {

public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

public void onTextChanged(CharSequence s, int start, int before, int count) {
}

public void afterTextChanged(Editable s) {
editText.removeTextChangedListener(tw);
textView.setText(s.toString());
s.clear();
editText.addTextChangedListener(tw);
}

};

editText.addTextChangedListener(tw);
}

protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
textView.setText(savedInstanceState.getString("textView"));
}

protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("textView", textView.getText().toString());
}

}

Сканировать из Android

Главный класс

package com.example.jaroslavh.myapplication;


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {


    EditText editText;
    TextView textView;
    TextWatcher tw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.editText2);
        textView = (TextView) findViewById(R.id.textView);

        tw = new TextWatcher() {

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            public void afterTextChanged(Editable s) {
                editText.removeTextChangedListener(tw);
                textView.setText(s.toString());
                s.clear();
                editText.addTextChangedListener(tw);
            }

        };

        editText.addTextChangedListener(tw);
    }

    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        textView.setText(savedInstanceState.getString("textView"));
    }

    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("textView", textView.getText().toString());
    }

}

Подключиться к веб-сервису с Android

  • Качаем ksoap2.
  • В build.gradle пишем
dependencies {
...
repositories {
    maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
}
compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'
...
}
  • В манифест добавляем
<uses-permission android:name="android.permission.INTERNET" />
  • Главный класс выглядит так
package com.example.jaroslavh.ws1;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.ksoap2.HeaderProperty;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private static final String NAMESPACE = "http://www.w3.org/2001/XMLSchema";
    private static final String METHOD_NAME = "echo"; //метод веб-сервиса
    private static final String SOAP_ACTION = "tns:swtrade-wms#wms_tcd:echo"; // берем из xml страницы веб-сервиса
    private static String URL = "http://192.168.0.96/veres/uk_UA/ws/wms_tcd"; //  адрес веб-сервиса
    
    private TextView tv;
    private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.TextView); // на форме поле вывода
        btn = (Button) findViewById(R.id.button); // на форме кнопка

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                new MyTask().execute();
            }

        });

    }

    public class MyTask extends AsyncTask<Void, Void, String> {

        ProgressDialog progress;
        String response = "";

        public void onPreExecute() {

            super.onPreExecute();
        }

        @Override
        protected String doInBackground(Void... arg0) {

            final SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

            request.addProperty("text", "jaroslav"); // веб-сервис принимает один параметр text в виде строки

            final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

            envelope.setOutputSoapObject(request);
            envelope.dotNet = true;

            try {

                List<HeaderProperty> headerList = new ArrayList<HeaderProperty>();
                headerList.add(new HeaderProperty("Authorization", "Basic " + org.kobjects.base64.Base64.encode("admin:123".getBytes()))); // авторизация на веб-сервисе

                HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                androidHttpTransport.call(SOAP_ACTION, envelope, headerList);

                SoapObject result = (SoapObject) envelope.getResponse();
                response = result.toString();

            } catch (IOException e) {
                response = e.toString();
            } catch (XmlPullParserException e) {
                response = e.toString();
            }

            return response;
        }

        @Override
        public void onPostExecute(String res) {

            if (!(res.equalsIgnoreCase(""))) {
                tv.setText(res);
            }

        }
    }

}
 

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07