Создайте обработчик на событие OnBeforeBasketAdd интернет-магазина. В нем проверяйте наличие в корзине других бесплатных товаров среди тех, у кого отсутствует номер заказа.
[QUOTE]Юрий Селивёрстов пишет: А если кнопка сохранить не нажимается?[/QUOTE]Это значит, что не выбрано какое-то обязательное поле. Они отмечены знаком * перед названием.
Либо реализуйте свою логику выбора оптимальной цены с помощью обработчика [url=https://dev.1c-bitrix.ru/community/blogs/vws/novye-sobytiya-kataloga.php]OnGetOptimalPrice[/url]