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

Не удалось сформировать внешнюю печатную форму! Поле объекта не обнаружено (Товар)

Автор stydent117, 11 авг 2015, 14:26

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

stydent117

Добрый день,подскажите в чём ошибка "Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (Товар) "?
Конф:Комплексная,документ Заказ Покупателя.
В печатной форме "товар" есть.




#Если Клиент Тогда
Функция ВернутьРасчетныйСчет(СчетКонтрагента)

   БанкДляРасчетов = СчетКонтрагента.БанкДляРасчетов;
   Результат       = ?(БанкДляРасчетов.Пустая(), СчетКонтрагента.НомерСчета, СчетКонтрагента.Банк.КоррСчет);

   Возврат Результат;

КонецФункции // ВернутьРасчетныйСчет()
   

// Функция формирует табличный документ с печатной формой заказа или счета,
// разработанного методистами
//
// Возвращаемое значение:
//  Табличный документ - сформированная печатная форма
//
Функция ПечатьСчетаЗаказа(Тип) Экспорт
   Перем ПодразделениеОтветственныхЛиц;

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

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

   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Счет";

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
   СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПокупателя");

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

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

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


   Макет = ПолучитьМакет("СчетГримме");

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

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


   ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы");

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

   ОбластьСтрока = Макет.ПолучитьОбласть("Строка");


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

      ОбластьСтрока.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
        товар = СокрЛП(ВыборкаСтрокТовары.Товар);
      Артикул =Лев(товар,9);
      Если Найти(Артикул,".")=0 тогда
         Если НЕ ВыводитьБезАртикула тогда
            продолжить;
         КонецЕсли;   
         Артикул = "";
      иначе
         товар = СтрЗаменить(товар,""+Артикул+" ","");
      КонецЕсли;
      ОбластьСтрока.Параметры.Артикул       = Артикул;
      ОбластьСтрока.Параметры.Товар       = товар;
      ОбластьСтрока.Параметры.Количество       = ВыборкаСтрокТовары.Количество;
        ТабДокумент.Вывести(ОбластьСтрока);

   КонецЦикла;

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

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

// Процедура осуществляет печать документа. Можно направить печать на
// экран или принтер, а также распечатать необходимое количество копий.
//
//  Название макета печати передается в качестве параметра,
// по переданному названию находим имя макета в соответствии.
//
// Параметры:
//  НазваниеМакета - строка, название макета.
//
Функция Печать() Экспорт
       // Получить экземпляр документа на печать
   ИмяМакета = "СчетГримме";
      
      ТабДокумент = ПечатьСчетаЗаказа(ИмяМакета);
   
     Возврат ТабДокумент;
   

КонецФункции // Печать

#КонецЕсли

vitasw


cska-fanat-kz

гуглите, как отлаживать внешние печатные формы.

хотя скорее всего дело в
"ОбластьСтрока.Параметры.Товар       = товар;"
и у этой области нет такого параметра...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

pavl_vs

stydent117, замечания:
- следовало бы использовать теги кода;
- большая часть кода отношения к существу вопроса не имеет;
- следовало бы указать место возникновения сообщения об ошибке.

Вопрос:
область (ячейка) строки "Товар" в свойствах определена как "Параметр", или застряла, например, как "Строка"?

stydent117

Цитата: pavl_vs от 11 авг 2015, 14:46
stydent117, замечания:
- следовало бы использовать теги кода;
- большая часть кода отношения к существу вопроса не имеет;
- следовало бы указать место возникновения сообщения об ошибке.

Вопрос:
область (ячейка) строки "Товар" в свойствах определена как "Параметр", или застряла, например, как "Строка"?

В макете как параметр.
Добавлено: 11 авг 2015, 14:49


Цитата: pavl_vs от 11 авг 2015, 14:46
stydent117, замечания:
- следовало бы использовать теги кода;
- большая часть кода отношения к существу вопроса не имеет;
- следовало бы указать место возникновения сообщения об ошибке.

Вопрос:
область (ячейка) строки "Товар" в свойствах определена как "Параметр", или застряла, например, как "Строка"?
В макете как параметр.

cska-fanat-kz

а. повторение - мать заикания? ;)
б. Ругается на
       товар = СокрЛП(ВыборкаСтрокТовары.Товар);

догадайтесь почему...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

pavl_vs

ЦитироватьВ макете как параметр.
Но чудес ведь не бывает.
Покажите макет и свойства ячейки.

Ругается всё же, как я понял, на строку
ОбластьСтрока.Параметры.Товар = товар;
Поставьте коммент (//) на этой строке -  проверьте вывод Артикула и количества.

Соглашусь с #2 и посоветовал бы больше самостоятельности в отладке.

stydent117

Скрин.
Добавлено: 11 авг 2015, 15:30


Цитата: pavl_vs от 11 авг 2015, 15:09
ЦитироватьВ макете как параметр.
Но чудес ведь не бывает.
Покажите макет и свойства ячейки.

Ругается всё же, как я понял, на строку
ОбластьСтрока.Параметры.Товар = товар;
Поставьте коммент (//) на этой строке -  проверьте вывод Артикула и количества.

Соглашусь с #2 и посоветовал бы больше самостоятельности в отладке.

Нет,все равно ругается на "Товар"
Добавлено: 11 авг 2015, 15:34


Цитата: cska-fanat-kz от 11 авг 2015, 14:54
а. повторение - мать заикания? ;)
б. Ругается на
       товар = СокрЛП(ВыборкаСтрокТовары.Товар);

догадайтесь почему...

//  товар = СокрЛП(ВыборкаСтрокТовары.Товар);
      //Артикул =Лев(товар,9);
      //Если Найти(Артикул,".")=0 тогда
      //   Если НЕ ВыводитьБезАртикула тогда
      //      продолжить;
      //   КонецЕсли;   
      //   Артикул = "";
      //иначе
      //   товар = СтрЗаменить(товар,""+Артикул+" ","");
      //КонецЕсли;
      //ОбластьСтрока.Параметры.Артикул       = Артикул;
   //   ОбластьСтрока.Параметры.Товар       = товар;
Да, ошибка тут,вывел печ.форму,заполнил количество.
Добавлено: 11 авг 2015, 15:47


Цитата: cska-fanat-kz от 11 авг 2015, 14:54
а. повторение - мать заикания? ;)
б. Ругается на
       товар = СокрЛП(ВыборкаСтрокТовары.Товар);

догадайтесь почему...

товар = СокрЛП(ВыборкаСтрокТовары.Товар);//Тут получается перем товар=значение из запроса,так?
      Артикул =Лев(товар,9); //тут перем артикул = 9 знакам слева
      Если Найти(Артикул,".")=0 тогда //тут если артикул =0 тогда дальше
         Если НЕ ВыводитьБезАртикула тогда
            продолжить;
         КонецЕсли;   
         Артикул = "";//тут появляется значение артикула(9 знаков слева)
      иначе
         товар = СтрЗаменить(товар,""+Артикул+" ","");//не пойму что тут
      КонецЕсли;
      ОбластьСтрока.Параметры.Артикул       = Артикул;
      ОбластьСтрока.Параметры.Товар       = товар;
Так я понимаю?

pavl_vs

stydent117, судя по Вашим комментариям к фрагментам кода писали код не Вы.

Покажите конкретно структуру "товара", закомментарив в цикле всё кроме "товара", ну можно оставить еще "Артикул", и введя в цикл Сообщение:

Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
//...........
  товар = СокрЛП(ВыборкаСтрокТовары.Товар);
  Артикул =Лев(товар,9);
//...........
Сообщить(товар);
// здесь можно так: Сообщить(Артикул + "  " + товар);
КонецЦикла;


stydent117

Цитата: pavl_vs от 11 авг 2015, 16:38
stydent117, судя по Вашим комментариям к фрагментам кода писали код не Вы.

Покажите конкретно структуру "товара", закомментарив в цикле всё кроме "товара", ну можно оставить еще "Артикул", и введя в цикл Сообщение:

Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
//...........
  товар = СокрЛП(ВыборкаСтрокТовары.Товар);
  Артикул =Лев(товар,9);
//...........
Сообщить(товар);
// здесь можно так: Сообщить(Артикул + "  " + товар);
КонецЦикла;


Наименование полное выводит,а вот с обрезкой проблемы.
Аналогичная ошибка.
С переменной товар как я понимаю траблы,он не видит ее чтоль или нет у нее значения.

Теги:

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

Рейтинг@Mail.ru

Поиск