Макет печатной формы для ЗУП 3.1

1. Intercititude 03.11.19 19:45 Сейчас в теме
Всем доброе время суток.
Есть задача,сделать макет печатной формы с помощью внешней обработки для ЗУП 3.1

Но небольшая сложность. Обычно макет делал именно для какого-то документа ( Брал запросом все данные, помещал ссылку в (&МассивОбъектов) и после ЗаполнитьЗначенияСвойств. ).
В этом случае необходимо предусмотреть возможность печати макета из выбранного пользователем документа(ссылкой не обойтись)

Необходимо печатать справку о зарплате сотрудника за последние три месяца. Пришёл к тому, что лучше брать данные запросом из регистра сведении "КадроваяИсторияСотрудников". Но вылазит ошибка Печатная форма недоступна
К сожалению ничего не работает, подскажите как надо делать правильно в моём случае?!

Функция ПечатьВнешнейПечатнойФормы(МассивОбъектов, ОбъектыПечати, Подписант) Экспорт
    ТабДок = новый ТабличныйДокумент;
    
    Макет = ПолучитьМакет("ПФ_MXL_Т51");
    
    ОбластьШапки   = Макет.ПолучитьОбласть("ШапкаДокумента");
	
	Запрос = Новый Запрос;
	запрос.Текст = "ВЫБРАТЬ
	               |	КадроваяИсторияСотрудниковСрезПоследних.ГоловнаяОрганизация.НаименованиеПолное КАК Организация,
	               |	КадроваяИсторияСотрудниковСрезПоследних.Период КАК Дата
	               |ИЗ
	               |	РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, Сотрудник В (&МассивОбъектов)) КАК КадроваяИсторияСотрудниковСрезПоследних";
	
	Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
    ОбщаяВыборка = Запрос.Выполнить().Выбрать();

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

	КонецЦикла;
	
	
   Возврат ТабДок;
	
	
	
КонецФункции
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 14 03.11.19 20:18 Сейчас в теме
К сожалению ничего не работает
А как оно может работать, если после выполнения запроса:
ОбщаяВыборка = Запрос.Выполнить().Выгрузить();
нет ни одного обращения к ОбщаяВыборка - результатам запроса?

как возможно реализовать лучше и проще ?!
А что именно "реализовать"-то? То ли табличный документ (который автор почему-то называет "макетом") Т-51 программно слепить, то ли справку напечатать?

И чем "выбранный пользователем документ" отличается от "какого-то документа"?

Поскольку лично мне (посмотрим, только ли мне) это совершенно непонятно, то могу предложить разве что скачать готовую справку, например:
https://infostart.ru/public/784966/
https://infostart.ru/public/811185/
3. Intercititude 03.11.19 20:58 Сейчас в теме
(2) Моя ошибка,не успел исправить.
Разумеется будет :
ОбщаяВыборка = Запрос.Выполнить().Выбрать();

Пока ОбщаяВыборка .Следующий() Цикл
....
КонецЦикла


Как мне сделать,так чтобы &МассивОбъектов был помещён в ссылку всех документов и корректно ли,то что я помещаю Сотрудника в этот параметр?!
И справка не такая простая,там будет табличная часть с зарплатами,удержаниями и прочим.
4. alivan 03.11.19 23:04 Сейчас в теме
(3)
Как мне сделать,так чтобы &МассивОбъектов был помещён в ссылку всех документов и корректно ли,то что я помещаю Сотрудника в этот параметр?!

Это предложение три раза перечитал, так и не понял про что оно.
Зачем параметр МассивОбъектов помещать в ссылку документов и как можно что-то поместить в ссылку, если это уникальный номер, не доступный пользователю никак для редактирования?

Хотите получить организацию и период для списка сотрудников из регистра "КадроваяИсторияСотрудников"?
А для чего? Сколько раз планируется выводить шапку? Столько, сколько сотрудников?

Печатная форма недоступна

Макет где находится? В макетах обработки или в общих макетах?
Если в общих, то "ПолучитьОбщийМакет"., либо скопировать его в обработку.
5. Intercititude 03.11.19 23:32 Сейчас в теме
(4) Ну может я не так выразился, но если мне надо печатать макет из определенного документа,то я делаю так:

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

Шапка = Запрос.Выполнить().Выбрать();

Пока Шапка.Следующий() Цикл
...
КонецЦикла
Показать


Но в моём случае подразумевается, что пользователь в настройках сам выбирает какой-ему документ или справочник надо. И на основании этого печатается мой макет.

Хотите получить организацию и период для списка сотрудников из регистра "КадроваяИсторияСотрудников"?
А для чего? Сколько раз планируется выводить шапку? Столько, сколько сотрудников?


Я хочу получить шапку Организацию,Дата(ТекущаяДата),вид документа(паспорт,серия номер),какого числа был принят сотрудник и в таком духе. То есть пользователь выбрал какого-то сотрудника и уже исходя из этого берутся данные. С ЗУПом работал мало,поэтому не представляю как сделать лучше,тем более для многих объектов.
Так же нужна табличная часть о зарплатах.
6. user856012 14 03.11.19 23:42 Сейчас в теме
(5)
Так же нужна табличная часть о зарплатах.
М-да. ИМХО, только понять - какую задачу поставил себе автор, стоит куда больше предложенных 0.45 $m.

Я уж не говорю о решении.
7. Intercititude 04.11.19 00:10 Сейчас в теме +1 $m
(6) Достаточно понять из каких регистров брать информацию лучше всего и как реализовать для многих документов и справочников.

а 0.45 $m это всё что есть )
9. alivan 04.11.19 08:05 Сейчас в теме
(7) Как мне представляется, брать информацию всегда одинаково, это просто, сложность как раз в том, чтобы получить конкретную информацию.
Вы зачем-то в цикле считываете организацию и дату.
Вообще зачем их считывать?
Обычно это как раз параметры, задаваемые пользователем в шапке отчета.
Отчет нужно на определенную дату (или период) и для определенной организации (которых в базе может быть несколько).
Пользователь выбирает организацию, дату и нажимает кнопку "Сформировать".
Зачем их тащить из регистров?
Бывает необходимость для нескольких организаций, но тогда пользователь, опять-таки, задает список для каких ему нужно, поскольку любой учет ведется в разрезе организаций.
10. Intercititude 04.11.19 10:07 Сейчас в теме
(9)причем тут вообще отчёт ?
13. alivan 04.11.19 10:42 Сейчас в теме
(10)
причем тут вообще отчёт ?

Как бы изначально речь шла
Необходимо печатать справку о зарплате сотрудника

Это в 1с принято называть отчет. В смысле объект в конфигурации, создающий печатную форму.
14. Intercititude 04.11.19 14:14 Сейчас в теме
(13) Вообще у меня реализовано через внешнюю обработку.
15. alivan 04.11.19 14:37 Сейчас в теме
(14) Не суть важно. Все равно на выходе отчет по данным из базы.
Из базы вытаскивается нужная информация и нужным образом представляется пользователю.
По названию объектов конфигурации - разные, а по сути на выходе отчет, что запросы собрали.
Так проще представлять, что нужно сделать.
Intercititude; +1 Ответить
8. alivan 04.11.19 07:48 Сейчас в теме
(5)
Но в моём случае подразумевается, что пользователь в настройках сам выбирает какой-ему документ или справочник надо.

Вообще-то есть разница между
ПоступлениеТоваровУслуг.Ссылка В(&МассивОбъектов)

и
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, Сотрудник В (&МассивОбъектов)

В последнем случае без разницы из какого документа(ов) сформирован список сотрудников.

Я хочу получить шапку Организацию,Дата

Будет столько шапок, сколько в передаваемом массиве сотрудников.
  Пока ОбщаяВыборка .Следующий() Цикл
           ОбластьШапки.Параметры.Организация = ОбщаяВыборка .Организация;
                  ОбластьШапки.Параметры.Дата = ОбщаяВыборка .Дата;        
                  ТабДок.Вывести(ОбластьШапки);

    КонецЦикла;


как сделать лучше,тем более для многих объектов.

На мой взгляд, лучше когда меньше объектов и наоборот. Хотя все зависит от задачи.
Слишком универсальный вариант обычно тяжел в использовании. Требует массы уточнений и для пользователя может стать проблемой. Потому как нужно знать внутренности.
11. Intercititude 04.11.19 10:07 Сейчас в теме
(8)Предлагаете убедить клиента сказать из какого документа ему это необходимо печатать ?

Мой вариант с Сотрудник в (&мамствобьектов) верен значит ?
Как добавить головную организацию тогда без цикла ?
12. alivan 04.11.19 10:22 Сейчас в теме
(11) Думаю, клиенту все равно из какого документа. Ему главное показать кнопку, после нажатия на которую появится нужный отчет.

Мой вариант с Сотрудник в (&мамствобьектов) верен значит ?

Из регистра выберутся записи для сотрудников, перечисленных в передаваемом массиве.
Если нужно именно это, то вариант верен.

Как добавить головную организацию тогда без цикла ?

Неплохо бы знать перед началом выполнения запроса для какой организации запрос. Добавить на форму реквизит "Организация". Если подключается внешняя форма, то из документа, там обязательно в гапке должен быть такой реквизит. И указать как параметр запроса.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот