7.7 Печать документов за период

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем doniel, 14 авг 2010.

  1. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Может, кто сталкивался или знает как вывести на принтер (печать) сразу все созданные за день(период) документы. Сделать их копии на бумаге. Например ТТН, счета и т.д.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вот так. По видам - сами доработайте.
    Код:
    Процедура Сформировать()
    Док=СоздатьОбъект("Документ");
    СписокПараметров = СоздатьОбъект("СписокЗначений"); 
    СписокПараметров.Установить("Команда","ПечатьНаПринтер");
    СписокПараметров.Установить("КолЭкз",1);	
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
    //печатаем только проведенные документы
    Если Док.Полведен()=0 Тогда
    Продолжить;
    КонецЕсли;
    ОткрытьФорму(Док.ТекущийДокумент(),СписокПараметров);
    КонецЦикла;
    
    КонецПроцедуры
    
    
  3. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    В типовых конфигурациях есть Группоавя обработка документов.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    ТТН не стандарт - точно нет))))
  5. Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Зря ты так думаешь. ТТН не стандартный вид документа, но в список возможных для обработки документов он должен попасть.
    У меня, во всяком случае, деланые мною документы попадали. :)
  6. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    решал когда-то вопрос.. создаешь обработку, пихаешь в нее печтаные формы и без открытия просто циклом бежишь по документам и печатаешь..
    Выкладываю пример, соррь за корявый стиль - писалось на коленке. Скрипт для получения списка принтеров - не мой.

    Вложения:

  7. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    А код куда вставить? Надо создать новый Отчет или ...?
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Просто создайте новый отчет. На форме необходимо также добавить
    реквизиты выбора периода (Начдата/КонДата)
  9. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    ЭТО ТО, ЧТО СОЗДАЛО АВТОМАТИЧЕСКИ
    Код:
    //*******************************************
    //  Процедура генерации запроса Сформировать.
    //    Перем Запрос, ТекстЗапроса, Таб;
    //    //Создание объекта типа Запрос
    //    Запрос = СоздатьОбъект("Запрос");
    //    ТекстЗапроса = 
    //    "//{{ЗАПРОС(Сформировать)
    //    |Период с ВыбНачПериода по ВыбКонПериода;
    //    |Обрабатывать НеПомеченныеНаУдаление;
    //    |Справка = Документ.Справка.ТекущийДокумент;
    //    |"//}}ЗАПРОС
    //;
    //    // Если ошибка в запросе, то выход из процедуры
    //    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    //        Возврат;
    //    КонецЕсли;
    //    // Подготовка к заполнению выходных форм данными запроса
    //    Таб = СоздатьОбъект("Таблица");
    //    Таб.ИсходнаяТаблица("Сформировать");
    //    // Заполнение полей "Заголовок"
    //    Таб.ВывестиСекцию("Заголовок");
    //    Состояние("Заполнение выходной таблицы...");
    //    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    //    // Вывод заполненной формы
    //    Таб.ТолькоПросмотр(1);
    //    Таб.Показать("Сформировать", "");
    //  КонецПроцедуры
    
    
    
    А ЭТО, ЧТО Я НАПИСАЛ. НЕ РАБОТАЕТ

    Код:
    Перем Док;
    Процедура Сформировать()
    Док= СоздатьОбъект("Документ");
    СписокПараметров=СоздатьОбъект("СписокЗначений");
    СписокПараметров.Установить("Команда","ПечатьНаПринтер");
    СписокПараметров.Установить("КолЭкз",1); 
    Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
    Пока Док.ВыбратьДокументы()=1 Цикл
    Если Док.Записан()=0 Тогда
    Продолжить;
    КонецЕсли;
    ОткрытьФорму(Док.ТекущийДокумент(),СписокПараметров);
    КонецЦикла;
    КонецПроцедуры
    
    
  10. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Во-первых, все документы, перебираемые таким способом будут записаны, поэтому проверка тут бессмысленна.
    Во-вторых, (сошлюсь на опечатку, поправил) цикл начитается со слова "Пока".

    Ну а теперь собственно вопрос: КАК НЕ РАБОТАЕТ?
    Какую ошибку выдает? Что делает не так?

    По данному алгоритму, 1С должно открыть все документы за период (при определенном количестве просто вылетит).

    А вот обработка передаваемого параметра должна происходить в документе (здесь этого не видно). А что бы документы обрабатывались по очереди, необходимо открывать их модально.
  11. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Выдало ошибку.
    Если Док.Записан()=0 Тогда
    {Отчет.Приказ.Форма.Модуль(42)}: Поле агрегатного объекта не обнаружено (Записан)
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Потому что такого метода не существует
  13. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    А какой существует.
  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В данном случае если выхотите печатать:
    1)только проведенные долокументы - Проведен()
    2) Все - не нужно условия
    3) Кроме помеченных на удаление - ПометкаУдаления()
  15. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Всем спасибо, но вы меня неправильно понили.
    Существует Документ, например Справка, Документ не проводится, только записывается и все созданные документы Справка за день, в конце дня должны быть распечатаны на бумаге.
    Как например в Зарплате расчетные листы.
    Именно надо распечатать документ Справка, их много и должны быть распечатаны, как готовый документ. Как при выводе на печать одного документа, только их много за день.

    По этому коду, выбираются все документы за период и выходит на экран последняя форма документа и 1С зависает.
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Есть 2 варианта:
    1) Документ определенного вида
    Код:
    Док= СоздатьОбъект("Документ.Справка");    
    ....
    
    
    2)Использовать метод Вид
    Код:
    Пока...Цикл
    Если Док.Вид()<>"Справка" Тогда
    Продолжить;
    КонецЕсли;
    .....
    
    
  17. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Помойму она называется пакетная печать
  18. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Перем Док; //
    Процедура Сформировать()
    Док= СоздатьОбъект("Документ.Cправка");
    СписокПараметров=СоздатьОбъект("СписокЗначений");
    СписокПараметров.Установить("Команда","ПечатьНаПринтер");
    СписокПараметров.Установить("КолЭкз",1);
    Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода);
    Пока Док.ВыбратьДокументы()=1 Цикл
    Если Док.Вид() <>"Справка" Тогда
    Продолжить;
    КонецЕсли;
    ОткрытьФорму(Док.ТекущийДокумент(),СписокПараметров);
    КонецЦикла;
    КонецПроцедуры

    После ввода периода, появляется форма Документа Справка и 1С зависает. Что делать?
  19. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Попробуйте так
    Код:
    ОткрытьФормуМодально(Док.ТекущийДокумент(),СписокПараметров);
    
    
  20. TopicStarter Overlay
    doniel
    Offline

    doniel Опытный в 1С

    Регистрация:
    29 июл 2010
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26

    А куда прикрепить это файл, чтобы его можно было просмотреть или прочитать.
Похожие темы
  1. Benjamin
    Ответов:
    2
    Просмотров:
    4.017
  2. Black Cat
    Ответов:
    5
    Просмотров:
    965
  3. Alive
    Ответов:
    9
    Просмотров:
    1.299
  4. doniel
    Ответов:
    3
    Просмотров:
    736
  5. veis-d
    Ответов:
    1
    Просмотров:
    451
Загрузка...

Поделиться этой страницей