|
Печать из списка документов | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
12.04.24
✎
10:23
|
В списке документов есть печать.
Внешняя печатная форма. Печатает только выделенный в списке документ. как сделать что бы при выделении в списке нескольких документов они шли на печать? |
|||
1
Builder
12.04.24
✎
10:27
|
(0) Может доработать печатную форму?
|
|||
2
NIGHTHUNTER
12.04.24
✎
10:31
|
(1) Подскажите пожалуйста как?
Функция СформироватьТабличныйДокумент(ОбъектПечати, ПечатьЭП) Экспорт В ОбъектПечати ссылка на выбранный документ. Или при тестировании с реквизита формы. Или при выборе строки в списке документов. Или из самого документа. А как это сделать, при выборе строк в списке документов, что бы на печать пошли все выбранные строки? |
|||
3
Fedor-1971
12.04.24
✎
10:32
|
(0) Если внешняя форма с использованием БСП, то туда отправляется массив документов, соответственно нужно построить алгоритм обработки массива, а не первого документа
|
|||
4
Fedor-1971
12.04.24
✎
10:38
|
(2) примерно так:
Процедура Печать(МассивОбъектов,КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт МассивОбъектов - это все выделенные в списке Для каждого ОбъектПечати из МассивОбъектов цикл СформироватьТабличныйДокумент(ОбъектПечати, ПечатьЭП) КонецЦикла |
|||
5
NIGHTHUNTER
12.04.24
✎
10:37
|
(3)
// Функция СформироватьТабличныйДокумент(ОбъектПечати, ПечатьЭП) Экспорт Сообщить(ОбъектПечати.Количество()); Количество() - не обнаружено! |
|||
6
NIGHTHUNTER
12.04.24
✎
10:38
|
ОбъектПечати это ссылка
|
|||
7
yopQua
12.04.24
✎
10:40
|
крутишь в цикле выделенные строки в списке документов и каждый раз вызываешь это
Функция СформироватьТабличныйДокумент(ОбъектПечати, ПечатьЭП) Экспорт передаешь ссылку из строки в объект печати |
|||
8
NIGHTHUNTER
12.04.24
✎
10:40
|
(4) а как это отладить?
|
|||
9
Fedor-1971
12.04.24
✎
10:40
|
(5) Смотри чуть раньше или посмотри как в (4)
|
|||
10
yopQua
12.04.24
✎
10:41
|
(9) ццц еще здравомыслящий ;)
|
|||
11
NIGHTHUNTER
12.04.24
✎
10:41
|
(7)
Вроде так и сделано, - Функция Печать(МассивОбъектов = Неопределено, КоллекцияПечатныхФорм = Неопределено, ОбъектыПечати = Неопределено, ПараметрыВывода = Неопределено) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, ЭтапПроизводства") Тогда Для Каждого ОбъектПечати Из МассивОбъектов Цикл УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ЭтапПроизводства", "Этап производства", СформироватьТабличныйДокумент(ОбъектПечати,Истина)); КонецЦикла; КонецЕсли; КонецФункции |
|||
12
Fedor-1971
12.04.24
✎
10:47
|
(8) Само просто: поставь Сообщить("Док ....") в цикле, потом подключишь свою функцию
Или поставь точку останова в форме списка Подключаемый_ВыполнитьКоманду |
|||
13
yopQua
12.04.24
✎
10:45
|
что в МассивОбъектов, строки списка или ссылки?
и это судя по названию УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию только добавляет табдок в коллекцию, надо же еще .Показать() сделать |
|||
14
vicof
12.04.24
✎
10:48
|
Вангую еще 40 тупых сообщений про то, какой тип у объекта печати, как их вызывать, про неумение пользоваться отладчиком и как отладить печатную форму, сообщения про поиск в интернетах по простейшему запросу, сообщения про тупость некоторых участников, молчание автора месяц, и еще приход с таким же тупым вопросом. И с такой же реакцией на него.
|
|||
15
yopQua
12.04.24
✎
10:47
|
в общем, отладчиком смотреть надо, что там происходит
|
|||
16
yopQua
12.04.24
✎
10:48
|
(14) похоже на то, что такое уже бывало
|
|||
17
Garykom
12.04.24
✎
10:49
|
(0) Дошло наконец что не стоит бездумно копипастить кривой код с "МассивОбъектов[0]" ?
|
|||
18
Garykom
12.04.24
✎
10:53
|
(17)+ Еще стоит открыть для себя
ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("ВерсияБСП") С прочими ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка() и ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<Тип>() |
|||
19
yopQua
12.04.24
✎
10:50
|
гггг ну точно, опыт уже есть
был такой LivingStar кажется, очень похоже |
|||
20
Fedor-1971
12.04.24
✎
10:50
|
12+ Вот тут: ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Элементы.Список);
Возможно, надо Элементы.Список.ВыбранныеСтроки (или как-то так) |
|||
21
vicof
12.04.24
✎
10:51
|
(19) Это он и есть
|
|||
22
АгентБезопасной Нацио
12.04.24
✎
10:53
|
(17) а вот спорим, что не дошло?
|
|||
23
NIGHTHUNTER
12.04.24
✎
10:53
|
При выделении двух документов в списке, они оба идут в сообщить. Но почему на печать идет только последний из них?
Функция Печать(МассивОбъектов = Неопределено, КоллекцияПечатныхФорм = Неопределено, ОбъектыПечати = Неопределено, ПараметрыВывода = Неопределено) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЭтапПроизводства") Тогда Для Каждого ОбъектПечати Из МассивОбъектов Цикл Сообщить(ОбъектПечати); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ЭтапПроизводства", "Этап производства", СформироватьТабличныйДокумент(ОбъектПечати,Истина)); КонецЦикла; КонецЕсли; КонецФункции |
|||
24
yopQua
12.04.24
✎
10:53
|
(21) тогда ждем появления пользователя с ником NightStar
|
|||
25
vicof
12.04.24
✎
10:56
|
Или LivingHunter
|
|||
26
Fedor-1971
12.04.24
✎
10:56
|
(23) Сначала подготовь все документы в табДок, потом выводи оный в коллекцию печатных форм
|
|||
27
yopQua
12.04.24
✎
10:56
|
ага, других вариантов похоже быть не может, не дано)
|
|||
28
NIGHTHUNTER
12.04.24
✎
10:57
|
(17) где вы это видели?
МассивОбъектов[0] |
|||
29
АгентБезопасной Нацио
12.04.24
✎
10:58
|
(23) потому, что у тебя есть ошибка.
|
|||
30
NIGHTHUNTER
12.04.24
✎
10:58
|
(26) вывод же в (23) идет нормальный, почему на печать идет только последняя ссылка?
|
|||
31
vicof
12.04.24
✎
10:59
|
(28) Т.е. то, что бездумно копипастишь кривой код, уже не отрицаешь. Это хорошо.
|
|||
32
NIGHTHUNTER
12.04.24
✎
10:59
|
(29) Где?
|
|||
33
Garykom
12.04.24
✎
10:59
|
(23) Ну открой уже модуль/код УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию
И изучи его!!! |
|||
34
АгентБезопасной Нацио
12.04.24
✎
11:00
|
(32) в ДНК!
|
|||
35
Garykom
12.04.24
✎
11:02
|
|
|||
36
NIGHTHUNTER
12.04.24
✎
11:03
|
(33) Я же сюда передаю каждый раз новую ссылку, -
СформироватьТабличныйДокумент(ОбъектПечати,Истина)); КонецЦикла; КонецЕсли; КонецФункции В ОбъектПечати |
|||
37
NIGHTHUNTER
12.04.24
✎
11:08
|
Почему не работает (11) ?
|
|||
38
NIGHTHUNTER
12.04.24
✎
11:08
|
(33) Там все в порядке, как я посмотрел.
|
|||
39
NIGHTHUNTER
12.04.24
✎
11:09
|
(26) Так и есть, все формируется в таб док , а потом передатеся в печать
|
|||
40
Гена
12.04.24
✎
11:15
|
Гляньте как это сделано в доке увольнения. Там в меню печати есть опция печати комплекта, открывается диалог в котором можно выбрать формы.
|
|||
41
Garykom
12.04.24
✎
11:15
|
(38) Ты реально код читать не умеешь?
Что делает Найти? Что? Куда вставит "ТабличныйДокумент"? Еще скажи у тебя имена макетов разные...
|
|||
42
NIGHTHUNTER
12.04.24
✎
11:15
|
поможете?
|
|||
43
Garykom
12.04.24
✎
11:18
|
(41)+ Свой код в (11) исправь так чтобы цикл по МассивОбъектов формировал один ТабДок и один раз его (после цикла)
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию |
|||
44
Fedor-1971
12.04.24
✎
11:17
|
(38) Плохо посмотрел
(39) ты постоянно передаёшь новый табДок и трёшь уже выведенные данные Делай примерно так: Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЭтапПроизводства") Тогда табДок = Новый ТабличныйДокумент; Для Каждого ОбъектПечати Из МассивОбъектов Цикл Сообщить(ОбъектПечати); //сначала сделай единый табличный документ для всех ссылок табДок.Вывести(СформироватьТабличныйДокумент(ОбъектПечати,Истина)); КонецЦикла; //потом выводи его УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ЭтапПроизводства", "Этап производства", табДок); КонецЕсли; |
|||
45
NIGHTHUNTER
12.04.24
✎
11:18
|
(41) Один макет, в него нужно вставить и вывести выделенные документы в списке документов.
Пока если я выделил 3, вывкдктся последний. |
|||
46
Garykom
12.04.24
✎
11:24
|
(43)+ Не забывай при выводе нескольких ТабДок в один про ВывестиГоризонтальныйРазделительСтраниц()
Вроде есть типовая процедура/функция для этого |
|||
47
NIGHTHUNTER
12.04.24
✎
11:26
|
(46) То есть есть причина, почему я выделаю в списке несколько документов , а выводится последний?
Как это быстрее решить? |
|||
48
Garykom
12.04.24
✎
11:31
|
(47) Сходи на курсы...
Но лучше бросай программирование - это явно не твое. |
|||
49
Fedor-1971
12.04.24
✎
11:30
|
(47) Тебе уже в 44 даже алгоритм написал
Что ещё нужно? куда уж быстрее? |
|||
50
yopQua
12.04.24
✎
11:30
|
(40)
Гляньте как это сделано в доке увольнения Тонко! |
|||
51
Builder
12.04.24
✎
11:47
|
Мне кажется эта тема как-то связана с соседней темой автора про атаку фсб :)
|
|||
52
DrZombi
12.04.24
✎
13:10
|
(0) Ерунда, вот как надо печатать из внешней обработки.
Некий код... печати с диалогом&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) //............... пОбъектыНазначения = Параметры.ОбъектыНазначения; ИдентификаторКоманды = Параметры.ИдентификаторКоманды; ОбъектыНазначения = ПоместитьВоВременноеХранилище(пОбъектыНазначения,ЭтаФорма.УникальныйИдентификатор); КонецПроцедуры &НаСервере Функция ПолучитьСсылкуНаВнешнююОбработкуПоИмениОбъектаНаСервере(ИмяОбъекта) //Отключим всякого рода проверки безопасности от 1С... оно тут лишнее... УстановитьОтключениеБезопасногоРежима(Истина); УстановитьПривилегированныйРежим(Истина); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ИмяОбъекта", ИмяОбъекта); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | ДополнительныеОтчетыИОбработки.Ссылка КАК Ссылка |ИЗ | Справочник.ДополнительныеОтчетыИОбработки КАК ДополнительныеОтчетыИОбработки |ГДЕ | НЕ ДополнительныеОтчетыИОбработки.ЭтоГруппа | И НЕ ДополнительныеОтчетыИОбработки.ПометкаУдаления | И ДополнительныеОтчетыИОбработки.ИмяОбъекта = &ИмяОбъекта | И ДополнительныеОтчетыИОбработки.Публикация = ЗНАЧЕНИЕ(Перечисление.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется) | |УПОРЯДОЧИТЬ ПО | Ссылка"; РезЗапроса = Запрос.Выполнить(); Если РезЗапроса.Пустой() Тогда Возврат Неопределено; КонецЕсли; Выборка = РезЗапроса.Выбрать(); Выборка.Следующий(); Возврат Выборка.Ссылка; КонецФункции Функция ПодготовитьСтруктуруПараметровВывода() Возврат УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода(); КонецФункции &НаКлиенте Процедура Печать(Команда) ОбъектыПечати = ПолучитьИзВременногоХранилища(ОбъектыНазначения); ПараметрыПечати = ОбщегоНазначенияБПКлиент.ПолучитьЗаголовокПечатнойФормы(ОбъектыПечати); Если ПараметрыПечати = Неопределено Тогда ПараметрыПечати = Новый Структура(); КонецЕсли; СписокМакетов = "ПФ_ОС13_ПринятиеКУчетуНМА"; УчетОСВызовСервера.ПолучитьСписокМакетовОС1(ОбъектыПечати); Если СписокМакетов <> "" Тогда пИдентификаторКоманды = "ПФ_ОС13_ПринятиеКУчетуНМА"; пИдентификаторОбработки = "СОГ_ОС13_ПринятиеКУчетуНМА"; ИсточникДанных = ПолучитьСсылкуНаВнешнююОбработкуПоИмениОбъектаНаСервере(пИдентификаторОбработки); //ДополнительныеОтчетыИОбработки Если ИсточникДанных = Неопределено Тогда ТекстСообщения = "Нет внешней обработки '"+пИдентификаторОбработки+"'"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); Закрыть(); Возврат; КонецЕсли; ПараметрыВывода = ПодготовитьСтруктуруПараметровВывода(); ПараметрыВывода.Вставить("НомерДоговора",Объект.НомерДоговора); ПараметрыВывода.Вставить("ДатаДоговора",Объект.ДатаДоговора); ПараметрыИсточника = Новый Структура; ПараметрыИсточника.Вставить("ИдентификаторКоманды", пИдентификаторКоманды); ПараметрыИсточника.Вставить("ОбъектыНазначения", ОбъектыПечати); ИмяМенеджераПечати = "ВнешняяОбработка."+пИдентификаторОбработки; ИменаМакетов = СписокМакетов; МассивОбъектов = ОбъектыПечати; //ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия = УправлениеПечатьюСлужебныйКлиент.ПараметрыОткрытияФормыПечати(); ПараметрыОткрытия.ИсточникДанных = ИсточникДанных; ПараметрыОткрытия.ПараметрыИсточника = ПараметрыИсточника; ПараметрыОткрытия.ПараметрыВывода = ПараметрыВывода; ПараметрыОткрытия.ИмяМенеджераПечати = ИмяМенеджераПечати; ПараметрыОткрытия.ИменаМакетов = ИменаМакетов; ПараметрыОткрытия.ПараметрКоманды = МассивОбъектов; ПараметрыОткрытия.ПараметрыПечати = ПараметрыПечати; ВладелецФормы = ЭтаФорма; Если ВладелецФормы = Неопределено Тогда ПараметрыОткрытия.УникальныйИдентификаторХранилища = Новый УникальныйИдентификатор; Иначе ПараметрыОткрытия.УникальныйИдентификаторХранилища = ВладелецФормы.УникальныйИдентификатор; КонецЕсли; СформированныеПечатныеФормы = УправлениеПечатьюВызовСервера.НачатьФормированиеПечатныхФорм(ПараметрыОткрытия); ПараметрыОткрытия.ВладелецФормы = ВладелецФормы; РезультатФоновойОперации = Новый Структура; РезультатФоновойОперации.Вставить("Статус", "Выполнено"); РезультатФоновойОперации.Вставить("КраткоеПредставлениеОшибки", ""); РезультатФоновойОперации.Вставить("ПодробноеПредставлениеОшибки", ""); РезультатФоновойОперации.Вставить("Сообщения", Новый ФиксированныйМассив(Новый Массив)); РезультатФоновойОперации.Вставить("АдресРезультата", ПоместитьВоВременноеХранилище(СформированныеПечатныеФормы, ПараметрыОткрытия.УникальныйИдентификаторХранилища)); //УправлениеПечатьюКлиент.ВыполнитьКомандуПечатиПослеФормированияПечатныхФорм(РезультатФоновойОперации, ПараметрыОткрытия); УправлениеПечатьюСлужебныйКлиент.ОткрытьФормуПечатьДокументов(РезультатФоновойОперации, ПараметрыОткрытия); КонецЕсли; Закрыть(); КонецПроцедуры |
|||
53
DrZombi
12.04.24
✎
13:11
|
+(52) Если чего это БП 3.0.150.29
|
|||
54
Адинэснег
12.04.24
✎
15:21
|
ТС, ну как у тебя, всё в порядке?
|
|||
55
NIGHTHUNTER
12.04.24
✎
17:11
|
(54) Че у меня все в порядке? Тему забанили!!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |