Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Вопрос по ВнешнейПечатнойФорме

Вопрос по ВнешнейПечатнойФорме
Я
   Klubni4ka
 
21.06.21 - 19:40
Мне для печати нужны другие данные, которые не находятся на документе который я указала в СведенияОВнешнейОбработке. В печатной форме есть параметры которых нет на документе, как обратится к другим Документам/Справочникам/Регистру сведений для взятия этих параметров? Пишу сюда тк во всех видео "Как создать ВПЧ" указывают ТАБЛИЧНУЮЧАСТЬ, а мне другое нужно.
   ДенисЧ
 
1 - 21.06.21 - 20:10
"о всех видео "Как создать ВПЧ" указывают ТАБЛИЧНУЮЧАСТЬ"

Чоооо?
Во всех печатных формах указывают ссылку на документ. Внутри модуля у неё (формы) не неонка, а обычная процедура. В которой можно (внезапно!) написать запрос, который будет брать любые данные из БД (на которые права есть, разумеется...)
   Klubni4ka
 
2 - 22.06.21 - 04:09
(1) Получаем область, делаем запрос, и заполняем область из полученного запроса, правильно?
   JeHer
 
3 - 22.06.21 - 06:02
(2) типа того, но лучше сначала получить данные, а потом выводить на печать. Вдруг запрос вернет пустой результат? И тогда печатать нечего будет.
   Klubni4ka
 
4 - 22.06.21 - 07:24
При добавлении ВПЧ пишет "Индекс находится за границами массива", в чём может быть ошибка?
   ДенисЧ
 
5 - 22.06.21 - 07:25
(4) Кто где куда пишет? В какой момент?
Если оно пишет, то указывает номер строки и модуль, где ошибка
   Klubni4ka
 
6 - 22.06.21 - 07:28
Кнопки Подробно нет
   ДенисЧ
 
7 - 22.06.21 - 07:32
А ссылка "сформировать отчёт об ошибке"?
А вообше - запусти из конфигуратора - кнопка будет
   Klubni4ka
 
8 - 22.06.21 - 07:34
Функция СведенияОВнешнейОбработке() Экспорт
 ПараметрыРегистрации = Новый Структура;
 МассивНазначений = Новый Массив;
 МассивНазначений.Добавить("ПриказОДвиженииКонтингента");//Указываем документ к которому делаем внешнюю печ. форму

 ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");//может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... 

 ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
 ПараметрыРегистрации.Вставить("Наименование", "ВПЧ Отчисление");//имя под которым обработка будет зарегестрирована в справочнике внешних обработок

 ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
 ПараметрыРегистрации.Вставить("Версия", "1.0"); 
 ПараметрыРегистрации.Вставить("Информация", "ВнешняяПечатнаяФарма для печати Сведения о гражданине, подлежащем учету и отчисления"); 
 ТаблицаКоманд = ПолучитьТаблицуКоманд();
 ДобавитьКоманду(ТаблицаКоманд, "Отчисление внешний", "ОтчислениеВнешний", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
 ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;    
КонецФункции

Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"))//как будет выглядеть описание печ.формы для пользователя

Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));//имя макета печ.формы

Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));//ВызовСерверногоМетода

Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление; 
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры


Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
    КоллекцияПечатныхФорм,
    "ОтчислениеВнешний",
    "Отчисление внешний",
    СформироватьПечатнуюФорму(МассивОбъектов[0], ОбъектыПечати));
КонецПроцедуры


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

        ОбластьОснова.Параметры.НомерПриказа = ВыборкаДетальныеЗаписи.НомерПриказаОЗачислении;
        ОбластьОснова.Параметры.ДатаПриказа = ВыборкаДетальныеЗаписи.ДатаПриказаОЗачислении;
    КонецЦикла;

КонецФункции 

подскажите пожалуйста в чём может быть ошибка?
   Mikeware
 
9 - 22.06.21 - 07:39
МассивНазначений.Добавить("Документ.ПриказОДвиженииКонтингента")
   Mikeware
 
10 - 22.06.21 - 07:42
вот поможем сейчас - они возьмут и отчислят студентов, а они в армию пойдут... а не поможем - не отчислят...
   ДенисЧ
 
11 - 22.06.21 - 07:43
(10) И что, армия без солдат останется? ((
   Mikeware
 
12 - 22.06.21 - 07:44
(11) студней жалко...
   Klubni4ka
 
13 - 22.06.21 - 08:05
Спасибо, ошибки нет. Но почему-то выводится пустая форма(
   ДенисЧ
 
14 - 22.06.21 - 08:07
(13) Обычно люди из функции возвращают какое-нибудь значение...
Но то люди... Да ещё обычные...
   Klubni4ka
 
15 - 22.06.21 - 08:13
(14) Вставила, по этому и пишу что пустой ТабДок...
   ДенисЧ
 
16 - 22.06.21 - 08:20
(15)
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Количество() = 0 Тогда
сообщить("А ничего и нет...");

и перед КонецЦикла
добавить ТабДок.Вывести(ОбластьОснова);

ЗЫ. И почитай хоть немного книжек, хотя бы Митичкина...
   Klubni4ka
 
17 - 22.06.21 - 08:36
(16) После добавления ошибка при попытке использования в Предприятии - "Несоответвие типов (параметр номер1"
   ДенисЧ
 
18 - 22.06.21 - 08:38
Дистанционная пошаговая отладка - лучшее средство для написания конфигураций 1с!

Может, ты всё-таки последуешь совету и почитаешь книжки? Ну, после того, как мужу борщ сваришь и детям пелёнки постираешь?
   Klubni4ka
 
19 - 22.06.21 - 08:45
(18) Пф, твой сарказм и плоские шутки тебя не красят. ПС- и делаю эту ВПЧ для себя.
   Mikeware
 
20 - 22.06.21 - 08:56
(18) а если она борщ так же варит? "у меня вода закипела, что кидать? а нож в какой руке держать, когда капусту режешь? а свекла, она как картошка, только красная, да?"
   Михаил Козлов
 
21 - 22.06.21 - 09:55
Эх, молодежь: поставили бы фото в профиль, и диалог бы по-другому пошел.
   Mikeware
 
22 - 22.06.21 - 10:04
(21) ...голосистое фото...
   Dark_Warrior
 
23 - 22.06.21 - 10:18
(19) Помимо сарказма в сообщении ответ. К сожалению, поможет Вам только отладка, которая делается непосредственно в среде разработки. Удаленно помочь советом в данной ситуации сложно.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.