8.х Как сделать что б процедура выполнялась только 1 раз?

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

  1. TopicStarter Overlay
    Dimka77
    Offline

    Dimka77 Опытный в 1С

    Регистрация:
    6 июн 2009
    Сообщения:
    279
    Симпатии:
    0
    Баллы:
    26
    Такая ситуация: в УТ после подбора номенклатуры в ЧекККМ, нужно сделать его копию, я написал такую процедуру, которая выполняется если нажать на кнопку "ОК", но вот если нажать на "Провести", а потом "Закрыть", копия не создается.
    Очевидно, что нужно засунуть эту процедуру в код выполнения проведения, но ситуация усложняется тем, что после проведения, некоторые пытаются нажать ещё и кнопку "Ок", тогда копия создается дважды, а так не надо. Как просто выйти из ситуации?
  2. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    Если ЭтоНовый() Тогда
    ВызватьПроцедуруКотораяДолжнаЧтоТоСделатьНоЯНеПонялЧтоИзОписанияАвтора();
    КонецЕсли;

    :unsure:
  3. TopicStarter Overlay
    Dimka77
    Offline

    Dimka77 Опытный в 1С

    Регистрация:
    6 июн 2009
    Сообщения:
    279
    Симпатии:
    0
    Баллы:
    26
    Попробуем так :unsure::
    1) ЧекККМ -> создаю новый документ -> заполняю табличную часть -> нажимаю "Ok" -> запускается процедура по копированию реквизитов созданного документа ЧекККМ в документ КопияЧекаККМ //Цель достигнута, создана копия проведенного Чека. :vis:
    2)ЧекККМ -> создаю новый документ -> заполняю табличную часть -> нажимаю "Провести" -> процедура по копированию созданного документа ККМ НЕ запускается //Цель не достигнута, копия проведенного Чека не создана. :smile:
    :aua:, как достичь поставленной цели?
  4. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    в УТ 10.3 в документ ЧекККМ сейчас в процедуру ОбработкаПроведения(Отказ, РежимПроведения) (модуля объекта разумеется) добавил вызов процедуры ВывестиСообщение();

    Код:
    Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    // Дерево значений, содержащее имена необходимых полей в запросе по шапке.
    Перем ДеревоПолейЗапросаПоШапке;
    
    ВывестиСообщение();
    
    ...
    КонецПроцедуры 
    
    Код:
    Процедура ВывестиСообщение()
    Сообщить("Привет");
    КонецПроцедуры
    
    
    и как ни странно в обоих ваших случаях вызов происходит :)
  5. TopicStarter Overlay
    Dimka77
    Offline

    Dimka77 Опытный в 1С

    Регистрация:
    6 июн 2009
    Сообщения:
    279
    Симпатии:
    0
    Баллы:
    26
    А если код:
    Код:
    Процедура ВывестиСообщение()
    Сообщить("Привет");
    КонецПроцедуры
    
    находится в модуле формы документа, то как написать код в модуле объекта, что бы можно было вызвать процедуру ВывестиСообщение()?
  6. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    хм, а вы что отлавливаете событие нажитие кнопок "Провести" и "ОК" в модуле форме документа?
    При нажитии этих кнопок вызывается продура ОбработкаПроведения расположенная в модуле объекта :)
  7. TopicStarter Overlay
    Dimka77
    Offline

    Dimka77 Опытный в 1С

    Регистрация:
    6 июн 2009
    Сообщения:
    279
    Симпатии:
    0
    Баллы:
    26
    Судя по форме вопроса, я делаю, какую-то глупость... Тогда может просветите как правильно, если не трудно? :unsure:
  8. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    сам не знаю как сделать правильно, я лишь логически рассуждаю на своих малых знаниях :)
    дело хозяйское, можно делать и так как предлогаете вы :) но в обработке проведения есть куча проверок, которые думаю должны быть выполнены прежде чем произойдет копирование документа, а иначе зачем нам копия не правильного документа?
    я бы засунул процедуру копирования в модуль объекта, а ее вызов в самый конец обработки проведения (после движений)
    другое дело надо как-то определять,а возможно и хранить то, что копия документа уже сделана. я бы сделал реквизит либо с типом документссылка.копиячекккм (и соответственно проверял его первым делом в процедуре копирования) либо с типом булево, если не надо сильно заморачиваться (вдруг впоследствии копию кто-то изменит, а откуда она взялась будет уже трудно определить, так что склоняюсь к типу документссылка.копиячекккм)
  9. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Зачем Вам вообще копия чеков?. При закрытии кассовой смены не удаляйте чеки, а делайте их непроведенными.
  10. TopicStarter Overlay
    Dimka77
    Offline

    Dimka77 Опытный в 1С

    Регистрация:
    6 июн 2009
    Сообщения:
    279
    Симпатии:
    0
    Баллы:
    26
    Хорошая идея! Но для меня это сложнее сделать, более того мне хочется, что бы была возможность на основании этих копий формировать документ "Возврат товара от покупателя".
  11. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    а зачем? для этого есть оригинал чекаккм,а если смена закрыта то это делается через возврат товаров от покупателя, только придётся оформлять на конкретного покупателя и РКО :unsure:
  12. BabySG
    Offline

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

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Так точно - в руководстве подробно описано.
  13. TopicStarter Overlay
    Dimka77
    Offline

    Dimka77 Опытный в 1С

    Регистрация:
    6 июн 2009
    Сообщения:
    279
    Симпатии:
    0
    Баллы:
    26
    (11)(12)Вот смотрите. Организация занимается розничной торговлей, в течение дня создаются ЧекиККМ, в конце дня делается Z-отчет, и все ЧекиККМ удаляются. Такое обстоятельство неудобно по следующим причинам:
    - Когда вдруг выявляется расхождение с Кассовым аппаратом, то выявить где был косяк уже невозможно (ЧековККМ в ИБ нет)
    - Если вдруг клиент решил вернуть товар после закрытия кассовой смены и при этом потерял чек (по закону отсутствие чека не является основанием для отказа), то сложно быть уверенным, что товар был куплен без скидки, тогда придется возвращать больше денег, чем заплатил клиент (товар стоит 100руб., его купили со скидкой 20%, чека нет, доказательств оплаты 80-и руб. тоже нет, надо отдать 100руб.)
    А про возврат товаров от покупателя я знаю, так и делаем.
  14. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Проще всего сделать как писал ASh:
    Зайди в обработку закрытия смены и поправь удаление документов на отмену проведения, делов то.
  15. TopicStarter Overlay
    Dimka77
    Offline

    Dimka77 Опытный в 1С

    Регистрация:
    6 июн 2009
    Сообщения:
    279
    Симпатии:
    0
    Баллы:
    26
    А если потом продавец опять его проведет, даже если есть запрет на неоперативное проведение, то чек проведётся оперативно и тогда история чеков будет неполноценной. Понятно, что и из этой ситуации можно найти выход, задав определенное условие на проведение непроведенного. Есть другой вариант, предложили на соседнем форуме, делать копию не каждый раз каждого чека, а при закрытии кассовой смены всем скопом, а потом удалять нафиг.
    Я вот, что ещё подумал если есть отделные копии, то к ним можно прикрутить различного рода отчеты, типа аля в какие дени недели самые высокие/низкие выручки, в какое время в течение дня чаще покупают и т.д.
    :unsure:
  16. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    конфу розница не смотрели? :)
  17. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Как вариант написать отчет, который перед закрытием смены сохранять в файл. Чтобы если что смотреть, что продавали. Ну или как сказали выше - розницу гляньте.

    Если нужет отчет - я выложу, хотя там 3 строчки.

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