Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 июн 2021, 12:06

Розница 2.2 - Автосоздание ПКО при выемке ДС из ККМ

Автор AIFrame, 19 июл 2017, 09:45

0 Пользователей и 1 гость просматривают эту тему.

AIFrame

Когда при закрытии смены у вас происходит автоматическая выемка - создается документ "Выемка ДС из Кассы ККМ".
И эти средства падают в непоступившие. Т.е., зависают.
Чтобы они попали в основную кассу - нужно идти в ПКО -> Денежный средства к поступлению -> Выбирать выемку -> Принять оплату.
И так каждую выемку.
Я не нашел типовых средств автоматизации этого процесса, накатал по быстрому свой.
Создаем подписку на событие:
- Источник: ДокументОбъект.ВыемкаДенежныхСредствИзКассыККМ
- Событие: ОбработкаПроведения
Добавляем в общий модуль(создать свой, если нужно), который умеет "сервер, вызов сервера".

// При проведении Выемки
Процедура ПриПроведенииНовыйВыемкаИзККМОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
СсылкаНаИсточник = Источник.Ссылка;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходныйКассовыйОрдер.Ссылка
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.ДокументОснование = &Источник
| И ПриходныйКассовыйОрдер.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("Источник", СсылкаНаИсточник);
Выборка = Запрос.Выполнить().Выбрать();

Касса = неопределено;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Кассы.Ссылка
|ИЗ
| Справочник.Кассы КАК Кассы
|ГДЕ
| Кассы.Владелец = &Владелец
| И Кассы.Магазин = &Магазин
| И Кассы.КассаККМ = &КассаККМ";
Запрос.УстановитьПараметр("Владелец", Источник.Организация);
Запрос.УстановитьПараметр("Магазин", Источник.Магазин);
Запрос.УстановитьПараметр("КассаККМ", Источник.КассаККМ);

ВыборкаКасс = Запрос.Выполнить().Выбрать();
Если ВыборкаКасс.Следующий() Тогда
Касса = ВыборкаКасс.Ссылка;
КонецЕсли;

Если Выборка.Количество() = 0 Тогда

ПКО = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
ПКО.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзКассыККМ;
ПКО.ДокументОснование = СсылкаНаИсточник;
ПКО.КассаККМ = Источник.КассаККМ;
ПКО.Организация = Источник.Организация;
ПКО.Касса = Касса;
ПКО.Комментарий = "Создан по подписке на событие - проведение Выемки из ККМ: " + ТекущаяДата();
ПКО.Дата = ТекущаяДата();
ПКО.СуммаДокумента = Источник.СуммаДокумента;
ПКО.Ответственный = Источник.Ответственный;

Попытка
ПКО.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("Ошибка проведения ПКО - авто", ,,, ОписаниеОшибки(),);
КонецПопытки;

КонецЕсли;

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



Как только будет проведена новая выемка ДС из ККМ - будет проведен ПКО на основании этой выемки. Если не проведется - можно посмотреть ошибку в журнале регистрации.

Если у вас есть какие-то замечания, я ошибся или я велосипед изобрел - просьба не полениться и рассказать.

LexaK

у меня розницы нет, так небольшое замечание/предложение по оптимизации

сразу после первого запроса делайте проверку наличия ПКО, тогда если оно(ПКО) есть - сразу выход и второй запрос, поиск кассы отрабатывать вообще не будет


   Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПриходныйКассовыйОрдер.Ссылка
    |ИЗ
    |    Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    |ГДЕ
    |    ПриходныйКассовыйОрдер.ДокументОснование = &Источник
    |    И ПриходныйКассовыйОрдер.Проведен = ИСТИНА";
    Запрос.УстановитьПараметр("Источник", СсылкаНаИсточник);
    //Выборка = Запрос.Выполнить().Выбрать();
    лкРез = Запрос.Выполнить();
    Если Не лкРез.Пустой() Тогда
        //ПКО есть, создавать не надо, сразу выходим 
        Возврат;
    КонецЕсли;

    ...
ответ Понравился? (в смысле пригодился?)

AIFrame

Спасибо, поправил.
// При проведении Выемки
Процедура ПриЗаписиНовыйВыемкаИзККМОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
СсылкаНаИсточник = Источник.Ссылка;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходныйКассовыйОрдер.Ссылка
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.ДокументОснование = &Источник
| И ПриходныйКассовыйОрдер.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("Источник", СсылкаНаИсточник);
ЗапросПустой = Запрос.Выполнить().Пустой();

Если НЕ ЗапросПустой Тогда
Возврат;
КонецЕсли;

Касса = неопределено;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Кассы.Ссылка
|ИЗ
| Справочник.Кассы КАК Кассы
|ГДЕ
| Кассы.Владелец = &Владелец
| И Кассы.Магазин = &Магазин
| И Кассы.КассаККМ = &КассаККМ";
Запрос.УстановитьПараметр("Владелец", Источник.Организация);
Запрос.УстановитьПараметр("Магазин", Источник.Магазин);
Запрос.УстановитьПараметр("КассаККМ", Источник.КассаККМ);

ВыборкаКасс = Запрос.Выполнить().Выбрать();
Если ВыборкаКасс.Следующий() Тогда
Касса = ВыборкаКасс.Ссылка;
КонецЕсли;

ПКО = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
ПКО.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеДенежныхСредствИзКассыККМ;
ПКО.ДокументОснование = СсылкаНаИсточник;
ПКО.КассаККМ = Источник.КассаККМ;
ПКО.Организация = Источник.Организация;
ПКО.Касса = Касса;
ПКО.Комментарий = "Создан по подписке на событие - проведение Выемки из ККМ: " + ТекущаяДата();
ПКО.Дата = ТекущаяДата();
ПКО.СуммаДокумента = Источник.СуммаДокумента;
ПКО.Ответственный = Источник.Ответственный;

Попытка
ПКО.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("Ошибка проведения ПКО - авто", ,,, ОписаниеОшибки(),);
КонецПопытки;

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

Jenek_Fedorov

Здравствуйте.
Имеется конфигурация Управление торговлей, редакция 11.2 (11.2.3.300)
В конфигураторе, под правами администратора, при нажатии правой кнопки мыши на поле "Подписки на события" не активна (серая) надпись "Добавить Ins".
Не подскажите причину по которой я не имею возможность добавить новую подписку на событие?

oleg-x

Цитата: Jenek_Fedorov от 14 сен 2017, 14:36
Здравствуйте.
Имеется конфигурация Управление торговлей, редакция 11.2 (11.2.3.300)
В конфигураторе, под правами администратора, при нажатии правой кнопки мыши на поле "Подписки на события" не активна (серая) надпись "Добавить Ins".
Не подскажите причину по которой я не имею возможность добавить новую подписку на событие?
У вас конфигурация на потдержке?
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Jenek_Fedorov

Цитата: oleg-x от 14 сен 2017, 15:15
Цитата: Jenek_Fedorov от 14 сен 2017, 14:36
Здравствуйте.
Имеется конфигурация Управление торговлей, редакция 11.2 (11.2.3.300)
В конфигураторе, под правами администратора, при нажатии правой кнопки мыши на поле "Подписки на события" не активна (серая) надпись "Добавить Ins".
Не подскажите причину по которой я не имею возможность добавить новую подписку на событие?
У вас конфигурация на потдержке?
а фик знает... где посмотреть?

oleg-x

Открываем конфигуратор, если напротив объектов висят замки, значит конфигурация не редактируется.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Jenek_Fedorov

Цитата: oleg-x от 14 сен 2017, 15:49
Открываем конфигуратор, если напротив объектов висят замки, значит конфигурация не редактируется.
замки висят.. никак не сделать, чтобы замков не было?
Оч необходимо автосоздание ПКО.. которое выше

Все. Нашел. Конфигурация - Поддержка - Настройка поддержки. Спасибо всем)))

alex0402

Конфигурация - поддержка - настройка поддержки
Спасибо за Сказать спасибо

oleg-x

1) Обязательно сделайте сначало копию базы.
2) На сколько я знаю обновлять конфигурацию уже нельзя будет, только через сравнение и объединение.
3) Конфигурация - поддержка-настройка поддержки, там снять с поддержки с сохранением обновлений.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск