Имя: Пароль:
1C
 
Программное проведение и вывод на печать
,
0 Peshalkin
 
05.01.21
18:54
Здравствуйте, столкнулся с такой проблемой(УФ), нужно при нажатии на кнопку, чтобы проверялись нужные данные и если всё отлично, вызывается функция, которая создаёт новый документ, заполняет в нём все данные, проводит его и после должен документ выводиться на печать, но проблема заключается в том, что на сервере не работает метод показать(Метод не доступен на сервере)(как я понимаю), но что-то не могу понять, как мне на клиенте вызвать печать, чтобы посмотреть на документ, который будет выведен на печать?

2 строчки кода в обработке, которые отвечают за проведение + печать(на сервере)
Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);
Документ.Печать();
и вот это находится в модуле документа
ТабДок.Показать();
1 rphosts
 
05.01.21
18:56
(0) ответ очевиден - возвращай табличный документ на клиента (с которого по клику кнопки управление было передано на сервер)
2 Peshalkin
 
05.01.21
18:59
(1) проблема в том, что при нажатии на кнопку, создаётся документ в нём заполняются все реквизиты и он проводится, после выводится сразу на печать, не совсем понимаю, как мне это всё вернуть?
3 rphosts
 
05.01.21
19:05
Печать() - это функция или процедура?
4 Peshalkin
 
05.01.21
19:08
(3) Сначала идёт Документ = Документы.Документ.СоздатьДокумент();
После полное заполнение его и после заполнения, проведение и вызов печати. Печать() - она описана в модуле самого документа, кнопка печати грубо говоря и в модуле объекта в самом конце заполнения макета печати, написано ТабДок.Показать()

Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);
Документ.Печать();
5 ДенисЧ
 
05.01.21
19:08
&НаКлиенте
Процедура ПоКнопке(Кнопка)
  табДок = СоздатьНапечататьДокумент();
  табДок.Показать();
КонецПроцедуры

&НаСервере
Функция СоздатьНапечататьДокумент()
  док = СоздатьНовыйДокументКакНадо();
  Если Проверить(док) Тогда
    док.Записать(РежимЗаписиДокумента.Проведение);
    Возврат док.ФункцияПечати();
  Иначе
    Возврат Новый ТабличныйДокумент;
  КонецЕсли;
КонецФункции
6 rphosts
 
05.01.21
19:14
(5) это называется медвежья услуга. Он ведь нифига ничему не научился
7 Peshalkin
 
05.01.21
19:17
(5) так, ошибка же тогда будет, что значение не будет являться значением объектного типа? уже пытался так
8 Peshalkin
 
05.01.21
19:19
Вот мой код, который выполняется по нажатию кнопки

Если ПроверкаРеквизитов() = Ложь Тогда
        Если ЕстьПодсветка = 0 Тогда
            Док = Документы.ПриемТовараВСервис.СоздатьДокумент();
            Док.Автор = Сотрудник;
            Док.Дата = ТекущаяДата();
            Док.УстановитьНовыйНомер();
            Док.Филиал = ФилРаб;
            Док.ДокументОснование = ДокументПродажи;
            Док.ФилиалПродажи = ДокументПродажи.Филиал;                                        
            Док.ДанныеПоКлиенту = СтрШаблон("%1"+Символы.ПС+ "%2", ФИО, Адрес);
            Док.ТелефонДляОбращений = Объект.Телефон;
            Для каждого стр из Состав Цикл
                Добавление = Док.Состав.Добавить();
                Добавление.SN = стр.SN;
                Добавление.Номенклатура = стр.Номенклатура;
                Добавление.ЦенаПродажи = стр.ЦенаПродажи;
                Добавление.ПричинаОбращения = стр.Причина;
                Запрос = Новый Запрос("ВЫБРАТЬ
                |    ПродажаТовара.Себестоимость КАК Себестоимость
                |ИЗ
                |    РегистрНакопления.ПродажаТовара КАК ПродажаТовара
                |ГДЕ
                |    ПродажаТовара.Регистратор = &Регистратор
                |    И ПродажаТовара.Номенклатура = &Номенклатура");
                
                Запрос.УстановитьПараметр("Регистратор", ДокументПродажи);
                Запрос.УстановитьПараметр("Номенклатура",стр.Номенклатура);
                Выборка = Запрос.Выполнить().Выбрать();
                Пока Выборка.Следующий() Цикл
                    Добавление.Себестоимость = Выборка.Себестоимость;
                КонецЦикла;
                Док.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный);
                Док.Печать();
            КонецЦикла;
        Иначе
            Сообщить("Один из товаров списан в брак или находится в сервисе");
            Возврат;
        КонецЕсли;
    Иначе
        Возврат;
    КонецЕсли;

а есть код, который находится в модуле объекта данного документа(через конструктор печати сделан и доработан, для вывода более четкого), там у меня написано ТабДок.Показать()
9 rphosts
 
05.01.21
19:23
(8) ты на (3) to` способен ответить или уже нет?
10 Peshalkin
 
05.01.21
19:25
(9) так я же в (4) ответил?
11 rphosts
 
05.01.21
19:47
(10) перепиши сделав функцию, не можешь переписать сделай подмену процедурой из расширения, не можешь по каким-то причинам сделать из расширения - сделай в своём коде аналог этой долбаной печати.
12 Peshalkin
 
05.01.21
19:53
(11) Благодарю, попробую последний вариант
13 Peshalkin
 
05.01.21
19:53
(11) остальные потому что пробовал и все равно та же ошибка возникала, которую я описывал ранее