8.х Внешняя печатная форма счета

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем karpovna, 22 мар 2014.

  1. TopicStarter Overlay
    karpovna
    Offline

    karpovna

    Регистрация:
    22 мар 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Впервые делаю печатную форму счета.....что то я не так делаю. Выдает ошибку :
    Не удалось сформировать внешнюю печатную форму!
    Значение не является значением объектного типа (ОсновнойБанковскийСчет)
    Код:
    #Если Клиент Тогда
    Функция ВернутьРасчетныйСчет(СчетКонтрагента)
    
        БанкДляРасчетов = СчетКонтрагента.БанкДляРасчетов;
        Результат       = ?(БанкДляРасчетов.Пустая(), СчетКонтрагента.НомерСчета, СчетКонтрагента.Банк.КоррСчет);
    
        Возврат Результат;
    
    КонецФункции // ВернутьРасчетныйСчет()
       
    
    // Функция формирует табличный документ с печатной формой заказа или счета,
    // разработанного методистами
    //
    // Возвращаемое значение:
    //  Табличный документ - сформированная печатная форма
    //
    Функция ПечатьСчетаЗаказа(Тип) Экспорт
        Перем ПодразделениеОтветственныхЛиц;
    
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
        Запрос.Текст ="
        |ВЫБРАТЬ
        |    Номер,
        |    Дата,
        |    Организация,
        |    АдресДоставки,
           |    Контрагент КАК Покупатель,
        |    Организация КАК Руководители,
        |    Организация КАК Поставщик,
        |    ОрганизацияПолучатель КАК Получатель,
        |    СуммаДокумента,
        |    ВалютаДокумента,
        |    УчитыватьНДС,
        |    СуммаВключаетНДС
        |ИЗ
        |    Документ.СчетНаОплатуПокупателю КАК ЗаказПокупателя
        |
        |ГДЕ
        |    ЗаказПокупателя.Ссылка = &ТекущийДокумент";
    
        Шапка = Запрос.Выполнить().Выбрать();
        Шапка.Следующий();
    
        ТабДокумент = Новый ТабличныйДокумент;
        ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
    
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
       
        ЧастьЗапросаДляВыбораСодержанияУслуг = ФормированиеПечатныхФорм.ПолучитьЧастьЗапросаДляВыбораСодержанияУслуг("ЗаказПокупателя");
       
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
        |    ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,
        |    ВложенныйЗапрос.Номенклатура.Код КАК Код,
        |    ВложенныйЗапрос.Количество,
        |    ВложенныйЗапрос.ЕдиницаИзмерения,
        |    ВложенныйЗапрос.Цена,
        |    ВложенныйЗапрос.Сумма,
        |    ВложенныйЗапрос.СуммаНДС,
        |    ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
        |    1 КАК ID
        |ИЗ
        |    (ВЫБРАТЬ
        |        ЗаказПокупателя.Номенклатура КАК Номенклатура,
        |        ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
        |        ЗаказПокупателя.Цена КАК Цена,
        |        СУММА(ЗаказПокупателя.Количество) КАК Количество,
        |        СУММА(ЗаказПокупателя.Сумма) КАК Сумма,
        |        СУММА(ЗаказПокупателя.СуммаНДС) КАК СуммаНДС,
        |        МИНИМУМ(ЗаказПокупателя.НомерСтроки) КАК НомерСтроки
        |    ИЗ
        |        Документ.СчетНаОплатуПокупателю.Товары КАК ЗаказПокупателя
        |   
        |    ГДЕ
        |        ЗаказПокупателя.Ссылка = &ТекущийДокумент
        |   
        |    СГРУППИРОВАТЬ ПО
        |        ЗаказПокупателя.Номенклатура,
        |        ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
        |        ЗаказПокупателя.Цена) КАК ВложенныйЗапрос
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
        |    " + ЧастьЗапросаДляВыбораСодержанияУслуг + ",
        |    NULL,
        |    ЗаказПокупателя.Количество,
        |    ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
        |    ЗаказПокупателя.Цена,
        |    ЗаказПокупателя.Сумма,
        |    ЗаказПокупателя.СуммаНДС,
        |    ЗаказПокупателя.НомерСтроки,
        |    2
        |ИЗ
        |    Документ.СчетНаОплатуПокупателю.Услуги КАК ЗаказПокупателя
        |
        |ГДЕ
        |    ЗаказПокупателя.Ссылка = &ТекущийДокумент
        |
        |УПОРЯДОЧИТЬ ПО
        |    ID,
        |    НомерСтроки";
    
        ЗапросТовары = Запрос.Выполнить().Выгрузить();
    
        Макет = ПолучитьМакет("СчетЗаказ");
    
        // Выводим шапку накладной
          СведенияОПолучателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
        Если Тип = "Счет" Тогда
            ОбластьМакета       = Макет.ПолучитьОбласть("ЗаголовокСчета");
            ОбластьМакета.Параметры.Заполнить(Шапка);
            ОбластьМакета.Параметры.ИННПолучателя = СведенияОПолучателе.ИНН;
            ОбластьМакета.Параметры.КПППолучателя = СведенияОПолучателе.КПП;
            Если ТипЗнч(СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
                Банк = ?(НЕ ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов), СтруктурнаяЕдиница.Банк, СтруктурнаяЕдиница.БанкДляРасчетов);
                БИК        = Банк.Код;
                КоррСчет   = Банк.КоррСчет;
                ГородБанка = Банк.Город;
                НомерСчета = ВернутьРасчетныйСчет(СтруктурнаяЕдиница);
    
                ОбластьМакета.Параметры.БИКБанкаПолучателя               = БИК;
                ОбластьМакета.Параметры.БанкПолучателя                   = Банк;
                ОбластьМакета.Параметры.БанкПолучателяПредставление      = СокрЛП(Банк) + " " + ГородБанка;
                ОбластьМакета.Параметры.СчетБанкаПолучателя              = КоррСчет;
                ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = КоррСчет;
                ОбластьМакета.Параметры.СчетПолучателяПредставление      = НомерСчета;
                ОбластьМакета.Параметры.СчетПолучателя                   = НомерСчета;
            КонецЕсли;
           
            Если ПустаяСтрока(СтруктурнаяЕдиница.ТекстКорреспондента) Тогда
                ТекстКорреспондента = СведенияОПолучателе.НаименованиеДляПечатныхФорм;
                Если ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов) Тогда
                    ТекстКорреспондента = ТекстКорреспондента + " р/с " + СтруктурнаяЕдиница.НомерСчета
                    + " в " + СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город;
                КонецЕсли;   
            Иначе
                ТекстКорреспондента = СтруктурнаяЕдиница.ТекстКорреспондента;
            КонецЕсли;       
            ОбластьМакета.Параметры.ПредставлениеПолучателя = ТекстКорреспондента;
           
            ТабДокумент.Вывести(ОбластьМакета);
        КонецЕсли;
    
        ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
        ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Счет на оплату");
       
        ТабДокумент.Вывести(ОбластьМакета);
    
        ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
        ОбластьМакета.Параметры.Заполнить(Шапка);
        СведенияОбОрганизации    = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);
        ОбластьМакета.Параметры.ПредставлениеПокупателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
            СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,ИНН,КПП,ЮридическийАдрес,Телефоны,");
        ТабДокумент.Вывести(ОбластьМакета);
    
        ОбластьМакета = Макет.ПолучитьОбласть("АдресДоставки");
        ОбластьМакета.Параметры.Заполнить(Шапка);
        СведенияОбОрганизации    = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.АдресДоставки, Шапка.Дата);
        ТабДокумент.Вывести(ОбластьМакета);
    
        ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
        ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
        ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");
    
        ТабДокумент.Вывести(ОбластьНомера);
        ТабДокумент.Присоединить(ОбластьДанных);
        ТабДокумент.Присоединить(ОбластьСуммы);
    
        ОбластьКолонкаТовар = Макет.Область("Товар");
    
        ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
        ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
        ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");
    
        Сумма    = 0;
        СуммаНДС = 0;
        ВсегоСкидок    = 0;
        ВсегоБезСкидок = 0;
    
        Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
    
            ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
            ТабДокумент.Вывести(ОбластьНомера);
    
            ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
            ОбластьДанных.Параметры.Товар       = СокрЛП(ВыборкаСтрокТовары.Товар);
            ТабДокумент.Присоединить(ОбластьДанных);
    
            ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
            ТабДокумент.Присоединить(ОбластьСуммы);
            Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
            СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;
    
        КонецЦикла;
    
        // Вывести Итого
        ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
        ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
        ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");
    
        ТабДокумент.Вывести(ОбластьНомера);
        ТабДокумент.Присоединить(ОбластьДанных);
        ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
        ТабДокумент.Присоединить(ОбластьСуммы);
    
        // Вывести ИтогоНДС
        ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
        ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
        ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
       
        ТабДокумент.Вывести(ОбластьНомера);
        Если СуммаНДС <> 0 Тогда
            ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
            ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
        Иначе
            ОбластьДанных.Параметры.НДС = "Без налога (НДС)";
            ОбластьСуммы.Параметры.ВсегоНДС = "-";
        КонецЕсли;
        ТабДокумент.Присоединить(ОбластьДанных);
       
        ТабДокумент.Присоединить(ОбластьСуммы);
       
        // Вывести ИтогоКОплате
        ОбластьНомера = Макет.ПолучитьОбласть("ИтогоКОплате|НомерСтроки");
        ОбластьДанных = Макет.ПолучитьОбласть("ИтогоКОплате|Данные");
        ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоКОплате|Сумма");
        ТабДокумент.Вывести(ОбластьНомера);
        ТабДокумент.Присоединить(ОбластьДанных);
        СуммаКОплате = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
        ОбластьСуммы.Параметры.ИтогоКОплате = ОбщегоНазначения.ФорматСумм(СуммаКОплате);
        ТабДокумент.Присоединить(ОбластьСуммы);
       
        // Вывести Сумму прописью
        ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
        СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
        ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
        + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
        ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
        ТабДокумент.Вывести(ОбластьМакета);
    
        // Вывести подписи
        Если Тип = "Счет" Тогда
            ОбластьМакета = Макет.ПолучитьОбласть("ПодвалСчета");
           
            Руководители = ОбщегоНазначения.ОтветственныеЛица(Шапка.Руководители, Шапка.Дата, ПодразделениеОтветственныхЛиц);
            Руководитель = Руководители.РуководительПредставление;
            Бухгалтер    = Руководители.ГлавныйБухгалтерПредставление;
    
            ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
            ОбластьМакета.Параметры.ФИОБухгалтера   = Бухгалтер;
    
        Иначе
            ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
        КонецЕсли;
        ОбластьМакета.Параметры.Заполнить(Шапка);
        ТабДокумент.Вывести(ОбластьМакета);
    
        Возврат ТабДокумент;
    
    КонецФункции // ПечатьСчетаЗаказа()
    
    // Процедура осуществляет печать документа. Можно направить печать на
    // экран или принтер, а также распечатать необходимое количество копий.
    //
    //  Название макета печати передается в качестве параметра,
    // по переданному названию находим имя макета в соответствии.
    //
    // Параметры:
    //  НазваниеМакета - строка, название макета.
    //
    Функция Печать() Экспорт
             // Получить экземпляр документа на печать
        ИмяМакета = "Счет";
           
            ТабДокумент = ПечатьСчетаЗаказа(ИмяМакета);
       
          Возврат ТабДокумент;
       
    
    КонецФункции // Печать
    
    #КонецЕсли
    
    upload_2014-3-22_12-31-54.png
    --- Объединение сообщений, 22 мар 2014 ---
    Программа 1С 8.2 БП платформа 8.2.19.90
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Форма типовая. Зачем Вы ее делаете? Поможет отладчик.
  3. TopicStarter Overlay
    karpovna
    Offline

    karpovna

    Регистрация:
    22 мар 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Не совсем типовая. Поле Поставщик и покупатель изменено.
  4. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    И что далее???
  5. TopicStarter Overlay
    karpovna
    Offline

    karpovna

    Регистрация:
    22 мар 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    А далее выдает ошибку :
    Не удалось сформировать внешнюю печатную форму!
    Значение не является значением объектного типа (ОсновнойБанковскийСчет)

    Вот что в ней не так.?...р/с счет организации всегда выбирается основной
  6. LordMaverick
    Offline

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

    Регистрация:
    17 мар 2014
    Сообщения:
    3.438
    Симпатии:
    373
    Баллы:
    104
    а отредактировать встроенный шаблон нельзя?
  7. TopicStarter Overlay
    karpovna
    Offline

    karpovna

    Регистрация:
    22 мар 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Вот незнаю как. Прошу помощи
  8. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    В книгах это написано. Разбирайтесь.
  9. TopicStarter Overlay
    karpovna
    Offline

    karpovna

    Регистрация:
    22 мар 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    "Спасибо" за "помощь". Книги почитала уже. И Радченко и Хрусталеву
  10. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    Умерьте свой сарказм, душка :)
  11. impulse
    Online

    impulse Опытный в 1С

    Регистрация:
    16 июн 2013
    Сообщения:
    65
    Симпатии:
    4
    Баллы:
    29
    Это счет на оплату покупателю? А где в приведенном коде "ОсновнойБанковскийСчет"?
  12. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Тоже просмотрела весь код и не нашла основного счёта.

    P.S.:Странно, девушка "написала" такой большой сложный код для внешней печатной формы, а отредактировать стандартную печатную форму не может.
  13. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.767
    Симпатии:
    509
    Баллы:
    204
    Т.к. не она писала - это 100 %.
  14. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице();

    Ну естественно не она. Это код из типовой.


    karpovna, во-первых дополните код:
    между строками
    Код:
    ОбластьМакета.Параметры.КПППолучателя = СведенияОПолучателе.КПП;
    Если ТипЗнч(СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда
    вставьте:
    Код:
    СтруктурнаяЕдиница = СсылкаНаОбъект.СтруктурнаяЕдиница;
    во-вторых, поясните это:

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