7.7 Отчет "Акт сверки" для хлебной конфигурации

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем kisol, 24 апр 2016.

  1. TopicStarter Overlay
    kisol
    Offline

    kisol Профессионал в 1С

    Регистрация:
    25 июл 2012
    Сообщения:
    386
    Симпатии:
    41
    Баллы:
    54
    Друзья пишу отчет на 7.7 по примеру, нужно чтобы документы попадали в печатную форму.
    Вот так

    [​IMG]


    Код:
    Процедура Сформировать()
        Перем Запрос, ТекстЗапроса, Таб;
      
        Если ПустоеЗначение(ВыбКонтрагента)=1 Тогда
            Предупреждение("Выберите контрагента");
            Возврат;
        КонецЕсли;
      
        //Создание объекта типа Запрос
        Запрос = СоздатьОбъект("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(ЗапросДок)
        |Период с ВыбНачПериода по ВыбКонПериода;
        |ПоступлениеНоменклатуры = Документ.ПоступлениеНоменклатуры.ТекущийДокумент;
        |РучнаяОперация = Документ.РучнаяОперация.ТекущийДокумент;
        |Контрагент = Документ.ПоступлениеНоменклатуры.Контрагент; 
        |Сумма = Документ.ПоступлениеНоменклатуры.Сумма;
        |МестоХранения = Документ.ПоступлениеНоменклатуры.МестоХранения;
        |Группировка ПоступлениеНоменклатуры;
        |Группировка РучнаяОперация;
        |Условие(Контрагент = ВыбКонтрагента);
        |Условие(МестоХранения = ВыбМестоХранения);                                              
        |"//}}ЗАПРОС
        ;
        // Если ошибка в запросе, то выход из процедуры
        Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
            Возврат;
        КонецЕсли;
    
        // Подготовка к заполнению выходных форм данными запроса
        Таб = СоздатьОбъект("Таблица");
        Таб.ИсходнаяТаблица("Таблица");
        // Заполнение полей "Заголовок"
        Таб.ВывестиСекцию("Заголовок");
        Состояние("Заполнение выходной таблицы...");
        Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
        Пока Запрос.Группировка(1) = 1 Цикл
            Таб.ВывестиСекцию("ПоступлениеНоменклатуры");
            Пока Запрос.Группировка(2) = 1 Цикл
                 Таб.ВывестиСекцию("РучнаяОперация");
            КонецЦикла;
        КонецЦикла;
       
      
        // Вывод заполненной формы
        Таб.ТолькоПросмотр(1);
        Таб.Показать("Сформировать", "");
     
    КонецПроцедуры       
    [​IMG]

    [​IMG]

    Вот сама форма есть выбор контрагента и место хранения чтобы отбирать по этим полям, а так же хочу выбирать чекбоксами какие документы выводить.

    С одним документом все получается, выводит его имя и сумму, но не понятно как добавить в запрос еще документы, пробовал добавить выводит только первую документ, второй не выводит.
    Делить на несколько запросов? А как же чекбоксы вставлять условия?
    Последнее редактирование: 24 апр 2016
  2. man37
    Offline

    man37 Опытный в 1С

    Регистрация:
    10 дек 2013
    Сообщения:
    197
    Симпатии:
    5
    Баллы:
    29
    Наверное, не хватает Цикла, что-то типа:
    Код:
    Пока Запрос.Выполнить(ТекстЗапроса) = 1 Цикл
    Таб.ВывестиСекцию ...
    КонецЦикла;
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Лучше было бы создать не простой запрос,а бухгалтерский... Так проще, В обычном же запросе документы нужно указывать через запятую
  4. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Вот для примера :
    Код:
    Процедура Сформировать()
           Если Обновить = 2 Тогда
            СтрокаДействийФормы = "#Закрыть";
        КонецЕсли;
        Если (ТипЗначенияСтр(Таб) <> "Таблица")ИЛИ(Обновить=0) Тогда
               Таб = СоздатьОбъект("Таблица");
        Иначе
             Таб.Очистить();
        КонецЕсли;
       
        Обновить=1;
        Расшифровка = СоздатьОбъект("СписокЗначений");
           Расшифровка.Установить("ЧПТС_НачДата", НачДата);
        Расшифровка.Установить("ЧПТС_КонДата", КонДата);
        Расшифровка.Установить("ЧПТС_ВыбСчета",ВыбСчета);
        Расшифровка.Установить("ЧПТС_ВсеСчета1", ВсеСчета1);
        Расшифровка.Установить("ЧПТС_Фирма", Фирма);
        Расшифровка.Установить("ЧПТС_Контрагент", Контрагент);
          Расшифровка.Установить("Отчет",ПолноеИмя);
        Расшифровка.Установить("Обновить"); 
    
        Если Фирма.Выбран()=0 Тогда
            Предупреждение("Введите фирму !!!");
            Возврат;
        КонецЕсли;       
       
        Если Контрагент.Выбран()=0 Тогда
            Предупреждение("Введите контрагента !!!");
            Возврат;
        КонецЕсли;
       
        Если Контрагент.ЭтоГруппа()=1 Тогда
            Предупреждение("Акт  сверки  возможен  только для  одного контрагента !!!");
            Возврат;       
        КонецЕсли;
        Попытка
            Если Константа.ФормыНаУкраинском=Перечисление.ДаНет.Да тогда
                Суфикс="_Укр";
            Иначе
                Суфикс="";
            КонецЕсли;
        Исключение
            Суфикс="";
        КонецПопытки;
       
       
        Таб.ИсходнаяТаблица("ЧПТС"+Суфикс);
        Таб.ВывестиСекцию("Секция_6");
        Таб.ВывестиСекцию("Шапка");
        СтрокаФормат = "Ч015.2";
        ПрописьФормат = "ЧПДС";
        СписокСчетов = СоздатьОбъект("СписокЗначений");
        Если ВсеСчета1 = 1 Тогда                              
            ВсеСчета.Выгрузить(СписокСчетов);
        Иначе                                         
            ВыбСчета.Выгрузить(СписокСчетов);       
        КонецЕсли;      
    
        попытка     
            глУстПропись(гривня);
        исключение              
            //проблемссс
        конецПопытки;   
        Ит = СоздатьОбъект("БухгалтерскиеИтоги");
        Ит.ИспользоватьРазделительУчета(Фирма);
        Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент);
        Ит.ВыполнитьЗапрос(НачДата,КонДата,СписокСчетов,,,,"Операция",);
       
        Нпп = 0;        
        ДтФирмаОборот = 0;
        КтФирмаОборот = 0;
        ДтНачСальдоФирма = Формат(Ит.СНД(),СтрокаФормат);
        КтНачСальдоФирма = Формат(Ит.СНК(),СтрокаФормат);         
        ИтоговоеСальдо = Ит.СНД() - Ит.СНК();
        Таб.ВывестиСекцию("НачСальдо");
        СуммаПропись = 0;
        Ит.ВыбратьПериоды();
        Пока Ит.ПолучитьПериод()=1 Цикл
            Нпп = Нпп + 1;
            ДтФирма = Ит.ДО();
            КтФирма = Ит.КО();
            ДатаОпер = Ит.Операция.Документ.ДатаДок;
            ДокНаименование = Ит.Операция.Документ;
            ДтФирмаОборот = ДтФирмаОборот + ДтФирма;
            КтФирмаОборот = КтФирмаОборот + КтФирма;
            ДтФирма = Формат(ДтФирма,СтрокаФормат);
            КтФирма = Формат(КтФирма,СтрокаФормат);
            Таб.ВывестиСекцию("Строка");
        КонецЦикла;
        Если ДтФирмаОборот>КтФирмаОборот Тогда
            ДтФирмаСальдо = ДтФирмаОборот - КтФирмаОборот;
            Если Ит.СНД()>Ит.СНК() Тогда
                ДтФирмаСальдо = ДтФирмаСальдо + Ит.СНД();
            Иначе
                ДтФирмаСальдо = ДтФирмаСальдо - Ит.СНК();
            КонецЕсли;   
           
            Если ДтФирмаСальдо<0 Тогда
                КтФирмаСальдо = ДтФирмаСальдо*(-1);
                ДтФирмаСальдо = 0;
               
                СуммаПропись  = Формат(КтФирмаСальдо,ПрописьФормат);
                КтФирмаСальдо = Формат(КтФирмаСальдо,СтрокаФормат);
                ДтФирмаСальдо = Формат(ДтФирмаСальдо,СтрокаФормат);
                КтФирмаОборот = Формат(КтФирмаОборот,СтрокаФормат);   
                ДтФирмаОборот = Формат(ДтФирмаОборот,СтрокаФормат);    // Чтобы "0" в таблице не высвечивался, мы применим к этой переменной формат
                ВПользуКогоСальдо = Контрагент.ПолнНаименование;
            Иначе
                СуммаПропись  = Формат(ДтФирмаСальдо,ПрописьФормат);
                ДтФирмаСальдо = Формат(ДтФирмаСальдо,СтрокаФормат);
                ДтФирмаОборот = Формат(ДтФирмаОборот,СтрокаФормат);
                КтФирмаОборот = Формат(КтФирмаОборот,СтрокаФормат);
                ВПользуКогоСальдо = Фирма;
            КонецЕсли;
        Иначе                                           
            КтФирмаСальдо = КтФирмаОборот - ДтФирмаОборот;    
            Если Ит.СНК()>Ит.СНД() Тогда
                КтФирмаСальдо = КтФирмаСальдо + Ит.СНК();
            Иначе
                КтФирмаСальдо = КтФирмаСальдо - Ит.СНД();
            КонецЕсли;                                 
           
            Если КтФирмаСальдо<0 Тогда
                ДтФирмаСальдо = КтФирмаСальдо*(-1);
                КтФирмаСальдо = 0;
                СуммаПропись  = Формат(ДтФирмаСальдо,ПрописьФормат);
                ДтФирмаСальдо = Формат(ДтФирмаСальдо,СтрокаФормат);
                КтФирмаСальдо = Формат(КтФирмаСальдо,СтрокаФормат);
                ДтФирмаОборот = Формат(ДтФирмаОборот,СтрокаФормат);
                КтФирмаОборот = Формат(КтФирмаОборот,СтрокаФормат);
                ВПользуКогоСальдо = Фирма;
            Иначе
                СуммаПропись  = Формат(КтФирмаСальдо,ПрописьФормат);
                КтФирмаСальдо = Формат(КтФирмаСальдо,СтрокаФормат);
                КтФирмаОборот = Формат(КтФирмаОборот,СтрокаФормат);   
                ДтФирмаОборот = Формат(ДтФирмаОборот,СтрокаФормат);    // Чтобы "0" в таблице не высвечивался, мы применим к этой переменной формат
                ВПользуКогоСальдо = Контрагент.ПолнНаименование;
            КонецЕсли;
        КонецЕсли;   
        Таб.ВывестиСекцию("Дно");
        Таб.Опции(0,0,,,);
        Таб.ПараметрыСтраницы(1,,,10,10,10,10,0,0,1,1,);
        Таб.ОбластьПечати(2);
        Таб.ТолькоПросмотр(1);
        Таб.Показать(Назв+" результат",,1);
    КонецПроцедуры     
    
  5. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    СписокСчетов - замени на нужны тебе счет бух учета по которому ведутся расчеты с контрагентом, да и удали в начале все что связано с объектом "Расшифровка"

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