Осваиваю работу с 1С стоит задача создать проверку на провод документа, чтобы программа проверяла наличие идентичной записи в регистре сведений по товару за сегодняшнюю дату. Но столкнулся с проблемой. Дело в том, что нужные мне реквизиты находятся в табличной части которая относится к документу "Приход_Товара". И если с реквизитом "Фирма_Поставщик" проблем не возникает, то как достать "Название" и "Количество" Относящиеся к табличной части ума не приложу.

Собственно сам псевдокод:

```1c
    Функция ТоварУжеПоступил(Наименование,Фирма,Период) // Значение свойств выставляется при испозовании ф-ции
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Перемещения_Товаров.Период КАК Период
    |ИЗ
    | РегистрСведений.Перемещения_Товаров КАК Перемещения_Товаров
    |ГДЕ
    | Перемещения_Товаров.Фирма = &Фирма
    | И Перемещения_Товаров.Наименование = &Наименование
    | И Перемешения_Товаров.Период = &Период
    | И Перемещения_Товаров.Состояние = ЗНАЧЕНИЕ(Перечисление.Состояние.Поступление)";

    Запрос.УстановитьПараметр("Наименование",Наименование); //значение параметров берется из свойств
    Запрос.УстановитьПараметр("Фирма",Фирма);
    Запрос.УстановитьПараметр("Период",Период);

    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();

    Если Выборка.Следующий() Тогда

    Возврат Истина;
    КонецЕсли;

    Возврат Ложь;
    КонецФункции

    Процедура ОбработкаПроведения(Отказ, Режим)

    Если ТоварУжеПоступил(, Фирма_Поставщик, ТекСтрокаПеречень_товаров.Количество) Тогда //Как выставить нужные параметры из документа Приход_Товара?

    Сообщить("Документ не проведен! Данный товар уже был проведен сегодня другим документом");
    Отказ = Истина;
    Возврат;

    КонецЕсли;

    Движения.Перемещения_Товаров.Записывать = Истина;
    Для Каждого ТекСтрокаПеречень_товаров Из Перечень_товаров Цикл
    Движение = Движения.Перемещения_Товаров.Добавить();
    Движение.Период = Дата;
    Движение.Наименование = ТекСтрокаПеречень_товаров.Название;
    Движение.Количество = ТекСтрокаПеречень_товаров.Количество;
    Движение.Фирма = Фирма_Поставщик;
    Движение.Состояние = Перечисления.Состояние.Поступление;
    КонецЦикла;

    КонецПроцедуры
```
---
Обсуждение закрыто я разобрался, что пытался бить всех пистолетом и стрелять из дубины. Мне нужны были немного другие переменные и сделать выгрузку запроса сравнивая по ней с циклом для каждого.

```1c
    Функция ТоварУжеПоступил(Наименование,Фирма,Период)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Перемещения_Товаров.Период КАК Период,
    | Перемещения_Товаров.Фирма КАК Фирма,
    | Перемещения_Товаров.Наименование КАК Наименование
    |ИЗ
    | РегистрСведений.Перемещения_Товаров КАК Перемещения_Товаров
    |ГДЕ
    | Перемещения_Товаров.Фирма = &Фирма
    | И Перемещения_Товаров.Наименование = &Наименование
    | И Перемещения_Товаров.Состояние = ЗНАЧЕНИЕ(Перечисление.Состояние.Поступление)";

    Запрос.УстановитьПараметр("Наименование",Наименование);
    Запрос.УстановитьПараметр("Фирма",Фирма);

    Результат = Запрос.Выполнить();
    Выгрузка = Результат.Выгрузить();

    Для Каждого Строка из Выгрузка цикл
    Если Строка.Наименование = Наименование и Строка.Период = Период Тогда
    Возврат Истина;
    КонецЕсли;
    КонецЦикла;

    Возврат Ложь;
    КонецФункции

    Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.Перемещения_Товаров.Записывать = Истина;
    Движения.Перемещения_Товаров.Очистить();
    Для Каждого Строка из Перечень_Товаров Цикл
    Если ТоварУжеПоступил(Строка.Название,Фирма_Поставщик,Дата) Тогда

    Сообщить("Документ не проведен! Товар "+Строка.Название+" в количестве "+Строка.Количество+" шт. Уже был проведен другим документом");
    Отказ = Истина;
    Возврат;

    КонецЕсли;

    Движение = Движения.Перемещения_Товаров.Добавить();
    Движение.Период = Дата;
    Движение.Наименование = Строка.Название;
    Движение.Количество = Строка.Количество;
    Движение.Фирма = Фирма_Поставщик;
    Движение.Состояние = Перечисления.Состояние.Поступление;
    КонецЦикла;
    КонецПроцедуры
```

 А задача стояла, в предотвращении провода одного и того же товара за 1 день, код делает проверку по наименованию фирме и дате, количество мне было не нужно.
---
Какой вопрос вообще?

(1) находятся в табличной части которая относится к документу "Приход_Товара"

```1c
    Для каждого строкаТабЧасти из Приход_Товара.НазваниеТабличнойЧасти
    Цикл
    КонецЦикла
```

но похожий кусок кода у вас уже есть
---
как достать "Название" и "Количество" Относящиеся к табличной частиИ как это относится к теме "Как ввести в переменную"? То есть заголовок про запись в переменную, а в сообщении вы уже пишете про чтение из каких-то других источников. Вы ЧТЕНИЕ и ЗАПИСЬ не различаете?
В переменную всё всегда "вводится" одинаково - присвоением.
---
Типо в зопросе:

```1c
    ВЫБРАТЬ * ПОМЕСТИТЬ ВТТЧ ИЗ &ТабЧасть;
    ВЫБРАТЬ * ИЗ Регистр.Тратата КАК Т1
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТЧ КАК Т2
    ПО Т1.Номенклатура = Т2.Номенклатура И Т1.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ) И КОНЕЦПЕРИОДА(&Дата, ДЕНЬ)
```

Ну и если типо есть что в результате, то истина... Ну и в запрос можно табчасть передать в качестве параметра и дату...
---
Обсуждение закрыто я разобрался, что пытался бить всех пистолетом и стрелять из дубины. Мне нужны были немного другие переменные и сделать выгрузку запроса сравнивая по ней с циклом для каждого.

```1c
    Функция ТоварУжеПоступил(Наименование,Фирма,Период)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Перемещения_Товаров.Период КАК Период,
    | Перемещения_Товаров.Фирма КАК Фирма,
    | Перемещения_Товаров.Наименование КАК Наименование
    |ИЗ
    | РегистрСведений.Перемещения_Товаров КАК Перемещения_Товаров
    |ГДЕ
    | Перемещения_Товаров.Фирма = &Фирма
    | И Перемещения_Товаров.Наименование = &Наименование
    | И Перемещения_Товаров.Состояние = ЗНАЧЕНИЕ(Перечисление.Состояние.Поступление)";

    Запрос.УстановитьПараметр("Наименование",Наименование);
    Запрос.УстановитьПараметр("Фирма",Фирма);

    Результат = Запрос.Выполнить();
    Выгрузка = Результат.Выгрузить();

    Для Каждого Строка из Выгрузка цикл
    Если Строка.Наименование = Наименование и Строка.Период = Период Тогда
    Возврат Истина;
    КонецЕсли;
    КонецЦикла;

    Возврат Ложь;
    КонецФункции

    Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.Перемещения_Товаров.Записывать = Истина;
    Движения.Перемещения_Товаров.Очистить();
    Для Каждого Строка из Перечень_Товаров Цикл
    Если ТоварУжеПоступил(Строка.Название,Фирма_Поставщик,Дата) Тогда

    Сообщить("Документ не проведен! Товар "+Строка.Название+" в количестве "+Строка.Количество+" шт. Уже был проведен другим документом");
    Отказ = Истина;
    Возврат;

    КонецЕсли;

    Движение = Движения.Перемещения_Товаров.Добавить();
    Движение.Период = Дата;
    Движение.Наименование = Строка.Название;
    Движение.Количество = Строка.Количество;
    Движение.Фирма = Фирма_Поставщик;
    Движение.Состояние = Перечисления.Состояние.Поступление;
    КонецЦикла;
    КонецПроцедуры
```

 А задача стояла, в предотвращении провода одного и того же товара за 1 день, код делает проверку по наименованию фирме и дате, количество мне было не нужно.