В конфигурации 1С:Розница при "Выемке денежных средств из кассы ККМ" создается одноименный документ. Эти деньги необходимо принять в кассу магазина (организации). Для этого нужно создать приходный кассовый ордер (принять оплату).
К сожалению, если по каким-то причинам на вкладке "Денежные средства к поступлению" - в журнале "Приходный кассовый ордер" скопилось много документов "Выемка ДС из кассы ККМ", то принимать оплату (ПКО) в ручную - может быть очень утомительно (что в принципе и случилось). В этом случае вам очень поможет обработка, с помощью которой можно автоматизировать процесс "Принять оплату". При этом "ПКО" будет проведён той же датой что и "Выемка ДС из кассы ККМ".
Создаём обработку, добавляем "ТаблицаФормы" в "Табличные части"
- Выбор - Булево
- Ссылка - ДокументСсылка.ВыемкаДенежныхСредствИзКассыККМ
- Дата - Дата
- Номер - Строка
- Организация - СправочникСсылка.Организации
- СправочникСсылка.Кассы
- СуммаКОплате - Число
- РаспоряжениеОплачено - Булево
- СуммаДокумента - Число
- ХозяйственнаяОперацияКПоступлению - ПеречислениеСсылка.ХозяйственныеОперации
- ДокументыВыемкаДенегСоответствующиеМагазинуКассы - Булево
Для формы создаём четыре команды:
Сама форма:
&НаСервере
Процедура ЗаполнитьНаСервере()
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДенежныеСредстваКПоступлениюНаличныеОбороты.Регистратор КАК Ссылка,
| ДенежныеСредстваКПоступлениюНаличныеОбороты.Регистратор.Дата КАК Дата,
| ДенежныеСредстваКПоступлениюНаличныеОбороты.Регистратор.Номер КАК Номер,
| ДенежныеСредстваКПоступлениюНаличныеОбороты.Организация КАК Организация,
| ДенежныеСредстваКПоступлениюНаличныеОбороты.Касса КАК Касса,
| ВЫБОР
| КОГДА ЕСТЬNULL(ДенежныеСредстваКПоступлениюНаличныеОстатки.СуммаОстаток, 0) > 0
| ТОГДА ЕСТЬNULL(ДенежныеСредстваКПоступлениюНаличныеОстатки.СуммаОстаток, 0)
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаКОплате,
| ВЫБОР
| КОГДА ЕСТЬNULL(ДенежныеСредстваКПоступлениюНаличныеОстатки.СуммаОстаток, 0) <= 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РаспоряжениеОплачено,
| ДенежныеСредстваКПоступлениюНаличныеОбороты.СуммаПриход КАК СуммаДокумента,
| ДенежныеСредстваКПоступлениюНаличныеОбороты.Регистратор.ХозяйственнаяОперация КАК ХозяйственнаяОперацияКПоступлению,
| ВЫБОР
| КОГДА ДенежныеСредстваКПоступлениюНаличныеОбороты.Регистратор ССЫЛКА Документ.ВыемкаДенежныхСредствИзКассыККМ
| ТОГДА ВЫБОР
| КОГДА ВыемкаДенежныхСредствИзКассыККМ.Магазин = &Магазин
| ТОГДА ИСТИНА
| КОГДА &Магазин = НЕОПРЕДЕЛЕНО
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ДокументыВыемкаДенегСоответствующиеМагазинуКассы
|ИЗ
| РегистрНакопления.ДенежныеСредстваКПоступлениюНаличные.Обороты(, , Регистратор, {(Организация) КАК Организация, (Касса) КАК Касса}) КАК ДенежныеСредстваКПоступлениюНаличныеОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДенежныеСредстваКПоступлениюНаличные.Остатки(, {(Организация) КАК Организация, (Касса) КАК Касса}) КАК ДенежныеСредстваКПоступлениюНаличныеОстатки
| ПО (ДенежныеСредстваКПоступлениюНаличныеОстатки.ДокументПередачи = ДенежныеСредстваКПоступлениюНаличныеОбороты.ДокументПередачи)
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыемкаДенежныхСредствИзКассыККМ КАК ВыемкаДенежныхСредствИзКассыККМ
| ПО (ВыемкаДенежныхСредствИзКассыККМ.Ссылка = (ВЫРАЗИТЬ(ДенежныеСредстваКПоступлениюНаличныеОбороты.Регистратор КАК Документ.ВыемкаДенежныхСредствИзКассыККМ)))
|ГДЕ
| ДенежныеСредстваКПоступлениюНаличныеОбороты.Регистратор.ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствВДругуюКассу), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствВДругуюОрганизацию), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствИзКассыККМ), ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств))
| И ВыемкаДенежныхСредствИзКассыККМ.Магазин = &Магазин
| И ВЫБОР
| КОГДА ЕСТЬNULL(ДенежныеСредстваКПоступлениюНаличныеОстатки.СуммаОстаток, 0) > 0
| ТОГДА ЕСТЬNULL(ДенежныеСредстваКПоступлениюНаличныеОстатки.СуммаОстаток, 0)
| ИНАЧЕ 0
| КОНЕЦ <> 0
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Запрос.УстановитьПараметр("Магазин", Магазин);
РезультатЗапроса = Запрос.Выполнить();
Объект.ТаблицаФормы.Загрузить(РезультатЗапроса.Выгрузить());
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
ТабличныйДокумент.Очистить();
ТабличныйДокумент.Вывести(ОбластьЗаголовок);
ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
ТабличныйДокумент.НачатьАвтогруппировкуСтрок();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ТабличныйДокумент.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
КонецЦикла;
ТабличныйДокумент.ЗакончитьАвтогруппировкуСтрок();
ТабличныйДокумент.Вывести(ОбластьПодвалТаблицы);
ТабличныйДокумент.Вывести(ОбластьПодвал);
КонецПроцедуры
&НаКлиенте
Процедура Заполнить()
ЗаполнитьНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПринятьОплатуСервер(Строка)
СтруктураОснования = Новый Структура;
СтруктураОснования.Вставить("ДокументОснования", Строка.Ссылка);
СтруктураОснования.Вставить("Касса", Касса);
СтруктураОснования.Вставить("ХозяйственнаяОперация", ХозяйственнаяОперация);
СтруктураОснования.Вставить("Кассир", Кассир);
НовыйДокументПриходныйКассовыйОрдер(СтруктураОснования);
КонецПроцедуры
&НаКлиенте
Процедура ПринятьОплату(Команда)
ОКСервер();
КонецПроцедуры
&НаСервере
Процедура НовыйДокументПриходныйКассовыйОрдер(Основание = Неопределено)
Документ = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
Документ.Дата = Основание.ДокументОснования.Дата;
Документ.Касса = Основание.Касса;
Документ.Организация = Основание.ДокументОснования.Организация;
Документ.КассаККМ = Основание.ДокументОснования.КассаККМ;
Документ.СуммаДокумента = Основание.ДокументОснования.СуммаДокумента;
Документ.ДокументОснование = Основание.ДокументОснования;
Документ.ХозяйственнаяОперация = Основание.ХозяйственнаяОперация;
Документ.Ответственный = Основание.Кассир;
Документ.ПринятоОт = Основание.ДокументОснования.Ответственный;
Документ.Основание = Основание.ДокументОснования;
Документ.ВТомЧислеНДС = "Без налога (НДС)";
Попытка
Документ.Записать(РежимЗаписиДокумента.Проведение);
Исключение
КонецПопытки;
КонецПроцедуры
&НаСервере
Процедура ОкСервер()
ТЗ = РеквизитФормыВЗначение("Объект.ТаблицаФормы");
Для Каждого Строка Из ТЗ Цикл
Если Строка.Выбор Тогда
ПринятьОплатуСервер(Строка);
КонецЕсли;
КонецЦикла;
ЗаполнитьНаСервере();
КонецПроцедуры
&НаСервере
Процедура КассаПриИзмененииСервер()
Магазин = Касса.Магазин;
КонецПроцедуры
&НаКлиенте
Процедура КассаПриИзменении(Элемент)
КассаПриИзмененииСервер();
ЗаполнитьНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПриОткрытииНаСервере()
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзКассыККМ
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПриОткрытииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыбратьВсеНаСервере()
ТЗ = РеквизитФормыВЗначение("Объект.ТаблицаФормы");
Для Каждого Строка Из ТЗ Цикл
Строка.Выбор = Истина;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьВсе(Команда)
ВыбратьВсеНаСервере();
КонецПроцедуры
&НаСервере
Процедура СнятьВыборНаСервере()
ТЗ = РеквизитФормыВЗначение("Объект.ТаблицаФормы");
Для Каждого Строка Из ТЗ Цикл
Строка.Выбор = Ложь;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СнятьВыбор(Команда)
СнятьВыборНаСервере();
КонецПроцедуры
Проверено на релизе 1С: Розница редакция 2.3 (2.3.13.10)
Проверено на следующих конфигурациях и релизах:
- Розница, редакция 2.3, релизы 2.3.13.10