Имя: Пароль:
1C
1С v8
ИНВ-19 (сличительная ведомость)
0 Kucha88
 
09.12.12
10:56
Доброго всем времени! Пытаюсь сделать внешнюю печатную форму ИНВ-19 но выходит ошибка при формировании печатной формы: Поле объекта не обнаружено (Номер)
Прикладываю код, подскажите пожалуйста что не так:
Перем мВалютаРегламентированногоУчета Экспорт;

////// Валюта курс и кратность для пересчета регламентированных сумм
Перем мВалютаУпрУчета Экспорт;
//Перем мКурсУпрУчета Экспорт;
//Перем мКратностьУпрУчета Экспорт;
//Перем Склад Экспорт;

       Функция Печать()экспорт

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

   Если Ссылканаобъект.Склад.ВидСклада = Перечисления.ВидыСкладов.НТТ Тогда
       ВалютаПересчета = мВалютаРегламентированногоУчета;
   Иначе
       ВалютаПересчета = мВалютаУпрУчета;
   КонецЕсли;

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

   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
   
   Запрос.УстановитьПараметр("Курс",            Параметры.Курс);
   Запрос.УстановитьПараметр("Кратность",       Параметры.Кратность);
   Запрос.УстановитьПараметр("ВидСкладаНТТ",    Перечисления.ВидыСкладов.НТТ);

   Запрос.Текст =
   "ВЫБРАТЬ
   |    НомерСтроки КАК Номер,
   |    Номенклатура,
   |    Номенклатура.НаименованиеПолное КАК ТоварНаименование,
   |    Номенклатура." + ТоварКод + "   КАК ТоварКод,
   |    ЕдиницаИзмерения.Представление  КАК ЕдиницаИзмеренияНаименование,
   |    ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК ЕдиницаИзмеренияКодПоОКЕИ,
   |    Количество                     КАК ФактКоличество,
   |    КоличествоУчет                 КАК БухКоличество,
   |    ВЫБОР
   |        КОГДА Ссылка.Склад.ВидСклада = &ВидСкладаНТТ ТОГДА ЦенаВРознице
   |        ИНАЧЕ Цена * &Курс / &Кратность
   |    КОНЕЦ КАК Цена,
   |    ВЫБОР
   |        КОГДА Ссылка.Склад.ВидСклада = &ВидСкладаНТТ ТОГДА Количество * ЦенаВРознице
   |        ИНАЧЕ Сумма * &Курс / &Кратность
   |    КОНЕЦ КАК ФактСумма,
   |    ВЫБОР
   |        КОГДА Ссылка.Склад.ВидСклада = &ВидСкладаНТТ ТОГДА КоличествоУчет *ЦенаВРознице
   |        ИНАЧЕ СуммаУчет * &Курс / &Кратность
   |    КОНЕЦ КАК БухСумма,
   |    ХарактеристикаНоменклатуры     КАК Характеристика,
   |    СерияНоменклатуры КАК Серия
   |ИЗ
   |    Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК Товары
   |    
   |ГДЕ
   |    Товары.Ссылка = &ТекущийДокумент
   |    И (Товары.Количество - Товары.КоличествоУчет) <> 0
   |    
   |УПОРЯДОЧИТЬ ПО
   |    Товары.НомерСтроки";
   
   ВыборкаСтрокТовары = Запрос.Выполнить().Выбрать();

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

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

   Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизаций(Шапка.Руководители, Шапка.ДатаДокумента,);
   Руководитель = Руководители.Руководитель;
   Бухгалтер    = Руководители.ГлавныйБухгалтер;

   ТабДокумент.Вывести(ОбластьМакета);
   ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
   
   НомерСтраницы   = 2;
   
   ИтогоРезультатИзлишекКолво   = 0;
   ИтогоРезультатИзлишекСумма   = 0;
   ИтогоРезультатНедостачаКолво = 0;
   ИтогоРезультатНедостачаСумма = 0;

   // Выводим заголовок таблицы
   ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы1");
   ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
   ТабДокумент.Вывести(ЗаголовокТаблицы);

   КоличествоСтрок = ВыборкаСтрокТовары.Количество();

   // Выводим многострочную часть докмента
   ОбластьМакета              = Макет.ПолучитьОбласть("СтрокаТаблицы1");
   ОбластьИтоговПоСтранице    = Макет.ПолучитьОбласть("ИтогоТаблицы1");
   ОбластьПодвала             = Макет.ПолучитьОбласть("Подвал");
   МассивВыводимыхОбластей    = Новый Массив;
   Ном = 0;
   
   Пока ВыборкаСтрокТовары.Следующий() Цикл
       
       Ном = Ном + 1;
       
       Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
           Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
           Продолжить;
       КонецЕсли;

       ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
       ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары);
       ОбластьМакета.Параметры.Номер             = КоличествоСтрок.Номер;

       Разница     = 0;                                
       РазницаСумм = 0;
       
       Разница     = ВыборкаСтрокТовары.ФактКоличество - ВыборкаСтрокТовары.БухКоличество;
       РазницаСумм = ВыборкаСтрокТовары.ФактСумма      - ВыборкаСтрокТовары.БухСумма;
   
       Если Разница < 0 И РазницаСумм < 0 Тогда
           ОбластьМакета.Параметры.РезультатНедостачаКолво = - Разница;
           ОбластьМакета.Параметры.РезультатНедостачаСумма = - РазницаСумм;
           ОбластьМакета.Параметры.РезультатИзлишекКолво   = 0;
           ОбластьМакета.Параметры.РезультатИзлишекСумма   = 0;

           ИтогоРезультатНедостачаКолво = ИтогоРезультатНедостачаКолво + (- Разница);
           ИтогоРезультатНедостачаСумма = ИтогоРезультатНедостачаСумма + (- РазницаСумм);
       ИначеЕсли Разница < 0 И РазницаСумм >= 0 Тогда
           ОбластьМакета.Параметры.РезультатНедостачаКолво = - Разница;
           ОбластьМакета.Параметры.РезультатНедостачаСумма = РазницаСумм;
           ОбластьМакета.Параметры.РезультатИзлишекКолво   = 0;
           ОбластьМакета.Параметры.РезультатИзлишекСумма   = 0;

           ИтогоРезультатНедостачаКолво = ИтогоРезультатНедостачаКолво + (- Разница);
           ИтогоРезультатНедостачаСумма = ИтогоРезультатНедостачаСумма + РазницаСумм;
       Иначе
           ОбластьМакета.Параметры.РезультатНедостачаКолво = 0;
           ОбластьМакета.Параметры.РезультатНедостачаСумма = 0;
           ОбластьМакета.Параметры.РезультатИзлишекКолво   = Разница;
           ОбластьМакета.Параметры.РезультатИзлишекСумма   = РазницаСумм;

           ИтогоРезультатИзлишекКолво   = ИтогоРезультатИзлишекКолво   + Разница;
           ИтогоРезультатИзлишекСумма   = ИтогоРезультатИзлишекСумма   + РазницаСумм;
       КонецЕсли;
       
       МассивВыводимыхОбластей.Очистить();
       МассивВыводимыхОбластей.Добавить(ОбластьМакета);
       МассивВыводимыхОбластей.Добавить(ОбластьИтоговПоСтранице);
       Если Ном = КоличествоСтрок Тогда
           МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
       КонецЕсли;
       
       Если НЕ ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, МассивВыводимыхОбластей) Тогда
           
           НомерСтраницы = НомерСтраницы + 1;
           ТабДокумент.Вывести(ОбластьИтоговПоСтранице);
           ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
           ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
           ТабДокумент.Вывести(ЗаголовокТаблицы);
           КонецЕсли;
       

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

   КонецЦикла;

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

   ОбластьПодвала.Параметры.ФИОБухгалтера =  Бухгалтер;
   ОбластьПодвала.Параметры.Заполнить(Шапка);
   ТабДокумент.Вывести(ОбластьПодвала);

   // Зададим параметры макета
   ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

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

КонецФункции // ПечатьИНВ19()

Очень нужна помощь, за ранее спасибо!
1 KUBIK
 
09.12.12
11:02
КоличествоСтрок.Номер;

Здесь ошибка?
2 Kucha88
 
09.12.12
14:47
(1) скорей всего нет
я эту строчку кода
ОбластьМакета.Параметры.Номер             = КоличествоСтрок.Номер;
Сам добавлял, все равно ошибка выходит вот решил обратиться за помощью на форум
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший