Определение длины строки в запросе 1С

Как извесно боль запросов 1С, в невозможности «штатно» определить длину строки в запросе. Вот один из обходных «велосипедов»:

&НаСервере
Процедура ПроанализироватьНаСервере(имя)	
		
	
	ТекстДерево = Дерево("ацукацукацук.Поле_1_1", -1, 300); 
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|    " + ТекстДерево + " КАК Длина
		|ИЗ
		|	РегистрСведений.ацукацукацук КАК ацукацукацук
		|УПОРЯДОЧИТЬ ПО
    	|    Длина УБЫВ";
		
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		сообщить(ВыборкаДетальныеЗаписи.Длина);
	КонецЦикла;	


КонецПроцедуры

&НаСервере
Функция Дерево(Реквизит, Начало, Конец) Экспорт
    Если Начало + 1 = Конец Тогда
        Возврат Строка(Конец);
    КонецЕсли;
    Середина = Начало + Цел((Конец - Начало) / 2);
    СтрокаДерево = "ВЫБОР КОГДА ПОДСТРОКА(" + Реквизит + ", " + (Середина + 1) + ", 3) = """" ТОГДА " 
        + Дерево(Реквизит, Начало, Середина) + " ИНАЧЕ " + Дерево(Реквизит, Середина, Конец) + " КОНЕЦ";
    Возврат СтрокаДерево;
КонецФункции

1С: Выделение цветом ячеек в таблице значений на форме

Задача: раскрасить ячейки в ТЗ на форме в зависимости от условий.

Решение: будем использовать условное оформление, которое назначается перед выводом формы на экран. Например в процедуре «ПриСозданииНаСервере»

	ЭлементОформления = УсловноеОформление.Элементы.Добавить();	 
	Оформление  = УсловноеОформление.Элементы.Добавить();
 	Оформление.Использование = Истина;
	 Поле1 = Оформление.Поля.Элементы.Добавить();
	 Поле1.Поле = Новый ПолеКомпоновкиДанных("тчСумма");
	 Отбор = Оформление.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	 Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.тч.СуммаПениНачисленная");
	 Отбор.ПравоеЗначение = 0;
	 Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
	 Отбор.Использование = Истина;
	 Оформление.Оформление.УстановитьЗначениеПараметра("ЦветФона", WebЦвета.Аквамарин);

Сворачивание в трей Microsoft Outlook

Казалось бы удобная вещь. Сворачивание в трей по закрытию программы, чтобы она фоново висела и проверяла почту. Ан нет — нет такой возможности сделать через GUI.  Только через реестр. Для этого нужно в ветке Компьютер\HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Preferences добавить переменную MinToTray формата DWORD равную 1

После чего, после  перезагрузки ПК, Outlook будет сворачиваться в трей при закрытии.

1С: Удаление записи из регистра накопления по регистратору и измерению (отбор)

Задача: удалить записи из регистра накопления по регистратору +  условию.  Т.е. есть несколько записей с одним регистратором, но разными измерениями. Необходимо удалить только нужные. Казалось бы тривиальная задача..но.. «штатными » средставами это сделать не удалось.

Решение: 

  1. Сделаем отбор  по регистратору
  2. Переберем выборку,  отберем те записи, которые необходимо удалить
  3. Удалим их

Код примерно такой:

 НаборЗаписей = РегистрыНакопления.vscРасчетыСАбонентами.СоздатьНаборЗаписей();
		НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);		
        НаборЗаписей.Прочитать();
		УдаляемыеЗаписи = Новый Массив;
		Для Каждого Запись Из НаборЗаписей Цикл
			если Запись.ЛицевойСчет=объект.ЛицевойСчет тогда
				УдаляемыеЗаписи.Добавить(Запись);
			конецесли;				
		конеццикла;	
	 	Для Каждого УдаляемаяЗапись Из УдаляемыеЗаписи Цикл
     		НаборЗаписей.Удалить(УдаляемаяЗапись);
		КонецЦикла;	
		НаборЗаписей.Записать();

UPDATE:

А можно и еще проще и быстрее:

НаборЗаписей = РегистрыСведений.vscРасчетыСАбонентами.СоздатьНаборЗаписей(); 
НаборЗаписей.Отбор.Регистратор.Установить(Регистратор);
НаборЗаписей.Прочитать();

ТЗНабора=НаборЗаписей.Выгрузить();
ТЗНабора = ТЗНабора.Скопировать(Новый Структура("ЛицевойСчет", ЛицевойСчет));
НаборЗаписей.Загрузить(ТЗНабора);