8.х ЧекиККМ и отмена чистки после закрытия смены

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем kera, 2 фев 2009.

  1. TopicStarter Overlay
    kera
    Offline

    kera

    Регистрация:
    28 янв 2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Всем приветик. Я в этом деле всего пару недель. Есть вопросик. Есть чеки ккм, после закрытия смены они чистятся, но создается отчет о продажах за день. но вот беда, все можно вытащить от туда, а вот номера чека нет.((( обидно. Меня просят сделать так, чтобы можно было посмотреть. Через регистр сведений отменяется, ибо есть подчиненная база в другом магазине. как их перетаскивать не знаю.
    Итак, можноли отменить чистку чековККМ после закрытия смены, и как это отразится на дальнейшей работе??? и ситтуация с возвратом через месяц, проведет ли 1с все как надо или это надо отдельно учитывать?
    Или всетаки регистр сведений? тогда как переноситть туда из подчиненной базы?
    Спасибо. Надеюсь ясно выразил проблему.
  2. TopicStarter Overlay
    kera
    Offline

    kera

    Регистрация:
    28 янв 2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    В обработке : закрытие кассовой смены есть такое

    Код:
    // Удаляем чеки.
    Если Не ОтменитьТранзакцию Тогда
    Попытка
    //				         УдалитьОбъекты(РезультатЗапросаПоЧекам.Выгрузить().ВыгрузитьКолонку("Ссылка"), Ложь);
    Исключение
    ОтменитьТранзакцию = Истина;
    Предупреждение("Не удалось удалить чеки ККМ!");
    КонецПопытки;
    КонецЕсли;
    
    Думаю просто закоментировать все
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Возврат через месяц оформляться через возврат товаров от покупателя - описано в учете. Через кассу операцию можно проводить только в тот же день
  4. TopicStarter Overlay
    kera
    Offline

    kera

    Регистрация:
    28 янв 2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Т.е. можно убрать чистку чеков и не заморачиваться? а допустим когда на миллионы счет пойдет как почистить?) также тока условие отбора поменять?)
  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Вы бы озвучили, ЗАЧЕМ вам нужны старые чеки.

    Может задача другим путем решается...
  6. TopicStarter Overlay
    kera
    Offline

    kera

    Регистрация:
    28 янв 2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Ген директор конторы сказал что ему нужна эта картина. Он хочет видеть по какой кассе, за определенный период , сколько чего продано(отчет). И очень ему хочется видеть именно номер чека, кассу, номенклатуру, количество, цену, сумму по каждому чеку.(отчет). я завис на номере чека
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Тогда лучше вести РС по таким данным - он нормально съест десяток миллионов записей

    А типовой механизм лучше не трогать.
  8. TopicStarter Overlay
    kera
    Offline

    kera

    Регистрация:
    28 янв 2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Ок, с этим понятно. Спасибо.
    Вопрос. как быть с подчиненной базой?(во 2м магазине). обмен по почте.
  9. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Ничего страшного в оставлении чеков в базе нет. Кроме номеров чеков от туда еще можно будет дергать предоставленные скидки, анализировать продажи по дисконтным картам и т.д. Только чеки нужно распроводить или помечать на удаление.
    Тот код, который автор привел можно так поправить:

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

    P.S. Если чеки помечать на удаление, то потом аккуратнее надо быть с очисткой базы от помеченных на удаление объектов.
  10. TopicStarter Overlay
    kera
    Offline

    kera

    Регистрация:
    28 янв 2009
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Спасибо огромное!
  11. tosha86n
    Offline

    tosha86n

    Регистрация:
    2 мар 2010
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Спасибо ASh за код очень помог. Как было у вас написано "А ненужные чеки (за прошлый год, например) удалять обработкой по мере необходимости." Вот хотелось бы этот код получить. У меня задача такая Нужно текущий день пометить на удаление при Закрытии смены, а предыдущие дни удалить. С текущем днём разобрался с помощью вашего кода, вот нужно предыдущее дни удалить. Не соображаю ещё в 1с и давно не программировал и сейчас трудновато :unsure:
    Заранее благодарен.
  12. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Удалить доки не трудно. В общем случае пишем, примерно, так:
    Код:
    Процедура УдалитьНенужныеЧеки(ПоДату)
    ВыборкаЧеки = Документы.ЧекККМ.Выбрать(,ПоДату);
    Пока ВыборкаЧеки.Следующий() Цикл
    Чек = ВыборкаЧеки.ПолучитьОбъект();
    Чек.Удалить();
    КонецЦикла;
    КонецПроцедуры
    
    
    Вызывать эту процедуру можно из процедуры , код которой был приведен выше. Вызов можно вставить перед строкой "Исключение"
    Код:
    //...
    КонецЦикла;
    УдалитьНенужныеЧеки(КонецДня(Дата)-86400);//Параметром указываем дату по которую все чеки удаляем	
    Исключение
    //...
    
    Не забудьте настроить отборы, если у Вас больше одной организации или ккм.

    Только вот какой смысл хранить информацию о чеках один день?
  13. tosha86n
    Offline

    tosha86n

    Регистрация:
    2 мар 2010
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое всё работает :unsure:
    Не знаю даже зачем так :)
  14. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Удаление - операция необратимая. Аккуратнее с таким кодом. Ситуации продумайте. Например, если Вы, по каким-то причинам, не закрыли вчерашнюю смену и закрываете сегодняшнюю, то таким кодом потеряете информацию за вчерашнее число. Хотябы проверяйте, что чек не проведен.
  15. tosha86n
    Offline

    tosha86n

    Регистрация:
    2 мар 2010
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Спасибо большое учту :unsure:

Поделиться этой страницей