Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 06:07

Печать журнала через внешний отчет

Автор Lin, 17 апр 2014, 16:10

0 Пользователей и 1 гость просматривают эту тему.

Lin

Здравствуйте.
Есть проблема: необходимо напечатать дополнительный журнал документов в таблицу с помощью внешнего отчета.
В журнале два вида документов: "Акт" и "Накладная".
У акта в таблицу должны выводиться "НомерОснАкта" и "ДатаОснАкта", у накладной - "НомерОснНакл" и "ДатаОснНакл" соответственно, в одни и те же столбцы "Номер документа" и "Дата документа".
Попытка сделать вывод документов через нижеследующую конструкцию ничего не дала, к сожалению: печатается только один документ, в данном случае - "Акт"
Попытка
    Док = СоздатьОбъект ("Документ.Акт");
Исключение
    Попытка
        Док = СоздатьОбъект ("Документ.Накладная");
    КонецПопытки
КонецПопытки

Помогите, пожалуйста, разобраться

Herby

Странная идея..... Для вывода отчета конструкция "Попытка Исключение" не нужна.

Конструкцию "Попытка Исключение" используют в тех случаях где возможны ошибки программы, и чтобы программа не останавливалась, для этого и используют эту конструкцию чтобы обработать ошибку и продолжить работу алгортима.

Lin

Не буду спорить насчет странности. Я новичок в 1С, и это мое первое задание с программированием. Я просто не особенно понимаю, как реализовать вот этот конкретный участок: с созданием документа вида либо "Акт" либо "Накладная" и как, в зависимости от этого, вывести данные в указанные два столбца. А книги не особенно помогают, к сожалению, как и гугл...
Я сильно извиняюсь, если вопрос "детский", но так хочется разобраться...

Herby

Цитата: Lin от 17 апр 2014, 16:45
Не буду спорить насчет странности. Я новичок в 1С, и это мое первое задание с программированием. Я просто не особенно понимаю, как реализовать вот этот конкретный участок: с созданием документа вида либо "Акт" либо "Накладная" и как, в зависимости от этого, вывести данные в указанные два столбца. А книги не особенно помогают, к сожалению, как и гугл...
Я сильно извиняюсь, если вопрос "детский", но так хочется разобраться...

В вашем случае нужно использовать конструкцию "Если Иначе", только для это нужно понять какое у вас должно условие выполняться.

Например:


Если  .......   Тогда
  Док = СоздатьОбъект ("Документ.Акт");
Иначе
  Док = СоздатьОбъект ("Документ.Накладная");
КонецЕсли;

// вместо точек должно быть ваше условие

Lin

Но ведь нельзя же запросить у "следующего" документа его данные: синоним, идентификатор, чтобы по их значению создать условие? Или можно?
Еще была крамольная мысль сделать все Акты, потом все Накладные и в конце неизвестным образом отсортировать по дате или какому-нибудь невидимому полю, но в таком случае во-первыъ непонятно, как сортировать, а во-вторых - как проставлять № п/п
Добавлено: 17 апр 2014, 17:12


А может быть, есть вариант, при котором данные будут считываться из столбцов журнала, а не из документа?

Herby

Сложно объясняете, но я кажется понял

вот что у вас приблизительно должно быть:


Если Док.Вид() = "Акт" Тогда
// здесь выводите информацию об Акте
Иначе
// здесь выводите информацию о накладной
КонецЕсли;



вариант считывания из столбцов журнала в 1с не предусмотрен.

Lin

Спасибо!
А
Док = СоздатьОбъект (Документ.Накладная)
или как?
Извините еще раз за тугодумность((

Herby

Вам нужно написать запрос, который сформирует вам нужную выборку из документов "Акт" и "Накладная",
а потом уже использовать мое условие из примера. но это на пальцах не объяснить.

можно через обычную выборку, но этот вариант медленный, особенно если период выбирается большой,
ну вот пример:


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

Lin

Herby, кажется, теперь мне понятно, что именно Вы имеете в виду!) Завтра буду пробовать...
Спасибо огромное, что так терпеливо помогли!)
Добавлено: 18 апр 2014, 16:24


В целом 1Ске вроде все понравилось, кроме одной строчки
Пока Док.ПолучитьДокумент() = 1 Цикл
Ругается, что документ не выбран
А если я определю документ как Акт или Накладную перед этой строчкой, то и печатать будет только один вид...

Кошки рулят

В конфигураторе в отчете запускай конструктор запросов и пощелкай там мышкой ...

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск