8.х Програмное управление форматом ячейки табличного документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем DmitryS, 6 ноя 2007.

  1. TopicStarter Overlay
    DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Как при выводе на печать документа (например накладной), програмно изменять формат вывода конкретной ячейки (например точность цены)?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Собственно, установив формат этой ячейки :)
    Либо выводя туда отформатированный текст.
  3. TopicStarter Overlay
    DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Проблема в том, как програмно установить формат для ячейки.

    например вот так не проходит
    ОбластьДанных.Области.Цена.Формат = "ЧЦ=15; ЧДЦ=6";
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ну, я такой проблемой не задавался, ибо просто всегда выводил сразу в нужном мне формате.
    Предполагаю, что у тебя не работает, т.к. нужно формат (имхо как) задавать ДО вывода в эту область, ДО показа и вообще тоска с обработкой ячеек в таб доке...

    ЗЫ. Рекомендую просто выводить в нужном формате.
  5. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Из помощи:

    ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)
    Формат (Format)
    Использование:
    Чтение и запись.
    Описание:
    Тип: Строка. Содержит строку, задающую формат вывода данных в ячейках таблицы.
    См. также:
    Встроенные функции языка, метод Формат
  6. TopicStarter Overlay
    DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    вот именно "Чтение и запись", "Чтение" на ура, а вот "Запись" не тут то было.
    Может это глюк? или гдето нада какую галочку поставить/снять. Пробовал снимать защиту в макете на ячейке, не прокатило.
  7. TopicStarter Overlay
    DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Формат задаю как только получаю область из макета, перед заполнением параметров.
    Вобщем решил не напрягать себя глупостями, записываю в параметры уже с нужным мне форматом, но факт остается фактом, написано "Чтение и запись", а чет не записывает.
  8. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    А покажи код, которым ты пытался это сделать?
  9. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Область как получаете? Есть метод такой ПолучитьОбласть(), мне кажется (по приведенному коду) что вы Ячейке присваиваете.
  10. TopicStarter Overlay
    DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    ТочностьЦены = 6;
    ....

    Макет = ПолучитьМакет("Накладная");
    ОбластьДанных = Макет.ПолучитьОбласть("Строка|Данные");
    ОбластьДанных.Области.Цена.Формат = "ЧЦ=15; ЧДЦ="+ТочностьЦены;

    Для каждого ВыборкаСтрокТовары из ЗапросТовары Цикл

    ОбластьДанных.Параметры.Заполнить(ВыборкаСтрокТовары);

    ТабДокумент.Вывести(ОбластьДанных);

    КонецЦикла;
    ...
  11. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    0. А присвоить в макете точность никак нельзя?
    1. Попробуйте разбить строку на более мелкие секции, чтобы область были вида "Строка|Цена" и присваивать:
    ОбластьЦена = Макет.ПолучитьОбласть("Строка|Цена");
    ОбластьЦена.Формат = "ЧЦ=15; ЧДЦ="+Строка(ТочностьЦены);
  12. TopicStarter Overlay
    DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    нет, не хочет.

    ОбластьЦена = Макет.ПолучитьОбласть("Строка|Цена");
    ОбластьЦена.ТекущаяОбласть.Формат = "ЧЦ=15; ЧДЦ="+Строка(ТочностьЦены);
  13. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    И еще, я тут подумал, область вы не так получаете, точно.

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

    1. В макете создать разные "Строки", например "Строка1", "Строка2" - простым копированием и изменением точности в формате цены
    2. При выводе строки анализировать точность и выводить нужную строку макета типа Макет.ПолучитьОбласть("Строка"+Строка(ТочностьЦены)+"|Данные");
  14. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Попробуй изменить сам макет, т.е. при получении макета применяй
    Код:
    ОбластьДанных = Макет.Область(...);
    
    устанавливай нужный формат, и потом же применяй ПолучитьОбласть(....)

    ЗЫ. Такой подход имеет одну очень забавную фичу - но это мой секрет :)

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