1с 7.7 ТиС. Нужен совет
05.10.2010
09:20
#1
Здравствуйте.
Конфигурация ТиС, 963.
Пользователь создает документ ЗаявкаПокупателя (Неподтвержденная). Затем на основании этого документа создается и проводится документ Реализация (купля-продажа). Далее в процессе работы возможно изменение и перепроведение Заявки. Необходимо, чтобы при изменении каких-либо реквизитов и перепроведении документа-основания (в данном случае это Заявка) перепровелся и документ Реализация (а у него, соответственно, тоже могут быть подчиненные документы, например, ВозвратОтПокупателя).
Если есть какие-то мысли (возможно, кто-то уже сталкивался с подобной задачей), поделитесь, пожалуйста. Просто накидайте примерную схему реализации данного процесса. У меня есть идеи, но ощущение, что они очень уж нерациональны.. Конкретно интересует сам процесс сравнения реквизитов документа-основания и подчиненного документа (есть ли возможность получить список строк с наименованиями реквизитов документа?)
Большое спасибо
Конфигурация ТиС, 963.
Пользователь создает документ ЗаявкаПокупателя (Неподтвержденная). Затем на основании этого документа создается и проводится документ Реализация (купля-продажа). Далее в процессе работы возможно изменение и перепроведение Заявки. Необходимо, чтобы при изменении каких-либо реквизитов и перепроведении документа-основания (в данном случае это Заявка) перепровелся и документ Реализация (а у него, соответственно, тоже могут быть подчиненные документы, например, ВозвратОтПокупателя).
Если есть какие-то мысли (возможно, кто-то уже сталкивался с подобной задачей), поделитесь, пожалуйста. Просто накидайте примерную схему реализации данного процесса. У меня есть идеи, но ощущение, что они очень уж нерациональны.. Конкретно интересует сам процесс сравнения реквизитов документа-основания и подчиненного документа (есть ли возможность получить список строк с наименованиями реквизитов документа?)
Большое спасибо
05.10.2010
09:30
#2
Документ-основание и "производный" документ "связаны" только в момент "ввода на основании"! Дальше это 2 не зависимых документа! Перезаполнение и перепроведение всей цепочки документов в типовых конфигурациях не предусмотрено. Чтобы не нарушать типовую структуру я делал отчет, который показывал различия в заполнении реквизитов документа-основания и "производных" документов! У меня, например, часто были ситуации, когда в отгрузке меняли значения реквизитов, а с\ф не перезаполняли! Отчет и "вылавливает" эти различия!
05.10.2010
10:13
#3
"Да, в типовых не предусмотрено. А пользователю нужно : )
В общем, что уже сделано: в глобальном модуле примерно такая вот процедура:
Процедура глПриПроведенииОснования(Конт) Экспорт
КонтДок = глВзятьКонтекст(Конт)
ТекДок = КонтДок.ТекущийДокумент();
Док.ВыбратьПодчиненныеДОкументы(,,ТекДок);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если глЕстьРеквизитШапки("Склад", Док.Вид()) = 1 Тогда
Если Док.Склад <> ТекДок.Склад Тогда
Док.Склад = ТекДок.Склад;
Док.Записать();
ОткрытьФорму(Док.ТекущийДокумент(),"ПровестиИЗакрыть",0);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Вызывается она в обработке проведения док-та ЗаявкаПокупателя. Проверяется, есть ли у него подчиненные документы. Далее, в случае, если есть, сравнивается реквизит Склад (пока только он). Если же значения реквизитов различны, тогда в подчиненном документе (для примера Реализация) склад меняется на тот, что в Заявке, затем Реализация записывается и открывается его форма.
А в процедуре ПриОткрытии модуля формы Реализации написано следующее:
Если Форма.Параметр = "ПровестиИЗакрыть" Тогда
Провести();
Форма.Закрыть();
КонецЕсли;
Так вот мне очень хочется, чтобы можно было каким-то образом получить список наименований реквизитов, чтобы в этой глобальной процедуре можно было все реквизиты сравнить. "
В общем, что уже сделано: в глобальном модуле примерно такая вот процедура:
Процедура глПриПроведенииОснования(Конт) Экспорт
КонтДок = глВзятьКонтекст(Конт)
ТекДок = КонтДок.ТекущийДокумент();
Док.ВыбратьПодчиненныеДОкументы(,,ТекДок);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если глЕстьРеквизитШапки("Склад", Док.Вид()) = 1 Тогда
Если Док.Склад <> ТекДок.Склад Тогда
Док.Склад = ТекДок.Склад;
Док.Записать();
ОткрытьФорму(Док.ТекущийДокумент(),"ПровестиИЗакрыть",0);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Вызывается она в обработке проведения док-та ЗаявкаПокупателя. Проверяется, есть ли у него подчиненные документы. Далее, в случае, если есть, сравнивается реквизит Склад (пока только он). Если же значения реквизитов различны, тогда в подчиненном документе (для примера Реализация) склад меняется на тот, что в Заявке, затем Реализация записывается и открывается его форма.
А в процедуре ПриОткрытии модуля формы Реализации написано следующее:
Если Форма.Параметр = "ПровестиИЗакрыть" Тогда
Провести();
Форма.Закрыть();
КонецЕсли;
Так вот мне очень хочется, чтобы можно было каким-то образом получить список наименований реквизитов, чтобы в этой глобальной процедуре можно было все реквизиты сравнить. "
05.10.2010
10:24
#4
"> Так вот мне очень хочется, чтобы можно было каким-то образом получить список наименований реквизитов, чтобы в этой глобальной процедуре можно было все реквизиты сравнить.
//Выводит идентификаторы всех реквизитов шапки документа
Для Инд=1 По Метаданные.Документ("<ИдентификаторДокумента>").РеквизитШапки() Цикл
Сообщить(Метаданные.Документ("<ИдентификаторДокумента>").РеквизитШапки(Инд));
КонецЦикла;
//Выводит идентификаторы всех реквизитов табличной части документа
Для Инд=1 По Метаданные.Документ("<ИдентификаторДокумента>").РеквизитТабличнойЧасти() Цикл
Сообщить(Метаданные.Документ("<ИдентификаторДокумента>").РеквизитТабличнойЧасти(Инд));
КонецЦикла;
"
//Выводит идентификаторы всех реквизитов шапки документа
Для Инд=1 По Метаданные.Документ("<ИдентификаторДокумента>").РеквизитШапки() Цикл
Сообщить(Метаданные.Документ("<ИдентификаторДокумента>").РеквизитШапки(Инд));
КонецЦикла;
//Выводит идентификаторы всех реквизитов табличной части документа
Для Инд=1 По Метаданные.Документ("<ИдентификаторДокумента>").РеквизитТабличнойЧасти() Цикл
Сообщить(Метаданные.Документ("<ИдентификаторДокумента>").РеквизитТабличнойЧасти(Инд));
КонецЦикла;
"
05.10.2010
10:46
#7
> что пользователь изменяет ?
Изменяет значение какого-либо реквизита документа-основания. Например, склад.
Изменяет значение какого-либо реквизита документа-основания. Например, склад.
Как загрузить фото на печатную форму с оригинальными размерами. Комплексная 7.7.1С 7.7 как добавить строку табличной части документа?
Читают тему
(гостей: 1)