Быстрый старт. Решение задания №5.6.2
Представляем решение домашнего задания 5.6.2.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.
Создаем внешнюю обработку СвернутьСтроки.
В модуле объекта создаем экспортную процедуру Инициализировать()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетНаОплатуПокупателюТовары.Номенклатура КАК Номенклатура,
| СчетНаОплатуПокупателюТовары.Цена КАК Цена,
| СУММА(СчетНаОплатуПокупателюТовары.Сумма) КАК Сумма,
| СчетНаОплатуПокупателюТовары.СтавкаНДС КАК СтавкаНДС,
| СУММА(СчетНаОплатуПокупателюТовары.Количество) КАК Количество,
| СУММА(СчетНаОплатуПокупателюТовары.СуммаНДС) КАК СуммаНДС
|ИЗ
| Документ.СчетНаОплатуПокупателю.Товары КАК СчетНаОплатуПокупателюТовары
|ГДЕ
| СчетНаОплатуПокупателюТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| СчетНаОплатуПокупателюТовары.Номенклатура,
| СчетНаОплатуПокупателюТовары.Цена,
| СчетНаОплатуПокупателюТовары.СтавкаНДС";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ТаблицаЗначений = РезультатЗапроса.Выгрузить();
Объект.Товары.Очистить();
Объект.Товары.Загрузить(ТаблицаЗначений);
КонецПроцедуры
Создаем макет Параметры_Авторегистрации
1 колонка – Документы.СчетНаОплатуПокупателю, 2 колонка – Товары.
Подключаем обработку в разделе Сервис – Дополнительные отчеты и обработки – Дополнительные внешние обработки табличных частей.
В документе Счет для табличной части Товары в меню Заполнить доступна обработка “Свернуть строки”. При нажатии, обработка суммирует количество, сумму ндс и сумму строк ТЧ одинаковых по номенклатуре, ставке ндс и цене товара. Готово
Создал вн. обработку, использую вид – ЗаполнениеОбъекта и команду “ВызовКлиентскогоМетода”. В модуле формы использую следующие процедуры:
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
СписокШаблонов = ПолучитьСписокШаблонов(ОбъектыНазначения);
Если СписокШаблонов.Количество() = 0 Тогда
Предупреждение("Нет соответствующих шаблонов");
Возврат;
КонецЕсли;
ЭлементСписка = СписокШаблонов.ВыбратьЭлемент("Выберите шаблон для заполнения");
Если ЭлементСписка = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьДокумент(ОбъектыНазначения[0], ЭлементСписка.Значение)
КонецПроцедуры // ВыполнитьКоманду()
&НаСервереБезКонтекста
Процедура ЗаполнитьДокумент(ТекущийДокумент, ДокументОснование);
ДокументОбъект = ТекущийДокумент.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(ТекущийДокумент, ДокументОснование, , "Дата, Номер");
ДокументОбъект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСписокШаблонов(МассивОбъектов)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ШаблоныЗаказовКлиентов.ЗаказКлиента,
| ШаблоныЗаказовКлиентов.Наименование
|ИЗ
| РегистрСведений.ШаблоныЗаказовКлиентов КАК ШаблоныЗаказовКлиентов
|ГДЕ
| ШаблоныЗаказовКлиентов.Контрагент = &Контрагент";
Запрос.УстановитьПараметр("Контрагент", МассивОбъектов[0].Контрагент);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
СписокШаблонов = Новый СписокЗначений;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СписокШаблонов.Добавить(ВыборкаДетальныеЗаписи.ЗаказКлиента, ВыборкаДетальныеЗаписи.Наименование);
КонецЦикла;
Возврат СписокШаблонов;
КонецФункции