Имя: Пароль:
1C
1С v8
Создание печатной формы
0 ppkmlite
 
21.11.14
22:51
Здравствуйте. Создаю печатную форму(акт). На макете должен выбираться контрагент, договор(либо иное основание возникновения обязательств) и в табличной части
все документы оказания услуг, товаров , работ по этому договору.
Я сделала так
Процедура АктНажатие(Элемент)
    ТабДок = ПечатьАкта(ТабДок);
    ТабДок.ТолькоПросмотр = Истина;
КонецПроцедуры

Функция ПечатьАкта(ТабДок);
      //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    МатериалыОбластьШапкаТаблицы = Макет.ПолучитьОбласть("МатериалыШапкаТаблицы");
    МатериалыОбластьПодвалТаблицы = Макет.ПолучитьОбласть("МатериалыПодвалТаблицы");
    МатериалыОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("МатериалыДетали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();

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

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());

        ТабДок.НачатьГруппуСтрок();
        ТабДок.Вывести(МатериалыОбластьШапкаТаблицы);
        ТабДок.НачатьАвтогруппировкуСтрок();

        МатериалыВыборкаДетальныеЗаписи = ВыборкаДетальныеЗаписи.Материалы.Выбрать();

        Пока МатериалыВыборкаДетальныеЗаписи.Следующий() Цикл
            МатериалыОбластьДетальныхЗаписей.Параметры.Заполнить(МатериалыВыборкаДетальныеЗаписи);
            ТабДок.Вывести(МатериалыОбластьДетальныхЗаписей, МатериалыВыборкаДетальныеЗаписи.Уровень());
        КонецЦикла;

        ТабДок.ЗакончитьАвтогруппировкуСтрок();
        ТабДок.Вывести(МатериалыОбластьПодвалТаблицы);
        ТабДок.Вывести(КапвложенияОбластьШапкаТаблицы);
        ТабДок.НачатьАвтогруппировкуСтрок();
Как мне в запросе прописать, что нужно отбирать только документы по выбранному договору в шапке?
1 ppkmlite
 
21.11.14
22:57
Помогите новичку разобраться
2 marvak
 
21.11.14
22:58
(0)
А в каком месте вызываешь АктНажатие(Элемент)?

Это документ, внешняя обработка или что?
3 marvak
 
21.11.14
22:58
(2)+
То есть из чьей формы?
4 stix2010
 
21.11.14
23:04
ужас вот они "нетлёнщики":
ГДЕ Документ.МЗ_ПокупкаКАК.Договор= &Договор
5 stix2010
 
21.11.14
23:04
только выборку по табличной части не так пишут
6 stix2010
 
21.11.14
23:05
ошибся ГДЕ Документ.МЗ_Покупка.Договор= &Договор, если в документе реквизит договор
7 marvak
 
21.11.14
23:05
аа, ну видимо это обработка, есть реквизиты Договор, Контрагент.
Тогда видимо так

ВЫБРАТЬ
    МЗ_ПокупкаМатериалы.Ссылка КАК Материал,
    ПРЕДСТАВЛЕНИЕ(МЗ_ПокупкаМатериалы.Ссылка),
    МЗ_ПокупкаМатериалы.ЕдиницаИзмерения,
    ПРЕДСТАВЛЕНИЕ(МЗ_ПокупкаМатериалы.ЕдиницаИзмерения,
    МЗ_ПокупкаМатериалы.Количество,
    МЗ_ПокупкаМатериалы.Сумма
ИЗ
    Документ.МЗ_Покупка.Материалы КАК МЗ_ПокупкаМатериалы
ГДЕ
    Документ.МЗ_Покупка.Договор = &Договор

А параметр Договор устанавливаешь в реквизит обработки Договор
8 marvak
 
21.11.14
23:06
(7)+
вернее так
ГДЕ
    МЗ_ПокупкаМатериалы.Ссылка.Договор = &Договор
9 ppkmlite
 
22.11.14
11:32
Акт нажатие-это кнопка на форме элемента справочника Договоры.
10 ppkmlite
 
22.11.14
13:46
Нужно, чтобы на форме элемента справочника договоры была кнопка(акты), при нажатии на которую выходили все документы выполненных работ, оказанных услуг по этому договору.
Создала запрос, в котором пытаюсь обратиться(сделать отбор по договору)
    |ГДЕ
        |    МЗ_Покупка.СубконтоСчетКредита3 = &СубконтоСчетКредита3
        |    И ОС_Покупка.СубконтоСчетКредита3 = &СубконтоСчетКредита3
        |    И УслугиСтороннихОрганизаций.Договор = &Договор";
    Запрос.УстановитьПараметр("СубконтоСчетКредита3",Ссылка);
    Запрос.УстановитьПараметр("Договор",ссылка);
    //Запрос.УстановитьПараметр(""
    Результат = Запрос.Выполнить().Выбрать();
Но получается я в отборе обращаюсь к договорам в документе покупка, акты, а мне нужно к договору, на форме которого я нахожусь, ?!Как праввильно сделать?!!
11 ppkmlite
 
23.11.14
21:40
Продолжаю делать печатную форму на форме элемента справочника договоры.
Переделала запрос, вместо соединеия, сделала объединение,отладила в консоли,выводит наименования услуг, ос,мз. Как мне на макет вывести наименование договора, то есть как мне к нему обратиться, если я нахожусь в модуле, на форме самого этого договора?
Мне в запросе его выбирать или же создавать новую переменную? Подскажите.

Функция ПечатьАкта(ТабДок) Экспорт
      //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
          Макет = Справочники.Договоры.ПолучитьМакет("Макет");

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
    |УслугиОказанныеУслуги.Номенклатура,
    |УслугиОказанныеУслуги.ЕдиницаИзмерения,
    |УслугиОказанныеУслуги.Количество,
    |УслугиОказанныеУслуги.Сумма,
    |NULL КАК ВнеоборотныйАктив
|ИЗ
    |Документ.УслугиОказанные.Услуги КАК УслугиОказанныеУслуги
|ГДЕ
    |УслугиОказанныеУслуги.СубконтоСчетКредита3 = УслугиОказанныеУслуги.СубконтоСчетКредита3

|ОБЪЕДИНИТЬ ВСЕ

|ВЫБРАТЬ
    |МЗ_ПокупкаМатериалы.Номенклатура,
    |МЗ_ПокупкаМатериалы.ЕдиницаИзмерения,
    |МЗ_ПокупкаМатериалы.Количество,
    |МЗ_ПокупкаМатериалы.Сумма,
    |NULL
|ИЗ
    |Документ.МЗ_Покупка.Материалы КАК МЗ_ПокупкаМатериалы
|ГДЕ
    |МЗ_ПокупкаМатериалы.Ссылка.СубконтоСчетКредита3 = МЗ_ПокупкаМатериалы.Ссылка.СубконтоСчетКредита3

|ОБЪЕДИНИТЬ ВСЕ

|ВЫБРАТЬ
    |NULL,
    |NULL,
    |ОС_ПокупкаКапвложения.Количество,
    |ОС_ПокупкаКапвложения.Сумма,
    |ОС_ПокупкаКапвложения.ВнеоборотныйАктив
|ИЗ
    |Документ.ОС_Покупка.Капвложения КАК ОС_ПокупкаКапвложения
|ГДЕ
    |ОС_ПокупкаКапвложения.Ссылка.СубконтоСчетКредита3 = ОС_ПокупкаКапвложения.Ссылка.СубконтоСчетКредита3 ";
    Запрос.УстановитьПараметр("СубконтоСчетКредита3",Ссылка);
    Запрос.УстановитьПараметр("СубконтоСчетКредита3",ссылка);
    Запрос.УстановитьПараметр("СубконтоСчетКредита3",Ссылка);
    //Запрос.УстановитьПараметр("ДоговорСпр",ссылка);

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

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
        ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");      
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
      ТабДок.НачатьАвтогруппировкуСтрок();
      ТабДок.НачатьГруппуСтрок();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
        ТабДок.Вывести(ОбластьПодвал);
          //ТабДок.НачатьАвтогруппировкуСтрок();

        //ТабДок.Вывести(ОбластьДетальныхЗаписей);
        //ОбластьЗаголовок.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        //ТабДок.Вывести(ОбластьШапкаТаблицы);
          КонецЦикла;
        
        ТабДок.ЗакончитьАвтогруппировкуСтрок();
        Возврат ТабДок;
КонецФункции
12 marvak
 
23.11.14
22:58
(11)
Договор вытаскивается через "Ссылка".
Наименование договора через "Ссылка.Наименование".
Данный договор должен быть записан, чтобы ссылка была непустой.

Вообще тебе следует все таки немного получше освоить предмет.
А то ответ на твой вроде бы простой вопрос может вылиться в целую лекцию по основам 1С. А тут так не принято.
:)
13 Cyberhawk
 
23.11.14
23:03
Без фото не взлетит
14 ppkmlite
 
24.11.14
13:33
Хорошо, спасибо
Независимо от того, куда вы едете — это в гору и против ветра!