Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 103
от 03.01.2006, 14:00

Администратор:Калашников О.А.
В рассылке:Подписчиков: 142, Экспертов: 19
В номере:Вопросов: 1, Ответов: 2


Вопрос № 32375: Здравствуйте! У меня следющая проблема: нужно вывести таблицу по номерам приходных накладных с наименованиями поставщиков и суммой этих накладных. Пожалуйста по-подробнее, начинающий программист 1С. Заранее благодарен, Николай....

Вопрос № 32.375
Здравствуйте!
У меня следющая проблема: нужно вывести таблицу по номерам приходных накладных с наименованиями поставщиков и суммой этих накладных.
Пожалуйста по-подробнее, начинающий программист 1С.
Заранее благодарен, Николай.
Отправлен: 29.12.2005, 11:37
Вопрос задал: Данилов Николай Юрьевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Сергей
Здравствуйте, Данилов Николай Юрьевич!
нужно создать запрос (в конфигураторе - в дереве - отчеты - создать отчет в режиме конструктор запросов....

Должно получится примерно так:
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|НомерДок = Документ.ПоступлениеТоваров.НомерДок;
|Сумма = Документ.ПоступлениеТоваров.Сумма;
|Наименование = Документ.ПоступлениеТоваров.Контрагент.Наименование;
|Функция СуммаСумма = Сумма(Сумма);
|Группировка НомерДок без упорядочивания;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

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

Ответ отправил: Сергей (статус: 2-ой класс)
Отправлен: 29.12.2005, 11:45

Отвечает: Elric
Здравствуйте, Данилов Николай Юрьевич!

Вариант 1.
Воспользуйтесь конструктором Запросов. Сразу и модуль построится, и печатная форма (Таблица). Шаги (по закладкам) в конструкторе:
а) Имя запроса произвольное
б) Ставите галочки "Период будет выбираться в в диалоге формы" и "Без итогов"
в) Добавляете переменную для каждого реквизита документа ПриходнаяНакладная: НомерДок (в конструкторе он ниже Шапки и Табличной части), Контрагент (реквизит Шапки), СуммаСНДС (реквизит Табличной Части)
г) Добавляете Функцию (по-умолчанию там все установлено так как нам надо, т.е. реквизит СуммаСНДС, вид функции Сумма). Как вариант можно сразу имя по-умолчанию СуммаСНДССумма заменить на более благозвучное Сумма
д) Добавляем группировки НомерДок и Контрагент (у группировки Контрагент ставим флажок БезГрупп)
е) Закладку Условия пропускаем
ж) Смотрим на готовый запрос и нажимаем кнопку Готово.
В итоге у нас готовый отчет. Осталось немного поправить экранную и печатную форму на предмет привлекательной внешности.

P.S. Возможно, вместо НомерДок следует выбрать реквизит Шапки НомерПриходнойНакладной -- зависит от желания заказчика
Вариант 2.
Воспользоваться методом банального перебора. Естественно, при этом нужно заранее создать макет отчета (Таблицу) с соответствующими секциями и колонками:
Таб=СоздатьОбъект("Таблица");
Таб.ВывестиСекцию("Шапка");
Док=СоздатьОбъект("Документ.ПриходнаяНакладная");
Док.ВыбратьДокументы(НачДата,КонДата);
Пока Док.ПолучитьДокумент()=1 Цикл
НомерДок=Док.НомерДок;
Поставщик=Док.Контрагент;
Сумма=Док.Итог("СуммаСНДС");
Таб.ВывестиСекцию("Строка");
КонецЦикла;
Таб.Показать();

---------
Мирный атом в каждый дом
Ответ отправил: Elric (статус: 1-ый класс)
Отправлен: 29.12.2005, 12:26


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.1cprogfaq
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное