Ошибка при вызове метода контекста записать вывод запрещен

Ошибка при вызове метода контекста (Записать): Вывод запрещен ☑ 0

Ivan Bezdomnyi

16.01.18

07:06

Пользовался и поиском и гуглом, ответа на свой вопрос не нашел.

1С:Предприятие 8.1 (8.1.11.67). Регламентное задание.

Код упростил до:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Записать(«E:\Temp\Site\1.xls», ТипФайлаТабличногоДокумента.XLS);

При выполнении возникает ошибка: Ошибка при вызове метода контекста (Записать): Вывод запрещен

Варианты которые нашел:

1. Проверить права пользователя, под которым выполняются регламентные задания.

Все права проверил — не помогает.

2. Написать ТабДок.Вывод = ИспользованиеВывода.Разрешить;

Наипсал, ошибка пропала, но файл не создается. Хотя при запуске вручную от себя и при запуске вручную от имени этого пользователя — файл создается.

В чем может быть причина?

1

mehfk

16.01.18

07:09

Традиционно — ищешь файл не в том месте.

2

shadow_sw

16.01.18

07:10

пользователь не имеет права(win)

3

Ivan Bezdomnyi

16.01.18

07:16

(1) Но ведь когда я логинюсь на сервер под тем пользователем, от которого запущена служба Агент сервера 1С (USR1CV81), и в 1С под пользователем который указан в регламентном задании — файл создается в том месте.

(2) проверил права и пользователя win (USR1CV81) и пользователя 1С, под которым выполняется регламентное задание

4

shadow_sw

16.01.18

07:21

(3) место поменять? КаталогВременныхФайлов(),  к примеру

5

Мимохожий Однако

16.01.18

07:33

Попробуй получить имя временного файла и сохранить. Второй вариант — на рабочий стол. Определись под каким пользователем отрабатывается код в файловой и клиент-серверной может быть разница.

6

Ivan Bezdomnyi

16.01.18

07:57

Написал следующим образом:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Вывод = ИспользованиеВывода.Разрешить;

ИмяФайла = КаталогВременныхФайлов()+»1.xls»;

ЗаписьЖурналаРегистрации(«Выгрузка цен на сайт», УровеньЖурналаРегистрации.Ошибка, , , ИмяФайла);

ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);

В журнале регистрации имя файла:

C:\Users\USR1CV81\AppData\Local\Temp\1.xls

На деле — ошибок нет, файла по этому пути тоже нет.

7

mehfk

16.01.18

07:58

Как определил, что ошибок нет?

8

0xFFFFFF

16.01.18

08:00

А вручную запускаешь на том же сервере, где служба 1С крутится?

9

Ivan Bezdomnyi

16.01.18

08:03

(7) по журналу регистрации и по консоли заданий

(8) да

10

mehfk

16.01.18

08:05

(9) Ты видишь в ЖР успешное завершение фонового задания?

11

Ivan Bezdomnyi

16.01.18

08:06

(10) да, сразу после моего записанного сообщения с именем файла — Фоновое задание. Успешное завершение

12

mehfk

16.01.18

08:15

(11) Добавь

ФайлXLS = Новый Файл(ИмяФайла);

ЗаписьЖурналаРегистрации(«ВыполнениеРегламентныхЗаданий»,,,,»Файл » + ИмяФайла + » существует = » + ФайлXLS.Существует());

13

Мимохожий Однако

16.01.18

09:06

У пользователя USR1CV81  нет прав на запись

14

Михаил Козлов

16.01.18

09:21

Может имя файла должно быть «серверным»?

15

Сияющий в темноте

16.01.18

10:31

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

1

2

Показывать по
10
20
40
сообщений

Новая тема

Ответить

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

«Почему не выполняется следующий код при записи текстового документа в .txt файл на диск при выполнении фонового задания.<br>Код в модуле:<br>Процедура ЗаписатьТекстСообщений(ИмяФайла, Отказ=0)<br> …<br> Попытка<br>       ПолныйТекстСообщений.Записать(Строка(Файл.ПолноеИмя), КодировкаТекста.UTF8);<br> Исключение<br>       ВывестиСообщение(ОписаниеОшибки(),,2);<br> КонецПопытки;<br> …<br>КонецПроцедуры<br><br>ПолныйТекстСообщений = Новый ТекстовыйДокумент;<br><br>Данная процедура выполняется после передачи или приема файлов обмена. Ошибка выдается в в журнале регистрации следующая:<br>Ошбка при вызове метода контекста (Записать): Вывод Запрещен.»

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Все же написано в тексте ошибки. Проверьте права пользователя, от имени которого выполняеете обмен.

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

> Все же написано в тексте ошибки. Проверьте права пользователя, от имени которого выполняеете обмен.<br><br>Причем тут права пользователя? Обмен данными происходит в автоматическом режиме с использованием регламентного задания, обработки и плана обмена. В общем модуле и модулях плана обмена и обработки нет процедур и функций требующих для выполнения права администратора.<br>Согласно Описания языка 1С Предприятия 8.1 функция ТекстовыйДокумент.Записать (ПолноеИмяФайла,Кодировка) должна выполнятся во всех режимах, но она не выполняется именно при фоновом обмене(автообмене через планировщика) и выдается сообщение Вывод запрещен, при ручном обмене выполняется без проблем.<br>

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

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

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

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

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

Еще раз говорю вам, что фоновые задания выполняются от имени какого-либо пользователя, если же пользователь явно не указан, выполняются от имени любого пользователя, в роли которого стоит галочка «Административные функции».. а вот стоит ли там галочка «Вывод», это еще вопрос… :)

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

Хорошо, ты меня добил. Эта встроенная функция ТекстовыйДокумент.Записать(ПолноеИмяФайла, Кодировка) не выполняется под администратором и ролью ПолныеПрава и галочки все стоят на всех модулях,обменах, процедурах, отчетах, обработках, регистрах,параметрах и т.д. и т.п., при выполнении фонового задания т.е. на сервере, а на клиенте выполняется не зависимо от ролей. Что теперь еще скажешь?!

Prikum

активный пользователь

офлайн

Дата регистрации: 18.02.2002
Сообщений: 20928

Ну если ты такой умный, что же лезешь с вопросами?

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

Скажу что согласен с предыдущим постом.. :) По-крайней мере, мне отсюда не видно, что у тебя там стоит…

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

> Ну если ты такой умный, что же лезешь с вопросами?<br><br>Я понял, что решение по данной проблеме вы не знаете. Это однозначно упущение разработчиков 1С 8.1 и будет исправлено.<br>А грубить не надо. Программа 1С с самого начала как имела подобные проблемы, так до сих пор их имеет и надо признавать свои ошибки и помогать в их решении.<br>Мне уже это не нужно, я эту проблему обошел и все сохраняется, но вопрос остался не разрешимым для других программистов в том числе и ваших сторонних сертифицированных разработчиков.

Читают тему:

Студворк — интернет-сервис помощи студентам

В 1Сv8.2Управление Предприятием Создал пользователя «кладовщик» с соответствующей ролью «кладовщик» и интерфейсом «кладовщик». По должностным обязанностям требуется создавать Требования-накладные и Лимитно-заборные карты( без права Проводки обоих ), а так же разпечатывать эти документы. Возникло две ошибки: одна при открытии (Ошибка при вызове метода контекста(Записать):Вывод запрещен ) Нажимаю ОК и она закрывается. И вторая ошибка при печати документа (Ошибка при вызове метода контекста(Напечатать):Вывод запрещен) Причем печатная форма документа показывается нормально, а ошибка возникает при отправке документа на принтер. Просмотрел все права роли а так же дополнительные права — разрешил все что так или иначе связано с печатью, но проблема не решилась. Пользователь с ролью «Полные права» и полными доп.правами нормально всё разпечатывает и не имеет сообщения об ошибке при входе . Где еще можно искать решение данной проблемы?

Добавлено через 1 час 12 минут
нашел сам (добавил право Вывод для роли Кладовщик), Спасибо себе

Ошибка при вызове метода контекста (Записать): Вывод запрещен

Я

  

Ivan Bezdomnyi

16.01.18 — 07:06

Пользовался и поиском и гуглом, ответа на свой вопрос не нашел.

1С:Предприятие 8.1 (8.1.11.67). Регламентное задание.

Код упростил до:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Записать(«E:TempSite1.xls», ТипФайлаТабличногоДокумента.XLS);

При выполнении возникает ошибка: Ошибка при вызове метода контекста (Записать): Вывод запрещен

Варианты которые нашел:

1. Проверить права пользователя, под которым выполняются регламентные задания.

Все права проверил — не помогает.

2. Написать ТабДок.Вывод = ИспользованиеВывода.Разрешить;

Наипсал, ошибка пропала, но файл не создается. Хотя при запуске вручную от себя и при запуске вручную от имени этого пользователя — файл создается.

В чем может быть причина?

  

mehfk

1 — 16.01.18 — 07:09

Традиционно — ищешь файл не в том месте.

  

shadow_sw

2 — 16.01.18 — 07:10

пользователь не имеет права(win)

  

Ivan Bezdomnyi

3 — 16.01.18 — 07:16

(1) Но ведь когда я логинюсь на сервер под тем пользователем, от которого запущена служба Агент сервера 1С (USR1CV81), и в 1С под пользователем который указан в регламентном задании — файл создается в том месте.

(2) проверил права и пользователя win (USR1CV81) и пользователя 1С, под которым выполняется регламентное задание

  

shadow_sw

4 — 16.01.18 — 07:21

(3) место поменять? КаталогВременныхФайлов(),  к примеру

  

МимохожийОднако

5 — 16.01.18 — 07:33

Попробуй получить имя временного файла и сохранить. Второй вариант — на рабочий стол. Определись под каким пользователем отрабатывается код в файловой и клиент-серверной может быть разница.

  

Ivan Bezdomnyi

6 — 16.01.18 — 07:57

Написал следующим образом:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Вывод = ИспользованиеВывода.Разрешить;

ИмяФайла = КаталогВременныхФайлов()+»1.xls»;

ЗаписьЖурналаРегистрации(«Выгрузка цен на сайт», УровеньЖурналаРегистрации.Ошибка, , , ИмяФайла);

ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);

В журнале регистрации имя файла:

C:UsersUSR1CV81AppDataLocalTemp1.xls

На деле — ошибок нет, файла по этому пути тоже нет.

  

mehfk

7 — 16.01.18 — 07:58

Как определил, что ошибок нет?

  

0xFFFFFF

8 — 16.01.18 — 08:00

А вручную запускаешь на том же сервере, где служба 1С крутится?

  

Ivan Bezdomnyi

9 — 16.01.18 — 08:03

(7) по журналу регистрации и по консоли заданий

(8) да

  

mehfk

10 — 16.01.18 — 08:05

(9) Ты видишь в ЖР успешное завершение фонового задания?

  

Ivan Bezdomnyi

11 — 16.01.18 — 08:06

(10) да, сразу после моего записанного сообщения с именем файла — Фоновое задание. Успешное завершение

  

mehfk

12 — 16.01.18 — 08:15

(11) Добавь

ФайлXLS = Новый Файл(ИмяФайла);

ЗаписьЖурналаРегистрации(«ВыполнениеРегламентныхЗаданий»,,,,»Файл » + ИмяФайла + » существует = » + ФайлXLS.Существует());

  

МимохожийОднако

13 — 16.01.18 — 09:06

У пользователя USR1CV81  нет прав на запись

  

Михаил Козлов

14 — 16.01.18 — 09:21

Может имя файла должно быть «серверным»?

  

Сияющий в темноте

15 — 16.01.18 — 10:31

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

1

2

Показывать по
10
20
40
сообщений

Новая тема

Ответить

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

«Почему не выполняется следующий код при записи текстового документа в .txt файл на диск при выполнении фонового задания.<br>Код в модуле:<br>Процедура ЗаписатьТекстСообщений(ИмяФайла, Отказ=0)<br> …<br> Попытка<br>       ПолныйТекстСообщений.Записать(Строка(Файл.ПолноеИмя), КодировкаТекста.UTF8);<br> Исключение<br>       ВывестиСообщение(ОписаниеОшибки(),,2);<br> КонецПопытки;<br> …<br>КонецПроцедуры<br><br>ПолныйТекстСообщений = Новый ТекстовыйДокумент;<br><br>Данная процедура выполняется после передачи или приема файлов обмена. Ошибка выдается в в журнале регистрации следующая:<br>Ошбка при вызове метода контекста (Записать): Вывод Запрещен.»

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Все же написано в тексте ошибки. Проверьте права пользователя, от имени которого выполняеете обмен.

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

> Все же написано в тексте ошибки. Проверьте права пользователя, от имени которого выполняеете обмен.<br><br>Причем тут права пользователя? Обмен данными происходит в автоматическом режиме с использованием регламентного задания, обработки и плана обмена. В общем модуле и модулях плана обмена и обработки нет процедур и функций требующих для выполнения права администратора.<br>Согласно Описания языка 1С Предприятия 8.1 функция ТекстовыйДокумент.Записать (ПолноеИмяФайла,Кодировка) должна выполнятся во всех режимах, но она не выполняется именно при фоновом обмене(автообмене через планировщика) и выдается сообщение Вывод запрещен, при ручном обмене выполняется без проблем.<br>

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

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

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

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

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

Еще раз говорю вам, что фоновые задания выполняются от имени какого-либо пользователя, если же пользователь явно не указан, выполняются от имени любого пользователя, в роли которого стоит галочка «Административные функции».. а вот стоит ли там галочка «Вывод», это еще вопрос… :)

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

Хорошо, ты меня добил. Эта встроенная функция ТекстовыйДокумент.Записать(ПолноеИмяФайла, Кодировка) не выполняется под администратором и ролью ПолныеПрава и галочки все стоят на всех модулях,обменах, процедурах, отчетах, обработках, регистрах,параметрах и т.д. и т.п., при выполнении фонового задания т.е. на сервере, а на клиенте выполняется не зависимо от ролей. Что теперь еще скажешь?!

Prikum

активный пользователь

офлайн

Дата регистрации: 18.02.2002
Сообщений: 20878

Ну если ты такой умный, что же лезешь с вопросами?

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

Скажу что согласен с предыдущим постом.. :) По-крайней мере, мне отсюда не видно, что у тебя там стоит…

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

> Ну если ты такой умный, что же лезешь с вопросами?<br><br>Я понял, что решение по данной проблеме вы не знаете. Это однозначно упущение разработчиков 1С 8.1 и будет исправлено.<br>А грубить не надо. Программа 1С с самого начала как имела подобные проблемы, так до сих пор их имеет и надо признавать свои ошибки и помогать в их решении.<br>Мне уже это не нужно, я эту проблему обошел и все сохраняется, но вопрос остался не разрешимым для других программистов в том числе и ваших сторонних сертифицированных разработчиков.

Читают тему:

Студворк — интернет-сервис помощи студентам

В 1Сv8.2Управление Предприятием Создал пользователя «кладовщик» с соответствующей ролью «кладовщик» и интерфейсом «кладовщик». По должностным обязанностям требуется создавать Требования-накладные и Лимитно-заборные карты( без права Проводки обоих ), а так же разпечатывать эти документы. Возникло две ошибки: одна при открытии (Ошибка при вызове метода контекста(Записать):Вывод запрещен ) Нажимаю ОК и она закрывается. И вторая ошибка при печати документа (Ошибка при вызове метода контекста(Напечатать):Вывод запрещен) Причем печатная форма документа показывается нормально, а ошибка возникает при отправке документа на принтер. Просмотрел все права роли а так же дополнительные права — разрешил все что так или иначе связано с печатью, но проблема не решилась. Пользователь с ролью «Полные права» и полными доп.правами нормально всё разпечатывает и не имеет сообщения об ошибке при входе . Где еще можно искать решение данной проблемы?

Добавлено через 1 час 12 минут
нашел сам (добавил право Вывод для роли Кладовщик), Спасибо себе

Ошибка при вызове метода контекста (Записать): Вывод запрещен

Я

Ivan Bezdomnyi

16.01.18 — 07:06

Пользовался и поиском и гуглом, ответа на свой вопрос не нашел.

1С:Предприятие 8.1 (8.1.11.67). Регламентное задание.

Код упростил до:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Записать(«E:TempSite1.xls», ТипФайлаТабличногоДокумента.XLS);

При выполнении возникает ошибка: Ошибка при вызове метода контекста (Записать): Вывод запрещен

Варианты которые нашел:

1. Проверить права пользователя, под которым выполняются регламентные задания.

Все права проверил — не помогает.

2. Написать ТабДок.Вывод = ИспользованиеВывода.Разрешить;

Наипсал, ошибка пропала, но файл не создается. Хотя при запуске вручную от себя и при запуске вручную от имени этого пользователя — файл создается.

В чем может быть причина?

mehfk

1 — 16.01.18 — 07:09

Традиционно — ищешь файл не в том месте.

shadow_sw

2 — 16.01.18 — 07:10

пользователь не имеет права(win)

Ivan Bezdomnyi

3 — 16.01.18 — 07:16

(1) Но ведь когда я логинюсь на сервер под тем пользователем, от которого запущена служба Агент сервера 1С (USR1CV81), и в 1С под пользователем который указан в регламентном задании — файл создается в том месте.

(2) проверил права и пользователя win (USR1CV81) и пользователя 1С, под которым выполняется регламентное задание

shadow_sw

4 — 16.01.18 — 07:21

(3) место поменять? КаталогВременныхФайлов(),  к примеру

МимохожийОднако

5 — 16.01.18 — 07:33

Попробуй получить имя временного файла и сохранить. Второй вариант — на рабочий стол. Определись под каким пользователем отрабатывается код в файловой и клиент-серверной может быть разница.

Ivan Bezdomnyi

6 — 16.01.18 — 07:57

Написал следующим образом:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Вывод = ИспользованиеВывода.Разрешить;

ИмяФайла = КаталогВременныхФайлов()+»1.xls»;

ЗаписьЖурналаРегистрации(«Выгрузка цен на сайт», УровеньЖурналаРегистрации.Ошибка, , , ИмяФайла);

ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLS);

В журнале регистрации имя файла:

C:UsersUSR1CV81AppDataLocalTemp1.xls

На деле — ошибок нет, файла по этому пути тоже нет.

mehfk

7 — 16.01.18 — 07:58

Как определил, что ошибок нет?

0xFFFFFF

8 — 16.01.18 — 08:00

А вручную запускаешь на том же сервере, где служба 1С крутится?

Ivan Bezdomnyi

9 — 16.01.18 — 08:03

(7) по журналу регистрации и по консоли заданий

(8) да

mehfk

10 — 16.01.18 — 08:05

(9) Ты видишь в ЖР успешное завершение фонового задания?

Ivan Bezdomnyi

11 — 16.01.18 — 08:06

(10) да, сразу после моего записанного сообщения с именем файла — Фоновое задание. Успешное завершение

mehfk

12 — 16.01.18 — 08:15

(11) Добавь

ФайлXLS = Новый Файл(ИмяФайла);

ЗаписьЖурналаРегистрации(«ВыполнениеРегламентныхЗаданий»,,,,»Файл » + ИмяФайла + » существует = » + ФайлXLS.Существует());

МимохожийОднако

13 — 16.01.18 — 09:06

У пользователя USR1CV81  нет прав на запись

Михаил Козлов

14 — 16.01.18 — 09:21

Может имя файла должно быть «серверным»?

  

Сияющий в темноте

15 — 16.01.18 — 10:31

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

1

2

Показывать по
10
20
40
сообщений

Новая тема

Ответить

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

«Почему не выполняется следующий код при записи текстового документа в .txt файл на диск при выполнении фонового задания.<br>Код в модуле:<br>Процедура ЗаписатьТекстСообщений(ИмяФайла, Отказ=0)<br> …<br> Попытка<br>       ПолныйТекстСообщений.Записать(Строка(Файл.ПолноеИмя), КодировкаТекста.UTF8);<br> Исключение<br>       ВывестиСообщение(ОписаниеОшибки(),,2);<br> КонецПопытки;<br> …<br>КонецПроцедуры<br><br>ПолныйТекстСообщений = Новый ТекстовыйДокумент;<br><br>Данная процедура выполняется после передачи или приема файлов обмена. Ошибка выдается в в журнале регистрации следующая:<br>Ошбка при вызове метода контекста (Записать): Вывод Запрещен.»

Денис (САМАРА)

Дата регистрации: 09.04.2008
Сообщений: 8351

Все же написано в тексте ошибки. Проверьте права пользователя, от имени которого выполняеете обмен.

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

> Все же написано в тексте ошибки. Проверьте права пользователя, от имени которого выполняеете обмен.<br><br>Причем тут права пользователя? Обмен данными происходит в автоматическом режиме с использованием регламентного задания, обработки и плана обмена. В общем модуле и модулях плана обмена и обработки нет процедур и функций требующих для выполнения права администратора.<br>Согласно Описания языка 1С Предприятия 8.1 функция ТекстовыйДокумент.Записать (ПолноеИмяФайла,Кодировка) должна выполнятся во всех режимах, но она не выполняется именно при фоновом обмене(автообмене через планировщика) и выдается сообщение Вывод запрещен, при ручном обмене выполняется без проблем.<br>

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

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

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

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

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

Еще раз говорю вам, что фоновые задания выполняются от имени какого-либо пользователя, если же пользователь явно не указан, выполняются от имени любого пользователя, в роли которого стоит галочка «Административные функции».. а вот стоит ли там галочка «Вывод», это еще вопрос… :)

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

Хорошо, ты меня добил. Эта встроенная функция ТекстовыйДокумент.Записать(ПолноеИмяФайла, Кодировка) не выполняется под администратором и ролью ПолныеПрава и галочки все стоят на всех модулях,обменах, процедурах, отчетах, обработках, регистрах,параметрах и т.д. и т.п., при выполнении фонового задания т.е. на сервере, а на клиенте выполняется не зависимо от ролей. Что теперь еще скажешь?!

Prikum

активный пользователь

офлайн

Дата регистрации: 18.02.2002
Сообщений: 20836

Ну если ты такой умный, что же лезешь с вопросами?

Registr

Дата регистрации: 10.04.2009
Сообщений: 14

Скажу что согласен с предыдущим постом.. :) По-крайней мере, мне отсюда не видно, что у тебя там стоит…

aipnnov

Дата регистрации: 13.04.2009
Сообщений: 6

> Ну если ты такой умный, что же лезешь с вопросами?<br><br>Я понял, что решение по данной проблеме вы не знаете. Это однозначно упущение разработчиков 1С 8.1 и будет исправлено.<br>А грубить не надо. Программа 1С с самого начала как имела подобные проблемы, так до сих пор их имеет и надо признавать свои ошибки и помогать в их решении.<br>Мне уже это не нужно, я эту проблему обошел и все сохраняется, но вопрос остался не разрешимым для других программистов в том числе и ваших сторонних сертифицированных разработчиков.

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

Исправляем ситуацию

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

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


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник

Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

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

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    Правила раздела:

    • Перед тем, как задать вопрос, желательно почитать документацию и воспользоваться поиском.
    • Когда задаёте вопрос, то обязательно указывайте платформу (7.7, 8.0, 8.1, 8.2, etc), причем желательно в заголовке. Если речь идёт о типовой конфигурации, то указывайте её название и релиз. Текущие версии можно посмотреть здесь.
    • Ещё раз напоминаем о необходимости соблюдать не только правила, но и законы. Уважайте авторские права.

    Высказать своё мнение о модераторах раздела можно здесь: evGenius

    >
    Регламентные задания
    , платформа 8.1

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Привет кто практиковал Основные возможности механизмов задании?
      Фоновые задание & Регламентные задания: Меня интересует серверный вариант.

      Profi

      Rust



      Сообщ.
      #2

      ,

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


        Artega



        Сообщ.
        #3

        ,

          ExpandedWrap disabled

            Рассказывать про фоновые и регламентные задания долго — в литературе для этого есть целая глава.

          Rust Разобрался как создается просто документ. А вот что бы отчет создать сохранить на диск C: и отправить по почте не могу выдает сообщение об ошибки.

          ExpandedWrap disabled

            Авт:АвтАвтЗадания.ОтправкаЗадание завершено с ошибками23.04.2008 14:38:0023.04.2008 14:38:03tcp://PRGSRV:1568Ошибка при вызове метода контекста (Записать): Вывод запрещен

          В конфигурирование и Администрирование 8.1 про это не чего нет…

          Цитата

          [оффтопик]
          Если честно, мне этот топик до ужаса напоминает Люди кто програмит в Microsoft Visual Basic 2005 Express Edition
          [/оффтопик]

          evGenius Наверное вы знаете ответ на данный мой вопрос??? Если нет то пожалуйста удалите ваш пост не в чемный.

          Profi

          Rust



          Сообщ.
          #4

          ,

            Цитата Artega @

            В конфигурирование и Администрирование 8.1 про это не чего нет…

            Есть в 1С:Предприятие от 8.0 к 8.1, авторы Белоусов П.С. и Островерх А.В. В комплекте с книгой есть CD с демонстрационной конфигурацией и примерами обработок.

            Добавлено
            Хотя это странно, в типовой литературе это должно быть.


            Artega



            Сообщ.
            #5

            ,

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

              Profi

              Rust



              Сообщ.
              #6

              ,

                Лучше опиши как и что делаешь и выложи код. Я не шаман чтобы по книге ошибки в неизвестном коде искать.


                evGenius



                Сообщ.
                #7

                ,

                  Цитата Artega @

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

                  Может проблема та же?
                  Записать ТабличныйДокумент


                  Artega



                  Сообщ.
                  #8

                  ,

                    Всем большое спасибо проблема решена. Исправление в новой конфигурации 67.

                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                    0 пользователей:

                    • Предыдущая тема
                    • 1С: Проблемы и решения
                    • Следующая тема

                    Рейтинг@Mail.ru

                    [ Script execution time: 0,0523 ]   [ 15 queries used ]   [ Generated: 22.09.23, 16:24 GMT ]  

                    Понравилась статья? Поделить с друзьями:
                  • Ошибка при вызове метода контекста занять сканер
                  • Ошибка при вызове метода контекста значениевданныеформы
                  • Ошибка при вызове метода контекста зафиксироватьтранзакцию
                  • Ошибка при вызове метода контекста данныеформывзначение
                  • Ошибка при вызове метода контекста зарегистрироватьизменения