Внесение денежных средств в ККМ прямо из РМК

12.10.18

Задачи пользователя - Адаптация типовых решений

В типовом механизме внесения ДС в кассу ККМ требуется наличие расходного кассового ордера, но основании которого будет создан документ "Внесение денежных средств в кассу ККМ". Если его нет (и соответственно остатков по РН "ДенежныеСредстваКПоступлениюНаличные"), то выводится сообщение "Нет документов по внесению ДС" (в противном случае открывается список РКО, на основании которых требуется создать внесение ДС). Данная доработка позволяет автоматически создать РКО (с видом операции "Выдача денежных средств в кассу ККМ") вместо выдачи сообщения об отказе и звонку бухгалтеру/администратору.

Идём в главную форму РМК: Обработки.РМКУправляемыйРежим.Формы.Форма и исправляем обработчик внесения ДС:

&НаКлиенте
Процедура ВыполнитьПО02ВвестиВнесениеДенег()
	
	Если НЕ ВозможностьВнесенияДенег() Тогда
		
		//++	
		//ОбщегоНазначенияРТКлиент.ВывестиИнформациюДляРМКУправляемой(НСтр("ru = 'Нет документов по внесению денежных средств'"));
	    _ВопросОСозданииРасходногоКассовогоОрдера();		
		//--
		
		ВывестиИнформациюНаДисплейПокупателя("НачалоРаботы");
		Возврат;
	КонецЕсли;
    
    // &ЗамерПроизводительности
    Замер = ОценкаПроизводительностиРТКлиент.НачатьЗамер(Ложь, "Обработка.РМКУправляемыйРежим.Форма.Форма.Команда.ВвестиВнесениеДенег");
	
	ВывестиИнформациюНаДисплейПокупателя("Сервис");
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("КассыККМ"   , МассивКассККМКлиент);
	ПараметрыФормы.Вставить("Организации", МассивОрганизацийКлиент);
	
	ОбработчикОповещения = Новый ОписаниеОповещения("ОповещениеОткрытьФормуВыбораВнесенияДенег", ЭтотОбъект);
	Режим = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс;
	ОткрытьФорму("Обработка.РМКУправляемыйРежим.Форма.ФормаВыбораВнесенияДенег", ПараметрыФормы, УникальныйИдентификатор,,,, ОбработчикОповещения, Режим);
	
	ВывестиИнформациюНаДисплейПокупателя("НачалоРаботы");
    
    ОценкаПроизводительностиРТКлиент.ЗакончитьЗамер(Замер);	
    
КонецПроцедуры

т.е. сперва зададим вопрос о создании РКО только если нет документов по внесению ДС (если документы есть, то оставляем все как есть).

При положительном ответе откроем стандартную форму ввода чисел для суммы внесения, далее создадим РКО с этой суммой и продолжим типовой механизм внесения ДС с передачей данных в ККМ.

#Область _Доработки

//++
// Создадим РКО -> появятся остатки в РН "ДенежныеСредстваКПоступлениюНаличные" -> внесем ДС типовым механизмом
&НаКлиенте
Процедура _ВопросОСозданииРасходногоКассовогоОрдера()
	
	Оповещение = Новый ОписаниеОповещения("_ВопросОСозданииРасходногоКассовогоОрдераЗавершение", ЭтотОбъект); 
	ТекстСообщения = "Создать расходный кассовый ордер с видом операции 'Внесение ДС в кассу ККМ'?";
	ОбщегоНазначенияРТКлиент.ВывестиВопросДляРМКУправляемой(НСтр("ru = 'Нет документов по внесению денежных средств'"), ТекстСообщения, , Оповещение);		
	
КонецПроцедуры

&НаКлиенте
Процедура _ВопросОСозданииРасходногоКассовогоОрдераЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено 
		И ВРЕГ(Результат) = "ДА" Тогда
		Оповещение = Новый ОписаниеОповещения("_ВводСуммыВнесенияЗавершение", ЭтотОбъект);
		ПолучитьИнтерактивноЧисло(НСтр("ru = 'Введите сумму внесения.'"), 0, 0, Ложь, Ложь, Оповещение);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура _ВводСуммыВнесенияЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено Тогда
		
		РезультатВыполнения = _СоздатьРасходныйКассовыйОрдерНаСервере(Результат.ВведенноеЧисло);
		ЗаголовокИнформации = ""; 
		ТекстСообщения = СтрШаблон(НСтр("ru = '%1 создан.'"), РезультатВыполнения.ПредставлениеДокумента);
		Если Не РезультатВыполнения.Проведен Тогда
			ЗаголовокИнформации =  НСтр("ru = 'Ошибка проведения документа.'");
			ТекстСообщения = РезультатВыполнения.ТекстСообщения;
		КонецЕсли;
		Оповещение = Новый ОписаниеОповещения("_ВвестиВнесениеДенег", ЭтотОбъект);
		ОбщегоНазначенияРТКлиент.ВывестиИнформациюДляРМКУправляемой(ЗаголовокИнформации, ТекстСообщения, Оповещение)	
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура _ВвестиВнесениеДенег(Результат, ДополнительныеПараметры) Экспорт
	
	// Воспользуемся типовым механизмом, т.к. в остатках уже имеется созданный РКО
	ВыполнитьПО02ВвестиВнесениеДенег();		
	
КонецПроцедуры

&НаСервере
Функция _СоздатьРасходныйКассовыйОрдерНаСервере(СуммаДокумента)
	
	ТекущаяКасса = ТаблицаКассККМОрганизаций[0].КассаККМ;
	Реквизиты = Справочники.КассыККМ.РеквизитыКассыККМ(ТекущаяКасса);
	
	ДокументРКО = Документы.РасходныйКассовыйОрдер.СоздатьДокумент();
	ДокументРКО.Дата                  = ТекущаяДатаСеанса();
	ДокументРКО.СуммаДокумента        = СуммаДокумента;
	ДокументРКО.Организация           = Реквизиты.Организация;
	ДокументРКО.Ответственный         = Пользователи.ТекущийПользователь();
	ДокументРКО.Комментарий           = "Создан автоматически из РМК";
	ДокументРКО.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствВКассуККМ;
	ДокументРКО.КассаККМ              = ТекущаяКасса;
	ДокументРКО.Касса				  = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(Реквизиты.Организация, , , ПараметрыСеанса.ТекущийМагазин, Пользователи.ТекущийПользователь());;
	
	Результат = Новый Структура("ПредставлениеДокумента, Проведен, ТекстСообщения", "", Ложь, "");
	Попытка
		ДокументРКО.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);
		Результат.Проведен = Истина;
	Исключение
		ДокументРКО.Записать();
		Результат.ТекстСообщения = ОписаниеОшибки();
	КонецПопытки;
	
	Результат.ПредставлениеДокумента = ОбщегоНазначенияРТ.ПолучитьПредставлениеДокумента(ДокументРКО, ДокументРКО.Номер, ДокументРКО.Дата);
	
	Возврат Результат;
	
КонецФункции //--

#КонецОбласти

Можно оформить расширением, но мне лень + наша конфигурация уже дописанная.

Вступайте в нашу телеграмм-группу Инфостарт

РМК ККМ

См. также

Адаптация типовых решений 1С:Предприятие 8 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

32330 руб.

29.06.2023    11651    35    15    

41

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

6000 руб.

07.02.2023    12548    116    20    

71

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    7352    2    2    

6

Адаптация типовых решений 1С 8.3 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Беларусь Россия Платные (руб)

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    1081    1    8    

2

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Решение позволяет автоматически заполнять отдельные реквизиты загружаемых банковских документов, основываясь на известных значениях реквизитов и тексте назначения платежа. Простая настройка, широкие возможности анализа назначения платежа без написания кода и сложных шаблонов.

9760 руб.

17.06.2025    3114    8    0    

8

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.

9150 руб.

02.08.2023    7882    25    5    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kondr1221 2 12.06.20 07:42 Сейчас в теме
2. kns77 110 10.06.21 23:53 Сейчас в теме
На новых версиях розницы в РМК часть процедур переделаны, теперь так
&НаКлиенте
&ИзменениеИКонтроль("ВыполнитьПО02ВвестиВнесениеДенег")
Процедура АС_ВыполнитьПО02ВвестиВнесениеДенег()
Если НЕ ВозможностьВнесенияДенег() Тогда
		
		//++	
		//ОбщегоНазначенияРТКлиент.ВывестиИнформациюДляРМКУправляемой(НСтр("ru = 'Нет документов по внесению денежных средств'"));
	    _ВопросОСозданииРасходногоКассовогоОрдера();		
		//--

		ВывестиИнформациюНаДисплейПокупателя("НачалоРаботы");
		Возврат;
	КонецЕсли;
    
    // &ЗамерПроизводительности
    Замер = ОценкаПроизводительностиРТКлиент.НачатьЗамер(Ложь, "Обработка.РМКУправляемыйРежим.Форма.Форма.Команда.ВвестиВнесениеДенег");
	
	ВывестиИнформациюНаДисплейПокупателя("Сервис");
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("КассыККМ"   , МассивКассККМКлиент);
	ПараметрыФормы.Вставить("Организации", МассивОрганизацийКлиент);
	
	ОбработчикОповещения = Новый ОписаниеОповещения("ОповещениеОткрытьФормуВыбораВнесенияДенег", ЭтотОбъект);
	Режим = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс;
	ОткрытьФорму("Обработка.РМКУправляемыйРежим.Форма.ФормаВыбораВнесенияДенег", ПараметрыФормы, УникальныйИдентификатор,,,, ОбработчикОповещения, Режим);
	
	ВывестиИнформациюНаДисплейПокупателя("НачалоРаботы");
    
    ОценкаПроизводительностиРТКлиент.ЗакончитьЗамер(Замер);	

КонецПроцедуры


#Область _Доработки

//++
// Создадим РКО -> появятся остатки в РН "ДенежныеСредстваКПоступлениюНаличные" -> внесем ДС типовым механизмом
&НаКлиенте
Процедура _ВопросОСозданииРасходногоКассовогоОрдера()
	
	Оповещение = Новый ОписаниеОповещения("_ВопросОСозданииРасходногоКассовогоОрдераЗавершение", ЭтотОбъект); 
	ТекстСообщения = "Создать расходный кассовый ордер с видом операции 'Внесение ДС в кассу ККМ'?";
	ОбщегоНазначенияРТКлиент.ВывестиВопросДляРМКУправляемой(НСтр("ru = 'Нет документов по внесению денежных средств'"), ТекстСообщения, , Оповещение);		
	
КонецПроцедуры

&НаКлиенте
Процедура _ВопросОСозданииРасходногоКассовогоОрдераЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено 
		И ВРЕГ(Результат) = "ДА" Тогда
		Оповещение = Новый ОписаниеОповещения("_ВводСуммыВнесенияЗавершение", ЭтотОбъект);
		ПолучитьИнтерактивноЧисло(НСтр("ru = 'Введите сумму внесения.'"), Оповещение);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура _ВводСуммыВнесенияЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат <> Неопределено Тогда
		
		РезультатВыполнения = _СоздатьРасходныйКассовыйОрдерНаСервере(Результат.ВведенноеЧисло);
		ЗаголовокИнформации = ""; 
		ТекстСообщения = СтрШаблон(НСтр("ru = '%1 создан.'"), РезультатВыполнения.ПредставлениеДокумента);
		Если Не РезультатВыполнения.Проведен Тогда
			ЗаголовокИнформации =  НСтр("ru = 'Ошибка проведения документа.'");
			ТекстСообщения = РезультатВыполнения.ТекстСообщения;
		КонецЕсли;
		Оповещение = Новый ОписаниеОповещения("_ВвестиВнесениеДенег", ЭтотОбъект);
		ОбщегоНазначенияРТКлиент.ВывестиИнформациюДляРМКУправляемой(ЗаголовокИнформации, ТекстСообщения, Оповещение)	
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура _ВвестиВнесениеДенег(Результат, ДополнительныеПараметры) Экспорт
	
	// Воспользуемся типовым механизмом, т.к. в остатках уже имеется созданный РКО
	ВыполнитьПО02ВвестиВнесениеДенег();		
	
КонецПроцедуры

&НаСервере
Функция _СоздатьРасходныйКассовыйОрдерНаСервере(СуммаДокумента)
	
	ТекущаяКасса = ТаблицаКассККМОрганизаций[0].КассаККМ;
	Реквизиты = Справочники.КассыККМ.РеквизитыКассыККМ(ТекущаяКасса);
	
	ДокументРКО = Документы.РасходныйКассовыйОрдер.СоздатьДокумент();
	ДокументРКО.Дата                  = ТекущаяДатаСеанса();
	ДокументРКО.СуммаДокумента        = СуммаДокумента;
	ДокументРКО.Организация           = Реквизиты.Организация;
	ДокументРКО.Ответственный         = Пользователи.ТекущийПользователь();
	ДокументРКО.Комментарий           = "Создан автоматически из РМК";
	ДокументРКО.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВыдачаДенежныхСредствВКассуККМ;
	ДокументРКО.КассаККМ              = ТекущаяКасса;
	ДокументРКО.Касса				  = ЗначениеНастроекПовтИсп.КассаОрганизацииПоУмолчанию(Реквизиты.Организация,,,ПараметрыСеанса.ТекущийМагазин,Пользователи.ТекущийПользователь());
	
	Результат = Новый Структура("ПредставлениеДокумента, Проведен, ТекстСообщения", "", Ложь, "");
	Попытка
		ДокументРКО.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);
		Результат.Проведен = Истина;
	Исключение
		ДокументРКО.Записать();
		Результат.ТекстСообщения = ОписаниеОшибки();
	КонецПопытки;
	
	Результат.ПредставлениеДокумента = ОбщегоНазначенияРТ.ПредставлениеДокумента(ДокументРКО, ДокументРКО.Номер, ДокументРКО.Дата);
	
	Возврат Результат;
	
КонецФункции //--



Показать
4. IlyaReznikov 25.03.22 11:12 Сейчас в теме
(2)
&НаКлиенте


добрый день, сделал в расширении, но не запускается вопрос о введении суммы. Сразу говорит что нет РКО и нечего вносить. Розница 2.3.10.61. 1С 8.3.20.1674.
Прошу подсказать
3. misha_shinkarev 27.07.21 13:28 Сейчас в теме
данная обработка работает в управление торговлей :?
5. IlyaReznikov 25.03.22 16:15 Сейчас в теме
Автору спасибо. В итоге сделал по старинке &Вместо т.к. &ИзменениеИКонтроль наотрез отказалось работать
6. user1652670 31.07.22 11:00 Сейчас в теме
Здравствуйте ! Сделайте пожалуйста Расширением !!!! ( готов платить )
7. fatman78 21 20.02.23 11:50 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация