Базовый курс. Решение ДЗ №6
Представляем решение шестого домашнего задания.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.
Решал не через подчинённые справочники, а через ТЧ. Понимаю, что ссылку на элемент ТЧ дать нельзя, но в данном упражнении это не требуется, а в большинстве случаев это не нужно.
Вариант с подчинёнными справочниками лично я бы использовал только в крайних случаях.
Во-первых это отдаёт махровой 7.7, некрасиво как-то. Есть же замечательный механизм – ТЧ справочников (от отсутствия которого многие страдали в 7.7), используя же механизм подчинённых справочников мы на ровном месте плодим объекты метаданных: КонтактныеЛица – КонтактныеЛицаКонтрагентов, ЕдиницыИзмерения – ЕдиницыИзмеренияНоменклатуры и т.д.
Так же немного удивило, то как преподаватель прописал условие “ИМЕЮЩИЕ”. Опять вручную!
Я конечно понимаю, что это в данном упражнении не сложно, но можно же всё сделать с помощью конструктора. К тому же кто-то из слушателей так и не понял, что это за финт ушами и откуда он взялся.
Элементарно в конструкторе запросов на вкладке “Условия” ставится галочка “Произвольное” и далее из агрегатных функций перетягивается мышкой КОЛИЧЕСТВО(РАЗЛИЧНЫЕ <Выражение>), а в <Выражение> перетягивается КонтрагентыКонтакты.КонтактноеЛицо
Нажимаем Ок и текст готов.
> но в данном упражнении это не требуется, а в большинстве случаев это не нужно
Опираться на статистику при выборе сущности не совсем правильная стратегия.
Есть четкие правила когда нужно использовать подчиненный справочник, а когда достаточно ТЧ.
>используя же механизм подчинённых справочников мы на ровном месте плодим объекты метаданных
Пожалуй, в этом нет ничего страшного. Более того, все сущности “на поверхности”, а не внутри.
В любом случае количество таблиц будет одинаковым.
Когда первый раз открываешь УПП и видишь 200 справочников, 300 документов и 500 регистров (цифры условные) становиться немного не по себе.
А потом понимаешь, что ничего в этом страшного нет :)
>Я конечно понимаю, что это в данном упражнении не сложно, но можно же всё сделать с помощью конструктора.
Спасибо за замечание, в следующий раз продемонстрирую.
Уже не первый раз понимаю, что учитываю в своем решении не все моменты. И с часовыми поясами даже мысли не возникло, и тут с занесением в справочник базовой единицы (кстати, ее бы еще надо закрыть от изменения в старых элементах).
Но вот с запросами – совсем темный лес. Изначально сделала без них, там все элементарно, но с ними без Вашей помощи так и не получилось, хотя мучилась долго. Про ИМЕЮЩИЕ в уроках не было, а конструктор тоже никак не хотел со мной договориться.
Если можно, расскажите побольше про типовые запросы, с примерами, и может с задачками.
Задачу можно решить и без предложения “Имеющие”, см. в комментариях других участников.
Запросы будут разбираться и далее во всех блоках базового курса.
Я бы рекомендовал вам порешать задачи из первого блока. Те что я разбираю в главе Запросы.
Решаете сами, потом сравниваете с решением преподавателя.
Большое спабибо, Евгений! К сожалению, не хватает времени читать решения всех участников, видела там еще одно красивое решение. Просто выбрать всех а потом уж там искать нули у меня получалось, но ведь Вы бы не давали задачу, если б ее нельзя бы было решить красиво. :)
Элементарно в конструкторе запросов на вкладке «Условия» ставится галочка «Произвольное» и далее из агрегатных функций перетягивается мышкой КОЛИЧЕСТВО(РАЗЛИЧНЫЕ <Выражение>), а в <Выражение> перетягивается КонтрагентыКонтакты.КонтактноеЛицо
Нажимаем Ок и текст готов.
В модуле объекта есть Процедура ОбработкаПроверкиЗаполнения, в модуле формы Процедура ОбработкаПроверкиЗаполненияНаСервере. В обеих можно выполнять всяческие проверки. В чем разница (кроме того, что в модуле формы надо применять Объект.)? В каких случаях правильнее применять ту или другую процедуру?
Разница есть и достаточно существенная.
Можно выделить следующие правила.
1. В событии модуля объекта ОбработкаПроверкиЗаполнения() можно работать с реквизитами объекта. Например, для документа ПоступлениеТоваров реквизиты Контрагент и Договор.
2. В событии модуля формы ОбработкаПроверкиЗаполненияНаСервере() нужно работать с реквизитами формы. Например, создать в форме служебный реквизит Статус. А вот с Контрагентом и Договором не получится работать.
И дело здесь в параметре ПроверяемыеРеквизиты.
Проведите эксперимент: посмотрите что содержится в этом параметре в разных событиях (установить проверку заполнения для каких-либо реквизитов).
Посмотрел решение – есть чего почерпнуть (особенно с учётом того, что под 8.2 приёмы оптимизации имеют свою специфику). Теперь буду смотреть все примеры решения ДЗ.
По обратной связи:
1.Интересно всё! По 1с8 практики практически нет, может и лучше что сразу 8.2 т.к. с её выходом остальное устарело! Наверняка по окончанию курса есть смысл пройти всё по 2-му кругу блоки для закрепления знаний и акценте на тех вещах, которые с первого прохода не заметил.
2.Наиболее сложные моменты которые самостоятельно одолеть займёт кучу времени это интерфейс и контекст, особенно контекст! И то и другое вообще нечто, но интересно. Курсы здорово систематизируют то что есть в голове и прилично добавляют знаний. Опять-же очень помог урок по пользованию синтаксис-помошником!
3.Как-то не раскрыта тема ОлеАвтомэйшена (при том что про ком и хоть крайне вскользь но упоминают + спецзанятие мастер-группы по нему есть), в 1С7 пользую очень часто… очень удобно для импорта/экспорта данных между конфигурациями, ещё в синтаксис помошнике нашёл очень интересную вещь “подписка на события”. Эти 2 темы в данный курс не входят?
Подписки на события входят в продвинутый курс.
Что касается Automation, то какой бы пример хотелось рассмотреть? Общие моменты мы давали в тематической сессии МГ, мне казалось, что дальнейшие действия должны быть понятны..
Времени не хватает… не все МГ изучил, обязательно найду и если будут вопросы уточню, т.к. у нас это имеет большое прикладное значение.
Ок.
На мой взгляд не использовать наименование в справочниках КонтактныеЛицаКонтрагентов и ЕдиницыИзмерения не правильно, поскольку при использовании реквизитов этого типа в других объектах будет выводиться код, а это не правильно, логичнее было-бы заполнять реквизит Наименование при записи элемента справочника значением ФИО контактного лица или названием соответствующей единицы измерения.
Соглашусь, спасибо.
Я правильно понимаю, что создание подчиненного справочника для хранения соответствия контактных лиц предпочтительнее регистра сведений? Только тем, что можно получить вкладку перейти в форме?
В процедуре ПриЗаписи в модуле объекта справочника “Номенклатуры” мы создаем новую единицу измерения, а что если транзакция прервется после записи новой единицы измерения в базу? Новая единица будет удалена?
1. Нет. Перейти это совсем не самое главное, это скорее бонус :)
Самое главное – наличие ссылки на КЛ контрагента. А это значит, есть возможность сослаться на него, например, в документах.
2. Да, единица будет удалена.