Автоматическое изменение реквизита в документе и его перепроведение #739502


#0 by lile4ka
Добрый день, уважаемые программисты :-) При разработке конфигурации в 1С 8.2 столкнулась со следующей ситуацией. У меня есть документ "Заявка", в котором присутствует реквизит "Статус" со значениями, взятыми из перечислений "Назначен", "Выполняется", "Выполнено", "Не выполнено". Поскольку я новичок в этом деле и это моя первая разработка, все значения реквизитов для каждой заявки приходится менять вручную. Статус заявки при проведении документа фиксируется в соответствующем регистре сведений "Статус заявки". Помимо этого с заявкой связаны документы "ЗаказМатериаловДляВыполненияУслуги" и "АктОказанияУслуг". Подскажите, пожалуйста, как сделать, чтобы при записи "Заказа материалов" (его движения ни в одном из созданных регистров не отражаются) движения документа "Заявка" перепизасывались с соответствующим изменением реквизита "Статус" на "Назначено", и при проведении док-та "Акт оказания услуг" (регистр накопления "Услуги") статус в док-те "Заявка" менялся на "Выполнено". Вот модули объектов всех документов Заявка: Процедура ОбработкаПроведения(Отказ, Режим) Заказ материалов для оказания услуги: Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Акт оказания услуг: Процедура ОбработкаПроведения(Отказ, Режим) Спасибо! С уважением, грустный студент :-)
#1 by ИС-2
архитектура решения не правильная - каждый из документов должен менять статус в регистре СтатусЗаявки, где должно быть еще измерение Заявка и ресурс статус. Если решать в лоб, то В событие при записи документа "Заказа материалов" добавляем изменение документа (заявка.Статус = Назначено;) и записываем заявку (Заявка.Записать(режимзаписидокумента.Проведение))
#2 by lile4ka
Заказ и Акт у меня вводятся на основании Заявки, точнее 2х разных "ЗаявкаНаОказаниеПлатныхУслуг" и "ЗаявкаНаОказаниеБесплатныхУслуг". В Заказ и Акт я добавила также реквизит "Статус заявки" и сделала их регистраторами для регистра "Статус заявки". (хотя я так и не поняла, точно ли нужно его делать, ведь записи в регистре будут дублироваться...но как тогда по-другому сформировать движения этих 2х документов) Затем, как я понимаю, нужно в обработку проведения заказа и акта впихнуть информацию о том, что мне нужно изменить статус заявок непосредственно в аналогичных документах. Как это сделать - не представляю.
#3 by ДемонМаксвелла
тут не реквизит должен быть, а регистр сведений
#4 by ИС-2
#5 by lile4ka
ДемонМаксвелла, не поняла Вас, поясните, пожалуйста, что нужно изменить.
#6 by lile4ka
ИС-2, возникает ошибка {Документ.ЗаказМатериаловДляВыполненияУслуги.МодульОбъекта}: Поле объекта недоступно для записи (Статус)     ДокументОснование.Статус = СтатусЗаявки; Что неверно сделано?
#7 by lile4ka
обработка заполнения Заказа
#8 by lile4ka
#9 by Ganiev
правильно написал!
#10 by lile4ka
Спасибо Вам огромное! Можно последний вопрос задать? ) По логике у меня и в заказе тогда должно установиться  "Выполнено". Как правильно обратиться к документу "ЗаказМатериаловДляОказанияУслуги" в обработке проведения Акта? в случае с заявкой я поняла, что мы объявляем переменную ДокОсн = ДокументОснование.ПолучитьОбъект; Можно так? Или снова нагородила ошибок?
#11 by FIXXXL
нужен РС с полями Заявка, ДокументИзмененияСтатуса, Статус и все документы пишут туда инфо затем срезом последних всегда можно получить актуальную инфо по статусу конкретной Заявки
#12 by FIXXXL
+при открытии дока Заявки обновлять поле Статус на СтатусСрезПоследних, и не хранить этот реквизит в документе
#13 by lile4ka
FIXXXL, делаю этот РС периодическим, затем создаю общий модуль с функцией
#14 by lile4ka
Так верно?
#15 by lile4ka
Подскажите, пожалуйста, как при открытии дока Заявка обновлять поле Статус на СтатусСрезПоследних, и не хранить этот реквизит в документе?
#16 by Ganiev
Сделай экспортную Функцию ПолучитьСтатусДокументаНаДату(ДатаДок, ДокументОбъект) в общем модуле с параметрами дата и регистратор ,где запросом получаешь срез на дату срез с параметром отбора по регистратору. Сделай возврат полученного значения. После этого тебе не надо будет во всех документов писать запрос получения статуса, а достаточно вызвать твою функцию. в процедуре ПриОткрытии или ПередОткрытием  вызови свою функцию что-то типа такого: Статус = ПолучитьСтатусДокументаНаДату(ДатаДок, ЭтотОбъект.Ссылка)!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С