17 июля 2025
1C-RarusTechDay 2025
8-я открытая техническая конференция для специалистов 1С
Зарегистрироваться
1C-RarusTechDay 2025 — 8‑я открытая техническая конференция для специалистов 1С

Согласованная сумма документа

Декоративное изображение

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

Пользователь ПП
RSS
При нажатии на "Валюта" и "Итого"
выскочила таблица "Введите согласованную сумму".
Можно рассказать порядок действий при работе с данной таблицей.

Прикрепленные файлы

Декоративное изображение 7
Сотрудник 1С-Рарус
Добрый день, Станислав, согласованная сумма ремонта - это оговоренная с клиентом заранее сумма стоимости ремонта: допустим, к нам приезжает клиент, и мы с ним договариваемся, что ремонт будет стоить 10000. Вводим в данном окне эту сумму (что-то наподобие блокнота). Сделали ремонт, и оказалось, что итоговая сумма превышает эту сумму, звоним клиенту и сообщаем ему данную информацию.  
Пользователь ПП
Насколько я понимаю, на поведение программы заполнение этой строки(согласованная сумма ремонта) никак не влияет. Как будто её и не заполнили, программа позволит дальше работать с ЗН(записывать, проводить, закрывать) при превышении согласованной суммы.
Если повесить на запись или проведение ЗН "значимое событие", можно ли не дать пользователю записать/провести ЗН если превышена согласованная сумма.
За что отвечают пункты в "значимых событиях" : "Выполнять действия в транзакции", "В случае исключения прерывать выполнение", "В случае исключения продолжать выполнение"
Идея вызвать исключение и не дать провести документ если превышена согласованная сумма.
Сотрудник 1С-Рарус
Добрый день, Илья.
Совершенно верно, данная строка не влияет на проведение документа.
Значимые события Вы можете настроить по своему усмотрению, мы предоставляем только механизм значимых событий, а настраивает их для проведения специалист, который разбирается в языке программирования 1С. Сотрудники компании 1С-Рарус не оказывают консультации по программированию на платформе 1С. Возможно, кто-то из участников форума даст Вам совет, это не запрещается правилами форума.
Пользователь ПП
Если внимательно перечитать моё сообщение, можно увидеть в нем 2 вопроса:
1. Если повесить на запись или проведение ЗН "значимое событие", можно ли  не дать пользователю записать/провести ЗН если превышена согласованная  сумма?
2. За что отвечают пункты в "значимых событиях" : "Выполнять действия в  транзакции", "В случае исключения прерывать выполнение", "В случае  исключения продолжать выполнение"?

Ни на один вы не ответили. Я не просил привести примеры кода, не просил показать как можно это сделать и пр. Опять ответ без ответа. Мы сделали, а как это работает - догадайся сам.
Сотрудник 1С-Рарус
Илья,
1. с помощью значимых событий можно сделать указанные Вами настройки
2. Выполнять действия в транзакции - все действия значимого события выполняются в рамках одной транзакции. Если в одном из действий произойдет ошибка, то транзакция будет отменена. В случае исключения прерывать выполнение - в случае возникновения ошибки в одном из действий, дальнейшие действия выполнятся не будут. Однако, результат работы предыдущих действий отменен не будет. В случае исключения продолжить выполнение - в случае возникновения ошибки в одном из действий, это действие будет проигнорировано, а выполнение действий продолжится.
Интересующийся
Цитата
Светлана Сулименко написал:
1. с помощью значимых событий можно сделать указанные Вами настройки

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

С настройками значимого события все довольно однозначно - на событие "ПриЗаписи" заказ-наряда вешаем условие, что состояние равно "Выполнен". А вот с действием на него возникает проблема. Во-первых, очевидно, что единственным подходящим нам видом действия является "Прочее" (т. е. выполнение произвольного кода).

Далее же нужно определиться со способом прерывания процесса записи. Наиболее красивым решением было бы из нашего произвольного кода перевести флаг "Отказ" процедуры "ПриЗаписи" в состояние "Истина". Однако в конечном итоге произвольный код выполняется в контексте процедуры "ВыполнитьПрочееДействие" общего модуля "сбСобытия":

Код
Процедура ВыполнитьПрочееДействие(ВыборкаИзРезультатЗапроса, Параметры)

   Попытка
      Выполнить(ВыборкаИзРезультатЗапроса.ПроизвольныйКод); // <<< Вот тут
   Исключение
      #Если Клиент Тогда
         Сообщить(ОписаниеОшибки());
      #КонецЕсли   
   КонецПопытки;

КонецПроцедуры

Выполняется эта процедура уже после обработчиков "ПриЗаписи" и "ОбработкаПроведения". Поэтому на флаг "Отказ", равно как и на ход записи или проведения документа, мы из нее повлиять не можем. Максимум, что мы можем отсюда выжать - это объект документа, вызвавшего значимое событие:

Код
Параметры.ОбъектИсточникСобытия

Поэтому с моей точки зрения, реализовать с помощью значимых событий дополнительные проверки при записи или проведении документа невозможно. Хотя, вполне вероятно, я что-то упускаю из вида.
Сотрудник 1С-Рарус
Приношу свои извинения: прервать запись или проведение документа через значимые события нельзя.
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С