![]() |
![]() |
![]() |
|
Управляемые приложения | ☑ | ||
---|---|---|---|---|
0
din107
28.12.10
✎
20:15
|
Добрый вечер!
Подскажите, пожалуйста. Делаю внешнюю печатную форму для УНФ Написал след код: Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЗапросПоставщику") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ЗапросПоставщику", "Запрос поставщику", СформироватьПечатнуюФорму("ЗапросПоставщику", МассивОбъектов, ОбъектыПечати)); КонецЕсли; КонецПроцедуры // Печать() Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати) // Создаем новый табличный документ для данных расходной накладной ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РТиУ_ЗапросКлиента"; // Получаем макет, доступный для понимания работником склада Макет = ЭтотОбъект.ПолучитьМакет("ЗапросПоставщику"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); МассивАдресов = МассивОбъектов[0].Организация.КонтактнаяИнформация; ОбластьШапка.Параметры.Организация = МассивОбъектов[0].Организация.НаименованиеПолноеИностранное; ...... КонецФункции Как мне сделать, чтобы до момента формирования печатной формы можно бы было вывести список, где пользователь мог бы выбрать конкретное значение, а дальше уже из того, что пользователь выбрал формировалась бы печатная форма. Суть вопроса: Как сделать форму списка??? |
|||
1
Dem1urg
28.12.10
✎
20:18
|
УправляемаяФорма (ManagedForm)
ВыбратьИзСписка (ChooseFromList) Синтаксис: ВыбратьИзСписка(<СписокЗначений>, <ЭлементФормы>, <НачальноеЗначение>) Параметры: <СписокЗначений> (обязательный) Тип: СписокЗначений. Список значений, содержащий значения, из которых будет осуществляться выбор. <ЭлементФормы> (необязательный) Тип: ГруппаФормы; ТаблицаФормы; ПолеФормы; КнопкаФормы. Элемент формы, около которого будет открыт выпадающий список. Для некоторых элементов выпадающий список будет показан около активной области. Если не указан, то будет выбран активный элемент формы. Примечание: В качестве этого параметра нельзя указывать кнопки, расположенные в командной панели или подменю. <НачальноеЗначение> (необязательный) Тип: Число; ЭлементСпискаЗначений. Задает начальный элемент, который будет активным при открытии списка. Если параметр не указан, в списке не будет выбрано начальное значение. Возвращаемое значение: Тип: ЭлементСпискаЗначений; Неопределено. Выбранный элемент списка или Неопределено, если пользователь отказался от выбора. Описание: Вызывает выпадающий список для выбора значения. Набор значений для выбора задается списком значений. Выпадающий список будет расположен около переданного элемента формы или около его активной области. |
|||
2
din107
28.12.10
✎
20:22
|
Пробовал, возникает след ошибка: Процедура или функция с указанным именем не определена (ВыбратьИзСписка)
|
|||
3
Dem1urg
28.12.10
✎
20:30
|
Форма точно управляемая?
Телепаты в отпуске, код в студию. |
|||
4
din107
28.12.10
✎
22:10
|
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати)
Поставщики = ПолучитьЗначениеЗапаса(МассивОбъектов[0]); СписокПоставщиков = Новый СписокЗначений; Для каждого СтрокаПоставщики Из Поставщики Цикл СписокПоставщиков.Добавить(СтрокаПоставщики.НоменклатураПоставщик); КонецЦикла; Вид = ВыбратьИзСписка(СписокПоставщиков); // Создаем новый табличный документ для данных расходной накладной ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РТиУ_ЗапросКлиента"; // Получаем макет, доступный для понимания работником склада Макет = ЭтотОбъект.ПолучитьМакет("ЗапросПоставщику"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); МассивАдресов = МассивОбъектов[0].Организация.КонтактнаяИнформация; ОбластьШапка.Параметры.Организация = МассивОбъектов[0].Организация.НаименованиеПолноеИностранное; Для каждого ЗначенияАдреса Из МассивАдресов Цикл Если ЗначенияАдреса.Вид.Наименование = "Иностранный адрес" Тогда ОбластьШапка.Параметры.Адрес = ЗначенияАдреса.Представление; КонецЕсли; Если ЗначенияАдреса.Вид.Наименование = "Телефон" Тогда ОбластьШапка.Параметры.Тел = "Тел. " + ЗначенияАдреса.Представление; КонецЕсли; Если ЗначенияАдреса.Вид.Наименование = "Факс" Тогда ОбластьШапка.Параметры.факс = "Факс. " + ЗначенияАдреса.Представление; КонецЕсли; Если ЗначенияАдреса.Вид.Наименование = "Email" Тогда ОбластьШапка.Параметры.e_mail = "e-mail " + ЗначенияАдреса.Представление; КонецЕсли; Если ЗначенияАдреса.Вид.Наименование = "Сайт Организации" Тогда ОбластьШапка.Параметры.сайт = ЗначенияАдреса.Представление; КонецЕсли; КонецЦикла; ТабДок.Вывести(ОбластьШапка); ОбластьРеквизитыШапки = Макет.ПолучитьОбласть("РеквизитыШапки"); ОбластьРеквизитыШапки.Параметры.Проект = МассивОбъектов[0].Номер; ОбластьРеквизитыШапки.Параметры.Дата = Формат(Дата(МассивОбъектов[0].Дата), "ДФ=dd.MM.yyyy"); ДатаОтгрузки = Дата(1,1,1); Для каждого СтрокаЗапаса Из МассивОбъектов[0].Запасы Цикл Если ДатаОтгрузки < СтрокаЗапаса.ДатаОтгрузки Тогда ДатаОтгрузки = СтрокаЗапаса.ДатаОтгрузки; КонецЕсли; КонецЦикла; ОбластьРеквизитыШапки.Параметры.Неделя = "Woche: KW " + Формат(Год(ДатаОтгрузки),"ЧГ=0") +" " + НеделяГода(ДатаОтгрузки); ОбластьРеквизитыШапки.Параметры.ДатаОтгрузки = "Datum: " + Формат(ДатаОтгрузки, "ДФ=dd.MM.yyyy"); ОбластьРеквизитыШапки.Параметры.ИностранныйКонтрагент = МассивОбъектов[0].Запасы[0].Поставщик; ТабДок.Вывести(ОбластьРеквизитыШапки); ОбластьШапкаТЧ = Макет.ПолучитьОбласть("ШапкаТЧ"); ТабДок.Вывести(ОбластьШапкаТЧ); ОбластьПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока"); ТабДок.Вывести(ОбластьПустаяСтрока); ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура"); Для каждого СтрокаЗапаса Из МассивОбъектов[0].Запасы Цикл //Если СтрокаЗапаса.ЕдиницаИзмерения = НЕОПРЕДЕЛЕНО Тогда // Сообщить("Для строки №" + СтрокаЗапаса.НомерСтроки + " не заполнено поле """"Единица измерения"""); // Возврат; //КонецЕсли; ОбластьНоменклатура.Параметры.Поз = СтрокаЗапаса.НомерСтроки; ОбластьНоменклатура.Параметры.Наименование = СтрокаЗапаса.Номенклатура.НаименованиеИностранное; ОбластьНоменклатура.Параметры.Кол = Строка(СтрокаЗапаса.Количество) +" " +Строка(СтрокаЗапаса.Номенклатура.ЕдиницаИзмерения.МеждународноеСокращение); Если НЕ ТабДок.ПроверитьВывод(ОбластьНоменклатура) Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); ТабДок.Вывести(ОбластьШапкаТЧ); КонецЕсли; ТабДок.Вывести(ОбластьНоменклатура); КонецЦикла; ОбластьИтого = Макет.ПолучитьОбласть("Итого"); ОбластьИтого.Параметры.ИтогСумма = МассивОбъектов[0].Запасы.Итог("Количество"); ТабДок.Вывести(ОбластьИтого); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьПодвал.Параметры.МенеджерПроекта = ""; ТабДок.Вывести(ОбластьПодвал); ТабДок.АвтоМасштаб = Истина; ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("Шапка"); //// Добавляем нижний колонтитул для вывода на печать //ТабДок.НижнийКолонтитул.Выводить = Истина; //ТабДок.НижнийКолонтитул.НачальнаяСтраница = 1; //ТабДок.НижнийКолонтитул.ВертикальноеПоложение = ВертикальноеПоложение.Центр; //ТабДок.НижнийКолонтитул.ТекстСправа = "[&НомерСтраницы] из [&СтраницВсего] стр."; // Возврат ТабДок; КонецФункции // Создать Табличный Документ Печать Расходной Накладной |
|||
5
din107
29.12.10
✎
10:13
|
ап?
|
|||
6
din107
29.12.10
✎
11:12
|
ап
|
|||
7
din107
29.12.10
✎
12:42
|
ап
|
|||
8
Dem1urg
29.12.10
✎
12:53
|
(4) Функция где выполняется? Директива компиляции у неё какая?
|
|||
9
din107
29.12.10
✎
14:36
|
(8) у неё сейчас ничего не стоит
|
|||
10
Ц_У
29.12.10
✎
14:39
|
(9) Значит &НаСервере
|
|||
11
din107
29.12.10
✎
14:40
|
(10) Ну, согласен
|
|||
12
Origin
29.12.10
✎
14:44
|
тебе намекают, что на сервере не видно этой функции она интерфейсная
|
|||
13
din107
29.12.10
✎
14:46
|
Как же тогда лучше поступить?
|
|||
14
Dem1urg
29.12.10
✎
15:02
|
(13) Написать перед объявлением функции строчку &НаКлиенте
|
|||
15
din107
29.12.10
✎
15:40
|
Написал:
&НаКлиенте Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати) Поставщики = ПолучитьЗначениеЗапаса(МассивОбъектов[0]); СписокПоставщиков = Новый СписокЗначений; Для каждого СтрокаПоставщики Из Поставщики Цикл СписокПоставщиков.Добавить(СтрокаПоставщики.НоменклатураПоставщик); КонецЦикла; ...... Только теперь выскакивает ошибка ВнешняяОбработка.ЗапросПоставщику.МодульОбъекта(72,120)}: Процедура или функция с указанным именем не определена (СформироватьПечатнуюФорму) УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ЗапросПоставщику", "Запрос поставщику", <<?>>СформироватьПечатнуюФорму("ЗапросПоставщику", МассивОбъектов, ОбъектыПечати)); (Проверка: Сервер) |
|||
16
Dem1urg
29.12.10
✎
22:02
|
Читать документацию и учить матчасть не предлагать?
Делай &НаСервере Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати) А там где идет вызов этой функции (УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию) перед вызовом на клиенте сделай выбор из списка и результат выбора передай в функцию |
|||
17
din107
29.12.10
✎
23:28
|
Я попробовал сделать вот так:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Поставщик = ПолучитьЗначениеПоставщика(МассивОбъектов[0]); Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЗапросПоставщику") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ЗапросПоставщику", "Запрос поставщику", СформироватьПечатнуюФорму("ЗапросПоставщику", МассивОбъектов, ОбъектыПечати)); КонецЕсли; КонецПроцедуры // Печать() &НаКлиенте Функция ПолучитьЗначениеПоставщика(ЗаказПокупателя) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказПокупателяЗапасы.Номенклатура.Поставщик КАК НоменклатураПоставщик |ИЗ | Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы |ГДЕ | ЗаказПокупателяЗапасы.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", ЗаказПокупателя); //тЗапасы = ТЧ.Запасы.Выгрузить(); //Запрос.УстановитьПараметр("ТЗВрем",тЗапасы); Поставщики = Запрос.Выполнить().Выгрузить(); СписокПоставщиков = Новый СписокЗначений; Для каждого СтрокаПоставщики Из Поставщики Цикл СписокПоставщиков.Добавить(СтрокаПоставщики.НоменклатураПоставщик); КонецЦикла; Вид = ВыбратьИзСписка(СписокПоставщиков); КонецФункции В рез-те вылетает ошибка, что {ВнешняяОбработка.ЗапросПоставщику.МодульОбъекта(86,14)}: Процедура или функция с указанным именем не определена (ПолучитьЗначениеЗапаса) Поставщик = <<?>>ПолучитьЗначениеЗапаса(МассивОбъектов[0]); (Проверка: Сервер) из-зи того, чт на сервере он не может найти указанную функцию |
|||
18
din107
29.12.10
✎
23:31
|
+ (17)
а точнее вот такая: {ВнешняяОбработка.ЗапросПоставщику.МодульОбъекта(86,14)}: Процедура или функция с указанным именем не определена (ПолучитьЗначениеПоставщика) Поставщик = <<?>>ПолучитьЗначениеПоставщика(МассивОбъектов[0]); (Проверка: Сервер) |
|||
19
Dem1urg
30.12.10
✎
10:05
|
Вызов Сервера из Клиента возможен. Обратный - нет.
|
|||
20
Mitriy
30.12.10
✎
10:21
|
мля... и тут все пьяные...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |