8.х Ручной отчет с возможностью редактирования ячеек и расшифровкой

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем lighthead9288, 5 фев 2014.

  1. TopicStarter Overlay
    lighthead9288
    Offline

    lighthead9288

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

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

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

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

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

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

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

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



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

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

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Защита может накладываться на весь лист (по умолчанию так и есть)
  3. TopicStarter Overlay
    lighthead9288
    Offline

    lighthead9288

    Регистрация:
    5 фев 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Специально установил свойство ТабДок.Защита = Ложь в процедуре Сформировать. Всё равно доступа к редактированию нет
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    А права-то хоть полные ?

    Если пункт Таблица - Вид - Редактирование работает ?
  5. TopicStarter Overlay
    lighthead9288
    Offline

    lighthead9288

    Регистрация:
    5 фев 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    С правами всё в порядке
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Редактирование работает ???
  7. TopicStarter Overlay
    lighthead9288
    Offline

    lighthead9288

    Регистрация:
    5 фев 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Да, работает
  8. TopicStarter Overlay
    lighthead9288
    Offline

    lighthead9288

    Регистрация:
    5 фев 2014
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1

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

Поделиться этой страницей