|   |   | 
| 
 | Метод недоступен на сервере | ☑ | ||
|---|---|---|---|---|
| 0
    
        falselight 30.11.17✎ 08:12 | 
        УТ 11.3 Делаю доработку обработки. Перенес в неё процедуры из
 общего модуля. Но на одной процедуре выходит ошибка, - {Обработка.ПП_РабочийСтолУпаковщика.Форма.Форма.Форма(874)}: Ошибка при вызове метода контекста (Напечатать) ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); по причине: Метод недоступен на сервере Как это обойти? Пробовал у этой процедуры поставить &НаКлиенте, но эту процедура не находит тогда, пишет что она не определена! | |||
| 1
    
        falselight 30.11.17✎ 08:13 | 
        &НаКлиенте
 Процедура СоздатьКоробку(Команда) ТекстПредупреждения = ""; СоздатьКоробкуНаСервере(ТекстПредупреждения); Если ЗначениеЗаполнено(ТекстПредупреждения) Тогда ПоказатьПредупреждение(,ТекстПредупреждения); КонецЕсли; МасУпакЛ = Новый Массив; МасУпакЛ.Добавить(ТекущаяКоробка); ПечатьЭтикетокУпаковочныхЛистовНаПринтер2(МасУпакЛ); КонецПроцедуры // Функция ПечатьЭтикетокУпаковочныхЛистовНаПринтер2(МасУпакЛ) СтруктураВозврата = УправлениеПечатьюУТВызовСервера.ДанныеДляПечатиЭтикетокУпаковочныеЛисты(МасУпакЛ); Если Не СтруктураВозврата.ЕстьШаблонЭтикетки Тогда ТекстСообщения = НСтр("ru = 'Не настроен общий шаблон этикетки упаковочного листа. Обратитесь к администратору.'"); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); КонецЕсли; Если НЕ СтруктураВозврата.ЕстьЭтикеткиДляПечати Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Печатная форма недоступна.'")); КонецЕсли; Если СтруктураВозврата.ЕстьЭтикеткиДляПечати И СтруктураВозврата.ЕстьШаблонЭтикетки Тогда ВыполнитьКомандуПечатиНаПринтер( "Обработка.ПечатьЭтикетокИЦенников", "ЭтикеткаУпаковочныеЛисты", МасУпакЛ, Новый Структура( "АдресВХранилище, ШаблонЭтикетки, КоличествоЭкземпляров", СтруктураВозврата.АдресВХранилище, СтруктураВозврата.ШаблонЭтикетки, 1)); КонецЕсли; КонецФункции // // Формирует и выводит на принтер печатные формы. // // Параметры: // ИмяМенеджераПечати - Строка - менеджер печати для печатаемых объектов; // ИменаМакетов - Строка - идентификаторы печатных форм; // МассивОбъектов - Ссылка, Массив - объекты печати; // ВладелецФормы - УправляемаяФорма - форма, из которой выполняется печать; // ПараметрыПечати - Структура - произвольные параметры для передачи в менеджер печати. // Процедура ВыполнитьКомандуПечатиНаПринтер(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ПараметрыПечати = Неопределено) Экспорт // Проверим количество объектов. Если НЕ ПроверитьКоличествоПереданныхОбъектов(МассивОбъектов) Тогда Возврат; КонецЕсли; // Сформируем табличные документы. #Если ТолстыйКлиентОбычноеПриложение Тогда ПечатныеФормы = УправлениеПечатьюВызовСервера.СформироватьПечатныеФормыДляБыстройПечатиОбычноеПриложение( ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ПараметрыПечати); Если НЕ ПечатныеФормы.Отказ Тогда ОбъектыПечати = Новый СписокЗначений; ТабличныеДокументы = ПолучитьИзВременногоХранилища(ПечатныеФормы.Адрес); Для Каждого ОбъектПечати Из ПечатныеФормы.ОбъектыПечати Цикл ОбъектыПечати.Добавить(ОбъектПечати.Значение, ОбъектПечати.Ключ); КонецЦикла; ПечатныеФормы.ОбъектыПечати = ОбъектыПечати; КонецЕсли; #Иначе ПечатныеФормы = УправлениеПечатьюВызовСервера.СформироватьПечатныеФормыДляБыстройПечати( ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ПараметрыПечати); #КонецЕсли Если ПечатныеФормы.Отказ Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Нет прав для вывода печатной формы на принтер, обратитесь к администратору.'")); Возврат; КонецЕсли; // Распечатаем РаспечататьТабличныеДокументы2(ПечатныеФормы.ТабличныеДокументы, ПечатныеФормы.ОбъектыПечати); КонецПроцедуры | |||
| 2
    
        Segate 30.11.17✎ 08:23 | 
        Передать ПакетОтображаемыхДокументов на клиент и там распечатать, не?     | |||
| 3
    
        falselight 30.11.17✎ 08:42 | 
        (2) Пишет процедура или функция с таким именем не определоена! Почему он её не видит?
 Процедура РаспечататьТабличныеДокументы2(ТабличныеДокументы, ОбъектыПечати, Знач ПечататьКомплектами = Неопределено, Знач КоличествоКопийКомплектов = 1) ПечататьКомплектами = ТабличныеДокументы.Количество() > 1; ПакетОтображаемыхДокументов = УправлениеПечатьюВызовСервера.ПакетДокументов(ТабличныеДокументы, ОбъектыПечати, ПечататьКомплектами, КоличествоКопийКомплектов); ГоуГоу(ПакетОтображаемыхДокументов); //ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); КонецПроцедуры // &НаКлинете Процедура ГоуГоу(ПакетОтображаемыхДокументов) ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); КонецПроцедуры // <- | |||
| 4
    
        falselight 30.11.17✎ 08:44 | 
        &НаКлиенте попрачил правильно, все равно выдает ошибку     | |||
| 5
    
        igorPetrov 30.11.17✎ 09:08 | 
        (4) см(2)     | |||
| 6
    
        falselight 30.11.17✎ 09:21 | 
        (5) Как передать на клиент?
 Все выполняется в модуле формы обраблотки. Я же передаю на клиент ГоуГоу(ПакетОтображаемыхДокументов); //ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); КонецПроцедуры // &НаКлинете Процедура ГоуГоу(ПакетОтображаемыхДокументов) ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); КонецПроцедуры // <- | |||
| 7
    
        hhhh 30.11.17✎ 09:37 | 
        (6) невозможно в нашей с вами реальности передать управление с сервера на клиент.     | |||
| 8
    
        falselight 30.11.17✎ 09:48 | 
        (7) вы можете объяснить как нужно сделать?
 И же использую инструкцию &НаКлиенте Он вообще перестает видеть это процедуру. Как нужно сделать? | |||
| 9
    
        igorPetrov 30.11.17✎ 09:55 | 
        (8) Нужно сделать правильно.     | |||
| 10
    
        falselight 30.11.17✎ 10:08 | 
        Подскажите как? Я перетащил процедуры из общего модула я обработку     | |||
| 11
    
        falselight 30.11.17✎ 10:11 | 
        (9)(2) Не обладаю знаниями, умениями, вот и пытаюсь у вас выяснить!     | |||
| 12
    
        igorPetrov 30.11.17✎ 10:13 | 
        (11) Пора уже обладать.     | |||
| 13
    
        falselight 30.11.17✎ 10:14 | 
        (12) Что я не так делаю? Вопрос же ясен!     | |||
| 14
    
        hhhh 30.11.17✎ 10:46 | 
        (13) ну в типовой любой посмотрите, как печатают. У них же нет таких проблем. Зачем вы постоянно отсебятину начинаете гнать и не пользуетесь проверенными методиками? Постоянно что-то выдумываете и нас будоражите всякой фигней.     | |||
| 15
    
        Мимохожий Однако 30.11.17✎ 10:47 | 
        (13) Нельзя вызвать клиентскую процедуру из процедуры сервера. Это ясно. Как следствие: бездумное копирование процедур из общих модулей не всегда приводит к нужному результату.     | |||
| 16
    
        novichok79 30.11.17✎ 11:11 | 
        почему бы не сделать Процедура РаспечататьТабличныеДокументы2 функцией, которая возвращала бы ПакетОтображаемыхДокументов на клиент и выводила бы его уже в клиентской процедуре?     | |||
| 17
    
        falselight 30.11.17✎ 11:39 | 
        Да согласен. Извините что я так. Да простит меня бог за все и мои предки!!!!     | |||
| 18
    
        novichok79 30.11.17✎ 11:39 | 
        (17) да, ладно. не все так серьезно.     | |||
| 19
    
        falselight 30.11.17✎ 11:40 | 
        Решилось все вот так!!! Я щел не по правильному пути...
 &НаКлиенте Процедура СоздатьКоробку(Команда) ТекстПредупреждения = ""; СоздатьКоробкуНаСервере(ТекстПредупреждения); Если ЗначениеЗаполнено(ТекстПредупреждения) Тогда ПоказатьПредупреждение(,ТекстПредупреждения); КонецЕсли; МасУпакЛ = Новый Массив; МасУпакЛ.Добавить(ТекущаяКоробка); СтруктураВозврата = УправлениеПечатьюУТВызовСервера.ДанныеДляПечатиЭтикетокУпаковочныеЛисты(МасУпакЛ); УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиНаПринтер( "Обработка.ПечатьЭтикетокИЦенников", "ЭтикеткаУпаковочныеЛисты", МасУпакЛ, Новый Структура( "АдресВХранилище, ШаблонЭтикетки, КоличествоЭкземпляров", СтруктураВозврата.АдресВХранилище, СтруктураВозврата.ШаблонЭтикетки, 1)); КонецПроцедуры | |||
| 20
    
        falselight 30.11.17✎ 11:40 | 
        (18) Не у меня серьезно, Очень. Психи...     | |||
| 21
    
        falselight 30.11.17✎ 11:41 | 
        (19+) То ест получается что из общего модуля нужно было взять только вот это, -
 СтруктураВозврата = УправлениеПечатьюУТВызовСервера.ДанныеДляПечатиЭтикетокУпаковочныеЛисты(МасУпакЛ); УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиНаПринтер( "Обработка.ПечатьЭтикетокИЦенников", "ЭтикеткаУпаковочныеЛисты", МасУпакЛ, Новый Структура( "АдресВХранилище, ШаблонЭтикетки, КоличествоЭкземпляров", СтруктураВозврата.АдресВХранилище, СтруктураВозврата.ШаблонЭтикетки, 1)); И все работает! | |||
| 22
    
        novichok79 30.11.17✎ 11:45 | 
        (20) и все завертится, петля закрутится, сначала стерпится, потом полюбится (с) ГС
 (21) аллилуйя! | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |