1С Документы

1. _7445_ 14.03.19 01:44 Сейчас в теме
Здравствуйте. Я плохо знаю русский. Извините за этого. Я еще новичок в 1С программирование. Конфигурация БП. В документе есть реквизит ответственный. Когда пользователь нажимает кнопку "ОК" или "Записать" тогда этот реквизит изменяется автоматически. Но надо что реквизит изменялся только при нажатие "ОК". При нажатие "Записать" не чего не изменился. Где надо написать код? Какой модуль?
Спасибо всем за ранее.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Aitbay 14.03.19 06:05 Сейчас в теме
открыть модуль документа
копать в сторону процедур ПередЗаписью, ПриЗаписи, ОбработкаПроведения, или подписка на событие приЗаписиДокумента
3. SedovSU@mail.ru 298 14.03.19 06:19 Сейчас в теме
Ну вот смотрите. Когда пользователь нажимаете по кнопке Записать, тогда происходит событие Записи, но если документ был проведен - то будет инициализировано событие записи и проведении. Если же пользователь нажимаете по кнопке ОК то происходит сперва запись, затем проведение документа, далее его закрытие.

То что вы хотите однозначно нужно написать либо в процедуре ПередЗаписью или в ОбработкеПроведения. Я бы для себя написал в процедуре ПередЗаписью , но только в том случае если РежимЗаписиДокумента = Проведение

Процедура ПередЗаписью(Отказ, РежимЗаписи)
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не Отказ Тогда
      Ответственный = ПараметрыСеанса.ТекущийПользователь
КонецЕсли
КонецПроцедуры
5. ranis888 101 14.03.19 08:18 Сейчас в теме
(3) А лучше это сделать через расширение и вывести вместо команды Перед записью
6. SedovSU@mail.ru 298 14.03.19 08:21 Сейчас в теме
(5) Да конечно, такой вариант предпочтителен путем использования расширения
4. SedovSU@mail.ru 298 14.03.19 06:24 Сейчас в теме
ПередЗаписью вот этот код

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не Отказ Тогда
      Ответственный = ПараметрыСеанса.ТекущийПользователь
КонецЕсли
КонецПроцедуры

ПриЗаписи вот этот код

Процедура ПриЗаписи(Отказ)
Если Не Отказ Тогда
      Ответственный = ПараметрыСеанса.ТекущийПользователь
КонецЕсли
КонецПроцедуры


В процедуре проведения

Процедура ОбработкаПроведения(Отказ, Режим)
/// ................ тут код обработки проведения, ваш код пишите в самом конце
Если Не Отказ Тогда
Ответственный = ПараметрыСеанса.ТекущийПользователь;
Записать(РежимЗаписиДокумента.Запись); // тут нужно еще раз будет записать объект
КонецЕсли
КонецПроцедуры
7. oleg-x 22 15.03.19 15:11 Сейчас в теме
(4) Если документ проведен, то не важно что нажали "ок" или "записать", режим записи будет всегда проведение. Так что, таким образом не определить.
8. SedovSU@mail.ru 298 18.03.19 06:15 Сейчас в теме
(7) Да все верно, если у становлен признак проведения То хоть что наживай будет проведение. Но чтобы поймать событие с установленым признаком, можно использовать признак РежимЗаписи
9. oleg-x 22 18.03.19 09:41 Сейчас в теме
(8) Берем проведенный документ. Нажимаем записать и смотрим что будет в признаке РежимЗаписиДокумента, а там мы видим "Проведение".
И как отловить по такому признаку, что нажали "ок"?
10. SedovSU@mail.ru 298 18.03.19 09:51 Сейчас в теме
(9) А этот признак ни как не отловить
11. oleg-x 22 18.03.19 09:53 Сейчас в теме
Вообщем отловить видимо можно, только убрав стандартные кнопки и вместо них написать свои процедуры и там присваивать нужный признак.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот