1с 7.7 ТиС. Нужен совет

Новая тема
Здравствуйте.
Конфигурация ТиС, 963.
Пользователь создает документ ЗаявкаПокупателя (Неподтвержденная). Затем на основании этого документа создается и проводится документ Реализация (купля-продажа). Далее в процессе работы возможно изменение и перепроведение Заявки. Необходимо, чтобы при изменении каких-либо реквизитов и перепроведении документа-основания (в данном случае это Заявка) перепровелся и документ Реализация (а у него, соответственно, тоже могут быть подчиненные документы, например, ВозвратОтПокупателя).

Если есть какие-то мысли (возможно, кто-то уже сталкивался с подобной задачей), поделитесь, пожалуйста. Просто накидайте примерную схему реализации данного процесса. У меня есть идеи, но ощущение, что они очень уж нерациональны.. Конкретно интересует сам процесс сравнения реквизитов документа-основания и подчиненного документа (есть ли возможность получить список строк с наименованиями реквизитов документа?)

Большое спасибо
Документ-основание и "производный" документ "связаны" только в момент "ввода на основании"! Дальше это 2 не зависимых документа! Перезаполнение и перепроведение всей цепочки документов в типовых конфигурациях не предусмотрено. Чтобы не нарушать типовую структуру я делал отчет, который показывал различия в заполнении реквизитов документа-основания и "производных" документов! У меня, например, часто были ситуации, когда в отгрузке меняли значения реквизитов, а с\ф не перезаполняли! Отчет и "вылавливает" эти различия!
"Да, в типовых не предусмотрено. А пользователю нужно : )
В общем, что уже сделано: в глобальном модуле примерно такая вот процедура:

Процедура глПриПроведенииОснования(Конт) Экспорт

КонтДок = глВзятьКонтекст(Конт)
ТекДок  = КонтДок.ТекущийДокумент();
Док.ВыбратьПодчиненныеДОкументы(,,ТекДок);

Пока Док.ПолучитьДокумент() = 1 Цикл
Если глЕстьРеквизитШапки("Склад", Док.Вид()) = 1 Тогда
Если Док.Склад <> ТекДок.Склад Тогда
Док.Склад = ТекДок.Склад;
Док.Записать();
ОткрытьФорму(Док.ТекущийДокумент(),"ПровестиИЗакрыть",0);
КонецЕсли;
КонецЕсли;
КонецЦикла;

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

Вызывается она в обработке проведения док-та ЗаявкаПокупателя. Проверяется, есть ли у него подчиненные документы. Далее, в случае, если есть, сравнивается реквизит Склад (пока только он). Если же значения реквизитов различны, тогда в подчиненном документе (для примера Реализация) склад меняется на тот, что в Заявке, затем Реализация записывается и открывается его форма.

А в процедуре ПриОткрытии модуля формы Реализации написано следующее:

Если Форма.Параметр = "ПровестиИЗакрыть" Тогда
Провести();
Форма.Закрыть();
КонецЕсли;

Так вот мне очень хочется, чтобы можно было каким-то образом получить список наименований реквизитов, чтобы в этой глобальной процедуре можно было все реквизиты сравнить. "
"> Так вот мне очень хочется, чтобы можно было каким-то образом получить список наименований реквизитов, чтобы в этой глобальной процедуре можно было все реквизиты сравнить.

//Выводит идентификаторы всех реквизитов шапки документа
Для Инд=1 По Метаданные.Документ("<ИдентификаторДокумента>").РеквизитШапки() Цикл
Сообщить(Метаданные.Документ("<ИдентификаторДокумента>").РеквизитШапки(Инд));
КонецЦикла;
//Выводит идентификаторы всех реквизитов табличной части документа
Для Инд=1 По Метаданные.Документ("<ИдентификаторДокумента>").РеквизитТабличнойЧасти() Цикл
Сообщить(Метаданные.Документ("<ИдентификаторДокумента>").РеквизитТабличнойЧасти(Инд));
КонецЦикла;


"
Вот спасибо огромное! Именно этого и не хватало
что пользователь изменяет ?
> что пользователь изменяет ?

Изменяет значение какого-либо реквизита документа-основания. Например, склад.

> > что пользователь изменяет ?
>
> Изменяет значение какого-либо реквизита документа-основания. Например, склад.
>
>

в неподтверждённой заявке склад не заполняется (!)

=)

да. в типовой не заполняется : )
> да. в типовой не заполняется : )

а он и не должен заполняться
только если вид операции ЗАявка на склад
Читают тему
(гостей: 1)

Быстрый переход