Имя: Пароль:
1C
1С v8
Как убрать в печатной форме пустые строки?
0 Miss1C
 
20.10.12
14:56
http://s59.radikal.ru/i166/1210/09/ad70563d21be.bmp

Функция  ПолучитьПечатнуюФормуМаршрутногоЛиста() Экспорт
   ТекстЗапроса = "ВЫБРАТЬ
                  |    ВозвратнаяТара.Номенклатура КАК Номенклатура
                  |ИЗ
                  |    РегистрСведений.ВозвратнаяТара КАК ВозвратнаяТара
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    ВозвратнаяТара.ПорядокСортировки,
                  |    ВозвратнаяТара.Номенклатура.Наименование";
   Запрос = Новый Запрос(ТекстЗапроса);
   ПереченьТары = Запрос.Выполнить().Выгрузить();
   
   Таб = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("МаршрутныйЛист");
   Область = Макет.ПолучитьОбласть("Шапка|Общая");
   Область.Параметры.Заполнить(СсылкаНаОбъект);
   Если СсылкаНаОбъект.НомерХодки > 1 Тогда
       Область.Параметры.Дозагруз = "Дозагруз";
   Иначе
       Область.Параметры.Дозагруз = "";
   КонецЕсли;
   Область.Параметры.ДатаДокумента = Формат(СсылкаНаОбъект.Дата,"ДФ=dd.MM.yyyy");
   Таб.Вывести(Область);
   
   Для каждого СтрокаТары из ПереченьТары Цикл
       Область = Макет.ПолучитьОбласть("Шапка|Тара");
       Область.Параметры.НазваниеТары = СтрокаТары.Номенклатура;
       Таб.Присоединить(Область);
   КонецЦикла;
   
   ТаблицаНакладных = СсылкаНаОбъект.РасходныеНакладные.Выгрузить();
   ТаблицаНакладных.Сортировать("ПорядокПосещения Возр");
   
   //ТекПорядокПосещения = Число(ТаблицаНакладных[0].ПорядокПосещения);
   ТекПорядокПосещения = Неопределено;
   ОбластьЛево = 1;
   ОбластьПраво = 1;
   ОбластьВерх = 9;
   ОбластьНиз = 10;
   ОбластьВерхРеал = ОбластьВерх;
   ОбластьНизРеал = ОбластьНиз;
   ТекстЗапроса =
   "ВЫБРАТЬ
   |    КоординатыОбъектов.Объект,
   |    КоординатыОбъектов.Широта,
   |    КоординатыОбъектов.Долгота,
   |    КоординатыОбъектов.КоординатыУточнены
   |ИЗ
   |    РегистрСведений.КоординатыОбъектов КАК КоординатыОбъектов
   |ГДЕ
   |    КоординатыОбъектов.Объект = &Объект";
   Запрос = Новый Запрос(ТекстЗапроса);
   Запрос.УстановитьПараметр("Объект", ТаблицаНакладных[0].ТорговаяТочка);
   Выборка = Запрос.Выполнить().Выбрать();
   НетКоординат = Истина;
   Если Выборка.Следующий() Тогда
       Если Выборка.КоординатыУточнены Тогда
           НетКоординат = Ложь;    
       КонецЕсли;
   КонецЕсли;

   ТЗ = Новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить("Контрагент");
   ТЗ.Колонки.Добавить("ТорговаяТочка");
   
   Для каждого Накладная из ТаблицаНакладных Цикл        
       
       Отбор = Новый Структура();
       Отбор.Вставить("Контрагент",Накладная.ТорговаяТочка.Владелец);
       Отбор.Вставить("ТорговаяТочка",Накладная.ТорговаяТочка);
       ИскомаяСтрока = ТЗ.НайтиСтроки(Отбор);
       
       Если ИскомаяСтрока.Количество() = 0 Тогда
           СтрокаТЗ = ТЗ.Добавить();
           СтрокаТЗ.Контрагент = Накладная.ТорговаяТочка.Владелец;
           СтрокаТЗ.ТорговаяТочка = Накладная.ТорговаяТочка;
       КонецЕсли;
       //Область = Макет.ПолучитьОбласть("СтрокаКонтрагент|Общая");
       //Область.Параметры.Заполнить(Накладная);
       Если ИскомаяСтрока.Количество() = 0 Тогда
           Область = Макет.ПолучитьОбласть("СтрокаКонтрагент|Общая");
           Область.Параметры.Заполнить(Накладная);
           Область.Параметры.Контрагент = Накладная.ТорговаяТочка.Владелец;
           Область.Параметры.Адрес = тглОбщегоНазначения.ПолучитьПредставлениеАдресаТорговойТочки(Накладная.ТорговаяТочка);
       КонецЕсли;
       
       Обл = Макет.ПолучитьОбласть("СтрокаДокумент|Общая");
       Обл.Параметры.Заполнить(Накладная);
       
       Обл.Параметры.НомерНакладной = Накладная.РасходнаяНакладная.Номер;
       
       Если Накладная.РасходнаяНакладная.Сделка.Пустая() Тогда
           Примечание = "";
       Иначе
           Примечание = Накладная.РасходнаяНакладная.Сделка.Комментарий;
       КонецЕсли;
           
       НомерСтрокиМаршрута = СсылкаНаОбъект.Маршрут.Найти(Накладная.ТорговаяТочка,"ТорговаяТочка");
       Если НомерСтрокиМаршрута <> Неопределено Тогда
           Если Примечание = "" Тогда
               Примечание = НомерСтрокиМаршрута.Комментарий;
           Иначе
               Примечание = Примечание + "/" + НомерСтрокиМаршрута.Комментарий;
           КонецЕсли;
           ПорядокПосещения = НомерСтрокиМаршрута.НомерСтроки;
           Если ТекПорядокПосещения = Неопределено Тогда
               ТекПорядокПосещения = ПорядокПосещения;
           КонецЕсли;
       Иначе
       //    Примечание = "";
           ПорядокПосещения = 0;
       КонецЕсли;
       Обл.Параметры.Примечание = Примечание;
       Если ИскомаяСтрока.Количество() = 0 Тогда
           Область.Параметры.ПорядокПосещения = ПорядокПосещения;
       КонецЕсли;        
       ТекстЗапроса =
       "ВЫБРАТЬ
       |    КоординатыОбъектов.Объект,
       |    КоординатыОбъектов.Широта,
       |    КоординатыОбъектов.Долгота,
       |    КоординатыОбъектов.КоординатыУточнены
       |ИЗ
       |    РегистрСведений.КоординатыОбъектов КАК КоординатыОбъектов
       |ГДЕ
       |    КоординатыОбъектов.Объект = &Объект";
       Запрос = Новый Запрос(ТекстЗапроса);
       Запрос.УстановитьПараметр("Объект", Накладная.ТорговаяТочка);
       Выборка = Запрос.Выполнить().Выбрать();
       НетКоординатРеал = Истина;
       Если Выборка.Следующий() Тогда
           Если Выборка.КоординатыУточнены Тогда
               НетКоординатРеал = Ложь;    
           КонецЕсли;
       КонецЕсли;
       
       Если Число(ПорядокПосещения) <> ТекПорядокПосещения Тогда
           
           ОбластьОбъединения = Таб.Область("R" + ОбластьВерх + "C" + ОбластьЛево + ":R" + ОбластьНиз + "C" + ОбластьПраво);
           ОбластьОбъединения.Объединить();
           ОбластьОбъединения.Текст = Число(ТекПорядокПосещения);
           Если НетКоординат Тогда
               ОбластьОбъединения.ЦветФона = Новый Цвет(205, 205, 205);
           КонецЕсли;    
           ТекПорядокПосещения = Число(ПорядокПосещения);            
           ОбластьВерх = ОбластьВерхРеал;    
           ОбластьНиз = ОбластьНизРеал;
           НетКоординат = НетКоординатРеал;
           
       Иначе
           
           ОбластьНиз = ОбластьНизРеал;
           
       КонецЕсли;
       
       ОбластьВерхРеал = ОбластьВерхРеал + 2;  - - - вот сдесь трабл
       ОбластьНизРеал = ОбластьНизРеал + 2;
       
       Если ИскомаяСтрока.Количество() = 0 Тогда
           Таб.Вывести(Область);
       КонецЕсли;
       
       Таб.Вывести(Обл);
   
       
       Для каждого СтрокаТары из ПереченьТары Цикл
           Отбор = Новый Структура("Номенклатура,Документ",СтрокаТары.Номенклатура,Накладная.РасходнаяНакладная);
           СтрокиТарыВНакладной = СсылкаНаОбъект.Тара.НайтиСтроки(Отбор);
           Если СтрокиТарыВНакладной.Количество() = 0 Тогда
               КоличествоТары = "";
           Иначе
               КоличествоТары = Формат(СтрокиТарыВНакладной[0].Количество,"ЧДЦ=0");
           КонецЕсли;
           
           Область = Макет.ПолучитьОбласть("СтрокаДокумент|Тара");
           Обл = Макет.ПолучитьОбласть("СтрокаКонтрагента|Тара"");
           Область.Параметры.КоличествоТары = КоличествоТары;
           Таб.Присоединить(Область);
           Таб.Вывести(Обл);
       КонецЦикла;
   
   КонецЦикла;
   
   Область = Макет.ПолучитьОбласть("Итог|Общая");
   Область.Параметры.ИтогоТоннаж = ТаблицаНакладных.Итог("Тоннаж");
   Таб.Вывести(Область);
   
   СтрокиТарыМаршрута = СсылкаНаОбъект.Тара.Выгрузить();
   СтрокиТарыМаршрута.Свернуть("Номенклатура","Количество");
   Для каждого СтрокаТары из ПереченьТары Цикл
       
       СтрокаТарыМаршрута = СтрокиТарыМаршрута.Найти(СтрокаТары.Номенклатура,"Номенклатура");
       Если СтрокаТарыМаршрута = Неопределено Тогда
           Итог = "";
       Иначе
           Итог = Формат(СтрокаТарыМаршрута.Количество,"ЧДЦ=0; ЧГ=0");
       КонецЕсли;
       
       Область = Макет.ПолучитьОбласть("Итог|Тара");
       Область.Параметры.Итог = Итог;
       Таб.Присоединить(Область);
       
   КонецЦикла;
   
   Возврат Таб;
КонецФункции


Если в коде убрать

ОбластьВерхРеал = ОбластьВерхРеал + 2;
ОбластьНизРеал = ОбластьНизРеал + 2;

Отрабатывает нормально, но области не объединяет
1 Живой Ископаемый
 
20.10.12
14:59
не выводить их. Рисонок - лажа, не видно что нужно убрать
2 Живой Ископаемый
 
20.10.12
14:59
Сорри, рисунок - лайно.
3 Miss1C
 
20.10.12
15:01
(1)По номером 3 выводятся 2 пустые строки после накладных, мне их нужно убрать
4 Miss1C
 
20.10.12
15:01
(1)Загвоздка в

ОбластьВерхРеал = ОбластьВерхРеал + 2;
ОбластьНизРеал = ОбластьНизРеал + 2;
5 Живой Ископаемый
 
20.10.12
15:02
не выводи их.
6 Miss1C
 
20.10.12
15:03
(5) Тогда получится что Область"Номер" будит захватывать только контрагента, нужно чтобы и документы входили в номер
7 Живой Ископаемый
 
20.10.12
15:18
Если ты думаешь что твое возражение что-то объясняет, ты ошибаешься.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.