[РЕШЕНО] Ограничить печать документа

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем avangarddv, 6 фев 2015.

  1. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Добрый день!

    1С 8.2. Унф 1.3. Возникла задача в документе - Расходная накладная, ограничить печать не проведенных документов. т.е. все непроверенные документы - запретить печатать. Пытаюсь в модуле - формы документы, сделать следующее:

    Код:
    &НаСервере
    Процедура ЗапретПроведенияДок()
         Если Объект.Проведен = Истина Тогда
            Элементы.ФормаКоманднаяПанель.Доступность=Истина;      
        Иначе
            Элементы.ФормаКоманднаяПанель.Доступность=Ложь;
        КонецЕсли
    КонецПроцедуры   
    
    
    &НаКлиенте
    Процедура ВыполнКонтрПроведенияДок()
        ЗапретПроведенияДок();   
    КонецПроцедуры   
    
    
    Но, таким образом - скрывается вся Форма Командной панели. Как ограничить доступ только к печати?


    Help.
  2. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Запретить формирование ТабличныйДокумент при Вашем условии не проще?
  3. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Наверно проще :) Подскажите, как это сделать? где именно это в конфигураторе?
  4. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Укажите конфигурацию и документ
  5. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    1С 8.2, УНФ 1.3.1.4 - Документ Расходная Накладная и там все печати
  6. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    нет такой конфы в наличии :( Посмотрите в модуле менеджера документа, там имеются нужные Вам функции печати
  7. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Печать располагается в менеджере объекта. Нужно перед передачей ссылки на док проверять на проведение.
  8. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Да, там 2 функции ПолучитьДанныеПечати и ПечатнаяФорма

    И процедура - Печать - которая выводит макеты.


    Подскажите пожалуйста условие.. Если ... Тогда... КонецЕсли
  9. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Если СсылкаНаДок.Проведен Тогда
    Бла-бла-бла
    КонецЕсли.
  10. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Попробуйте в Процедуре Печать() прописать:
    Код:
    Процедура Печать()
    Если Объект.Проведен = Истина Тогда
    //строки процедуры без изменения
    Иначе
    СообщениеПользователю("Нельзя распечатать непроведенный док!!");
    КонецЕсли
    КонецПроцедуры
  11. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1

    Пытался так сделать, отладчик ругается:

    Код:
    {Документ.РасходнаяНакладная.МодульМенеджера(4769,7)}: Переменная не определена (Объект)
        Если <<?>>Объект.Проведен = Истина Тогда              (Проверка: Сервер)
    
    также когда пишу - Объект и ctrl + пробел, то отладчик не подсвечивает результат
  12. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Сама процедура Печать:
    Код:
    Процедура Печать(МассивОбъектов,
                     ПараметрыПечати,
                     КоллекцияПечатныхФорм,
                     ОбъектыПечати,
                     ПараметрыВывода) Экспорт
    
        ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
              
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Накладная") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Накладная", "Расходная накладная", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, "Накладная"));
        КонецЕсли;
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ12", "Расходная накладная", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, "ТОРГ12"));
        КонецЕсли;
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НакладнаяСУслугами") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "НакладнаяСУслугами", "Расходная накладная", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, "НакладнаяСУслугами"));
        КонецЕсли;
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12СУслугами") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ12СУслугами", "Расходная накладная", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, "ТОРГ12СУслугами"));
        КонецЕсли;
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктОбОказанииУслуг") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктОбОказанииУслуг", "Расходная накладная", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, "АктОбОказанииУслуг"));
        КонецЕсли;
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТТН") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТТН", "Товарно-транспортная накладная", Обработки.ПечатьТТН.Создать().ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
        КонецЕсли;
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "М15") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "М15", "Накладная на отпуск материалов на сторону", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, "М15"));
        КонецЕсли;
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "БланкТоварногоНаполнения") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "БланкТоварногоНаполнения", "Бланк товарного наполнения", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, "БланкТоварногоНаполнения"));
        КонецЕсли;
      
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ТОРГ12_Москва") Тогда
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ТОРГ12_Москва", "Расходная накладная", ПечатнаяФорма(МассивОбъектов, ОбъектыПечати, "ТОРГ12_Москва"));
        КонецЕсли;
      
      
    КонецПроцедуры
    

    Пытался в начале делать так:
    Код:
    ВыбрДок = Документы.РасходнаяНакладная.Выбрать();
    
    Если ВыбрДок.Проведен=Истина Тогда
    // Далее идут условия печати
    
    Но все равно ошибка:
    Код:
    {ОбщийМодуль.УправлениеПечатью.Модуль(29)}: В обработчике печати не был сформирован табличный документ для: Накладная
            ВызватьИсключение(ТекстСообщенияОбОшибке);
    
  13. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Вам МассивОбъектов проверить на условие, либо переменной Объект присвоить Ссылку на Ваш документ
  14. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Вы хотя бы не тупо код копировал, а разобрались бы что по чем.
  15. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Вообще не понял, подскажите, как присвоить ссылку на документ?

    Вот я и пытаюсь :)
  16. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Для этого книжки есть :)
  17. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1
    Форумы тоже некто не отменял)) сорри за оф.топ
  18. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Можно так пройтись:
    Код:
    Для Каждого Эл Из МассивОбъектов Цикл
        Сообщить(Эл); //Эл - ссылка на документ
    КонецЦикла;
  19. TopicStarter Overlay
    avangarddv
    Offline

    avangarddv

    Регистрация:
    22 апр 2014
    Сообщения:
    19
    Симпатии:
    0
    Баллы:
    1

    Спасибо, прошелся отладчиком, посмотрел что попадает в ТекущийДокумент Из МассивОбъектов ( - Эл - ), и увидел там Проведен :)

    Дальше поставил условие.

    Еще раз благодарю! :)

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