Проверка на наличие определенного реквизита во всех документах

1. MyPuK_OLD 28.02.13 10:12 Сейчас в теме
Всем доброго времени суток!!!
Люди добрые, помогите кто чем сможет))

Необходимо проверить все документы на наличие определенного реквизита. Как проверить имеется ли тот или иной реквизит в определенном документе, нашел тут. (http://1cprofi.com/content/view/4/40/)

Реквизит = Метаданные.Документ("АвансовыйОтчет").РеквизитШапки("Основание").Выбран();
Если Реквизит = 1 Тогда
Сообщить("У документа есть такой реквизит");
Иначе
Сообщить("У документа нет такого реквизита");
КонецЕсли;

Как применить подобный шаблон ко всем документам?..
ВСЕМ Спасибо за внимание!!!
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
23. MyPuK_OLD 28.02.13 13:33 Сейчас в теме
Процедура Сформировать(ЗакрытьДиалог=0)

ВидыДок = "";
Для Инд=1 По ВыбранныеДокументы.РазмерСписка() Цикл
ВидыДок = ВидыДок + Документы.ПолучитьЗначение(ВыбранныеДокументы.ПолучитьЗначение(Инд))+",";
КонецЦикла;

Если ПустаяСтрока(ВидыДок)=1 Тогда
Возврат;
КонецЕсли;

Док = СоздатьОбъект("Документ");

Если (ВыбКонтрагент.Выбран()=1) Тогда
Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Контрагент",ВыбКонтрагент);
ИначеЕсли (ВыбПроект.Выбран()=1) Тогда
Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Проект", ВыбПроект);
ИначеЕсли (ВыбАвтор.Выбран()=1) Тогда
Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Автор", ВыбАвтор);
ИначеЕсли (ВыбФирма.Выбран()=1) Тогда
Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Фирма", ВыбФирма);
ИначеЕсли (ВыбЮрЛицо.Выбран()=1) Тогда
Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"ЮрЛицо", ВыбЮрЛицо);
ИначеЕсли (ВыбФизЛицо.Выбран()=1) Тогда
Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"ФизЛицо", ВыбФизЛицо);
ИначеЕсли (ВыбСклад.Выбран()=1) Тогда
Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Склад", ВыбСклад);
ИначеЕсли (ВыбСотр.Выбран()=1) Тогда
Док.ВыбратьПоЗначению(ДатаНачала,ДатаКонца,"Сотрудник", ВыбСотр);
Иначе
Док.ВыбратьДокументы(ДатаНачала,ДатаКонца);
КонецЕсли;

Если (ТипЗначенияСтр(Таб) <> "Таблица") ИЛИ (Обновить = 0) Тогда
Таб = СоздатьОбъект("Таблица");
Иначе
Таб.Очистить();
КонецЕсли;
Таб.ИсходнаяТаблица( "РеестрДокументов" );

Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Отчет", "РеестрДокументов");

// все настройки помещаем в список
Расшифровка.Установить("ДатаНачала", ДатаНачала);
Расшифровка.Установить("ДатаКонца", ДатаКонца);

Расшифровка.Установить("ВыбФирма", ВыбФирма);
Расшифровка.Установить("ВыбЮрЛицо", ВыбЮрЛицо);
Расшифровка.Установить("ВыбФизЛицо", ВыбФизЛицо);
Расшифровка.Установить("ВыбКонтрагент", ВыбКонтрагент);
Расшифровка.Установить("ВыбАвтор", ВыбАвтор);
Расшифровка.Установить("ВыбПроект", ВыбПроект);
Расшифровка.Установить("ВыбСклад", ВыбСклад);

Расшифровка.Установить("ВклПроведенные",ВклПроведенные);
Расшифровка.Установить("ВклТекущие", ВклТекущие);
Расшифровка.Установить("ВклУдаленные", ВклУдаленные);

Расшифровка.Установить("ВыбранныеДокументы", ВыбранныеДокументы);
Расшифровка.Установить("ВсеДокументы", ВсеДокументы);

Заг = "";

Если ВыбЮрЛицо.Выбран()>0 Тогда
Заг=Заг+"По юр. лицу "+СокрП(ВыбЮрЛицо)+". ";
КонецЕсли;
Если ВыбФизЛицо.Выбран()>0 Тогда
Заг=Заг+"По физ. лицу "+СокрП(ВыбФизЛицо)+". ";
КонецЕсли;
Если ВыбФирма.Выбран()>0 Тогда
Заг=Заг+"По фирме "+СокрП(ВыбФирма)+". ";
КонецЕсли;
Если ВыбКонтрагент.Выбран()>0 Тогда
Заг=Заг+"По контрагенту "+СокрП(ВыбКонтрагент)+". ";
КонецЕсли;
Если ВыбАвтор.Выбран()>0 Тогда
Заг=Заг+"Автор документов: "+СокрП(ВыбАвтор)+". ";
КонецЕсли;
Если ВыбПроект.Выбран()>0 Тогда
Заг=Заг+"Проект документов: "+СокрП(ВыбПроект)+". ";
КонецЕсли;
Если ВыбСклад.Выбран()>0 Тогда
Заг=Заг+"Склад документов: "+СокрП(ВыбСклад)+". ";
КонецЕсли;

глЧислоСтрок = 0;

Таб.ВывестиСекцию("Кнопки");
Таб.ВывестиСекцию("Шапка");
Таб.ВывестиСекцию("ШапкаТаблицы");

// выводим шапку на каждой странице
НачПовт = Таб.ВысотаСекции("Кнопки") + Таб.ВысотаСекции("Шапка");
КонПовт = НачПовт + Таб.ВысотаСекции("ШапкаТаблицы");
Таб.ПовторятьПриПечатиСтроки(НачПовт + 1, КонПовт);

глОживить(1);

НПП=0;
ПечИтогСумма = 0;

СуммыПоВалютам = СоздатьОбъект("ТаблицаЗначений");
СуммыПоВалютам.НоваяКолонка("Валюта", "Справочник.Валюты");
СуммыПоВалютам.НоваяКолонка("Сумма", "Число");

Пока Док.ПолучитьДокумент()=1 Цикл

//Проверка статуса
Если (Док.ПометкаУдаления()>0) Тогда
Если ВклУдаленные=0 Тогда
Продолжить;
КонецЕсли;
ИначеЕсли (Док.Проведен()>0) Тогда
Если ВклПроведенные=0 Тогда
Продолжить;
КонецЕсли;
Иначе
Если ВклТекущие=0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;

//Проверка юр. лица, к которому относится документ
Если ВыбЮрЛицо.Выбран() = 0 Тогда
ИначеЕсли (Док.ЮрЛицо <> ВыбЮрЛицо) Тогда
Продолжить;
КонецЕсли;

//Проверка фирмы, к которой относится документ
Если ВыбФирма.Выбран() = 0 Тогда
ИначеЕсли (Док.Фирма <> ВыбФирма) Тогда
Продолжить;
КонецЕсли;

//Проверка физ. лица, к которому относится документ
Если ВыбФизЛицо.Выбран() = 1 Тогда
Если глЕстьРеквизитШапки("ФизЛицо",Док.Вид()) = 1 Тогда
Если (Док.ФизЛицо <> ВыбФизЛицо) Тогда
Продолжить;
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
КонецЕсли;

//Проверка автора
Если ВыбАвтор.Выбран() = 0 Тогда
ИначеЕсли (Док.Автор <> ВыбАвтор) Тогда
Продолжить;
КонецЕсли;

//Проверка проекта
Если ВыбПроект.Выбран() = 0 Тогда
ИначеЕсли (Док.Проект <> ВыбПроект) Тогда
Продолжить;
КонецЕсли;

//Проверка сотрудника
Если ВыбСотр.Выбран() = 1 Тогда
Если глЕстьРеквизитШапки("Сотрудник",Док.Вид()) = 1 Тогда
Если (Док.Сотрудник <> ВыбСотр) Тогда
Продолжить;
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
КонецЕсли;

//Проверка склада
Если ВыбСклад.Выбран() = 1 Тогда
ХорошийДокумент = 0;
Если глЕстьРеквизитШапки("Склад",Док.Вид()) = 1 Тогда
Если (Док.Склад = ВыбСклад) Тогда
ХорошийДокумент = 1;
КонецЕсли;
КонецЕсли;
Если глЕстьРеквизитШапки("СкладПолучатель",Док.Вид()) = 1 Тогда
Если (Док.СкладПолучатель = ВыбСклад) Тогда
ХорошийДокумент = 1;
КонецЕсли;
КонецЕсли;
Если ХорошийДокумент = 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;

//Проверка вида документа
Если Найти(ВидыДок,Док.Вид()+",")=0 Тогда
Продолжить;
КонецЕсли;

Состояние("Обработка "+Док.ДатаДок);

НПП=НПП+1;

ПечСумма = глСуммаДокументаВЖурнале(Док.ТекущийДокумент(), "число");

//ал для вывода в реестре документов суммы для СписанияТМЦ
Если Док.Вид()="СписаниеТМЦ" Тогда
ПечИтого = 0;
ТабДвиж1 = СоздатьОбъект("ТаблицаЗначений");
ТабДвиж1.НоваяКолонка("Номенклатура");
ТабДвиж1.НоваяКолонка("Количество");
ТабДвиж1.НоваяКолонка("Сумма");

РегПартии1 = СоздатьОбъект("Регистр.ПартииНаличие");
РегПартии1.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());

Пока РегПартии1.ПолучитьДвижение() = 1 Цикл
ТабДвиж1.НоваяСтрока();
ТабДвиж1.Номенклатура = РегПартии1.Номенклатура;
ТабДвиж1.Количество = РегПартии1.Количество;
ТабДвиж1.Сумма = РегПартии1.СуммаБезНДС;
КонецЦикла;

// выгрузим табличную часть документа в таблицу значений
ТабДок1 = СоздатьОбъект("ТаблицаЗначений");
Док.ВыгрузитьТабличнуюЧасть(ТабДок1, "Номенклатура, Количество, Единица, Коэффициент");

// сформируем таблицу значений для печати

ТабПеч1 = СоздатьОбъект("ТаблицаЗначений");
ТабПеч1.НоваяКолонка("Номенклатура");
ТабПеч1.НоваяКолонка("Количество");
ТабПеч1.НоваяКолонка("Сумма");

ТабДок1.ВыбратьСтроки();
Пока ТабДок1.ПолучитьСтроку() = 1 Цикл

Поз = 0;
Пока (ТабДвиж1.НайтиЗначение(ТабДок1.Номенклатура, Поз, "Номенклатура") = 1)
и (ТабДок1.Количество > 0) Цикл
ТабДвиж1.ПолучитьСтрокуПоНомеру(Поз);

// получим текущее количество в документе в базовой единице
ТекКолво1 = ТабДок1.Количество * ТабДок1.Коэффициент;
// в таблицу печати добавляем количество - минимум из регистра и документа
ИспКолво1 = Мин(ТабДвиж1.Количество, ТекКолво1);
ИспСумма1 = ИспКолво1 * ТабДвиж1.Сумма / ТабДвиж1.Количество;

// заполняем таблицу
ТабПеч1.НоваяСтрока();
ТабПеч1.Номенклатура = ТабДок1.Номенклатура;
ТабПеч1.Количество = ?(ТабДок1.Коэффициент = 0, ИспКолво1, ИспКолво1 / ТабДок1.Коэффициент);
ТабПеч1.Сумма = ИспСумма1;

Если ТабДвиж1.Количество <= ИспКолво1 Тогда
// количество полностью использовано. Удалим строку из таблицы, чтобы
// на следующем шаге итереции могла бы найтись строка с этим же товаром, но
// из другой партии (конечно, если такое движение было)
ТабДвиж1.УдалитьСтроку(Поз);
Иначе
// количество в движении больше чем в строке докуиента (может быть из-за
// того, что табличной части документа встречаются строки с одинаковыми товарами)
ТабДвиж1.Количество = ТабДвиж1.Количество - ИспКолво1;
КонецЕсли;

ТабДок1.Количество = ТабДок1.Количество - ТабПеч1.Количество;

Поз = 0;
ПечИтого=ПечИтого+ТабПеч1.Сумма;
КонецЦикла;
КонецЦикла;
ПечСумма = ПечИтого;

ИначеЕсли Док.Вид()="ПеремещениеТМЦ" Тогда
ВсегоСумма=0;
ТабДвиж = СоздатьОбъект("ТаблицаЗначений");
ТабДвиж.НоваяКолонка("Номенклатура");
ТабДвиж.НоваяКолонка("Количество");
ТабДвиж.НоваяКолонка("Сумма");
ТабДвиж.НоваяКолонка("СуммаПрод");
ТабДвиж.НоваяКолонка("РознЦена");

// сформируем таблицу с учетными цена из движений документа по регистру ПартииНаличие.
РегПартии = СоздатьОбъект("Регистр.ПартииНаличие");

РегПартии.ВыбратьДвиженияДокумента(Док);
Пока РегПартии.ПолучитьДвижение() = 1 Цикл
Если РегПартии.Расход = 1 Тогда
ТабДвиж.НоваяСтрока();
ТабДвиж.Номенклатура = РегПартии.Номенклатура;
ТабДвиж.Количество = РегПартии.Количество;
ТабДвиж.Сумма = РегПартии.СуммаБезНДС;
ТабДвиж.СуммаПрод = РегПартии.ПродСтоимость;
ТабДвиж.РознЦена = РегПартии.ЦенаПрод;
КонецЕсли;
КонецЦикла;

// выводим строки документа
Док.ВыбратьСтроки();

Пока Док.ПолучитьСтроку() = 1 Цикл

НомСтр = "";
КолвоДок = Док.Количество;
Поз = 0;

Пока (КолвоДок > 0) // есть что погашать
и (ТабДвиж.НайтиЗначение(Док.Номенклатура, Поз, "Номенклатура") <> 0) // есть чем погашать
Цикл

ИдКолонкиСуммы = ?(Док.Склад.РозничныйСклад = 1, "СуммаПрод", "Сумма");

КолвоРег = ТабДвиж.ПолучитьЗначение(Поз, "Количество");
СуммаРег = ТабДвиж.ПолучитьЗначение(Поз, ИдКолонкиСуммы);

// преобразуем количество из регистра (в базовой единице)
// в единицу из строки документа
Если Док.Коэффициент <> 0 Тогда
КолвоРег = КолвоРег / Док.Коэффициент;
КонецЕсли;

КолвоПеч = Мин(КолвоДок, КолвоРег);
СуммаПеч = СуммаРег * КолвоПеч / КолвоРег;
Если Док.Склад.РозничныйСклад = 1 Тогда
// Перемещение следует отражать по розничным ценам
ЦенаПеч = ТабДвиж.ПолучитьЗначение(Поз, "РознЦена");
Иначе
// пытаемся уменьшить потерю точности,
// поэтому сначала считаем сумму, а только потом цену
ЦенаПеч = ?(КолвоПеч = 0, СуммаПеч, СуммаПеч / КолвоПеч);
КонецЕсли;

ОстРег = КолвоРег - КолвоПеч;
Если ОстРег <= 0 Тогда
// количество из движений регистра полностью погасилось количеством из накладной
// удалим строку таблицы значений
ТабДвиж.УдалитьСтроку(Поз);
Иначе
// количество движений регистра оказалось больше, чем количество документа
ТабДвиж.УстановитьЗначение(Поз, "Количество", ОстРег * Док.Коэффициент);
ТабДвиж.УстановитьЗначение(Поз, ИдКолонкиСуммы , СуммаРег - СуммаПеч);
КонецЕсли;

// уменьшаем непогашенное количество из строки документа
КолвоДок = КолвоДок - КолвоПеч;

// вычисляем итоги
ВсегоКоличество = ВсегоКоличество + КолвоПеч;
ВсегоСумма = ВсегоСумма + СуммаПеч;
ИтогоКоличество = ИтогоКоличество + КолвоПеч;
ИтогоСумма = ИтогоСумма + СуммаПеч;

Поз = 0;
КонецЦикла;

КонецЦикла;
ПечСумма = ВсегоСумма;
КонецЕсли;
//ал

ПечВалюта = глВалютаДокументаВЖурнале(Док.ТекущийДокумент());

Если ПустоеЗначение(ПечВалюта) = 1 Тогда
ПечВалюта = глРубли;
КонецЕсли;

Поз = 0;
Если СуммыПоВалютам.НайтиЗначение(ПечВалюта, Поз, "Валюта") = 1 Тогда
СуммыПоВалютам.ПолучитьСтрокуПоНомеру(Поз);
СуммыПоВалютам.Сумма = СуммыПоВалютам.Сумма + Число(СтрЗаменить(ПечСумма,"'",""));
Иначе
СуммыПоВалютам.НоваяСтрока();
СуммыПоВалютам.Сумма = Число(СтрЗаменить(ПечСумма,"'",""));
СуммыПоВалютам.Валюта = ПечВалюта;
КонецЕсли;

ПечИнформация = СокрЛП(глИнформацияПоДокументуВЖурнале(Док.ТекущийДокумент()));
//**********
Если Док.Комментарий = " " Тогда
ПечКомментарий = " ";
Иначе
ПечКомментарий = Док.Комментарий;
КонецЕсли;

//28-02-2013
//Для К=1 по Метаданные.Документ() Цикл
//Идентификатор= Метаданные.Документ(К).Идентификатор;


Нашли=0;
//Для РеквШапки=1 По Метаданные.Документ("Имя вашего документа").РеквизитШапки() Цикл
// Если Строка(Метаданные.Документ("Имя вашего документа").РеквизитШапки(РеквШапки).Идентификатор)="Основание" Тогда
Для РеквШапки=1 По Метаданные.Документ("Имя вашего документа").РеквизитШапки() Цикл
Если Строка(Метаданные.Документ("Имя вашего документа").РеквизитШапки(РеквШапки).Идентификатор)="Основание" Тогда

// ВидыДок
Нашли=1;
Прервать;
КонецЕсли;
КонецЦикла;
Если Нашли=1 Тогда
ПечДокОснование = Док.Основание; ;
Иначе
ПечДокОснование="";
КонецЕсли;
КонецЦикла;
//28-02-2013
//Для К=1 по Метаданные.Документ() Цикл
// Идентификатор= Метаданные.Документ(К).Идентификатор;
// Реквизит = Метаданные.Документ(Идентификатор).РеквизитШапки("Основание").Выбран();
//Конеццикла;
//
//Если Реквизит = 1 Тогда
// ПечДокОснование = Док.Основание;
//Иначе
// ПечДокОснование = " ";
//КонецЕсли;
//// ***
//Если Док.Основание = " " Тогда
// ПечДокОснование = " ";
// Иначе
// ПечДокОснование = Док.Основание;
//КонецЕсли;
//**********
ПечСтатус = "Не проведен";
Если (Док.ПометкаУдаления()>0) Тогда
ПечСтатус = "Помечен на уд.";
ИначеЕсли (Док.Проведен()>0) Тогда
ПечСтатус = "Проведен";
КонецЕсли;

Если глЕстьРеквизитШапки("ДатаДокВходящий", Док.Вид()) = 1 тогда
ПечДата = Док.ДатаДокВходящий;
Иначе
ПечДата = Док.ДатаДок;
КонецЕсли;

Таб.ВывестиСекцию("Докум");

Пока Найти(ПечСумма," ") > 0 Цикл
ПечСумма = СтрЗаменить(ПечСумма," ","");
КонецЦикла;

ПечИтогСумма = ПечИтогСумма + Число(ПечСумма);
глОживить(1);
КонецЦикла;

КолвоСтрок = СуммыПоВалютам.КоличествоСтрок();
Если КолвоСтрок >= 1 Тогда
СуммыПоВалютам.ПолучитьСтрокуПоНомеру(1);
Сумма = СуммыПоВалютам.Сумма;
Валюта = СуммыПоВалютам.Валюта;

Таб.ВывестиСекцию("ИтогоСнадписью");
глОживить(1);

Для Сч = 2 По КолвоСтрок Цикл
СуммыПоВалютам.ПолучитьСтрокуПоНомеру(Сч);
Сумма = СуммыПоВалютам.Сумма;
Валюта = СуммыПоВалютам.Валюта;

Таб.ВывестиСекцию("Итого");
глОживить(1);
КонецЦикла;
КонецЕсли;

Таб.Опции(0, 0, 7, 0, "РеестрДокументов", "РеестрДокументов");
Таб.ТолькоПросмотр(1);
Таб.ОбластьПечати(2);
Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
Таб.Защита(1);
КонецЕсли;
Таб.Показать("Реестр документов","");

Если (Обновить = 2)ИЛИ(ЗакрытьДиалог=1) Тогда
СтрокаДействийФормы = "#Закрыть";
КонецЕсли;

КонецПроцедуры // Сформировать

//////////////////////////////////

Это полное содержание процедуры..

Где тут идет получение документа ("Имя вашего документа"), так и не нашел..
25. falcon 28.02.13 14:16 Сейчас в теме
(23) в конструцию Метаданные.Документ("Имя вашего документа").

вместо "Имя вашего документа" надо передать Вид() документа который тебя интересует...
ну собственно и циклы там не упали.... только лишнее время тратят...

если нашел в глобальнике глЕстьРеквизит... то сам разберешься как это работает...
26. deniseek77 86 28.02.13 14:19 Сейчас в теме
(25) falcon, Я же говорю, делал на бух, там нет такой функции, а что у него есть, мне не видно.
27. falcon 28.02.13 14:25 Сейчас в теме
(26) можно делать на чем угодно.... Док.идентификатор - нет такой конструкции....

для проверки наличия реквизита... надо знать вид документа.. который получается методом Вид() и имя реквизита....

видДока = Док.Вид();
ИмянУжногоРеквизита = "лялялял"

тогда проверка наличия реквизита шапки будет:
Если Метаданные.Документ(видДока).РеквизитШапки(ИмянУжногоРеквизита).Выбран() = 1 Тогда
Есть такой реквизит
Иначе
нет такого реквизита
КонецЕсли;
deniseek77; +1 Ответить
28. user2095497 08.07.24 10:54 Сейчас в теме
(1)можешь ссылку на сайт дать, на то как нашел проверку реквизита в документе чтобы выдавалась ошибка если данные уже используются в другом документе
(1)
(1)
2. deniseek77 86 28.02.13 10:18 Сейчас в теме
Для й=1 по Метаданные.Документ() цикл
Идентификатор= Метаданные.Документ(й).Идентификатор;
Реквизит = Метаданные.Документ(Идентификатор).РеквизитШапки("Основание").Выбран();
Конеццикла;
3. deniseek77 86 28.02.13 10:20 Сейчас в теме
Могу ошибиться, но как то так, пишу по памяти
4. MyPuK_OLD 28.02.13 10:49 Сейчас в теме
//
Для К=1 по Метаданные.Документ() Цикл
Идентификатор= Метаданные.Документ(К).Идентификатор;
Реквизит = Метаданные.Документ(Идентификатор).РеквизитШапки("Основание").Выбран();
Конеццикла;
Если Реквизит = 1 Тогда
ПечДокОснование = Док.Основание;
Иначе
ПечДокОснование = " ";
КонецЕсли;
//

Сделал таким образом, в отчете заполняется ПечДокОснование = " ";
хотя документы содержащие реквизит "Основание" в отчете присутствуют.
5. deniseek77 86 28.02.13 11:14 Сейчас в теме
(4) MyPuK_OLD, Вам нужно перебрать все авансовые отчеты, или перебрать виды документов и узнать, есть реквизит в шапке???
8. tdr1225 37 28.02.13 11:36 Сейчас в теме
(4) проверка переменной Реквизит д.б. внутри цикла
6. MyPuK_OLD 28.02.13 11:19 Сейчас в теме
Мне нужно перебрать все документы и проверить, есть ли в шапке реквизит "Основание", если есть, то значение этого реквизита выводиться в отчет, если такого реквизита нет, выводится " ", т. е. ничего.
7. deniseek77 86 28.02.13 11:24 Сейчас в теме
9. deniseek77 86 28.02.13 11:44 Сейчас в теме
//*******************************************
Процедура Сформировать()
	Для К=1 по Метаданные.Документ() Цикл
		Идентификатор= Метаданные.Документ(К).Идентификатор;
        Нашли=0;
		Для РеквШапки=1 По Метаданные.Документ(Идентификатор).РеквизитШапки()  Цикл
			Если Строка(Метаданные.Документ(Идентификатор).РеквизитШапки(РеквШапки).Идентификатор)="ДокументОснование" тогда
				Нашли=1;
				Прервать;
			Конецесли;	
		КонецЦикла;
		Если Нашли=1 тогда
		Док=СоздатьОбъект("Документ."+Идентификатор);
		Док.ВыбратьДокументы();
		Пока док.ПолучитьДокумент()=1 Цикл
		    Если СокрЛП(док.ДокументОснование)="" Тогда
				Сообщить("У документа "+Док+" - Нет основания!");
			Иначе
				Сообщить("У документа "+Док+"Основание "+док.ДокументОснование);
		        
		    КонецЕсли;
		КонецЦикла;
	    Конецесли;	
	Конеццикла;
КонецПроцедуры
Показать
10. deniseek77 86 28.02.13 11:46 Сейчас в теме
Делал на бухгалтерии 7.7, у вас может называться не Документоснование, а просто Основание или еще как...
11. MyPuK_OLD 28.02.13 11:57 Сейчас в теме
Видимо я не правильно объяснил...речь не идет о документе основании...
В некоторые документы (ПКО, РКО и т.д.) добавлен реквизит "Основание" с типом строка.

Лучше будет наверно, если внеш.отчет прикреплю..
Прикрепленные файлы:
Реестр документов с фильтром по физлицу + комментарий и док.основание.ert
12. deniseek77 86 28.02.13 12:06 Сейчас в теме
Попробуйте еще раз объяснить?
13. MyPuK_OLD 28.02.13 12:29 Сейчас в теме
Имеется конфигурация КА, в каких-то документах есть реквизит "Основание" (добавлен), а в каких-то документах его нет. Необходимо в уже имеющийся отчет добавить выведение реквизита основание, но дело в том, что если в документе нет этого реквизита, выходит ошибка: "Поле агрегатного объекта не обнаружено (Основание)". Так вот нужна проверка на наличие реквизита "Основание" во всех документах конфигурации.
14. deniseek77 86 28.02.13 12:40 Сейчас в теме
Ну так а это что?
Нашли=0;
        Для РеквШапки=1 По Метаданные.Документ("Имя вашего документа").РеквизитШапки()  Цикл
            Если Строка(Метаданные.Документ("Имя вашего документа").РеквизитШапки(РеквШапки).Идентификатор)="Основание" тогда
                Нашли=1;
                Прервать;
            Конецесли;    
        КонецЦикла;
        Если Нашли=1 тогда
ПечДокумент.Основание=Основание;
Иначе
печДокумент.Основание="";
Конецесли;
Показать


Имя вашего документа получить думаю сможете?
15. MyPuK_OLD 28.02.13 12:46 Сейчас в теме
Дело в том что документы могут быть различными, начиная с Авансового отчета, заканчивая Чеком ККМ.. в этом-то и состоит вся сложность для меня..
16. deniseek77 86 28.02.13 12:54 Сейчас в теме
(15) MyPuK_OLD, но, когда вы строку выводите, вы что не можете получить свой документ?
18. falcon 28.02.13 13:06 Сейчас в теме
(15)
есть метод у документа .Вид()
19. deniseek77 86 28.02.13 13:13 Сейчас в теме
(18) falcon, У него и идентификатор есть
20. falcon 28.02.13 13:20 Сейчас в теме
(19) это метод такой у документа есть?
21. deniseek77 86 28.02.13 13:22 Сейчас в теме
(20) falcon, Все уже сделано через Док.Идентификатор
22. falcon 28.02.13 13:28 Сейчас в теме
(21) все уже давным давно сделано в типовых...

а так-то.. конструкция Док.Идентификатор - феерично ))
17. deniseek77 86 28.02.13 13:02 Сейчас в теме
Держите, проверяйте, могут быть ошибки, так как вслепую писал
Прикрепленные файлы:
Реестр документов с фильтром по физлицу + комментарий и док.основание.ert
24. MyPuK_OLD 28.02.13 13:43 Сейчас в теме
Спасибо всем огромное!!!..чё-то я жестко тупанул..
надо было просто сделать так:

Если глЕстьРеквизитШапки("Основание", Док.Вид()) = 1 Тогда
ПечДокОснование = Док.Основание;
Иначе
ПечДокОснование = " ";
КонецЕсли;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот