ИмяФайлаОстатков = "OstIs.DBF";
    ПолноеИмяФайлаОстатков= КаталогВременныхФайлов();
    ПолноеИмяФайла = СокрЛП(ПолноеИмяФайлаОстатков+ИмяФайлаОстатков);
    XBase = Новый XBase; //создаем новый объект
    XBase.Кодировка = КодировкаXBase.OEM;
    XBase.Поля.Добавить("KONTR","S",80,);
    XBase.Поля.Добавить("NOMENKL","S",100,);
    XBase.Поля.Добавить("REMAINS","S",60,);
    XBase.Поля.Добавить("DATE","D",25);
    XBase.СоздатьФайл(ПолноеИмяФайла);
    XBase.ЗакрытьФайл();
    обФТП = Обработки.ftp.Создать();
    обФТП.Конструктор(Константы.FTPКодыПоставщиковАдрес.Получить(),Константы.FTPКодыПоставщиковПорт.Получить(),Константы.FTPКодыПоставщиковЛогин.Получить(),Константы.FTPКодыПоставщиковПароль.Получить());
    обФТП.Прочитать("OstNa.DBF",ПолноеИмяФайла );
    обФТП.Деструктор();

    XBase.ОткрытьФайл(ПолноеИмяФайла,,Истина);
    XBase.Первая();

    МассивDBF = Новый Массив;
    Пока НЕ XBase.ВКонце() Цикл
    НомСсылкаXBase = Справочники.Номенклатура.НайтиПоНаименованию(XBase.NOMENKL, Истина);

//Вот тут загвоздка как сравнить НомСсылкаXbase с значением "элемент.Номенклатура" табличной части "Состав" (как вообще обходить все эти типы или сравнивать) просто при сравнивании лезет ошибка не является объектным типом.

    Если НЕ НомСсылкаXBase = "тут сравнение " Тогда
       XBase.Следующая();
        Продолжить;
        Иначе
    СтрокаТабличнойЧастиСостав.Остаток = XBase.Remains;
    КонецЕсли;
     XBase.Следующая();
    КонецЦикла;
---
Не совсем понятно, откуда вообще в вопросе взялась табличная часть "Состав".
У вас есть некая таблица "Состав", вы хотите загрузить из dbf информацию по номенклатуре, найти номенклатуру в таблице и подставить в поле "остаток" значение из файла?
Если да, то у вас в коде нет обхода табличной части.
Вы загрузили строку из файла, нашли номенклатуру (хорошо бы проверить, что действительно нашли). Теперь нужно обойти таблицу, сравнивая НомСсылкаXBase = СтрокаТабличнойЧастиСостав.Номенклатура. Если истина, тогда изменяем Остаток.
Другой вариант через "НайтиСтроки":

```1c
    ПоискСтрок = Состав.НайтиСтроки(Новый Структура("Номенклатура", НомСсылкаXBase));
    Для каждого Стр из ПоискСтрок Цикл
    Стр.Остаток = XBase.Remains;
    КонецЦикла;
```
---
Не совсем понятно, откуда вообще в вопросе взялась табличная часть "Состав".
У вас есть некая таблица "Состав", вы хотите загрузить из dbf информацию по номенклатуре, найти номенклатуру в таблице и подставить в поле "остаток" значение из файла?
Если да, то у вас в коде нет обхода табличной части.
Вы загрузили строку из файла, нашли номенклатуру (хорошо бы проверить, что действительно нашли). Теперь нужно обойти таблицу, сравнивая НомСсылкаXBase = СтрокаТабличнойЧастиСостав.Номенклатура. Если истина, тогда изменяем Остаток.
Другой вариант через "НайтиСтроки":

```1c
    ПоискСтрок = Состав.НайтиСтроки(Новый Структура("Номенклатура", НомСсылкаXBase));
    Для каждого Стр из ПоискСтрок Цикл
    Стр.Остаток = XBase.Remains;
    КонецЦикла;
```
---
Да, извиняюсь конечно, у меня выше табличная часть описывается. Точно как я про булево забыл...
---
Напишите ваше сообщение
(2) ПоискСтрок = Состав.НайтиСтроки(Новый Структура("Номенклатура", НомСсылкаXBase));
Для каждого Стр из ПоискСтрок Цикл
   Стр.Остаток = XBase.Remains;
КонецЦикла; я пробовал аналогичным способом, пишет что не является объектным типом
---
Надо смотреть полностью код. а еще лучше в отладчике. на какую строчку, на какую переменную. Так не скажу.