|
Печать из внешней обработки | ☑ | ||
---|---|---|---|---|
0
Масянька
22.08.22
✎
14:15
|
День добрый!
Есть внешняя обработка (заполняется список сотрудников). Нужно прицепить печать (word). Печать в МО (для ВПФ). Как соединить? Дайте пример, пожалуйста. Спасибо. |
|||
1
Dmitry77
22.08.22
✎
14:18
|
Прям из внешней обработки? Нестандартные требования. Можно посмотреть как печатается из формы списка сотрудников или из физлиц.
|
|||
2
Kassern
22.08.22
✎
14:21
|
МО это что? Министерство обороны, модальные окна, Московская область?
Распишите как должно это выглядеть. Кто куда должен жмякнуть и что должно выйти. |
|||
3
Масянька
22.08.22
✎
14:22
|
(1) Как вообще прицепить печать?
У меня в ВПФ все реализовано. Но там вся печать прописана в модуле объекта. А тут нужно в форме (по идее). |
|||
4
Масянька
22.08.22
✎
14:22
|
(2) Модуль объекта
|
|||
5
СеменовСемен
22.08.22
✎
14:23
|
На ис посмотри отладчики печати
|
|||
6
Kassern
22.08.22
✎
14:26
|
(4) Можно попробовать через вид ЗаполнениеОбъекта обыграть, только кнопка будет не в меню печати. Жмякаете и выполняется команда на клиенте, а там можно все что вам нужно.
|
|||
7
Масянька
22.08.22
✎
14:26
|
(5) Дай ссылку, плиз.
|
|||
8
Масянька
22.08.22
✎
14:26
|
(6) А пример можно?
|
|||
9
Kassern
22.08.22
✎
14:30
|
(8) Да там просто, так же по шаблону создается ВПФ и в СведенияОВнешнейОбработке указывается
ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта"); А в таблице команд указать ВызовКлиентскогоМетода. далее создается форма, где указывается процедура &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт //Тут уже можете обрабатывать как вам надо КонецПроцедуры |
|||
10
Kassern
22.08.22
✎
14:30
|
в параметре ОбъектыНазначенияМассив - будет массив объектов
|
|||
11
СеменовСемен
22.08.22
✎
14:55
|
|
|||
12
СеменовСемен
22.08.22
✎
14:55
|
вместо ОбработкаОбъект.Печать пишешь свою печать или из документа берешь
|
|||
13
6awkup_true
22.08.22
✎
15:02
|
а что если не мучаться и использовать
ДобавитьКоманду(ТаблицаКоманд, Синоним, "СформироватьОтчет" , "ОткрытиеФормы", Истина, ); а в форме формировать как угодно |
|||
14
СеменовСемен
22.08.22
✎
15:03
|
или нужно просто внешнюю печ форму?
|
|||
15
Kassern
22.08.22
✎
15:05
|
(14) я поэтому и просил ТС расписать, как надо в (2), чтобы мы тут не гадали.
|
|||
16
Масянька
22.08.22
✎
15:12
|
Это не ВПФ, а обработка!
Не привязана к объекту конфы. |
|||
17
Kassern
22.08.22
✎
15:16
|
(16) Я правильно понимаете, вы хотите во внешней обработке прикрутить кнопку печать, которая у вас реализована во ВПФ?
|
|||
18
СеменовСемен
22.08.22
✎
15:21
|
|
|||
19
Масянька
22.08.22
✎
15:21
|
(17) Нет.
Я хочу во внешней обработке (ни к чему не привязана) сделать печать (макет word). Просто у меня есть аналогичная печать в ВПФ (похожая). |
|||
20
Kassern
22.08.22
✎
15:22
|
(19) Так в чем проблема, перенести логику печати из ВПФ в вашу внешнюю обработку?
|
|||
21
Масянька
22.08.22
✎
15:24
|
(20) И я так думала.
Кнопка на форме (обработка), а печать в модуле объекта (ВПФ). Как воткнуть кнопку на форму, а действие прописать в модуле объекта? Не получается... |
|||
22
СеменовСемен
22.08.22
✎
15:25
|
(21) в (11) же все написано
|
|||
23
Kassern
22.08.22
✎
15:26
|
(21) А зачем вам прописывать в модуле объекта?
Вот один из примеров реализации печати из макета ворд Макет = ПолучитьИзВременногоХранилища(Адрес); //получить макет из временного хранилища Макет.Записать(ИмяВременногоФайла); //создать документ на основе макета в TEMP клиента Word = Новый COMОбъект("Word.Application"); ///создаем COMОбъект Документ = Word.Documents.Open(ИмяВременногоФайла); //подключаем макет к созданному COMОбъект ДокументЗаполнения = Документ.Application.Documents(1); //////////////// Заполняем данными Word.Application.Visible = Истина;//установить видимость документа Word.Activate();//открыть документ пользователю |
|||
24
СеменовСемен
22.08.22
✎
15:27
|
(23) можно будет как внешнюю использовать и просто так
|
|||
25
СеменовСемен
22.08.22
✎
15:29
|
(23) ну и через ворд уже так никто не печатает
|
|||
26
6awkup_true
22.08.22
✎
15:32
|
(25) заблуждаетесь. вполне часто используемый механизм. когда состав параметров в макете не меняется, а вот макет сам - постоянно, то это очень жизнеспособный вариант чтобы не править печ форму каждый раз. а так лежит себе файлик на сервере, его правит мари ванна и не дергает тебя. красота же?
|
|||
27
СеменовСемен
22.08.22
✎
15:33
|
(26) а в чем проблема также с бспшным макетом сделать?
|
|||
28
6awkup_true
22.08.22
✎
15:35
|
(27) сидит себе юрист и согласовывает вид и состав договоров печатных. доступ в 1с для него не нужен. зачем предоставлять такому сотруднику лицензию? только ради правки макета? так даже при наличии доступа крайне вероятно, что дергать для его правки так же будут вас
|
|||
29
Масянька
22.08.22
✎
15:37
|
Ошибка:
Метод объекта не обнаружен (Найти) {ОбщийМодуль.УправлениеПечатью.Модуль(89)}:Возврат КоллекцияПечатныхФорм.Найти(ВРег(Идентификатор), "ИмяВРЕГ"); Куски кода: &НаСервере Функция ПечатьНаСервере() КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("Извещение"); ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); ОбработкаОбъект.ВывестиДанныеДокументаВТабличныйДокумент(Сотрудники, КоллекцияПечатныхФорм); КоллекцияПечатныхФормМассив = ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм); Возврат КоллекцияПечатныхФормМассив; КонецФункции &НаКлиенте Процедура Печать(Команда) // Ошибки - проверка, норм проходит Если (Ошибка1 = 1) И (Ошибка2 = 1) И (Ошибка3 = 1) И (Ошибка4 = 1) И (Ошибка5 = 1) И (Ошибка6 = 1) Тогда КоллекцияПечатныхФормМассив = ПечатьНаСервере(); УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФормМассив); КонецЕсли; КонецПроцедуры В модуле объекта: Процедура ВывестиДанныеДокументаВТабличныйДокумент(КоллекцияПечатныхФорм, ОбъектыПечати) Экспорт МодульСклонениеПредставленийОбъектов = ОбщегоНазначения.ОбщийМодуль("СклонениеПредставленийОбъектов"); ДвоичныеДанныеМакета = ПолучитьМакет("ПФ_DOC_Извещение"); // общие параметры Если ДвоичныеДанныеМакета <> Неопределено Тогда ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Извещение"); ПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент; Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакета, Неопределено); ПечатнаяФормаДокумента = УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Макет.НастройкиСтраницыМакета, Макет); ОбластьВерхнийКолонтитул = Новый Структура; ОбластьВерхнийКолонтитул.Вставить("ИмяОбласти", "ВерхнийКолонтитул"); ОбластьВерхнийКолонтитул.Вставить("ТипОбласти", "ВерхнийКолонтитул"); ОбластьЗаголовок = Новый Структура; ОбластьЗаголовок.Вставить("ИмяОбласти", "Заголовок"); ОбластьЗаголовок.Вставить("ТипОбласти", "Общая"); ОбластьТекст = Новый Структура; ОбластьТекст.Вставить("ИмяОбласти", "Извещение"); ОбластьТекст.Вставить("ТипОбласти", "Общая"); ОбластьПодвал = Новый Структура; ОбластьПодвал.Вставить("ИмяОбласти", "Подвал"); ОбластьПодвал.Вставить("ТипОбласти", "Общая"); ОбластьШапкаТаблицы = Новый Структура; ОбластьШапкаТаблицы.Вставить("ИмяОбласти", "ПереводСтраницы"); ОбластьШапкаТаблицы.Вставить("ТипОбласти", "Общая"); АдресХранилищаОфисныйДокумент = УправлениеПечатью.СформироватьДокумент(ПечатнаяФормаДокумента); УправлениеПечатью.ОчиститьСсылки(ПечатнаяФормаДокумента, Ложь); УправлениеПечатью.ОчиститьСсылки(Макет); ОфисныеДокументы = Новый Соответствие; ИмяДокумента = "Извещение"; ОфисныеДокументы.Вставить(АдресХранилищаОфисныйДокумент, ИмяДокумента); ПечатнаяФорма.СинонимМакета = ИмяДокумента; ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы; КонецЕсли; КонецПроцедуры |
|||
30
Масянька
22.08.22
✎
15:38
|
(28) Везде же пишут - "знание и использование БСП".
А вообще, я за то, что легче и проще. Для ВПФ (ЗУП) мне понравилась БСП (в части работы с word). |
|||
31
СеменовСемен
22.08.22
✎
15:45
|
что-то в новых версиях БСП захимичили
|
|||
32
6awkup_true
22.08.22
✎
15:46
|
(30) повторюсь. сотрудник отвечающий за внешний вид НЕ работает в 1С, макет может меняться раз в день. ваше время стоит дорого, за правку макета вы берете 1 час минимум, а клиент нищий как церковная мышь. и тут уже не важно, знаете ли вы БСП или нет. лично мне не по душе путь: мне лень потратить чуть больше времени, поэтому докажу клиенту, что купить лицензию, проапгрейдить с базовой до проф, обучить сотрудника и посадить их на вашу поддержку будет выгоднее. зато пф за час, да
|
|||
33
СеменовСемен
22.08.22
✎
15:48
|
(32) почему нельзя из каталога то брать? различие только в виде макета
|
|||
34
АгентБезопасной Нацио
22.08.22
✎
16:07
|
Макеты вообще можно разбирать и заполнять без ворда. dotx - это же зип с xml внутри... Хотя там есть свои тараканы, но разархивировать-заполнять-архивировать - вполне можно НаСервере без установленного там офиса, по регламенту...
|
|||
35
Масянька
22.08.22
✎
16:38
|
Ошибка тут: Возврат КоллекцияПечатныхФорм.Найти(ВРег(Идентификатор), "ИмяВРЕГ");
Почему? |
|||
36
Масянька
22.08.22
✎
16:39
|
+ (35) Метод объекта не обнаружен (Найти)
|
|||
37
Масянька
22.08.22
✎
16:42
|
+ (35) Если что - макет называется ПФ_DOC_Извещение
|
|||
38
MaQo
22.08.22
✎
16:44
|
(37) вычисли выражение КоллекцияПечатныхФорм - что это?
|
|||
39
Масянька
22.08.22
✎
16:46
|
(38) КоллекцияПечатныхФорм, ДанныеФормыКоллекция (в элементах - список сотрудников с данными).
|
|||
40
MaQo
22.08.22
✎
16:48
|
(39) используй НайтиСтроки
P.s: узнал из синтаксис-помощника |
|||
41
MaQo
22.08.22
✎
16:50
|
(39)Нет, НайтиПоИдентификатору
|
|||
42
Масянька
22.08.22
✎
16:53
|
(40) (41) Это функция БСП - СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Идентификатор)
|
|||
43
oslokot
22.08.22
✎
17:14
|
(39) Тип "КоллекцияПечатныхФорм" должен быть "ТаблицаЗначений", Ваш КЭП
|
|||
44
oslokot
22.08.22
✎
17:15
|
Масянька - генератор квантовой запутанности. хрен разберешься
|
|||
45
Масянька
22.08.22
✎
17:19
|
(43) Это и так было ясно.
(44) Распутай - как получить КоллекцияПечатныхФорм? |
|||
46
Масянька
22.08.22
✎
17:21
|
(44) И это не я генератор... То что в семерке, 8.1, 8.2 делалось, как два пальца об асфальт...
|
|||
47
СеменовСемен
22.08.22
✎
17:21
|
вложи стектрейс
|
|||
48
Масянька
22.08.22
✎
17:25
|
(47) Каким образом?
|
|||
49
СеменовСемен
22.08.22
✎
17:27
|
в отладчике - структура вызовов
|
|||
50
Масянька
22.08.22
✎
17:29
|
(49) У меня внешние (обработки, отчеты, формы) не отлаживаются.
|
|||
51
СеменовСемен
22.08.22
✎
17:30
|
(50) делай через открыть - файл
|
|||
52
СеменовСемен
22.08.22
✎
17:31
|
хотя в жр должно быть
|
|||
53
Масянька
23.08.22
✎
08:09
|
(52) В ЖР только ошибка.
(51) Как? |
|||
54
СеменовСемен
23.08.22
✎
09:57
|
(53) в жр пишется полный текст ошибки со списком всех процедур. если конечно больше 8.3.15
|
|||
55
Масянька
23.08.22
✎
10:00
|
(54) Значение не является значением объектного типа (Найти)
{ОбщийМодуль.УправлениеПечатью.Модуль(90)}:Возврат КоллекцияПечатныхФорм.Найти(ВРег(Идентификатор), "ИмяВРЕГ"); {ВнешняяОбработка.ПечатьИзвещение.МодульОбъекта(80)}:ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Извещение"); {ВнешняяОбработка.ПечатьИзвещение.Форма.Форма.Форма(171)}:ОбработкаОбъект.ВывестиДанныеДокументаВТабличныйДокумент(, Сотрудники); {ВнешняяОбработка.ПечатьИзвещение.Форма.Форма.Форма(198)}:КоллекцияПечатныхФормМассив = ПечатьНаСервере(); |
|||
56
СеменовСемен
23.08.22
✎
10:07
|
у тебя ошибка в формировании печ формы
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Извещение"); ибо ты Коллекцию не передаешь ОбработкаОбъект.ВывестиДанныеДокументаВТабличныйДокумент(, Сотрудники); там не т |
|||
57
Масянька
23.08.22
✎
10:12
|
(56) В модуле формы:
&НаСервере Функция ПечатьНаСервере() ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ПечатьИзвещение"); сообщить("1 - " + КоллекцияПечатныхФорм); ОбработкаОбъект.ВывестиДанныеДокументаВТабличныйДокумент(КоллекцияПечатныхФорм, Сотрудники); КоллекцияПечатныхФормМассив = ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм); Возврат КоллекцияПечатныхФормМассив; КонецФункции В модуле объекта: &НаКлиенте //Процедура Печать(Команда) Процедура Печать(ИдентификаторКоманды, ОбъектыНазначения) ........ Если (Ошибка1 = 1) И (Ошибка2 = 1) И (Ошибка3 = 1) И (Ошибка4 = 1) И (Ошибка5 = 1) И (Ошибка6 = 1) Тогда КоллекцияПечатныхФормМассив = ПечатьНаСервере(); УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФормМассив); КонецЕсли; КонецПроцедуры В модуле объекта: Процедура ВывестиДанныеДокументаВТабличныйДокумент(КоллекцияПечатныхФорм, ОбъектыПечати) Экспорт МодульСклонениеПредставленийОбъектов = ОбщегоНазначения.ОбщийМодуль("СклонениеПредставленийОбъектов"); ДвоичныеДанныеМакета = ПолучитьМакет("ПФ_DOC_Извещение"); Если ДвоичныеДанныеМакета <> Неопределено Тогда ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Извещение"); Возвращает: 1 - ТаблицаЗначений ! - Извещение 2 - Ошибка: Значение не является значением объектного типа (ТабличныйДокумент) {ВнешняяОбработка.ПечатьИзвещение.МодульОбъекта(85)}:ПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент; {ВнешняяОбработка.ПечатьИзвещение.Форма.Форма.Форма(172)}:ОбработкаОбъект.ВывестиДанныеДокументаВТабличныйДокумент(КоллекцияПечатныхФорм, Сотрудники); {ВнешняяОбработка.ПечатьИзвещение.Форма.Форма.Форма(200)}:КоллекцияПечатныхФормМассив = ПечатьНаСервере(); |
|||
58
Масянька
23.08.22
✎
10:12
|
+(57) Первые 2 (функция и процедура) в модуле формы.
|
|||
59
Масянька
23.08.22
✎
10:39
|
(56) Мыслей нет?
|
|||
60
СеменовСемен
23.08.22
✎
10:50
|
(57) ну вот уже другая ошибка
|
|||
61
СеменовСемен
23.08.22
✎
10:53
|
У тебя ид печатьизвещение иди извещение?
|
|||
62
Масянька
23.08.22
✎
10:59
|
(61) Обработка называется "Извещение".
Имя обработки "ПечатьИзвещение". |
|||
63
Масянька
23.08.22
✎
11:27
|
Простейшая операция...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |