Как вариант:
СписокКонтрагентов = СоздатьОбъект("СписокЗначений");
ДокументВводаОстатков = СоздатьОбъект("Документ.ВводОстатковПокупателя");
ДокументВводаОстатков.Выбрать(ДатаВводаОстатков,ДатаВводаОстатков);
ДокументВводаОстатков.Получить() Цикл
СписокКонтрагентов.ДобавитьЗначение() = ДокументВводаОстатков.Контрагент(); //Получаешь список контрагентов которые были во вводе остатков
ЗапросАктивные = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(ЗапросАктивные)
|Период с ДатаВводаОстатков+1 по ДатаКонца; // Получаешь всех контрагентов которые совершали действия после ввода остатков
|Контрагент = Регистр.Покупатели.Договор.Владелец;
|СуммаРуб = Регистр.Покупатели.СуммаРуб;
|Функция СуммаРубПриход = Приход(СуммаРуб);
|Условие(Контрагент в СписокКонтрагентов);
|Группировка Контрагент без групп;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если ЗапросАктивные.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока ЗапросАктивные.Группировка(1) = 1 Цикл
ПозицияВСписке = СписокКонтрагентов.НайтиЗначение(ЗапросАктивные.Контрагент);
Если ПозицияВСписке <> 0 Тогда
СписокКонтрагентов.УдалитьЗначение(ПозицияВСписке); //Удаляешь из списка активных после ввода остатков
КонецЕсли;
КонецЦикла;
Показать
//Остававшийся список будет содержать контрагентов которые есть во вводе остатков, но по ним не было никаких движений после.