Внешняя обработка
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Показано с 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, 08:22
  3. Внешняя обработка от 1С
    от ahmadjon в разделе Общие вопросы по 1С - Предприятие
    Ответов: 4
    Последнее сообщение: 01.11.2013, 23:54
  4. Внешняя обработка в документе
    от ЖратоеКенгуру в разделе 1С - Предприятие 8.0, 8.1, 8.2, 8.3
    Ответов: 2
    Последнее сообщение: 07.06.2012, 06:26

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

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

Ваши права

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