Регистр сведений и связь его с документом
Доброго времени суток, форумчане
Делаю работу на практику в техникуме и столкнулся с проблемой, решение которой никак не могу найти и понять
У меня существует перечень заявок с реквизитом "Этап", я сделал регистр сведений, который выводит в каком документе и когда был изменен этап, но, во-первых, я не могу в регистре отобразить старый этап, который сменился на новый(новый отображается)
Во-вторых, если я в документе меняю любой другой реквизит, то в регистр сведений всё равно записывается запись, соответственно в ней не меняется ничего, а хотелось бы сделать так: В зависимости от измененного реквизита в документе - менялся бы смысл регистра, например: если изменили этап, то в регистре писалось "Был изменён этап с такого-то на такой-то", если изменили сотрудника, то "Был изменён сотрудник с такого-то на такого-то"
Возможно ли это реализовать и насколько сложно?
Заранее спасибо)
Делаю работу на практику в техникуме и столкнулся с проблемой, решение которой никак не могу найти и понять
У меня существует перечень заявок с реквизитом "Этап", я сделал регистр сведений, который выводит в каком документе и когда был изменен этап, но, во-первых, я не могу в регистре отобразить старый этап, который сменился на новый(новый отображается)
Во-вторых, если я в документе меняю любой другой реквизит, то в регистр сведений всё равно записывается запись, соответственно в ней не меняется ничего, а хотелось бы сделать так: В зависимости от измененного реквизита в документе - менялся бы смысл регистра, например: если изменили этап, то в регистре писалось "Был изменён этап с такого-то на такой-то", если изменили сотрудника, то "Был изменён сотрудник с такого-то на такого-то"
Возможно ли это реализовать и насколько сложно?
Заранее спасибо)
По теме из базы знаний
Найденные решения
Можно такое сделать!
Вот такой подход. Выбираете процедуру, например, перед записью в модуле объекта и пишите
Вот такой подход. Выбираете процедуру, например, перед записью в модуле объекта и пишите
Процедура ПередЗаписью(Отказ, Режим)
Если ЭтоНовый() Тогда
// делаете записи и по этапу и сотруднику т.к. это новая запись, на ваше усмотрение можете и не писать
Иначе
// Проверяем отличия реквизита этап
Если Этап <> Ссылка.Этап Тогда
// делаем записи по этапу
КонецЕсли
// Проверяем отличия реквизита Сотрудник
Если Сотрудник <> Ссылка.Сотрудник Тогда
// делаем записи по сотруднику
КонецЕсли
Конецесли
Конецпроцедуры
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Можно такое сделать!
Вот такой подход. Выбираете процедуру, например, перед записью в модуле объекта и пишите
Вот такой подход. Выбираете процедуру, например, перед записью в модуле объекта и пишите
Процедура ПередЗаписью(Отказ, Режим)
Если ЭтоНовый() Тогда
// делаете записи и по этапу и сотруднику т.к. это новая запись, на ваше усмотрение можете и не писать
Иначе
// Проверяем отличия реквизита этап
Если Этап <> Ссылка.Этап Тогда
// делаем записи по этапу
КонецЕсли
// Проверяем отличия реквизита Сотрудник
Если Сотрудник <> Ссылка.Сотрудник Тогда
// делаем записи по сотруднику
КонецЕсли
Конецесли
Конецпроцедуры
Показать
(4) А ещё не подскажите, у меня на главной вкладке находится две формы: список документов и список регистров, и после изменений документа, чтобы появился регистр - нужно нажимать кнопку "обновить" в списке регистров, можно ли как-то автоматизировать этот процесс, не применяя Автообновление(по времени) списка?
Прикрепленные файлы:
(6) ну или можно по другому:
В процедуре при записи в модуле объекта делаете оповещение
Процедура ПриЗаписи(Отказ)
Оповестить("ЗаписанДокумент")
КонецПроцедура
На форме списка создаете процедуру формы ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗаписанДокумент" Тогда
Элементы.РегистрСведенийИзмененияЗаявок.Обновить();
Конецесли
В процедуре при записи в модуле объекта делаете оповещение
Процедура ПриЗаписи(Отказ)
Оповестить("ЗаписанДокумент")
КонецПроцедура
На форме списка создаете процедуру формы ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗаписанДокумент" Тогда
Элементы.РегистрСведенийИзмененияЗаявок.Обновить();
Конецесли
(2) я дико извиняюсь, но у меня ещё вопрос: у меня в регистр выводятся названия документов(ЭтотОбъект.Ссылка), но при создании нового документа, у меня это поле остаётся пустым, логично, что это из-за того, что процедура происходит ПередЗаписью(все другие не подходят, ибо сбивается ссылка на реквизиты), можно ли как-то присвоить новому документу в регистре название этого документа?
Выглядит это следующим образом:
Выглядит это следующим образом:
Прикрепленные файлы:
(11) я так понимаю это поле Заявка! Но до тех пор пока вы документ не запишите у вас там не появится ни чего. Чтобы оно более опертивно появилось вам туда нужно поместить ссылку. Но в процедуре перед записью ссылка еще не известа. Тут выбрать другое событие когда записывать данные в регистр, например, после записи. А с другой стороны если Заявка - это документ - объект 1С Документ, то разместите в специализированной процедуре ОбработкаПроведения и в ней уже делайте записи (Поле заявка заполняйте ссылкой на документ)
(12) А можно в условии как-то обратиться к процедуре другой?
Т.е. допустим так:
Просто я так попробовал - у меня не получилось как-то ничего)
Т.е. допустим так:
Если ЭтоНовый() Тогда
ОбработкаПроведения(Отказ, Режим);
КонецЕсли;
Процедура ОбработкаПроведения(Отказ, Режим)
*Тут Записи*
КонецПроцедуры
Просто я так попробовал - у меня не получилось как-то ничего)
(13) Да так можно сделать но в данном случае вы два раза будете обращаться к данной процедуре - ОбработкаПроведения. Один раз вы явно к ней обращаетесь в процедуре при записи, а второй раз программа сама в нее зайдет.
Если вам нужно какой то признак новый или не новый это объект в процедуре ОбработкаПроведения, то просто определите общую переменную в модуле объекта и обращайтесь к ней.
Вот модуль объекта
Если вам нужно какой то признак новый или не новый это объект в процедуре ОбработкаПроведения, то просто определите общую переменную в модуле объекта и обращайтесь к ней.
Вот модуль объекта
Перем ЭтоНовыйОбъект;
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ЭтоНовый() Тогда
ЭтоНовыйОбъект = Истина;
Иначе
ЭтоНовыйОбъект = Ложь
Конецесли
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, Режим)
Если ЭтоНовыйОбъект Тогда
// тут уже делаете записи
Конецесли
КонецПроцедуры
Показать
(17) Ну вот смотрите, если вам нужно ТЗ передать в модуль объекта, при этом сама ТЗ не доступна там. То делаете вот так.
1. В модуле обработке делаете процедуру с префиксом Экспорт и параметров ТЗ, например, Процедура ОбработатьТЗВМодулеОбъекта(ТЗ)Экспорт
2. Далее на форме просто вызываете данную процедуру и передаете в нее вашу таблицу значений
1. В модуле обработке делаете процедуру с префиксом Экспорт и параметров ТЗ, например, Процедура ОбработатьТЗВМодулеОбъекта(ТЗ)Экспорт
2. Далее на форме просто вызываете данную процедуру и передаете в нее вашу таблицу значений
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)