8.х Как запретить копировать документ ?

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

  1. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Есть необходимость запретить копировать некоторые локументы определенного вида.
    Например, если документ записан ранее 1-го числа текущего месяца, то его копировать нельзя, документы текущего месяца - можно.

    Подскажите пожалуйста, как это можно сделать.

    Заранее благодарен за советы.
  2. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Украдено из СП:
    Т.е. создаете обработку этого события у нужных документов и вертите там какие хотите условия - это копируем, это не копируем...
  3. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    [OFF]lazy, а Вы даже не посмотрели что написали. В данной процедуре Вы не имеете возможность отменить копирование объекта, и даже если Вы затрете объект копирования, то платформочка самостоятельно его воссоздаст, так что это не решение.[/OFF]

    Sagitt, в платформе всё ни так очевидно. В подписке на событие Вы не сможете отменить копирование, и в процедуре модуля копирование тоже не остановить, но не надо отчаиваться, платформа всегда имеет решение.
    Платформа при создании документа прописывает некий на первый взгляд не связанный параметр.
    так как мы не можем остановить копирование то нам нужно просто запретить пользователю видеть результаты сего деяния. В процедуре
    Код:
    Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    
    
    основной формы документа прописываем
    Код:
        //============================================================================================
    Если ЭтоНовый() Тогда // если объект новый
    
    Если ЗначениеЗаполнено(ПараметрОбъектКопирования) Тогда // и существует объект копирования
    Если ПараметрОбъектКопирования.Дата < Дата("20100101000000") Тогда // и условие запрета выполнено
    Отказ = Истина; // Тада катись "шарик" лесом
    Сообщить("Копирование документов заданного периода запрещено. Операция прервана");
    КонецЕсли;
    КонецЕсли;
    
    КонецЕсли;
    //============================================================================================
    
    
    Один минус, это надо делать для каждого документа, копирование которого Вы хотите остановить.
    Ну, вот пожалуй и всё, если кто знает как через подписку решить данный вопрос, внимательно слушаем.
    ЗЫ: Данный параметр доступен только в новом документе копирования и в источнике явно не прописано что и не даёт возможность прервать копирование. Как вариант можно ещё предопределить действие "ПриКопировании", но думаю что этот вариант будет самым адэкватным.
  4. lazy
    Offline

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

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    mialord, идея с использованием ПриКопировании() заключается не в линейном отказе пользователю в копировании документа а в затирании тех реквизитов, которые недопустимо переносить из старых документов. Что на мой взгляд более эстетично и удобно.

    Т.е. пользователя не просто посылают, а прозрачно для него убирают из документа реквизиты которые не актуальны в этом месяце, оставляя реквизиты которые допустимо использовать из старых документов. И документы копируются и косяк с устаревшими значениями исчезает.
  5. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Читаем вопрос
    Документы будут скопированы в любом случае, как запретить копировать документы было написано мною ранее. Если это Вас зацепило, дело Ваше, я указал как данный вопрос решается, и что метод объекта при копирвоании Вам не поможет, т.к. метод будет вызван не у истосника.
    [OFF]и пожалуйста не оффтопить без причины[/OFF]
  6. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Больщое спасибо за идеи. Честно говоря я думал, что из процедуры прикопировании() все таки можно отменить копирование, но раз нет, меня вполне устроит вариант предложенный mialord.
    Еще раз огромное спасибо!
  7. HexaD
    Offline

    HexaD Опытный в 1С

    Регистрация:
    19 июн 2010
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Я, наверно, не так понял вопрос, но первое, что сразу приходит в голову - это запретить в форме списка в событии "перед началом добавления".
    ДокументСписокПередНачаломДобавления(Элемент, Отказ, Копирование)
    Т.е. если копирование = истина, то отказ тоже.
  8. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Нет. Документ можно скопировать не только из (в) формы списка.

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