Как проверить есть ли лишние значения в тч?

1. arsen_botashev 18.04.19 12:53 Сейчас в теме
Как проверить есть ли лишние значения в тч помимо тех. которые нужны?
Допустим есть в тч строки и в них написано документ, документ1, документ2, и тд ., то условие не выполняется, а если там еще какой-то например Справчоник, то условие выполняется?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. SedovSU@mail.ru 297 18.04.19 12:56 Сейчас в теме
Ну так вы обойдите табличную часть и сравните, на самом простом уровне даже. если тип значения - какой то справочник значит нужно условие выполнить
3. SedovSU@mail.ru 297 18.04.19 13:00 Сейчас в теме
То есть можно так сделать например

Для Каждого СтрокаТаблицы Из Таблица Цикл
Если Метаданные.Справочники.Содержит(СтрокаТаблицы.КакакоеТоПолеГдеИДокументыИСправочники.Метаданные()) Тогда
// это справочник
ИНаче
// это не справочник
Конецесли
Конеццикла
4. arsen_botashev 18.04.19 14:11 Сейчас в теме
(3)Кажется я не правильно поставил вопрос.


у меня есть колонка в тч: Вид передачи. тип СправчоникСсылка
Так вот, если Вид передачи в этой тч = паспорт, или визитка, или бумага(это примеры) то тогда надо скрывать элемент с формы.
Но, если помимо паспорта или визитки или бумаги, есть допустим Ваза, то надо показать элемент на форме.

то есть там может быть паспорт, тогда скрываем элемент, может быть паспорт и визитка, тогда тоже скрываем,
а может быть паспорт и Ваза допустим, тогда элемент показываем
примерно так
5. SedovSU@mail.ru 297 18.04.19 14:26 Сейчас в теме
(4) ну тогда совсем проще. То есть у вас есть какие значение справочника при которых какой то элемент должен показываться, а при каких то нет. Так вот можно так написать

Массив = Новый Массив;
Массив.Добавить(Справочник.ВидПередачи.НайтиПоКоду("КакойТоКод")); // то есть в массив добавляем те элементы при которых нужно точно отразить видимость элемента
Массив.Добавить(Справочник.ВидПередачи.НайтиПоКоду("КакойТоКод"));

НужноПоказатьЭлемент = Ложь;
Для Каждого ЭлементМассива Из Массив Цикл
Если Таблица.Найти(ЭлементМассива, "ВидПередачи") <> Неопрделено Тогда
НужноПоказатьЭлемент = Истина;
Прервать;
Конеццикла

Элемент.ИмяЭлемента.Видимость = НужноПоказатьЭлемент
Показать
6. arsen_botashev 18.04.19 15:57 Сейчас в теме
(5)Сделал так, почему - то не работает, ошибок никаких нет
	Массив = Новый Массив;   // те виды передачи для которых есть страховка
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Буклет"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Втулки"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Выставочный экспонат"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Каталог"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Листовки"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Материалы"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Образец продукции"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Печать"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Подарки"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Претензия"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Радиокомпоненты"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Рекламные материалы"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("счетчик"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("УСПД"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Экспозиция"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Электронные компоненты"));
	Массив.Добавить(Справочники.ВидыПередачиДляКурьерскойСлужбы.НайтиПоНаименованию("Электротехнич. продукция"));
	Элементы.ГруппаСтрахованиеОтправителя.Доступность = Ложь;
	Для Каждого ЭлементМассива Из Массив Цикл
		Отбор = новый Структура();
		Отбор.Вставить("ВидПередачи",ЭлементМассива); 
		Если Объект.СоставВложимого.НайтиСтроки(Отбор) <> Неопределено Тогда
			Элементы.ГруппаСтрахованиеОтправителя.Доступность = Истина;
			Прервать;
		КонецЕсли;		
	Конеццикла 
Показать
7. uk09 18.04.19 23:11 Сейчас в теме
(6)
Добрый день!

Сделал так, почему - то не работает, ошибок никаких нет

Никаких ошибок, а что на форме выходит ? Можете скриншот приложить? И в отладчике, посмотрели, что содержит отбор, когда цикл заканчивается ?
8. ben19791010 19.04.19 04:23 Сейчас в теме
(6)
почему - то не работает, ошибок никаких нет
форму обновляете? записываете?
11. arsen_botashev 19.04.19 09:07 Сейчас в теме
(8)Обновляю только отображение элементов
9. SedovSU@mail.ru 297 19.04.19 06:22 Сейчас в теме
(6) Вот тут нужно написать по другому

Вместо
Если Объект.СоставВложимого.НайтиСтроки(Отбор) <> Неопределено Тогда


Нужно (у вас в результате же массив вернется, он либо пустой либо заполненный, не может быть НЕопределено

Если Объект.СоставВложимого.НайтиСтроки(Отбор).Количество() <> 0 Тогда
10. arsen_botashev 19.04.19 09:07 Сейчас в теме
(9)Да, я так и сделал через количество, но проблема в том что он проверяет все элементы в массиве, и каждый раз возвращает массив(найтистроки). получается если в массиве в моем 10 элементов, он(Если Объект.СоставВложимого.НайтиСтроки(Отбор)) возвращает 10 массивов , с этим ничего не поделать да?
И еще он проверяет пустое значение и почему-то возвращает массив.количество 1)))
Вообще вся эта конструкция привязана к тч в событие при изменении.
12. arsen_botashev 19.04.19 09:19 Сейчас в теме
(9)Все разобрался, всем спасибо!
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)