PDA

Просмотр полной версии : Документ гарантийный талон



Alik_5002
23.10.2014, 14:38
Всем привет.
Подскажите пожалуйста, как из внешней печатной формы сделать документ, чтобы он хранился в базе? ВПФ гарантийного талона есть, формируется на основании Реализации товаров и услуг. Необходимо добавить новый документ ГТ в базу без документа реализации товаров и услуг. Конфигурация УТП для 8.2. В общем сделать самостоятельный документ.

avm3110
23.10.2014, 15:45
Подскажите пожалуйста, как из внешней печатной формы сделать документ, чтобы он хранился в базе?
Из внешней - никак


еобходимо добавить новый документ ГТ в базу
Ну-у-у.
Заходишь в конфигуратор, устанавливаешь режим поддержки - "с возможностью изменений" и создаешь новый документ.
Но если сам не шаришь - найми за миску юшки 1Снига из франча, он такую фигню сделат за 15 минут (за одну миску юшки со шматом сала)

Alik_5002
24.10.2014, 09:06
Документ и макет сделал, не могу передать данные о фирме и покупателе в макет для печати

avm3110
24.10.2014, 09:31
не могу передать данные о фирме и покупателе в макет для печати
Это фантастика :confused:
Если в документе есть данные в реквизите, то эти реквизиты доступны в местах где вы создаете макет (приведите код, где вы создаете макет. Это модуль объекта или модуль менеджера?).
Есть сильное подозрение, что у вас нет понимания механизмов 1С.
Может все же позвать 1Снига?

Alik_5002
24.10.2014, 09:39
Вот код внешней печатной формы:

Функция Печать() Экспорт

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

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

СтруктурнаяЕдиницаОрганиз ация = ОбщегоНазначения.Получить� �труктурнуюЕдиницу(Шапка.О� �ганизация, Шапка.СтруктурноеПодразде� �ение);
СведенияОПоставщике = ОбщегоНазначения.Сведения� �ЮрФизЛице(СтруктурнаяЕдин ицаОрганизация, Шапка.Дата);
СведенияОПолучателе = ОбщегоНазначения.Сведения� �ЮрФизЛице(Шапка.Получател� �, Шапка.Дата);

ВидДокумента = СсылкаНаОбъект.Метаданные( ).Имя;
ИмяТабЧасти = "Товары";
ТекДок = СсылкаНаОбъект;

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


Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;

Запрос.УстановитьПараметр("ТекДок", СсылкаНаОбъект);
Запрос.УстановитьПараметр("ИмяТабЧасти", "Товары");

ТабДокумент = Новый ТабличныйДокумент;

// Зададим параметры печатной формы по умолчанию
ТабДокумент.РазмерКолонти� �улаСверху = 5;
ТабДокумент.РазмерКолонти� �улаСнизу = 5;
ТабДокумент.АвтоМасштаб = Истина;
ТабДокумент.ОриентацияСтр� �ницы = ОриентацияСтраницы.Портре� �;

ТабДокумент.ПолеСверху=5;
ТабДокумент.ПолеСлева=5;
ТабДокумент.ПолеСнизу=5;
ТабДокумент.ПолеСправа=5;

// Восстановим установленные пользователем параметры печатной формы
ТабДокумент.ИмяПараметров� �ечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВнешняяПе чатнаяФорма";

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

Макет = ПолучитьМакет("Гарантия");
ПредставлениеПоставщика = ОбщегоНазначения.Описание� �рганизации(СведенияОПоста вщике, "ПолноеНаименование,");

Область = Макет.ПолучитьОбласть("Поставщик");
Область.Параметры.Документ Основание = "Документ основание: " + РаботаСДиалогами.Сформиро� �атьЗаголовокДокумента(Тек Док,,глСписокПрефиксовУзло в);
Область.Параметры.Представ лениеПоставщика = "Поставщик: " + СокрЛП(ПредставлениеПоста� �щика);//СведенияОПоставщике.Юриди� �ескийАдрес;
Область.Параметры.АдресПос тавщика = "Адрес: Республика Казахстан, г. Павлодар, ул. Ленина, дом № 143, офис 34";
Область.Параметры.ТелПоста вщика = "Телефон: "+ СведенияОПоставщике.Телеф� �ны;
ТабДокумент.Вывести(Област ь);

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

ПредставлениеПолучателя = ОбщегоНазначения.Описание� �рганизации(ОбщегоНазначен ия.СведенияОЮрФизЛице(Шапк а.Получатель, Шапка.Дата), "ПолноеНаименование,");

Область = Макет.ПолучитьОбласть("Покупатель");

Область.Параметры.Представ лениеПолучателя = "Покупатель: " + СокрЛП(ПредставлениеПолуч� �теля);
Область.Параметры.ДатаПолу чателя = "Дата продажи: " + Формат( Шапка.Дата, "ДФ='дд.ММ.гггг'") ;
Область.Параметры.АдресПол учателя = "Адрес: " + СведенияОПолучателе.Юриди� �ескийАдрес;

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




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

ОбластьНоменклатура = Макет.ПолучитьОбласть("ТабНоменклатура");

Индекс = 0;
ТекНоменклатура = Неопределено;
ТекХарактеристика = Неопределено;
ТекСерия = Неопределено;
ТекСерийныйНомер = Неопределено;
Обход = РезультатЗапроса.Выбрать();
Пока Обход.Следующий() Цикл

Если ТекНоменклатура <> Обход.Номенклатура
ИЛИ ТекХарактеристика <> Обход.Характеристика
ИЛИ ТекСерия <> Обход.Серия
ИЛИ ТекСерийныйНомер <> Обход.СерийныйНомер
Тогда

Индекс = Индекс + 1;

ТекНоменклатура = Обход.Номенклатура;
ТекХарактеристика = Обход.Характеристика;
ТекСерия = Обход.Серия;
ТекСерийныйНомер = Обход.СерийныйНомер;

ОбластьНоменклатура.Парам� �тры.НомСтр = Индекс;
ОбластьНоменклатура.Парам� �тры.ПечНоменклатура = Обход.ПечНоменклатура + ФормированиеПечатныхФорм.� �редставлениеСерий(Обход);
ОбластьНоменклатура.Парам� �тры.Номенклатура = Обход.Номенклатура;
ОбластьНоменклатура.Парам� �тры.ЕдИзм = Обход.ЕдиницаИзмерения;
ОбластьНоменклатура.Парам� �тры.ПечЕдИзм = Обход.ПечЕдиницаИзмерения;
ОбластьНоменклатура.Парам� �тры.Количество = Обход.Количество;
ОбластьНоменклатура.Парам� �тры.СерийныйНомер = Обход.СерийныйНомер;

СерийныйНомер = ?(ЗначениеЗаполнено(Обход.С ерийныйНомер),Обход.Серийн� �йНомер,"");

ОбластьНоменклатура.Парам� �тры.СерийныйНомер = СерийныйНомер;

Гарантия = ?(ЗначениеЗаполнено(Обход.Г арантия),Обход.Гарантия,"");

ОбластьНоменклатура.Парам� �тры.ГарантийныйСрок = Гарантия;


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

КонецЕсли;

КонецЦикла;

Область = Макет.ПолучитьОбласть("ТабПодвал");
Область.Параметры.Ответств енный = ?(ТекДок.Ответственный.Ссыл ка.Пустая()=1,"______________________",ТекДок.Ответственный);
ТабДокумент.Вывести(Област ь);


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

КонецФункции

---------- Post added at 10:36 ---------- Previous post was at 10:34 ----------

Из нее пытаюсь сделать самостоятельный документ документ

---------- Post added at 10:39 ---------- Previous post was at 10:36 ----------

Вот часть кода созданного мною документа:

Функция Печать()

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

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

СтруктурнаяЕдиницаОрганиз ация = ОбщегоНазначения.Получить� �труктурнуюЕдиницу(Шапка.О� �ганизация, Шапка.СтруктурноеПодразде� �ение);
СведенияОПоставщике = ОбщегоНазначения.Сведения� �ЮрФизЛице(СтруктурнаяЕдин ицаОрганизация, Шапка.Дата);
СведенияОПолучателе = ОбщегоНазначения.Сведения� �ЮрФизЛице(Шапка.Получател� �, Шапка.Дата);

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


На данной строке

СтруктурнаяЕдиницаОрганиз ация = ОбщегоНазначения.Получить� �труктурнуюЕдиницу(Шапка.О� �ганизация, Шапка.СтруктурноеПодразде� �ение);

выдает ошибку:

{ОбщийМодуль.ОбщегоНазначе ния.Модуль(1926)}: Значение не является значением объектного типа (УказыватьРеквизитыГоловн� �йОрганизации)
Если СтруктурноеПодразделение.� �казыватьРеквизитыГоловно� �Организации Тогда

avm3110
24.10.2014, 10:14
Мдя. Как я и предполагал :dance:
Это понятно желание "списать у товарища" и взять что-либо из "штатной функциональности", но это все же стоит делать понимая "что и как".

Ну скажите пожалуйста, ну зачем "огород городить" с запросами (для штатной функциональности это понятно, там делают универсальный на все случаи жизни)?

Если ссылка на сам документ у Вас находится в "ЭтотОбъект.СсылкаНаОбъект", то ссылка на организацию у вас "сидит" в "ЭтотОбъект.Организация", а ссылка на покупателя "ЭтотОбъект.Контрагент"
И всё, без всяких выеживаний :blush:

ПыСы. Запустите отладчик в файловом режиме и сами убедитесь что это именно так