Меню

1с проверитьвыводтабличногодокумента не работает

Зависает метод табдока ПроверитьВывод()

Добрый день! Столкнулся тут с проблемой — есть файловая бух 3.0.41.59 и платформа 8.3.6.2237. Есть пользователь с ограниченными правами, работают все в терминале. Клиент обратился с проблемой — что у этого пользователя виснет 1с при печати любой п.ф. Вначале решили проблему просто — создали нового пользователя, проставили теже роли что и были и вроде все стало ОК, но через 2 дня ситуация повторилась. От пользователя терминала ничего не меняется. Через отладку дошел до места
Функция ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, РезультатПриОшибке = Истина) Экспорт

Попытка
Возврат ТабДокумент.ПроверитьВывод(ВыводимыеОбласти);
Исключение
Вот на этом месте оно и зависает в переменной ВыводимыеОбласти — массив из 2х строк, 1С начинает есть память пока не съест всю и отваливается со словами про нехватку памяти. подскажите куда копать? если я правильно догадываюсь — она считает что область не помещается на страницу и видимо сует ее на следующий лист, но и там она не помещается? может какие-то настройки в пользовательском режиме могут такие последствия давать? Заранее спасибо!

Копать в сторону установленых (пробрасываемых, раз у нас терминальная сессия) принтеров.

На самом деле метод ПроверитьВывод имеет смысл использовать только в том случае если для формируемого табличного документа определен принтер и все его параметры страницы (ориентация, поля, колонтитулы).

Это не очевидно, отсюда и бытует мнение (1) среди 1сников.

Источник

ПроверитьВывод() непонятно как то работает

Подскажите безграмотному, где собака зарыта, пол дня уже бьюсь(

ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ЭкземпляровНаСтранице = 1;

Для каждого СтрокаКомиссия Из Док.ЧленыКомиссии Цикл

Если Не (ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей)) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
НомерСтраницы = НомерСтраницы + 1;
ОбластьНомерСтраницы.Параметры.НомерСтраницы = «Страница » + НомерСтраницы;
ТабличныйДокумент.Вывести(ОбластьНомерСтраницы);
МассивВыводимыхОбластей.Очистить();
МассивВыводимыхОбластей.Добавить(ОбластьНомерСтраницы);
КонецЕсли;

Если СтрокаКомиссия.НомерСтроки = 1 Тогда
ОбластьКомиссия.Параметры.СтрокаЧленыКомиссии = «Члены комиссии: «;
Иначе
ОбластьКомиссия.Параметры.СтрокаЧленыКомиссии = «»;
КонецЕсли;

ОбластьКомиссия.Параметры.ФИОЧленаКомиссии = СтрокаКомиссия.ФИО;
ОбластьКомиссия.Параметры.ДолжностьЧленаКомиссии = СтрокаКомиссия.Должность;
ТабличныйДокумент.Вывести(ОбластьКомиссия);
МассивВыводимыхОбластей.Добавить(ОбластьКомиссия);
КонецЦикла;

Есть такой вот код, вот не могу понять, почему у меня ПроверитьВывод срабатывает когда примерно заполнилось пол страниы

(6) без нее когда массив на страницу наполнится будет каждую строчку с новой страницы выводить

(5)(7) придется видимо ковыряться другим способом, попробую предложенным, спасибо

ПроверитьВывод не работает. однозначно. проверено на сферическом вакууме. вот как я его обошел (буквально вчера)

три табличных документа:
ТД
ТДКопия
ТДСтрока

в ТДСтрока формирую строку, которую можно переносить (она может состоять из нескольких строк)
В ТДКопия вывожу область из ТДСтрока, относящуюся к этой строке таблицы.
если число страниц в тдкопия больше, чем в тд, то делаю разрыв, после чего копирую ТД в ТДКопия (чтобы разрывы совпадали), а ТДСтрока очищаю.
не забудь предусмотреть, если строка у тебя последняя, так как надо в ТДСтрока сразу загнать и подвал отчета. если же у тебя еще есть страничный подвал таблицы, то его тоже надо будет загонять в ТДСтрока.

(12) ну, 200 страниц, это даааа.. придется мухлевать, тогда мой метод примени для первой страницы, а дальше проверяй этой долбанутой функцией

(13) эта хрень как раз первую страницу и портит.

(18) отпишусь тут как добил

а ты мне еще на 200 страниц предлагал))) если уже на 20 тормозит)))

Источник

АйТиБложик

Маленький IT блог с характером 1С.

Ошибка хитрого метода ПроверитьВывод() табличного документа

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Столкнулся с такой ошибкой, при выводе информации на печатную форму, платформа выдает следующее сообщение:
Ошибка при вызове метода контекста (ПроверитьВывод).

ПроверитьВывод() — это метод табличного документа, который проверяет, умещаются ли переданные табличные документы на страницу при печати. В примечании у этого метода разработчики платформы 1С сразу написали, что при возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.

Проверил установленные принтеры, все исправно и работает. Эмпирическим путем выяснил, что данная ошибка возникает только у конкретной печатной формы и только под одним пользователем.

Ошибка решилась следующими действиями (выполнять под пользователем, у которого возникла ошибка):
1) Создал пустой документ, что бы при формировании печатной формы не был задействован метод ПроверитьВывод(). Если же этот метод в любом случае вызывается, то придется его найти в конфигурации и закомментировать, или же поместить в конструкцию Попытка-Исключение-КонецПопытки.

1. Помещение ПроверитьВывод в попытку

2) Сформировал печатную форму.

3) Для текущей печатной формы открыл параметры страницы и установил правильные параметры.

3. Параметры страницы

Ошибка возникала из-за неправильных параметров страницы, которые платформа сохранила ранее при выводе на печать печатной формы, например: платформа сохранила в параметрах страницы принтер, который в дальнейшем удалили и установили новый. Параметры страницы печатной формы хранятся в свойстве табличного документа КлючПараметровПечати. Это свойство содержит ключ значения, в котором сохраняются параметры печати таблицы. Параметры печати, настроенные и сохраненные с данным ключом, впоследствии восстанавливаются при следующем показе таблицы.

Что бы данная ошибка не возникала из-за неправильных параметров страницы, свойство КлючПараметровПечати следует устанавливать не в начале процедуры вывода на печать, а в конце, так как при установке данного свойства параметры печати тут же восстанавливаются.

UPD 04/10/2015: Если устанавливать свойство КлючПараметровПечати в конце формирования табличного документа, то метод ПроверитьВывод будет использовать параметры печати установленные по-умолчанию, а не пользовательские. Что бы избежать данной ситуации, необходимо устанавливать свойство КлючПараметровСистемы в начале формирования табличного документа, а метод ПроверитьВывод поместить в конструкцию Попытка-Исключение-КонецПопытки.

Источник

Решение проблемы ПроверитьВывод() для огромных документов

Служба информационно-технического развития _ (SITR-utyos)

Каких результатов удалось достичь

Изначально, печатная форма, содержащая

200 страниц выводилась(речь идет об именно выводе в табличный документ) > 15 минут. В результате оптимизации удалось сократить время до 1-2 минут.

Последовательность действий:

  1. Объявляем ТабличныйДокумент как ранее, настраиваем его свойства(Масштаб, ориентация страницы, поля);
  2. Объявляем еще один табличный документ, назовем его ИтоговыйТабличныйДокумент, копируем в него все свойства ранее созданного;
  3. Выполняем вывод одной страницы в ТабличныйДокумент, проверяем, умещается ли он или нет с помощью метода ПроверитьВывод()
  4. Когда вывод не умещается на странице ТабличныйДокумент, то:
    1. Выполняем его вывод в ИтоговыйТабличныйДокумент методом Вывести(ТабличныйДокумент)
    2. Очищаем ТабличныйДокумент
    3. Выводим шапку(если требуется) в Табличный документ
  5. Пункты 3-4 повторяются в цикле, как и при обычном формировании печатных форм
  6. В конце формирования выводим подвал в ИтоговыйТабличныйДокумент

Как это выглядит в программе

Бонусом идет печатная форма для УПП 1.3, в которой присутствует этот кусок кода

Скачать файлы

Специальные предложения

На 8.3.11 не проверяли? Там что-то оптимизировали на эту тему:

Что-то подобное в расчетном листке организации ЗУП 2.5 используется.

(11) да не область на 300 страниц. А сам табличный документ на 300 страниц.

Автор предлагает не вызывать ПроверитьВывод() для большого документа на 300 страниц, а вызывать эту функцию только для малого табличного документа, который равен последней странице большого.

Ускорение происходит не за счет того, что уменьшается количество вызовов функции ПроверитьВывод(), а за счет того, что каждый вызов занимает в разы меньше времени.

Обновление 06.11.17 16:44

См. также

Безопасная работа с транзакциями во встроенном языке Промо

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку «В данной транзакции уже происходили ошибки». Учимся защищаться от них.

25.03.2019 45288 tormozit 58

Пример создания документа с движениями в ERP 2.5.7

Пример создания документа с движениями в ERP 2.5.7, а также включение документа в основные подсистемы, а именно по управлению доступом, датам запрета изменения, контролю остатков, использованию характеристик и серий и прочее.

10.08.2021 1907 maraty 10

Работа с абстрактным массивом

Абстрактные типы данных и алгоритмы уверенно набирают популярность в языках общего назначения. Встроенный язык 1С является предметно-ориентированным и не спешит развиваться в сторону поддержки абстракций. Однако потребность в них существует, т.к. задачи, решаемые на платформе, не уступают разнообразию из других ЯП. Предлагаю рассмотреть вариант реализации абстрактного массива в 1С.

07.07.2021 3687 kalyaka 56

Семеро одного не ждут? Асинхронное исследование асинхронности

Все уже, наверное, знают о появлении в новых версиях платформы асинхронных функций и конструкций Асинх/Ждать. Многие, возможно, уже их используют. Но что будет, если создать свои асинхронные функции, запустить и не дожидаться окончания их выполнения? Неужели можно запустить несколько процессов параллельно?

08.06.2021 5369 Alxby 45

Как выполнить отчет на СКД через COM и получить данные отчета? Промо

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, «скопипастить» текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его «немного модифицированная» копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

08.05.2018 31899 wowik 3

Связи параметров выбора номенклатуры и характеристики в 1С 8.3

Из этой статьи вы узнаете, как, используя системы стандартов и методик разработки 1С, правильно настроить связи параметров выбора номенклатуры и характеристики в новой табличной части.

22.02.2021 1348 plotnikov1c 2

Динамическая расшифровка СКД (на примере отчета)

Предлагаю Вашему неподкупному вниманию вариант более-менее унифицированной реализации динамически формирующейся расшифровки СКД на примере простейшего отчета для конфигурации УТ 11.

08.12.2020 1536 mr_sav 2

СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках

Довольно часто на различных тематических форумах задается вопрос, можно ли использовать в отчете/обработке несколько схем компоновки данных, подменяя одну другой по мере надобности? При этом желательно, чтобы и пользовательские настройки при смене схемы менялись соответственно.

07.12.2020 5049 user1502278 18

Как нарисовать граф на 1С Промо

Описывается реализация на языке запросов 1С метода расположения вершин графа на плоскости, основанного на использовании электромеханической аналогии. При этом вершины графа представляются одноименными электрическими зарядами, дуги — пружинками. Силы взаимодействия вершин в этой системе переводят их из случайного начального в нужное конечное положение. Приведена обработка рисования графов «ГрафОграф», реализующая данный подход, показывающая также динамику процесса. Граф можно задать списком ребер вручную, выбрать из нескольких предопределенных примеров или сформировать по данным информационной базы.

09.08.2013 73463 ildarovich 117

Cбор и анализ ошибок при помощи Sentry, или как упростить жизнь себе и пользователям

Цель данной статьи — сделать процесс сбора и анализа ошибок, происходящих в базе, максимально простым, быстрым и удобным, собирать статистику по ошибкам, местам их возникновения и частоте их появления, а также в деталях разобрать все тонкости по интеграции 1С с Sentry.

09.10.2020 7293 hexhoc 12

Программная корректировка при выводе отчета СКД

Большинство отчетов на СКД, требующих программной корректировки, реализуются с помощью программной настройки СКД или обработки табличного документа уже после вывода отчета. Но во многих случаях более оптимально будет выполнять программную корректировку в процессе вывода отчета. Для этого существуют программные объекты, о которых я расскажу в данной статье.

08.10.2020 10699 dabu-dabu 16

Загрузка, скачивание, удаление файлов с помощью НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера()

В платформе 8.3.15 появились новые методы НачатьПомещениеФайлаНаСервер() и НачатьПолучениеФайлаССервера(). В данной статье рассмотрено готовое решение проверенное и прекрасно работающее на тонком и веб-клиенте.

25.07.2020 11529 Flashill 15

Простой способ индексирования интервалов Промо

Предлагается простой способ индексирования интервалов для решения задач выборки записей, включающих заданный момент времени, пересекающихся с заданным интервалом или множеством интервалов. Способ основан на добавлении к исходной таблице особого числового индексированного поля, рассчитываемого по специальной формуле. Приведен код функций, необходимых для расчетов поля поиска и параметров поисковых запросов. Приведены также результаты тестирования метода, доказывающие его высокую эффективность.

28.09.2016 41987 ildarovich 22

Универсальная печатная форма Приказа/Договора с возможностью настройки макета в пользовательском режиме

В данной статье я опишу реализацию универсальной (в кавычках) печати Приказа (Договора или чего пожелаете) с возможностью настройки выводимого текста с параметрами из пользовательского режима. Обработка для скачивания написана для доработанной конфигурации клиента ЗУП версии 3.1.13.120. Перед внедрением в свою конфигурацию ее необходимо будет дорабатывать.

24.06.2020 2418 BuriyLesha 3

Методика обновления формы объекта данных при изменении объекта

В формах объектов данных часто встречаются элементы, косвенно связанные с объектом. Логику обновления этих элементов при изменении объекта обычно вызывают из обработчиков ПриСозданнииНаСервере и ПриОткрытии, забывая про наличие других способов изменения объекта. В статье предложена методика для обычных и управляемых форм, учитывающая все способы.

09.03.2020 20071 tormozit 16

Отправка уведомлений с помощью командной строки, Оповещения с сервера на клиент с помощью командной строки

Отправка уведомлений с помощью команды командной строки msg. Оповестить пользователей из серверного модуля или регламентного задания, с помощью командной строки msg.

05.03.2020 8063 user5300 3

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов Промо

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

01.02.2018 38268 rpgshnik 54

Вывод сообщений в HTML поле средствами 1С

Пример использования вывода большого количества сообщений в поле HTML. С возможностью открывать ссылочные объекты и создавать новые объекты передавая параметры прямо из HTML поля. Протестировано на релизах 8.3.12 и 8.3.15+

31.01.2020 10578 burni4 16

Краткое руководство по внесению изменений в конфигурацию

Кратко описаны основополагающие моменты при старте групповой разработки конфигурации несколькими программистами. Полезно для проектной документации как требование к разработчикам или сопровождающей компании.

13.01.2020 22641 sapervodichka 41

Универсальные функции: разложение произвольной строки адреса в структуру

Процедуры и функции раскладывают произвольную строку адрес в структуру по ключевым словам.

30.12.2019 5893 vik070777 10

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному Промо

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

10.05.2018 54002 dsdred 46

«Живые» картинки со Snap.SVG

В статье рассмотрен пример использования http-сервисов для визуализации данных

24.10.2019 15110 blackhole321 7

RLS — дубли условий в запросах к СУБД

«Подводные камни», возникающие при бездумном копировании ролей с ограничениями RLS, как это отражается на производительности, разбор примера и инструмент для анализа.

07.10.2019 10030 geron4 4

Полное копирование одной формы в другую

Однажды я столкнулся с необходимостью открыть форму ЛЮБОГО документа с определенными изменениями, не зависящими от структуры объекта (например, заблокировать все кнопки). В интернете решения я не нашел. Обычно на форумах на запросы подобного рода отвечают чем-то вроде «покажи первоначальную задачу, а не спрашивай как реализовать то, что ты придумал». Тем не менее, мне стало интересно, как это можно сделать.

03.10.2019 7942 nekit_rdx 25

Некоторая работа с данными через COM Промо

В статье приведены примеры работы с Платформой 8.X через COM (точнее, через объект COMConnector). Примеры кода были использованы при реализации прикладных задач в процессе трудовой деятельности.

05.12.2012 59939 wowik 32

Многопоточная обработка данных на примере перепроведения документов

Дальнейшее развитие темы фоновой обработки данных — проведение документов в потоках. Настройка параметров и запуск основного процесса (менеджера потоков). Разбивка документов для проведения на не связанные друг с другом наборы и запуск дополнительных фоновых заданий для отдельных потоков. Отслеживание выполнения каждого потока в родительском сеансе.

17.09.2019 12751 ids79 46

Отображение истории выполнения по всем задачам комплексного процесса в документообороте

Коллеги, предлагаю вашему вниманию доработку для вывода полной истории в задачах комплексного процесса.

15.09.2019 8758 pavelpribytkin96 8

Описание формата внутреннего представления данных 1С в контексте обмена данными

Фирма 1С не рекомендует использовать внутреннее представление данных для любых целей, которые отличны от обмена с 1С:Предприятием 7.7. Но сама возможность заглянуть на «внутреннюю кухню» платформы с помощью функций ЗначениеВСтрокуВнутр(), ЗначениеВФайл(), ЗначениеИзСтрокиВнутр() и ЗначениеИзФайла(), дала возможность сообществу программистов 1С разработать новые приемы разработки и анализа. Так, именно на использовании внутреннего представления был построен алгоритм «быстрого массива», который позволяет практически мгновенно создать массив в памяти на основании строки с разделителями. С помощью разбора внутреннего представления можно «на лету» программным кодом выполнить анализ обычной формы и даже сделать редактор графической схемы. Во внутреннем формате сохраняют свои данные между сеансами различные популярные внешние обработки. А еще это возможность сделать быстрый обмен с внешними системами.

06.09.2019 21737 Dementor 31

Работа со схемой запроса Промо

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, — лучше воспользоваться объектной моделью запроса и использовать объект «Схема запроса». В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом «Схема запроса».

Источник

Настройка и ремонт техники © 2021
Внимание! Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению.

Adblock
detector
Наименование Файл Версия Размер