Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Правка макета  (Прочитано 15331 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Gunslinger
Постоялец

ru
Offline Offline

« : 14-05-2010 06:54 » 

Здравствуйте, обитатели форума!
У меня такой вопрос - типовая конфигурация "управление торговлей", документы Заказ Поставщику и Заказ Покупателя.. у них есть печатные формы (макеты) мне нужно добавить туда пункт "Вес всего" в котором был бы написан вес товара исходя из количества, прописанного в документе и весового коэффициента из справочника "номенклатура", если кто делал что похожее - напишите..
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 14-05-2010 12:31 » 

Gunslinger, ничего сложного не вижу, только одно замечание: не правь наживую макеты а лучше сделай внешнюю печатную форму (УТ это вроде позволяет)
Записан
Gunslinger
Постоялец

ru
Offline Offline

« Ответ #2 : 18-05-2010 04:33 » 

Да, с макетом действительно оказалось не слишком сложно.. другая проблема - внешняя форма. при попытке сформировать форму (забавная тавтология) вылезает ошибка
//////////
Не удалось сформировать внешнюю печатную форму!
Недостаточно фактических параметров
/////////
Вот модуль:
Функция ПечатьСчетаЗаказа(Тип)

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

   Запрос = Новый Запрос;

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

   // Определим параметры запроса и табличного документа 
   // в зависимости от необходимости отображения артикула поставщика 
   Если Тип = "ЗаказПоДаннымПоставщика" Тогда

      ВыводитьКоды    = Истина;
      ТекстКодАртикул = "Код";
        Колонка         = "Артикул" + Символы.ПС + "поставщика";
      ОбластьШапки    = Макет.ПолучитьОбласть("ШапкаСКодом");
      ОбластьСтроки   = Макет.ПолучитьОбласть("СтрокаСКодом");

      Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент);

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

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

      ТекстПоляАртикула = ",
         |   АртикулКонтрагента";

      ТекстВыборкиАртикула = ",
         |   АртикулНоменклатурыКонтрагента КАК АртикулКонтрагента";

      ТекстВыборкиНоменклатуры = ",
         |   ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(100)) КАК НаименованиеКонтрагента";

      ТекстИсточникАртикула = "
         |   ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
         |   ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
         |   И НоменклатураКонтрагентов.ХарактеристикаНоменклатуры = ЗаказПоставщику.ХарактеристикаНоменклатуры
         |   И НоменклатураКонтрагентов.Контрагент = &Контрагент";
         
      ТекстИсточникАртикулаБезХарактеристики = "
         |   ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
         |   ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
         |   И НоменклатураКонтрагентов.Контрагент = &Контрагент";

      ТекстГруппировкиАртикулаИНоменклатуры = ",
         |   АртикулНоменклатурыКонтрагента,
         |   ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(100))";

   Иначе

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

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

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

      ТекстПоляАртикула                     = "";
      ТекстВыборкиАртикула                  = "";
      ТекстИсточникАртикула                 = "";
      ТекстГруппировкиАртикулаИНоменклатуры = "";

   КонецЕсли;

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

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

   Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизации(Шапка.Организация, Шапка.Дата,);
   Руководитель = Руководители.Руководитель;
   Бухгалтер    = Руководители.ГлавныйБухгалтер;

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

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

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

   // Вывести табличную часть
   Если ВыводитьКоды Тогда
      ОбластьШапки.Параметры.Колонка = Колонка;
   КонецЕсли;

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

   Сумма    = 0;
   СуммаНДС = 0;

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

      Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда
         Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
         Продолжить;
      КонецЕсли;

      ОбластьСтроки.Параметры.Заполнить(ВыборкаСтрокТовары);
      ОбластьСтроки.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
      ОбластьСтроки.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
                              + ?(ВыборкаСтрокТовары.НомерТЧ = 4, " (возвратная тара)", "") +"_"+ВыборкаСтрокТовары.Номенклатура.ЕдиницаХраненияОстатков.Вес;

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

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

      Сумма    = Сумма    + ВыборкаСтрокТовары.Сумма;
      СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

   КонецЦикла;

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

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

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

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

КонецФункции // ПечатьСчетаЗаказа()
Функция Печать(Тип) Экспорт
   
   ТабДокумент = ПечатьСчетаЗаказа(Тип);
   Возврат ТабДокумент;
   
КонецФункции
При сохранении никаких ошибок нет...
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 18-05-2010 04:36 » 

а тут запятая, случаем, не пропущена ?  (синтаксис не знаю, но как-то выглядит непонятно Отлично )
 (НаименованиеКонтрагента КАК Строка(100)) = """")
Записан

Gunslinger
Постоялец

ru
Offline Offline

« Ответ #4 : 18-05-2010 04:43 » 

Так при сохранении ошибки-то нет.. значит синтаксис в порядке - в логике ошибка...
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 18-05-2010 05:38 » 

Алексей1153++, Не - это ж "русский SQL". В переводе на обычный - это где-то так: ((ClientName cast String(100))="")
Gunslinger, при сохранении тексты запросов не проверяются. Пройдись по модулю отладчиком - посмотри где ошибка
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 18-05-2010 06:02 » 

Kivals, ужасть!
Записан

Gunslinger
Постоялец

ru
Offline Offline

« Ответ #7 : 18-05-2010 06:59 » 

Мне вот подсказали что функция Печать не должна иметь параметров, ошибка из-за этого вылезает...
Записан
Dest
Опытный

ru
Offline Offline

« Ответ #8 : 18-05-2010 10:28 » 

при сохранении тексты запросов не проверяются
А я обычно как текст запроса проверяю - открываю его конструктором и если конструктор открылся значит ошибок нет, а если есть они вылезут
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 18-05-2010 15:50 » new

Dest, поддерживаю такой метод - изредка сам пользуюсь.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines