Имя: Пароль:
1C
 
Добавление колонки к ТаблицеЗначений.
0 AlekseyJr
 
03.06.24
09:34
Имеется код, в результате которого мы проверяем каждого сотрудника из ТЗРез и добавляем его Состояние из ТЗ2. Проблема в том, что если Состояние сотрудника в ТЗ2 может быть пустым и нужно туда поместить строку "Не найден", а как это сделать в цикле не могу понять. Помогите пожалуйста.
    
		// Создал новую результирующую ТЗ
		ТЗРез = Новый ТаблицаЗначений;
		ТЗРез = ТЗ1.Скопировать();

		// цикл по ТЗРез		
		Для Каждого Строка Из ТЗРез Цикл
			НайденнаяСтрока = ТЗ2.Найти(Строка.Сотрудник, "Сотрудник"); 
			Если НайденнаяСтрока <> Неопределено Тогда   
				Строка.Состояние = НайденнаяСтрока.Состояние;
						//Если Состояние пустое
			Иначе Строка.Состояние = "Не найден";
			КонецЕсли;
			
		КонецЦикла;
1 Fedor-1971
 
03.06.24
09:35
(0) И что не получается? ошибку какую-то выдаёт?
Так-то код проверяет наличие строки в Т32, а не то что лежит в колонке Состояние
2 DrZombi
 
гуру
03.06.24
09:36
(0) Вы все правильно делаете, не красиво, но... Так в чем у вас проблема?

У вас вопрос - "Как вам присвоить строку в колонку, которая содержит один тип?"...

от нас ответ: - "Установить у колонки составной тип" :)

...Всегда пожалуйста :)
3 Fedor-1971
 
03.06.24
09:37
1+ //Если Состояние пустое
Например так:
Если СокрЛП(Строка.Состояние) = "" тогда
  Строка.Состояние = "Пусто в Т32";
КонецЕсли;
4 Fedor-1971
 
03.06.24
09:45
(2) У него может быть Т31 получена запросом с Состояние "", тогда в ТЗРез будет тип Строка(1) и все его присвоения получат только первую букву
5 Fedor-1971
 
03.06.24
09:43
3+ И это, проверяй на "= Неопределено" так правильнее будет
т.к. процессор будет выполнять одно действие "=", а не 2 "=" + Отрицание
6 DrZombi
 
гуру
03.06.24
09:45
(4) Может, я не намерен гадать. Просто взял вероятностный момент его ошибок, и выдал ответ.

Не внимая строчке "//Если Состояние пустое", т.к. ТС сам может воспользоваться отладчиком... "Пускай учится ловить рыбу самостоятельно" :)
7 AlekseyJr
 
03.06.24
09:46
(5) Всё понял, огромное спасибо)))
8 Волшебник
 
03.06.24
09:49
(5) Смешно думать о тактах процессора при программировании на 1С. Там такая глубина стека, что процессор будет просто отдыхать всеми своими ядрами, пока Вы экономите его такты на всякой ерунде типа той, что Вы только что назвали.
9 Fedor-1971
 
03.06.24
09:54
(8) За стек да, но таки потом удивляемся "Тормоза не по децки в 1С".
Пусть сразу малость учитывает, что капелька времени там и сям выливается в минуту ожидания
10 Волшебник
 
03.06.24
11:07
(9) Вам надо обязательно прочитать статью
Преждевременная оптимизация
11 Fedor-1971
 
03.06.24
10:10
(10) в 5 не преждевременная оптимизация, а простое правило "Проверяй на равенство если обрабатываешь оба исхода" и читать проще и процессору легче.