Показано с 1 по 1 из 1
  1. #1
    Юзер
    Регистрация
    05.06.2018
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Внешняя обработка

    Здравствуйте, как в созданной внешней обработки печатной формы акта об оказание услуг добавить, что бы выводился номер акта?
    Код обработки

    Функция СведенияОВнешнейОбработке () Экспорт

    ПараметрыРегистрации = Новый Структура;

    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить( "Документ.РеализацияТоваро вУслуг");

    ПараметрыРегистрации.Вста ить("Вид", "ПечатнаяФорма");
    ПараметрыРегистрации.Вста ить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вста ить("Наименование", НСтр("ru = 'Акт об оказании услуг 2012'"));
    ПараметрыРегистрации.Вста ить("Версия", "1.0");
    ПараметрыРегистрации.Вста ить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вста ить("Информация", НСтр("ru = 'Акт об оказании услуг 2012'"));
    ТаблицаКоманд = ПолучитьТаблицуКоманд();

    ДобавитьКоманду(ТаблицаКо анд,
    НСтр("ru = 'Акт об оказании услуг 2012'"),
    "Акт об оказании услуг 2012",
    "ВызовСерверногоМетода",
    Истина,
    "ПечатьMXL");

    ПараметрыРегистрации.Вста ить("Команды", ТаблицаКоманд);

    Возврат ПараметрыРегистрации;

    КонецФункции // СведенияОВнешнейОбработке ()

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

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


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

    // Устанавливаем признак доступности печати покомплектно.
    ПараметрыВывода.ДоступнаП чатьПоКомплектно = Истина;

    // Проверяем, нужно ли для макета ОтчетККМ формировать табличный документ.
    Если УправлениеПечатью.НужноПе ататьМакет(КоллекцияПечат ныхФорм, "Акт об оказании услуг 2012") Тогда
    // Формируем табличный документ и добавляем его в коллекцию печатных форм.
    УправлениеПечатью.Вывести абличныйДокументВКоллекц ю(КоллекцияПечатныхФорм,
    "Акт об оказании услуг 2012",
    "Акт об оказании услуг 2012",
    ПечатьАктаОбОказанииУслуг 2012(МассивОбъектов, ОбъектыПечати),
    ,
    );
    КонецЕсли;

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

    // Функция формирует табличный документ с печатной формой накладной,
    // разработанной методистами
    //
    // Возвращаемое значение:
    // Табличный документ - печатная форма накладной
    //
    Функция ПечатьАктаОбОказанииУслуг 2012(МассивОбъектов, ОбъектыПечати)

    ВалютаРегламентированного Учета = Константы.ВалютаРегламент рованногоУчета.Получить();

    ДопКолонка = Константы.ДополнительнаяК лонкаПечатныхФормДокумен ов.Получить();
    Если ДопКолонка = Перечисления.Дополнительн яКолонкаПечатныхФормДоку ентов.Артикул Тогда
    ВыводитьКоды = Истина;
    Колонка = "Артикул";
    ТекстКодАртикул = "Артикул";
    ИначеЕсли ДопКолонка = Перечисления.Дополнительн яКолонкаПечатныхФормДоку ентов.Код Тогда
    ВыводитьКоды = Истина;
    Колонка = "Код";
    ТекстКодАртикул = "Код";
    Иначе
    ВыводитьКоды = Ложь;
    Колонка = "";
    ТекстКодАртикул = "Код";
    КонецЕсли;

    Если ВыводитьКоды Тогда
    ОбластьШапки = "ШапкаСКодом";
    ОбластьСтроки = "СтрокаСКодом";
    Иначе
    ОбластьШапки = "ШапкаТаблицы";
    ОбластьСтроки = "Строка";
    КонецЕсли;

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

    ЗапросУслуги = Новый Запрос;
    ЗапросУслуги.УстановитьПа аметр("ТекущийДокумент", МассивОбъектов[0]);
    ЗапросУслуги.УстановитьПа аметр("Курс", ЗаполнениеДокументов.Курс окумента(МассивОбъектов[0], ВалютаРегламентированного Учета));
    ЗапросУслуги.УстановитьПа аметр("Кратность", ЗаполнениеДокументов.Крат остьДокумента(МассивОбъек тов[0], ВалютаРегламентированного Учета));

    ЧастьЗапросаДляВыбораСоде ржанияУслуг = ОбщегоНазначенияБПВызовСе рвера.ПолучитьЧастьЗапрос ДляВыбораСодержанияУслуг( "РеализацияТоваровУслуг" );

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


    Если МассивОбъектов[0].Проведен И (Шапка.РасчетыВУсловныхЕди ницах
    ИЛИ (Шапка.ВалютаДокумента <> ВалютаРегламентированного Учета И МассивОбъектов[0].Дата >= '20090101000000')) Тогда

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

    РасчетСуммыНДСПоСтавке = УчетНДС.РасчетНДСвРубляхП СтавкеДокумента(Шапка.Дат );

    Если НЕ СуммаВзаиморасчетов = NULL Тогда

    ТаблицаУслуги.Колонки.Доба вить("СуммаБезНДС");

    МассивРаспределения = Новый Массив;

    Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл

    СуммаСНДС = СтрокаТовар.Сумма + ?(Шапка.СуммаВключаетНДС, 0, СтрокаТовар.СуммаНДС);
    СуммаБезНДС = СуммаСНДС - СтрокаТовар.СуммаНДС;

    МассивРаспределения.Добав ть(СуммаСНДС);
    СтрокаТовар.СуммаБезНДС = СуммаБезНДС;

    КонецЦикла;

    ТаблицаУслуги.Колонки.Доба вить("СуммаРублевая");
    УчетНДС.РаспределитьСумму оСтолбцу(МассивРаспределе ния, СуммаВзаиморасчетов, ТаблицаУслуги, "СуммаРублевая");

    Для Каждого СтрокаТовар Из ТаблицаУслуги Цикл

    Если РасчетСуммыНДСПоСтавке Тогда
    //Выделение суммы НДС, Расчет суммы без НДС
    ЗначениеСтавкиНДС = УчетНДС.ПолучитьСтавкуНДС( СтрокаТовар.СтавкаНДС);

    СтрокаТовар.СуммаНДС = ?(ЗначениеСтавкиНДС = 0, 0, Окр(СтрокаТовар.СуммаРубле вая * ЗначениеСтавкиНДС/(100+ЗначениеСтавкиНДС),2));
    СтрокаТовар.Сумма = СтрокаТовар.СуммаРублевая - СтрокаТовар.СуммаНДС;

    Иначе
    МассивРаспределения.Очист ть();
    МассивРаспределения.Добав ть(СтрокаТовар.СуммаБезНД );
    МассивРаспределения.Добав ть(СтрокаТовар.СуммаНДС);
    МассивРаспределенныхСумм = ОбщегоНазначения.Распреде итьПропорционально(Строка Товар.СуммаРублевая, МассивРаспределения);
    Если МассивРаспределенныхСумм <> Неопределено Тогда
    СтрокаТовар.Сумма = МассивРаспределенныхСумм[0];
    СтрокаТовар.СуммаНДС = МассивРаспределенныхСумм[1];
    КонецЕсли;
    КонецЕсли;

    Если Шапка.СуммаВключаетНДС Тогда
    СтрокаТовар.Сумма = СтрокаТовар.Сумма+СтрокаТо вар.СуммаНДС;
    КонецЕсли;

    КонецЦикла;

    КонецЕсли;

    КонецЕсли;

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметров ечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Реализац яТоваровУслуг_Акт";
    Макет = ПолучитьМакет("Акт");


    //+Договор SnT
    ОбластьМакета = Макет.ПолучитьОбласть ("Договор");
    //ОбластьМакета.Параметры.За полнить(Шапка);
    СведенияОДоговореНазвание Д = МассивОбъектов[0].ДоговорКонтрагента.Наимен ование;

    НомерSnT = МассивОбъектов[0].ДоговорКонтрагента.Номер;
    Если ЗначениеЗаполнено (НомерSnT) Тогда
    НомерSnT = "№ " + Формат(НомерSnT, "ЧДЦ=0");
    СведенияОДоговореНомерД = НомерSnT;
    ИначеЕсли Не ЗначениеЗаполнено (НомерSnT) Тогда
    КонецЕсли;

    ДатаSnT = МассивОбъектов[0].ДоговорКонтрагента.Дата ;
    Если ЗначениеЗаполнено (ДатаSnT) Тогда
    ДатаSnT = "от " + Формат(ДатаSnT, "ДЛФ=DD");
    СведенияОДоговореДатаД = ДатаSnT;
    ИначеЕсли Не ЗначениеЗаполнено (ДатаSnT) Тогда
    КонецЕсли;

    ДатаДок = МассивОбъектов[0].Дата;
    ДатаДок = Формат(ДатаДок, "ДЛФ=DD");
    ОбластьМакета.Параметры.Да таДок = ДатаДок;

    //ОбластьМакета.Параметры.На званиеД = СведенияОДоговореНазвание Д ;
    ОбластьМакета.Параметры.Но мерД = СведенияОДоговореНомерД ;
    ОбластьМакета.Параметры.Да таД = СведенияОДоговореДатаД ;
    ТабДокумент.Вывести(Област ьМакета);
    //-Договор SnT ////////////////////////////////////





    ОбластьМакета = Макет.ПолучитьОбласть("Пос авщик");

    Дата = МассивОбъектов[0].Дата;
    Строка = "";
    Строка = Строка + Формат(Дата,"ДФ=""ММММ гггг""");
    ОбластьМакета.Параметры.Те кущийМесяц = Строка +" "+ " г.";
    ОбластьМакета.Параметры.Но мерД = СведенияОДоговореНомерД ;
    ОбластьМакета.Параметры.Да таД = СведенияОДоговореДатаД ;

    //Получаем наименование, должность, фио контрагента
    СведенияОКонтрагенте = БухгалтерскийУчетПереопре деляемый.СведенияОЮрФизЛи е(Шапка.Поставщик, Шапка.Дата);
    ОбластьМакета.Параметры.Пр едставлениеПолучателя = МассивОбъектов[0].Контрагент.НаименованиеПо лное;

    ПредставительПолучателя = МассивОбъектов[0].Контрагент.ОсновноеКонтак тноеЛицо;

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

    Если ПредставительПолучателяФа милияРодительныйПадеж = "" И Не ПредставительПолучателя.П стая() Тогда
    Сообщить("Функция склонения фамилии будет отключена!");
    ПредставительПолучателяФа милияРодительныйПадеж = ПредставительПолучателя.Ф милия;
    КонецЕсли;
    ПредставительПолучателяРо дительныйПадеж = ПредставительПолучателяФа милияРодительныйПадеж + " " + Лев(СокрЛП(ПредставительПо лучателя.Имя),1) +
    "." + Лев(СокрЛП(ПредставительПо лучателя.Отчество),1) + ".";

    Если ПредставительПолучателя.П стая() Тогда

    ПредставительПолучателяРо дительныйПадеж = "____________________";

    КонецЕсли;

    ОбластьМакета.Параметры.Пр едставительПолучателя = ПредставительПолучателяРо дительныйПадеж ;

    Должность = МассивОбъектов[0].Контрагент.ОсновноеКонтак тноеЛицо.Должность;
    ОбластьМакета.Параметры.До лжность = Должность ;

    //////Получаем наименование, должность, фио контрагента


    //Выводим сумму цифрой и сумму прописью, и подписи
    Сумма = ТаблицаУслуги.Итог("Сумма");
    СуммаНДС = ТаблицаУслуги.Итог("СуммаН С");

    ОбластьМакета.Параметры.Вс его = ОбщегоНазначенияБПВызовСе рвера.ФорматСумм(Сумма);

    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);

    ОбластьМакета.Параметры.Су ммаПрописью = ОбщегоНазначенияБПВызовСе рвера.СформироватьСуммуПр писью(СуммаКПрописи, ВалютаРегламентированного Учета);

    //ОбластьМакета.Параметры.По ставщик = Шапка.Поставщик;

    // //////Выводим сумму цифрой и сумму прописью

    ТабДокумент.Вывести(Област ьМакета);


    Возврат ТабДокумент;

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

    //Преобразовываем Фамилию контактного лица в родительный падеж
    //Функция РодительныйПадеж(Фамилия)
    // Попытка
    // Компонента = "NameDecl.dll";
    // ЗагрузитьВнешнююКомпонент у(Компонента);
    // КомпонентСклонения = Новый("AddIn.NameDeclension");
    // Исключение
    // Сообщить("Не удалось загрузить внешнюю компоненту склонения имен по причине: " + ОписаниеОшибки());
    // Сообщить("Обратитесь к системному администратору для регистрации компоненты NAMEDECL.DLL!");
    // Возврат "";
    // КонецПопытки;
    //
    // НомерСклонения = 2; // Родительный падеж
    // ТекстВРодительном = КомпонентСклонения.Проскл нять(Фамилия,НомерСклонен я);
    //
    // Возврат ТекстВРодительном;
    //
    //КонецФункции
    Вложения Вложения

Похожие темы

  1. Внешняя обработка
    от Мамай1995 в разделе Общие вопросы по 1С - Предприятие
    Ответов: 0
    Последнее сообщение: 03.06.2017, 00:38
  2. Внешняя обработка для 1С 7.7.
    от gularik в разделе 1С - Предприятие 7.7
    Ответов: 0
    Последнее сообщение: 07.01.2014, 09:22
  3. Внешняя обработка от 1С
    от ahmadjon в разделе Общие вопросы по 1С - Предприятие
    Ответов: 4
    Последнее сообщение: 02.11.2013, 00:54
  4. Внешняя обработка в документе
    от ЖратоеКенгуру в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3
    Ответов: 2
    Последнее сообщение: 07.06.2012, 06:26
  5. Внешняя обработка ЗиК
    от StarushkaIK в разделе 1С Предприятие 7.7
    Ответов: 1
    Последнее сообщение: 08.03.2011, 22:07

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •