|
Заменить договоры в документах | ☑ | ||
---|---|---|---|---|
0
Godofsin
27.09.11
✎
07:15
|
Задача: с определенного числа нужно заменить договоры во всех последующих документах на такие же договоры, только с галочкой "вести по документам расчета". То есть был у нас договор "Основной", мы его копируем, в копии ставим галочку, в наименование старого добавляем что-нибудь типа "(старый)" и подменяем его во всех док-ах на новый. Проблема: в силу малых знаний 1с8 не знаю как выбрать все доки, где используется реквизит "договор", при чем, ессесно, он еще и в табличной части может быть. Мой вариант: тупо составить список доков(вручную) и обрабатывать каждый вид отдельно, ну или сгруппировать, где реквизит используется в табл. части, а где на форме. Подскажите более грамотное решение.
|
|||
1
Рэйв
27.09.11
✎
07:19
|
Запрос=Новый Запрос;
Запрос.Текст="Выбрать Док.ссылка ИЗ Документ.ИмяДок КАК Док ГДЕ Док.Договор=&Старый"; Запрос.УстановитьПараметр("Старый",СсылкаНаДоговор); Это для шапки. Для Таб части исправь только ИЗ Документ.ИмяДок на ИЗ Документ.ИмяДок.ИмяТабЧасти |
|||
2
Godofsin
27.09.11
✎
07:28
|
(1) Ну так то да. Но ведь в "ДокИмя" нужно подставить имя документа, так же как и имя таб. части в ИмяТабЧасти. А как сделать автоматическое определение этих имен? Ну то есть какой-нибудь запрос, который бы определил что в этих и в этих документах реквизит "договор" используется в шапке, а вот в этих и этих - в табл. части. А я бы потом просто подставлял бы найденные имена в запрос :)
|
|||
3
catena
27.09.11
✎
07:38
|
Как-то так
Для ш=0 по Метаданные.Документы.Количество()-1 Цикл МетаданныеДок = Метаданные.Документы[ш]; Для о=0 по МетаданныеДок.Реквизиты.Количество()-1 Цикл МетаданныеРеквизит = МетаданныеДок.Реквизиты[о]; Если МетаданныеРеквизит.Тип = Новый ОписаниеТипов("СправочникСсылка.ДоговорыКОнтрагентов") Тогда Сообщить(""+МетаданныеДок+" - "+МетаданныеРеквизит.Имя); КонецЕсли; КонецЦикла; Для к=0 по МетаданныеДок.ТабличныеЧасти.Количество()-1 Цикл ТекТЧ = МетаданныеДок.ТабличныеЧасти[к]; Для л=0 по ТекТЧ.Реквизиты.Количество()-1 Цикл ТекТЧРеквизит=ТекТЧ.Реквизиты[л]; Если ТекТЧРеквизит.Тип = Новый ОписаниеТипов("СправочникСсылка.ДоговорыКОнтрагентов") Тогда Сообщить(""+МетаданныеДок+" - ТЧ - "+ТекТЧ.Имя+" - "+ТекТЧРеквизит.Имя); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; |
|||
4
Godofsin
27.09.11
✎
07:48
|
(3) Огромное спасибо!
p.s. милое фото =) |
|||
5
zak555
27.09.11
✎
08:07
|
(4) в 8.2.14 появились ещё и общие реквизиты
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |