Имя: Пароль:
1C
1С v8
Вывод док-та: ошибка
0 tg30000
 
27.10.11
10:50
Процедура Печать(Элемент)
   
   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.а01ИНВ3_пробная.ПолучитьМакет("Печать");

   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    а01ИНВ3_пробная.Номер,
                  |    а01ИНВ3_пробная.Дата,
                  |    а01ИНВ3_пробная.ТабличнаяЧасть1.(
                  |        НомерСтроки,
                  |        Счет,
                  |        Наименование
                  |    )
                  |ИЗ
                  |    Документ.а01ИНВ3_пробная КАК а01ИНВ3_пробная";
   
   Шапка=Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
   ВыборкаСтрокТовары =Шапка.ТабличнаяЧасть1.Выбрать();
   

   
   // Шапка
   Шапка = Макет.ПолучитьОбласть("Шапка");
   Шапка.Параметры.Заполнить(ЭтотОбъект);
   ТабДок.Вывести(Шапка);
   ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
   СтрокНаСтранице =12;
   СтрокШапки = 5;
   СтрокПодвала = 5;
   НомерСтраницы = 2;
   Ном =0;
   //--
   
   //--
   
   КолвоСтрокПоСтранице = 0;
   КолвоПостранице = 0;
   СуммаЛиста =0;
   ИтогоКолво=0;
   ИтогоСумма =0;
   
   //ВыводимЗаголовок
   ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
   ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
   ТабДок.Вывести(ЗаголовокТаблицы);
   //--------------------------------------------------------------------------------------
   
   КоличествоСтрок = ВыборкаСтрокТовары.Количество();

   Если КоличествоСтрок = 1 Тогда
       ПереноситьПоследнююСтроку = 0;
   Иначе
       ЦелыхСтраницСПодвалом     = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице);
       ЦелыхСтраницБезПодвала    = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице);
       ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
   КонецЕсли;

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



выдает ошибку...
{Документ.а01ИНВ3_пробная.Форма.ФормаДокумента.Форма(63)}: Поле объекта не обнаружено (ТабличнаяЧасть1)
ВыборкаСтрокТовары = Шапка.ТабличнаяЧасть1.Выбрать();
1 Шапокляк
 
27.10.11
10:59
Жуть какая... Делайте запрос сразу к табличной части, а номер и дату берите из ссылки.
2 tg30000
 
27.10.11
11:01
сделал на основе Док-та из самой конфигурации 1с:КА.
3 tg30000
 
27.10.11
11:02
ошибка в чем?
4 DrShad
 
27.10.11
11:07
в том что нет ТабличнаяЧасть1
5 tg30000
 
27.10.11
11:08
(4) исходя из текста ошибки я это понял , не соображу что у меня не так..
6 DrShad
 
27.10.11
11:11
у тебя в выборке нет ТабличнаяЧасть1 неужели не ясно
7 hhhh
 
27.10.11
11:14
(5) не парься. Сделай по-нормальному

ВЫБРАТЬ
                  |    а01ИНВ3_пробная.Ссылка.Номер КАК Номер,
                  |    а01ИНВ3_пробная.Ссылка.Дата КАК Дата,
                  |    а01ИНВ3_пробная.НомерСтроки,
                  |    а01ИНВ3_пробная.Счет,
                  |    а01ИНВ3_пробная.Наименование
                  |ИЗ
                  |    Документ.а01ИНВ3_пробная.табличнаячасть1 КАК а01ИНВ3_пробная
8 tg30000
 
27.10.11
11:30
(7)

сделал ,но что-то не выводит строку ...




Процедура Печать(Элемент)
   
   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.а01ИНВ3_пробная.ПолучитьМакет("Печать");

   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    а01ИНВ3_пробная.Ссылка.Номер КАК Номер,
                  |    а01ИНВ3_пробная.Ссылка.Дата КАК Дата,
                  |    а01ИНВ3_пробная.НомерСтроки,
                  |    а01ИНВ3_пробная.Счет,
                  |    а01ИНВ3_пробная.Наименование
                  |ИЗ
                  |    Документ.а01ИНВ3_пробная.Табличнаячасть1 КАК а01ИНВ3_пробная";
   
   Шапка=Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
   ВыборкаСтрокТовары =Шапка.Выбрать();
   

   
   // Шапка
   Шапка = Макет.ПолучитьОбласть("Шапка");
   Шапка.Параметры.Заполнить(ЭтотОбъект);
   ТабДок.Вывести(Шапка);
   ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
   СтрокНаСтранице =12;
   СтрокШапки = 5;
   СтрокПодвала = 5;
   НомерСтраницы = 2;
   Ном =0;
   //--
   
   //--
   
   КолвоСтрокПоСтранице = 0;
   КолвоПостранице = 0;
   СуммаЛиста =0;
   ИтогоКолво=0;
   ИтогоСумма =0;
   
   //ВыводимЗаголовок
   ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
   ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
   ТабДок.Вывести(ЗаголовокТаблицы);
   //--------------------------------------------------------------------------------------
   
   КоличествоСтрок = ВыборкаСтрокТовары.Количество();

   Если КоличествоСтрок = 1 Тогда
       ПереноситьПоследнююСтроку = 0;
   Иначе
       ЦелыхСтраницСПодвалом     = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице);
       ЦелыхСтраницБезПодвала    = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице);
       ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
   КонецЕсли;

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

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

       Ном = Ном + 1;
       //Начинаем новую страницу, если предыдущая строка была последней на странице
       //или пора переносить последнюю строку на последнюю страницу с подвалом.
       ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице;

       Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
        или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок)) Тогда

           ОбластьИтоговПоСтранице                               = Макет.ПолучитьОбласть("ПодвалСтраницы");
           //ОбластьИтоговПоСтранице.Параметры.ИтогоФактКоличество = ИтогФактКоличество;
           //    ОбластьИтоговПоСтранице.Параметры.ИтогоФактСумма      = ИтогФактСумма;
           //ОбластьИтоговПоСтранице.Параметры.ИтогоБухКоличество  = ИтогБухКоличество;
           //ОбластьИтоговПоСтранице.Параметры.ИтогоБухСумма       = ИтогБухСумма;

           ОбластьИтоговПоСтранице.Параметры.КоличествоПорядковыхНомеровНаСтраницеПрописью = ЧислоПрописью(КолвоСтрокПоСтранице, ,",,,,,,,,0");
           //Если НЕ БезФактическихДанных Тогда
           //    ОбластьИтоговПоСтранице.Параметры.ОбщееКоличествоЕдиницФактическиНаСтраницеПрописью = ФормированиеПечатныхФорм.КоличествоПрописью(КолвоПостранице);
           //    ОбластьИтоговПоСтранице.Параметры.СуммаФактическиНаСтраницеПрописью                 = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаЛиста, ВалютаПечати);
           //КонецЕсли;
           ТабДок.Вывести(ОбластьИтоговПоСтранице);
           
           НомерСтраницы = НомерСтраницы + 1;
           ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

           ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
           ТабДок.Вывести(ЗаголовокТаблицы);

           ИтогФактКоличество = 0;
           ИтогФактСумма      = 0;
           ИтогБухКоличество  = 0;
           ИтогБухСумма       = 0;

           КолвоСтрокПоСтранице = 0;
           КолвоПостранице      = 0;
           СуммаЛиста           = 0;

       КонецЕсли;

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

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

       ИтогФактКоличество = ИтогФактКоличество + ВыборкаСтрокТовары.ФактКоличество;
       ИтогФактСумма      = ИтогФактСумма      + ВыборкаСтрокТовары.ФактСумма;
       ИтогБухКоличество  = ИтогБухКоличество  + ВыборкаСтрокТовары.БухКоличество;
       ИтогБухСумма       = ИтогБухСумма       + ВыборкаСтрокТовары.БухСумма;
       ИтогоКолво         = ИтогоКолво         + ВыборкаСтрокТовары.ФактКоличество;
       ИтогоСумма         = ИтогоСумма         + ВыборкаСтрокТовары.ФактСумма;

       КолвоСтрокПоСтранице = КолвоСтрокПоСтранице + 1;
       КолвоПостранице      = КолвоПостранице      + ВыборкаСтрокТовары.ФактКоличество;
       СуммаЛиста           = СуммаЛиста           + ВыборкаСтрокТовары.ФактСумма;

   КонецЦикла;

   
   //--------------------------------------------------------------------------------------
   ТабДок.Показать();
9 Wobland
 
27.10.11
11:33
Шапка=Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ВыборкаСтрокТовары =Шапка.Выбрать();
...
Пока ВыборкаСтрокТовары.Следующий() Цикл


на зачем два раза подряд Следующий() делаешь? больше читать лениво, да и так непонятно, что не так
10 tg30000
 
27.10.11
12:05
(9) выводится печатная форма но нет строк...
Сейчас отладчиком посмотрю что к чему..
11 tg30000
 
27.10.11
12:08
не заполняются..
ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
12 tg30000
 
27.10.11
12:11
не передаются значения, что-то не так сделал...



Процедура Печать(Элемент)
   
   ТабДок = Новый ТабличныйДокумент;
   Макет = Документы.а01ИНВ3_пробная.ПолучитьМакет("Печать");

   
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    а01ИНВ3_пробная.Ссылка.Номер КАК Номер,
                  |    а01ИНВ3_пробная.Ссылка.Дата КАК Дата,
                  |    а01ИНВ3_пробная.НомерСтроки,
                  |    а01ИНВ3_пробная.Счет,
                  |    а01ИНВ3_пробная.Наименование
                  |ИЗ
                  |    Документ.а01ИНВ3_пробная.Табличнаячасть1 КАК а01ИНВ3_пробная";
   
   Шапка=Запрос.Выполнить().Выбрать();
   ВыборкаСтрокТовары =Шапка.Выбрать();
   

   
   // Шапка
   Шапка = Макет.ПолучитьОбласть("Шапка");
   Шапка.Параметры.Заполнить(ЭтотОбъект);
   ТабДок.Вывести(Шапка);
   ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
   СтрокНаСтранице =12;
   СтрокШапки = 5;
   СтрокПодвала = 5;
   НомерСтраницы = 2;
   Ном =0;
   //--
   
   //--
   
   КолвоСтрокПоСтранице = 0;
   КолвоПостранице = 0;
   СуммаЛиста =0;
   ИтогоКолво=0;
   ИтогоСумма =0;
   
   //ВыводимЗаголовок
   ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
   ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
   ТабДок.Вывести(ЗаголовокТаблицы);
   //--------------------------------------------------------------------------------------
   
   КоличествоСтрок = ВыборкаСтрокТовары.Количество();

   Если КоличествоСтрок = 1 Тогда
       ПереноситьПоследнююСтроку = 0;
   Иначе
       ЦелыхСтраницСПодвалом     = Цел((СтрокШапки + КоличествоСтрок + СтрокПодвала) / СтрокНаСтранице);
       ЦелыхСтраницБезПодвала    = Цел((СтрокШапки + КоличествоСтрок - 1) / СтрокНаСтранице);
       ПереноситьПоследнююСтроку = ЦелыхСтраницСПодвалом - ЦелыхСтраницБезПодвала;
   КонецЕсли;

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

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

       Ном = Ном + 1;
       //Начинаем новую страницу, если предыдущая строка была последней на странице
       //или пора переносить последнюю строку на последнюю страницу с подвалом.
       ЦелаяСтраница = (СтрокШапки + Ном - 1) / СтрокНаСтранице;

       Если (ЦелаяСтраница = Цел(ЦелаяСтраница))
        или ((ПереноситьПоследнююСтроку = 1) и (Ном = КоличествоСтрок)) Тогда

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

           ЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
           ТабДок.Вывести(ЗаголовокТаблицы);

           ИтогФактКоличество = 0;
           ИтогФактСумма      = 0;
           ИтогБухКоличество  = 0;
           ИтогБухСумма       = 0;

           КолвоСтрокПоСтранице = 0;
           КолвоПостранице      = 0;
           СуммаЛиста           = 0;

       КонецЕсли;

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

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

       ИтогФактКоличество = ИтогФактКоличество + ВыборкаСтрокТовары.ФактКоличество;
       ИтогФактСумма      = ИтогФактСумма      + ВыборкаСтрокТовары.ФактСумма;
       ИтогБухКоличество  = ИтогБухКоличество  + ВыборкаСтрокТовары.БухКоличество;
       ИтогБухСумма       = ИтогБухСумма       + ВыборкаСтрокТовары.БухСумма;
       ИтогоКолво         = ИтогоКолво         + ВыборкаСтрокТовары.ФактКоличество;
       ИтогоСумма         = ИтогоСумма         + ВыборкаСтрокТовары.ФактСумма;

       КолвоСтрокПоСтранице = КолвоСтрокПоСтранице + 1;
       КолвоПостранице      = КолвоПостранице      + ВыборкаСтрокТовары.ФактКоличество;
       СуммаЛиста           = СуммаЛиста           + ВыборкаСтрокТовары.ФактСумма;

   КонецЦикла;

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

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

   // Зададим параметры макета
   ТабДок.ПолеСверху = 0;
   ТабДок.ПолеСлева  = 0;
   ТабДок.ПолеСнизу  = 0;
   ТабДок.ПолеСправа = 0;
   ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
   
   ТабДок.Показать();
   КонецПроцедуры
13 Шапокляк
 
27.10.11
12:18
Шапка=Запрос.Выполнить();
   ВыборкаСтрокТовары =Шапка.Выбрать();

а вы все документы этого вида решили напечатать?
14 Wobland
 
27.10.11
12:22
+(13) телепатирую: ГДЕ а01ИНВ3_пробная.Ссылка=&Ссылка
плюс Запрос.УстановитьПараметр("Ссылка", Ссылка);
15 Wobland
 
27.10.11
12:24
(11) ну посмотри, с какими значениями ты приходишь на эту строку
16 tg30000
 
27.10.11
12:33
(11) ... Ошибка чтения значения
17 tg30000
 
27.10.11
12:33
(15) хорошая задача про площадь треугольника!)
18 tg30000
 
27.10.11
12:38
(13) мне бы вывести "строку" а "а вы все документы этого вида решили напечатать?" это я не делал сейчас, строку не выводит..запутался в запросе..
19 Wobland
 
27.10.11
12:41
(16) ну дык найди, в каком месте в твоей выборке всё теряется. и вообще, попадает ли туда что-нибудь
20 tg30000
 
27.10.11
12:42
(19) ок.
21 Шапокляк
 
27.10.11
12:43
(18) Не читатель?
  Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    а01ИНВ3_пробная.Ссылка.Номер КАК Номер,
                  |    а01ИНВ3_пробная.Ссылка.Дата КАК Дата,
                  |    а01ИНВ3_пробная.НомерСтроки,
                  |    а01ИНВ3_пробная.Счет,
                  |    а01ИНВ3_пробная.Наименование
                  |ИЗ
                  |    Документ.а01ИНВ3_пробная.Табличнаячасть1 КАК а01ИНВ3_пробная
|ГДЕ а01ИНВ3_пробная.Ссылка=&Ссылка ";
   Запрос.УстановитьПараметр("Ссылка", Ссылка);
   Шапка=Запрос.Выполнить();
    Шляпа = Макет.ПолучитьОбласть("Шапка");
   ВыборкаСтрокТовары =Шапка.Выбрать();
   Пока ВыборкаСтрокТовары.Следующий() Цикл



   Шляпа.Параметры.Заполнить(ВыборкаСтрокТовары);
   ТабДок.Вывести(Шляпа);
22 tg30000
 
27.10.11
12:56
(21) сейчас попробую.
23 tg30000
 
27.10.11
12:59
ООООоооо работает!!)
24 tg30000
 
27.10.11
12:59
Всем БОЛЬШОЕ СПАСИБО!!!