Имя: Пароль:
1C
1С v8
проблема с изменением макета
0 krolikska
 
05.04.17
16:06
Перем мВалютаРегламентированногоУчета Экспорт;

////////////////////////////////////////////////////////////////////////////////
// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ ДОКУМЕНТА

#Если Клиент Тогда
Функция ВернутьРасчетныйСчет(СчетКонтрагента)

    БанкДляРасчетов = СчетКонтрагента.БанкДляРасчетов;
    Результат       = ?(БанкДляРасчетов.Пустая(), СчетКонтрагента.НомерСчета, СчетКонтрагента.Банк.КоррСчет);

    Возврат Результат;

КонецФункции // ВернутьРасчетныйСчет()
    

// Функция формирует табличный документ с печатной формой заказа или счета,
// разработанного методистами
//
// Возвращаемое значение:
//  Табличный документ - сформированная печатная форма
//
Функция ПечатьСчетаЗаказа(Тип)
    Перем ПодразделениеОтветственныхЛиц;

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

    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_СчетЗаказ";

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

    ЗапросТовары = Запрос.Выполнить().Выгрузить();

    Макет = ПолучитьМакет("СчетЗаказ");

    // Выводим шапку накладной

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

            ОбластьМакета.Параметры.БИКБанкаПолучателя               = БИК;
            ОбластьМакета.Параметры.БанкПолучателя                   = Банк;
            ОбластьМакета.Параметры.БанкПолучателяПредставление      = СокрЛП(Банк) + " " + ГородБанка;
            ОбластьМакета.Параметры.СчетБанкаПолучателя              = КоррСчет;
            ОбластьМакета.Параметры.СчетБанкаПолучателяПредставление = КоррСчет;
            ОбластьМакета.Параметры.СчетПолучателяПредставление      = НомерСчета;
            ОбластьМакета.Параметры.СчетПолучателя                   = НомерСчета;
        КонецЕсли;
        
        Если ПустаяСтрока(СтруктурнаяЕдиница.ТекстКорреспондента) Тогда
            ТекстКорреспондента = СведенияОПолучателе.НаименованиеДляПечатныхФорм;
            Если ЗначениеЗаполнено(СтруктурнаяЕдиница.БанкДляРасчетов) Тогда
                ТекстКорреспондента = ТекстКорреспондента + " р/с " + СтруктурнаяЕдиница.НомерСчета
                + " в " + СтруктурнаяЕдиница.Банк + " " + СтруктурнаяЕдиница.Банк.Город;
            КонецЕсли;    
        Иначе
            ТекстКорреспондента = СтруктурнаяЕдиница.ТекстКорреспондента;
        КонецЕсли;        
        ОбластьМакета.Параметры.ПредставлениеПолучателя = ТекстКорреспондента;
        
        ТабДокумент.Вывести(ОбластьМакета);
    КонецЕсли;

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

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

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

    ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ШапкаТаблицы|Сумма");

    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ОбластьКодов.Параметры.ИмяКолонкиКодов = Колонка;
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    ТабДокумент.Присоединить(ОбластьСуммы);

    ОбластьКолонкаТовар = Макет.Область("Товар");
    
    Если Не ВыводитьКоды Тогда
        ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки +
                                            Макет.Область("КолонкаКодов").ШиринаКолонки;
    КонецЕсли;

    ОбластьНомера = Макет.ПолучитьОбласть("Строка|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("Строка|Сумма");

    Сумма    = 0;
    СуммаНДС = 0;
    ВсегоСкидок    = 0;
    ВсегоБезСкидок = 0;

    Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

        ОбластьНомера.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
        ТабДокумент.Вывести(ОбластьНомера);
        
        Если ВыводитьКоды Тогда
            Если Колонка = "Артикул" Тогда
                ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Артикул;
            Иначе
                ОбластьКодов.Параметры.Артикул = ВыборкаСтрокТовары.Код;
            КонецЕсли;
            ТабДокумент.Присоединить(ОбластьКодов);
        КонецЕсли;

        ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
        ОбластьДанных.Параметры.Товар       = СокрЛП(ВыборкаСтрокТовары.Товар);
        ТабДокумент.Присоединить(ОбластьДанных);

        ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
        ТабДокумент.Присоединить(ОбластьСуммы);
        Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
        СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;

    КонецЦикла;

    // Вывести Итого
    ОбластьНомера = Макет.ПолучитьОбласть("Итого|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("Итого|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("Итого|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("Итого|Сумма");

    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    ОбластьСуммы.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
    ТабДокумент.Присоединить(ОбластьСуммы);

    // Вывести ИтогоНДС
    ОбластьНомера = Макет.ПолучитьОбласть("ИтогоНДС|НомерСтроки");
    ОбластьКодов  = Макет.ПолучитьОбласть("ИтогоНДС|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ИтогоНДС|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоНДС|Сумма");
    
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    Если СуммаНДС <> 0 Тогда
        ОбластьДанных.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
        ОбластьСуммы.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(СуммаНДС);
    Иначе
        ОбластьДанных.Параметры.НДС = "Без налога (НДС)";
        ОбластьСуммы.Параметры.ВсегоНДС = "-";
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    
    ТабДокумент.Присоединить(ОбластьСуммы);
    
    // Вывести ИтогоКОплате
    ОбластьНомера = Макет.ПолучитьОбласть("ИтогоКОплате|НомерСтроки");
    ОбластьКодов = Макет.ПолучитьОбласть("ИтогоКОплате|КолонкаКодов");
    ОбластьДанных = Макет.ПолучитьОбласть("ИтогоКОплате|Данные");
    ОбластьСуммы  = Макет.ПолучитьОбласть("ИтогоКОплате|Сумма");
    ТабДокумент.Вывести(ОбластьНомера);
    Если ВыводитьКоды Тогда
        ТабДокумент.Присоединить(ОбластьКодов);
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьДанных);
    СуммаКОплате = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьСуммы.Параметры.ИтогоКОплате = ОбщегоНазначения.ФорматСумм(СуммаКОплате);
    ТабДокумент.Присоединить(ОбластьСуммы);
    
    // Вывести Сумму прописью
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьМакета.Параметры.ИтоговаяСтрока ="Всего наименований " + ЗапросТовары.Количество()
    + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
    ТабДокумент.Вывести(ОбластьМакета);

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

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

КонецФункции // ПечатьСчетаЗаказа()

// Процедура осуществляет печать документа. Можно направить печать на
// экран или принтер, а также распечатать необходимое количество копий.
//
//  Название макета печати передается в качестве параметра,
// по переданному названию находим имя макета в соответствии.
//
// Параметры:
//  НазваниеМакета - строка, название макета.
//
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) Экспорт
    
    // Получить экземпляр документа на печать
    Если ИмяМакета = "Счет" Тогда
        
        ТабДокумент = ПечатьСчетаЗаказа(ИмяМакета);
        
    КонецЕсли;
    
    УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, ""), НепосредственнаяПечать);
    
КонецПроцедуры // Печать

#КонецЕсли

// Возвращает доступные варианты печати документа
//
// Возвращаемое значение:
//  Структура, каждая строка которой соответствует одному из вариантов печати
//  
Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
    
    Возврат Новый Структура("Счет","Счет на оплату");

КонецФункции // ПолучитьСтруктуруПечатныхФорм()

Процедура СкопироватьТовары(Основание) Экспорт

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

    Для Каждого СтрокаТЧ Из Товары Цикл
        Если НЕ Основание.СуммаВключаетНДС = СуммаВключаетНДС Тогда
            СтрокаТЧ.Сумма = СтрокаТЧ.Сумма + ?(СуммаВключаетНДС, СтрокаТЧ.СуммаНДС, -СтрокаТЧ.СуммаНДС);
            ОбработкаТабличныхЧастей.ПриИзмененииСуммыТабЧасти(СтрокаТЧ, ЭтотОбъект);
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

Процедура СкопироватьВозвратнуюТару(Основание) Экспорт

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

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

Процедура СкопироватьУслуги(Основание) Экспорт

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

    Если НЕ Основание.СуммаВключаетНДС = СуммаВключаетНДС Тогда
        Для Каждого СтрокаТЧ Из Услуги Цикл
            СтрокаТЧ.Сумма = СтрокаТЧ.Сумма + ?(СуммаВключаетНДС, СтрокаТЧ.СуммаНДС, -СтрокаТЧ.СуммаНДС);
            // Выполнить общие действия для всех документов при изменении Суммы.
            ОбработкаТабличныхЧастей.ПриИзмененииСуммыТабЧасти(СтрокаТЧ, ЭтотОбъект);
        КонецЦикла;
    КонецЕсли;
    
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ОБЕСПЕЧЕНИЯ ПРОВЕДЕНИЯ ДОКУМЕНТА

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ

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

// Процедура вызывается перед записью документа
//
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    // Если договор с комиссионером, то надо почистить закладку "Услуги".
    Если Услуги.Количество() > 0
       И ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером Тогда

        Услуги.Очистить();

    КонецЕсли;

    // Посчитать суммы документа и записать ее в соответствующий реквизит шапки для показа в журналах
    СуммаДокумента = УчетНДС.ПолучитьСуммуДокументаСНДС(ЭтотОбъект);

КонецПроцедуры // ПередЗаписью

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



{Документ.СчетНаОплатуПокупателю.МодульОбъекта(118)}: Ошибка при вызове метода контекста (ПолучитьМакет)
    Макет = ПолучитьМакет("СчетЗаказ");
по причине:
Недопустимое значение параметра (параметр номер '1')



собственно я редактировал только сам макет, и еще изменил его имя, но потом изменил обратно, сам код не трогал, но почему то выдает ошибку
1 krolikska
 
05.04.17
16:07
помогите пожалуйста кто ни будь, сроооочно
2 azernot
 
05.04.17
16:08
Снова измени его имя (скопировав из сообщения об ошибке), вполне возможно, что например буква "С" - написана не в той раскладке.
3 krolikska
 
05.04.17
16:09
первое что сделал, не помогло((
4 krolikska
 
05.04.17
16:11
щас скрин скину
5 azernot
 
05.04.17
16:13
Измени имя макета на "яяяя"
и в коде напиши

Макет = ПолучитьМакет("яяяя");

Только тогда я поверю, что дело не в этом :)
6 krolikska
 
05.04.17
16:13
7 krolikska
 
05.04.17
16:16
{Документ.СчетНаОплатуПокупателю.МодульОбъекта(297)}: Поле объекта не обнаружено (СуммаПрописью)
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);




теперь новая проблемма
8 azernot
 
05.04.17
16:18
(7) Ага, значит не умеем Ctrl+C и Ctrl+V пользоваться! Как я и подозревал...

Ну а то, что в макете нет параметра СуммаПрописью - очевидно.
Куда дел параметр, хулиган?! Возвращай на место!
9 krolikska
 
05.04.17
16:22
10 krolikska
 
05.04.17
16:23
увидел)))
11 azernot
 
05.04.17
16:23
(9) Давай я научу тебя читать.

Чем отличаются слова
СуммаПрописью
СуммаПропись
?
12 azernot
 
05.04.17
16:23
(10) :)))
Ещё вопросы?
13 krolikska
 
05.04.17
16:25
да


мне нужно между суммой прописью и тем что ниже вставить несколько строк текста, я их просто вписывал в макет, но ничего не менялось в итоге в счете
14 krolikska
 
05.04.17
16:27
ну и вписывал я их в блок с суммой прописью, с новой строки естественно, то есть текст был между красными линиями
15 azernot
 
05.04.17
16:29
(13) Товой текст должен быть в секции "СуммаПрописью" (секции слева обозначены).
Т.е. встань на строку 38, правкой кнопкой - раздвинуть

У тебя между Итоговой строкой и Суммой прописью будет ещё одна строка, но она будет в секции СуммаПрописью.
Далее, выделяй строку с СуммаПрописью, хватай её и тащи на строку выше.
Таким образом, секция СуммаПрописью будет состоять из 3 строк, первые две останутся, какими и были, а в третей - пиши чего тебе угодно.
16 azernot
 
05.04.17
16:30
(14) Покажи скрин, что текст был в секции СуммаПрописью.
А пока скрина нет - не верю :)
17 krolikska
 
05.04.17
16:32
да уже получилось, не понимаю почему до этого не вышло, делал все так же,а скрин уже сделать не получится, тк удалил))
18 azernot
 
05.04.17
16:34
(17) Так же, да не совсем ;)
Твой текст был между не теми красными линиями, и не попадал в секцию СуммаПрописью.
19 krolikska
 
05.04.17
16:34
тогда дальще вопросики

логотип компании вверху вставить
20 azernot
 
05.04.17
16:35
1. Взять логотип компании.
2. Вставить его вверху.
21 krolikska
 
05.04.17
16:35
вероятно, но я делал перед этим как ты говоришь, ибо до этого прочитал что должно быть между красными линиями и смекнул что его над в секцию добавить, короч это не важно уже
22 krolikska
 
05.04.17
16:36
щас в общем я текст напишу, и до логотипа доберусь)
23 azernot
 
05.04.17
16:36
(19) Видимо надо раздвинуть секцию "Поставщик", вставить туда рисунок, содержащий логотип компании так, чтобы он целиком попадал в секцию "Поставщик", а уж ниже или выше самой надписи, или свлева - решай сам.
24 krolikska
 
05.04.17
16:38
понял


и последнее вероятно, мне надо написать
счет действителен в течении 2 дней до "сегодняшняя дата + 2 дня",
25 krolikska
 
05.04.17
16:49
как это сделать и возможно ли
26 azernot
 
05.04.17
16:54
Для ячейки ставим режим заполнения Шаблон
В самой ячейке пишем
счет действителен в течении 2 дней до [ДатаДействительностиСчета]

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

добавляем
ОбластьМакета.Параметры.ДатаДействительностиСчета= Формат(Шапка.Дата +2*24*60*60, "ДЛФ=D");
27 krolikska
 
05.04.17
16:55
воу,спасибо
28 krolikska
 
05.04.17
16:56
счет действителен в течении 2 дней до [ДатаДействительностиСчета]


именно такие скобки??
29 HardBall
 
05.04.17
16:56
(27) А если интернет не будет работать?
30 krolikska
 
05.04.17
16:58
а если интернет не будет работать то и мы не будем()))))
31 azernot
 
05.04.17
17:02
(28) Да, именно квадратные скобки.
32 krolikska
 
05.04.17
17:10
пустое место там где должна быть дата
33 azernot
 
05.04.17
17:12
Запости сюда вот этот кусок кода:
    
    // Вывести Сумму прописью

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

    // Вывести подписи
34 krolikska
 
05.04.17
17:14
35 krolikska
 
05.04.17
17:17
да и еще это не будет работать в четверг и пятницу, поэтому в принципе сомневаюсь уже в нужности элемента
36 azernot
 
05.04.17
17:19
(34) Читаем внимательно (26).
Куда я указывал поместить строку?
Конечно, если секция уже выведена, присваивать параметр - бессмысленно.
37 krolikska
 
05.04.17
17:27
ок, получилось
*сори что тупой*
38 azernot
 
05.04.17
17:28
(34) А вообще, я имел в виду, что в режим заполенения "Шаблон" надо переводить ячейку 41:2 и писать в ней полный текст, с использованием выражения в квадратных скобках в самом тексте.
39 krolikska
 
05.04.17
17:31
да, он написал мне дату 07.04.20
40 azernot
 
05.04.17
17:33
(39) Конечно, не поместился текст.
Сделай как я написал, и всё будет хорошо.
Или уж делай как сам решил, и соответственно, борись со своими проблемами сам :)
41 krolikska
 
05.04.17
17:34
все сделал как ты написал, и все хорошо, опять же *сори что тупой*
42 krolikska
 
05.04.17
17:35
я просто с написание кодов сталкивался в сферах делфи и html

тут для меня все в новинку
43 krolikska
 
05.04.17
17:36
просто необъятных(гигантских,помпезных,бомбических) размеров спасибо за помощь!!!!!!
44 azernot
 
05.04.17
17:36
(35) В принципе, ты можешь сначала рассчитать дату действительности счета, потом проверить не выпадает ли это на субботу и воскресенье, и, если выпадает, сместить на понедельник.

Потом ты скажешь, что суббота/воскресенье были рабочие в связи с переносом праздников, или понедельник - выходной. Тогда я тебя спрошу заполняешь ли ты производственный календарь, ты спросишь, что это такое.. В общем, с этим я тебя оставлю разбираться самостоятельно. :)
45 azernot
 
05.04.17
17:37
(43) Спасибом не отделаешься.
отправь слово ДОБРО на короткий номер 5541!
46 krolikska
 
05.04.17
17:39
сколько это стоит?
47 azernot
 
05.04.17
17:40
(46) Стоимость сообщения 75 руб. с учетом налогов.
https://www.rusfond.ru/donation/sms

:)
Можешь и не отправлять. Я же всё равно никак не проверю.
Но к карме будет однозначный минус.
48 krolikska
 
05.04.17
17:41
уже погуглил, а спросил тк на телефоне 30Р))
пополню, обязательно скину)
49 azernot
 
05.04.17
17:53
Ну, раз пошла такая пьянка, вот ещё кусочек кода, на который надо изменить мой код

ДатаДействительностиСчета = РегламентированнаяОтчетность.ПолучитьСледующуюРабочуюДатуДляРегОтчетности(Шапка.Дата +2*24*60*60);
ОбластьМакета.Параметры.ДатаДействительностиСчета= Формат(ДатаДействительностиСчета , "ДЛФ=D");
50 krolikska
 
05.04.17
17:56
работает, но что это меняет?
51 azernot
 
05.04.17
17:56
(50) Поставь дату счета 06.04 или 07.04, узнаешь
52 krolikska
 
05.04.17
17:59
супер круто!!
а если с чт на пн,а с пт на вторник??
53 azernot
 
05.04.17
18:04
(52) Ну тогда прояви креативность.

РегламентированнаяОтчетность.ПолучитьСледующуюРабочуюДатуДляРегОтчетности(<Дата>)
проверяет, является ли переданная дата выходным, и если является, возвращает следующий рабочий день.

ДеньНедели(<Дата>)
возвращает номер дня недели (1-7)

(НачалоДня(<Дата1>) - НачалоДня(<Дата2>))/86400
даёт разницу между двумя датами

В принципе, достаточно информации для решения задачи.

Вот и проверим, насколько ты крут :)
54 krolikska
 
05.04.17
18:05
в общем огромное спасибо, меня выгоняют из офиса уже))надоел говорят работать))
попробую завтра ток, тк 1с на раб компе
спасибо еще раз!!!
55 krolikska
 
05.04.17
18:06
и с логотипом завтра мучаться буду, а в идеале еще и с печатью и с подписью, так что я думаю вопросы еще будут)))
56 mistеr
 
05.04.17
19:46
И вот за такую "работу" они не стесняются брать деньги...
57 krolikska
 
06.04.17
12:39
я менеджер на телефоне, это просто сделать попросили тк есть опыт в програмировании. да ну и в принципе (56) , деньги можно щас за все что угодно брать))) у меня знакомый сидит на сайте, на котором люди выкладывают объявления, одни о том что готовы отвезти груз, а другие о том что им нужно отвезти груз. а знакомый берет заказ у вторых и отдает первым, и имеет с этого окуенные откаты)))
так что.....
58 Krabb
 
06.04.17
12:57
(56) Всегда так делаю :)
59 krolikska
 
06.04.17
13:18
(56) как говориться-не хочешь,не бери)))
60 krolikska
 
06.04.17
13:18
говорится*
Ошибка? Это не ошибка, это системная функция.