Выдавать ошибку при проведении

Как узнать ошибку проведения документа

Автор Sinsinmin, 06 мая 2011, 09:32

0 Пользователей и 1 гость просматривают эту тему.

программно пишу следующее

ЦитироватьПопытка
        ТекстОшибки = «»;
      ДокКадрПерем.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
   Исключение
      ТекстОшибки = ОписаниеОшибки();
      ЗаписьОшибки(ТекстОшибки);
      ДокКадрПерем.Записать(РежимЗаписиДокумента.Запись);
   КонецПопытки;   

Но получается что многие документы проводятся с противоречиями. Таким образом выполнение не заходит в исключение проведения. Каким образом можно узнать ошибку проведения документа?


Ошибки проведения обрабатываются в ОбработкеПроведения() документа и выводятся обычным Сообщить()…

  • 1 пользователь сказал спасибо!

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Это код внешней обработки.


И мне нужно передать эти ошибки в текстовый документ, для логирования ошибок внешней обработки.


Ну а чем существубщий код не подходит?


Если ты имеешь ввиду мой код, то он выдаёт ошибку только при исключении. Тобишь когда проведение документа невозможно. А хотелось бы узнать ошибки при проведении документа.


Хм, а какие ошибки возможны при нормальном проведении документа? Документ либо провелся (ошибок нет), либо не провелся (ошибки есть). Или я не так понял?


Аааа, кажется вкурил. Ты имеешь ввиду ошибки, которые не отменяют при этом проведения документа?


В ОбработкеПроведения() там где сообщаете об ошибке через Сообщить() надо добавить код, который будет помещать ошибки еще куда нибудь, например в РегистрСведений…

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


нельзя трогать код программы. Всё с помощью внешней обработки. Также нельзя делать регистры. Текстовый документ самое то.


Как узнать ошибку проведения документа

Автор Sinsinmin, 06 мая 2011, 09:32

0 Пользователей и 1 гость просматривают эту тему.

программно пишу следующее

ЦитироватьПопытка
        ТекстОшибки = «»;
      ДокКадрПерем.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
   Исключение
      ТекстОшибки = ОписаниеОшибки();
      ЗаписьОшибки(ТекстОшибки);
      ДокКадрПерем.Записать(РежимЗаписиДокумента.Запись);
   КонецПопытки;   

Но получается что многие документы проводятся с противоречиями. Таким образом выполнение не заходит в исключение проведения. Каким образом можно узнать ошибку проведения документа?


Ошибки проведения обрабатываются в ОбработкеПроведения() документа и выводятся обычным Сообщить()…

  • 1 пользователь сказал спасибо!

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Это код внешней обработки.


И мне нужно передать эти ошибки в текстовый документ, для логирования ошибок внешней обработки.


Ну а чем существубщий код не подходит?


Если ты имеешь ввиду мой код, то он выдаёт ошибку только при исключении. Тобишь когда проведение документа невозможно. А хотелось бы узнать ошибки при проведении документа.


Хм, а какие ошибки возможны при нормальном проведении документа? Документ либо провелся (ошибок нет), либо не провелся (ошибки есть). Или я не так понял?


Аааа, кажется вкурил. Ты имеешь ввиду ошибки, которые не отменяют при этом проведения документа?


В ОбработкеПроведения() там где сообщаете об ошибке через Сообщить() надо добавить код, который будет помещать ошибки еще куда нибудь, например в РегистрСведений…

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


нельзя трогать код программы. Всё с помощью внешней обработки. Также нельзя делать регистры. Текстовый документ самое то.


Программное получение ошибки при проведении документа

Я
   VigerV

17.09.12 — 18:16

Как программно получить ошибку при проведении документа, т.е. допустим программное проведение ряда документов и программное получение(подробное) , не строчку кода, а например «Не списано по партиям…». Все это выполняется в регламентном задании. ОписаниеОшибки() дает только номер строчки кода.

   Wobland

1 — 17.09.12 — 18:18

лог пиши

   Wobland

2 — 17.09.12 — 18:19

+(1) я про штатный вывод Сообщить в файл

   vmv

3 — 17.09.12 — 18:19

в критичные методы добавь параметр СтрокаСообщенияОбОшибке и накапливай эти НЕ пустые строки в контейнер — по другому хренушки

   undertaker

4 — 17.09.12 — 18:20

в журнал регистрации можно

   VigerV

5 — 17.09.12 — 18:25

Это и пишется в лог регламентного задания который после отсылается на мыло. Но ОписаниеОшибки() выдает не ту инфу.

   VigerV

6 — 17.09.12 — 18:25

(3) не совсем понял что ты имел в виду под «в критичные методы добавь параметр СтрокаСообщенияОбОшибке»

   shuhard

7 — 17.09.12 — 18:27

(5)я использую запуск обработки с ключиком  /OutC:Robotdel_log.log -NoTruncate

и файлик к письму присоединяю

   undertaker

8 — 17.09.12 — 18:27

(5) а ОписаниеОшибки() и не выдаст тебе что «Не списано по партиям»

   Wobland

9 — 17.09.12 — 18:28

+(2) *про штатное перенаправление вывода окно сообщений -> файл

   Wobland

10 — 17.09.12 — 18:28

(7) вот оно

   VigerV

11 — 17.09.12 — 18:51

В файл выводить нельзя, не из-за 1с а изза особенностей сервера, можно ли выводить куда-то внутри самой 1С?

   unregistered

12 — 17.09.12 — 18:53

(11) Что за особенность такая?…

   undertaker

13 — 17.09.12 — 18:53

(11) см. (4)

   unregistered

14 — 17.09.12 — 19:00

(13) (4) Как?

   undertaker

15 — 17.09.12 — 22:37

(14) ЗаписьЖурналаРегистрации("Имя события", УровеньЖурналаРегистрации.Ошибка, , , "Текст ошибки")

потом по событию можно фильтры накладывать или выгружать ЖР и програмно обрабатывать

   rs_trade

16 — 17.09.12 — 23:00

(12) он просто не знает как. вот и вся особенность.

   unregistered

17 — 18.09.12 — 08:51

(15) Это и ёжику понятно. Я думал ты знаешь метод не связанный с изменениями конфигурации.

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

В лучшем случае всё ограничиться процедурой общего модуля ОбщегоНазначения.ОшибкаПриПроведении (в разных конфах может называться по разному). А если этого окажется мало?

   shuhard

18 — 18.09.12 — 08:52

(17) в типовой УПП это сделано на уровне константы =)

   unregistered

19 — 18.09.12 — 09:08

(18) Прикольно. Я с УПП не работаю, а потому не знал.

  

shuhard

20 — 18.09.12 — 09:10

(19) кругозор расширил

Ошибка? Это не ошибка, это системная функция.

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Как в ЗУП 3.1 можно посмотреть описание ошибки? Например, когда не проводится документ Начисление зарплаты и взносов.

В ЗУП 3.1 есть 3 способа посмотреть описание ошибки:

  • Непосредственно в самом документе, при проведении / записи которого выдается ошибка.
  • В Журнале регистрации (Администрирование — Обслуживание — Журнал регистрации).
  • Сформировать отчет об ошибке для отправки в 1С и посмотреть описание во вложенном файле отчета – способ доступен для ошибок с типом Возникла непредвиденная ситуация.

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

Также текст ошибки можно увидеть в Журнале регистрации. Для этого в поле Критичность выберем значение Ошибка.

В настройках отбора можно убрать фильтр по периоду.

Подробный текст ошибки можно открыть двойным щелчком левой кнопки мыши по ее описанию.

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

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

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Оцените публикацию

Загрузка…

Назад к статье

Отчеты, документы, обработки

Назад к статье

Новости и изменения

Назад к статье

Дополнительные материалы

Назад к статье

Топ-вопросов

Последовательность событий при записи нового документа из формы документа

Заливкой выделены события, выполняющиеся в транзакции записи.

Последовательность событий при проведении документа из формы документа (провести и закрыть)

Заливкой выделены события, выполняющиеся в транзакции записи.

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

Заливкой выделены события, выполняющиеся в транзакции записи.

Обработчики событий

ПередЗаписью(Отказ, ПараметрыЗаписи)  // модуль формы клиент

Расширение управляемой формы для документа. Возникает на клиенте перед выполнением записи объекта из формы. Процедура-обработчик данного события вызывается перед вызовом процедуры-обработчика события ПередЗаписью.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения». Параметр РежимПроведения может отсутствовать, если режим проведения в документе не определен.

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.

ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Вызывается перед записью объекта на сервере. Можно отменить запись. Выполняется вне транзакции.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый объект.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ДокументОбъект.ИмяДокумента.ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)  // модуль объекта сервер

Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • РежимЗаписи, тип РежимЗаписиДокумента. В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.
  • РежимПроведения, тип РежимПроведенияДокумента. В данный параметр передается текущий режим проведения. Изменение значения параметра позволяет изменить режим проведения.
ДокументОбъект.ИмяДокумента.ПриЗаписи(Отказ)  // модуль объекта сервер

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.

  • Отказ, тип Булево. Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись документа выполнена не будет. Значение по умолчанию: Ложь.
ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Возникает на сервере при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта) в базу данных, но до окончания транзакции записи.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись произведена не будет. Значение по умолчанию: Ложь.
  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый документ.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Вызывается после записи объекта на сервере и после завершения транзакции.

  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый объект.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ПослеЗаписи(ПараметрыЗаписи)  // модуль формы клиент

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

  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.

Поиск:
1С:Предприятие • Документ • Перед записью • Перед записью на сервере • После записи • После записи на сервере • При записи • При записи на сервере • Событие

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

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

почему с этим не справиться регистр сведений?

при откате транзакции, он тоже откатывается.

Чем временное хранилище не подходит?

пока решил сделать именно через временное хранилище, остался вопрос только с тем как кинуть адресом временного хранилища в форму и в составке данных, которые кидаю…

+100500 — почему то все советуют сделать именно через справочник

ТЗ/ДЗ, что может быть проще?

так то эти данные не отображаются клиенте+кидаться с сервером ДЗ вообще нельзя.

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

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

Что бы проверить, что он рабочий — нужно в конфигураторе посидеть. Но у формы документа, если я не ошибаюсь, есть событие, в котором доступен объект, не реквизит формы Объект, а именно тот объект, который был записан и он должен передаваться в параметре события. Но, конечно, я могу ошибаться. Проверить смогу только на следующей неделе -сейчас в отпуске

а если его персонально в транзакцию обернуть?

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

Объект.ДополнительныеСвойства — это структура которая существует пока существует сам объект, сувай туда.

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

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Если при исполнении программы происходит ошибка, то 1С сообщает о ней пользователю.

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

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

Хорошим тоном считается обрабатывать ошибки с помощью конструкции 1С Попытка-Исключение, то есть предусматривать места, где они могут произойти и ставить обработчик, который запишет ошибку «в сообщения администратору», а пользователю или сообщит корректно или найдет способ отработать по-другому.
Переменная1 = "22";
Попытка
     //код, который может вызвать ошибку
     ЧислоСтрокой = Число(Переменная1);
Исключение
     ТекстОшибки = ОписаниеОшибки();
КонецПопытки

Код, в котором может произойти ошибка, обрамляется оператором 1С Попытка-Исключение.

В случае, если ошибка происходит, срабатывает выполнение кода между Исключение и КонецПопытки. Если ошибка не происходит, тот код между Исключение и КонецПопытки не выполняется.

Чтобы получить расшифровку ошибки, необходимо получить текст ошибки с помощью функции ОписаниеОшибки() сразу после слова Исключение.

Также существует функция ИнформацияОбОшибке(), которую можно вызывать вместо ОписаниеОшибки(). Разница в том, что она возвращает информацию в структурированном виде, а не строкой.

Структура, возвращаемая функцией ИнформацияОбОшибке():

Проголосовать за этот пост:

Загрузка…

Posted in Язык 1С

Программное получение ошибки при проведении документа

Я

  

VigerV

17.09.12 — 18:16

Как программно получить ошибку при проведении документа, т.е. допустим программное проведение ряда документов и программное получение(подробное) , не строчку кода, а например «Не списано по партиям…». Все это выполняется в регламентном задании. ОписаниеОшибки() дает только номер строчки кода.

  

Wobland

1 — 17.09.12 — 18:18

лог пиши

  

Wobland

2 — 17.09.12 — 18:19

+(1) я про штатный вывод Сообщить в файл

  

vmv

3 — 17.09.12 — 18:19

в критичные методы добавь параметр СтрокаСообщенияОбОшибке и накапливай эти НЕ пустые строки в контейнер — по другому хренушки

  

undertaker

4 — 17.09.12 — 18:20

в журнал регистрации можно

  

VigerV

5 — 17.09.12 — 18:25

Это и пишется в лог регламентного задания который после отсылается на мыло. Но ОписаниеОшибки() выдает не ту инфу.

  

VigerV

6 — 17.09.12 — 18:25

(3) не совсем понял что ты имел в виду под «в критичные методы добавь параметр СтрокаСообщенияОбОшибке»

  

shuhard

7 — 17.09.12 — 18:27

(5)я использую запуск обработки с ключиком  /OutC:Robotdel_log.log -NoTruncate

и файлик к письму присоединяю

  

undertaker

8 — 17.09.12 — 18:27

(5) а ОписаниеОшибки() и не выдаст тебе что «Не списано по партиям»

  

Wobland

9 — 17.09.12 — 18:28

+(2) *про штатное перенаправление вывода окно сообщений -> файл

  

Wobland

10 — 17.09.12 — 18:28

(7) вот оно

  

VigerV

11 — 17.09.12 — 18:51

В файл выводить нельзя, не из-за 1с а изза особенностей сервера, можно ли выводить куда-то внутри самой 1С?

  

unregistered

12 — 17.09.12 — 18:53

(11) Что за особенность такая?…

  

undertaker

13 — 17.09.12 — 18:53

(11) см. (4)

  

unregistered

14 — 17.09.12 — 19:00

(13) (4) Как?

  

undertaker

15 — 17.09.12 — 22:37

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

потом по событию можно фильтры накладывать или выгружать ЖР и програмно обрабатывать

  

rs_trade

16 — 17.09.12 — 23:00

(12) он просто не знает как. вот и вся особенность.

  

unregistered

17 — 18.09.12 — 08:51

(15) Это и ёжику понятно. Я думал ты знаешь метод не связанный с изменениями конфигурации.

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

В лучшем случае всё ограничиться процедурой общего модуля ОбщегоНазначения.ОшибкаПриПроведении (в разных конфах может называться по разному). А если этого окажется мало?

  

shuhard

18 — 18.09.12 — 08:52

(17) в типовой УПП это сделано на уровне константы =)

  

unregistered

19 — 18.09.12 — 09:08

(18) Прикольно. Я с УПП не работаю, а потому не знал.

  

shuhard

20 — 18.09.12 — 09:10

(19) кругозор расширил

Содержание:

1.      Обработка исключительной ситуации

2.      Совершаем ошибку в 1С 8.3

3.      А что еще можно делать с результатом попытки?

4.      А ваши транзакции то здесь при чём?  

1.      Обработка исключительной ситуации

—        Приветствую, Амиго! Ты, как я понял, пришёл на мою лекцию по физическим основам изготовления термитных пирамидок для заряда аппаратов гиперболоидной конструкции? Нет? А зачем тогда?

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

—        А… Это… Ну, тогда вот:

—        Кажется, понятно. А можно примеров добавить?

—        Ох уж эти юные роботы, всегда хотят практики. С примерами это будет выглядеть вот так:

Ох, извини, это для старых баз. На новых космолётах с прошивкой выше 8.1 есть более удобный способ узнать код ошибки.  

2.      Совершаем ошибку в 1С 8.3

Ты и сам можешь попробовать. Главное – придумать ошибку в 1С 8.3. Самая простая ошибка – это разделить что-нибудь на нуль или на, как это говорят на современном сленге, ноль.

В ответ получим:

Нажимаем на кнопку «Подробно…» и видим: Деление на 0 {NudlsProff_Расширение.NudlsProff_ФормаОшибок.Форма(96)}: Результат = 1/0

Добавляем нашей красоты:

Теперь пользователю ВИДНО, что случилось. И ПОНЯТНО, что с этим делать.

Описание=’Деление на 0′

ИмяМодуля=’NudlsProff_Расширение.NudlsProff_ФормаОшибок.Форма’

НомерСтроки=99

ИсходнаяСтрока=’        Результат = 1 / 0;’

Позвоните Профессору Нудлсупо тел+7 (495) 125-23-77

и ознакомьтесь с теорией деления на ноль

https://elementy.ru/email/1530320/Pochemu_nelzya_delit_na_nol     

3.      А что еще можно делать с результатом попытки?

—        А что ещё мы можем делать в результате с попыткой?

—        Мы можем обработать попытку в попытке.

По своей сути Попытка-Исключение – это отлов исключительной ситуации. Ситуации, которая может произойти. Возможно, даже и не по вине юного робота. Робот же должен учесть все возможные ситуации при написании кода и обработать их. Но наш мир не идеален и даже программы не всегда работают идеально. Именно тогда мы и должны проанализировать возможные последствия и понять, что для нас важнее: чтобы код выполнился до конца или вызвать прерывание работы ошибочного кусочка кода, но дать пользователю исправить ситуацию и продолжить работу.

—        Профессор, Вы опять забыли про примеры.

—        Ах, да, конечно. Например, мы записывали файл на диск. Пользователь, конечно, выбрал папку для записи файла, но случайно удалил её во время работы программы. Вся наша программа рухнет из-за невнимательности.

Нельзя просто обернуть код в попытку и обезопасить себя от последствий. Также неправильно и маскировать ошибку общими фразами – дальнейший поиск и исправление этого бага вызовет уйму вопросов. Нужно показать максимально информативное сообщение пользователю, чтобы он передал его в службу поддержки. Всё-же, исключительная ситуация – это баг, который нужно исправлять.  

4.      А ваши транзакции то здесь при чем?

—        То есть если в программе что-то может пойти не так, например, при записи файла на диск, обработке web-hook, работе с API, синхронизации с другими базами, записи изменений в справочник или документ, для безопасности я должен обернуть потенциально опасный кусочек кода в Попытку-Исключение, и тем самым пользователь сможет продолжить работу, а мы всегда будем знать, где именно и почему возникает ошибка?

—        Да, Амиго, все верно! Кстати, поскольку уж речь зашла о записи объектов баз данных, очень важно не забывать правильно закрывать ваши транзакции:

 

Специалист компании «Кодерлайн» 

Алексей Зятнин

Как в ЗУП 3.1 можно посмотреть описание ошибки? Например, когда не проводится документ Начисление зарплаты и взносов.

В ЗУП 3.1 есть 3 способа посмотреть описание ошибки:

  • Непосредственно в самом документе, при проведении / записи которого выдается ошибка.
  • В Журнале регистрации (Администрирование — Обслуживание — Журнал регистрации).
  • Сформировать отчет об ошибке для отправки в 1С и посмотреть описание во вложенном файле отчета – способ доступен для ошибок с типом Возникла непредвиденная ситуация.

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

Также текст ошибки можно увидеть в Журнале регистрации. Для этого в поле Критичность выберем значение Ошибка.

В настройках отбора можно убрать фильтр по периоду.

Подробный текст ошибки можно открыть двойным щелчком левой кнопки мыши по ее описанию.

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

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

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Оцените публикацию

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд

(2 оценок, среднее: 5,00 из 5)

Загрузка…

Назад к статье

Отчеты, документы, обработки

Назад к статье

Новости и изменения

Назад к статье

Дополнительные материалы

Назад к статье

Топ-вопросов

Программное получение ошибки при проведении документа ☑ 0

VigerV

17.09.12

18:16

Как программно получить ошибку при проведении документа, т.е. допустим программное проведение ряда документов и программное получение(подробное) , не строчку кода, а например «Не списано по партиям…». Все это выполняется в регламентном задании. ОписаниеОшибки() дает только номер строчки кода.

1

Wobland

17.09.12

18:18

лог пиши

2

Wobland

17.09.12

18:19

+(1) я про штатный вывод Сообщить в файл

3

vmv

17.09.12

18:19

в критичные методы добавь параметр СтрокаСообщенияОбОшибке и накапливай эти НЕ пустые строки в контейнер — по другому хренушки

4

undertaker

17.09.12

18:20

в журнал регистрации можно

5

VigerV

17.09.12

18:25

Это и пишется в лог регламентного задания который после отсылается на мыло. Но ОписаниеОшибки() выдает не ту инфу.

6

VigerV

17.09.12

18:25

(3) не совсем понял что ты имел в виду под «в критичные методы добавь параметр СтрокаСообщенияОбОшибке»

7

shuhard

17.09.12

18:27

(5)я использую запуск обработки с ключиком  /OutC:\Robot\del_log.log -NoTruncate

и файлик к письму присоединяю

8

undertaker

17.09.12

18:27

(5) а ОписаниеОшибки() и не выдаст тебе что «Не списано по партиям»

9

Wobland

17.09.12

18:28

+(2) *про штатное перенаправление вывода окно сообщений -> файл

10

Wobland

17.09.12

18:28

(7) вот оно

11

VigerV

17.09.12

18:51

В файл выводить нельзя, не из-за 1с а изза особенностей сервера, можно ли выводить куда-то внутри самой 1С?

12

unregistered

17.09.12

18:53

(11) Что за особенность такая?…

13

undertaker

17.09.12

18:53

(11) см. (4)

14

unregistered

17.09.12

19:00

(13) (4) Как?

15

undertaker

17.09.12

22:37

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

потом по событию можно фильтры накладывать или выгружать ЖР и програмно обрабатывать

16

rs_trade

17.09.12

23:00

(12) он просто не знает как. вот и вся особенность.

17

unregistered

18.09.12

08:51

(15) Это и ёжику понятно. Я думал ты знаешь метод не связанный с изменениями конфигурации.

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

В лучшем случае всё ограничиться процедурой общего модуля ОбщегоНазначения.ОшибкаПриПроведении (в разных конфах может называться по разному). А если этого окажется мало?

18

shuhard

18.09.12

08:52

(17) в типовой УПП это сделано на уровне константы =)

19

unregistered

18.09.12

09:08

(18) Прикольно. Я с УПП не работаю, а потому не знал.

20

shuhard

18.09.12

09:10

(19) кругозор расширил

2 / 2 / 1

Регистрация: 22.06.2012

Сообщений: 244

1

1C 8.x (тонкий)

Как уведомить пользователя об ошибках при проведении? (Управляемые формы)

08.12.2014, 11:15. Показов 9053. Ответов 10


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

Допустим при проведении выяснилось, что каких-то исходных данных не хватает для правильного проведения, например отсутствуют цены номенклатуры по таким-то товарам. Надо уведомить так или иначе юзера, что именно по таким-то позициям данных нет.

Вопрос, как? (Ну кроме, «Сообщить()»)
Ведь обратиться с сервера на клиент мы не можем. Что делать, какие события запрограммировать чтобы реализовать задуманное?



0



211 / 204 / 15

Регистрация: 29.05.2014

Сообщений: 1,056

08.12.2014, 11:19

2

Типовые что по этому поводу говорят?



0



2 / 2 / 1

Регистрация: 22.06.2012

Сообщений: 244

08.12.2014, 11:26

 [ТС]

3

Цитата
Сообщение от wwall
Посмотреть сообщение

Типовые что по этому поводу говорят?

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



0



211 / 204 / 15

Регистрация: 29.05.2014

Сообщений: 1,056

08.12.2014, 11:42

4

Давайте, вы сперва посмотрите как это сделано в типовых (УТ 11), а затем будете делать предположения.



0



2 / 2 / 1

Регистрация: 22.06.2012

Сообщений: 244

08.12.2014, 18:26

 [ТС]

5

Цитата
Сообщение от wwall
Посмотреть сообщение

Давайте, вы сперва посмотрите как это сделано в типовых (УТ 11), а затем будете делать предположения.

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

Вопрос все еще актуален.
Можно перефразировать так: в какой момент следует оповещать пользователя о невозможности проведения документа?



0



211 / 204 / 15

Регистрация: 29.05.2014

Сообщений: 1,056

08.12.2014, 18:34

6

Не по теме:

Цитата
Сообщение от Void-87
Посмотреть сообщение

в спагетях кода 1Совцев

а вы самоуверенны, молодой человек

Цитата
Сообщение от Void-87
Посмотреть сообщение

в какой момент следует оповещать пользователя о невозможности проведения документа?

Зависит от желаемой производительности и версии платформы.



0



2 / 2 / 1

Регистрация: 22.06.2012

Сообщений: 244

08.12.2014, 19:49

 [ТС]

7

Цитата
Сообщение от wwall
Посмотреть сообщение

а вы самоуверенны, молодой человек

Полотна кода читать очень затруднительно, думаю тут вы согласитесь.
Тем не менее, я нашел как реализуется. А банально. Через «СообщениеПользователю.Сообщить()» Никаких изысков.

Добавлено через 40 секунд

Цитата
Сообщение от wwall
Посмотреть сообщение

Зависит от желаемой производительности и версии платформы.

А в моей ситуации? Хочу чтобы клиент был максимально облегчен, а сервер максимально загружен



0



Шизофреник

360 / 362 / 83

Регистрация: 25.06.2013

Сообщений: 1,141

08.12.2014, 20:11

8

СообщениеПользователю — относительно свежая фишка, многие про нее просто не в курсе
Для ПолучитьСообщенияПользователю, чтоб выловить «несообщенные» сообщения — справка еще даже не допилена (8.3.5.1231)



0



wladimir_ui

Шизофреник

360 / 362 / 83

Регистрация: 25.06.2013

Сообщений: 1,141

08.12.2014, 20:17

9

ну а в общем, фишка прикольная, что можно прилепить сообщение к элементу…

1C
1
2
3
4
5
6
7
    //Сообщить("Нельзя менять договор-заказ, т.к. с ним производились операции! Текущий Статус документа: "+Статус);
            Сообщение = Новый СообщениеПользователю();
            Сообщение.Текст = "Нельзя менять договор-заказ, т.к. с ним производились операции! Текущий Статус документа: "+Статус;
            Сообщение.ПутьКДанным = "Объект";
            Сообщение.КлючДанных = ЭтотОбъект.Ссылка;
            Сообщение.Поле = "Характеристики[3].Характеристика";
            Сообщение.Сообщить();

Миниатюры

Как уведомить пользователя об ошибках при проведении? (Управляемые формы)
 



0



Шизофреник

360 / 362 / 83

Регистрация: 25.06.2013

Сообщений: 1,141

08.12.2014, 20:31

10

ан’нет.. боян тот еще, просто в 8.3 справка косячная..



0



211 / 204 / 15

Регистрация: 29.05.2014

Сообщений: 1,056

08.12.2014, 21:44

11

Цитата
Сообщение от Void-87
Посмотреть сообщение

А в моей ситуации? Хочу чтобы клиент был максимально облегчен, а сервер максимально загружен

Для сообщения это не важно. Гонять ты по любому будешь тупо строку. Другое дело что в 11 УТ применили другой алгоритм проверки проведения. Она теперь после проведения, и если не проходит проверка — отменяется вся транзакция. Завязано на механизмы платформы, где-то видел статью.

Цитата
Сообщение от Void-87
Посмотреть сообщение

А банально. Через «СообщениеПользователю.Сообщить()» Никаких изысков.

Вот видишь — достаточно было поползать по коду. Вообще «умение разбираться в чужом коде» — +5 к потенции и +3 к интеллекту.



0



Добрый день!

Проводили документ принятие к учету 21.10.2021 г , все проводилось и закрытие месяца в том числе.
17.01.2022 обновили 1с платформу Бухгалтерия предприятия, редакция 3.0 (3.0.106.60) и 18.01.2022 при выполнении закрытия месяца появились ошибки. Ниже информация.
Вопрос: Помогите разобраться в чем причина и что сделать, чтобы все провелось.
1. Принятие к учету ОС 0000-000019 от 21.10.2021 12:00:00

«Обработка Принятие к учету ОС 0000-000019 от 21.10.2021 12:00:00 не выполнена по причине:
{Обработка.ГрупповоеПерепроведениеДокументов.МодульМенеджера(2016)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {ОбщийМодуль.ПрослеживаемостьБП.Модуль(2204)}: Ошибка при вызове метода контекста (НайтиСтроки): Неверное имя колонки»

2. Принятие к учету ОС 0000-000020 от 21.10.2021 12:00:00

«Обработка Принятие к учету ОС 0000-000020 от 21.10.2021 12:00:00 не выполнена по причине:
{Обработка.ГрупповоеПерепроведениеДокументов.МодульМенеджера(2016)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {ОбщийМодуль.ПрослеживаемостьБП.Модуль(2204)}: Ошибка при вызове метода контекста (НайтиСтроки): Неверное имя колонки»

Добрый день!

Проводили документ принятие к учету 21.10.2021 г , все проводилось и закрытие месяца в том числе.
17.01.2022 обновили 1с платформу Бухгалтерия предприятия, редакция 3.0 (3.0.106.60) и 18.01.2022 при выполнении закрытия месяца появились ошибки. Ниже информация.
Вопрос: Помогите разобраться в чем причина и что сделать, чтобы все провелось.
1. Принятие к учету ОС 0000-000019 от 21.10.2021 12:00:00

«Обработка Принятие к учету ОС 0000-000019 от 21.10.2021 12:00:00 не выполнена по причине:
{Обработка.ГрупповоеПерепроведениеДокументов.МодульМенеджера(2016)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {ОбщийМодуль.ПрослеживаемостьБП.Модуль(2204)}: Ошибка при вызове метода контекста (НайтиСтроки): Неверное имя колонки»

2. Принятие к учету ОС 0000-000020 от 21.10.2021 12:00:00

«Обработка Принятие к учету ОС 0000-000020 от 21.10.2021 12:00:00 не выполнена по причине:
{Обработка.ГрупповоеПерепроведениеДокументов.МодульМенеджера(2016)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {ОбщийМодуль.ПрослеживаемостьБП.Модуль(2204)}: Ошибка при вызове метода контекста (НайтиСтроки): Неверное имя колонки»

  Проекты внедрения CRM  
Я
   andryscha1c

25.03.21 — 18:51

При проведении документа выдает ошибку: данные были изменены или удалены другим пользователем.

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

   breezee

1 — 25.03.21 — 19:43

(0) А вы что там изменили?

   andryscha1c

3 — 25.03.21 — 21:25

(1) реквизиты документа заполняли в течении 20 минут постепенно, пытались провести уже не дает, пришлось записать. Далее записанный документ также не проводится с данной ошибкой.

   hhhh

4 — 25.03.21 — 21:38

(3) метод Прочитать точно грохнули? А то, если оставили, то как раз из-за него.

   andryscha1c

5 — 25.03.21 — 22:18

(4) у меня есть основная форма Форма1, есть та которая вызывается Форма2. В Форме2 я меняю в проведении таб часть Формы1 и при закрытии Формы2  читаю Форму1 ЭтотОбъект.ВладелецФормы.Прочитать(); затем делаю тут же перед закрытием Формы2 делаю Оповестить(«ИзмененияВТЧ»); и в Форма1 меняю на Форме1 некоторые значения Статусы (обновляю).

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

   hhhh

6 — 25.03.21 — 22:33

(5) в проведении никто никогда не меняет, надо сначала всё поменять, а потом на втором этапе уже делать проведение.

   andryscha1c

7 — 25.03.21 — 22:52

(6) решено, ошибка была была в том что в проведении менялся исходный документ и пытался провестись, но он был помечен на удаление))) а за счет попытки исключения выдавало подобные ошибки. В итоге убрал в явной транзации проведения попытки исключения конструкции, выявил ошибку и убрал с пометки исходный документ и все провелось. Вопрос: а где менять если не в проведении(надо что бы именно при проведении срабатывало кнопки), в событии «при записи» с режимом записи проведение если так?

   andryscha1c

8 — 25.03.21 — 22:54

точнее перед записью

  

hhhh

9 — 25.03.21 — 23:04

да, ПередЗаписью.

/

/

/

Ошибка при проведении документов в 1С:ЗУП. Что делать?

12.04.2022

При проведении документов Отпуск, Больничный лист, Начисление прочих доходов и др., в программе «1С: Зарплата и управление персоналом, редакция 3.1», новый релиз 3.1.21.75 от 01.04.22 г., выходит сообщение об ошибке и документ не рассчитывается и не проводится, как это исправить?

Посмотреть информацию о релизе:

рисунок 1

рисунок 2

01.04.2022 г. разработчиком зарегистрирована Ошибка с кодом 60001098

рисунок 3

Ошибка появляется, если в Учетной политике (раздел-Настройка-Организации или Реквизиты организации-Учетная политика и другие настройки-Учетная политика) на вкладке НДФЛ установлен флажок – Выполнять расчет НДФЛ по прогрессивной шкале.

рисунок 4

рисунок 5

В документе Отпуск заполнено поле — Средний заработок и количество дней отпуска, но не заполняются поля – Начислено и НДФЛ, выходит сообщение об ошибке.

рисунок 6

рисунок 7

Такая же ошибка, при проведении Больничного листа, Начисление прочих доходов и других документов.

рисунок 8

рисунок 9

  • Планируется исправление в будущих версиях программы.
  • Способ исправления в настоящий момент – Установить патч EF_60001098.
  • Для оперативного исправления ошибок выпускаются так называемые патчи — небольшие файлы (специальным образом подготовленные расширения конфигурации), которые предназначены для исправления конкретной ошибки в конкретном релизе конфигурации до обновления этой конфигурации. При установке следующего релиза конфигурации, в котором данная ошибка уже исправлена, патч теряет свою актуальность и удаляется автоматически.
  • При автоматической загрузке и установке патчей пользователь, вероятнее всего и не заметит ошибку при работе с программой.
  • Патч установится автоматически, если в Информационной базе установлен флажок — Загружать и устанавливать исправления (патчи) автоматически (раздел Администрирование -Интернет — поддержка и сервисы — Обновление версии программы).

рисунок 10

рисунок 11

Где скачать патч для установки в ручном режиме:

рисунок 12

рисунок 13

Далее необходимо распаковать архив в произвольный каталог на компьютере.

рисунок 14

Для загрузки исправления (патча) в программу, заходим в раздел Администрирование-Обслуживание-Обновление программы, нажимаем на ссылку «Установка обновлений и исправлений (патчей)» и выбираем ранее распакованный файл, кнопка «Далее», кнопка «Продолжить».

рисунок 15

рисунок 16

рисунок 17

рисунок 18

рисунок 19

рисунок 20

Исправление (патч) успешно установлено.

рисунок 21

После установки исправления (патча) сформируем документ Отпуск.

рисунок 22

Ошибка исправлена, документ рассчитан и проведен.

Также, после исправления ошибки, рассчитываются и проводятся, и другие документы.

Освойте программу 1С:Зарплата и управление с нуля. Ознакомиться с курсами по зарплате и кадрам для любого уровня подготовки можно кликнув по ссылке

Расписание всех курсов 1С смотрите по кнопке ниже.

Расписание курсов 1C

Подпишитесь на нас!

И получите в подарок промокод на 1500 руб! Все новые статьи, акции и анонсы каждую неделю:

Добрый день! Подскажите, пожалуйста, как избежать ошибки при проведении документа. База 1С:Предприятие 8.3 (8.3.15.1869) Конфигурация: Бухгалтерия предприятия, редакция 2.0 (2.0.66.111) 

При проведении документа появляется сообщение:
Документ Списание с расчетного счета БПАЛ0000166 от 17.03.2020 0:00:00 не проведен! По причине: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {РегистрНакопления.НДФЛРасчетыСБюджетом.МодульМенеджера(27)}: Поле объекта не обнаружено (УчетнаяПолитикаПоНДФЛ)
Документ не проводиться

Может кто сталкивался? Как не шаманил не получается убрать эту ошибку.

г. Ростовская область341 017 баллов

Добрый день. попробуйте почистить кэш.

Заполнить, проверить и подать уведомление о сумме налога

geomech, В 1С почистить КЭШ? Научите как это сделать?

г. Ростовская область341 017 баллов

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

Заполняйте платежки с актуальными на сегодня КБК, кодами дохода и другими обязательными реквизитами

Как узнать ошибку проведения документа

Автор Sinsinmin, 06 мая 2011, 09:32

0 Пользователей и 1 гость просматривают эту тему.

программно пишу следующее

ЦитироватьПопытка
        ТекстОшибки = «»;
      ДокКадрПерем.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
   Исключение
      ТекстОшибки = ОписаниеОшибки();
      ЗаписьОшибки(ТекстОшибки);
      ДокКадрПерем.Записать(РежимЗаписиДокумента.Запись);
   КонецПопытки;   

Но получается что многие документы проводятся с противоречиями. Таким образом выполнение не заходит в исключение проведения. Каким образом можно узнать ошибку проведения документа?


Ошибки проведения обрабатываются в ОбработкеПроведения() документа и выводятся обычным Сообщить()…

  • 1 пользователь сказал спасибо!

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


Это код внешней обработки.


И мне нужно передать эти ошибки в текстовый документ, для логирования ошибок внешней обработки.


Ну а чем существубщий код не подходит?


Если ты имеешь ввиду мой код, то он выдаёт ошибку только при исключении. Тобишь когда проведение документа невозможно. А хотелось бы узнать ошибки при проведении документа.


Хм, а какие ошибки возможны при нормальном проведении документа? Документ либо провелся (ошибок нет), либо не провелся (ошибки есть). Или я не так понял?


Аааа, кажется вкурил. Ты имеешь ввиду ошибки, которые не отменяют при этом проведения документа?


В ОбработкеПроведения() там где сообщаете об ошибке через Сообщить() надо добавить код, который будет помещать ошибки еще куда нибудь, например в РегистрСведений…

Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.


нельзя трогать код программы. Всё с помощью внешней обработки. Также нельзя делать регистры. Текстовый документ самое то.


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

Новая тема

Ответить

Buhgalter2011

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

Здравствуйте, после обновлений с сентября 2020г. при проведении Документа «Поступление товаров» начала вылезать ошибка см. скрин, попробовал перепровести документы предыдущих периодов то же самое, ничего не проводится. Цена документом «Установка цен номенклатуры» установлена 01.01.2020, непонятно, теперь программа предлагает на каждое поступление устанавливать новую цену. Все «перекопал», ни в учетной политике, ни в настройках ничего не изменилось, так почему теперь перестали проводится Документы «Поступление товаров», то же самое при закрытии месяца? Может сталкивался кто.

KYA

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

У вас склад розничный…
— какой тип цен для него задан?
— покажите какая цена с этим типом установлена на дату документа Поступление
— какой остаток (количество/сумма) в ОСВ на сч.41.11?
В сообщении говорится об учетной цене 194,09 руб. — это стоимость единицы по сч.41.11, а установленная розничная цена другая.

У вас в учетной политике установлен учет в рознице «По продажной стоимости», но остаток на сч.41.11 не идет с установленной розничной ценой.
О чем и сообщает программа.

Buhgalter2011

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

KYA, Спасибо за ответ. Действительно в учетной политике установлен учет в рознице «По продажной стоимости», склад «розничный», тип цен «розница» выбирается в документе «Отчет о розничных продажах», в документе «Поступление товаров» тип цены не был выбран, но раньше до сентября 2020г. все проводилось. Теперь все проведения отменил вплоть до 01 января 2019г. и там все не проводится везде ругается (см. скрин выше), причем, цена документом «Установка цен номенклатуры» установлена 01.01.2019г. и до 12.01.2019г. десять документов начиная с 03 января провелись, а вот документ от 12 января не проводится и далее тоже. С чем связано, непонятно, все перерыл, вроде бы ничего сложного документ «Поступление товаров» формировал следующие проводки, например, при установленной розничной цене за ед. 200 руб. поступил от поставщика товар в количестве 10 шт. ценой за ед. 50 руб.: Дт41.11 Кт60 — 500 руб. (10х50); Дт41.11 Кт42 — 1500 руб. (200х10-500). Теперь программа перестала понимать, что цена должна браться с установленной документом «Установка цен номенклатуры» и почему то ругается на учетную цену, и требует, чтобы установили именного его по остаткам, тогда зачем вообще нужно устанавливать продажную цену, ничего непонятно.

KYA

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

Buhgalter2011, Вы не ответили на:

Цитата
      — какой остаток (количество/сумма) в ОСВ на сч.41.11?
Цитата
Теперь программа перестала понимать, что цена должна браться с установленной документом «Установка цен номенклатуры» и почему то ругается на учетную цену, и требует, чтобы установили именного его по остаткам, тогда зачем вообще нужно устанавливать продажную цену, ничего непонятно.

Вы не поняли. Она не требует «установить по остаткам», она хочет, чтобы вы остаток привели к цене 200 рэ

Какой остаток на счете 41.11 на дату поступления? Количество и сумма???

Buhgalter2011

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

KYA, На 12.01.2019 на 41.11 действительно 194 руб., тогда непонятно, почему раньше все проводилось, и почему провелись теперь документы до 12.01.2019г.

KYA

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

Смотрите когда стоимостной остаток перестал соответствовать розничной цене 200р. Может быть ручными операциями что-то корректировали?
Такое поведение 1С было всегда.

milanka

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

Не все мне понятно, но попытаюсь разобраться, спасибо.

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

Ошибка в 1С 8.3 Нарушение прав доступа появляется при попытках обращения пользователя к объекту, прав на который у него нет. Очень часто это происходит при вводе нового пользователя в 1С, доработке программного кода и обновлении программы.

Причины ошибки

С ошибкой Нарушение прав доступа сталкиваются многие пользователи 1С после доработки программного кода и обновления программы. Возможные причины появления ошибки:

  • обновление программы на новый релиз;
  • попытка чтения или записи данных справочника, документа или регистра пользователем, не имеющим прав на объект;
  • использование внешних обработок и отчетов без установки пользователю специальной роли;
  • ошибка задания прав новому пользователю 1C.

Ошибка обновления

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

При появлении ошибки Нарушение прав доступа после обновления программы нужно выполнить следующие действия:

  • Проверьте, содержится ли ошибка в реестре: Публикация ошибок 1С. Перейдите по ссылке, в форме поиска ошибок укажите конфигурацию программы и текст ошибки.

После нажатия кнопки Найти будет произведен поиск по заданным параметрам.

  • Для зарегистрированной ошибки обратитe внимание на дату регистрации и релиз исправления ошибки.

  • Если заполнена информация в разделе Способ обхода — внимательно ее изучите: это позволит сразу решить проблему, не дожидаясь релиза с исправлениями.
  • Обратитесь на горячую линию 1С, если ошибка в реестре еще не зарегистрирована:
    1. телефон hotlane 1С: (495) 956-11-81;
    2. E-mail:v8@1c.ru.

Восстановите программу из копии и ждите исправления ошибки в следующем релизе обновления.

Нарушение прав доступа при чтении данных

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

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

Пользователь, которому назначили роль Чтение контрагентов, может считывать данные справочника Контрагенты, но при обращении к справочнику Банки получит ошибку Нарушение прав доступа.

Нарушение прав доступа при записи данных

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

Пользователь, которому назначена роль Добавление и изменение сотрудников, может редактировать данные справочника Сотрудники, но при попытке изменения данных банка получит ошибку Нарушение прав доступа.

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

Для работы с внешними отчетами и обработками пользователю нужно назначить одну из ролей:

  • Полные права;
  • Интерактивное открытие внешних отчетов и обработок.

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

Добавление нового пользователя

В 1С заложена автоматическая проверка прав того набора объектов 1С, который определяется профилем групп доступа:

  • Администратор;
  • Главный бухгалтер;
  • Бухгалтер;
  • Только чтение;
  • и т. д.

Программа скроет все объекты, на которые у пользователя нет прав:

  • у пользователя Менеджер с ограниченными правами список документов отгрузки будет пуст;

  • у пользователя с Полными правами отобразится полный список документов отгрузки.

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

  • у пользователя Менеджер — кнопка Записать и Провести неактивны;

  • у пользователя с Полными правами — есть возможность изменения данных (кнопка Записать и закрыть активна).

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

Ошибка при проведении документа реализация (акт, накладная)

При записи документа должно быть установлено право изменения этого документа у пользователя. Но при проведении документа помимо него самого задействуются и другие объекты — создаются записи в различные регистры.

Если вы указали в новой роли право только на документ Реализация (акт, накладная), этого недостаточно. По кнопке Дт/Кт уточните, какие регистры используются при проведении документа и добавьте их в новую роль с активными свойствами:

  • Чтение;
  • Изменение;
  • Просмотр;
  • Редактирование.

Ошибка при попытке открыть карточку контрагента под определенным пользователем

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

Если в подробном описании ошибки программа не указывает регистр, при записи данных в который происходит ошибка, вам придется выяснить это самостоятельно. Для недоработанной типовой конфигурации Бухгалтерия 3.0 при открытии справочника Контрагенты могут использоваться:

  • регистр бухгалтерии Хозрасчетный;
  • регистр бухгалтерии Курсы валют;
  • регистр бухгалтерии Наличие дублей у контрагентов;
  • и т. д.

Эти регистры включены в программный модуль справочника Контрагенты.

Проверьте, что у пользователя есть права на эти регистры. Более серьезный анализ ситуации выполняется по программному коду процедуры открытия формы справочника.

Эта работа требует особой подготовки и квалификации.

Ошибка при открытии внешнего отчета

Для открытия внешних отчетов и обработок 1С необходимо добавить пользователю роль Интерактивное открытие внешних отчетов и обработок. После этого он сможет работать с внешним отчетом без ошибок.

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

TAYSON94

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

1

Ошибка при проведении документа

20.04.2020, 10:10. Показов 2043. Ответов 32

Метки нет (Все метки)


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

При проведении документа ошибка
вот мой код

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    // регистр ОстаткиМатериалов Расход
    Движения.ОстаткиМатериалов.Записывать = Истина;
    Движения.СтоимостьМатериалов.Записывать=Истина;
    Движения.Продажи.Записывать=Истина;
    
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
МенеджерВТ=Новый МенеджерВременныхТаблиц; 
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц=МенеджерВТ;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидыНоменклатуры КАК ВидыНоменклатуры,
        |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
        |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
        |ПОМЕСТИТЬ НоменклатураДокумента
        |ИЗ
        |   Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
        |ГДЕ
        |   ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидыНоменклатуры";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    РезультатЗапроса = Запрос.Выполнить();
        Запрос2=Новый Запрос;
            Запрос2.МенеджерВременныхТаблиц=МенеджерВТ;
            Запрос2.Текст=
                        "ВЫБРАТЬ
                          | НоменклатураДокумента.Номенклатура,
                          | НоменклатураДокумента.КоличествоВДокументе,
                          | НоменклатураДокумента.СуммаВДокументе,
                          | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
                          | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество,
                          | НоменклатураДокумента.ВидыНоменклатуры
                          |ИЗ
                          | НоменклатураДокумента КАК НоменклатураДокумента
                          |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
                          |             ,
                          |             Материал В
                          |                 (ВЫБРАТЬ
                          |                     НоменклатураДокумента.Номенклатура
                          |                 ИЗ
                          |                     НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
                          |     ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
                          |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
                          |             ,
                          |             Материал В
                          |                 (ВЫБРАТЬ
                          |                     НоменклатураДокумента.Номенклатура
                          |                 ИЗ
                          |                     НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
                          |     ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал";
                          
        Движения.СтоимостьМатериалов.Записать();
        Движения.ОстаткиМатериалов.Записать();
      Результат=Запрос2.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.Количество=0 Тогда СтоимостьМатериала=0;
        Иначе
            СтоимостьМатериала=ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество;
        КонецЕсли;
        
        Если ВыборкаДетальныеЗаписи.ВидыНоменклатуры=Перечисления.ВидыНоменклатуры.материал тогда
        Движение=Движения.ОстаткиМатериалов.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
        Движение.Склад = Склад;
        Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
        Движение=Движения.СтоимостьМатериалов.Добавить(); 
        Движение.ВидДвижения=ВидДвиженияНакопления.Расход; 
        Движение.Период=Дата; 
        Движение.Материал=ВыборкаДетальныеЗаписи.номенклатура; 
        Движение.Стоимость=ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;   
    Конецесли;
        Движение=Движения.Продажи.Добавить();
    Движение.Период=Дата;
    Движение.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура; 
 
    Движение.Клиент=Клиент;
    Движение.Мастер=Мастер;
    
    Движение.Количество=ВыборкаДетальныеЗаписи.КоличествоВДокументе; 
    Движение.Выручка=ВыборкаДетальныеЗаписи.СуммаВДокументе; 
    Движение.Стоимость=СтоимостьМатериала*ВыборкаДетальныеЗаписи.КоличествоВДокументе;
 
// Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
 
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

Миниатюры

Ошибка при проведении документа
 

0

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

20.04.2020, 10:11

 [ТС]

2

Кликните здесь для просмотра всего текста

Ошибка при проведении документа

0

1153 / 700 / 203

Регистрация: 22.04.2013

Сообщений: 5,205

Записей в блоге: 1

20.04.2020, 11:27

3

если не найдено поле виды номенклатуры, о чём русским по белому написано — значит надо обойтись без него или найти, где оно находится и почему путь, написанный вами, не может его найти

Кликните здесь для просмотра всего текста

Не по теме:

п.с. вы всё равно продолжаете писать код руками? конструктором запросов впадлу пользоваться?

0

TAYSON94

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

20.04.2020, 11:46

 [ТС]

4

Как без него обойтись то
попробовал вот так все равно такая же ошибка

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 
    // регистр ОстаткиМатериалов Расход
    Движения.ОстаткиМатериалов.Записывать = Истина;
    Движения.СтоимостьМатериалов.Записывать=Истина;
    Движения.Продажи.Записывать=Истина;
 
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
МенеджерВТ=Новый МенеджерВременныхТаблиц; 
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц=МенеджерВТ;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидыНоменклатуры КАК ВидыНоменклатуры,
        |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
        |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
        |ПОМЕСТИТЬ НоменклатураДокумента
        |ИЗ
        |   Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
        |ГДЕ
        |   ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
        |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидыНоменклатуры";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
        Движения.СтоимостьМатериалов.БлокироватьДляИзменения=Истина; 
        Движения.ОстаткиМатериалов.БлокироватьДляИзменения=Истина; 
        движения.СтоимостьМатериалов.Записать(); 
        Движения.ОстаткиМатериалов.Записать(); 
        // Результат = Запрос.Выполнить();
    РезультатЗапроса = Запрос.Выполнить();
        Запрос2=Новый Запрос;
            Запрос2.МенеджерВременныхТаблиц=МенеджерВТ;
            Запрос2.Текст=
                        "ВЫБРАТЬ
                          | НоменклатураДокумента.Номенклатура,
                          | НоменклатураДокумента.КоличествоВДокументе,
                          | НоменклатураДокумента.СуммаВДокументе,
                          | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
                          | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество,
                          | НоменклатураДокумента.ВидыНоменклатуры
                          |ИЗ
                          | НоменклатураДокумента КАК НоменклатураДокумента
                          |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
                          |             ,
                          |             Материал В
                          |                 (ВЫБРАТЬ
                          |                     НоменклатураДокумента.Номенклатура
                          |                 ИЗ
                          |                     НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
                          |     ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
                          |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
                          |             ,
                          |             Материал В
                          |                 (ВЫБРАТЬ
                          |                     НоменклатураДокумента.Номенклатура
                          |                 ИЗ
                          |                     НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
                          |     ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал";
                          
        Движения.СтоимостьМатериалов.Записать();
        Движения.ОстаткиМатериалов.Записать();
      Результат=Запрос2.Выполнить();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.Количество=0 Тогда СтоимостьМатериала=0;
        Иначе
            СтоимостьМатериала=ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество;
        КонецЕсли;
        
        Если ВыборкаДетальныеЗаписи.ВидыНоменклатуры=Перечисления.ВидыНоменклатуры.материал тогда
        Движение=Движения.ОстаткиМатериалов.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
        Движение.Склад = Склад;
        Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
        Движение=Движения.СтоимостьМатериалов.Добавить(); 
        Движение.ВидДвижения=ВидДвиженияНакопления.Расход; 
        Движение.Период=Дата; 
        Движение.Материал=ВыборкаДетальныеЗаписи.номенклатура; 
        Движение.Стоимость=ВыборкаДетальныеЗаписи.КоличествоВДокументе * СтоимостьМатериала;   
        движение=движения.Управленческий.Добавить(); 
        движение.СчетДт=ПланыСчетов.Основной.ДебиторскаяЗадолженность; 
        движение.СчетКт=ПланыСчетов.Основной.Капитал; 
        движение.Период=Дата; 
        движение.Сумма=ВыборкаДетальныеЗаписи.СуммаВДокументе; 
        движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Клиенты] = Клиент; 
        движение=движения.Управленческий.Добавить(); 
        движение.СчетДт=ПланыСчетов.Основной.Капитал; 
        движение.СчетКт=ПланыСчетов.Основной.Товары; 
        движение.Период=Дата; 
        движение.Сумма = СтоимостьМатериала* ВыборкаДетальныеЗаписи.КоличествоВДокументе; 
        движение.КоличествоКт=ВыборкаДетальныеЗаписи.КоличествоВДокументе; 
        движение.СубконтоКт [ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ВыборкаДетальныеЗаписи.Номенклатура; 
    Конецесли;
        Движение=Движения.Продажи.Добавить();
    Движение.Период=Дата;
    Движение.Номенклатура=ВыборкаДетальныеЗаписи.Номенклатура; 
 
    Движение.Клиент=Клиент;
    Движение.Мастер=Мастер;
    
    Движение.Количество=ВыборкаДетальныеЗаписи.КоличествоВДокументе; 
    Движение.Выручка=ВыборкаДетальныеЗаписи.СуммаВДокументе; 
    Движение.Стоимость=СтоимостьМатериала*ВыборкаДетальныеЗаписи.КоличествоВДокументе;
 
// Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;
    Движения.Записать(); 
    Если Режим=РежимПроведенияДокумента.Оперативный Тогда 
        Запрос3=Новый Запрос; 
        Запрос3.МенеджерВременныхТаблиц=МенеджерВТ; 
        Запрос3.Текст="ВЫБРАТЬ
                      | ОстаткиМатериаловОстатки.Материал,
                      | ОстаткиМатериаловОстатки.КоличествоОстаток
                      |ИЗ
                      | РегистрНакопления.ОстаткиМатериалов.Остатки(
                      |         ,
                      |         Материал В
                      |                 (ВЫБРАТЬ
                      |                     НоменклатураДокумента.Номенклатура
                      |                 ИЗ
                      |                     НоменклатураДокумента)
                      |             И Склад = &Склад) КАК ОстаткиМатериаловОстатки
                      |ГДЕ
                      | ОстаткиМатериаловОстатки.КоличествоОстаток < 0"; 
        Запрос3.УстановитьПараметр("Склад",Склад); 
        Результат=Запрос3.Выполнить(); 
    КонецЕсли; 
    ВыборкаДетальныеЗаписи=Результат.Выбрать(); 
     Пока ВыборкаДетальныеЗаписи.Следующий()Цикл 
     Сообщение=Новый СообщениеПользователю(); 
     Сообщение.Текст="Не хватает"+Строка(-ВыборкаДетальныеЗаписи.Количество)+"единиц материала""""+ВыборкаДетальныеЗаписи.Материал+"""; 
     Сообщение.Сообщить(); 
     Отказ=Истина; 
 КонецЦикла; 
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
 
    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

0

198 / 158 / 45

Регистрация: 23.08.2014

Сообщений: 807

20.04.2020, 12:20

5

TAYSON94, нету у вас в справочнике номеклатура, реквизита ВидНоменклатуры.
У вас 2 варианта, либо создайте этот реквизит либо редактируйте запрос.

0

1153 / 700 / 203

Регистрация: 22.04.2013

Сообщений: 5,205

Записей в блоге: 1

20.04.2020, 12:21

6

Цитата
Сообщение от TAYSON94
Посмотреть сообщение

ОказаниеУслугиПереченьНоменклатуры.Номенклатура.Ви дыНоменклатуры

у вас ругается на вот это вот
откройте справочник номенклатура. посмотрите, как называется его реквизит
уверен, что «видыноменклатуры» вы там не найдёте

0

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

20.04.2020, 13:32

 [ТС]

7

Есть у меня этот реквизит вот посмотрите !

Кликните здесь для просмотра всего текста

Ошибка при проведении документа

0

371 / 175 / 74

Регистрация: 04.03.2020

Сообщений: 662

20.04.2020, 14:15

8

А вот в документе ОказаниеУслуги в ТЧ ПереченьНоменклатуры Номенклатура точно типа Справочник.Номенклатура?

0

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

20.04.2020, 14:37

 [ТС]

9

Вот

Кликните здесь для просмотра всего текста

Ошибка при проведении документа

Кликните здесь для просмотра всего текста

Ошибка при проведении документа

0

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

20.04.2020, 17:01

 [ТС]

10

Подскажите пожалуйста начинающему 1снику может я чего то не понимаю не с начала же начинать

0

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

20.04.2020, 17:13

 [ТС]

11

Сделал ВидНоменклатуры , теперь Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{Документ.ОказаниеУслуги.МодульОбъекта(67)}: Ошибка при вызове метода контекста (Выполнить)
Результат=Запрос2.Выполнить();
по причине:
{(25, 68)}: Поле не найдено «ОстаткиМатериаловОстатки.Материал»
ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.<<?>>Материал

0

1153 / 700 / 203

Регистрация: 22.04.2013

Сообщений: 5,205

Записей в блоге: 1

20.04.2020, 17:48

12

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

0

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

20.04.2020, 18:01

 [ТС]

13

Не понятно где скобки ставить

Кликните здесь для просмотра всего текста

Ошибка при проведении документа

Кликните здесь для просмотра всего текста

Ошибка при проведении документа

0

1153 / 700 / 203

Регистрация: 22.04.2013

Сообщений: 5,205

Записей в блоге: 1

20.04.2020, 18:23

14

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

Миниатюры

Ошибка при проведении документа
 

0

TAYSON94

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

20.04.2020, 22:57

 [ТС]

15

Подскажите пожалуйста при проведении документа оказание услуг ошибка
Вот новый код

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
  Процедура ОбработкаПроведения(Отказ, Режим)
    МенеджерВТ=Новый МенеджерВременныхТаблиц;
    Запрос =Новый Запрос;
    Запрос.МенеджерВременныхТаблиц=МенеджерВТ;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
    |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
    |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
    |ПОМЕСТИТЬ НоменклатураДокумента
    |ИЗ
    |   Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
    |ГДЕ
    |   ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
    |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры";    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Движения.СтоимостьМатериалов.БлокироватьДляИзменения=Истина;
    Движения.ОстаткиМатериалов.БлокироватьДляИзменения=Истина;
    движения.СтоимостьМатериалов.Записать();
    Движения.ОстаткиМатериалов.Записать();
    Результат = Запрос.Выполнить();
     Запрос2=Новый Запрос;
Запрос2.МенеджерВременныхТаблиц=МенеджерВТ;
Запрос2.Текст="ВЫБРАТЬ
              | НоменклатураДокумента.Номенклатура,
              | НоменклатураДокумента.ВидНоменклатуры,
              | НоменклатураДокумента.КоличествоВДокументе,
              | НоменклатураДокумента.СуммаВДокументе,
              | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
              | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
              |ИЗ
              | НоменклатураДокумента КАК НоменклатураДокумента
              |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
              |             ,
              |             Материал В
              |                 (ВЫБРАТЬ
              |                     НоменклатураДокумента.Номенклатура
              |                 ИЗ
              |                     НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
              |     ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
              |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
              |             ,
              |             Материалы В
              |                 (ВЫБРАТЬ
              |                     НоменклатураДокумента.Номенклатура
              |                 ИЗ
              |                     НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
              |     ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материалы";
              Движения.СтоимостьМатериалов.Записать();
              движения.ОстаткиМатериалов.Записать();
              Результат=Запрос2.Выполнить();
               ВыборкаДетальныеЗаписи = Результат.Выбрать();
               Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество=0 Тогда
СтоимостьМатериала=0;
Иначе
СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость
/ВыборкаДетальныеЗаписи. Количество;
КонецЕсли;
Если ВыборкаДетальныеЗаписи.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материалы тогда
    Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материалы = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение=Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения=ВидДвиженияНакопления.Расход;
Движение.Период=Дата;
Движение.Материал=ВыборкаДетальныеЗаписи.номенклатура;
Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе *
СтоимостьМатериала;
конецЕсли;
 движение=движения.Продажи.Добавить();
движение.Период=Дата;
движение.Номенклатура=ВыборкаДетальныеЗаписи.номенклатура;
Движение.клиент=Клиент;
движение.мастер=мастер;
движение.Количество= ВыборкаДетальныеЗаписи.КоличествоВДокументе;
движение.выручка=ВыборкаДетальныеЗаписи.суммаВДокументе;
движение.стоимость =СтоимостьМатериала * ВыборкаДетальныеЗаписи.количествоВДокументе;
КонецЦикла;
Движения.Записать();
Если Режим=РежимПроведенияДокумента.Оперативный Тогда
Запрос3=Новый Запрос;
 Запрос3.МенеджерВременныхТаблиц=МенеджерВТ;
 Запрос3.Текст="ВЫБРАТЬ
              | ОстаткиМатериаловОстатки.Материалы,
              | ОстаткиМатериаловОстатки.КоличествоОстаток
              |ИЗ
              | РегистрНакопления.ОстаткиМатериалов.Остатки(
              |         ,
              |         Материалы В
              |                 (ВЫБРАТЬ
              |                     НоменклатураДокумента.Номенклатура
              |                 ИЗ
              |                     НоменклатураДокумента)
              |             И Склад = &Склад) КАК ОстаткиМатериаловОстатки
              |ГДЕ
              | ОстаткиМатериаловОстатки.КоличествоОстаток < 0";
              Запрос3.УстановитьПараметр("Склад",Склад);
              Результат=Запрос3.Выполнить();
КонецЕсли;
ВыборкаДетальныеЗаписи=Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий()Цикл
Сообщение=Новый СообщениеПользователю();
Сообщение.Текст="Не хватает"+Строка(-ВыборкаДетальныеЗаписи.Количество)+"единиц материала""""+ВыборкаДетальныеЗаписи.Материал+""";
Сообщение.Сообщить();
Отказ=Истина;
 КонецЦикла;
КонецПроцедуры

Кликните здесь для просмотра всего текста

Ошибка при проведении документа

0

Dethmontt

Модератор

Эксперт 1С

3711 / 2907 / 573

Регистрация: 10.03.2011

Сообщений: 11,447

Записей в блоге: 1

24.04.2020, 08:33

16

Цитата
Сообщение от TAYSON94
Посмотреть сообщение

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Если Режим=РежимПроведенияДокумента.Оперативный Тогда
Запрос3=Новый Запрос;
 Запрос3.МенеджерВременныхТаблиц=МенеджерВТ;
 Запрос3.Текст="ВЫБРАТЬ
              | ОстаткиМатериаловОстатки.Материалы,
              | ОстаткиМатериаловОстатки.КоличествоОстаток
              |ИЗ
              | РегистрНакопления.ОстаткиМатериалов.Остатки(
              |         ,
              |         Материалы В
              |                 (ВЫБРАТЬ
              |                     НоменклатураДокумента.Номенклатура
              |                 ИЗ
              |                     НоменклатураДокумента)
              |             И Склад = &Склад) КАК ОстаткиМатериаловОстатки
              |ГДЕ
              | ОстаткиМатериаловОстатки.КоличествоОстаток < 0";
              Запрос3.УстановитьПараметр("Склад",Склад);
              Результат=Запрос3.Выполнить();
КонецЕсли;
ВыборкаДетальныеЗаписи=Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий()Цикл
Сообщение=Новый СообщениеПользователю();
Сообщение.Текст="Не хватает"+Строка(-ВыборкаДетальныеЗаписи.Количество)+"единиц материала""""+ВыборкаДетальныеЗаписи.Материал+""";
Сообщение.Сообщить();
Отказ=Истина;
 КонецЦикла;
КонецПроцедуры

А если режим не опреративный?

Добавлено через 2 минуты

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

1C
1
2
3
4
5
6
7
ВыборкаДетальныеЗаписи=Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий()Цикл
Сообщение=Новый СообщениеПользователю();
Сообщение.Текст="Не хватает"+Строка(-ВыборкаДетальныеЗаписи.Количество)+"единиц материала""""+ВыборкаДетальныеЗаписи.Материал+""";
Сообщение.Сообщить();
Отказ=Истина;
 КонецЦикла;

вот эту гадость воткни внутрь условия (если оперативный)

0

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

24.04.2020, 08:48

 [ТС]

17

Воткнул теперь другая ошибка
Ошибка при выполнении обработчика — ‘ОбработкаПроведения’
по причине:
{Документ.ОказаниеУслуги.МодульОбъекта(55)}: Ошибка при вызове метода контекста (Выполнить)
Результат=Запрос2.Выполнить();
по причине:
{(25, 71)}: Поле не найдено «ОстаткиМатериаловОстатки.Материалы»
ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.<<?>>Материалы

0

Модератор

Эксперт 1С

3711 / 2907 / 573

Регистрация: 10.03.2011

Сообщений: 11,447

Записей в блоге: 1

24.04.2020, 08:58

18

TAYSON94, интересно, какая связь между запрос2 и запрос3 ???

Весь код в студию, а то вы ЧУШЬ какую-то пишите

Добавлено через 3 минуты

Не по теме:

Yulunga, Помоги человеку разобраться в его каракулях! Я спать пошел…

0

TAYSON94

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

24.04.2020, 09:03

 [ТС]

19

Пожалуйста

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
 Процедура ОбработкаПроведения(Отказ, Режим)
    МенеджерВТ=Новый МенеджерВременныхТаблиц;
    Запрос =Новый Запрос;
    Запрос.МенеджерВременныхТаблиц=МенеджерВТ;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
    |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
    |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
    |   СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
    |ПОМЕСТИТЬ НоменклатураДокумента
    |ИЗ
    |   Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
    |ГДЕ
    |   ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
    |   ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры";    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Движения.СтоимостьМатериалов.БлокироватьДляИзменения=Истина;
    Движения.ОстаткиМатериалов.БлокироватьДляИзменения=Истина;
    движения.СтоимостьМатериалов.Записать();
    Движения.ОстаткиМатериалов.Записать();
    Результат = Запрос.Выполнить();
     Запрос2=Новый Запрос;
Запрос2.МенеджерВременныхТаблиц=МенеджерВТ;
Запрос2.Текст="ВЫБРАТЬ
              | НоменклатураДокумента.Номенклатура,
              | НоменклатураДокумента.ВидНоменклатуры,
              | НоменклатураДокумента.КоличествоВДокументе,
              | НоменклатураДокумента.СуммаВДокументе,
              | ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
              | ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
              |ИЗ
              | НоменклатураДокумента КАК НоменклатураДокумента
              |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
              |             ,
              |             Материал В
              |                 (ВЫБРАТЬ
              |                     НоменклатураДокумента.Номенклатура
              |                 ИЗ
              |                     НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
              |     ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
              |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
              |             ,
              |             Материал В
              |                 (ВЫБРАТЬ
              |                     НоменклатураДокумента.Номенклатура
              |                 ИЗ
              |                     НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
              |     ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал";
              Движения.СтоимостьМатериалов.Записать();
              движения.ОстаткиМатериалов.Записать();
              Результат=Запрос2.Выполнить();
               ВыборкаДетальныеЗаписи = Результат.Выбрать();
               Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество=0 Тогда
СтоимостьМатериала=0;
Иначе
СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость
/ВыборкаДетальныеЗаписи. Количество;
КонецЕсли;
Если ВыборкаДетальныеЗаписи.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материалы тогда
    Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материалы = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение=Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения=ВидДвиженияНакопления.Расход;
Движение.Период=Дата;
Движение.Материал=ВыборкаДетальныеЗаписи.номенклатура;
Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе *
СтоимостьМатериала;
конецЕсли;
 движение=движения.Продажи.Добавить();
движение.Период=Дата;
движение.Номенклатура=ВыборкаДетальныеЗаписи.номенклатура;
Движение.клиент=Клиент;
движение.мастер=мастер;
движение.Количество= ВыборкаДетальныеЗаписи.КоличествоВДокументе;
движение.выручка=ВыборкаДетальныеЗаписи.суммаВДокументе;
движение.стоимость =СтоимостьМатериала * ВыборкаДетальныеЗаписи.количествоВДокументе;
КонецЦикла;
Движения.Записать();
Если Режим=РежимПроведенияДокумента.Оперативный Тогда
Запрос3=Новый Запрос;
 Запрос3.МенеджерВременныхТаблиц=МенеджерВТ;
 Запрос3.Текст="ВЫБРАТЬ
              | ОстаткиМатериаловОстатки.Материалы,
              | ОстаткиМатериаловОстатки.КоличествоОстаток
              |ИЗ
              | РегистрНакопления.ОстаткиМатериалов.Остатки(
              |         ,
              |         Материалы В
              |                 (ВЫБРАТЬ
              |                     НоменклатураДокумента.Номенклатура
              |                 ИЗ
              |                     НоменклатураДокумента)
              |             И Склад = &Склад) КАК ОстаткиМатериаловОстатки
              |ГДЕ
              | ОстаткиМатериаловОстатки.КоличествоОстаток < 0";
              Запрос3.УстановитьПараметр("Склад",Склад);
              Результат=Запрос3.Выполнить();
КонецЕсли;
ВыборкаДетальныеЗаписи=Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий()Цикл
Сообщение=Новый СообщениеПользователю();
Сообщение.Текст="Не хватает"+Строка(-ВыборкаДетальныеЗаписи.Количество)+"единиц материалы""""+ВыборкаДетальныеЗаписи.Материалов+""";
Сообщение.Сообщить();
Отказ=Истина;
 КонецЦикла;
  КонецПроцедуры

0

0 / 0 / 0

Регистрация: 16.09.2016

Сообщений: 176

24.04.2020, 09:05

 [ТС]

20

Ошибка вот эта

Кликните здесь для просмотра всего текста

Ошибка при проведении документа

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

24.04.2020, 09:05

Помогаю со студенческими работами здесь

Запрос к регистру накопления при проведении документа
Подскажите, плиз, как при проведении документа &quot;Реализация товаров и услуг&quot; определить сколько…

Автоматическое формирование подчиненного документа при проведении
Доброго дня! При проведении одного документа формирую другой, вызывая процедуру из…

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

Создать элемент в справочнике при проведении документа
1С:Предприятие 8.3

Есть документ &quot;Собеседование&quot;, справочник &quot;Сотрудники&quot;
Нужно при проведении…

Как изменить время при оперативном проведении документа
Здравствуйте! Подскажите, пожалуйста, можно ли, чтобы при оперативном проведении документа…

Запись данных в регистр при проведении документа (УТ11)
Добрый день!
Подскажите пожалуйста, как можно получать данные при проведении документа и…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

20

  1. Всем привет!

    В обработке проведения делаю проверку на наличие проведенных документов на основании, и если таковые есть — выдаю ошибку, что нужно их распровести и делаю «Отказ = Истина». При этом выдается сервисное сообщение «Не удалось провести [название документа]. Ок, Подробно…».

    Начальника хочет, чтобы выводилось одно сообщение о том, что не проведено, т.к. есть документы на основании. Как вывести свое сообщение и не выводить сервисное?

  2. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204
  3. Если можно, чуть подробнее. В каком месте использовать попытку и что в ней пытаться сделать? Я же не программно провожу, а стандартными средствами.

  4. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

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

  5. Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    TylerDurdenIII
    в суть не вдумывался. Пока вопросы:
    1) почему вы это делаете (проверку) именно в обработке проведения документа? Почему например нельзя сделать это раньше, например перед записью документа?
    2) всю задачу не знаю, это зависит уже от нее, поэтому может быть не актуально, но: судя по первому посту подразумевается что это проведение ваше запускает пользователь, и ему выводится какое-то сообщение. В итоге: вашу проверку действительно в модуле объекта надо делать, или же допустимо вообще убрать ее в модуль формы?

  6. 1) Если делать в процедуре ПередЗаписью также придется ставить Отказ=Истина, который приведет к сообщению «Не удалось провести [название документа]».
    2) Если в форму поместить код, то не отработает при проведении из списка.

  7. Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Главный вопрос — для чего это ????
    Это влияет на бизнес-логику ?
    Это влияет на скорость работы ИБ ?
    Это влияет на оперативность ?
    На что это влияет ????

  8. Есть такие люди, которые хотят и все тут. Мешает им видите ли лишнее отвлекающее от основного сообщение. Буду убеждать, что не надо это, просто уже интересно как же можно это сделать если это возможно.

  9. Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    2) Понял. Принимается.
    1) ПередЗаписью() использовать в любом случае лучше, не будет лишних расчетов, выполняемых в процедуре проведения

    Еще уточняющий вопрос: контролировать (выводить ваше сообщение) надо именно при проведении документа или при отмене проведения?

  10. Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Ну ок.
    Смотрите, я не знаю как вы выводите ваше сообщение (Предупреждение())? Т.е. модальным окном что-ли, что у вас два она появляется?
    Если так, то рекомендуемый мной вариант: сделать точно также как реализовано стандартно. Т.е. выводите причину ошибки при помощи «ОбщегоНазначения.СообщитьОбОшибке()», она появляется внизу экрана в окне сообщений, и на экране это ваше системное окно о том что невозможно провести (записать) документ.
    Если же упорно так не хотите, ну единственный вариант который я знаю: вызовите собственное исключение в процедуре проведения (ВызватьИсключение <Текст>).

  11. В данный момент все как вы и описали — служебное сообщение выскакивает, а мое сообщение внизу экрана. Клиент упорно хочет одно сообщение.
    Есть ли подводные камни у вызова исключения из проведения? Не делает ли платформа еще чего важного кроме вывода сообщения при отказе?

  12. Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Да нет. Чего она важного может делать? Вызываете исключение — транзакция записи прерывается.

Похожие темы

  1. Vertex

    Ответов:
    12
    Просмотров:
    1.235

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Выгрузка загрузка xml ошибка преобразования данных xdto
  • Выглядел более красивее исправить ошибки
  • Выводы комиссии обоснованные и справедливые исправить ошибки
  • Выводы комиссии обоснованные и справедливые где ошибка
  • Вывод формулы для расчета ошибки определения

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: