Внешний отчет и пользователи

Новая тема
Показывать по сообщений
"Добрый день.<br>Написал на досуге внешний отчет, а пользователи с правами "Бухгалтер" пользоваться им не могут - он открывается, но при нажатии кнопки "Сформировать" программа зависает, и выдает калейдоскоп ошибок:<br> <br>1. "Внутренняя ошибка SDBL, неожиданный конец чего-то там ResolvedField(1)";<br>2. Аварийное завершение работы, идет запись дампа;<br>3. Сжирает всю память, и просто вылетает...<br> <br>При этом у пользователя с полными правами всё отлично - и открывается, и формируется, и даже распечатать можно.<br> <br>Понимаю, что дело в правах. Отчет захватывает самодельный документ, для этого самодельного документа у роли "Бухгалтер" права выставлены полные.<br> <br>Как думаете, чего еще не хватает?"
Офигенный ты отчет написал на досуге. :)<br>Используются ли RLS? Проверял ли отладчиком на какой строке "все падает"?
"<pre>    Запрос = Новый Запрос;<br>    Запрос.Текст = <br>    "ВЫБРАТЬ<br>    |    РеестрНакладных.Оплачено,<br>    |    РеестрНакладныхНакладные.ДатаДок,<br>    |    РеестрНакладныхНакладные.СуммаДок,<br>    |    РеестрНакладныхНакладные.СуммаНДСДок,<br>    |    РеестрНакладныхНакладные.НазваниеДок,<br>    |    РеестрНакладныхНакладные.Документ.Номер,<br>    |    РеестрНакладныхНакладные.Документ.Дата,<br>    |    РеестрНакладныхНакладные.Документ.Ссылка,<br>    |    РеестрНакладныхНакладные.Документ.НомерВходящегоДокумента КАК НомерВходящегоДокумента,<br>    |    РеестрНакладныхНакладные.Контрагент,<br>    |    РеестрНакладных.Ссылка<br>    |ИЗ<br>    |    Документ.РеестрНакладных КАК РеестрНакладных<br>    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеестрНакладных.Накладные КАК РеестрНакладныхНакладные<br>    |        ПО РеестрНакладных.Накладные.Ссылка = РеестрНакладныхНакладные.Ссылка<br>    |ГДЕ<br>    |    РеестрНакладныхНакладные.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода";<br>    Если ЗначениеЗаполнено(Организация) Тогда<br>        Запрос.Текст = Запрос.Текст + "<br>        |    И РеестрНакладныхНакладные.Документ.Организация = &Организация";<br>    КонецЕсли;<br>    Если ЗначениеЗаполнено(Номер) Тогда<br>        Запрос.Текст = Запрос.Текст + "<br>        |    И РеестрНакладныхНакладные.Документ.НомерВходящегоДокумента = &Номер";<br>    КонецЕсли;<br>    Если ЗначениеЗаполнено(Поставщик) Тогда<br>        Запрос.Текст = Запрос.Текст + "<br>        |    И РеестрНакладныхНакладные.Контрагент = &Контрагент";<br>    КонецЕсли;<br>    <br>    Запрос.УстановитьПараметр("НачПериода", НачалоДня(НачПериода));<br>    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));<br>    Запрос.УстановитьПараметр("Номер", Номер);<br>    Запрос.УстановитьПараметр("Контрагент", Поставщик);<br>    Запрос.УстановитьПараметр("Организация", Организация);<br>    <br>    ТЗ = Запрос.Выполнить().Выгрузить();<br> </pre><br><br>вылетает на последней строчке. А что не так в запросе? И почему выполняется с полными правами? Пробовал вставить слово "РАЗРЕШЕННЫЕ", но оно в любом случае никакой рол тут не играет...<br>Моя в растерянности"
попробуй снять галку на ограничении по организации в константах если не ошибаюсь.
Даже если организация не выбрана - всё равно вылетает.<br>Именно из текста запроса растет проблема. Пока не могу сообразить, откуда...
Зачем<br>>        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеестрНакладных.Накладные КАК РеестрНакладныхНакладные<br>>        ПО РеестрНакладных.Накладные.Ссылка = РеестрНакладныхНакладные.Ссылка
ну, в любом случае это никакой роли не играет
Нехорошо получать через точку данные составного типа. Когда формируется итоговый запрос к вашему запросу добавляется левое соединение с каждым из типов входящих в "РеестрНакладныхНакладные.Документ", и к каждому добавляется запрос на RLS.<br>Если там точно известен тип документа, лучше использовать "Выразить".<br>Что-то типа<br> <br><pre> ВЫРАЗИТЬ(РеестрНакладныхНакладные.Документ КАК Документ.ТребованиеНакладная).Ссылка </pre><br><br> <br>и т.п.
В документации к 8.2 настоятельно рекомендуют использовать внешние отчеты и обработки для отладки, затем вводить их внутрь конфигурации, чтобы могли их запускать остальные пользователи...
Что значит не играет? Ты рекурсивно зациклил выборку данных. У тебя кол-во записей в выборке равно кол-ву записей в документе возведенному в степень кол-ва записей. Как еще сервер SQL не "положил" не понятно...<br>Что выбрать-то хотел сам понимаешь?
Читают тему
(гостей: 1)

Быстрый переход