|
Зависает внешняя печатная форма | ☑ | ||
---|---|---|---|---|
0
ttu174
09.01.20
✎
22:36
|
Доброе время суток уважаемые! Помогите пожалуйста, ни как не могу найти решение, есть внешняя печатная форма ,если ее открываю через Файл-Открыть , то форма выводится, если подключают через дополнительные обработки, и вывожу в документе перемещение товаров, то зависает 1с.
|
|||
1
ttu174
09.01.20
✎
22:38
|
возможно что то не правильно в сведениях о внешней обработке?
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.ПеремещениеТоваров"); //Указываем документ к которому делаем внешнюю печ. форму ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Наименование", "Требование с остатком"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "Печатная форма для печати из документа ""ПеремещениеТоваров"" Требование с остатком"); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, "Требование с остатком", "ПеремещениеТоваров", "ВызовСерверногоМетода", Ложь, "ПечатьMXL"); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры //Функция Печать() Экспорт // // МассивОбъектов= Новый Массив; // МассивОбъектов.Добавить(СсылкаНаОбъект.Ссылка); // ОбъектыПечати= Новый СписокЗначений; // Возврат ПечатьТребованиеНакладнаяНовая(МассивОбъектов, ОбъектыПечати); // КонецФункции // Печать. Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт МассивОбъектов = Новый Соответствие(); МассивОбъектов.Вставить("Документ.ПеремещениеТоваров", МассивОбъектов); ПечатнаяФорма = ПечатьТребованиеНакладнаяНовая(МассивОбъектов, ОбъектыПечати); //++ Если ПечатнаяФорма = Неопределено Тогда КоллекцияПечатныхФорм[0].ТабличныйДокумент = Новый ТабличныйДокумент(); Сообщить("Для документа " + ЭтотОбъект.СсылкаНаОбъект + " не удалось сформировать печатную форму"); Возврат; КонецЕсли; //-- УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПеремещениеТоваров", "Требование с остатком", ПечатнаяФорма); КонецПроцедуры // Функция формирует печатную форму документа // Функция ПечатьТребованиеНакладнаяСтарая(МассивОбъектов, ОбъектыПечати) Экспорт ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить(); Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда ТоварКод = "Артикул"; Иначе ТоварКод = "Код"; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | Номер КАК НомерДокумента, | Дата КАК ДатаДокумента, | Организация, | СкладОтправитель КАК ОтправительПодразделение, | СкладПолучатель КАК ПолучательПодразделение, | СкладОтправитель.ВидСклада КАК ОтправительВидСклада, | СкладПолучатель.ВидСклада КАК ПолучательВидСклада, | ОтветственныеЛицаОтправитель.ФизическоеЛицо КАК ФизЛицоОтправитель, | ОтветственныеЛицаПолучатель.ФизическоеЛицо КАК ФизЛицоПолучатель, | Товары.( | Номенклатура, | Номенклатура.НаименованиеПолное КАК ТоварНаименование, | Номенклатура." + ТоварКод + " КАК ТоварКод, | Цена, | Количество, | КоличествоМест, | Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЕдиницаХраненияОстатковКоэффициент, | ЕдиницаИзмерения.Коэффициент КАК ДокЕдиницаКоэффициент, | ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияНаименование, | ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК ЕдиницаИзмеренияКодПоОКЕИ, | ЕдиницаИзмеренияМест.Представление КАК ЕдиницаИзмеренияМестНаименование, | ВЫБОР | КОГДА КоличествоМест > 0 ТОГДА ЕдиницаИзмеренияМест.Коэффициент / Коэффициент | ИНАЧЕ NULL | КОНЕЦ КАК КоличествоВОдномМесте, | ХарактеристикаНоменклатуры КАК Характеристика, | СерияНоменклатуры КАК Серия, | Номенклатура.ВестиПартионныйУчетПоСериям КАК ПартионныйУчетПоСериям, | ТоварыНаСкладахОстаткиКомпании.КоличествоОстаток КАК КоличествоОстаток | ), | ВозвратнаяТара.( | Номенклатура, | Номенклатура.НаименованиеПолное КАК ТоварНаименование, | Номенклатура." + ТоварКод + " КАК ТоварКод, | 0 КАК Цена, | 0 КАК Сумма, | 0 КАК КоличествоВОдномМесте, | Количество, | Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмеренияНаименование, | Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.Код КАК ЕдиницаИзмеренияКодПоОКЕИ, | ТоварыНаСкладахОстаткиКомпании.КоличествоОстаток КАК КоличествоОстаток | ) |ИЗ | Документ.ПеремещениеТоваров КАК ПеремещениеТоваров |ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.ОтветственныеЛица.СрезПоследних(&Дата, СтруктурнаяЕдиница = &СкладОтправитель) КАК ОтветственныеЛицаОтправитель |ПО | ИСТИНА |ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.ОтветственныеЛица.СрезПоследних(&Дата, СтруктурнаяЕдиница = &СкладПолучатель) КАК ОтветственныеЛицаПолучатель |ПО | ИСТИНА | | левое СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаДляОстатков,склад=&СкладОтправитель ) КАК ТоварыНаСкладахОстаткиКомпании | ПО Товары.Номенклатура = ТоварыНаСкладахОстаткиКомпании.Номенклатура | И Товары.ХарактеристикаНоменклатуры= ТоварыНаСкладахОстаткиКомпании.ХарактеристикаНоменклатуры | |ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокумент | |УПОРЯДОЧИТЬ ПО | Товары.НомерСтроки, | ВозвратнаяТара.НомерСтроки |"; Макет = ПолучитьМакет("ТребованиеНакладнаяПеремещениеСОстатком"); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТребованиеНакладнаяПеремещение"; //ВалютаПечати = глЗначениеПеременной("ВалютаРегламентированногоУчета"); ПервыйДокумент = Истина; Для Каждого Ссылка Из МассивОбъектов Цикл Если Не ПервыйДокумент Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1; Запрос = Новый Запрос; Запрос.УстановитьПараметр("Дата", Ссылка.Дата); Запрос.УстановитьПараметр("ДатаДляОстатков", КонецМинуты(Ссылка.Дата)); Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка); Запрос.УстановитьПараметр("СкладОтправитель", Ссылка.СкладОтправитель); Запрос.УстановитьПараметр("СкладПолучатель", Ссылка.СкладПолучатель); Запрос.Текст = ТекстЗапроса; Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий(); ВыборкаСтрокТовары = Шапка.Товары.Выбрать(); ВыборкаСтрокТара = Шапка.ВозвратнаяТара.Выбрать(); //ЭтоСкладНТТ = (Шапка.ОтправительВидСклада = Перечисления.ВидыСкладов.НТТ // ИЛИ Шапка.ПолучательВидСклада = Перечисления.ВидыСкладов.НТТ); //Если НЕ ЭтоСкладНТТ Тогда // //ТаблицаСтоимости = Неопределено; // ПолучитьТаблицуСтоимостиТоваров(Ссылка); // //Если ТаблицаСтоимости = Неопределено Тогда // // Продолжить; // //КонецЕсли; // //ВалютаУпрУчета = глЗначениеПеременной("ВалютаУправленческогоУчета"); // //Параметры = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаУпрУчета, Ссылка.Дата); // //КурсВалютыУпрУчета = Параметры.Курс; // //КратностьВалютыУпрУчета = Параметры.Кратность; //КонецЕсли; // Выводим общие реквизиты шапки СведенияОбОрганизации = "ООО МОЯ"; ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.Заполнить(Шапка); ОбластьМакета.Параметры.Организация=Шапка.Организация; ОбластьМакета.Параметры.ТекстЗаголовка = "ТРЕБОВАНИЕ-НАКЛАДНАЯ №" ; // ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента)); // ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(Ссылка); //ОбластьМакета.Параметры.ДатаДокумента = Шапка.ДатаДокумента; ОбластьМакета.Параметры.Отправитель= Шапка.ОтправительПодразделение; ОбластьМакета.Параметры.Получатель= Шапка.ПолучательПодразделение; ТабДокумент.Вывести(ОбластьМакета); НомерСтраницы = 1; // Получаем результат запроса по номенклатуре Результат = ПолучитьРезультатЗапросаПоНоменклатуре(Ссылка, Ссылка.Дата); // Выводим многострочную часть докмента ВыборкаСтрокТовары = Шапка.Товары.Выбрать(); Ном = 0; КоличествоСтрок = ВыборкаСтрокТовары.Количество() + ВыборкаСтрокТара.Количество(); МассивВыводимыхОбластей = Новый Массив; ОбластьПодвал = Макет.ПолучитьОбласть("Шапка"); ТабДокумент.Вывести(ОбластьПодвал); КоличествоВсего = 0; // Выборка товаров Пока ВыборкаСтрокТовары.Следующий() Цикл Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда Продолжить; КонецЕсли; Ном = Ном + 1; КоличествоВсего = КоличествоВсего + ВыборкаСтрокТовары.Количество; ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.НомерСтроки = Строка(Ном); ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары); КоличествоМест = Формат(ВыборкаСтрокТовары.Количество, "ЧЦ=15; ЧДЦ=3"); Если ВыборкаСтрокТовары.КоличествоМест <> 0 И ЗначениеЗаполнено(ВыборкаСтрокТовары.ЕдиницаИзмеренияМестНаименование) Тогда КоличествоМест = КоличествоМест + Символы.ПС + " (" + Формат(ВыборкаСтрокТовары.КоличествоМест,"ЧЦ=15; ЧДЦ=0") + " " + ВыборкаСтрокТовары.ЕдиницаИзмеренияМестНаименование + ")"; КонецЕсли; // ОбластьМакета.Параметры.КоличествоМест = КоличествоМест; ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование + " / " + ВыборкаСтрокТовары.Номенклатура.Родитель.Наименование; // + ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаСтрокТовары); //Если ЭтоСкладНТТ Тогда // Сумма = ВыборкаСтрокТовары.Количество * ВыборкаСтрокТовары.Цена; //Иначе // Если ВыборкаСтрокТовары.Количество = 0 Тогда // Сумма = 0; // Цена = 0; // Иначе // Количество = 0; // Сумма = ПолучитьСтоимостьТовара(ТаблицаСтоимости, // ВыборкаСтрокТовары.Номенклатура, // ВыборкаСтрокТовары.Характеристика, // ВыборкаСтрокТовары.Серия, // ВыборкаСтрокТовары.ПартионныйУчетПоСериям, // Количество); // Цена = ?(Количество = 0, 0, Сумма / Количество); // КонецЕсли; // Если ВыборкаСтрокТовары.ДокЕдиницаКоэффициент <> 0 Тогда // Количество = Количество * ВыборкаСтрокТовары.ЕдиницаХраненияОстатковКоэффициент / ВыборкаСтрокТовары.ДокЕдиницаКоэффициент; // КонецЕсли; // // Цена = Окр(?(Количество > 0, Сумма / Количество, 0), 2); // Сумма = Цена * ВыборкаСтрокТовары.Количество; // ОбластьМакета.Параметры.Цена = Цена; //КонецЕсли; // //ОбластьМакета.Параметры.Сумма = Сумма; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; // Выборка возвратная тара Пока ВыборкаСтрокТара.Следующий() Цикл Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТара.Номенклатура) Тогда Продолжить; КонецЕсли; Ном = Ном + 1; КоличествоВсего = КоличествоВсего + ВыборкаСтрокТовары.Количество; ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.НомерСтроки = Строка(Ном); ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТара); // ОбластьМакета.Параметры.КоличествоМест = Формат(ВыборкаСтрокТара.Количество, "ЧЦ=15; ЧДЦ=3"); ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТара.ТоварНаименование + " (возвратная тара)"; // // ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.КоличествоВсего = КоличествоВсего ; ТабДокумент.Вывести(ОбластьМакета); // Выводим подвал документа // ФИООтправителя = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(Шапка.ФизЛицоОтправитель, Шапка.ДатаДокумента); //ФИОПолучателя = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(Шапка.ФизЛицоПолучатель, Шапка.ДатаДокумента); ОбластьПодвал = Макет.ПолучитьОбласть("Подписи"); //ОбластьПодвал.Параметры.ДолжностьОтправитель = ПолныеПрава.СведенияОСотруднике(Шапка.ФизЛицоОтправитель, Шапка.ДатаДокумента, Шапка.Организация).Должность; //ОбластьПодвал.Параметры.ФИООтправитель = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИООтправителя.Фамилия + " " + ФИООтправителя.Имя + " " + ФИООтправителя.Отчество); //ОбластьПодвал.Параметры.ДолжностьПолучатель = ПолныеПрава.СведенияОСотруднике(Шапка.ФизЛицоПолучатель, Шапка.ДатаДокумента, Шапка.Организация).Должность; //ОбластьПодвал.Параметры.ФИОПолучатель = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИОПолучателя.Фамилия + " " + ФИОПолучателя.Имя + " " + ФИОПолучателя.Отчество); ТабДокумент.Вывести(ОбластьПодвал); // Зададим параметры макета // ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка); КонецЦикла; Возврат ТабДокумент; КонецФункции // ПечатьТребованиеНакладная() Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Вставить содержимое обработчика. КонецПроцедуры Процедура ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка) Экспорт Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка); Если Элемент = Неопределено Тогда ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ="); ОбъектыПечати.Добавить(Ссылка, ИмяОбласти); Иначе ИмяОбласти = Элемент.Представление; КонецЕсли; НомерСтрокиОкончание = ТабличныйДокумент.ВысотаТаблицы; ТабличныйДокумент.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти; КонецПроцедуры // Формирует текст запроса по номенклатуре анализируемого заказа, // устанавливает параметры и выполняет запрос // // Параметры: // Заказ - объект заказа, // ДатаАнализа - дата анализа. // // Возвращаемое значение: // результат запроса. // Функция ПолучитьРезультатЗапросаПоНоменклатуре(Заказ, ДатаАнализа) Экспорт // Ссылка.СкладОтправитель // ТипЗаказа = "Внутренний"; // Формируем текст запроса по номенклатуре анализируемого заказа. Запрос = Новый Запрос; // // Устанавливаем параметры запроса Запрос.Текст=" ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТоварыНаСкладах.Регистратор, | ТоварыНаСкладах.Номенклатура, | ТоварыНаСкладах.ВНаличии | ИЗ | РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах | левое СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаДокумента,склад=&Склад ) КАК ТоварыНаСкладахОстаткиКомпании | ПО ТоварыНаСкладах.Номенклатура = ТоварыНаСкладахОстаткиКомпании.Номенклатура | | ГДЕ | ТоварыНаСкладах.Регистратор.Ссылка = &Документ"; Запрос.УстановитьПараметр("ДатаДокумента", СсылкаНаОбъект.Ссылка.Дата); Запрос.УстановитьПараметр("Документ", СсылкаНаОбъект.Ссылка); Запрос.УстановитьПараметр("Склад", СсылкаНаОбъект.Ссылка.СкладОтправитель); // Выполнение сформированного запроса и возврат результата Возврат Запрос.Выполнить(); КонецФункции Функция ПечатьТребованиеНакладнаяНовая(МассивОбъектов, ОбъектыПечати) Экспорт ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить(); Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда ТоварКод = "Артикул"; Иначе ТоварКод = "Код"; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | Номер КАК НомерДокумента, | Дата КАК ДатаДокумента, | Организация, | СкладОтправитель КАК ОтправительПодразделение, | СкладПолучатель КАК ПолучательПодразделение |ИЗ | Документ.ПеремещениеТоваров КАК ПеремещениеТоваров |ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокумент | |"; Макет = ПолучитьМакет("ТребованиеНакладнаяПеремещениеСОстатком"); ТабДокумент = Новый ТабличныйДокумент; ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТребованиеНакладнаяПеремещение"; //ВалютаПечати = глЗначениеПеременной("ВалютаРегламентированногоУчета"); ПервыйДокумент = Истина; Для Каждого Ссылка Из МассивОбъектов Цикл Если Не ПервыйДокумент Тогда ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1; Запрос = Новый Запрос; // Запрос.УстановитьПараметр("Дата", Ссылка.Дата); Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка); //Запрос.УстановитьПараметр("СкладОтправитель", Ссылка.СкладОтправитель); //Запрос.УстановитьПараметр("СкладПолучатель", Ссылка.СкладПолучатель); Запрос.Текст = ТекстЗапроса; Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий(); Запрос = Новый Запрос; //Запрос.УстановитьПараметр("Дата", Ссылка.Дата); Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка); Запрос.УстановитьПараметр("СкладОтправитель", СсылкаНаОбъект.СкладОтправитель); Запрос.УстановитьПараметр("ДатаДляОстатков", КонецМинуты(СсылкаНаОбъект.Дата)); ТекстЗапроса = "ВЫБРАТЬ | ПеремещениеТовары.Номенклатура, | ПеремещениеТовары.Номенклатура.ВидНоменклатуры как ВидНоменклатуры, | ПеремещениеТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование, | ПеремещениеТовары.Номенклатура." + ТоварКод + " КАК ТоварКод, //| ПеремещениеТовары.Цена, | ПеремещениеТовары.Количество, //| ПеремещениеТовары.КоличествоМест, //| ПеремещениеТовары.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЕдиницаХраненияОстатковКоэффициент, //| ПеремещениеТовары.ЕдиницаИзмерения.Коэффициент КАК ДокЕдиницаКоэффициент, //| ПеремещениеТовары.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияНаименование, //| ПеремещениеТовары.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Код КАК ЕдиницаИзмеренияКодПоОКЕИ, //| ПеремещениеТовары.ЕдиницаИзмеренияМест.Представление КАК ЕдиницаИзмеренияМестНаименование, // | ВЫБОР // | КОГДА ПеремещениеТовары.КоличествоМест > 0 ТОГДА ЕдиницаИзмеренияМест.Коэффициент / Коэффициент // | ИНАЧЕ NULL // | КОНЕЦ КАК КоличествоВОдномМесте, // | ПеремещениеТовары.ХарактеристикаНоменклатуры КАК Характеристика, // | ПеремещениеТовары.СерияНоменклатуры КАК Серия, // | ПеремещениеТовары.Номенклатура.ВестиПартионныйУчетПоСериям КАК ПартионныйУчетПоСериям, | ТоварыНаСкладахОстатки.ВНаличииОстаток КАК КоличествоОстаток | |ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТовары | левое СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаДляОстатков,склад=&СкладОтправитель ) КАК ТоварыНаСкладахОстатки | ПО ПеремещениеТовары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура //| И ПеремещениеТовары.ХарактеристикаНоменклатуры= ТоварыНаСкладахОстаткиКомпании.ХарактеристикаНоменклатуры | |ГДЕ | ПеремещениеТовары.Ссылка = &ТекущийДокумент | |УПОРЯДОЧИТЬ ПО | ПеремещениеТовары.НомерСтроки |"; Запрос.Текст = ТекстЗапроса; ВыборкаСтрокТовары = Запрос.Выполнить().Выбрать(); // Запрос2 = Новый Запрос; // Запрос2.УстановитьПараметр("Дата", Ссылка.Дата); // Запрос2.УстановитьПараметр("ДатаДляОстатков", КонецМинуты(Ссылка.Дата)); // Запрос2.УстановитьПараметр("ТекущийДокумент", Ссылка); // Запрос2.УстановитьПараметр("СкладОтправитель", Ссылка.СкладОтправитель); // // // ТекстЗапроса2 = "ВЫБРАТЬ //| ПеремещениеТовары.Номенклатура, //| ПеремещениеТовары.Номенклатура.ВидНоменклатуры как ВидНоменклатуры, //| ПеремещениеТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование, //| ПеремещениеТовары.Номенклатура." + ТоварКод + " КАК ТоварКод, ////| 0 КАК Цена, //| ПеремещениеТовары.Количество, ////| 0 КАК КоличествоМест, ////| ПеремещениеТовары.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмеренияНаименование, ////| ПеремещениеТовары.Номенклатура.ЕдиницаХраненияОстатков.ЕдиницаПоКлассификатору.Код КАК ЕдиницаИзмеренияКодПоОКЕИ, ////| 0 КАК КоличествоВОдномМесте, //| ТоварыНаСкладахОстатки.ВНаличииОстаток КАК КоличествоОстаток //| //|ИЗ //| Документ.ПеремещениеТоваров.ВозвратнаяТара КАК ПеремещениеТовары //| левое СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаДляОстатков,склад=&СкладОтправитель ) КАК ТоварыНаСкладахОстатки //| ПО ПеремещениеТовары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура //| //|ГДЕ //| ПеремещениеТовары.Ссылка = &ТекущийДокумент //| //|УПОРЯДОЧИТЬ ПО //| ПеремещениеТовары.НомерСтроки //|"; // Запрос2.Текст = ТекстЗапроса2; // // ВыборкаСтрокТара = Запрос2.Выполнить().Выбрать(); //ЭтоСкладНТТ = (Шапка.ОтправительВидСклада = Перечисления.ВидыСкладов.НТТ // ИЛИ Шапка.ПолучательВидСклада = Перечисления.ВидыСкладов.НТТ); //Если НЕ ЭтоСкладНТТ Тогда // //ТаблицаСтоимости = Неопределено; // ПолучитьТаблицуСтоимостиТоваров(Ссылка); // //Если ТаблицаСтоимости = Неопределено Тогда // // Продолжить; // //КонецЕсли; // //ВалютаУпрУчета = глЗначениеПеременной("ВалютаУправленческогоУчета"); // //Параметры = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаУпрУчета, Ссылка.Дата); // //КурсВалютыУпрУчета = Параметры.Курс; // //КратностьВалютыУпрУчета = Параметры.Кратность; //КонецЕсли; // Выводим общие реквизиты шапки СведенияОбОрганизации = "ООО МОЯ"; ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.Заполнить(Шапка); ОбластьМакета.Параметры.Организация=Шапка.Организация; ОбластьМакета.Параметры.ТекстЗаголовка = "ТРЕБОВАНИЕ-НАКЛАДНАЯ"; ОбластьМакета.Параметры.Отправитель= Шапка.ОтправительПодразделение; ОбластьМакета.Параметры.Получатель= Шапка.ПолучательПодразделение; ТабДокумент.Вывести(ОбластьМакета); НомерСтраницы = 1; Ном = 0; КоличествоВсего = 0; КоличествоСтрок = ВыборкаСтрокТовары.Количество() ; МассивВыводимыхОбластей = Новый Массив; ОбластьПодвал = Макет.ПолучитьОбласть("Шапка"); ТабДокумент.Вывести(ОбластьПодвал); // Выборка товаров Пока ВыборкаСтрокТовары.Следующий() Цикл Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда Продолжить; КонецЕсли; Ном = Ном + 1; КоличествоВсего = КоличествоВсего + ВыборкаСтрокТовары.Количество; ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.НомерСтроки = Строка(Ном); ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары); //КоличествоМест = Формат(ВыборкаСтрокТовары.Количество, "ЧЦ=15; ЧДЦ=3"); //Если ВыборкаСтрокТовары.КоличествоМест <> 0 И ЗначениеЗаполнено(ВыборкаСтрокТовары.ЕдиницаИзмеренияМестНаименование) Тогда // КоличествоМест = КоличествоМест // + Символы.ПС // + " (" + Формат(ВыборкаСтрокТовары.КоличествоМест,"ЧЦ=15; ЧДЦ=0") // + " " // + ВыборкаСтрокТовары.ЕдиницаИзмеренияМестНаименование // + ")"; //КонецЕсли; // ОбластьМакета.Параметры.КоличествоМест = КоличествоМест; ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование + " / " + ВыборкаСтрокТовары.Номенклатура.Родитель.Наименование; //Если ЭтоСкладНТТ Тогда // Сумма = ВыборкаСтрокТовары.Количество * ВыборкаСтрокТовары.Цена; //Иначе // Если ВыборкаСтрокТовары.Количество = 0 Тогда // Сумма = 0; // Цена = 0; // Иначе // Количество = 0; // Сумма = ПолучитьСтоимостьТовара(ТаблицаСтоимости, // ВыборкаСтрокТовары.Номенклатура, // ВыборкаСтрокТовары.Характеристика, // ВыборкаСтрокТовары.Серия, // ВыборкаСтрокТовары.ПартионныйУчетПоСериям, // Количество); // Цена = ?(Количество = 0, 0, Сумма / Количество); // КонецЕсли; // Если ВыборкаСтрокТовары.ДокЕдиницаКоэффициент <> 0 Тогда // Количество = Количество * ВыборкаСтрокТовары.ЕдиницаХраненияОстатковКоэффициент / ВыборкаСтрокТовары.ДокЕдиницаКоэффициент; // КонецЕсли; // // Цена = Окр(?(Количество > 0, Сумма / Количество, 0), 2); // Сумма = Цена * ВыборкаСтрокТовары.Количество; // ОбластьМакета.Параметры.Цена = Цена; //КонецЕсли; // //ОбластьМакета.Параметры.Сумма = Сумма; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла; // Выборка возвратная тара //Пока ВыборкаСтрокТара.Следующий() Цикл // Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТара.Номенклатура) Тогда // Продолжить; // КонецЕсли; // Ном = Ном + 1; // КоличествоВсего = КоличествоВсего + ВыборкаСтрокТовары.Количество; // // ОбластьМакета = Макет.ПолучитьОбласть("Строка"); // // ОбластьМакета.Параметры.НомерСтроки = Строка(Ном); // ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТара); //// ОбластьМакета.Параметры.КоличествоМест = Формат(ВыборкаСтрокТара.Количество, "ЧЦ=15; ЧДЦ=3"); // ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТара.ТоварНаименование + " (возвратная тара)"; //// //// // ТабДокумент.Вывести(ОбластьМакета); //КонецЦикла; ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.КоличествоВсего = КоличествоВсего ; ТабДокумент.Вывести(ОбластьМакета); // Выводим подвал документа //ФИООтправителя = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(Шапка.ФизЛицоОтправитель, Шапка.ДатаДокумента); //ФИОПолучателя = ФормированиеПечатныхФормСервер.ФамилияИмяОтчество(Шапка.ФизЛицоПолучатель, Шапка.ДатаДокумента); ОбластьПодвал = Макет.ПолучитьОбласть("Подписи"); //ОбластьПодвал.Параметры.ДолжностьОтправитель = ПолныеПрава.СведенияОСотруднике(Шапка.ФизЛицоОтправитель, Шапка.ДатаДокумента, Шапка.Организация).Должность; //ОбластьПодвал.Параметры.ФИООтправитель = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИООтправителя.Фамилия + " " + ФИООтправителя.Имя + " " + ФИООтправителя.Отчество); //ОбластьПодвал.Параметры.ДолжностьПолучатель = ПолныеПрава.СведенияОСотруднике(Шапка.ФизЛицоПолучатель, Шапка.ДатаДокумента, Шапка.Организация).Должность; //ОбластьПодвал.Параметры.ФИОПолучатель = ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИОПолучателя.Фамилия + " " + ФИОПолучателя.Имя + " " + ФИОПолучателя.Отчество); ТабДокумент.Вывести(ОбластьПодвал); // Зададим параметры макета // ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка); КонецЦикла; Возврат ТабДокумент; КонецФункции // ПечатьТребованиеНакладнаяНовая() |
|||
2
ttu174
09.01.20
✎
22:40
|
файл здесь https://yadi.sk/d/1him9pY4bII6rg
помогите пожалуйста разобраться |
|||
3
Фрэнки
09.01.20
✎
22:54
|
Судя по тексту в сведениях предположу, что это для старой БСП, не той версии, которая сейчас на актуальных конфигурациях вроде УТ 11
Чтобы кто-то захотел файл испытать, указывай сразу на какой конфигурации это можно открывать. Может завтра кто-то чего и подскажет. |
|||
4
ttu174
09.01.20
✎
22:57
|
эта печатная форма для Комплексной автоматизации 2, для документа ПеремещениеТоваров
|
|||
5
Фрэнки
09.01.20
✎
23:19
|
если меня никто не опередит, сделаю завтра пустышку с ВПФ для этого документа - перенесешь из нее красоту для регистрации
|
|||
6
Фрэнки
09.01.20
✎
23:20
|
просто сейчас уже ночь и доступа на комп разработчика нету
|
|||
7
ttu174
09.01.20
✎
23:21
|
Спасибо!
|
|||
8
Фрэнки
10.01.20
✎
09:16
|
вот с этим не виснет на развернутой тестовой 2.4.5.24 - это номер релиза - я обычно в качестве инфы по версиям подставляю инфу о версии конфигурации, чтоб по прошлым понимать, насколько оно соотв. текущему нужному релизу |
|||
9
mmmarat
10.01.20
✎
09:47
|
(0) Разберитесь с МассивОбъектов и СсылкаНаОбъект. При запуске подключенной обработки у вас ссылки в МассивОбъектов, а в коде по прежнему используется СсылкаНаОбъект. Ну и перепишите инициализацию на нормальную в (8).
ps: СсылкаНаОбъект - это уже ссылка. не нужно делать СсылкаНаОбъект.Ссылка |
|||
10
ttu174
10.01.20
✎
12:53
|
После замены сведений об обработке, ошибка вышла
{ОбщийМодуль.УправлениеПечатью.Модуль(1658)}: В обработчике печати не был сформирован табличный документ для: ВПФ_ПеремещениеТоваров ВызватьИсключение(ТекстСообщенияОбОшибке); еще где то поправить надо да? |
|||
11
ttu174
10.01.20
✎
12:54
|
(9) а пример можете подсказать что вместо СсылкаНаОбъект надо указывать?
|
|||
12
Фрэнки
10.01.20
✎
13:15
|
(10) вот это еще должно быть обязательно заполнено
|
|||
13
ttu174
10.01.20
✎
14:13
|
(12) что то не помогло, все равно ошибка
{ОбщийМодуль.УправлениеПечатью.Модуль(1658)}: В обработчике печати не был сформирован табличный документ для: ВПФ_ПеремещениеТоваров ВызватьИсключение(ТекстСообщенияОбОшибке); |
|||
14
unenu
10.01.20
✎
14:22
|
(1) за такие простыни отлучить от сети до пенсии
|
|||
15
ttu174
10.01.20
✎
14:33
|
теперь выглядит так
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.5.24"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = "2.4.5.24"; ПараметрыРегистрации.Наименование = "ВПФ Перемещение товаров"; ПараметрыРегистрации.Информация = "ВПФ Перемещение товаров - внешняя печатная форма"; ПараметрыРегистрации.БезопасныйРежим = Ложь; ПараметрыРегистрации.Назначение.Добавить("Документ.ПеремещениеТоваров"); Команда = ПараметрыРегистрации.Команды.Добавить(); Команда.Представление = НСтр("ru = 'Показать ВПФ'"); Команда.Идентификатор = "ВПФ_ПеремещениеТоваров"; Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); Команда.ПоказыватьОповещение = Истина; Команда.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт МассивОбъектов = Новый Соответствие(); МассивОбъектов.Вставить("Документ.ПеремещениеТоваров", МассивОбъектов); ПечатнаяФорма = ПечатьТребованиеНакладнаяНовая(МассивОбъектов, ОбъектыПечати); ////++ //Если ПечатнаяФорма = Неопределено Тогда // КоллекцияПечатныхФорм[0].ТабличныйДокумент = Новый ТабличныйДокумент(); // Сообщить("Для документа " + ЭтотОбъект.СсылкаНаОбъект + " не удалось сформировать печатную форму"); // Возврат; //КонецЕсли; ////-- // //УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФ_ПеремещениеТоваров", "ВПФ Перемещение товаров", ПечатнаяФорма); ИмяМакета = "ВПФ Перемещение товаров"; СинонимМакета = "ВПФ Перемещение товаров - внешняя печатная форма"; ТабличныйДокумент = Новый ТабличныйДокумент; УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, ИмяМакета, СинонимМакета, ТабличныйДокумент); КонецПроцедуры |
|||
16
ttu174
10.01.20
✎
14:35
|
о вижу имя макета нету
|
|||
17
ttu174
10.01.20
✎
14:36
|
ошибки нет теперь, но все равно зависло при выводе из документа
|
|||
18
ttu174
10.01.20
✎
14:37
|
Код вот такой получился:
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.5.24"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = "2.4.5.24"; ПараметрыРегистрации.Наименование = "ВПФ Перемещение товаров"; ПараметрыРегистрации.Информация = "ВПФ Перемещение товаров - внешняя печатная форма"; ПараметрыРегистрации.БезопасныйРежим = Ложь; ПараметрыРегистрации.Назначение.Добавить("Документ.ПеремещениеТоваров"); Команда = ПараметрыРегистрации.Команды.Добавить(); Команда.Представление = НСтр("ru = 'Показать ВПФ'"); Команда.Идентификатор = "ВПФ_ПеремещениеТоваров"; Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); Команда.ПоказыватьОповещение = Истина; Команда.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));//как будет выглядеть описание печ.формы для пользователя Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); //имя макета печ.формы Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); //ВызовСерверногоМетода Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт МассивОбъектов = Новый Соответствие(); МассивОбъектов.Вставить("Документ.ПеремещениеТоваров", МассивОбъектов); ПечатнаяФорма = ПечатьТребованиеНакладнаяНовая(МассивОбъектов, ОбъектыПечати); ////++ //Если ПечатнаяФорма = Неопределено Тогда // КоллекцияПечатныхФорм[0].ТабличныйДокумент = Новый ТабличныйДокумент(); // Сообщить("Для документа " + ЭтотОбъект.СсылкаНаОбъект + " не удалось сформировать печатную форму"); // Возврат; //КонецЕсли; ////-- // //УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФ_ПеремещениеТоваров", "ВПФ Перемещение товаров", ПечатнаяФорма); ИмяМакета = "ВПФ Перемещение товаров"; СинонимМакета = "ВПФ Перемещение товаров - внешняя печатная форма"; ТабличныйДокумент = Новый ТабличныйДокумент; УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ВПФ_ПеремещениеТоваров", "ВПФ Перемещение товаров", ТабличныйДокумент); КонецПроцедуры |
|||
19
mmmarat
10.01.20
✎
14:38
|
(15)
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт МассивОбъектов = Новый Соответствие(); МассивОбъектов.Вставить("Документ.ПеремещениеТоваров", МассивОбъектов); Еще раз внимательно посмотрите что вы пытаетесь сделать с переменной МассивОбъектов, полученной в параметрах процедуры. |
|||
20
mmmarat
10.01.20
✎
14:39
|
(18) И удалите ПолучитьТаблицуКоманд и ДобавитьКоманду. Они уже не нужны.
ТабличныйДокумент = Новый ТабличныйДокумент; А это вам для примера написали. Замените на формирование печатной формы. |
|||
21
Фрэнки
10.01.20
✎
14:51
|
(18) ну можно же в конце концов нагуглить уже готовые и статьи и видео и с картинками и как угодно.
вот одна из статей готовых https://www.1s-up.ru/sozdanie-vneshnej-pechatnoj-formy-v-tipovyh-konfiguracijah-1s-8-3/ |
|||
22
ttu174
10.01.20
✎
14:54
|
да по одной из таких статей и делали форму, а что приводит к зависанию не понятно, помогите понять пожалуйста
|
|||
23
ttu174
10.01.20
✎
15:02
|
я просто первый раз форму делаю, поэтому не кидайте тапками
|
|||
24
Фрэнки
10.01.20
✎
15:14
|
Ну что первый - это понятно. Скорей всего, что без большого опыта в программировании, не только в 1С, но и вообще. Зависание конечно может произойти, т.к. вызываемые процедуры должны содержать корректно заполненные параметры. Вот тот же самый
ТабличныйДокумент = Новый ТабличныйДокумент; И имена макетов... Там по статье пробежись до конца рассмотри, что в этих параметрах должно быть, чтоб сработало без ошибок. |
|||
25
mmmarat
10.01.20
✎
15:17
|
(22)
МассивОбъектов = Новый Соответствие(); МассивОбъектов.Вставить("Документ.ПеремещениеТоваров", МассивОбъектов); Вот это скорее всего приводит к зависанию. |
|||
26
ttu174
10.01.20
✎
15:33
|
(25) а если это убрать, то выходит "Печатная форма не доступна"
|
|||
27
Фрэнки
10.01.20
✎
15:37
|
(26) макет еще нужно указать реальной строкой. Тогда выдаст пустой табличный документ.
|
|||
28
Фрэнки
10.01.20
✎
15:41
|
например, в статье, что выше ссылку указал
Макет = ПолучитьМакет("ПФ_MXL_СчетЗаказ"); Вот эта строка в параметрах Получить макет - это вставленный в саму обработку макет со своим именем (в статье он так назывался) |
|||
29
ttu174
11.01.20
✎
21:42
|
Переписал код , теперь зависания нет, но если подключаю как внешнюю , то из документа выводится просто шаблон, а значения не заполняются, а если через файл-открыть, то заполняются, подскажите пожалуйста в чем может быть причина?
Код теперь такой #Область ПрограммныйИнтерфейс // Возвращает сведения о внешней обработке. Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.2"); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма(); ПараметрыРегистрации.Версия = ЭтотОбъект.Метаданные().Комментарий; ПараметрыРегистрации.Назначение.Добавить("Документ.ПеремещениеТоваров"); КомандаПечати = ПараметрыРегистрации.Команды.Добавить(); КомандаПечати.Идентификатор = "ТребованиеНакладнаяПеремещениеСОстатком"; КомандаПечати.Представление = НСтр("ru = 'Накладная на перемещение'"); КомандаПечати.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); КомандаПечати.ПоказыватьОповещение = Ложь; КомандаПечати.Модификатор = "ПечатьMXL"; Возврат ПараметрыРегистрации; КонецФункции #КонецОбласти //////////////////////////////////////////////////////////////////////////////// #Область Печать Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент = ПечатьТребованиеНакладнаяНовая(МассивОбъектов, ОбъектыПечати); УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ТребованиеНакладнаяПеремещениеСОстатком", НСтр("ru = 'Накладная на перемещение'"), ТабличныйДокумент); //ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм); КонецПроцедуры Процедура ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка) Экспорт Элемент = ОбъектыПечати.НайтиПоЗначению(Ссылка); Если Элемент = Неопределено Тогда ИмяОбласти = "Документ_" + Формат(ОбъектыПечати.Количество() + 1, "ЧН=; ЧГ="); ОбъектыПечати.Добавить(Ссылка, ИмяОбласти); Иначе ИмяОбласти = Элемент.Представление; КонецЕсли; НомерСтрокиОкончание = ТабличныйДокумент.ВысотаТаблицы; ТабличныйДокумент.Область(НомерСтрокиНачало, , НомерСтрокиОкончание, ).Имя = ИмяОбласти; КонецПроцедуры Функция ПечатьТребованиеНакладнаяНовая(МассивОбъектов, ОбъектыПечати) Экспорт УстановитьПривилегированныйРежим(Истина); ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить(); Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда ТоварКод = "Артикул"; Иначе ТоварКод = "Код"; КонецЕсли; ТекстЗапроса = "ВЫБРАТЬ | Номер КАК НомерДокумента, | Дата КАК ДатаДокумента, | Организация, | СкладОтправитель КАК ОтправительПодразделение, | СкладПолучатель КАК ПолучательПодразделение |ИЗ | Документ.ПеремещениеТоваров КАК ПеремещениеТоваров |ГДЕ | ПеремещениеТоваров.Ссылка = &ТекущийДокумент | |"; Макет = ПолучитьМакет("ТребованиеНакладнаяПеремещениеСОстатком"); ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТребованиеНакладнаяПеремещениеСОстатком"; ПервыйДокумент = Истина; Для Каждого Ссылка Из МассивОбъектов Цикл Если Не ПервыйДокумент Тогда ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ПервыйДокумент = Ложь; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка); Запрос.Текст = ТекстЗапроса; Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка); Запрос.УстановитьПараметр("СкладОтправитель", СсылкаНаОбъект.СкладОтправитель); Запрос.УстановитьПараметр("ДатаДляОстатков", КонецМинуты(СсылкаНаОбъект.Дата)); ТекстЗапроса = "ВЫБРАТЬ | ПеремещениеТовары.Номенклатура, | ПеремещениеТовары.Номенклатура.ВидНоменклатуры как ВидНоменклатуры, | ПеремещениеТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование, | ПеремещениеТовары.Номенклатура." + ТоварКод + " КАК ТоварКод, | ПеремещениеТовары.Количество, | ТоварыНаСкладахОстатки.ВНаличииОстаток КАК КоличествоОстаток | |ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТовары | левое СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаДляОстатков,склад=&СкладОтправитель ) КАК ТоварыНаСкладахОстатки | ПО ПеремещениеТовары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура | |ГДЕ | ПеремещениеТовары.Ссылка = &ТекущийДокумент | |УПОРЯДОЧИТЬ ПО | ПеремещениеТовары.НомерСтроки |"; Запрос.Текст = ТекстЗапроса; ВыборкаСтрокТовары = Запрос.Выполнить().Выбрать(); // Выводим общие реквизиты шапки СведенияОбОрганизации = "ООО МОЯ"; ОбластьМакета = Макет.ПолучитьОбласть("Заголовок"); ОбластьМакета.Параметры.Заполнить(Шапка); ОбластьМакета.Параметры.Организация=Шапка.Организация; ОбластьМакета.Параметры.ТекстЗаголовка = "ТРЕБОВАНИЕ-НАКЛАДНАЯ"; ОбластьМакета.Параметры.Отправитель= Шапка.ОтправительПодразделение; ОбластьМакета.Параметры.Получатель= Шапка.ПолучательПодразделение; ТабличныйДокумент.Вывести(ОбластьМакета); НомерСтраницы = 1; Ном = 0; КоличествоВсего = 0; КоличествоСтрок = ВыборкаСтрокТовары.Количество() ; МассивВыводимыхОбластей = Новый Массив; ОбластьПодвал = Макет.ПолучитьОбласть("Шапка"); ТабличныйДокумент.Вывести(ОбластьПодвал); // Выборка товаров Пока ВыборкаСтрокТовары.Следующий() Цикл Если НЕ ЗначениеЗаполнено(ВыборкаСтрокТовары.Номенклатура) Тогда Продолжить; КонецЕсли; Ном = Ном + 1; КоличествоВсего = КоличествоВсего + ВыборкаСтрокТовары.Количество; ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.НомерСтроки = Строка(Ном); ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары); ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрокТовары.ТоварНаименование + " / " + ВыборкаСтрокТовары.Номенклатура.Родитель.Наименование; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; ОбластьМакета = Макет.ПолучитьОбласть("Итого"); ОбластьМакета.Параметры.КоличествоВсего = КоличествоВсего ; ТабличныйДокумент.Вывести(ОбластьМакета); ОбластьПодвал = Макет.ПолучитьОбласть("Подписи"); ТабличныйДокумент.Вывести(ОбластьПодвал); ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Ссылка); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции // ПечатьТребованиеНакладнаяНовая() #КонецОбласти |
|||
30
Фрэнки
11.01.20
✎
22:36
|
(29) Я правильно догадываюсь, что специально под открытие обработки для ее отладки в виде обработки из файла на ее форме установлено поле, в котором нужно вручную выбирать СсылкаНаОбъект ?
А затем, когда идет обработка из подключенной внешней, там используется Для Каждого Ссылка Из МассивОбъектов Цикл и в этом случае я просто не вижу, где устанавливается СсылкаНаОбъект - получается, что после отладки, перед установкой в базу, нужно переприсвоить Для Каждого Ссылка Из МассивОбъектов Цикл СсылкаНаОбъект = Ссылка; з.ы не хватает опыта у Вас в программировании - стиля не хватает. Там где-то на форме был же заполнен МассивОбъектов, так? Тогда в этом модуле не нужно использовать реквизиты обработки, а нужно задавать локальные переменные в контексте модуля, которые не позволят Вам запутаться в том, что откуда и куда берется :-) Внимательней! |
|||
31
ttu174
13.01.20
✎
15:34
|
Вроде получилось!
Не правильно было везде где написал СсылкаНаОбъект. , поменял на Ссылка , все заработало. Спасибо всем большое! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |