Search engines will only find the query string values that they are directed to. They may find these URLs through several mechanisms:
The main way is through links. Links like this one one of your pages will cause the bots to crawl the pages with the specified IDs:
<a href="/viewpage?id=1234-4655-7678;type=article">Article A</a>
<a href="/viewpage?id=1234-4655-7679;type=article">Article B</a>
If you publish an XML sitemap then search engine bots will crawl the URLs listed within:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>http://abc.com/viewpage?id=1234-4655-7678;type=article</loc></url>
<url><loc>http://abc.com/viewpage?id=1234-4655-7679;type=article</loc></url>
</urlset>
Some bots will submit forms on your site. So if you had a form like this, the pages might be discoverable:
<form method=GET action=viewpage>
<select name=id>
<option value=1234-4655-7678;type=article>Article A</option>
<option value=1234-4655-7679;type=article>Article B</option>
</select>
</form>
Using IDs in URLs is very common. It is not a huge problem for search engines as long as you can provide a mechanism for the URLs to be discovered.
You don't want to use IDs in your URLs that change frequently (such as user session IDs.)