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

(печать)

Автор GanG031, 02 июн 2016, 10:47

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

GanG031

Доброго времени суток, уважаемые! Суть в следующем: переписываю обработку с обычных форм под управляемые. Конфигурация БП 2.0 на БП 3.0 (Обе дописанные).
Вот код одной процедуры в обычном приложении:
Процедура Печать(ПараметрПечати = "")
   РезультирующийДокумент = Новый ТабличныйДокумент;
   Если ЗначениеЗаполнено(ДатаОсмотра) = Ложь Тогда
      Сообщить("Дата осмотра не указана...");
      Возврат;
   КонецЕсли;
   //Таб = Новый ТабличныйДокумент;
   Макет = ПолучитьМакет("Макет");
   ОбластьПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока");
   ДокументПечати = ЭлементыФормы.ТаблицаДокументов.ТекущиеДанные;
   Если ДокументПечати = Неопределено Тогда
      Возврат;
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(ПараметрПечати) Тогда
      СписокДокументовПечати = ТаблицаДокументов.СкопироватьКолонки();
      ЗаполнитьЗначенияСвойств(СписокДокументовПечати.Добавить(), ДокументПечати);

   Иначе
      СписокДокументовПечати = ТаблицаДокументов.Скопировать();
   КонецЕсли;
   
   
   Для Каждого ДокументПечати Из СписокДокументовПечати Цикл
      Таб = Новый ТабличныйДокумент;
      // Заполнение шапки
      ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
      ПарШапки = ОбластьШапка.Параметры;
      ПарШапки.ДатаСоставления = Формат(ДатаСоставления, "ДЛФ=DD");
      ПарШапки.Организация = Организация.ПолноеНаименование();
      ПарШапки.СтруктурноеПодразделение = СтруктурноеПодразделение;
      ПарШапки.Модель = ДокументПечати.ТС.Наименование;
      ТаблицаОтветственных = РегистрыСведений.ОтветственныеЛица.СрезПоследних(, новый Структура ("СтруктурнаяЕдиница", Склад));
      Если ТаблицаОтветственных.Количество() = 0  Тогда
         Сообщить("Складу не назначен ответственный...");
      ...


ТаблицаДокументов это реквизит формы, который имеет тип таблица значений. Проблема возникла вот в чем: Выделил зеленым цветом. Как получить список документов для печати в управляемой форме?
делал вот так:
&НаКлиенте
Процедура ПечатьТекущегоДокументаНаКлиенте1(Команда)
   ПараметрПечати = "";
   ДокументПечати = Элементы.ТаблицаДокументов.ТекущиеДанные;
   
   Если ДокументПечати = Неопределено Тогда
      Возврат;
   КонецЕсли;

ПолучитьСписокДокументовПечати(ПараметрПечати = "",ДокументПечати);



Функция ПолучитьСписокДокументовПечати(ПараметрПечати = "",ДокументПечати)
   Если Не ЗначениеЗаполнено(ПараметрПечати) Тогда

        СписокДокументовПечати = РеквизитФормыВЗначение("ТаблицаДокументов" , ТИП("ТаблицаЗначений"));
      СписокДокументовПечати = ЗначениеВРеквизитФормы(СписокДокументовПечати, "ТаблицаДокументов");
      ЗаполнитьЗначенияСвойств(СписокДокументовПечати.Добавить(), ДокументПечати);
   Иначе
      СписокДокументовПечати = ТаблицаДокументов.Скопировать();
КонецЕсли;
       Возврат     СписокДокументовПечати;

КонецФункции // ПолучитьСписокДокументовПечати()


Но ругается на вот что: Ошибка отображения типов. Отсутствует отображение для данныеформыколлекция.
Подскажите, как сделать правильней? заранее спасибо!

Rasty

вот тут ошибка
ДокументПечати = ЭлементыФормы.ТаблицаДокументов.ТекущиеДанные;
передавайте ссылку на документ а не коллекцию формы
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

GanG031

Цитата: Rasty от 02 июн 2016, 10:50
вот тут ошибка
ДокументПечати = ЭлементыФормы.ТаблицаДокументов.ТекущиеДанные;
передавайте ссылку на документ а не коллекцию формы

Там просто будет не один документ. Правильнее бы было назвать эту переменную "ДокументыПечати". Или это не имеет значения?

Rasty

в уф еще есть ВыделенныеСтроки, как называть это вам решать
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

GanG031

Цитата: Rasty от 02 июн 2016, 10:50
вот тут ошибка
ДокументПечати = ЭлементыФормы.ТаблицаДокументов.ТекущиеДанные;
передавайте ссылку на документ а не коллекцию формы

В обычном приложениии эта переменная имеет тип "Строка таблицы значений". Не понятно, зачем передавать ссылку на документ?

Rasty

так вы же делаете для уф, если не ссылку на документ то что передавать в документпечати?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

GanG031

Цитата: Rasty от 02 июн 2016, 11:06
так вы же делаете для уф, если не ссылку на документ то что передавать в документпечати?

а как подскажите передать эту ссылку? Откуда ее взять?

Rasty

Цитата: Rasty от 02 июн 2016, 10:58в уф еще есть ВыделенныеСтроки


Добавлено: 02 июн 2016, 11:10


смотрите что в них, смотрите что в элементе, находите ссылку
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

GanG031

Попробовал сделать так: &НаКлиенте
Процедура ПечатьТекущегоДокументаНаКлиенте1(Команда)
   ПараметрПечати = "";
   ДокументПечати = Элементы.ТаблицаДокументов.ВыделенныеСтроки;
   
   Если ДокументПечати = Неопределено Тогда
      Возврат;
   КонецЕсли;

ПолучитьСписокДокументовПечати(ПараметрПечати = "");
ПечатьТекущегоДокумента(ПараметрПечати = "", ИсточникСтрок);

...

Процедура ПечатьТекущегоДокумента(ПараметрПечати = "",ИсточникСтрок)
   
   
   Если Не ЗначениеЗаполнено(ПараметрПечати) Тогда
      СписокДокументовПечати = Элементы.ТаблицаДокументов;
      
      ИсточникСтрок =   ПолучитьСписокДокументовПечати(ПараметрПечати = "") ;

      ЗаполнитьЗначенияСвойств(СписокДокументовПечати.Добавить(), ИсточникСтрок);
   Иначе
      СписокДокументовПечати = ТаблицаДокументов.Скопировать();
   КонецЕсли;
...




Функция ПолучитьСписокДокументовПечати(ПараметрПечати = "")
   МассивИдентификаторовСтрок = Элементы.ТаблицаДокументов.ВыделенныеСтроки;
      Для каждого ИдентификаторСтроки Из МассивИдентификаторовСтрок Цикл
      
         МассивСтрокДляПечати = Новый Массив;
         МассивСтрокДляПечати.Добавить(ЭтотОбъект.ТаблицаДокументов.НайтиПоИдентификатору(ИдентификаторСтроки));
      
      КонецЦикла;
       ИсточникСтрок =  МассивСтрокДляПечати;
       Возврат ИсточникСтрок;


КонецФункции // ПолучитьСписокДокументовПечати()


Но все равно что то не так....

Rasty

дайте угадаю, такая же ошибка?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Теги:

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

Рейтинг@Mail.ru

Поиск