Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 июл 2025, 23:09

Запрос для Унив. перед. докум

Автор Alex56, 23 июн 2014, 18:23

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

Alex56

Здравствуйте, не могу найти запрос помогите.

Функция ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати)
   
   ТабДокумент = Новый ТабличныйДокумент;
   
   // Устанавливаем параметры печати и колонтитулы
   ТабДокумент.ОриентацияСтраницы    = ОриентацияСтраницы.Ландшафт;
   ТабДокумент.ПолеСверху             = 12;
   ТабДокумент.ПолеСлева              = 0;
   ТабДокумент.ПолеСнизу              = 0;
   ТабДокумент.ПолеСправа             = 0;
   ТабДокумент.АвтоМасштаб       = Истина;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент";
   
   ПервыйДокумент             = Истина;
   ВыводитьКолонтитул       = МассивОбъектов.Количество() = 1;
   ТабДокументНеВыводитьНаПечать    = Истина;
   ДокументыСчетФактураНеТребуется = ОпределитьСчетФактураТребуются(МассивОбъектов);
   
   Для каждого Ссылка Из МассивОбъектов Цикл
         
      Если Не ПервыйДокумент Тогда
         ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
      КонецЕсли;
      ПервыйДокумент = Ложь;
      НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
      
      РеквизитыДокумента = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Ссылка, "Ссылка, Дата, Номер, Организация,
         |ВидОперации, Контрагент, ДоговорКонтрагента, ОтпускРазрешил, ГлавныйБухгалтер, Подразделение,
         |ДоверенностьНомер, ДоверенностьДата, ДоверенностьВыдана, ДоверенностьЧерезКого");
         
      ДанныеДокумента = Новый Структура();
      ДанныеДокумента.Вставить("ДокументСсылка",                РеквизитыДокумента.Ссылка);
      ДанныеДокумента.Вставить("Номер",                         РеквизитыДокумента.Номер);
      ДанныеДокумента.Вставить("Дата",                          РеквизитыДокумента.Дата);
      ДанныеДокумента.Вставить("Ссылка",                        Документы.СчетФактураВыданный.ПустаяСсылка());
      ДанныеДокумента.Вставить("ДокументОснование",             РеквизитыДокумента.Ссылка);
      ДанныеДокумента.Вставить("Организация",                    РеквизитыДокумента.Организация);
      ДанныеДокумента.Вставить("Контрагент",                     РеквизитыДокумента.Контрагент);
      ДанныеДокумента.Вставить("ДоговорКонтрагента",               РеквизитыДокумента.ДоговорКонтрагента);
      ДанныеДокумента.Вставить("Руководитель",                  РеквизитыДокумента.ОтпускРазрешил);
      ДанныеДокумента.Вставить("ГлавныйБухгалтер",              РеквизитыДокумента.ГлавныйБухгалтер);
      ДанныеДокумента.Вставить("ВалютаРегламентированногоУчета",  глЗначениеПеременной("ВалютаРегламентированногоУчета"));
      ДанныеДокумента.Вставить("Подразделение",                  РеквизитыДокумента.Подразделение);
      
      Если ЗначениеЗаполнено(РеквизитыДокумента.ДоверенностьНомер) ИЛИ ЗначениеЗаполнено(РеквизитыДокумента.ДоверенностьДата)
         ИЛИ ЗначениеЗаполнено(РеквизитыДокумента.ДоверенностьВыдана) ИЛИ ЗначениеЗаполнено(РеквизитыДокумента.ДоверенностьЧерезКого) Тогда
         Доверенность = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'по доверенности №%1 от %2 выданной %3 %4'"),
            РеквизитыДокумента.ДоверенностьНомер, Формат(РеквизитыДокумента.ДоверенностьДата, "ДЛФ=ДД"),
            РеквизитыДокумента.ДоверенностьВыдана, РеквизитыДокумента.ДоверенностьЧерезКого);
         ДанныеДокумента.Вставить("Доверенность", Доверенность);
      КонецЕсли;
      
      ВидДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РеквизитыДокумента.ДоговорКонтрагента, "ВидДоговора");
      ПередачаНаРеализациюПоКомиссии = (ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером);
      ДанныеДокумента.Вставить("ПередачаНаРеализациюПоКомиссии",  ПередачаНаРеализациюПоКомиссии);
      
      СчетФактураТребуется = (ДокументыСчетФактураНеТребуется.Найти(Ссылка) = Неопределено);
      
      СтруктураОтбораСчетаФактуры = Новый Структура;
      СтруктураОтбораСчетаФактуры.Вставить("ПометкаУдаления", Ложь);
      
      Если УчетНДС.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДокумента, СчетФактураТребуется, ТабДокумент, СтруктураОтбораСчетаФактуры) = Неопределено Тогда
         Продолжить;
      КонецЕсли;
      
      ТабДокумент.ВерхнийКолонтитул.Выводить = ВыводитьКолонтитул;
      
      ТабДокументНеВыводитьНаПечать = Ложь;
      УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка);
      
   КонецЦикла;
   
   Если ТабДокументНеВыводитьНаПечать Тогда
      Макет = ПолучитьОбщийМакет("УниверсальныйПередаточныйДокумент");
      ОбластьМакета = Макет.ПолучитьОбласть("Ошибка");
      ТабДокумент.Вывести(ОбластьМакета);
   КонецЕсли;
   
   Возврат ТабДокумент;
   
КонецФункции
Нужно постоянно трудиться.

GRADUS

УчетНДС.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДокумента, СчетФактураТребуется, ТабДокумент, СтруктураОтбораСчетаФактуры)

Ты уверен насчет профессии программист 1с ?
Может быть стоит пойти методистом? У тебя это лучше выходит.

Alex56

И тут нету я там смотрел.

Функция ПечатьУниверсальногоПередаточногоДокумента(ДанныеДокумента, СчетФактураТребуется, ТабДокумент = Неопределено, СтруктураОтбораСчетаФактуры = Неопределено) Экспорт
   
   Если ДанныеДокумента.Дата < '20130101' Тогда
      ТекстСообщения = НСтр("ru = 'Применение формы универсального передаточного документа возможно только с 01 января 2013 года!'");
      ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
      Возврат Неопределено;
   КонецЕсли;

   Если СтруктураОтбораСчетаФактуры = Неопределено Тогда
      СчетФактура = НайтиПодчиненныйСчетФактуру(ДанныеДокумента.ДокументСсылка, "СчетФактураВыданный");
   Иначе
      СчетФактура = НайтиПодчиненныйСчетФактуру(ДанныеДокумента.ДокументСсылка, "СчетФактураВыданный", СтруктураОтбораСчетаФактуры);
   КонецЕсли;
   
   Если ТабДокумент = Неопределено Тогда
      ТабДокумент = Новый ТабличныйДокумент;
      // Устанавливаем параметры печати и колонтитулы
      ТабДокумент.ОриентацияСтраницы    = ОриентацияСтраницы.Ландшафт;
      ТабДокумент.ПолеСверху          = 12;
      ТабДокумент.ПолеСлева           = 0;
      ТабДокумент.ПолеСнизу           = 0;
      ТабДокумент.ПолеСправа          = 0;
      ТабДокумент.АвтоМасштаб       = Истина;
      ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_УниверсальныйПередаточныйДокумент";
   КонецЕсли;
   
   Если ЗначениеЗаполнено(СчетФактура) ИЛИ СчетФактураТребуется Тогда
      
      // УПД печатается из документа счет-фактура
      Если НЕ ЗначениеЗаполнено(СчетФактура) Тогда
         ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                  НСтр("ru = 'По документу ""%1"" не выписан счет-фактура или он помечен на удаление!'"), ДанныеДокумента.ДокументСсылка);
         ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
         Возврат Неопределено;
      КонецЕсли;
      
      РеквизитыСФ = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(СчетФактура, "Дата, ВидСчетаФактуры, Исправление,НомерИсправления,
         |СчетФактураБезНДС, КППКонтрагента");
      ДанныеДокумента.Вставить("Ссылка",                СчетФактура);
      ДанныеДокумента.Вставить("Дата",                РеквизитыСФ.Дата);
      ДанныеДокумента.Вставить("ВидСчетаФактуры",       РеквизитыСФ.ВидСчетаФактуры);
      ДанныеДокумента.Вставить("Исправление",           РеквизитыСФ.Исправление);
      ДанныеДокумента.Вставить("НомерИсправления",       РеквизитыСФ.НомерИсправления);
      ДанныеДокумента.Вставить("СчетФактураБезНДС",       РеквизитыСФ.СчетФактураБезНДС);
      ДанныеДокумента.Вставить("КППКонтрагента",           РеквизитыСФ.КППКонтрагента);
      
      ДанныеДляПечати = Документы.СчетФактураВыданный.ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумента(ДанныеДокумента);
      Если ДанныеДляПечати = Неопределено Тогда
         Возврат Неопределено;
      КонецЕсли;
      
      Если ДанныеДокумента.Свойство("ДатаОтгрузкиПередачи") Тогда
         ДанныеДляПечати.Вставить("ДатаОтгрузкиПередачи", ДанныеДокумента.ДатаОтгрузкиПередачи);
      КонецЕсли;
      
      Документы.СчетФактураВыданный.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДляПечати, ТабДокумент);

      Возврат ТабДокумент;
      
   КонецЕсли;
   
   // УПД печатается по статусу 2
   ДанныеДляПечати = ПодготовитьДанныеДляПечатиУниверсальногоПередаточногоДокумента(ДанныеДокумента);
   Если ДанныеДляПечати = Неопределено Тогда
      Возврат Неопределено;
   КонецЕсли;
   
   Макет = ПолучитьОбщийМакет("УниверсальныйПередаточныйДокумент");

   ВывестиСчетФактуруВТабличныйДокумент(ТабДокумент, Макет, ДанныеДляПечати);

   ВывестиПодвалУниверсальногоПередаточногоДокументаВТабличныйДокумент(ТабДокумент, Макет, ДанныеДляПечати);
   
   Возврат ТабДокумент;
   
КонецФункции


Нужно постоянно трудиться.

GRADUS


Теги:

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

Рейтинг@Mail.ru

Поиск