Консультация № 66821
13.12.2006, 14:54
0.00 руб.
0 3 3
Здравствуйте уважаемые эксперты!!!
Подскажите советом как вывести в отчет данные (код модуля см. в приложении).
Задача в том чтобы каждый раз не заходить в Счет и не проверять вводился ли на основании Счета документ Заявка, а вывести в отчет (т.е. в первой колонке Счет, а во второй подчиненный ему документ Заявка. Если вводился то во второй колонке выводится *есть*, если нет то *-*).
Заранее огромное спасибо!

Приложение:
Функция ЕстьЗаявка(пДок) лПр=0; лДок=СоздатьОбъект("Документ"); лДок.ВыбратьПодчиненныеДокументы(‘01.01.2001‘,РабочаяДата(),пДок); Пока лДок.ПолучитьДокумент()=1 Цикл Если лДок.Вид()="ЗаявкаНаМатериалы" Тогда Если лДок.Проведен()=1 Тогда лПр=1; КонецЕсли; КонецЕсли; КонецЦикла; Возврат лПр;КонецФункции//---------------------------------------------------------------------------------Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса =" |Период с Дата1 по Дата2; |СчетПроиз = Документ.СчетПр.ТекущийДокумент; |Заказчик=Документ.СчетПр.Контрагент; |Группировка СчетПроиз; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); Таб.ВывестиСекцию("Шапка"); Пока Запрос.Группировка(1)=1 Цикл Сч=Запрос.СчетПроиз; Зак=Запрос.Заказчик; Таб.ВывестиСекцию("Строка"); КонецЦикла; Состояние("Заполнение выходной таблицы..."); Таб.Опции(0); Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", "");КонецПроцедуры

Обсуждение

Неизвестный
13.12.2006, 15:26
общий
это ответ
Здравствуйте, Vlad!
Сделайте проще, в журнале счетов добаьте текстовую колонку, в которую выведите следующую вункцию

Приложение:
Функция ЕстьЗаявка() Если ТекущийДокумент.Выбран()=0 Тогда Возврат ""; КонецЕсли; ТД=СоздатьОбъект("Документ"); ТД.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент); пока ТД.ПолучитьДокумент()=1 Цикл Если ТД.Вид()="Заявка" Тогда Возврат "есть"; КонецЕсли КонецЦикла; Возврат "Нет";КонецФункции
Неизвестный
13.12.2006, 15:28
общий
это ответ
Здравствуйте, Vlad!
Попробуйте добавить в запрос строчку (в конец, после группировки)

|Функция Заявка = ЕстьЗаявка(СчетПроиз);

и анализируйте Запрос.Заявка.

Удачи!
Неизвестный
13.12.2006, 15:30
общий
это ответ
Здравствуйте, Vlad!
если речь идет о печатной форме тогда
попробуйте так. (первая колонка = сч, вторая = Заявка (есть или нет))
Функция ЕстьЗаявка(пДок)
лПр="-";
лДок=СоздатьОбъект("Документ.ЗаявкаНаМатериалы");
лДок.ВыбратьПодчиненныеДокументы(‘01.01.2001‘,РабочаяДата(),пДок);
Пока лДок.ПолучитьДокумент()=1 Цикл
Если лДок.Проведен()=1 Тогда
лПр="Есть";
КонецЕсли;
КонецЦикла;
Возврат лПр;
КонецФункции

//---------------------------------------------------------------------------------

Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса ="
|Период с Дата1 по Дата2;
|СчетПроиз = Документ.СчетПр.ТекущийДокумент;
|Заказчик=Документ.СчетПр.Контрагент;
|Группировка СчетПроиз;
|";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;


Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
Таб.ВывестиСекцию("Шапка");
Состояние("Заполнение выходной таблицы...");
Пока Запрос.Группировка(1)=1 Цикл
Сч=Запрос.СчетПроиз;
Зак=Запрос.Заказчик;
Заявка=ЕстьЗаявка(Сч);
Таб.ВывестиСекцию("Строка");
КонецЦикла;


Таб.Опции(0);
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры
Форма ответа