8.х График в документе

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

  1. TopicStarter Overlay
    Gulnaz
    Offline

    Gulnaz Опытный в 1С

    Регистрация:
    20 сен 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! Бухгалтерия предприятия 8.2. Создаю нетиповой документ План производства.
    Табличную часть необходимо отобразить так:
    Номенклатура 01.08.2016 02.08.2016 03.08.2016
    НоменклатураА Количество1 Количество2
    НоменклатураБ Количество2 Количество3

    При этом в тексте шапки колонок должны отображаться рабочие даты выбранного в шапке документа месяца, но данные этих полей числовые (количество -сколько произвести). Создаю реквизиты:
    upload_2016-8-18_17-2-1.png

    upload_2016-8-18_17-2-42.png

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

    Как перебрать колонки и присвоить наименованию рабочие дни календаря?

    Вложения:

  2. TopicStarter Overlay
    Gulnaz
    Offline

    Gulnaz Опытный в 1С

    Регистрация:
    20 сен 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Стандартный вариант: Номенклатура, Количество, Период пользователей не устраивает, т.к. каждая номенклатура производится несколько в месяц, строк монго будет
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Начнем с того, что Выборка вам не подойдет, в силу того, что это последовательный механизм получения данных и перебрать колонки по индексу она не позволяет, нужна таблица значений.
  4. TopicStarter Overlay
    Gulnaz
    Offline

    Gulnaz Опытный в 1С

    Регистрация:
    20 сен 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Хорошо. Мне нужно чтобы при задании месяца Август текст шапки поля "Количество 1 день" был "01.08.2016" (т.е.первый рабочий день в месяце), Количество 1 день - "02.08.2016", ...,
    Количество 6 день - "08.08.2016" и так далее. Какие есть варианты?
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Количество дней в месяце вам известно, сделайте счетчик и выводите в соотвествующую колонку.
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Посмотрите как это в ЗУПе в документе табель делается
    там есть вот такая процедурка

    Код:
    Процедура ОформитьЗаголовкиДнейМесяца()
       
        // Устанавливаем заголовки дней месяца
        БледноКрасныйЦвет = Новый Цвет(255, 176, 176);
        СерыйЦвет = Новый Цвет(234, 229, 216);
       
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("НачалоМесяца",НачалоМесяца(ПериодРегистрации));
        Запрос.УстановитьПараметр("КонецМесяца",КонецМесяца(ПериодРегистрации));
        Запрос.Текст =
        "ВЫБРАТЬ
        |    РегламентированныйПроизводственныйКалендарь.ВидДня,
        |    ДЕНЬНЕДЕЛИ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК ДеньНедели
        |ИЗ
        |    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
        |ГДЕ
        |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоМесяца И &КонецМесяца
        |
        |УПОРЯДОЧИТЬ ПО
        |    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря";
       
        Результат = Запрос.Выполнить();
        Если Результат.Пустой() Тогда
            ДеньНеделиМесяца = ДеньНедели(НачалоМесяца(ПериодРегистрации));
            Для ДеньМесяца = 1 по День(КонецМесяца(ПериодРегистрации)) Цикл
               
                Колонка = ЭлементыФормы.ОтработанноеВремя.Колонки["День"+Строка(ДеньМесяца)];
               
                Колонка.ТекстШапки = Строка(ДеньМесяца) + Символы.ПС + ДниНедели[ДеньНеделиМесяца];
                Если ДеньНеделиМесяца = 6 Или ДеньНеделиМесяца = 7 Тогда
                    Колонка.ЦветТекстаШапки = ЦветаСтиля.ЦветОсобогоТекста;
                    Колонка.ШрифтШапки = ШрифтыСтиля.ШрифтВажнойНадписи;
                Иначе
                    Колонка.ЦветТекстаШапки = Новый Цвет();   
                    Колонка.ШрифтШапки = Новый Шрифт();
                КонецЕсли;
               
                ДеньНеделиМесяца = (ДеньНеделиМесяца%7)+1;
            КонецЦикла;
        Иначе
            Данные = Результат.Выгрузить();
            ЦветВыходного            = Новый Цвет(153, 51,   0); // Темно-красный
            ЦветПредпразничногоДня = Новый Цвет(  0,  0, 186); // Темно-синий
            Для ДеньМесяца = 1 по День(КонецМесяца(ПериодРегистрации)) Цикл
               
                Колонка = ЭлементыФормы.ОтработанноеВремя.Колонки["День"+Строка(ДеньМесяца)];
               
                Колонка.ТекстШапки = Строка(ДеньМесяца) + Символы.ПС + ДниНедели[Данные[ДеньМесяца - 1].ДеньНедели];
               
                ВидДня = Данные[ДеньМесяца - 1].ВидДня;
                Если ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник Тогда
                    Колонка.ЦветТекстаШапки = ЦветВыходного;
                    Колонка.ШрифтШапки = ШрифтыСтиля.ШрифтВажнойНадписи;
                ИначеЕсли ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье Тогда
                    Колонка.ЦветТекстаШапки = ЦветВыходного;
                    Колонка.ШрифтШапки = ШрифтыСтиля.ШрифтВажнойНадписи;
                ИначеЕсли ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота Тогда
                    Колонка.ЦветТекстаШапки = ЦветВыходного;
                    Колонка.ШрифтШапки = ШрифтыСтиля.ШрифтВажнойНадписи;
                ИначеЕсли ВидДня = Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный Тогда
                    Колонка.ЦветТекстаШапки = ЦветПредпразничногоДня;
                    Колонка.ШрифтШапки = ШрифтыСтиля.ШрифтВажнойНадписи;
                Иначе
                    Колонка.ЦветТекстаШапки = Новый Цвет();   
                    Колонка.ШрифтШапки = Новый Шрифт();
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
       
    КонецПроцедуры // ОформитьЗаголовкиДнейМесяца()
    
    Gulnaz нравится это.
  7. TopicStarter Overlay
    Gulnaz
    Offline

    Gulnaz Опытный в 1С

    Регистрация:
    20 сен 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Спасибо! ЗУП помог!

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