1С Бухгалтерия 3.0.121.31: отправка письма

В данной версии БСП используемой в БУх, отправка письма производится так:

	тело="Прювет";
	ПараметрыПисьма = Новый Структура("Кому, Тема, Тело,ТипТекста", объект.email, "Абырвалг", тело,"HTML");
	РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(),ПараметрыПисьма);

Никогда не было и вдруг опять..

Или разгаданная загадка почему не вставляется запись в БД с первой строкой взятой из файла. Долго думал, пока наконец не догадался поглядеть этот файл в HEX редакторе. А там…барабанная дробь..символ BOM от создателей блокнота в Windows 😉

В общем теперь я понял, что при обработке файлов, лучше на всякий случай всегда убирать этот интересный символ, дабы не попасть в просак. Примерно так:

        $dt = trim($dt, "\xEF\xBB\xBF"); 

PHP: как узнать какого размера файл может загрузить пользователь

Иногда, для того чтобы избежать ошибку, можно заранее о ней предупредить. Например, прежде чем предлагать загрузить файл на сервер, можно вывести сообщение о максимально возможном его размере. Определить размер файла для загрузки можно примерно так:

function file_upload_max_size() {
      static $max_size = -1;
      if ($max_size < 0) {
        $post_max_size = self::parse_size(ini_get('post_max_size'));
        if ($post_max_size > 0) {$max_size = $post_max_size;}
        $upload_max = self::parse_size(ini_get('upload_max_filesize'));
        if ($upload_max > 0 && $upload_max < $max_size) {$max_size = $upload_max;}
      }
      return $max_size;
    }
    function parse_size($size) {
      $unit = preg_replace('/[^bkmgtpezy]/i', '', $size);
      $size = preg_replace('/[^0-9\.]/', '', $size);
      if ($unit) {
        return round($size * pow(1024, stripos('bkmgtpezy', $unit[0])));
      }
      else {
        return round($size);
      }
    }

YII: Шаблон модели при использовании CRUD генератора

Не понятно почему, но CRUD не создает самостоятельно модель для работы с таблицой БД. По крайне мере у меня. Потому из нескольких разрозненных кусков собрал «рыбу»:

<?php

namespace app\models;

class YandexKeys extends \yii\db\ActiveRecord{

public static function tableName(){
    return 'api_map_keys'; // Имя таблицы в БД в которой хранятся записи
}
 
public function rules(){    
        return [
            [['name', 'key'], 'required'],  // какие поля есть в таблице обязательные для добавления
        ];
    }
 
public function attributeLabels(){  // Зададим имена колонок
        return [
            'id' => 'ID',
            'name' => 'Имя',
            'key' => 'Ключ API'
        ];
 }
 
 public static function getAll(){   // выборка всех значений из БД
    $data = self::find()->all();
    return $data;
 }

}

Краткая шпаргалка по YII2

Последнее время в очередной раз вплотную занимаюсь работой с фреймворком yii2. В связи с чет сделал для себя небольшую шпаргалку.

Получение POST/GET параметров:

$request = Yii::$app->request;
$period= $request->post("period");
$period= $request->get("period");

Выполнение SQL запроса типа SELECT:

// Вариант 1
$lsa = Yii::$app->db->createCommand($sql)->queryAll();       
foreach ($lsa as $row99) {   
}
// Вариант 2
$rows = (new \yii\db\Query())->select(['id'])->from('users')->where(['login' => $login])->limit(1)->all();
foreach ($rows as $row99) {   
}

Выполнение SQL запроса типа Insert:

// Вариант 1
$res=(new \yii\db\Query())->createCommand()->insert('users', ['login' =>$username])->execute();
        if ($res==false){
            die("Не удалось вставить запись с новым пользователем..Увы и ах..");
        };   
// Вариант 2
        $sql="insert into posting_zones (area,name,coors) values ($area,concat('Зона ',(select (max(id)+1) as name from posting_zones)),'$coors')";
        $res= Yii::$app->db->createCommand($sql)->execute();       

Корневой путь YII:

$dir=Yii::$app->basePath;

Корневой URL приложение YII:

$WUO_ROOT=Yii::getAlias('@app')."/web/";

Получение параметров из файла конфигурации YII:

$params = require(__DIR__ . '/../../config/web.php');
$geo_config = \yii\helpers\ArrayHelper::getValue($params, 'params'); //всякие настройки

Данные авторизованного пользователя (шаблон basic):

Yii::$app->user->identity
1 2 3