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

внешняя печатная форма

Автор Yamuna, 01 авг 2019, 17:48

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

Yamuna

Добрый день! Бухгалтерия для Казахстана, редакция 2.0, разработка для Казахстана: «1С-Рейтинг» (2.0.27.2)при создании внешней печатной формы для документа СчетНаОплатуПокупателю получаем ошибку при отладке: {ОбщийМодуль.ОбщегоНазначения.Модуль(5046)}: Поле объекта не обнаружено (Номер)   Номер = СокрЛП(Документ.Номер);. я посмотрел отладчиком Документ и он имеет тип: Документ   ВнешняяОбработкаОбъект.ВнешняяПечатнаяФорма, а по идее должна быть ссылка на документ и тогда там есть номер, а тут Документ.СсылкаНаОбъект.Номер, СсылкаНаОбъект это реквизит внешней обработки сделал как написано в справке, вот код функции печать()
Функция Печать() Экспорт

СтруктурнаяЕдиница = СсылкаНаОбъект.СтруктурнаяЕдиница;
    Дата = СсылкаНаОбъект.Дата;
Организация = СсылкаНаОбъект.Организация;
Ответственный = СсылкаНаОбъект.Ответственный;

ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
ВыводитьКоды    = Истина;
Колонка         = "Артикул";
ТекстКодАртикул = "Артикул";
ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
ВыводитьКоды    = Истина;
Колонка         = "Код";
ТекстКодАртикул = "Код";
Иначе
ВыводитьКоды    = Ложь;
Колонка         = "";
ТекстКодАртикул = "Код";
КонецЕсли;

Если ВыводитьКоды Тогда
ОбластьШапки  = "ШапкаТаблицыСКодом";
ОбластьСтроки = "СтрокаСКодом";
Иначе
ОбластьШапки  = "ШапкаТаблицы";
ОбластьСтроки = "Строка";
КонецЕсли;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст ="
|ВЫБРАТЬ
| Номер,
| Дата,
| ДоговорКонтрагента,
| Организация,
| СтруктурноеПодразделение,
| Контрагент КАК Получатель,
| Организация КАК Руководители,
| Организация КАК Поставщик,
| СуммаДокумента,
| ВалютаДокумента,
| УчитыватьНДС,
| СуммаВключаетНДС,
|   КодНазначенияПлатежа
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК ЗаказПокупателя
|
|ГДЕ
| ЗаказПокупателя.Ссылка = &ТекущийДокумент";

Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";
                   
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
Запрос.Текст = "ВЫБРАТЬ
               | ВложенныйЗапрос.Номенклатура,
               | ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК Товар,
               | ВложенныйЗапрос.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
               | ВложенныйЗапрос.Количество,
               | ВложенныйЗапрос.ЕдиницаИзмерения,
               | ВложенныйЗапрос.Цена,
               | ВложенныйЗапрос.Сумма,
               | ВложенныйЗапрос.СуммаНДС,
               | ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
               | 1 КАК ID
               |ИЗ
               | (ВЫБРАТЬ
               | ЗаказПокупателя.Номенклатура КАК Номенклатура,
               | ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
               | ЗаказПокупателя.Цена КАК Цена,
               | СУММА(ЗаказПокупателя.Количество) КАК Количество,
               | СУММА(ЗаказПокупателя.Сумма) КАК Сумма,
               | СУММА(ЗаказПокупателя.СуммаНДС) КАК СуммаНДС,
               | МИНИМУМ(ЗаказПокупателя.НомерСтроки) КАК НомерСтроки
               | ИЗ
               | Документ.СчетНаОплатуПокупателю.Товары КАК ЗаказПокупателя
               | ГДЕ
               | ЗаказПокупателя.Ссылка = &ТекущийДокумент
               |
               | СГРУППИРОВАТЬ ПО
               | ЗаказПокупателя.Номенклатура,
               | ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование,
               | ЗаказПокупателя.Цена) КАК ВложенныйЗапрос
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | ЗаказПокупателя.Номенклатура,
               | ЗаказПокупателя.Содержание,
           | ЗаказПокупателя.Номенклатура."+ ТекстКодАртикул + " КАК КодАртикул,
               | ЗаказПокупателя.Количество,
               | ЕСТЬNULL(ЗаказПокупателя.Номенклатура.БазоваяЕдиницаИзмерения.Наименование, ""--""),
               | ЗаказПокупателя.Цена,
               | ЗаказПокупателя.Сумма,
               | ЗаказПокупателя.СуммаНДС,
               | ЗаказПокупателя.НомерСтроки,
               | 2
               |ИЗ
               | Документ.СчетНаОплатуПокупателю.Услуги КАК ЗаказПокупателя
               |ГДЕ
               | ЗаказПокупателя.Ссылка = &ТекущийДокумент
               |
               |ОБЪЕДИНИТЬ ВСЕ
               |
               |ВЫБРАТЬ
               | ЗаказПокупателя.ОсновноеСредство,
               | ВЫРАЗИТЬ(ЗаказПокупателя.ОсновноеСредство.НаименованиеПолное КАК СТРОКА(1000)),
               | NULL,
               | 1,
               | ""шт"",
               | ЗаказПокупателя.Сумма,
               | ЗаказПокупателя.Сумма,
               | ЗаказПокупателя.СуммаНДС,
               | ЗаказПокупателя.НомерСтроки,
               | 3
               |ИЗ
               | Документ.СчетНаОплатуПокупателю.ОС КАК ЗаказПокупателя
               |ГДЕ
               | ЗаказПокупателя.Ссылка = &ТекущийДокумент
               |
               |УПОРЯДОЧИТЬ ПО
               | ID,
               | НомерСтроки";

ЗапросТовары = Запрос.Выполнить().Выгрузить();

Макет = ПолучитьМакет("СчетЗаказ");

// Выводим шапку накладной

СтруктурнаяЕдиницаОрганизация = ОбщегоНазначения.ПолучитьСтруктурнуюЕдиницу(Шапка.Поставщик, Шапка.СтруктурноеПодразделение);
СведенияОПоставщике = ОбщегоНазначения.СведенияОЮрФизЛице(СтруктурнаяЕдиницаОрганизация, Шапка.Дата);

ОбластьМакета       = Макет.ПолучитьОбласть("ЗаголовокСчета");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.ПоставщикРНН_БИН = ОбщегоНазначения.ПолучитьРегистрационныйНомерОрганизацииКонтрагентаВПечатнуюФорму(СведенияОПоставщике, Шапка.Дата);
    ОбластьМакета.Параметры.ПоставщикКБЕ = СведенияОПоставщике.КБЕ;
Если ТипЗнч(СтруктурнаяЕдиница) = Тип("СправочникСсылка.БанковскиеСчета") Тогда

Банк             = СтруктурнаяЕдиница.Банк;
БИК              = УправлениеДенежнымиСредствами.ПолучитьБИКБанка(Дата, Банк);
ГородБанка       = Банк.Город;
СтрокаГородБанка = ?(ПустаяСтрока(ГородБанка), "", " г." + " " + ГородБанка);
НомерСчета       = СтруктурнаяЕдиница.НомерСчета;

ОбластьМакета.Параметры.БИКБанкаПолучателя   = БИК;
ОбластьМакета.Параметры.БанкПолучателя       = СокрЛП(Банк) + СтрокаГородБанка;
ОбластьМакета.Параметры.НомерСчетаПолучателя = НомерСчета;

КонецЕсли;   
ОбластьМакета.Параметры.ПредставлениеПоставщика = ОбщегоНазначения.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование,",,Шапка.Дата);
ТабДокумент.Вывести(ОбластьМакета);

Если ЗначениеЗаполнено(Организация.Логотип.Хранилище.Получить()) Тогда
ТабДокумент.Область("Логотип").Картинка = Организация.Логотип.Хранилище.Получить();
КонецЕсли;

ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(ЭтотОбъект, "Счет на оплату", глСписокПрефиксовУзлов);

ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.ПредставлениеПоставщика = ОбщегоНазначения.ОписаниеОрганизации(СведенияОПоставщике, "ИдентификационныйНомер,ПолноеНаименование,ЮридическийАдрес,Телефоны,",,Шапка.Дата);
ТабДокумент.Вывести(ОбластьМакета);

СведенияОПолучателе = ОбщегоНазначения.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
ОбластьМакета.Параметры.Заполнить(Шапка);
ОбластьМакета.Параметры.ПредставлениеПолучателя = ОбщегоНазначения.ОписаниеОрганизации(ОбщегоНазначения.СведенияОЮрФизЛице(Шапка.Получатель, Шапка.Дата), "ИдентификационныйНомер,ПолноеНаименование,ЮридическийАдрес,Телефоны,",,Шапка.Дата);
ТабДокумент.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Договор");
ОбластьМакета.Параметры.Заполнить(Шапка);
ТабДокумент.Вывести(ОбластьМакета);

ОбластьНомера = Макет.ПолучитьОбласть(ОбластьШапки + "|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть(ОбластьШапки + "|Данные");
ОбластьСуммы  = Макет.ПолучитьОбласть(ОбластьШапки + "|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ОбластьДанных.Параметры.Колонка = Колонка;
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);
ТабДокумент.Присоединить(ОбластьСуммы);

ОбластьКолонкаТовар = Макет.Область("Товар");

ОбластьНомера = Макет.ПолучитьОбласть(ОбластьСтроки + "|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть(ОбластьСтроки + "|Данные");
ОбластьСуммы  = Макет.ПолучитьОбласть(ОбластьСтроки + "|Сумма");

Сумма    = 0;
СуммаНДС = 0;
ВсегоСкидок    = 0;
ВсегоБезСкидок = 0;

Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
Продолжить;
КонецЕсли;

ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
ТабДокумент.Вывести(ОбластьНомера);

ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
ОбластьДанных.Параметры.Товар       = СокрЛП(ВыборкаСтрокТовары.Товар);
ОбластьДанных.Параметры.Количество  = Формат(ВыборкаСтрокТовары.Количество, "ЧДЦ=3");
Если ВыводитьКоды Тогда
ОбластьДанных.Параметры.КодАртикул = ?(ВыборкаСтрокТовары.ID = 3, ВыборкаСтрокТовары.Номенклатура.Код, ВыборкаСтрокТовары.КодАртикул);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);

ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
ТабДокумент.Присоединить(ОбластьСуммы);
Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;

КонецЦикла;

// Вывести Итого
ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
ТабДокумент.Присоединить(ОбластьДанных);
ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести ИтогоНДС
ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");

ТабДокумент.Вывести(ОбластьНомера);
Если Шапка.УчитыватьНДС Тогда
ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
КонецЕсли;
ТабДокумент.Присоединить(ОбластьДанных);

ТабДокумент.Присоединить(ОбластьСуммы);

// Вывести Сумму прописью
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
+ ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
ОбластьМакета.Параметры.СуммаПрописью = "Всего к оплате: " + ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
ТабДокумент.Вывести(ОбластьМакета);

// Вывести подписи
    ОбластьМакета = Макет.ПолучитьОбласть("ПодвалЗаказа");
ОбластьМакета.Параметры.ФИОИсполнителя = "/" + Ответственный.Наименование + "/";

ОбластьМакета.Параметры.Заполнить(Шапка);
ТабДокумент.Вывести(ОбластьМакета);

Возврат ТабДокумент;

КонецФункции // ПечатьСчетаЗаказа()

подскажите что не так делаю?

Yotram

Проверьте блок


ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(ЭтотОбъект, "Счет на оплату", глСписокПрефиксовУзлов);


Скорее всего ЭтотОбъект - это ваша Обработка

Я имею ввиду - что на месте ЭтотОбъект, должен быть документ)

Yamuna

Цитата: Yotram от 02 авг 2019, 08:23
Проверьте блок


ОбластьМакета.Параметры.ТекстЗаголовка = РаботаСДиалогами.СформироватьЗаголовокДокумента(ЭтотОбъект, "Счет на оплату", глСписокПрефиксовУзлов);


Скорее всего ЭтотОбъект - это ваша Обработка

Я имею ввиду - что на месте ЭтотОбъект, должен быть документ)
Ага точно , большое спасибо, поставил туда ССылкаНаОбъект и все ок!!

Теги:

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

Рейтинг@Mail.ru

Поиск