|
проблема с изменением макета | ☑ | ||
---|---|---|---|---|
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
|
говорится*
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |