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

Не все строки табличной части выводятся на печать

Автор Space_minus, 06 сен 2016, 05:42

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

Space_minus

Здравствуйте! Подскажите как правильно сделать вывод табличной части на ПФ выводится 1 фамилия 2 раза
форма:

Печатная форма:


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

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

Пока РезультатЗапроса.Следующий() Цикл
Макет = ПолучитьМакет("СписокГруппы");
НомерСтрокиНачало = ТабДок.ВысотаТаблицы + 1;

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

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

  Для каждого Строка Из ТчСтуденты Цикл

      Фамилия = Лев(РезультатЗапроса.Обучающийся,Найти(РезультатЗапроса.Обучающийся," "));
      Имя = СокрЛП(Лев(СокрЛП(Сред(РезультатЗапроса.Обучающийся,СтрДлина(Фамилия),СтрДлина(РезультатЗапроса.Обучающийся))),Найти(СокрЛП(Сред(РезультатЗапроса.Обучающийся,СтрДлина(Фамилия),СтрДлина(РезультатЗапроса.Обучающийся)))," ")));
      ИО=СокрЛП(Сред(РезультатЗапроса.Обучающийся,СтрДлина(Фамилия),СтрДлина(РезультатЗапроса.Обучающийся)));
      Отчество = СокрЛП(Сред(ИО,Найти(ИО," "),СтрДлина(ИО)));
  ОбластьМакета.Параметры.Фамилия = Фамилия;
  ОбластьМакета.Параметры.Отчество = Отчество;
  ОбластьМакета.Параметры.Имя = Имя;
  ОбластьМакета.Параметры.НаимУсл = РезультатЗапроса.Услуга;
  ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
 
  // категории мед справки
МассивКатегорий = Новый Массив;
А = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_А;
Б = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_B;
С = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_C;
Д = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_D;
БЕ = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_BE;
СЕ = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_CE;
ДЕ = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_DE;
ТМ = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_TM;
ТБ = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_TB;
М = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_M;
А1 = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_A1;
Б1 = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_B1;
С1 = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_C1;
Д1 = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_D1;
С1Е = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_C1E;
Д1Е = Строка.ФИО_Студента.ФизЛицо.Категория_Мед_Справки_D1E;
Если А  = Истина Тогда
МассивКатегорий.Добавить("A");
КонецЕсли;
Если  Б  = Истина Тогда
МассивКатегорий.Добавить("B");
КонецЕсли;
Если  С  = Истина Тогда
МассивКатегорий.Добавить("С");
КонецЕсли;
Если  Д  = Истина Тогда
МассивКатегорий.Добавить("D");
КонецЕсли;
Если  БЕ  = Истина Тогда
МассивКатегорий.Добавить("BE");
КонецЕсли;
Если  СЕ  = Истина Тогда
МассивКатегорий.Добавить("СЕ");
КонецЕсли;
Если  ДЕ  = Истина Тогда
МассивКатегорий.Добавить("DE");
КонецЕсли;
Если  СЕ  = Истина Тогда
МассивКатегорий.Добавить("СЕ");
КонецЕсли;
Если  ДЕ  = Истина Тогда
МассивКатегорий.Добавить("DE");
КонецЕсли;
Если  ТМ  = Истина Тогда
МассивКатегорий.Добавить("ТМ");
КонецЕсли;
Если  ТБ  = Истина Тогда
МассивКатегорий.Добавить("TB");
КонецЕсли;
Если  М  = Истина Тогда
МассивКатегорий.Добавить("М");
КонецЕсли;
Если  А1  = Истина Тогда
МассивКатегорий.Добавить("А1");
КонецЕсли;
Если  Б1  = Истина Тогда
МассивКатегорий.Добавить("B1");
КонецЕсли;
Если  С1  = Истина Тогда
МассивКатегорий.Добавить("С1");
КонецЕсли;
Если  Д1  = Истина Тогда
МассивКатегорий.Добавить("D1");
КонецЕсли;
Если  С1Е  = Истина Тогда
МассивКатегорий.Добавить("С1Е");
КонецЕсли;
Если  Д1Е  = Истина Тогда
МассивКатегорий.Добавить("D1Е");
КонецЕсли;
А = "";
Для каждого Стр Из МассивКатегорий Цикл
А = А+" ,"+Стр;
КонецЦикла;
   Если Не ПустаяСтрока(А) Тогда
   ОбластьМакета.Параметры.МедКатегория = ""+Сред(А,3,СтрДлина(А));
   Иначе
   ОбластьМакета.Параметры.МедКатегория = "";
   КонецЕсли;
   
    // категории водительского удостоверения
МассивКатегорийПрав = Новый Массив;
M = Строка.ФИО_Студента.ФизЛицо.M;
A1 = Строка.ФИО_Студента.ФизЛицо.A1;
A = Строка.ФИО_Студента.ФизЛицо.A;
C1 = Строка.ФИО_Студента.ФизЛицо.C1;
C = Строка.ФИО_Студента.ФизЛицо.C;
B1 = Строка.ФИО_Студента.ФизЛицо.B1;
B = Строка.ФИО_Студента.ФизЛицо.B;
D1 = Строка.ФИО_Студента.ФизЛицо.D1;
D = Строка.ФИО_Студента.ФизЛицо.D;
BE = Строка.ФИО_Студента.ФизЛицо.BE;
C1E = Строка.ФИО_Студента.ФизЛицо.C1E;
D1E = Строка.ФИО_Студента.ФизЛицо.D1E;
DE = Строка.ФИО_Студента.ФизЛицо.DE;
CE = Строка.ФИО_Студента.ФизЛицо.CE;
Трам = Строка.ФИО_Студента.ФизЛицо.Трам;
Тролл = Строка.ФИО_Студента.ФизЛицо.Тролл;
Если M  = Истина Тогда
МассивКатегорийПрав.Добавить("M");
КонецЕсли;
Если  A1  = Истина Тогда
МассивКатегорийПрав.Добавить("A1");
КонецЕсли;
Если  A  = Истина Тогда
МассивКатегорийПрав.Добавить("A");
КонецЕсли;
Если  C1  = Истина Тогда
МассивКатегорийПрав.Добавить("C1");
КонецЕсли;
Если  C  = Истина Тогда
МассивКатегорийПрав.Добавить("C");
КонецЕсли;
Если  B1  = Истина Тогда
МассивКатегорийПрав.Добавить("B1");
КонецЕсли;
Если  B  = Истина Тогда
МассивКатегорийПрав.Добавить("B");
КонецЕсли;
Если  D1  = Истина Тогда
МассивКатегорийПрав.Добавить("D1");
КонецЕсли;
Если  D  = Истина Тогда
МассивКатегорийПрав.Добавить("D");
КонецЕсли;
Если  BE  = Истина Тогда
МассивКатегорийПрав.Добавить("BE");
КонецЕсли;
Если  C1E  = Истина Тогда
МассивКатегорийПрав.Добавить("C1E");
КонецЕсли;
Если  D1E  = Истина Тогда
МассивКатегорийПрав.Добавить("D1E");
КонецЕсли;
Если  DE  = Истина Тогда
МассивКатегорийПрав.Добавить("DE");
КонецЕсли;
Если  CE  = Истина Тогда
МассивКатегорийПрав.Добавить("CE");
КонецЕсли;
Если  Трам  = Истина Тогда
МассивКатегорийПрав.Добавить("Трам");
КонецЕсли;
Если  Тролл  = Истина Тогда
МассивКатегорийПрав.Добавить("Д1");
КонецЕсли;
А = "";
Для каждого Стр Из МассивКатегорийПрав Цикл
А = А+" ,"+Стр;
КонецЦикла;
   Если Не ПустаяСтрока(А) Тогда
   ОбластьМакета.Параметры.ВодКатегория = ""+Сред(А,3,СтрДлина(А));
   Иначе
   ОбластьМакета.Параметры.ВодКатегория = "";
   КонецЕсли;
ТабДок.Вывести(ОбластьМакета);
  КонецЦикла;
          Возврат ТабДок;
КонецЦикла;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДок,НомерСтрокиНачало, ОбъектыПечати, РезультатЗапроса.Ссылка);
КонецФункции


LexaK

скорее всего у вас один человек в нескольких списках сразу,
возможно какие-то документы у вас распроведены и даже помечены на удаление,
но в отчет попадет все.

1.добавьте в отчет условие что документ должен быть проведен (если он может проводиться)
или хотя бы что он не помечен на удаление
2.проверьте двойников (один человек входит в несколько списков)
3.добавьте в отчет поля документа Номер списка, Дата Списка
4. могут быть полные однофамильцы и тезки, добавьте в этом случае код физлица (или номер какого ни будь документа, например номер паспорта)
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск