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

Редактирование одной ячейки табличного документа в отчете, созданном вручную

Автор lighthead9288, 05 фев 2014, 15:46

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

lighthead9288

Здравствуйте, уважаемые эксперты! Передо мной стоит следующая задача: сформировать отчет с предоставлением пользователю возможности внесения в него ручных изменений(всего в одной ячейке) и с возможностью расшифровки значений некоторых столбцов
Что сделано:
1. Макет с областями "Шапка" и "Строка".
2. Заданы параметры в области "Строка", в которые будут выводиться результаты запроса
3. У столбца, для которого нужно обеспечить возможность редактирования, установлено свойство "Защита = Ложь". У остальных ячеек Защита=Истина
4. На форме отчета создан ТабличныйДокумент, куда и будет выводиться отчёт.
5. Свойство ТолькоПросмотр табличного документа установлено в значение "Истина".
6. Сформирован отчет следующим кодом:
&НаКлиенте
Процедура Сформировать(Команда)
// Вставить содержимое обработчика.

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

КонецПроцедуры

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

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

Пока Результат.Следующий() > 0 Цикл
Область = Макет.ПолучитьОбласть("Строка");
Область.Защита = Ложь;
Область.параметры.Наименование = Результат.наименованиеТовара;
Область.параметры.ЕдИзмер = Результат.Единица;
Область.параметры.УчетнаяЦена = Результат.УчетнаяЦена;
Область.Параметры.УчетныйОстаток = Результат.УчетныйОстаток;
Область.Параметры.РасшифровкаТовара = Результат.Ссылка;
Область.параметры.РасшифровкаЕдИзмер = Результат.СсылкаЕдиницаИзмерения;

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


7. Указаны параметры расшифровки:
Область.Параметры.РасшифровкаТовара = Результат.Ссылка;
   Область.параметры.РасшифровкаЕдИзмер = Результат.СсылкаЕдиницаИзмерения;



Результат: Расшифровка прекрасно работает, а ячейка не редактируется, хотя и её свойство Защита = Ложь.
В чём проблема? Играет ли какую-то роль свойство "Защита"?
Что интересно, свойство Табличного документа ТолькоПросмотр не изменяется программно. Меняется, если только в конфигураторе галку поставить/убрать. А программно - никак (((

Помогите, пожалуйста. Заранее спасибо.

MuI_I_Ika

Если установлено только просмотр, то оно применяется для всего документа не зависимо от проставленных защит. Так что надо разрешить изменять таблицу.

lighthead9288

Цитата: MuI_I_Ika от 05 фев 2014, 19:26
Если установлено только просмотр, то оно применяется для всего документа не зависимо от проставленных защит. Так что надо разрешить изменять таблицу.
Ясно. Но, если свойство табличного документа ТолькоПросмотр будет установлено в Ложь, то тогда не будет работать расшифровка ячеек(по крайней мере, об этом говорит Синтакс-помощник). Можно ли как-то обойти это? Возможна ли расшифровка при выключенном свойстве ТолькоПросмотр?
Добавлено: 06 фев 2014, 02:08


Цитата: lighthead9288 от 05 фев 2014, 23:41
Цитата: MuI_I_Ika от 05 фев 2014, 19:26
Если установлено только просмотр, то оно применяется для всего документа не зависимо от проставленных защит. Так что надо разрешить изменять таблицу.
Ясно. Но, если свойство табличного документа ТолькоПросмотр будет установлено в Ложь, то тогда не будет работать расшифровка ячеек(по крайней мере, об этом говорит Синтакс-помощник). Можно ли как-то обойти это? Возможна ли расшифровка при выключенном свойстве ТолькоПросмотр?



Спасибо большое, разобрался!) Как Вы правильно заметили свойство ТолькоПросмотр должно быть Ложь, а чтобы ещё и расшифровка работала, свойство "Защита" табличного документа должно быть установлено в Истину

Теги:

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

Рейтинг@Mail.ru

Поиск