8.х Печатная форма

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Мариночка, 27 фев 2014.

  1. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Добрый день! У меня проблемы с печатной формой... Параметры сотрудник и должность должны выходить в одной строке, а они смещаются. То есть список имен нормально выводиться, а должности не рядом с именем, а внизу....
    Код:
    Функция ПечатьАктаУстановки() Экспорт
        Макет       = ПолучитьМакет("АктУстановки");
        ТабДокумент = Новый ТабличныйДокумент;
        ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктУстановки";
       
        Шапка         = Макет.ПолучитьОбласть("Шапка");
       
        Комиссия3      = Макет.ПолучитьОбласть("Комиссия3");
       
        ШапкаТаблицы  = Макет.ПолучитьОбласть("ШапкаТаблицы");
        СтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаблицы");
        Подвал        = Макет.ПолучитьОбласть("Подвал");
        Комиссия2     = Макет.ПолучитьОбласть("Комиссия2");
        /// Мое
        Подвал2       = Макет.ПолучитьОбласть("Подвал2");
    ///   
    //    Шапка.Параметры.ПолноеНаименованиеОрганизации = Организация.НаименованиеПолное;
    //    Шапка.Параметры.Организация = Организация;
        Шапка.Параметры.Номер = ОбщегоНазначения.ПолучитьНомерНаПечать(Ссылка, Номер);
        Шапка.Параметры.ДатаДок = Формат(Дата, "ДФ=dd.MM.yyyy");
        //Шапка.Параметры.МестоХранения = МестоХранения;
        Шапка.Параметры.Подразделение = Подразделение;
        Шапка.Параметры.СамДокумент = Ссылка;
        //Шапка.Параметры.ДатаИВремяПечати = ТекущаяДата();
       
       
        ТабДокумент.Вывести(Шапка);
       
        ЧленыКомиссииНайдены = Ложь;
        Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Организация, МестоХранения.Подразделение);
        Если Комиссия <> Неопределено Тогда
            ЧленыКомиссииНайдены = Истина;
        Иначе
            Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Организация, Справочники.Подразделения.ПустаяСсылка());
            Если Комиссия <> Неопределено Тогда
                ЧленыКомиссииНайдены = Истина;
            Иначе
                Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Справочники.Организации.ПустаяСсылка(), Справочники.Подразделения.ПустаяСсылка());
                Если Комиссия <> Неопределено Тогда
                    ЧленыКомиссииНайдены = Истина;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
       
        Если ЧленыКомиссииНайдены Тогда
            Индекс = 1;
            Для Каждого Член Из Комиссия Цикл
    //            Комиссия2.Параметры.НомерЧел = Индекс;
                Комиссия3.Параметры.Сотрудник = Член;
                ТабДокумент.Вывести(Комиссия3);
                Индекс = Индекс + 1;
            КонецЦикла;
        Иначе
            Для Индекс = 1 По 3 Цикл
                //Комиссия2.Параметры.НомерЧел = Индекс;
                Комиссия3.Параметры.Сотрудник = "                                 ";
                ТабДокумент.Вывести(Комиссия3);           
            КонецЦикла;
        КонецЕсли;
    /////////////////////////////////////////////////////////////////////////////////////////////   
       
    ЧленыКомиссииНайдены = Ложь;
        Комиссия = ОбщегоНазначения.ПолучитьДолжностьЧленовКомиссии(Дата, Организация, МестоХранения.Подразделение);
        Если Комиссия <> Неопределено Тогда
            ЧленыКомиссииНайдены = Истина;
        Иначе
            Комиссия = ОбщегоНазначения.ПолучитьДолжностьЧленовКомиссии(Дата, Организация, Справочники.Подразделения.ПустаяСсылка());
            Если Комиссия <> Неопределено Тогда
                ЧленыКомиссииНайдены = Истина;
            Иначе
                Комиссия = ОбщегоНазначения.ПолучитьДолжностьЧленовКомиссии(Дата, Справочники.Организации.ПустаяСсылка(), Справочники.Подразделения.ПустаяСсылка());
                Если Комиссия <> Неопределено Тогда
                    ЧленыКомиссииНайдены = Истина;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
       
        Если ЧленыКомиссииНайдены Тогда
            Индекс = 1;
            Для Каждого Член1 Из Комиссия Цикл
    //            Комиссия2.Параметры.НомерЧел = Индекс;
                Комиссия3.Параметры.Должность = Член1;
                ТабДокумент.Вывести(Комиссия3);
                Индекс = Индекс + 1;
            КонецЦикла;
        Иначе
            Для Индекс = 1 По 3 Цикл
                //Комиссия2.Параметры.НомерЧел = Индекс;
                Комиссия3.Параметры.Должность = "                                 ";
                ТабДокумент.Вывести(Комиссия3);           
            КонецЦикла;
        КонецЕсли;
       
    /////////////////////////////////////////////////////////////////////////////////////////////
        ШапкаТаблицы.Параметры.ДатаДок = Формат(Дата, "ДФ=dd.MM.yyyy");
    
        ТабДокумент.Вывести(ШапкаТаблицы);
       
        ТабДокумент.НачатьАвтогруппировкуСтрок();
       
        Для Каждого Строки ИЗ Номенклатура Цикл
            СтрокаТаблицы.Параметры.Заполнить(Строки);
            // мое
            СтрокаТаблицы.Параметры.Код5 = Строки.Код5;
              ///
            СтрокаТаблицы.Параметры.Наименование = Строки.Наименование;
            СтрокаТаблицы.Параметры.ЕдИзм = Строки.Номенклатура.ОсновнаяЕдиницаИзмерения;
            //  мое
    //        СтрокаТаблицы.Параметры.КодПоОКЕИ =  "796";
            СтрокаТаблицы.Параметры.Количество = Строки.Количество;
            СтрокаТаблицы.Параметры.Сумма = Строки.Сумма;
            СтрокаТаблицы.Параметры.Комментарий = Строки.Комментарий;
            ///
           
           
    //        СтрокаТаблицы.Параметры.ИнвентарныйНомер = Строки.КарточкаНоменклатуры.ИнвентарныйНомер;
    //        СтрокаТаблицы.Параметры.СерийныйНомер = Строки.КарточкаНоменклатуры.СерийныйНомер;
            ТабДокумент.Вывести(СтрокаТаблицы, ПолучитьУровень(Строки), Строка(Строки.Партия));
        КонецЦикла;
       
        ТабДокумент.ЗакончитьАвтогруппировкуСтрок();
       
        // Прописью
        //ФорматСтрока  = "Л=ru_RU; ДП=Ложь";
        //ПарПредмета="рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";
        //Подвал.Параметры.СуммаПрописью = ЧислоПрописью(Номенклатура.Итог("Сумма"), ФорматСтрока, ПарПредмета);
        //
        //Подвал.Параметры.ИтогКолво = Номенклатура.Итог("Количество");
        Подвал.Параметры.ИтогСумма = Номенклатура.Итог("Сумма");
        ТабДокумент.Вывести(Подвал);
       
        // Комиссия
        ЧленыКомиссииНайдены = Ложь;
        Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Организация, МестоХранения.Подразделение);
        Если Комиссия <> Неопределено Тогда
            ЧленыКомиссииНайдены = Истина;
        Иначе
            Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Организация, Справочники.Подразделения.ПустаяСсылка());
            Если Комиссия <> Неопределено Тогда
                ЧленыКомиссииНайдены = Истина;
            Иначе
                Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Справочники.Организации.ПустаяСсылка(), Справочники.Подразделения.ПустаяСсылка());
                Если Комиссия <> Неопределено Тогда
                    ЧленыКомиссииНайдены = Истина;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
       
        Если ЧленыКомиссииНайдены Тогда
            Индекс = 1;
            Для Каждого Член Из Комиссия Цикл
    //            Комиссия2.Параметры.НомерЧел = Индекс;
                Комиссия2.Параметры.Сотрудник = Член;
                ТабДокумент.Вывести(Комиссия2);
                Индекс = Индекс + 1;
            КонецЦикла;
        Иначе
            Для Индекс = 1 По 3 Цикл
                //Комиссия2.Параметры.НомерЧел = Индекс;
                Комиссия2.Параметры.Сотрудник = "                                 ";
                ТабДокумент.Вывести(Комиссия2);           
            КонецЦикла;
        КонецЕсли;
        ТабДокумент.Вывести(Подвал2);
       
        Возврат ТабДокумент;
    КонецФункции
    
    макет.png

    Вложения:

    • док.png
      док.png
      Размер файла:
      49,3 КБ
      Просмотров:
      19
  2. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    Потому что Вы сотрудников уже вывели. Сделайте так, чтобы должность указывалась в параметре сотрудник. А в коде просто к имени добавьте должность с необходимым количеством пробелов.
  3. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    ну дело просто в том, что в шапке надо вывести имя и должность, а в подвале имя, оставить место для подписи, а потом должность.
  4. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Еще выбор сотрудника через список значений, получается что значения не в колонках и вывыдиться все не ровно, а через таблицу значений почему то у меня не получается(((
    Код:
    Функция ПолучитьЧленовКомиссии(ДатаАктуальности, Организация, Подразделение) Экспорт
        СЗ = Новый СписокЗначений;
        Запрос = Новый Запрос();
       
        УсловияЗапроса = "";
        Если ЗначениеЗаполнено(Организация) ИЛИ ЗначениеЗаполнено(Подразделение) Тогда
            Если ЗначениеЗаполнено(Организация) Тогда
                УсловияЗапроса = УсловияЗапроса + "
                |    И Комиссия.Организация = &Организация";
            КонецЕсли;
            Если ЗначениеЗаполнено(Подразделение) Тогда
                УсловияЗапроса = УсловияЗапроса + "
                |    И Комиссия.Подразделение = &Подразделение";
            КонецЕсли;
        КонецЕсли;
       
        Запрос.Текст =
            "ВЫБРАТЬ ПЕРВЫЕ 1
            |    Комиссия.Ссылка
            |ИЗ
            |    Документ.Комиссия КАК Комиссия
            |ГДЕ
            |    Комиссия.Проведен = ИСТИНА" + УсловияЗапроса + "
            |
            |УПОРЯДОЧИТЬ ПО
            |    Комиссия.МоментВремени УБЫВ"
        ;
       
        Запрос.УстановитьПараметр("Организация", Организация);
        Запрос.УстановитьПараметр("Подразделение", Подразделение);
       
        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
            Для Каждого Строки Из Выборка.Ссылка.Сотрудники Цикл
                СЗ.Добавить(Строки.Сотрудник);
               
            КонецЦикла;
           
            Возврат СЗ;
    
        Иначе
            Возврат Неопределено;
        КонецЕсли;
    КонецФункции
    
  5. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    Просто через + добавьте должность к имени сотрудника. И все.
  6. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Так не красиво получается..

    Вложения:

  7. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну через + и получится криво. Сделайте 2 поля в макете: Сотрудник(уже есть у вас) ДолжностьСотрудника(добавить). И оба поля ровно по левому краю выравняйте - будет ровно
  8. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    я уже так делала смотрите выше.. там поля скачут
  9. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Выравнивание ячейки посмотрите
  10. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну так вы в разных циклах заполняли вроде как. Вы внутри одного прогона по списку с членами комиссии выбирайте и сотрудника и должность, тогда прыгать ничего не будет
  11. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    Я Вам еще раз говорю почему скачет. Вы в одном цикле сначала выводите сотрудников, а потом другим циклом должности. Строки разные получаются. Выводите должности и сотрудников в одном цикле. И все будет красиво.
  12. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Где у меня ошибка...????

    {Документ.Поступление.МодульОбъекта(87)}: Итератор для значения не определен
    Для каждого Сотрудник Из Ком Цикл

    Код:
    ЧленыКомиссииНайдены = Ложь;
        Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Организация, МестоХранения.Подразделение);
        Ком = ОбщегоНазначения.ПолучитьДолжностьЧленовКомиссии(Дата, Организация, МестоХранения.Подразделение);
        Если Комиссия <> Неопределено Тогда
           
           
            Если Ком <> Неопределено Тогда
            ЧленыКомиссииНайдены = Истина;
            КонецЕсли;
           
           
            ЧленыКомиссииНайдены = Истина;
        Иначе
            Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Организация, Справочники.Подразделения.ПустаяСсылка());
            Если Комиссия <> Неопределено Тогда
                ЧленыКомиссииНайдены = Истина;
            Иначе
                Комиссия = ОбщегоНазначения.ПолучитьЧленовКомиссии(Дата, Справочники.Организации.ПустаяСсылка(), Справочники.Подразделения.ПустаяСсылка());
                Если Комиссия <> Неопределено Тогда
                    ЧленыКомиссииНайдены = Истина;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
       
        Если ЧленыКомиссииНайдены Тогда
            Индекс = 1;
            Для Каждого Член  Из Комиссия Цикл           
                Комиссия3.Параметры.Сотрудник = Член;
                Для каждого Сотрудник Из Ком Цикл
               
                 Комиссия3.Параметры.Должность = Сотрудник;
       
               
                КонецЦикла;
                ТабДокумент.Вывести(Комиссия3);
                Индекс = Индекс + 1;
            КонецЦикла;
           
                Иначе
            Для Индекс = 1 По 3 Цикл
                //Комиссия2.Параметры.НомерЧел = Индекс;
                Комиссия3.Параметры.Сотрудник = "                                 ";
                ТабДокумент.Вывести(Комиссия3);           
            КонецЦикла;
        КонецЕсли;
    
  13. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    вам надо и сотрудника и его должность в одном месте получить, а не в 2 разных массива. А пока вы получаете в 2 разных массива, у вас и будет круговерть с выводом
  14. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Код:
    Функция ПолучитьЧленовКомиссии(ДатаАктуальности, Организация, Подразделение) Экспорт
        СЗ = Новый СписокЗначений;
        Запрос = Новый Запрос();
       
        УсловияЗапроса = "";
        Если ЗначениеЗаполнено(Организация) ИЛИ ЗначениеЗаполнено(Подразделение) Тогда
            Если ЗначениеЗаполнено(Организация) Тогда
                УсловияЗапроса = УсловияЗапроса + "
                |    И Комиссия.Организация = &Организация";
            КонецЕсли;
            Если ЗначениеЗаполнено(Подразделение) Тогда
                УсловияЗапроса = УсловияЗапроса + "
                |    И Комиссия.Подразделение = &Подразделение";
            КонецЕсли;
        КонецЕсли;
       
        Запрос.Текст =
            "ВЫБРАТЬ ПЕРВЫЕ 1
            |    Комиссия.Ссылка
            |ИЗ
            |    Документ.Комиссия КАК Комиссия
            |ГДЕ
            |    Комиссия.Проведен = ИСТИНА" + УсловияЗапроса + "
            |
            |УПОРЯДОЧИТЬ ПО
            |    Комиссия.МоментВремени УБЫВ"
        ;
       
        Запрос.УстановитьПараметр("Организация", Организация);
        Запрос.УстановитьПараметр("Подразделение", Подразделение);
       
        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
            Для Каждого Строки Из Выборка.Ссылка.Сотрудники Цикл
                СЗ.Добавить(Строки.Сотрудник,""+ Строки.Сотрудник+"         "+Строки.Должность);
               
            КонецЦикла;
           
            Возврат СЗ;
    
        Иначе
            Возврат Неопределено;
        КонецЕсли;
    КонецФункции
    
    Вот сейчас получаю и сотрудника и должность
  15. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    у вас формы управляемые?
  16. nbIpKuH_BaH9I
    Online

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    399
    Баллы:
    104
    Ну и? Сейчас как заполняется?
  17. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    Форма обычная. Заполняться то заполняется просто не ровно))) Безымянный.png
  18. Tiger86
    Offline

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

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Марина, зачем вам список значений? разве не проще воспользоваться Таблицей значений с 2 колонками и в макете сделать 2 параметра? тогда сможете выводить так как вам надо...
  19. antares
    Offline

    antares Опытный в 1С

    Регистрация:
    30 ноя 2006
    Сообщения:
    340
    Симпатии:
    7
    Баллы:
    29
    ну тут вы будете использовать представление строки списка как значение для вывода в область печати, это тоже не айс, хотя все будет вместе, но красивого формата не будет;
    вам надо заполнять параметры области Комиссия3 внутри одного цикла и выводить эту область уже с заполненными Сотрудником и Должностью; напомню - вывод области печати в печатный документ - это вывод строки (или строк, или ячеек); два раза вывели - две строки получили; ну и формат вывода надо продумать на стадии создания макета, чтобы места для информации в колонках хватало и следующие колонки не обрезали данные предыдущих Кстати, если уж вам так хочется заполнять и выводить информацию в одной строке по отдельности, то определите области печати строками и колонками, а вывод осуществляте присоединением областей; об этом почитайте в синтакс-помощнике
  20. TopicStarter Overlay
    Мариночка
    Offline

    Мариночка

    Регистрация:
    24 фев 2014
    Сообщения:
    29
    Симпатии:
    0
    Баллы:
    1
    подскажите, тогда пожалуйста как мне использовать таблицу значений??

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