Идём в главную форму РМК: Обработки.РМКУправляемыйРежим.Формы.Форма и исправляем обработчик внесения ДС:
&НаКлиенте
Процедура ВыполнитьПО02ВвестиВнесениеДенег()
Если НЕ ВозможностьВнесенияДенег() Тогда
//++
//ОбщегоНазначенияРТКлиент.ВывестиИнформациюДляРМКУправляемой(НСтр("ru = 'Нет документов по внесению денежных средств'"));
_ВопросОСозданииРасходногоКассовогоОрдера();
//--
ВывестиИнформациюНаДисплейПокупателя("НачалоРаботы");
Возврат;
КонецЕсли;
// &ЗамерПроизводительности
Замер = ОценкаПроизводительностиРТКлиент.НачатьЗамер(Ложь, "Обработка.РМКУправляемыйРежим.Форма.Форма.Команда.ВвестиВнесениеДенег");
ВывестиИнформациюНаДисплейПокупателя("Сервис");
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КассыККМ" , МассивКассККМКлиент);
ПараметрыФормы.Вставить("Организации", МассивОрганизацийКлиент);
ОбработчикОповещения = Новый ОписаниеОповещения("ОповещениеОткрытьФормуВыбораВнесенияДенег", ЭтотОбъект);
Режим = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс;
ОткрытьФорму("Обработка.РМКУправляемыйРежим.Форма.ФормаВыбораВнесенияДенег", ПараметрыФормы, УникальныйИдентификатор,,,, ОбработчикОповещения, Режим);
ВывестиИнформациюНаДисплейПокупателя("НачалоРаботы");
ОценкаПроизводительностиРТКлиент.ЗакончитьЗамер(Замер);
КонецПроцедуры
т.е. сперва зададим вопрос о создании РКО только если нет документов по внесению ДС (если документы есть, то оставляем все как есть).
При положительном ответе откроем стандартную форму ввода чисел для суммы внесения, далее создадим РКО с этой суммой и продолжим типовой механизм внесения ДС с передачей данных в ККМ.
#Область _Доработки
//++
// Создадим РКО -> появятся остатки в РН "ДенежныеСредстваКПоступлениюНаличные" -> внесем ДС типовым механизмом
&НаКлиенте
Процедура _ВопросОСозданииРасходногоКассовогоОрдера()
Оповещение = Новый ОписаниеОповещения("_ВопросОСозданииРасходногоКассовогоОрдераЗавершение", ЭтотОбъект);
ТекстСообщения = "Создать расходный кассовый ордер с видом операции 'Внесение ДС в кассу ККМ'?";
ОбщегоНазначенияРТКлиент.ВывестиВопросДляРМКУправляемой(НСтр("ru = 'Нет документов по внесению денежных средств'"), ТекстСообщения, , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура _ВопросОСозданииРасходногоКассовогоОрдераЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено
И ВРЕГ(Результат) = "ДА" Тогда
Оповещение = Новый ОписаниеОповещения("_ВводСуммыВнесенияЗавершение", ЭтотОбъект);
ПолучитьИнтерактивноЧисло(НСтр("ru = 'Введите сумму внесения.'"), 0, 0, Ложь, Ложь, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура _ВводСуммыВнесенияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
РезультатВыполнения = _СоздатьРасходныйКассовыйОрдерНаСервере(Результат.ВведенноеЧисло);
ЗаголовокИнформации = "";
ТекстСообщения = СтрШаблон(НСтр("ru = '%1 создан.'"), РезультатВыполнения.ПредставлениеДокумента);
Если Не РезультатВыполнения.Проведен Тогда
ЗаголовокИнформации = НСтр("ru = 'Ошибка проведения документа.'");
ТекстСообщения = РезультатВыполнения.ТекстСообщения;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("_ВвестиВнесениеДенег", ЭтотОбъект);
ОбщегоНазначенияРТКлиент.ВывестиИнформациюДляРМКУправляемой(ЗаголовокИнформации, ТекстСообщения, Оповещение)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура _ВвестиВнесениеДенег(Результат, ДополнительныеПараметры) Экспорт
// Воспользуемся типовым механизмом, т.к. в остатках уже имеется созданный РКО
ВыполнитьПО02ВвестиВнесениеДенег();
КонецПроцедуры
&НаСервере
Функция _СоздатьРасходныйКассовыйОрдерНаСервере(СуммаДокумента)
ТекущаяКасса = ТаблицаКассККМОрганизаций[0].КассаККМ;
Реквизиты = Справочники.КассыККМ.РеквизитыКассыККМ(ТекущаяКасса);
ДокументРКО = Документы.РасходныйКассовыйОрдер.СоздатьДокумент();
ДокументРКО.Дата = ТекущаяДатаСеанса();
ДокументРКО.СуммаДокумента = СуммаДокумента;
ДокументРКО.Организация = Реквизиты.Организация;
ДокументРКО.Ответственный = Пользователи.ТекущийПользователь();
ДокументРКО.Комментарий = "Создан автоматически из РМК";
ДокументРКО.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствВКассуККМ;
ДокументРКО.КассаККМ = ТекущаяКасса;
ДокументРКО.Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(Реквизиты.Организация, , , ПараметрыСеанса.ТекущийМагазин, Пользователи.ТекущийПользователь());;
Результат = Новый Структура("ПредставлениеДокумента, Проведен, ТекстСообщения", "", Ложь, "");
Попытка
ДокументРКО.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);
Результат.Проведен = Истина;
Исключение
ДокументРКО.Записать();
Результат.ТекстСообщения = ОписаниеОшибки();
КонецПопытки;
Результат.ПредставлениеДокумента = ОбщегоНазначенияРТ.ПолучитьПредставлениеДокумента(ДокументРКО, ДокументРКО.Номер, ДокументРКО.Дата);
Возврат Результат;
КонецФункции //--
#КонецОбласти
Можно оформить расширением, но мне лень + наша конфигурация уже дописанная.