Базовый курс. Домашнее задание №7
Начинаем второй блок базового курса и представляем первое задание по нему.
Для выполнения рекомендуется изучить следующие главы 2-го блока.
Глава 1. Документы
Глава 2. Ввод на основании
Глава 3. Создание печатных форм
Глава 4. Настройка форм документов.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.
Готово.
Создал документы “Поступление товаров и услуг” и “Реализация товаров и услуг”.
Брак указываю через булевский флажок, при снятии проставляется по умолчанию “Новый” (предопределенный элемент справочника “Степени брака”), при установке галочки необходимо выбрать качество отличное от нового.
На основании справочника “Контрагенты” организован механизм создания документов поступления и реализации. Сложностей не возникло.
Печать сделал через стандартный конструктор печати, немного допилил.
Впервые мне довелось сделать настройку связи параметров выбора ( единицы измерения по владельцу).
Также можно отметить, что в версии 8.2.13.202 сортировка по моменту времени работает
>Также можно отметить, что в версии 8.2.13.202 сортировка по моменту времени работает
Это хорошие новости :)
Догоняю “задержанное”.
Задание получилось весьма кропотливым – очень много “мелких дороботок” то там, то сям. Что бы в печатной форме не считать в цикле сумму (для “итого прописью”, я сделал это реквизитом документа (СуммаДокумента) которую заполнял из подвала Итоги табличной части.
Насчет “модифицированного запроса – безусловно вариант с “Заменить” действительно имеет ряд преимуществ, но я обычно использую вставки, а отладку запроса произвожу в паре “отладчик” + консоль запроса в работающем приложении – так более чётко и адекватно видно, что и как получается.
>Насчет «модифицированного запроса
Модификация запроса при таком подходе неудобна, а в остальном проблем нет.
Я не спорю… Безусловно есть неудобства, но на самом деле если запрос более сложен, то метод “замена” – то же не безпроблемна при отладке второго запроса. Ведь в Вашем примере отлично показано, что второй запрос это возможно не только изменение источника, но и изменение как состава полей, так и иной логики. Т.е. отлаживая второй запрос нужно будет так же строить цепочку корректных замен.
Да, разумеется. Анализировать итоговый текст запроса нужно с помощью отладчика.
Задание выполнил.
В документе “Реализация товаров” я добавил еще один реквизит: “ФизическоеЛицо” с типом “Булево”, при установке этого флажка реквизиты: “Контрагент” и “КонтактноеЛицо” становятся невидимыми и не заполняются, поскольку считаю, что нет смысла в занесении физ.лиц не предпринимателей в эти справочники. Пришлось в процедуре ОбработкаПроверкиЗаполнения(() для физических лиц исключить из проверяемых реквизитов “КонтактноеЛицо” . Процедуры ВводаНаОсновании() сделал отдельными в двух документах, что конечно не есть хорошо, но проблема с реализацией запросами для меня пока остается.
Наконец-то добрался и я… Решение выполнил, после просмотра преподавательского – приходную накладную разбил на авансовый + приходная. Подсмотрел заполнение последней расходной (про запрос и не подумал вовсе), а затем – и почему неправильно сортирует “МоментВремени” в запросе. Контактное лицо в расходной – забыл дозаполнять – сейчас сделаем. А пользователь у меня – в параметрах сеанса. Из-за перерыва – возникают пробелы в знаниях/памяти. Нужно срочно наверстывать!!!
Догоняйте! :)
Добрый день!
Решал домашнее задание следующим образом:
1) Создал 2 документа поступления – “ПриходнаяНакладная” и “АвансовыйОтчет”. Сомнений по поводу количества документов не было, так как я считал что они соответствуют хотя и похожим, но по сути разных хозяйственным операциям.
2) Добавил справочник “Брак”
3) В табличной части документов реализовал выбор базовой единицы измерения без особых пролблем (настроил отбор по владельцу, написал запрос):
<code>
&НаСервереБезКонтекста
Функция ПолучитьБазовуюЕдиницу( Номенклатура )
Запрос = Новый Запрос() ;
Запрос.Текст = “ВЫБРАТЬ
| ЕдиницыИзмеренияНоменклатуры.Ссылка
|ИЗ
| Справочник.ЕдиницыИзмеренияНоменклатуры КАК ЕдиницыИзмеренияНоменклатуры
|ГДЕ
| ЕдиницыИзмеренияНоменклатуры.Владелец = &Владелец
| И ЕдиницыИзмеренияНоменклатуры.ЕдиницаПоКлассификатору = &БазоваяЕдиницаИзмерения” ;
Запрос.УстановитьПараметр( “Владелец”, Номенклатура ) ;
Запрос.УстановитьПараметр( “БазоваяЕдиницаИзмерения”, Номенклатура.БазоваяЕдиница ) ;
Результат = Запрос.Выполнить() ;
Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать() ;
Выборка.Следующий() ;
Возврат Выборка.Ссылка ;
Иначе
Возврат Справочники.ЕдиницыИзмеренияНоменклатуры.ПустаяСсылка() ;
КонецЕсли ;
КонецФункции
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТД = Элементы.Товары.ТекущиеДанные ;
Если ЗначениеЗаполнено(ТД.Номенклатура) Тогда
ТД.ЕдиницаИзмерения = ПолучитьБазовуюЕдиницу( ТД.Номенклатура )
Иначе
ТД.ЕдиницаИзмерения = 0 ;
КонецЕсли ;
КонецПроцедуры
</code>
4) Создал перечисление “ВидКонтрагента”
5) Для описание контактов создал документ “Событие” и виду контакта соответствует перечисление “ВидСобытия”.
Новым для меня стала возможность устанвки для реквизита “Тема” свойства “МногострочныйРежим”, (сам я не догодался, увидел в решении преподавателя).
6) При написании обработки заполнения данных документа при вводе на основании я забыл про “МоментВремени” и написал НЕПРАВИЛЬНО – с сортировкой убыванием по дате:
<code>
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип(“СправочникСсылка.Контрагенты”) Тогда
Контрагент = ДанныеЗаполнения.Ссылка;
Запрос = Новый Запрос();
Запрос.Текст =
“ВЫБРАТЬ ПЕРВЫЕ 1
| РасходнаяНакладная.Ссылка,
| РасходнаяНакладная.Контрагент,
| РасходнаяНакладная.КонтактноеЛицо,
| РасходнаяНакладная.Товары.(
| Ссылка,
| НомерСтроки,
| Номенклатура,
| ЕдиницаИзмерения,
| Цена,
| Количество,
| Сумма,
| Брак
| )
|ИЗ
| Документ.РасходнаяНакладная КАК РасходнаяНакладная
|ГДЕ
| РасходнаяНакладная.Проведен = ИСТИНА
| И РасходнаяНакладная.Контрагент = &Контрагент
|
|УПОРЯДОЧИТЬ ПО
| РасходнаяНакладная.Дата УБЫВ”;
Запрос.УстановитьПараметр( “Контрагент”, ДанныеЗаполнения ) ;
Выборка = Запрос.Выполнить().Выбрать() ;
Пока Выборка.Следующий() Цикл
КонтактноеЛицо = Выборка.КонтактноеЛицо;
ВыборкаТовары = Выборка.Товары.Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
Новая = Товары.Добавить() ;
Новая.Номенклатура = ВыборкаТовары.Номенклатура ;
Новая.ЕдиницаИзмерения = ВыборкаТовары.ЕдиницаИзмерения ;
Новая.Цена = ВыборкаТовары.Цена ;
Новая.Количество = ВыборкаТовары.Количество ;
Новая.Сумма = ВыборкаТовары.Сумма ;
Новая.Брак = ВыборкаТовары.Брак ;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
</code>
Разбирая и анализируя решение этой части домашнего задания для себя отметил следующие моменты:
– не забывать использовать “МоментВремени” (!)
– понравилась замена “Контрагент = ДанныеЗаполнения.Ссылка;” на “Контрагент = ДанныеЗаполнения”;
– понравилась возможность Выгрузки-Загрузки результата запроса через таблицу значений в табличную часть документа – про этот механизм тоже знаю но забываю пользоваться;
– ошибка платформы при сортировке по полю “МоментВремени”;
– вынесение заполнения табличной части документа в отдельный модуль – решение преподавателя понравилось, буду поступать именно так (понравился вариант с заменой текста – раньше я всегда разрывал строку запроса).
Работа с печатными формами не вызвала затруднений за исключением того момента, что в силу перерыва работы над курсом и напрягов на работя я позабыл про функцию “СинхронизацияПользователей” и ее не использовал в решении.
C функцией вывода суммы прописью разобрался самостоятельно и без проблем.
В конце понравилось идея решение для заполнения поля “КонтакноеЛицо” – сам я не обратил внимание на этот момент и поле оставалось незаполненным.
Спасибо, инетерсное задание и интересный вариант решения!
Отличный анализ!
Задание выполнила. Особенные трудности возникли при реализации ввода на основании, Но потом разобралась, оказалось что я не в том документе сделала реализацию ввода на основании.
Задание выполнил.
Для регистрации поступления созданы документы “ПоступлениеТоваров” и “АвансовыйОтчет”.
Добавлены справочники: “ВидыБракаНоменклатуры”, “СотрудникиОрганизаций”, “ВидыКонтактовМенеджеров” (имеет 3 предопределенных элемента).
Когда делал ДЗ понял, как удобно, что КонтактныеЛицаКонтрагентов и ЕдиницыИзмеренияНоменклатуры реализованы через подчиненные справочники. При реализации форм документов автоматически создавалась подчиненность реквизитов формы на основании подчиненности реквизитов документа.
Пришлось доделывать наименлования для справочников КонтактныеЛицаКонтрагентов и ЕдиницыИзмеренияНоменклатуры и их автоматическое заполнение перед записью элемента. Сами реквизиты скрыты. Это удобно, когда эти элементы отображаются в ТЧ документов – не по коду, а по наименованию.
При изменении товара в ТЧ документа выбирал элемент из подчиненного справочника – ЕдиницыИзмеренияНоменклатуры с коэф = 1 и подставлял в табличную часть.
Немного долго повозился с обработкой заполнения, т.к. вывел её в общий модуль и пришлось писать запрос, текст которого формировался на основании вида документа. С символом перевода строки зато научился пользоваться.
Задание в принципе не очень сложное, но мне оно показалось достаточно объемным.