<?php
namespace Models;

// Модель товаров
class Products extends \DB\SQL\Mapper {
	public $db, $f3;

	public $units=array(
		796=>array('title'=>'Штука', 'number'=>0, 'short_title'=>'шт'),
		166=>array('title'=>'Килограмм', 'number'=>11, 'short_title'=>'кг'),
		112=>array('title'=>'Литр; кубический дециметр', 'number'=>41, 'short_title'=>'л'),
		6=>array('title'=>'Метр', 'number'=>22, 'short_title'=>'м'),
		18=>array('title'=>'Погонный метр', 'number'=>255, 'short_title'=>'пог. м'),
		163=>array('title'=>'Грамм', 'number'=>10, 'short_title'=>'г'),
		116=>array('title'=>'Декалитр', 'number'=>255, 'short_title'=>'дкл'),
		3=>array('title'=>'Миллиметр', 'number'=>255, 'short_title'=>'мм'),
		4=>array('title'=>'Сантиметр', 'number'=>20, 'short_title'=>'см'),
		5=>array('title'=>'Дециметр', 'number'=>21, 'short_title'=>'дм'),
		110=>array('title'=>'Кубический миллиметр', 'number'=>255, 'short_title'=>'мм3'),
		111=>array('title'=>'Кубический сантиметр; миллилитр', 'number'=>40, 'short_title'=>'мл'),
		113=>array('title'=>'Кубический метр', 'number'=>42, 'short_title'=>'м3'),
		168=>array('title'=>'Тонна', 'number'=>12, 'short_title'=>'т'),
		736=>array('title'=>'Рулон', 'number'=>255, 'short_title'=>'рул'),
		625=>array('title'=>'Лист', 'number'=>255, 'short_title'=>'л.'),
		868=>array('title'=>'Бутылка', 'number'=>255, 'short_title'=>'бут'),
		839=>array('title'=>'Комплект', 'number'=>255, 'short_title'=>'компл'),
		8=>array('title'=>'Километр; тысяча метров', 'number'=>255, 'short_title'=>'км'),
		9=>array('title'=>'Мегаметр; миллион метров', 'number'=>255, 'short_title'=>'мм'),
		17=>array('title'=>'Гектометр', 'number'=>255, 'short_title'=>'гм'),
		19=>array('title'=>'Тысяча погонных метров', 'number'=>255, 'short_title'=>'10^3 пог. м'),
		20=>array('title'=>'Условный метр', 'number'=>255, 'short_title'=>'усл. м'),
		39=>array('title'=>'Дюйм (25,4 мм)', 'number'=>255, 'short_title'=>'дюйм'),
		41=>array('title'=>'Фут (0,3048 м)', 'number'=>255, 'short_title'=>'фут'),
		43=>array('title'=>'Ярд (0,9144 м)', 'number'=>255, 'short_title'=>'ярд'),
		45=>array('title'=>'Миля (уставная) (1609,344 м)', 'number'=>255, 'short_title'=>'миль'),
		47=>array('title'=>'Морская миля (1852 м)', 'number'=>255, 'short_title'=>'м.миль'),
		48=>array('title'=>'Тысяча условных метров', 'number'=>255, 'short_title'=>'10^3 усл. м'),
		49=>array('title'=>'Километр условных труб', 'number'=>255, 'short_title'=>'км усл. труб'),
		50=>array('title'=>'Квадратный миллиметр', 'number'=>255, 'short_title'=>'мм2'),
		51=>array('title'=>'Квадратный сантиметр', 'number'=>30, 'short_title'=>'см2'),
		53=>array('title'=>'Квадратный дециметр', 'number'=>31, 'short_title'=>'дм2'),
		54=>array('title'=>'Тысяча квадратных дециметров', 'number'=>255, 'short_title'=>'10^3 дм2'),
		55=>array('title'=>'Квадратный метр', 'number'=>32, 'short_title'=>'м2'),
		56=>array('title'=>'Миллион квадратных дециметров', 'number'=>255, 'short_title'=>'10^6 дм2'),
		57=>array('title'=>'Миллион квадратных метров', 'number'=>255, 'short_title'=>'10^6 м2'),
		58=>array('title'=>'Тысяча квадратных метров', 'number'=>255, 'short_title'=>'10^3 м2'),
		59=>array('title'=>'Гектар', 'number'=>255, 'short_title'=>'га'),
		60=>array('title'=>'Тысяча гектаров', 'number'=>255, 'short_title'=>'10^3 га'),
		61=>array('title'=>'Квадратный километр', 'number'=>255, 'short_title'=>'км2'),
		62=>array('title'=>'Условный квадратный метр', 'number'=>255, 'short_title'=>'усл. м2'),
		63=>array('title'=>'Тысяча условных квадратных метров', 'number'=>255, 'short_title'=>'10^3 усл. м2'),
		64=>array('title'=>'Миллион условных квадратных метров', 'number'=>255, 'short_title'=>'10^6 усл. м2'),
		71=>array('title'=>'Квадратный дюйм (645,16 мм2)', 'number'=>255, 'short_title'=>'дюйм2'),
		73=>array('title'=>'Квадратный фут (0,092903 м2)', 'number'=>255, 'short_title'=>'фут2'),
		75=>array('title'=>'Квадратный ярд (0,8361274 м2)', 'number'=>255, 'short_title'=>'ярд2'),
		77=>array('title'=>'Акр (4840 квадратных ярдов)', 'number'=>255, 'short_title'=>'acre'),
		79=>array('title'=>'Квадратная миля', 'number'=>255, 'short_title'=>'mile2'),
		81=>array('title'=>'Квадратный метр общей площади', 'number'=>255, 'short_title'=>'м2 общ. пл'),
		82=>array('title'=>'Тысяча квадратных метров общей площади', 'number'=>255, 'short_title'=>'10^3 м2 общ. пл'),
		83=>array('title'=>'Миллион квадратных метров общей площади', 'number'=>255, 'short_title'=>'10^6 м2 общ. пл'),
		84=>array('title'=>'Квадратный метр жилой площади', 'number'=>255, 'short_title'=>'м2 жил. пл'),
		85=>array('title'=>'Тысяча квадратных метров жилой площади', 'number'=>255, 'short_title'=>'10^3 м2 жил. пл'),
		86=>array('title'=>'Миллион квадратных метров жилой площади', 'number'=>255, 'short_title'=>'10^6 м2 жил. пл'),
		87=>array('title'=>'Квадратный метр учебно-лабораторных зданий', 'number'=>255, 'short_title'=>'м2 уч. лаб. здан'),
		88=>array('title'=>'Тысяча квадратных метров учебно-лабораторных зданий', 'number'=>255, 'short_title'=>'10^3 м2 уч. лаб. здан'),
		89=>array('title'=>'Миллион квадратных метров в двухмилли-метровом исчислении', 'number'=>255, 'short_title'=>'10^6 м2 2 мм исч'),
		114=>array('title'=>'Тысяча кубических метров', 'number'=>255, 'short_title'=>'10^3 м3'),
		115=>array('title'=>'Миллиард кубических метров', 'number'=>255, 'short_title'=>'10^9 м3'),
		118=>array('title'=>'Децилитр', 'number'=>255, 'short_title'=>'дл'),
		119=>array('title'=>'Тысяча декалитров', 'number'=>255, 'short_title'=>'10^3 дкл'),
		120=>array('title'=>'Миллион декалитров', 'number'=>255, 'short_title'=>'10^6 дкл'),
		121=>array('title'=>'Плотный кубический метр', 'number'=>255, 'short_title'=>'плотн. м3'),
		122=>array('title'=>'Гектолитр', 'number'=>255, 'short_title'=>'гл'),
		123=>array('title'=>'Условный кубический метр', 'number'=>255, 'short_title'=>'усл. м3'),
		124=>array('title'=>'Тысяча условных кубических метров', 'number'=>255, 'short_title'=>'10^3 усл. м3'),
		125=>array('title'=>'Миллион кубических метров переработки газа', 'number'=>255, 'short_title'=>'10^6 м3 перераб. газа'),
		126=>array('title'=>'Мегалитр', 'number'=>255, 'short_title'=>'Мл'),
		127=>array('title'=>'Тысяча плотных кубических метров', 'number'=>255, 'short_title'=>'10^3 плотн. м3'),
		128=>array('title'=>'Тысяча полулитров', 'number'=>255, 'short_title'=>'10^3 пол. л'),
		129=>array('title'=>'Миллион полулитров', 'number'=>255, 'short_title'=>'10^6 пол. л'),
		130=>array('title'=>'Тысяча литров; 1000 литров', 'number'=>255, 'short_title'=>'10^3 л'),
		131=>array('title'=>'Кубический дюйм (16387,1 мм3)', 'number'=>255, 'short_title'=>'дюйм3'),
		132=>array('title'=>'Кубический фут (0,02831685 м3)', 'number'=>255, 'short_title'=>'фут3'),
		133=>array('title'=>'Кубический ярд (0,764555 м3)', 'number'=>255, 'short_title'=>'ярд3'),
		135=>array('title'=>'Жидкостная унция СК (28,413 см3)', 'number'=>255, 'short_title'=>'fl oz (UK)'),
		136=>array('title'=>'Джилл СК (0,142065 дм3)', 'number'=>255, 'short_title'=>'gill (UK)'),
		137=>array('title'=>'Пинта СК (0,568262 дм3)', 'number'=>255, 'short_title'=>'pt (UK)'),
		138=>array('title'=>'Кварта СК (1,136523 дм3)', 'number'=>255, 'short_title'=>'qt (UK)'),
		139=>array('title'=>'Галлон СК (4,546092 дм3)', 'number'=>255, 'short_title'=>'gal (UK)'),
		140=>array('title'=>'Бушель СК (36,36874 дм3)', 'number'=>255, 'short_title'=>'bu (UK)'),
		141=>array('title'=>'Жидкостная унция США (29,5735 см3)', 'number'=>255, 'short_title'=>'fl oz (US)'),
		142=>array('title'=>'Джилл США (11,8294 см3)', 'number'=>255, 'short_title'=>'gill (US)'),
		143=>array('title'=>'Жидкостная пинта США (0,473176 дм3)', 'number'=>255, 'short_title'=>'liq pt (US)'),
		144=>array('title'=>'Жидкостная кварта США (0,946353 дм3)', 'number'=>255, 'short_title'=>'liq qt (US)'),
		145=>array('title'=>'Жидкостный галлон США (3,78541 дм3)', 'number'=>255, 'short_title'=>'gal (US)'),
		146=>array('title'=>'Баррель (нефтяной) США (158,987 дм3)', 'number'=>255, 'short_title'=>'barrel (US)'),
		147=>array('title'=>'Сухая пинта США (0,55061 дм3)', 'number'=>255, 'short_title'=>'dry pt (US)'),
		148=>array('title'=>'Сухая кварта США (1,10^1221 дм3)', 'number'=>255, 'short_title'=>'dry qt (US)'),
		149=>array('title'=>'Сухой галлон США (4,404884 дм3)', 'number'=>255, 'short_title'=>'dry gal (US)'),
		150=>array('title'=>'Бушель США (35,2391 дм3)', 'number'=>255, 'short_title'=>'bu (US)'),
		151=>array('title'=>'Сухой баррель США (115,627 дм3)', 'number'=>255, 'short_title'=>'bbl (US)'),
		152=>array('title'=>'Стандарт', 'number'=>255, 'short_title'=>'-'),
		153=>array('title'=>'Корд (3,63 м3)', 'number'=>255, 'short_title'=>'-'),
		154=>array('title'=>'Тысячи бордфутов (2,36 м3)', 'number'=>255, 'short_title'=>'-'),
		159=>array('title'=>'Миллион кубических метров', 'number'=>255, 'short_title'=>'10^6 м3'),
		160=>array('title'=>'Гектограмм', 'number'=>255, 'short_title'=>'гг'),
		161=>array('title'=>'Миллиграмм', 'number'=>255, 'short_title'=>'мг'),
		162=>array('title'=>'Метрический карат', 'number'=>255, 'short_title'=>'кар'),
		165=>array('title'=>'Тысяча каратов метрических', 'number'=>255, 'short_title'=>'10^3 кар'),
		167=>array('title'=>'Миллион каратов метрических', 'number'=>255, 'short_title'=>'10^6 кар'),
		169=>array('title'=>'Тысяча тонн', 'number'=>255, 'short_title'=>'10^3 т'),
		170=>array('title'=>'Килотонна', 'number'=>255, 'short_title'=>'10^3 т'),
		171=>array('title'=>'Миллион тонн', 'number'=>255, 'short_title'=>'10^6 т'),
		172=>array('title'=>'Тонна условного топлива', 'number'=>255, 'short_title'=>'т усл. топл'),
		173=>array('title'=>'Сантиграмм', 'number'=>255, 'short_title'=>'сг'),
		175=>array('title'=>'Тысяча тонн условного топлива', 'number'=>255, 'short_title'=>'10^3 т усл. топл'),
		176=>array('title'=>'Миллион тонн условного топлива', 'number'=>255, 'short_title'=>'10^6 т усл. топл'),
		177=>array('title'=>'Тысяча тонн единовременного хранения', 'number'=>255, 'short_title'=>'10^3 т единовр. хран'),
		178=>array('title'=>'Тысяча тонн переработки', 'number'=>255, 'short_title'=>'10^3 т перераб'),
		179=>array('title'=>'Условная тонна', 'number'=>255, 'short_title'=>'усл. т'),
		181=>array('title'=>'Брутто-регистровая тонна (2,8316 м3)', 'number'=>255, 'short_title'=>'БРТ'),
		182=>array('title'=>'Нетто-регистровая тонна', 'number'=>255, 'short_title'=>'-'),
		183=>array('title'=>'Обмерная (фрахтовая) тонна', 'number'=>255, 'short_title'=>'-'),
		184=>array('title'=>'Водоизмещение', 'number'=>255, 'short_title'=>'-'),
		185=>array('title'=>'Грузоподъемность в метрических тоннах', 'number'=>255, 'short_title'=>'т грп'),
		186=>array('title'=>'Фунт СК, США (0,45359237 кг)', 'number'=>255, 'short_title'=>'lb'),
		187=>array('title'=>'Унция СК, США (28,349523 г)', 'number'=>255, 'short_title'=>'oz'),
		188=>array('title'=>'Драхма СК (1,771745 г)', 'number'=>255, 'short_title'=>'dr'),
		189=>array('title'=>'Гран СК, США (64,798910 мг)', 'number'=>255, 'short_title'=>'gn'),
		190=>array('title'=>'Стоун СК (6,350293 кг)', 'number'=>255, 'short_title'=>'st'),
		191=>array('title'=>'Квартер СК (12,700586 кг)', 'number'=>255, 'short_title'=>'qtr'),
		192=>array('title'=>'Центал СК (45,359237 кг)', 'number'=>255, 'short_title'=>'-'),
		193=>array('title'=>'Центнер США (45,3592 кг)', 'number'=>255, 'short_title'=>'cwt'),
		194=>array('title'=>'Длинный центнер СК (50,802345 кг)', 'number'=>255, 'short_title'=>'cwt (UK)'),
		195=>array('title'=>'Короткая тонна СК, США (0,90718474 т) [2*]', 'number'=>255, 'short_title'=>'sht'),
		196=>array('title'=>'Длинная тонна СК, США (1,0160469 т) [2*]', 'number'=>255, 'short_title'=>'lt'),
		197=>array('title'=>'Скрупул СК, США (1,295982 г)', 'number'=>255, 'short_title'=>'scr'),
		198=>array('title'=>'Пеннивейт СК, США (1,555174 г)', 'number'=>255, 'short_title'=>'dwt'),
		199=>array('title'=>'Драхма СК (3,887935 г)', 'number'=>255, 'short_title'=>'drm'),
		200=>array('title'=>'Драхма США (3,887935 г)', 'number'=>255, 'short_title'=>'-'),
		201=>array('title'=>'Унция СК, США (31,10^348 г); тройская унция', 'number'=>255, 'short_title'=>'apoz'),
		202=>array('title'=>'Тройский фунт США (373,242 г)', 'number'=>255, 'short_title'=>'-'),
		206=>array('title'=>'Центнер (метрический) (100 кг); гектокилограмм; квинтал1 (метрический); децитонна', 'number'=>255, 'short_title'=>'ц'),
		207=>array('title'=>'Тысяча центнеров', 'number'=>255, 'short_title'=>'10^3 ц'),
		212=>array('title'=>'Ватт', 'number'=>255, 'short_title'=>'Вт'),
		213=>array('title'=>'Эффективная мощность (245,7 ватт)', 'number'=>255, 'short_title'=>'B.h.p.'),
		214=>array('title'=>'Киловатт', 'number'=>255, 'short_title'=>'кВт'),
		215=>array('title'=>'тысяча киловатт', 'number'=>255, 'short_title'=>'10^3 кВт'),
		222=>array('title'=>'Вольт', 'number'=>255, 'short_title'=>'В'),
		223=>array('title'=>'Киловольт', 'number'=>255, 'short_title'=>'кВ'),
		226=>array('title'=>'Вольт-ампер', 'number'=>255, 'short_title'=>'В.А'),
		227=>array('title'=>'Киловольт-ампер', 'number'=>255, 'short_title'=>'кВ.А'),
		228=>array('title'=>'Мегавольт-ампер (тысяча киловольт-ампер)', 'number'=>255, 'short_title'=>'МВ.А'),
		230=>array('title'=>'Киловар', 'number'=>255, 'short_title'=>'квар'),
		231=>array('title'=>'Метр в час', 'number'=>255, 'short_title'=>'м/ч'),
		232=>array('title'=>'Килокалория', 'number'=>255, 'short_title'=>'ккал'),
		233=>array('title'=>'Гигакалория', 'number'=>51, 'short_title'=>'Гкал'),
		234=>array('title'=>'Тысяча гигакалорий', 'number'=>255, 'short_title'=>'10^3 Гкал'),
		235=>array('title'=>'Миллион гигакалорий', 'number'=>255, 'short_title'=>'10^6 Гкал'),
		236=>array('title'=>'Калория в час', 'number'=>255, 'short_title'=>'кал/ч'),
		237=>array('title'=>'Килокалория в час', 'number'=>255, 'short_title'=>'ккал/ч'),
		238=>array('title'=>'Гигакалория в час', 'number'=>255, 'short_title'=>'Гкал/ч'),
		239=>array('title'=>'Тысяча гигакалорий в час', 'number'=>255, 'short_title'=>'10^3 Гкал/ч'),
		241=>array('title'=>'Миллион ампер-часов', 'number'=>255, 'short_title'=>'10^6 А.ч'),
		242=>array('title'=>'Миллион киловольт-ампер', 'number'=>255, 'short_title'=>'10^6 кВ.А'),
		243=>array('title'=>'Ватт-час', 'number'=>255, 'short_title'=>'Вт.ч'),
		245=>array('title'=>'Киловатт-час', 'number'=>50, 'short_title'=>'кВт.ч'),
		246=>array('title'=>'Мегаватт-час; 1000 киловатт-часов', 'number'=>255, 'short_title'=>'МВт.ч'),
		247=>array('title'=>'Гигаватт-час (миллион киловатт-часов)', 'number'=>255, 'short_title'=>'ГВт.ч'),
		248=>array('title'=>'Киловольт-ампер реактивный', 'number'=>255, 'short_title'=>'кВ.А Р'),
		249=>array('title'=>'Миллиард киловатт-часов', 'number'=>255, 'short_title'=>'10^9 кВт.ч'),
		250=>array('title'=>'Тысяча киловольт-ампер реактивных', 'number'=>255, 'short_title'=>'10^3 кВ.А Р'),
		251=>array('title'=>'Лошадиная сила', 'number'=>255, 'short_title'=>'л. с'),
		252=>array('title'=>'Тысяча лошадиных сил', 'number'=>255, 'short_title'=>'10^3 л. с'),
		253=>array('title'=>'Миллион лошадиных сил', 'number'=>255, 'short_title'=>'10^6 л. с'),
		254=>array('title'=>'Бит', 'number'=>255, 'short_title'=>'бит'),
		255=>array('title'=>'Байт', 'number'=>255, 'short_title'=>'байт'),
		256=>array('title'=>'Килобайт', 'number'=>80, 'short_title'=>'кбайт'),
		257=>array('title'=>'Мегабайт', 'number'=>81, 'short_title'=>'Мбайт'),
		258=>array('title'=>'Бод', 'number'=>255, 'short_title'=>'бод'),
		260=>array('title'=>'Ампер', 'number'=>255, 'short_title'=>'А'),
		263=>array('title'=>'Ампер-час (3,6 кКл)', 'number'=>255, 'short_title'=>'А.ч'),
		264=>array('title'=>'Тысяча ампер-часов', 'number'=>255, 'short_title'=>'10^3 А.ч'),
		270=>array('title'=>'Кулон', 'number'=>255, 'short_title'=>'Кл'),
		271=>array('title'=>'Джоуль', 'number'=>255, 'short_title'=>'Дж'),
		273=>array('title'=>'Килоджоуль', 'number'=>255, 'short_title'=>'кДж'),
		274=>array('title'=>'Ом', 'number'=>255, 'short_title'=>'Ом'),
		275=>array('title'=>'Британская тепловая единица (1,055 кДж)', 'number'=>255, 'short_title'=>'Btu'),
		280=>array('title'=>'Градус Цельсия', 'number'=>255, 'short_title'=>'град. C'),
		281=>array('title'=>'Градус Фаренгейта', 'number'=>255, 'short_title'=>'град. F'),
		282=>array('title'=>'Кандела', 'number'=>255, 'short_title'=>'кд'),
		283=>array('title'=>'Люкс', 'number'=>255, 'short_title'=>'лк'),
		284=>array('title'=>'Люмен', 'number'=>255, 'short_title'=>'лм'),
		287=>array('title'=>'Генри', 'number'=>255, 'short_title'=>'Гн'),
		288=>array('title'=>'Кельвин', 'number'=>255, 'short_title'=>'K'),
		289=>array('title'=>'Ньютон', 'number'=>255, 'short_title'=>'Н'),
		290=>array('title'=>'Герц', 'number'=>255, 'short_title'=>'Гц'),
		291=>array('title'=>'Килогерц', 'number'=>255, 'short_title'=>'кГц'),
		292=>array('title'=>'Мегагерц', 'number'=>255, 'short_title'=>'МГц'),
		294=>array('title'=>'Паскаль', 'number'=>255, 'short_title'=>'Па'),
		296=>array('title'=>'Сименс', 'number'=>255, 'short_title'=>'См'),
		297=>array('title'=>'Килопаскаль', 'number'=>255, 'short_title'=>'кПа'),
		298=>array('title'=>'Мегапаскаль', 'number'=>255, 'short_title'=>'МПа'),
		300=>array('title'=>'Физическая атмосфера (101325 Па)', 'number'=>255, 'short_title'=>'атм'),
		301=>array('title'=>'Техническая атмосфера (98066,5 Па)', 'number'=>255, 'short_title'=>'ат'),
		302=>array('title'=>'Гигабеккерель', 'number'=>255, 'short_title'=>'ГБк'),
		304=>array('title'=>'Милликюри', 'number'=>255, 'short_title'=>'мКи'),
		305=>array('title'=>'Кюри', 'number'=>255, 'short_title'=>'Ки'),
		306=>array('title'=>'Грамм делящихся изотопов', 'number'=>255, 'short_title'=>'г Д/И'),
		308=>array('title'=>'Миллибар', 'number'=>255, 'short_title'=>'мб'),
		309=>array('title'=>'Бар', 'number'=>255, 'short_title'=>'бар'),
		310=>array('title'=>'Гектобар', 'number'=>255, 'short_title'=>'гб'),
		312=>array('title'=>'Килобар', 'number'=>255, 'short_title'=>'кб'),
		313=>array('title'=>'Тесла', 'number'=>255, 'short_title'=>'Тл'),
		314=>array('title'=>'Фарад', 'number'=>255, 'short_title'=>'Ф'),
		316=>array('title'=>'Килограмм на кубический метр', 'number'=>255, 'short_title'=>'кг/м3'),
		317=>array('title'=>'Килограмм на квадратный сантиметр', 'number'=>255, 'short_title'=>'кг/см2'),
		323=>array('title'=>'Беккерель', 'number'=>255, 'short_title'=>'Бк'),
		324=>array('title'=>'Вебер', 'number'=>255, 'short_title'=>'Вб'),
		327=>array('title'=>'Узел (миля/ч)', 'number'=>255, 'short_title'=>'уз'),
		328=>array('title'=>'Метр в секунду', 'number'=>255, 'short_title'=>'м/с'),
		330=>array('title'=>'Оборот в секунду', 'number'=>255, 'short_title'=>'об/с'),
		331=>array('title'=>'Оборот в минуту', 'number'=>255, 'short_title'=>'об/мин'),
		333=>array('title'=>'Километр в час', 'number'=>255, 'short_title'=>'км/ч'),
		335=>array('title'=>'Метр на секунду в квадрате', 'number'=>255, 'short_title'=>'м/с2'),
		337=>array('title'=>'Миллиметр водяного столба', 'number'=>255, 'short_title'=>'мм вод. ст'),
		338=>array('title'=>'Миллиметр ртутного столба', 'number'=>255, 'short_title'=>'мм рт. ст'),
		339=>array('title'=>'Сантиметр водяного столба', 'number'=>255, 'short_title'=>'см вод. ст'),
		349=>array('title'=>'Кулон на килограмм', 'number'=>255, 'short_title'=>'Кл/кг'),
		352=>array('title'=>'Микросекунда', 'number'=>255, 'short_title'=>'мкс'),
		353=>array('title'=>'Миллисекунда', 'number'=>255, 'short_title'=>'млс'),
		354=>array('title'=>'Секунда', 'number'=>73, 'short_title'=>'с'),
		355=>array('title'=>'Минута', 'number'=>72, 'short_title'=>'мин'),
		356=>array('title'=>'Час', 'number'=>71, 'short_title'=>'ч'),
		359=>array('title'=>'Сутки', 'number'=>70, 'short_title'=>'сут'),
		360=>array('title'=>'Неделя', 'number'=>255, 'short_title'=>'нед'),
		361=>array('title'=>'Декада', 'number'=>255, 'short_title'=>'дек'),
		362=>array('title'=>'Месяц', 'number'=>255, 'short_title'=>'мес'),
		364=>array('title'=>'Квартал', 'number'=>255, 'short_title'=>'кварт'),
		365=>array('title'=>'Полугодие', 'number'=>255, 'short_title'=>'полгода'),
		366=>array('title'=>'Год', 'number'=>255, 'short_title'=>'год'),
		368=>array('title'=>'Десятилетие', 'number'=>255, 'short_title'=>'деслет'),
		383=>array('title'=>'Рубль', 'number'=>255, 'short_title'=>'руб'),
		384=>array('title'=>'Тысяча рублей', 'number'=>255, 'short_title'=>'10^3 руб'),
		385=>array('title'=>'Миллион рублей', 'number'=>255, 'short_title'=>'10^6 руб'),
		386=>array('title'=>'Миллиард рублей', 'number'=>255, 'short_title'=>'10^9 руб'),
		387=>array('title'=>'Триллион рублей', 'number'=>255, 'short_title'=>'10^12 руб'),
		388=>array('title'=>'Квадрильон рублей', 'number'=>255, 'short_title'=>'10^15 руб'),
		414=>array('title'=>'Пассажиро-километр', 'number'=>255, 'short_title'=>'пасс.км'),
		421=>array('title'=>'Пассажирское место (пассажирских мест)', 'number'=>255, 'short_title'=>'пасс. мест'),
		423=>array('title'=>'Тысяча пассажиро-километров', 'number'=>255, 'short_title'=>'10^3 пасс.км'),
		424=>array('title'=>'Миллион пассажиро-километров', 'number'=>255, 'short_title'=>'10^6 пасс. км'),
		427=>array('title'=>'Пассажиропоток', 'number'=>255, 'short_title'=>'пасс.поток'),
		449=>array('title'=>'Тонно-километр', 'number'=>255, 'short_title'=>'т.км'),
		450=>array('title'=>'Тысяча тонно-километров', 'number'=>255, 'short_title'=>'10^3 т.км'),
		451=>array('title'=>'Миллион тонно-километров', 'number'=>255, 'short_title'=>'10^6 т. км'),
		479=>array('title'=>'Тысяча наборов', 'number'=>255, 'short_title'=>'10^3 набор'),
		499=>array('title'=>'Килограмм в секунду', 'number'=>255, 'short_title'=>'кг/с'),
		510=>array('title'=>'Грамм на киловатт-час', 'number'=>255, 'short_title'=>'г/кВт.ч'),
		511=>array('title'=>'Килограмм на гигакалорию', 'number'=>255, 'short_title'=>'кг/Гкал'),
		512=>array('title'=>'Тонно-номер', 'number'=>255, 'short_title'=>'т.ном'),
		513=>array('title'=>'Автотонна', 'number'=>255, 'short_title'=>'авто т'),
		514=>array('title'=>'Тонна тяги', 'number'=>255, 'short_title'=>'т.тяги'),
		515=>array('title'=>'Дедвейт-тонна', 'number'=>255, 'short_title'=>'дедвейт.т'),
		516=>array('title'=>'Тонно-танид', 'number'=>255, 'short_title'=>'т.танид'),
		521=>array('title'=>'Человек на квадратный метр', 'number'=>255, 'short_title'=>'чел/м2'),
		522=>array('title'=>'Человек на квадратный километр', 'number'=>255, 'short_title'=>'чел/км2'),
		533=>array('title'=>'Тонна пара в час', 'number'=>255, 'short_title'=>'т пар/ч'),
		534=>array('title'=>'Тонна в час', 'number'=>255, 'short_title'=>'т/ч'),
		535=>array('title'=>'Тонна в сутки', 'number'=>255, 'short_title'=>'т/сут'),
		536=>array('title'=>'Тонна в смену', 'number'=>255, 'short_title'=>'т/смен'),
		537=>array('title'=>'Тысяча тонн в сезон', 'number'=>255, 'short_title'=>'10^3 т/сез'),
		538=>array('title'=>'Тысяча тонн в год', 'number'=>255, 'short_title'=>'10^3 т/год'),
		539=>array('title'=>'Человеко-час', 'number'=>255, 'short_title'=>'чел.ч'),
		540=>array('title'=>'Человеко-день', 'number'=>255, 'short_title'=>'чел.дн'),
		541=>array('title'=>'Тысяча человеко-дней', 'number'=>255, 'short_title'=>'10^3 чел.дн'),
		542=>array('title'=>'Тысяча человеко-часов', 'number'=>255, 'short_title'=>'10^3 чел.ч'),
		543=>array('title'=>'Тысяча условных банок в смену', 'number'=>255, 'short_title'=>'10^3 усл. банк/смен'),
		544=>array('title'=>'Миллион единиц в год', 'number'=>255, 'short_title'=>'10^6 ед/год'),
		545=>array('title'=>'Посещение в смену', 'number'=>255, 'short_title'=>'посещ/смен'),
		546=>array('title'=>'Тысяча посещений в смену', 'number'=>255, 'short_title'=>'10^3 посещ/смен'),
		547=>array('title'=>'Пара в смену', 'number'=>255, 'short_title'=>'пар/смен'),
		548=>array('title'=>'Тысяча пар в смену', 'number'=>255, 'short_title'=>'10^3 пар/смен'),
		550=>array('title'=>'Миллион тонн в год', 'number'=>255, 'short_title'=>'10^6 т/год'),
		552=>array('title'=>'Тонна переработки в сутки', 'number'=>255, 'short_title'=>'т перераб/сут'),
		553=>array('title'=>'Тысяча тонн переработки в сутки', 'number'=>255, 'short_title'=>'10^3 т перераб/сут'),
		554=>array('title'=>'Центнер переработки в сутки', 'number'=>255, 'short_title'=>'ц перераб/сут'),
		555=>array('title'=>'Тысяча центнеров переработки в сутки', 'number'=>255, 'short_title'=>'10^3 ц перераб/сут'),
		556=>array('title'=>'Тысяча голов в год', 'number'=>255, 'short_title'=>'10^3 гол/год'),
		557=>array('title'=>'Миллион голов в год', 'number'=>255, 'short_title'=>'10^6 гол/год'),
		558=>array('title'=>'Тысяча птицемест', 'number'=>255, 'short_title'=>'10^3 птицемест'),
		559=>array('title'=>'Тысяча кур-несушек', 'number'=>255, 'short_title'=>'10^3 кур. несуш'),
		560=>array('title'=>'Минимальная заработная плата', 'number'=>255, 'short_title'=>'мин. заработн. плат'),
		561=>array('title'=>'Тысяча тонн пара в час', 'number'=>255, 'short_title'=>'10^3 т пар/ч'),
		562=>array('title'=>'Тысяча прядильных веретен', 'number'=>255, 'short_title'=>'10^3 пряд.верет'),
		563=>array('title'=>'Тысяча прядильных мест', 'number'=>255, 'short_title'=>'10^3 пряд.мест'),
		596=>array('title'=>'Кубический метр в секунду', 'number'=>255, 'short_title'=>'м3/с'),
		598=>array('title'=>'Кубический метр в час', 'number'=>255, 'short_title'=>'м3/ч'),
		599=>array('title'=>'Тысяча кубических метров в сутки', 'number'=>255, 'short_title'=>'10^3 м3/сут'),
		616=>array('title'=>'Бобина', 'number'=>255, 'short_title'=>'боб'),
		626=>array('title'=>'Сто листов', 'number'=>255, 'short_title'=>'100 л.'),
		630=>array('title'=>'Тысяча стандартных условных кирпичей', 'number'=>255, 'short_title'=>'тыс станд. усл. кирп'),
		638=>array('title'=>'Гросс (144 шт.)', 'number'=>255, 'short_title'=>'gr; 144'),
		639=>array('title'=>'Доза', 'number'=>255, 'short_title'=>'доз'),
		640=>array('title'=>'Тысяча доз', 'number'=>255, 'short_title'=>'10^3 доз'),
		641=>array('title'=>'Дюжина (12 шт.)', 'number'=>255, 'short_title'=>'дюжина'),
		642=>array('title'=>'Единица', 'number'=>255, 'short_title'=>'ед'),
		643=>array('title'=>'Тысяча единиц', 'number'=>255, 'short_title'=>'10^3 ед'),
		644=>array('title'=>'Миллион единиц', 'number'=>255, 'short_title'=>'10^6 ед'),
		657=>array('title'=>'Изделие', 'number'=>255, 'short_title'=>'изд'),
		661=>array('title'=>'Канал', 'number'=>255, 'short_title'=>'канал'),
		673=>array('title'=>'Тысяча комплектов', 'number'=>255, 'short_title'=>'10^3 компл'),
		683=>array('title'=>'Сто ящиков', 'number'=>255, 'short_title'=>'100 ящ.'),
		698=>array('title'=>'Место', 'number'=>255, 'short_title'=>'мест'),
		699=>array('title'=>'Тысяча мест', 'number'=>255, 'short_title'=>'10^3 мест'),
		704=>array('title'=>'Набор', 'number'=>255, 'short_title'=>'набор'),
		709=>array('title'=>'Тысяча номеров', 'number'=>255, 'short_title'=>'10^3 ном'),
		715=>array('title'=>'Пара (2 шт.)', 'number'=>255, 'short_title'=>'пар'),
		724=>array('title'=>'Тысяча гектаров порций', 'number'=>255, 'short_title'=>'10^3 га порц'),
		729=>array('title'=>'Тысяча пачек', 'number'=>255, 'short_title'=>'10^3 пач'),
		730=>array('title'=>'Два десятка', 'number'=>255, 'short_title'=>'20'),
		731=>array('title'=>'Большой гросс (12 гроссов)', 'number'=>255, 'short_title'=>'1728'),
		732=>array('title'=>'Десять пар', 'number'=>255, 'short_title'=>'10 пар'),
		733=>array('title'=>'Дюжина пар', 'number'=>255, 'short_title'=>'дюжина пар'),
		734=>array('title'=>'Посылка', 'number'=>255, 'short_title'=>'посыл'),
		735=>array('title'=>'Часть', 'number'=>255, 'short_title'=>'часть'),
		737=>array('title'=>'Дюжина рулонов', 'number'=>255, 'short_title'=>'дюжина рул'),
		738=>array('title'=>'Короткий стандарт (7200 единиц)', 'number'=>255, 'short_title'=>'-'),
		740=>array('title'=>'Дюжина штук', 'number'=>255, 'short_title'=>'дюжина шт'),
		744=>array('title'=>'Процент', 'number'=>255, 'short_title'=>'%'),
		745=>array('title'=>'Элемент', 'number'=>255, 'short_title'=>'элем'),
		746=>array('title'=>'Промилле (0,1 процента)', 'number'=>255, 'short_title'=>'промилле'),
		751=>array('title'=>'Тысяча рулонов', 'number'=>255, 'short_title'=>'10^3 рул'),
		761=>array('title'=>'Тысяча станов', 'number'=>255, 'short_title'=>'10^3 стан'),
		762=>array('title'=>'Станция', 'number'=>255, 'short_title'=>'станц'),
		775=>array('title'=>'Тысяча тюбиков', 'number'=>255, 'short_title'=>'10^3 тюбик'),
		776=>array('title'=>'Тысяча условных тубов', 'number'=>255, 'short_title'=>'10^3 усл.туб'),
		778=>array('title'=>'Упаковка', 'number'=>255, 'short_title'=>'упак'),
		779=>array('title'=>'Миллион упаковок', 'number'=>255, 'short_title'=>'10^6 упак'),
		780=>array('title'=>'Дюжина упаковок', 'number'=>255, 'short_title'=>'дюжина упак'),
		781=>array('title'=>'Сто упаковок', 'number'=>255, 'short_title'=>'100 упак'),
		782=>array('title'=>'Тысяча упаковок', 'number'=>255, 'short_title'=>'10^3 упак'),
		792=>array('title'=>'Человек', 'number'=>255, 'short_title'=>'чел'),
		793=>array('title'=>'Тысяча человек', 'number'=>255, 'short_title'=>'10^3 чел'),
		794=>array('title'=>'Миллион человек', 'number'=>255, 'short_title'=>'10^6 чел'),
		797=>array('title'=>'Сто штук', 'number'=>255, 'short_title'=>'100 шт'),
		798=>array('title'=>'Тысяча штук', 'number'=>255, 'short_title'=>'тыс. шт'),
		799=>array('title'=>'Миллион штук', 'number'=>255, 'short_title'=>'10^6 шт'),
		800=>array('title'=>'Миллиард штук', 'number'=>255, 'short_title'=>'10^9 шт'),
		801=>array('title'=>'Биллион штук (Европа); триллион штук', 'number'=>255, 'short_title'=>'10^12 шт'),
		802=>array('title'=>'Квинтильон штук (Европа)', 'number'=>255, 'short_title'=>'1018 шт'),
		808=>array('title'=>'Миллион экземпляров', 'number'=>255, 'short_title'=>'10^6 экз'),
		810=>array('title'=>'Ячейка', 'number'=>255, 'short_title'=>'яч'),
		812=>array('title'=>'Ящик', 'number'=>255, 'short_title'=>'ящ'),
		820=>array('title'=>'Крепость спирта по массе', 'number'=>255, 'short_title'=>'креп. спирта по массе'),
		821=>array('title'=>'Крепость спирта по объему', 'number'=>255, 'short_title'=>'креп. спирта по объему'),
		831=>array('title'=>'Литр чистого (100%) спирта', 'number'=>255, 'short_title'=>'л 100% спирта'),
		833=>array('title'=>'Гектолитр чистого (100%) спирта', 'number'=>255, 'short_title'=>'Гл 100% спирта'),
		835=>array('title'=>'Галлон спирта установленной крепости', 'number'=>255, 'short_title'=>'-'),
		836=>array('title'=>'Голова', 'number'=>255, 'short_title'=>'гол'),
		837=>array('title'=>'Тысяча пар', 'number'=>255, 'short_title'=>'10^3 пар'),
		838=>array('title'=>'Миллион пар', 'number'=>255, 'short_title'=>'10^6 пар'),
		840=>array('title'=>'Секция', 'number'=>255, 'short_title'=>'секц'),
		841=>array('title'=>'Килограмм пероксида водорода', 'number'=>255, 'short_title'=>'кг H2О2'),
		845=>array('title'=>'Килограмм 90%-го сухого вещества', 'number'=>255, 'short_title'=>'кг 90% с/в'),
		847=>array('title'=>'Тонна 90%-го сухого вещества', 'number'=>255, 'short_title'=>'т 90% с/в'),
		851=>array('title'=>'Международная единица', 'number'=>255, 'short_title'=>'-'),
		852=>array('title'=>'Килограмм оксида калия', 'number'=>255, 'short_title'=>'кг К2О'),
		853=>array('title'=>'Сто международных единиц', 'number'=>255, 'short_title'=>'-'),
		859=>array('title'=>'Килограмм гидроксида калия', 'number'=>255, 'short_title'=>'кг КОН'),
		861=>array('title'=>'Килограмм азота', 'number'=>255, 'short_title'=>'кг N'),
		863=>array('title'=>'Килограмм гидроксида натрия', 'number'=>255, 'short_title'=>'кг NaOH'),
		865=>array('title'=>'Килограмм пятиокиси фосфора', 'number'=>255, 'short_title'=>'кг Р2О5'),
		867=>array('title'=>'Килограмм урана', 'number'=>255, 'short_title'=>'кг U'),
		869=>array('title'=>'Тысяча бутылок', 'number'=>255, 'short_title'=>'10^3 бут'),
		870=>array('title'=>'Ампула', 'number'=>255, 'short_title'=>'ампул'),
		871=>array('title'=>'Тысяча ампул', 'number'=>255, 'short_title'=>'10^3 ампул'),
		872=>array('title'=>'Флакон', 'number'=>255, 'short_title'=>'флак'),
		873=>array('title'=>'Тысяча флаконов', 'number'=>255, 'short_title'=>'10^3 флак'),
		874=>array('title'=>'Тысяча тубов', 'number'=>255, 'short_title'=>'10^3 туб'),
		875=>array('title'=>'Тысяча коробок', 'number'=>255, 'short_title'=>'10^3 кор'),
		876=>array('title'=>'Условная единица', 'number'=>255, 'short_title'=>'усл. ед'),
		877=>array('title'=>'Тысяча условных единиц', 'number'=>255, 'short_title'=>'10^3 усл. ед'),
		878=>array('title'=>'Миллион условных единиц', 'number'=>255, 'short_title'=>'10^6 усл. ед'),
		879=>array('title'=>'Условная штука', 'number'=>255, 'short_title'=>'усл. шт'),
		880=>array('title'=>'Тысяча условных штук', 'number'=>255, 'short_title'=>'10^3 усл. шт'),
		881=>array('title'=>'Условная банка', 'number'=>255, 'short_title'=>'усл. банк'),
		882=>array('title'=>'Тысяча условных банок', 'number'=>255, 'short_title'=>'10^3 усл. банк'),
		883=>array('title'=>'Миллион условных банок', 'number'=>255, 'short_title'=>'10^6 усл. банк'),
		884=>array('title'=>'Условный кусок', 'number'=>255, 'short_title'=>'усл. кус'),
		885=>array('title'=>'Тысяча условных кусков', 'number'=>255, 'short_title'=>'10^3 усл. кус'),
		886=>array('title'=>'Миллион условных кусков', 'number'=>255, 'short_title'=>'10^6 усл. кус'),
		887=>array('title'=>'Условный ящик', 'number'=>255, 'short_title'=>'усл. ящ'),
		888=>array('title'=>'Тысяча условных ящиков', 'number'=>255, 'short_title'=>'10^3 усл. ящ'),
		889=>array('title'=>'Условная катушка', 'number'=>255, 'short_title'=>'усл. кат'),
		890=>array('title'=>'Тысяча условных катушек', 'number'=>255, 'short_title'=>'10^3 усл. кат'),
		891=>array('title'=>'Условная плитка', 'number'=>255, 'short_title'=>'усл. плит'),
		892=>array('title'=>'Тысяча условных плиток', 'number'=>255, 'short_title'=>'10^3 усл. плит'),
		893=>array('title'=>'Условный кирпич', 'number'=>255, 'short_title'=>'усл. кирп'),
		894=>array('title'=>'Тысяча условных кирпичей', 'number'=>255, 'short_title'=>'10^3 усл. кирп'),
		895=>array('title'=>'Миллион условных кирпичей', 'number'=>255, 'short_title'=>'10^6 усл. кирп'),
		896=>array('title'=>'Семья', 'number'=>255, 'short_title'=>'семей'),
		897=>array('title'=>'Тысяча семей', 'number'=>255, 'short_title'=>'10^3 семей'),
		898=>array('title'=>'Миллион семей', 'number'=>255, 'short_title'=>'10^6 семей'),
		899=>array('title'=>'Домохозяйство', 'number'=>255, 'short_title'=>'домхоз'),
		900=>array('title'=>'Тысяча домохозяйств', 'number'=>255, 'short_title'=>'10^3 домхоз'),
		901=>array('title'=>'Миллион домохозяйств', 'number'=>255, 'short_title'=>'10^6 домхоз'),
		902=>array('title'=>'Ученическое место', 'number'=>255, 'short_title'=>'учен. мест'),
		903=>array('title'=>'Тысяча ученических мест', 'number'=>255, 'short_title'=>'10^3 учен. мест'),
		904=>array('title'=>'Рабочее место', 'number'=>255, 'short_title'=>'раб. мест'),
		905=>array('title'=>'Тысяча рабочих мест', 'number'=>255, 'short_title'=>'10^3 раб. мест'),
		906=>array('title'=>'Посадочное место', 'number'=>255, 'short_title'=>'посад. мест'),
		907=>array('title'=>'Тысяча посадочных мест', 'number'=>255, 'short_title'=>'10^3 посад. мест'),
		908=>array('title'=>'Номер', 'number'=>255, 'short_title'=>'ном'),
		909=>array('title'=>'Квартира', 'number'=>255, 'short_title'=>'кварт'),
		910=>array('title'=>'Тысяча квартир', 'number'=>255, 'short_title'=>'10^3 кварт'),
		911=>array('title'=>'Койка', 'number'=>255, 'short_title'=>'коек'),
		912=>array('title'=>'Тысяча коек', 'number'=>255, 'short_title'=>'10^3 коек'),
		913=>array('title'=>'Том книжного фонда', 'number'=>255, 'short_title'=>'том книжн. фонд'),
		914=>array('title'=>'Тысяча томов книж-ного фонда', 'number'=>255, 'short_title'=>'10^3 том. книжн. фонд'),
		915=>array('title'=>'Условный ремонт', 'number'=>255, 'short_title'=>'усл. рем'),
		916=>array('title'=>'Условный ремонт в год', 'number'=>255, 'short_title'=>'усл. рем/год'),
		917=>array('title'=>'Смена', 'number'=>255, 'short_title'=>'смен'),
		918=>array('title'=>'Лист авторский', 'number'=>255, 'short_title'=>'л. авт'),
		920=>array('title'=>'Лист печатный', 'number'=>255, 'short_title'=>'л. печ'),
		921=>array('title'=>'Лист учетно-издательский', 'number'=>255, 'short_title'=>'л. уч.-изд'),
		922=>array('title'=>'Знак', 'number'=>255, 'short_title'=>'знак'),
		923=>array('title'=>'Слово', 'number'=>255, 'short_title'=>'слово'),
		924=>array('title'=>'Символ', 'number'=>255, 'short_title'=>'символ'),
		925=>array('title'=>'Условная труба', 'number'=>255, 'short_title'=>'усл. труб'),
		930=>array('title'=>'Тысяча пластин', 'number'=>255, 'short_title'=>'10^3 пласт'),
		937=>array('title'=>'Миллион доз', 'number'=>255, 'short_title'=>'10^6 доз'),
		949=>array('title'=>'Миллион листов-оттисков', 'number'=>255, 'short_title'=>'10^6 лист.оттиск'),
		950=>array('title'=>'Вагоно(машино)-день', 'number'=>255, 'short_title'=>'ваг (маш).дн'),
		951=>array('title'=>'Тысяча вагоно-(машино)-часов', 'number'=>255, 'short_title'=>'10^3 ваг (маш).ч'),
		952=>array('title'=>'Тысяча вагоно-(машино)-километров', 'number'=>255, 'short_title'=>'10^3 ваг (маш).км'),
		953=>array('title'=>'Тысяча место-километров', 'number'=>255, 'short_title'=>'10^3 мест.км'),
		954=>array('title'=>'Вагоно-сутки', 'number'=>255, 'short_title'=>'ваг.сут'),
		955=>array('title'=>'Тысяча поездо-часов', 'number'=>255, 'short_title'=>'10^3 поезд.ч'),
		956=>array('title'=>'Тысяча поездо-километров', 'number'=>255, 'short_title'=>'10^3 поезд.км'),
		957=>array('title'=>'Тысяча тонно-миль', 'number'=>255, 'short_title'=>'10^3 т.миль'),
		958=>array('title'=>'Тысяча пассажиро-миль', 'number'=>255, 'short_title'=>'10^3 пасс.миль'),
		959=>array('title'=>'Автомобиле-день', 'number'=>255, 'short_title'=>'автомоб.дн'),
		960=>array('title'=>'Тысяча автомобиле-тонно-дней', 'number'=>255, 'short_title'=>'10^3 автомоб.т.дн'),
		961=>array('title'=>'Тысяча автомобиле-часов', 'number'=>255, 'short_title'=>'10^3 автомоб.ч'),
		962=>array('title'=>'Тысяча автомобиле-место-дней', 'number'=>255, 'short_title'=>'10^3 автомоб.мест. дн'),
		963=>array('title'=>'Приведенный час', 'number'=>255, 'short_title'=>'привед.ч'),
		964=>array('title'=>'Самолето-километр', 'number'=>255, 'short_title'=>'самолет.км'),
		965=>array('title'=>'Тысяча километров', 'number'=>255, 'short_title'=>'10^3 км'),
		966=>array('title'=>'Тысяча тоннаже-рейсов', 'number'=>255, 'short_title'=>'10^3 тоннаж. рейс'),
		967=>array('title'=>'Миллион тонно-миль', 'number'=>255, 'short_title'=>'10^6 т. миль'),
		968=>array('title'=>'Миллион пассажиро-миль', 'number'=>255, 'short_title'=>'10^6 пасс. миль'),
		969=>array('title'=>'Миллион тоннаже-миль', 'number'=>255, 'short_title'=>'10^6 тоннаж. миль'),
		970=>array('title'=>'Миллион пассажиро-место-миль', 'number'=>255, 'short_title'=>'10^6 пасс. мест. миль'),
		971=>array('title'=>'Кормо-день', 'number'=>255, 'short_title'=>'корм. дн'),
		972=>array('title'=>'Центнер кормовых единиц', 'number'=>255, 'short_title'=>'ц корм ед'),
		973=>array('title'=>'Тысяча автомобиле-километров', 'number'=>255, 'short_title'=>'10^3 автомоб. км'),
		974=>array('title'=>'Тысяча тоннаже-сут', 'number'=>255, 'short_title'=>'10^3 тоннаж. сут'),
		975=>array('title'=>'Суго-сутки', 'number'=>255, 'short_title'=>'суго. сут.'),
		976=>array('title'=>'Штук в 20-футовом эквиваленте (ДФЭ)', 'number'=>255, 'short_title'=>'штук в 20-футовом эквиваленте'),
		977=>array('title'=>'Канало-километр', 'number'=>255, 'short_title'=>'канал. км'),
		978=>array('title'=>'Канало-концы', 'number'=>255, 'short_title'=>'канал. конц'),
		979=>array('title'=>'Тысяча экземпляров', 'number'=>255, 'short_title'=>'10^3 экз'),
		980=>array('title'=>'Тысяча долларов', 'number'=>255, 'short_title'=>'10^3 доллар'),
		981=>array('title'=>'Тысяча тонн кормовых единиц', 'number'=>255, 'short_title'=>'10^3 корм ед'),
		982=>array('title'=>'Миллион тонн кормовых единиц', 'number'=>255, 'short_title'=>'10^6 корм ед'),
		983=>array('title'=>'Судо-сутки', 'number'=>255, 'short_title'=>'суд.сут'),
		109=>array('title'=>'Ар (100 м2)', 'number'=>255, 'short_title'=>'а'),
		2553=>array('title'=>'Гигабайт', 'number'=>82, 'short_title'=>'Гбайт'),
		2554=>array('title'=>'Терабайт', 'number'=>83, 'short_title'=>'Тбайт'),
		0=>array('title'=>'Иные единицы измерения', 'number'=>255, 'short_title'=>''),
	);

	public function __construct($db, $f3) {
		parent::__construct($db, 'products' ); // подключаемся к таблице товаров
		$this->db=$db;
		$this->f3=$f3;
	}

	// Информация об открываемой странице
	function page_data($page='sales') {
		$pages=array(
			'search_form'=>array(
				'title'=>'Поиск товара',
				'inc'=>'products_search_form.htm'
			),
			'search'=>array(
				'title'=>'Результаты поиска',
				'inc'=>'products_search.htm'
			),
			'fast_products'=>array(
				'title'=>'Быстрые товары',
				'inc'=>'products_search.htm'
			),
			'pricetags'=>array(
				'title'=>'Печать ценников',
				'inc'=>'products_pricetags.htm'
			),
			'img'=>array(
				'title'=>'Изображение товара',
				'inc'=>'products_img.htm'
			),
			'currentstock'=>array(
				'title'=>'Остатки на складе',
				'inc'=>'products_currentstock.htm'
			),
			'list'=>array(
				'title'=>'Категории и товары',
				'inc'=>'products_list.htm'
			),
			'not_found'=>array(
				'title'=>'Товар не найден',
				'inc'=>'products_not_found.htm'
			),
			'add'=>array(
				'title'=>'Добавить новую номенклатуру',
				'inc'=>'products_form.htm'
			),
			'change'=>array(
				'title'=>'Редактировать номенклатуру',
				'inc'=>'products_form.htm'
			),
			'directory'=>array(
				'title'=>'Справочник номенклатуры',
				'inc'=>'products_directory.htm'
			),
			'detail'=>array(
				'title'=>'Информация о товаре',
				'inc'=>'products_detail.htm'
			),
			'stoplist'=>array(
				'title'=>'Стоп-лист',
				'inc'=>'products_stoplist.htm'
			),
			'addstop'=>array(
				'title'=>'Добавить в стоп-лист',
				'inc'=>'products_addstop.htm'
			),
			'deletestop'=>array(
				'title'=>'Удалить из стоп-листа',
				'inc'=>'products_deletestop.htm'
			),
			'clearstop'=>array(
				'title'=>'Удалить все из стоп-листа',
				'inc'=>'products_clearstop.htm'
			),
			'searchstop'=>array(
				'title'=>'Поиск товаров для добавления в стоп-лист',
				'inc'=>'products_searchstop.htm'
			),
			'compound'=>array(
				'title'=>'Состав и КБЖУ',
				'inc'=>'products_compound.htm'
			)
		);
		$pages[$page]['page']=$page;
		return $pages[$page];
	}

	function barcodes($product_id) {
		return $this->db->exec("SELECT * FROM barcodes WHERE product_id=?", $product_id);
	}

	// Выбор из базы
	function select_product($query=null, $options=null, $kiosk_ignore=0) {
		if(!$query) {
			$query=array('p.id>?', 0); // чтобы хоть что-то вставить в фильтры
		}

		// формируем сортировку и лимиты
		$option='';
		if($options['order']) {
			$option.=' ORDER BY '.$options['order'];
		}
		if($options['limit'] && !$options['offset']) {
			$option.=' LIMIT '.$options['limit'];
		}
		if($options['limit'] && $options['offset']) {
			$option.=' LIMIT '.$options['offset'].', '.$options['limit'];
		}
		if($this->f3->get('authorization_user.kiosk')==1 && !$kiosk_ignore) {
			if($query[0]!='') $query[0].=' AND ';
			$query[0].=' (c.kiosk_noshow=0 OR p.category_id=0)';
		}
		// собственно сам запрос
		$sql="SELECT p.*, c.title AS `category_title` FROM `products` AS `p` LEFT JOIN `productcategories` AS `c` ON c.id=p.category_id WHERE p.date_delete=0 AND ".$query[0].' '.$option;
		$res=$this->db->exec($sql, $query[1]);
		$products=array();
		if($res) {
			foreach($res as $r) {
				$r['barcodes']=$this->db->exec("SELECT barcode FROM barcodes WHERE product_id=?", $r['id']);
				$r['images']=json_decode($r['img'], true);
				$r['unit_short_title']=$this->units[$r['units']]?$this->units[$r['units']]['short_title']:'';
				$r['units_fr']=isset($this->units[$r['units']])?$this->units[$r['units']]['number']:255;
				if($r['cocktail']!='') {
					$r['components']=json_decode($r['cocktail'], true);
					foreach($r['components'] as $cn=>$c) {
						$this->reset();
						$this->load(array("id=?", $c['product_id']), array('limit'=>1));
						$r['components'][$cn]['title']=$this->short_title;
					}
				}
				$r['other']=json_decode($r['other_data'], true);
				if(!is_array($r['other'])) $r['other']=array();
				$products[]=$r;
			}
		}
		return $products;
	}

	// Составление релевантного запроса
	function relevant($search0) {
		$search0=str_replace("'","\'",$search0);
		$search0=trim(htmlspecialchars($search0));
		$search=str_replace("'",'',$search0);
		$search=str_replace('"','',$search);
		// Разобрать искомую строку $search на отдельные слова
		preg_match_all('/[[:alnum:]]{1,}/isu', stripslashes($search), $matches);
		$words = array_unique($matches[0]);
 
		$true_words=Array();
		if (count($words)) {
    		foreach($words as $word) {
        		// Обрабатывать только слова длиннее 1 символов
        		if (strlen($word)>1) {
            		// От слов длиннее 7 символов отрезать 2 последних буквы
            		if (strlen($word)>7) {
                		$word=substr($word,0,(strlen($word)-2));
            		}
            		// От слов длиннее 5 символов отрезать последнюю букву
            		elseif (strlen($word)>5) {
                		$word=substr($word,0,(strlen($word)-1));
            		}
            		$true_words[]=addcslashes(addslashes($word),'%_');
        		}
    		}    
		}
		// Список уникальных поисковых слов
		$true_words=array_unique($true_words);
		if(count($true_words)==0) {
			return array("query"=>"", "where"=>"", "order"=>"title");
		}
		$coeff_title=round((20/count($true_words)),2);
 
		// Формируем запрос к базе
		// Условия для полного совпадения фразы в заголовке и тексте
		$query = ", (CASE WHEN p.title LIKE '%".$search."%' THEN 60 ELSE 0 END ";
		// Условия для каждого из слов
		foreach($true_words as $word) {
    		$query .= "+ CASE WHEN p.title LIKE '%".$word."%' THEN ".number_format($coeff_title, 2, '.', '')." ELSE 0 END ";
		}
		$query.=") AS relevant ";
 
		// Условие выборки - вхождение фразы или отдельных слов в заголовок или текст
		$where= " OR (";
		$where .= " p.title LIKE '%".$search0."%'";
		// Условия для каждого из слов
		foreach($true_words as $word) {
    		$where .= " OR p.title LIKE '%".$word."%'";
		}
		$where.=") ";
		return array("query"=>$query, "where"=>$where, "order"=>"relevant DESC");
	}

	// Быстрые товары
	function fast_products($start, $limit) {
		$count=0;
		$products=array();
		$limit_txt='';
		if($start>0 && $limit>0) {
			$limit_txt='LIMIT '.$start.', '.$limit;
		}
		elseif($limit>0) {
			$limit_txt='LIMIT '.$limit;
		}
		$sql="SELECT p.*, c.title AS category_title FROM products AS p LEFT JOIN productcategories AS c ON c.id=p.category_id WHERE p.fast>0 AND p.date_delete=0 AND p.id>0 ORDER BY title ".$limit_txt;
		$products=$this->db->exec($sql);
		$count=count($products);
		if($count>0) {
			foreach ($products as $i => $p) {
				$products[$i]['img']=json_decode($p['img'], true);
			}
		}
		if($limit_txt) {
			$sql="SELECT COUNT(*) AS count FROM products WHERE date_delete=0 AND id>0 AND fast>0";
			$res=$this->db->exec($sql);
			$count=$res[0]['count'];
		}
		return array(
			'success'=>true,
			'count'=>$count,
			'products'=>$products
		);
	}

	// поиск товара
	function search($term, $start=0, $limit=30, $barcodes_only=false, $exact_match=false, $in_stock=false, $order=false, $spill_beer=false, $stop=false) {
		$term=mb_strtoupper($term);
		$limit_txt='';
		if($start>0 && $limit>0) {
			$limit_txt='LIMIT '.$start.', '.$limit;
		}
		elseif($limit>0) {
			$limit_txt='LIMIT '.$limit;
		}
		if($in_stock) {
			$stock_sql=' AND p.stock>0 ';
		}
		else {
			$stock_sql='';
		}

		if($spill_beer) {
			$spill_beer=' JOIN egais_formb AS f ON f.product_id=p.id ';
		}
		else {
			$spill_beer='';
		}

		$kiosk_where='';
		if($this->f3->get('authorization_user.kiosk')==1) {
			$kiosk_where=' AND ((c.kiosk_noshow=0 AND c.show=1) OR p.category_id=0)';
		}
		$weight_code=false;

		if($term) {
			// Пытаемся найти штрих-код
			$bsql="SELECT p.*, c.title AS category_title FROM barcodes AS b JOIN products AS p ON p.id=b.product_id AND p.date_delete=0 AND p.id>0 ".$stock_sql.$spill_beer." LEFT JOIN productcategories AS c ON c.id=p.category_id ".$kiosk_where." WHERE b.barcode=?";
			$or='';
			$val=array($term);
			if(mb_strlen($term)==14) {
				$or=' OR b.barcode=? GROUP BY p.id';
				$val[]=mb_substr($term, 1);
			}
			$products=$this->db->exec($bsql.$or, $val);
			if(!$products && (int)mb_substr($term, 0, 1)==2 && mb_strlen($term)>=7) {
				$weight_code=mb_substr($term, 0, 7);
				$products=$this->db->exec($bsql, $weight_code);
			}
			if(mb_strlen($term)==7) {
				$weight_code=$term;
			}
			$count=count($products);
		}
		if(empty($products) && !$barcodes_only) { // если не находим то ищем по названию и коду
			if(!$exact_match) {
				$w=$this->relevant($term);
			}
			else {
				$term=str_replace("'","\'",$term);
				$term=trim(htmlspecialchars($term));
				$w=array(
					'query'=>'',
					'where'=>"OR p.title like '%".$term."%'",
					'order'=>'title'
				);
			}
			if($order) {
				$w['order']=$order;
			}

			$where='';
			if($term!='') {
				$where=' AND (p.code=? '.$w['where'].') ';
			}
			else {
				$where=' AND p.title!=? ';
			}

			if($stop) {
				$where.=' AND p.stop=1';
			}

			$sql="SELECT p.*, IFNULL(p.stock, 0) AS stock, c.title AS category_title ".$w['query']." FROM products AS p ".$spill_beer." LEFT JOIN productcategories AS c ON c.id=p.category_id WHERE (p.date_delete=0 AND p.id>0 ".$stock_sql." ".$where.") ".$kiosk_where." ORDER BY ".$w['order'].' '.$limit_txt;
			$products=$this->db->exec($sql, $term);
			$count=count($products);
			if($limit_txt) {
				$sql="SELECT COUNT(*) AS count ".$w['query']." FROM products AS p ".$spill_beer." WHERE (p.date_delete=0 AND p.id>0 ".$stock_sql." ".$where.")";
				$res=$this->db->exec($sql, $term);
				$count=$res[0]['count'];
			}
		}
		if($count>0) {
			$success=true;
			foreach ($products as $i => $p) {
				$products[$i]['img']=json_decode($p['img'], true);
				$products[$i]['unit_short_title']=isset($this->units[$p['units']])?$this->units[$p['units']]['short_title']:'';
			}
		}
		else {
			$success=false;
		}
		return array(
			'success'=>$success,
			'count'=>$count,
			'weight_barcode'=>$weight_code?true:false,
			'products'=>$products
		);
	}

	// Сохранение товаров
	function save_product($data, $action='add') {
		if(!isset($data['title'])) {
			return array(
				'success'=>false,
				'txt'=>'not_enough_data'
			);
		}
		if(!isset($data['category_id']) || !$data['category_id']) $data['category_id']=0;

		if($data['barcode']) {
			$barcode=$this->db->exec("SELECT b.product_id FROM barcodes AS b JOIN products AS p ON p.id=b.product_id AND p.date_delete=0 AND p.id>0 WHERE b.barcode=? LIMIT 1", $data['barcode']);
			if($barcode && $barcode[0]['product_id']!=$data['id']) {
				return array(
					'success'=>false,
					'txt'=>'barcode_is_exists'
				);
			}
		}


		if(!$data['id'] && $action=='add') {
			$data['id']=$this->db->exec("SELECT MAX(id) AS max_id FROM products")[0]['max_id']+1;
			$data['date_delete']=0;
			$data['date_update']=microtime(true);
		}
		if(!$data['date_delete'])$data['date_delete']=0;

		$this->reset();
		if($action=='change' && $data['id']) {
			$this->load(array('id=?', $data['id']));
			if(!isset($data['price']) || !is_numeric($data['price'])) $data['price']=$this->price;
		}

		$data['title']=mb_strtoupper($data['title']);
		$data['price']=(float)$data['price'];
		$data['max_discount']=(float)$data['max_discount'];

		$this->copyFrom($data);
		if($this->save()===false) {
			return array(
				'success'=>false,
				'txt'=>'db_error'
			);
		}
		$this->reset();
		if($data['barcode']) {
			$barcode=$this->db->exec("SELECT barcode FROM barcodes WHERE product_id=? LIMIT 1", $data['id']);
			if($barcode) {
				$this->db->exec("UPDATE barcodes SET barcode=? WHERE product_id=?", array($data['barcode'], $data['id']));
			}
			else {
				$this->db->exec("INSERT INTO barcodes (product_id, barcode) VALUES (?, ?)", array($data['id'], $data['barcode']));
			}
		}
		return array(
			'success'=>true,
			'txt'=>'save_successful',
			'reload'=>array('.products'),
			'close_all_window'=>true,
			'id'=>$data['id']
		);
	}

	// Информация о товаре для клиента
	function barcode($barcode) {
		if($barcode=='test') {
			return array(
				'success'=>true,
				'txt'=>"ok\n"
			);
		}
		if(!$barcode) {
			return array(
				'success'=>false,
				'txt'=>'not_enough_data',
			);
		}

		$product=$this->search($barcode, 0, 1, $barcodes_only=true)['products'][0];
		if(!$product) {
			return array(
				'success'=>false,
				'txt'=>'not_found',
			);
		}

		$price=$product['price']+($product['price']*($product['vat']/100))*max(0, $product['vat_type']);
		$price=round($price, 2);
		if($product['img']) {
			$img=array_shift($product['img']);
		}
		else {
			$img='';
		}
		return array(
			'success'=>true,
			'txt'=>$product['title']."\n"."На складе: ".numberformat($product['stock'], 3, '.', '')."\n"."Цена: ".number_format($price, 2, '.', '')."\n",
			'price'=>$price,
			'stock'=>$product['stock'],
			'img'=>$img
		);
	}

	// Ищем товар на маркете
	function market_search($barcode) {
		$web=\Web::instance();
		$products=array();
		$options = array(
			'method' => 'GET',
    		'follow_location' => 1
		);
		$query=$this->f3->get('market_url').'/api/getproduct?barcode='.$barcode;
		$request=$web->request($query, $options);
		if(mb_strpos($request['headers'][0], '200')>0 || mb_strpos($request['headers'][1], '200')>0) {
			$products=json_decode($request['body'], true)[0];
		}
		return $products;
	}

	// Отдаем список модификаторов
	function modifiers($id) {
		$modifiers=array();
		$this->reset();
		$this->load(array('id=?', $id), array('limit'=>1));
		$related=json_decode($this->related, true);
		if(!$related) {
			return $modifiers;
		}
		$category=new \Models\Productcategories($this->db, $this->f3);
		$ids='';
		$category_ids='';
		foreach ($related as $r) {
			if($r['type']=='product') {
				if($ids!='') $ids.=', ';
				$ids.=$r['id'];
			}
			elseif($r['type']=='category') {
				if($category_ids!='') $category_ids.=', ';
				$category_ids.=$r['id'];
				$subcats=$category->categories_list($r['id']);
				if($subcats) {
					$category_ids.=', ';
					$category_ids.=implode(', ', array_column($subcats, 'id'));
				}
			}
		}
		$where='';
		if($ids!='') {
			$where='p.id IN ('.$ids.')';
		}
		if($category_ids!='') {
			if($where!='') $where.=' OR ';
			$where.='p.category_id IN ('.$category_ids.')';
		}
		if($where=='') {
			return $modifiers;
		}
		$modifiers=$this->select_product(array('p.date_delete=0 AND p.id>0 AND ('.$where.')'), null, 1);
		return $modifiers;
	}

	function delete($id) {
		$this->reset();
		if(!$id) {
			return array(
				'success'=>false,
				'txt'=>'not_enough_data'
			);
		}
		$this->load(array('id=?', $id), array('limit'=>1));
		if($this->dry()) {
			return array(
				'success'=>false,
				'txt'=>'not_found'
			);
		}
		$products=$this->db->exec("SELECT COUNT(l.id) AS count FROM receiptlines AS l JOIN receipts AS r ON r.id=l.receipt_id AND r.time=0 WHERE l.product_id=?", array($id));
		if($products[0]['count']>0) {
			return array(
				'success'=>false,
				'txt'=>'products_can_not_delete'
			);
		}
		$this->date_delete=microtime(true);
		if($this->update()===false) {
			return array(
				'success'=>false,
				'txt'=>'db_error'
			);
		}
		return array(
			'success'=>true,
			'txt'=>'save_successful',
			'reload'=>array('.products'),
		);
	}

	function clearstop() {
		$res=$this->db->exec("UPDATE products SET stop=0 WHERE stop=1");
		if($res!==false) {
			return array(
				'success'=>true,
				'txt'=>'save_successful',
				'reload'=>array('.products'),
			);
		}
		return array(
			'success'=>false,
			'txt'=>'db_error'
		);
	}

	function add_lineset($json) {
		$rl=new \Models\Receiptlines($this->db, $this->f3);
		$receipt_id=$this->f3->get('COOKIE.receipt_id');
		$ids=array_column($json, 'id');
		$products=$this->select_product(array('p.id IN ('.implode(', ', $ids).')'));
		if($products) {
			$products=array_combine(array_column($products, 'id'), $products);
		}
		foreach ($json as $n=>$line) {
			if(!$line['title']) {
				$line['title']=$products[$line['id']]['title'];
			}
			if(!$line['vat']) {
				$line['vat']=$products[$line['id']]['vat'];
			}
			if(!$line['vat_type']) {
				$line['vat_type']=$products[$line['id']]['vat_type'];
			}
			if(!$line['units_fr']) {
				$line['units_fr']=$products[$line['id']]['units_fr'];
			}
			if(isset($line['description']) && $line['description']!='') $line['loyalty']=2;
			if(!isset($line['count'])) {
				$line['count']=$products[$line['id']]['quantity'];
				$json[$n]['count']=$products[$line['id']]['quantity'];
			}
			$res=$rl->add_line($receipt_id, $line, $line['count']);
			if(!$res['success']) {
				$res['txt']=$this->messages->message($res['txt'])['txt'];
				break;
			}
		}
		if($res['success'] && count($json)==1 && !$json[0]['count']) {
			$res['next_step']='/receipts/change_count?line_id='.$res['id'];
		}
		return $res;
	}

	function get_capacity($id) {
		$res=$this->db->exec("SELECT beer_capacity FROM egais_formb WHERE product_id=? AND beer_capacity>0 LIMIT 1", $id);
		if($res) return $res[0]['beer_capacity'];
		else return 0;
	}

	function barcode_validate($code) {
		$len=mb_strlen($code);
		if($len==8) return true;
		if($len!=13) return false;
		$this0=true;
		$n=$len-1;
		$sum[0]=0;
		$sum[1]=0;
		for($i=0; $i<$n; $i++) {
			$sum[$i%2]+=$code[$i];
			if($this0==true) {
				if($code[$i]!='0') $this0=false;
			}
		}
		if($this0==true) return false;
		$sum[1]*=3;
		$summ=$sum[0]+$sum[1];
		$control=10-($summ-floor($summ/10)*10);
		if($control==10) $control=0;
		if(mb_substr($code, -1, 1)==$control) return true;
		return false;
	}
}
