Сложение с null в запросе

Иногда удаётся найти подводные камни там, где совсем не ждешь от 1С. Оказывается в запросах 1С, сложение столбцов а+б даёт в сумме null, если одно из значений равно null. даже если чётко укажешь преобразовать значение в строку, например так:

строка(geo_coors_public_regions.name)+строка(geo_coors_public_areas.name)

Не прокатывает (с). Приходится городить код вида:

ВЫБОР
		КОГДА geo_coors_public_regions.name ЕСТЬ NULL
			ТОГДА ""
		ИНАЧЕ geo_coors_public_regions.name
	КОНЕЦ + "," + ВЫБОР
		КОГДА geo_coors_public_areas.name ЕСТЬ NULL
			ТОГДА ""
		ИНАЧЕ geo_coors_public_areas.name
	КОНЕЦ + "," + ВЫБОР
		КОГДА geo_coors_public_cities.name ЕСТЬ NULL
			ТОГДА ""
		ИНАЧЕ geo_coors_public_cities.name
	КОНЕЦ + "," + ВЫБОР
		КОГДА geo_coors_public_settlers.name ЕСТЬ NULL
			ТОГДА ""
		ИНАЧЕ geo_coors_public_settlers.name
	КОНЕЦ
ИЗ
...

1С: Получить название и код региона по почтовому индексу

Может пригодится кому, если у кого как у меня не получается воспользоваться стандартным функционалом БСП:

АдресныйКлассификаторСлужебный.ОпределитьРегионПоИндексу

Лично у меня например конфигурация ругается в 211 строчке, что «Регион.Сокращение» нет такого параметра:

Посему навелосипедил свой вариант:

&НаСервере
Функция ПолучитьРегионПоИндексу(индекс) экспорт	
		Регионы=Новый Массив();
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",01,"Республика Адыгея (Адыгея)","385"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",02,"Республика Башкортостан","450-453"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",03,"Республика Бурятия","670-671"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",04,"Республика Алтай","649"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",05,"Республика Дагестан","367-368"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",06,"Республика Ингушетия","386"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",07,"Кабардино-Балкарская Республика","360-367"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",08,"Республика Калмыкия","358-359"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",09,"Карачаево-Черкесская Республика","369"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",10,"Республика Карелия","185-186"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",11,"Республика Коми","167-169"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",12,"Республика Марий Эл","424-425"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",13,"Республика Мордовия","430-431"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",14,"Республика Саха (Якутия)","677-678"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",15,"Республика Северная Осетия - Алания","362-363"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",16,"Республика Татарстан (Татарстан)","420-423"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",17,"Республика Тыва","667-668"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",18,"Удмуртская Республика","426-427"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",19,"Республика Хакасия","655"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",20,"Чеченская Республика","364-366"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",21,"Чувашская республика - Чувашия","428-429"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",22,"Алтайский край","656-659"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",23,"Краснодарский край","350-354"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",24,"Красноярский край","660-663,647-648"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",25,"Приморский край","690-692"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",26,"Ставропольский край","355-357"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",27,"Хабаровский край","680-682"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",28,"Амурская область","675-676"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",29,"Архангельская область","163-165"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",30,"Астраханская область","414-416"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",31,"Белгородская область","308-309"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",32,"Брянская область","241-243"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",33,"Владимирская область","600-602"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",34,"Волгоградская область","400-404"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",35,"Вологодская область","160-162"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",36,"Воронежская область","394-397"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",37,"Ивановская область","153-155"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",38,"Иркутская область","664-668,669"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",39,"Калининградская область","236-238"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",40,"Калужская область","248-249"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",41,"Камчатский край","683-684,688"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",42,"Кемеровская область - Кузбасс","650-654"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",43,"Кировская область","610-613"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",44,"Костромская область","156-157"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",45,"Курганская область","640-641"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",46,"Курская область","305-307"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",47,"Ленинградская область","187-188"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",48,"Липецкая область","398-399"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",49,"Магаданская область","685-686"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",50,"Московская область","140-144"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",51,"Мурманская область","183-184"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",52,"Нижегородская область","603-607"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",53,"Новгородская область","173-175"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",54,"Новосибирская область","630-633"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",55,"Омская область","644-646"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",56,"Оренбургская область","460-462"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",57,"Орловская область","302-303"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",58,"Пензенская область","440-442"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",59,"Пермский край","614-619"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",60,"Псковская область","180-182"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",61,"Ростовская область","344-347"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",62,"Рязанская область","390-391"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",63,"Самарская область","443-446"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",64,"Саратовская область","410-413"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",65,"Сахалинская область","693-694"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",66,"Свердловская область","620-624"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",67,"Смоленская область","214-216"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",68,"Тамбовская область","392-393"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",69,"Тверская область","170-172"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",70,"Томская область","634-636"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",71,"Тульская область","300-301"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",72,"Тюменская область","625-627"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",73,"Ульяновская область","432-433"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",74,"Челябинская область","454-457"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",75,"Забайкальский край","672-674,687"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",76,"Ярославская область","150-152"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",77,"Город Москва","101-135"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",78,"Город Санкт-Петербург","190-199"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",79,"Еврейская автономная область","679"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",83,"Ненецкий автономный округ","166"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",86,"Ханты-Мансийский автономный округ - Югра","628"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",87,"Чукотский автономный округ","689"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",89,"Ямало-Ненецкий автономный округ","629"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",90,"Запорожская область",""));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",91,"Республика Крым","295-298"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",92,"Город Севастополь","299"));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",93,"Донецкая Народная Республика",""));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",94,"Луганская Народная Республика",""));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",95,"Херсонская область",""));
		Регионы.Добавить(Новый Структура("Код,Наименование,Диапазоны",99,"Город Байконур","468"));
		ПервыйТриЦифрыИндекса = Число(Лев(Индекс, 3));
		для каждого стр из Регионы цикл
			диапазон=СтрРазделить(стр.Диапазоны,"-");
			если диапазон.Количество()=1 тогда
				дначало=Число(диапазон[0]);
				дконец=Число(диапазон[0]);
			иначе
				дначало=Число(диапазон[0]);
				дконец=Число(диапазон[1]);								
			конецесли;	
			если ПервыйТриЦифрыИндекса>=дначало и  ПервыйТриЦифрыИндекса<=дконец тогда
				возврат стр;
			конецесли;	
		конеццикла;	
		возврат неопределено;
КонецФункции

Тупо, в лоб. Но ничего умнее быстро не придумал

Спам звонки от платформы uchi.ru

Вот не писал бы, если бы не припекло. Бесконечно звонят, предлагают всякие услуги купить. Причем звонят не роботы, а люди. Каждый раз прошу и вежливо и руганью удалить меня из своих БД и больше не звонить НИКОГДА. Не понимают..

Да, зарегистрирован на сайте. Но не сам, а принудительно в школе. И нигде своего согласия не давал на спам звонки. И возможности отозвать у них «согласие» на сайте нет. И учётку удалить тоже нет возможности.

спам звонки

CS-Cart: массовое удаление товара

Как ни странно, в CS-Cart нет явного функционала удаления всего товара. Разработчики предполагали, что администратор должен листать список в разделе «товары» и удалять по 50-100 товаров за раз (т.е. страницу максимум). Это долго и не наш путь..

Есть другой способ: в разделе «Категории», переместить все категории в «Корзину». Хотя в админке и есть кнопка «очистить корзину», по факту она оказалась не в состоянии удалить 15000+ товаров, а просто подвешивала весь сервер. Поэтому далее открываем консоль SSH, и из консоли выполняем:

/usr/bin/php  /var/www/www-root/data/www/каука.ru/g2.php -p --dispatch=categories.delete --category_id=код_категории

После чего ждем… По результату отработки скрипта весь товар с сайта будет удалён.

Если требуется удалить весь товар, НО! оставить все категории на месте, то можно пойти таким путём:

1) Выгрузить в файл id всех товаров:

      mysql -e  "use db; select product_id from cscart_products" | grep awk 'print {$1}' > list.log

      2) Скриптом удалить каждый товар:

      <?php
      $ls=file_get_contents("list.log");
      $products_a= explode("\n", $ls);
      foreach ($products_a as $id) {
          $rz=/usr/bin/php  /var/www/www-root/data/www/цувцув.ru/g2.php -p --dispatch=products.delete --product_id=$id;    
          var_dump($rz);
          echo "$id\n";
      }

      Chromedriver устаревших версий

      До версии 114 включительно, драйвера для тестирования можно было скачать по ссылке http://chromedriver.storage.googleapis.com/index.html Но с версии 115 и выше, гугл стал в открытом виде выкладывать chromedriver только для последних актуальных версий своего браузера. Тем не менее скачать вебдрайвер для «Устаревших» версий браузера остаётся возможным, но несколько надуманным способом.

      1. Открыть ссылку вида https://googlechromelabs.github.io/chrome-for-testing/127.0.6533.88.json, указав в URL необходимую версию
      2. В ответном json найти ссылку и скачать
      1 2 3