![]() |
|
Несколько табличных документов, как показать на клиенте? | ☑ | ||
---|---|---|---|---|
0
Death_eye
17.10.25
✎
09:08
|
Помогите, пожалуйста, с алгоритмом. Есть договор, в нем 20 предприятий. Нужно сформировать по каждому табличный документ с оказанными услугами и показать все пользователю.
В обычных формах ТабДокумент.Показать() работало. В УФ работает только на клиенте. Заранее не известно по какому предприятию данные есть. Т.е. если в запросе выбрались данные только по 3м предприятиям, то сформировать только 3 табличных документа. |
|||
1
СвинТуз
17.10.25
✎
09:11
|
"ТабДокумент.Показать()"
уже не кошерно. Формируйте на сервере, возвращайте на клиент массив табличных документов. |
|||
2
maxab72
17.10.25
✎
09:13
|
варианты:
1. сформировать все в одном табличном документе с разбивкой по страницам. 2. програмно сформировать на форме "закладки" по каждому предприятию и на них вывести табличные документы по соответствующим предприятиям. |
|||
3
Мультук
гуру
17.10.25
✎
09:13
|
(0)
БСП не предлагать, верно ? &НаСервере Функция СформироватьПулТабДокументов() мас = Новый массив; // мас.Добавить(Табдок); Возврат мас; КонецФункции &НаКлиенте Процедура ПоказатьПулТабДокументов() мас = СформироватьПулТабДокументов(); Для каждого табДок из мас Цикл табДок.Показать(); конецЦикла; КонецПроцедуры P.S. TO "Маленький вопросик" Снова 15 лет. Походу где-то что-то как-то произошло. |
|||
4
Ёпрст
гуру
17.10.25
✎
09:18
|
(3) просто кто-то открывает для себя волшебный мир "неуправляемых форм".
|
|||
5
DiMel_77
17.10.25
✎
09:59
|
(3) А для БСП будет что то типа такого:
&НаСервере Функция СформироватьПулТабДокументов() мас = Новый массив; // СтруктураПечатнойФормы = Новый Структура("ИдентификаторПечатнойФормы, СинонимМакета, ТабличныйДокумент); СтруктураПечатнойФормы.Вставить("ИдентификаторПечатнойФормы", ...); // Любая строка идентифицирующая форму СтруктураПечатнойФормы.Вставить("СинонимМакета", ...); // Текстовое представление СтруктураПечатнойФормы.Вставить("ТабличныйДокумент", ТабДок); мас.Добавить(СтруктураПечатнойФормы); Возврат мас; КонецФункции &НаКлиенте Процедура ПоказатьПулТабДокументов() мас = СформироватьПулТабДокументов(); КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(); Поля = УправлениеПечатьюКлиентСервер.ИменаПолейКоллекцииПечатныхФорм(); Для каждого СтрТабДок из мас Цикл ПечатнаяФорма = Новый Структура(СтрСоединить(Поля, ",")); ПечатнаяФорма.СинонимМакета = СтрТабДок.СинонимМакета; ПечатнаяФорма.ИмяФайлаПечатнойФормы = ПечатнаяФорма.СинонимМакета; ПечатнаяФорма.ТабличныйДокумент = СтрТабДок.ТабличныйДокумент; КоллекцияПечатныхФорм.Добавить(ПечатнаяФорма); конецЦикла; ДополнительныеПараметры = УправлениеПечатьюКлиент.ПараметрыПечати(); ДополнительныеПараметры.ЗаголовокФормы = Заголовок; ДополнительныеПараметры.ВладелецФормы = ЭтотОбъект; УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, , ДополнительныеПараметры); КонецПроцедуры |
|||
6
Маленький Вопросик
17.10.25
✎
09:55
|
(3) прям аж глаз «режет» от этих «специалистов»… видно боятся попасть под сокращение
|
|||
7
Death_eye
17.10.25
✎
09:47
|
(5) спасибо
|
|||
8
DiMel_77
17.10.25
✎
09:55
|
(7) Поправил код - так должно работать.
|
|||
9
Garykom
гуру
17.10.25
✎
09:56
|
(7) Какой смысл говорить спасибо за по сути нерабочий (в твоем конкретном случае) код?
Это просто пример, который совсем не обязателен Ибо хз какая у тебя конфа, есть ли там БСП и какой версии Лучше подучи теорию Разберись что такое клиент и сервер Не вижу ничего сложного с клиента сделать один или нужное число вызовов сервера, сформировать нужные ТабДок и вернуть их на клиента в реквизиты формы например Можно как СписокЗначений из ТабличныйДокумент или еще как, да хоть во временное хранилище А затем отображать их как надо пользователю аля (2) |
|||
10
Маленький Вопросик
17.10.25
✎
10:26
|
(5) какая-то невообразимая бессмыслица
|
|||
11
Garykom
гуру
17.10.25
✎
10:29
|
(10) Не мешай ботам общаться друг с другом ))
|
|||
12
Маленький Вопросик
17.10.25
✎
10:30
|
(0) https://infostart.ru/1c/reports/2315077/ - вот это «в цикле запусти»
|
|||
13
DiMel_77
17.10.25
✎
10:30
|
(10) Ну ка интересно а в чем бессмыслица? Поясните?
|
|||
14
Garykom
гуру
17.10.25
✎
10:31
|
(13) Сложить несколько ТабДок в один можно и без БСП
|
|||
15
DiMel_77
17.10.25
✎
10:33
|
(14) В БСП есть уже готовый механизм для вывода пакета документов. Зачем писать велосипеды?
|
|||
16
Garykom
гуру
17.10.25
✎
10:34
|
(14)+ Так можно дойти что вместо
А = 2 + 2; Будут писать М = Новый Массив; М.Добавить(2); М.Добавить(2); А = ОбщийМодульВычисления.Сложить(МассивСлагаемых); |
|||
17
Garykom
гуру
17.10.25
✎
10:37
|
(15) 1. Понимание алгоритмов и работы на низком уровне
2. Надежность и независимость от версий БСП 3. Тупо быстрей работает без БСП? Есть смысл применять БСП когда оно оправдано Например для ускорения разработки или "в одном стиле" Но понимая что это засады в будущем на переписывание, в случае обновлений типовых/БСП |
|||
18
DiMel_77
17.10.25
✎
10:37
|
(16) Хороший стиль подразумевает использование существующих библиотек в работе. Почему вы допустим не пишете "Сообщение = Новый СообщениеПользователю();", а используете "ОбщегоНазначения.СообщитьПользователю", а в случае пакетных документов не используете подсистему "УправлениеПечатью"?
|
|||
19
Garykom
гуру
17.10.25
✎
10:40
|
(18) Так и я о чем
Если я дорабатываю конфу то использую ОбщегоНазначения.СообщитьПользователю Если же пишу временную внешнюю обработку или печатную форму - нахрена так заморачиваться? Достаточно просто Сообщить() Оно же тупо не заработает в другой конфе без ОбщегоНазначения (а таких дофига и более отраслевых) |
|||
20
DiMel_77
17.10.25
✎
14:06
|
(19) Я слабо представляю, как может быть универсальная печатная форма (за исключением вывода каких-нибудь технических вещей, типа движений). Обычно всегда внешняя обработка или отчет пишется под конкретную конфигурацию. А использование программного интерфейса подсистем БСП зачастую избавляет от ошибок. У нас во внутренних стандартах разработки это прописано жёстко.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |