|
вопрос по УПД внешняя печатная форма | ☑ | ||
---|---|---|---|---|
0
program345
08.03.18
✎
20:00
|
Привет друзья!
У упд есть 2 статуса: "1 – счет-фактура и передаточный документ (акт) 2 – передаточный документ (акт)" Как сделать Внешнюю ВПФ сразу на 2 печатные формы, ведь в этой обработке жестко указывается команда печати: Функция СведенияОВнешнейОбработке()Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); МассивНазначений.Добавить("Документ.СчетФактураВыданный"); //Указываем документ к которому делаем внешнюю печ. форму ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "УПД (ред.)"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "УПД (ред.)"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "УПД (ред.)", "УПДСтатус1_981", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции |
|||
1
program345
08.03.18
✎
20:03
|
В данном случает выведет только 1 статус, а если это второй то выдаст ошибку "печатная форма недоступна". Профи, есть идеи?
|
|||
2
program345
08.03.18
✎
20:04
|
делаю впф для бп 3.0
|
|||
3
Serg_1960
08.03.18
✎
21:06
|
Добавь ещё одну команду (для печати только передаточного) - пусть сам пользователь выбирает что он хочет.
PS: то, что назначения - это массив, ты понял, а то что команды - это табличная часть (и их может быть много) - не понял? Не верю :) Вот тут вроде бы подробно объяснено было: http://1c-pro.ru/threads/stati-po-razrabotke-k-rassmotreniju.47563/ |
|||
4
program345
08.03.18
✎
21:31
|
(3) спасибо за отклик!
Так: Функция СведенияОВнешнейОбработке()Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг"); МассивНазначений.Добавить("Документ.СчетФактураВыданный"); //Указываем документ к которому делаем внешнюю печ. форму ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "УПД (ред.)"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "УПД (ред.)"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "УПД Статус1(ред.)", "УПДСтатус1_981", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); ДобавитьКоманду(ТаблицаКоманд, "УПД Статус2(ред.)", "УПДСтатус2_981", "ВызовСерверногоМетода", Истина, "ПечатьMXL"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции |
|||
5
program345
08.03.18
✎
21:45
|
но в типовых нет такого выбора, там есть функц:
Функция ПолучитьНастройкиПечатиУниверсальныхПередаточныхДокументов(МассивДокументов) Экспорт УстановитьПривилегированныйРежим(Истина); СчетаФактуры = Новый Массив; ДокументыБезСчетовФактур = Новый Массив; Для каждого Объект Из МассивДокументов Цикл Если ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда СчетаФактуры.Добавить(Объект); ИначеЕсли ТипЗнч(Объект) = Тип("ДокументСсылка.ОказаниеУслуг") Тогда Запрос = Новый Запрос; Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов); Запрос.УстановитьПараметр("ПустаяСФ", Документы.СчетФактураВыданный.ПустаяСсылка()); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ОказаниеУслугКонтрагенты.СчетФактура КАК СчетФактура |ИЗ | Документ.ОказаниеУслуг.Контрагенты КАК ОказаниеУслугКонтрагенты |ГДЕ | ОказаниеУслугКонтрагенты.Ссылка В(&МассивДокументов) | И ОказаниеУслугКонтрагенты.ВыданСФ | И ОказаниеУслугКонтрагенты.СчетФактура <> &ПустаяСФ"; Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда ДокументыБезСчетовФактур.Добавить(Объект); Иначе Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл СчетаФактуры.Добавить(Выборка.СчетФактура); КонецЦикла; КонецЕсли; Иначе СтруктураОтбора = Новый Структура; Если ТипЗнч(Объект) = Тип("ДокументСсылка.ОтчетКомитентуОПродажах") И Объект.ВидОперации = Перечисления.ВидыОперацийОтчетКомитентуОПродажах.ОтчетОЗакупках Тогда СтруктураОтбора.Вставить("Продавец", Справочники.Контрагенты.ПустаяСсылка()); КонецЕсли; СчетФактура = УчетНДСПереопределяемый.НайтиПодчиненныйСчетФактуруВыданныйНаРеализацию(Объект,,, СтруктураОтбора); Если СчетФактура = Неопределено Тогда ДокументыБезСчетовФактур.Добавить(Объект); Иначе СчетаФактуры.Добавить(СчетФактура); КонецЕсли; КонецЕсли; КонецЦикла; ДокументыСчетФактураНеТребуются = ПолучитьДокументыСчетФактураНеТребуются(ДокументыБезСчетовФактур); УниверсальныеПередаточныеДокументы = Новый Массив; СписокМакетов = ""; ЕстьУПДСтатус1 = Ложь; ЕстьУПДСтатус1_981 = Ложь; ЕстьУПДСтатус2 = Ложь; ЕстьУПДСтатус2_981 = Ложь; Для каждого Документ Из СчетаФактуры Цикл УниверсальныеПередаточныеДокументы.Добавить(Документ); ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(Документ.Дата); Если ВерсияПостановленияНДС1137 >= 4 Тогда Если НЕ ЕстьУПДСтатус1_981 Тогда СписокМакетов = СписокМакетов + ?(СписокМакетов = "", "УПДСтатус1_981", ",УПДСтатус1_981"); ЕстьУПДСтатус1_981 = Истина; КонецЕсли; Иначе Если НЕ ЕстьУПДСтатус1 Тогда СписокМакетов = СписокМакетов + ?(СписокМакетов = "", "УПДСтатус1", ",УПДСтатус1"); ЕстьУПДСтатус1 = Истина; КонецЕсли; КонецЕсли; КонецЦикла; Для каждого Документ Из ДокументыСчетФактураНеТребуются Цикл УниверсальныеПередаточныеДокументы.Добавить(Документ); ВерсияПостановленияНДС1137 = УчетНДСПереопределяемый.ВерсияПостановленияНДС1137(Документ.Дата); Если ВерсияПостановленияНДС1137 >= 4 Тогда Если НЕ ЕстьУПДСтатус2_981 Тогда СписокМакетов = СписокМакетов + ?(СписокМакетов = "", "УПДСтатус2_981", ",УПДСтатус2_981"); ЕстьУПДСтатус2_981 = Истина; КонецЕсли; Иначе Если НЕ ЕстьУПДСтатус2 Тогда СписокМакетов = СписокМакетов + ?(СписокМакетов = "", "УПДСтатус2", ",УПДСтатус2"); ЕстьУПДСтатус2 = Истина; КонецЕсли; КонецЕсли; КонецЦикла; Если УниверсальныеПередаточныеДокументы.Количество() = 1 Тогда РеквизитыДокумента = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(УниверсальныеПередаточныеДокументы[0], "Номер, Дата"); ЗаголовокФормы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Универсальный передаточный документ №%1 от %2'"), РеквизитыДокумента.Номер, Формат(РеквизитыДокумента.Дата, "ДЛФ=D")); Иначе ЗаголовокФормы = НСтр("ru = 'Печать универсальных передаточных документов'"); КонецЕсли; НастройкиПечати = Новый Структура; НастройкиПечати.Вставить("ЗаголовокФормы", ЗаголовокФормы); НастройкиПечати.Вставить("СписокМакетов", СписокМакетов); НастройкиПечати.Вставить("УниверсальныеПередаточныеДокументы", УниверсальныеПередаточныеДокументы); НастройкиПечати.Вставить("ДокументыБезСчетовФактур", ДокументыБезСчетовФактур); НастройкиПечати.Вставить("ДокументыСчетФактураНеТребуются", ДокументыСчетФактураНеТребуются); Возврат НастройкиПечати; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |