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

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

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

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

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

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

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


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

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


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

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

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

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

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

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