Базовый курс. Занятие №7

Приступайте к седьмому занятию базового курса.

ps. На этой странице не нужно отчитываться о выполнении ДЗ.

комментария 3 на “Базовый курс. Занятие №7”

  1. могу ошибаться но в первом запросе вернется первая строка ТЧ а не первй документ.

  2. Григорий 10.10.2012 в 03:08

    Здравствуйте.

    В конфигурацию из предыдущего д/з добавил:

    А) Справочники:

    1) “Качество”
    Реквизиты шапки:
    Нет
    Реквизиты таб. части:
    Нет

    Б) Документы:

    1) “ПоступлениеТоваров”
    Реквизиты шапки:
    Контрагент(Тип – СправочникСсылка.Контрагент).
    Реквизиты таб. части:
    Номенклатура(Тип – СправочникСсылка.Номенклатура).
    Качество(Тип – СправочникСсылка.Качество)
    Количество(Тип – число)
    ЕдиницаИзмерения(Тип – СправочникСсылка.ЕдиницыИзмерения)
    2) “РеализацияТоваров”
    Реквизиты шапки:
    Контрагент(Тип – СправочникСсылка.Контрагент).
    КонтактноеЛицо(Тип – СправочникСсылка.КонтактноеЛицо)
    Реквизиты таб. части:
    Номенклатура(Тип – СправочникСсылка.Номенклатура).
    Качество(Тип – СправочникСсылка.Качество)
    Количество(Тип – число)
    ЕдиницаИзмерения(Тип – СправочникСсылка.ЕдиницыИзмерения)
    Скидка(Тип – Число)
    Цена(Тип – Число)
    Сумма(Тип – Число)
    3) “Контакт”
    Реквизиты шапки:
    Контрагент(Тип – СправочникСсылка.Контрагент).
    Заголовок(Тип – Строка(80))
    Тема(Тип – Строка(Неограниченная))
    ВидКонтакта(Тип – ПеречислениеСсылка.ВидКонтакта)
    Реквизиты таб. части:
    Нет

    В) Перечисления:
    1) “ЮрФизЛицо” ({“ЮрЛицо”, “ФизЛицо”})
    2) “ВидКонтакта”({“ЛичнаяВстреча”, “ТелефонныйЗвонок”, “Письмо”})

    В табличной части документа можно указывать единицу измерения, отличную от базовой.

    Бракованный товар определяется реквизитом таб. части “Качество”, которые выбирается из соответствующего справочника, формируемого пользователем.

    Документы поступления и реализации могут вводится на основании справочника контрагенты.
    В модуле объекта документа поступления реализована процедура обработки заполнения:

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

    Для реализации реализована такая же процедура, но алиасом выступает не поступление, а реализация.
    Запрос формирует выборку соответствующих документов(из их набличных частей) в обратном порядке по моменту времени и выбирает первый документ.

    Для документа реализации создан макет в соответствии с заданием.
    В форму добавлена комана(кнопка) для печати и в модуле формы документа определены две процедуры:

    &НаКлиенте
    Процедура Печать(Команда)

    ТабДок = ПечатьНаСервере();
    ТабДок.Показать(“Показать”);

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

    &НаСервере
    Функция ПечатьНаСервере()

    Возврат Документы.РеализацияТоваров.Печать(Объект.Ссылка);

    КонецФункции

    Процедура печати определена в модуле менеджера. В нее в качестве параметра передается ссылка на конкретный документ. В процедуре происходит заполнение
    параметров шапки, строк табличной части и параметров подвала. Процедура возвращает сформированный табличный документ, который выводится потом выводится на

    экран.

    Функция Печать(Ссылка) Экспорт
       
        ТабДокумент = Новый ТабличныйДокумент;
       
        Макет = ПолучитьМакет("Макет");
        //
        ОблШапка         = Макет.ПолучитьОбласть("ОблШапка");
        ОблСтрокаТаблицы = Макет.ПолучитьОбласть("ОблСтрокаТаблицы");
        ОблПодвал       = Макет.ПолучитьОбласть("ОблПодвал");
        // 
        ОблШапка.Параметры.Наименование = ?(Ссылка.Контрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо, "ТОРГ-12", "Товарный чек");
        ОблШапка.Параметры.Номер      = "Номер      " + Ссылка.Номер;
        ОблШапка.Параметры.Дата            = "Дата        " + Ссылка.Дата;
        ОблШапка.Параметры.Контрагент    = "Контрагент  " + Ссылка.Контрагент.Наименование;
       
        ТабДокумент.Вывести(ОблШапка);
       
        Номер    = 1;
        СуммаИтог = 0;
        Для Каждого Стр Из Ссылка.Товары Цикл       
            ОблСтрокаТаблицы.Параметры.Заполнить(Стр);
            ОблСтрокаТаблицы.Параметры.Номер = Номер;
            ТабДокумент.Вывести(ОблСтрокаТаблицы);
            Номер = Номер + 1;
            СуммаИтог = СуммаИтог + Стр.Сумма
        КонецЦикла;  
       
        ОблПодвал.Параметры.Поставщик    = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;
        ОблПодвал.Параметры.Покупатель  = Ссылка.КонтактноеЛицо;
        ОблПодвал.Параметры.СтрокаСумма = ЧислоПрописью(СуммаИтог, "Л = ru_RU; ДП = Ложь", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");
       
        ТабДокумент.Вывести(ОблПодвал);
       
        Возврат ТабДокумент; 
    КонецФункции
    • Dobrenko Oleg 10.10.2012 в 08:37

      Здравствуйте. Григорий, отчет принят.