Базовый курс. Решение ДЗ №8

Представляем решение очередного задания.
Это “объемное” решение, состоящее из 27 видео-уроков.

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

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

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

комментариев 25 на “Базовый курс. Решение ДЗ №8”

  1. как перевестись в следующий поток, тем кто не успел? сколько месяцев надо докупить МГ? а сколько осталось МГ? не сделанные задания этого потока можно продолжать делать и высылать? или с новым потоком придется все с начала?

    • Все просто, продляете мастер-группу на 2 месяца с 30 октября до 31 декабря.
      Отчитываться нужно только по тем заданиям, которые Вы еще не выполнили.
      Отчитываться можно в темах текущего потока (то есть сейчас продолжаете обучение), пока новый поток не дошел до заданий, еще не сделанных Вами.
      Далее, продолжаете идти с новым потоком, и не отстаете ;)

      • я покупал “По заказ № 4971 от 08.06.2011 (Базовый курс по программированию в 1С:Предприятии 8.х + 4 Месяца МГ + Доставка до RU : 1.2 Кг. 300 р). Сумма 11300-00 Без налога (НДС)”. У меня остался 1 месяц? и надо еще два? Как выписать счет на два МГ?

        • Нужно, чтобы Вы участвовали в МГ в момент финала следующего потока, который будет во второй половине декабря.
          Счет можно получить в интернет-магазине, там есть такая позиция.

  2. Прежде всего как всегда большое спасибо за кучу интересных решений и идей, массу пищи для размышлений. Особо порадовало заполнение регистра из запроса. Сразу куча вещей у меня решилась в маленьком личном проекте.

    При просмотре возникло несколько вопросов.

    1. Сначала тут было большой вопрос по поводу оптимизации поиска первой записи, но тут вылез предпоследний урок и оказалось, что все есть:) Только стоит наверное так же выбирать первый документ контакта с клиентом, когда выясняем добавлять-ли менеджера в регистр сведений.
    2. Чем принимать и передавать структуры при пересчете не проще-ли передавать в серверный вызов по ссылке непосредственно ТД.имя параметра. Тогда при отработке процедуры они изменяются и нам не надо писать лишнего кода. Это плохой тон?
    3. Не очень логично сбрасывать в ноль цены и количества при проверке делителя (урок по пересчету суммы), лучше оставлять как есть, мне кажется. Если уж сумму вводят, то видимо что-то там должно быть.
    4.Глобальная переменная для пересчета реально нужна, или просто чтобы продемонстрировать приемы? При создании на сервере ее, мне кажется, проще получить в параметр формы. Да и проблем со сменой пересчета не возникает.
    5.Не совсем вопрос, а скорей альтернативная точка зрения в рамках общения с сокурсниками. Вы в уроке сказали, что лишний код не допустим и снижает качество системы.  Абсолютно согласен, но есть большая оговорка!!! По-моему опыту (к сожалению в основном не 1с) на этапе активной разработки сводить в общие модули код – это самоубийство. Изменение логики в одном документе часто влечет переписывание довольно сложного (за счет универсализации) общего модуля. Более того иногда в общий модуль начинается дописывание кода, нужного только для одного из всех случаев обращения, так как писать код для него долго, а из общего копи пастом уже не выдрать блок-то уже сложный. (например, нам понадобятся скидки в реализации, дописать в общий модуль лекго, потом еще что-то для прихода, дальше больше… В дальнейшем (если сложность сказывается на производительности) начинают блоки таки выдирать для отдельных случаев, которые раньше подпадали под универсальные с мелкими доделками в общем модуле, а теперь перестали. Все это жрет массу лишнего времени на доработки. Так что сводить в общие модули все же стоит после финализации решения, хотя бы относительной. Если моя логика, кажется вам неверной, то пожалуйста отпишитесь в чем.

    • Спасибо за обратную связь! :)

      1. Соглашусь.
      2. О каких пересчетах идет речь? Ведь в приведенном решении передается Элементы.Товары.ТекущиеДанные. Или речь идет о другом?
      3. Соглашусь.
      4. Ответ на этот вопрос зависит от частоты обращения к данным. Мне кажется, что в данном задании можно вполне обойтись без глобальной переменной.
      5. Вопрос методологический :)
      Вообще приведенная Вами проблема действительно часто встречается.
      В большинстве случаев она успешно решается за счет рефакторинга кода. Выносим действительно общие части алгоритмов в отдельные методы общих модулей, а для частных случаев пишем новые методы.
      >Так что сводить в общие модули все же стоит после финализации решения, хотя бы относительной.
      Если проект будет хоть как-то запущен, то кажется сомнительным, что кто-то будет вкладывать сотни человеко-часов на рефакторинг. Ведь заказчик скорее всего не будет за это платить.
      Хотя опять же однозначного ответа у меня нет.

      Спасибо за интересные мысли, думаю другим участникам будет интересно ознакомиться :)
      Но все-таки задача не имеет однозначного решения, и многое зависит от опыта архитектора проекта.

      • По второму вопросу. Он тоже случайно остался. Я его писал,когда функция пересчета при изменении номенклатуры возвращала структуру. Мне казалось что удобней передавать конкретные данные формы в которые сразу при обработке вернется значение, чем возвращать функцией структуру и расшифровывать ее .

        По последнему. Для случая, когда пишется не будущее типовое решение, возразить сложно. Там рефакторинг при окончании – большая роскошь:( 

  3. про сумму в журнале. както не походе на 1с8 – хранение избыточной информации, все что надо из таблиц выводить в журнал надо прежде их сохранять в шапку штоли?
    расчетных колонок в принципе невозможно как в 7ке? ссуть может есть в этом для ускорения списков в тонких клиентах… 

    • > все что надо из таблиц выводить в журнал надо прежде их сохранять в шапку штоли?
      Да.
      >расчетных колонок в принципе невозможно как в 7ке?
      Возможно, если создать произвольный запрос в динамическом списке.
      Однако, в этом случае могут возникнуть проблемы с производительностью, нужно анализировать необходимость такого решения.

  4. красиво проведение через передачу тз. и замена таблицы в конструкторе запросов для авансового отчета. 

  5. 2. а если я для проверки привязки менеджера к контре использую
    “РС.ПолучитьПоследнее(Дата,Новый Структура(“Контрагент”, Покупатель));” а не запрос как у вас. это сильно плохо?

    • а при записи вместо отбора использую. Набор.Прочитать(). касяк?

      • про отмену проведения контакта вроде явно речь шла.
        но учтем на будущее.

        • а почему и при отмене проведения искать записи запросом, тем более что ввели новый реквизит документ, на который можно чотко спозиционироваться запросом и удалить?

          • непонятно было использование виртуальной таблицы СрезПоследний и указание вручную параметров на нее. а через конструктор запросов нельзя наложить? вроде и в уроках мы такое не проходили еще…

            • Уточните номер урока и примерно время звучания.

              • это в решении вы показываете. в уроках такого не было.

          • Предложите вариант кода, обсудим его.

      • Приведите код полностью.

    • Нет, не сильно плохо.
      Но использовать запросы – хорошая привычка.
      У объектного чтения есть весовые недостатки – они не совместимы с RLS, но об этом в продвинутом..

  6. 1. в чом смысл запрещения оперативного проведения Контакта? чем оно мешает и на что влияет? на скорость проведения точно наверно не влияет, т.к. никакие остатки не запрашивает

    • Оперативно проводимые документы нельзя вводить будущей датой. То есть в нашей задаче нельзя будет планировать контакты на завтра.

      • ясно. учту на будущее. а в контексте дз я считал у нас контакт это отметка 
        о свершившихся сношениях с клиентам, а не планирование…