как проверить есть ли какое-либо значение в структуре 1с. Нужно понять пустая она или содержит какие-то значения.
---
Добрый день!

Помимо оценки наличия в структуре значений, через функцию Структура.Количество(), необходимо еще сделать оценку этих значений:
   ЗначениеЗаполнено(Структура.Свойство(Ключ, НайденноеЗначение), где Ключ (обязательный )- ключ для поиска свойства, НайденноеЗначение (необязательное) - параметр, в который возвращается найденное значение.Если ключа нет в структуре, возвращается Неопределено
---
Полагаю вопрос не про структуру структуры, а про данные в ней? Если знаешь что за структура, то просто Каждое значение проверяй отдельно. В общем случае напиши рекурсивную функцию с проверкой на заполнение значений. Нужно определить, что такое пустая структура, например если в массиве есть, например, 1 элемент, но он пустой, считается ли это заполненным значением? Тут получается очень много нюансов. Давай лучше целиком задачу.
---
Похвально, что Вы хотите помочь, но если собрались всё разжевать и положить в рот, то уж надо было начать так:

```1c
    Если ТипЗнч(Структ) = Тип("Структура") Тогда
```

На мой взгляд, Инфостарт сейчас стал неким соревнованием для фрилансеров, которые демонстрируют друг другу, как они умеют кодить. От этого страдает только знание задающих вопросы, которые совершенно отвыкают думать самостоятельно и написать код, примерно, как у Вас, самостоятельно, на основе рекомендаций.
Если хочешь помочь человеку, не дари ему рыбу. Подари ему сеть и научи ловить рыбу.
---
В общем случае, если ничего не напутал так:

```1c
    &НаСервере
    Функция СтруктураПустая(Структ)
    Для Каждого Стр Из Структ Цикл
    Если ТипЗнч(Стр) = Тип("Структура") Тогда
    Если НЕ СтруктураПустая(Стр) Тогда
    Возврат Ложь;
    КонецЕсли;
    Иначе
    Если ЗначениеЗаполнено(Стр.Значение) Тогда
    Возврат Ложь;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    Возврат Истина;
    КонецФункции
```

Ф-ция вернет Ложь если хотя бы одно значение в структуре заполнено.
---
В общем случае, если ничего не напутал так:

```1c
    &НаСервере
    Функция СтруктураПустая(Структ)
    Для Каждого Стр Из Структ Цикл
    Если ТипЗнч(Стр) = Тип("Структура") Тогда
    Если НЕ СтруктураПустая(Стр) Тогда
    Возврат Ложь;
    КонецЕсли;
    Иначе
    Если ЗначениеЗаполнено(Стр.Значение) Тогда
    Возврат Ложь;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    Возврат Истина;
    КонецФункции
```

Ф-ция вернет Ложь если хотя бы одно значение в структуре заполнено.
---
Похвально, что Вы хотите помочь, но если собрались всё разжевать и положить в рот, то уж надо было начать так:

```1c
    Если ТипЗнч(Структ) = Тип("Структура") Тогда
```

На мой взгляд, Инфостарт сейчас стал неким соревнованием для фрилансеров, которые демонстрируют друг другу, как они умеют кодить. От этого страдает только знание задающих вопросы, которые совершенно отвыкают думать самостоятельно и написать код, примерно, как у Вас, самостоятельно, на основе рекомендаций.
Если хочешь помочь человеку, не дари ему рыбу. Подари ему сеть и научи ловить рыбу.
---
Структура.Количество()
---
Полагаю вопрос не про структуру структуры, а про данные в ней? Если знаешь что за структура, то просто Каждое значение проверяй отдельно. В общем случае напиши рекурсивную функцию с проверкой на заполнение значений. Нужно определить, что такое пустая структура, например если в массиве есть, например, 1 элемент, но он пустой, считается ли это заполненным значением? Тут получается очень много нюансов. Давай лучше целиком задачу.
---
Если
Все верно.
В общем значения в структуру записываются лишь при изменении документа.

```1c
    Логи1Структура = Новый Структура;
    Логи1Структура.Вставить("Клиент", Ссылка.Клиент);
    Логи1Структура.Вставить("Мастер", Ссылка.Мастер);

    При создании документа данных нет (ссылка пустая).
    Но при изменении я делаю так
    Для Каждого ЭлементСтруктуры Из Логи1Структура Цикл
    Если ЭлементСтруктуры.Значение <> Ссылка[ЭлементСтруктуры.Ключ] Тогда
    СтрокаДо = СтрокаДо + ЭлементСтруктуры.ключ +": " + ЭлементСтруктуры.значение + " " + Символы.ПС;
    СтрокаПосле = СтрокаПосле + ЭлементСтруктуры.ключ +": " + Ссылка[ЭлементСтруктуры.Ключ] + " " +Символы.ПС;

    КонецЕсли;
    Конеццикла;
```
---
Добрый день!

Помимо оценки наличия в структуре значений, через функцию Структура.Количество(), необходимо еще сделать оценку этих значений:
   ЗначениеЗаполнено(Структура.Свойство(Ключ, НайденноеЗначение), где Ключ (обязательный )- ключ для поиска свойства, НайденноеЗначение (необязательное) - параметр, в который возвращается найденное значение.Если ключа нет в структуре, возвращается Неопределено
---
Сразу вопрос, а что если элемент структуры это другая структура, так просто через ЗначениеЗаполнено() не получится. Нужно и вторую структура так же проверять, кажется без рекурсии все таки не получится.
---
Судя по постановке вопроса ТС еще с таким не сталкивался ))) Поэтому, давайте решать задачи, по нарастанию сложности. Сначала решаем задачи 1-3 класс, потом 4-6 класс и т.д. Можно, конечно, сразу давать и решение дифференциальных уравнений 3-го порядка, но, думаю, что адекватность восприятия снизится.
---
м не сталкив
Точно
---
Наверное стоит проверить сам документ на наличие непустой ссылки и уже потом создавать структуру.
---
В общем решил вот так
 Если ЗначениеЗаполнено(Логи1Структура.Клиент)
А Поле клиент обязательное поле.