Базовый курс. Решение ДЗ №8
Представляем решение очередного задания.
Это “объемное” решение, состоящее из 27 видео-уроков.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.
Если не активировали токен — посмотрите видео-инструкцию (видео N5)
Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.
как перевестись в следующий поток, тем кто не успел? сколько месяцев надо докупить МГ? а сколько осталось МГ? не сделанные задания этого потока можно продолжать делать и высылать? или с новым потоком придется все с начала?
Все просто, продляете мастер-группу на 2 месяца с 30 октября до 31 декабря.
Отчитываться нужно только по тем заданиям, которые Вы еще не выполнили.
Отчитываться можно в темах текущего потока (то есть сейчас продолжаете обучение), пока новый поток не дошел до заданий, еще не сделанных Вами.
Далее, продолжаете идти с новым потоком, и не отстаете ;)
я покупал “По заказ № 4971 от 08.06.2011 (Базовый курс по программированию в 1С:Предприятии 8.х + 4 Месяца МГ + Доставка до RU : 1.2 Кг. 300 р). Сумма 11300-00 Без налога (НДС)”. У меня остался 1 месяц? и надо еще два? Как выписать счет на два МГ?
Нужно, чтобы Вы участвовали в МГ в момент финала следующего потока, который будет во второй половине декабря.
Счет можно получить в интернет-магазине, там есть такая позиция.
Прежде всего как всегда большое спасибо за кучу интересных решений и идей, массу пищи для размышлений. Особо порадовало заполнение регистра из запроса. Сразу куча вещей у меня решилась в маленьком личном проекте.
При просмотре возникло несколько вопросов.
1. Сначала тут было большой вопрос по поводу оптимизации поиска первой записи, но тут вылез предпоследний урок и оказалось, что все есть:) Только стоит наверное так же выбирать первый документ контакта с клиентом, когда выясняем добавлять-ли менеджера в регистр сведений.
2. Чем принимать и передавать структуры при пересчете не проще-ли передавать в серверный вызов по ссылке непосредственно ТД.имя параметра. Тогда при отработке процедуры они изменяются и нам не надо писать лишнего кода. Это плохой тон?
3. Не очень логично сбрасывать в ноль цены и количества при проверке делителя (урок по пересчету суммы), лучше оставлять как есть, мне кажется. Если уж сумму вводят, то видимо что-то там должно быть.
4.Глобальная переменная для пересчета реально нужна, или просто чтобы продемонстрировать приемы? При создании на сервере ее, мне кажется, проще получить в параметр формы. Да и проблем со сменой пересчета не возникает.
5.Не совсем вопрос, а скорей альтернативная точка зрения в рамках общения с сокурсниками. Вы в уроке сказали, что лишний код не допустим и снижает качество системы. Абсолютно согласен, но есть большая оговорка!!! По-моему опыту (к сожалению в основном не 1с) на этапе активной разработки сводить в общие модули код – это самоубийство. Изменение логики в одном документе часто влечет переписывание довольно сложного (за счет универсализации) общего модуля. Более того иногда в общий модуль начинается дописывание кода, нужного только для одного из всех случаев обращения, так как писать код для него долго, а из общего копи пастом уже не выдрать блок-то уже сложный. (например, нам понадобятся скидки в реализации, дописать в общий модуль лекго, потом еще что-то для прихода, дальше больше… В дальнейшем (если сложность сказывается на производительности) начинают блоки таки выдирать для отдельных случаев, которые раньше подпадали под универсальные с мелкими доделками в общем модуле, а теперь перестали. Все это жрет массу лишнего времени на доработки. Так что сводить в общие модули все же стоит после финализации решения, хотя бы относительной. Если моя логика, кажется вам неверной, то пожалуйста отпишитесь в чем.
Спасибо за обратную связь! :)
1. Соглашусь.
2. О каких пересчетах идет речь? Ведь в приведенном решении передается Элементы.Товары.ТекущиеДанные. Или речь идет о другом?
3. Соглашусь.
4. Ответ на этот вопрос зависит от частоты обращения к данным. Мне кажется, что в данном задании можно вполне обойтись без глобальной переменной.
5. Вопрос методологический :)
Вообще приведенная Вами проблема действительно часто встречается.
В большинстве случаев она успешно решается за счет рефакторинга кода. Выносим действительно общие части алгоритмов в отдельные методы общих модулей, а для частных случаев пишем новые методы.
>Так что сводить в общие модули все же стоит после финализации решения, хотя бы относительной.
Если проект будет хоть как-то запущен, то кажется сомнительным, что кто-то будет вкладывать сотни человеко-часов на рефакторинг. Ведь заказчик скорее всего не будет за это платить.
Хотя опять же однозначного ответа у меня нет.
Спасибо за интересные мысли, думаю другим участникам будет интересно ознакомиться :)
Но все-таки задача не имеет однозначного решения, и многое зависит от опыта архитектора проекта.
По второму вопросу. Он тоже случайно остался. Я его писал,когда функция пересчета при изменении номенклатуры возвращала структуру. Мне казалось что удобней передавать конкретные данные формы в которые сразу при обработке вернется значение, чем возвращать функцией структуру и расшифровывать ее .
По последнему. Для случая, когда пишется не будущее типовое решение, возразить сложно. Там рефакторинг при окончании – большая роскошь:(
Ок.
про сумму в журнале. както не походе на 1с8 – хранение избыточной информации, все что надо из таблиц выводить в журнал надо прежде их сохранять в шапку штоли?
расчетных колонок в принципе невозможно как в 7ке? ссуть может есть в этом для ускорения списков в тонких клиентах…
> все что надо из таблиц выводить в журнал надо прежде их сохранять в шапку штоли?
Да.
>расчетных колонок в принципе невозможно как в 7ке?
Возможно, если создать произвольный запрос в динамическом списке.
Однако, в этом случае могут возникнуть проблемы с производительностью, нужно анализировать необходимость такого решения.
красиво проведение через передачу тз. и замена таблицы в конструкторе запросов для авансового отчета.
2. а если я для проверки привязки менеджера к контре использую
“РС.ПолучитьПоследнее(Дата,Новый Структура(“Контрагент”, Покупатель));” а не запрос как у вас. это сильно плохо?
а при записи вместо отбора использую. Набор.Прочитать(). касяк?
про отмену проведения контакта вроде явно речь шла.
но учтем на будущее.
а почему и при отмене проведения искать записи запросом, тем более что ввели новый реквизит документ, на который можно чотко спозиционироваться запросом и удалить?
непонятно было использование виртуальной таблицы СрезПоследний и указание вручную параметров на нее. а через конструктор запросов нельзя наложить? вроде и в уроках мы такое не проходили еще…
Уточните номер урока и примерно время звучания.
это в решении вы показываете. в уроках такого не было.
Тогда номер урока в решении :)
Предложите вариант кода, обсудим его.
Приведите код полностью.
Нет, не сильно плохо.
Но использовать запросы – хорошая привычка.
У объектного чтения есть весовые недостатки – они не совместимы с RLS, но об этом в продвинутом..
1. в чом смысл запрещения оперативного проведения Контакта? чем оно мешает и на что влияет? на скорость проведения точно наверно не влияет, т.к. никакие остатки не запрашивает
Оперативно проводимые документы нельзя вводить будущей датой. То есть в нашей задаче нельзя будет планировать контакты на завтра.
ясно. учту на будущее. а в контексте дз я считал у нас контакт это отметка
о свершившихся сношениях с клиентам, а не планирование…