Быстрый старт. Решение задания №5.6.2

Представляем решение домашнего задания 5.6.2.

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.

комментария 2 на “Быстрый старт. Решение задания №5.6.2”

  1. Создаем внешнюю обработку СвернутьСтроки.
    В модуле объекта создаем экспортную процедуру Инициализировать()

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

    Создаем макет Параметры_Авторегистрации
    1 колонка – Документы.СчетНаОплатуПокупателю, 2 колонка – Товары.

    Подключаем обработку в разделе Сервис – Дополнительные отчеты и обработки – Дополнительные внешние обработки табличных частей.
    В документе Счет для табличной части Товары в меню Заполнить доступна обработка “Свернуть строки”. При нажатии, обработка суммирует количество, сумму ндс и сумму строк ТЧ одинаковых по номенклатуре, ставке ндс и цене товара. Готово

  2. Создал вн. обработку, использую вид – Заполнение­Объекта и команду “ВызовКлие­нтскогоМет­ода”. В модуле формы использую следующие процедуры:

    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
        СписокШаблонов = ПолучитьСписокШаблонов(ОбъектыНазначения);
       
        Если СписокШаблонов.Количество() = 0 Тогда
            Предупреждение("Нет соответствующих шаблонов");
            Возврат;
        КонецЕсли;
       
        ЭлементСписка = СписокШаблонов.ВыбратьЭлемент("Выберите шаблон для заполнения");
       
        Если ЭлементСписка = Неопределено Тогда
            Возврат;
        КонецЕсли;
       
        ЗаполнитьДокумент(ОбъектыНазначения[0], ЭлементСписка.Значение)
    КонецПроцедуры // ВыполнитьКоманду()

    &НаСервереБезКонтекста
    Процедура ЗаполнитьДокумент(ТекущийДокумент, ДокументОснование);
        ДокументОбъект = ТекущийДокумент.ПолучитьОбъект();  
       
        ЗаполнитьЗначенияСвойств(ТекущийДокумент, ДокументОснование, , "Дата, Номер");
        ДокументОбъект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
       
        ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
    КонецПроцедуры

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

        Запрос.УстановитьПараметр("Контрагент", МассивОбъектов[0].Контрагент);

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

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

        СписокШаблонов = Новый СписокЗначений;
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            СписокШаблонов.Добавить(ВыборкаДетальныеЗаписи.ЗаказКлиента, ВыборкаДетальныеЗаписи.Наименование);
        КонецЦикла;

        Возврат СписокШаблонов;
    КонецФункции