Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
26 сен 2021, 10:51

2 разных параметра в одной ячейке

Автор Madikoshka, 16 мар 2017, 12:44

0 Пользователей и 1 гость просматривают эту тему.

Madikoshka

Как сделать так, чтобы номенклатура печаталась вместе с комментарием вместе?
Скрин макета и документа внизу
вот код, помогите пожалуйста! Очень срочно нужно
Функция ПечатьСчетаЗаказа()

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

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

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

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

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

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

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

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

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

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

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

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

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

   ОбластьКолонкаТовар = Макет.Область("Товар");

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

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

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

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

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

      ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);
      ОбластьДанных.Параметры.Товар       = СокрЛП(ВыборкаСтрокТовары.Товар);
      ОбластьДанных.Параметры.Количество  = Формат(ВыборкаСтрокТовары.Количество, "ЧДЦ=3");
      Если ВыводитьКоды Тогда
         ОбластьДанных.Параметры.КодАртикул = ?(ВыборкаСтрокТовары.ID = 3, ВыборкаСтрокТовары.Номенклатура.Код, ВыборкаСтрокТовары.КодАртикул);            
      КонецЕсли;
      ТабДокумент.Присоединить(ОбластьДанных);
      
      ОбластьСуммы.Параметры.Заполнить(ВыборкаСтрокТовары);
      ТабДокумент.Присоединить(ОбластьСуммы);
      Сумма          = Сумма       + ВыборкаСтрокТовары.Сумма;
      СуммаНДС       = СуммаНДС    + ВыборкаСтрокТовары.СуммаНДС;

   КонецЦикла;

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

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

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

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

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

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

Kironten

Надо в запросе по шапке во-первых получить этот комментарий:
...
   |   Контрагент КАК Получатель,
|   Контрагент.Комментарий КАК Комментарий,
   |   Организация КАК Руководители,
   |   Организация КАК Поставщик,
...


а во-вторых запихнуть его в заполнение область строк:
...
ОбластьДанных.Параметры.Товар       = СокрЛП(ВыборкаСтрокТовары.Товар) + " " + СокрЛП(Шапка.Комментарий);
...


но, поскольку по факту вы видимо планируете препарировать рабочий код в конфе, а не внешнюю обработку, то на случай если вы что-то где-то не так напишите, то чукча ни при чем :D

Madikoshka

Большое вам спасибо! Выручили!)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск