1. ArBot 18.04.19 12:53 Сейчас в теме

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

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

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


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

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

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

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

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

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

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

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


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

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

Вакансии

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

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)

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

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