1. ulvi96 14.03.19 01:44 Сейчас в теме

1С Документы

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

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

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

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

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

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


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

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

Вакансии

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)