Базовый курс. Финальное задание 35-го потока

Объявляем начало финала 35-го потока базового курса по программированию.

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

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

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

комментария 4 на “Базовый курс. Финальное задание 35-го потока”

  1. Часть 1

    1) Нового из курса я узнал достаточно много, несмотря на то, что я уже “совершеннолетний 1С внедренец” (опыт работы 18 лет).
    Новостью была работа с тонким клиентом (до сих пор опыт в этой области невелик). Особенно важным и новым было для меня оповещение и ясность в вопросе какой модуль где компилируется и как они друг друга вызывают.
    А самым важным, ради чего я и пошел на этот курс: расчетные задачи — до сих пор не занимался этим делом вообще и хотел изучить тему. Какие-то понятия в этой области появились.
    2) Не скажу про заблуждения, видимо они все со мной остались. :)
    3) Сейчас у меня пауза в делах разработки: применить новые навыки пока вопрос ближайшего будущего.
    4) Неожиданного не было.
    5) Формат обучения против очного формата мне показался предпочтительным: предложи выбирать между таким вариантом удаленного обучения и очными курсами — выберу удаленный вариант.

    Часть 2

    1) Регистр “ВыбытияЖивотных” сделан регистром остатков, хотя по логике системы это может быть оборотным регистром, но не остаточным — он не выводится в ноль.
    2) Если на основании инвентаризации можно создать поступление или выбытие, то нужна какая-то связь этих документов с инвентаризацией-основанием. Классическое решение: реквизит ДокОснование, но здесь никакой подобной документов связи нет, а без этого можно несколько раз ввести документы поступления и выбытия по одной и той же инвентаризации.
    3) Раз уж по инвентаризации возможно выбытие, то должно быть соответствующее направление выбытия, на которое относить списанных по результатам инвентаризаций. Такого направления в справочнике нет.
    4) Проведение документа “ВыбытиеЖивотных”: происходит повторный перебор строк документа — те же движения можно было бы сформировать за один проход, т.к. не потребовалось бы для этого вычислять какие-то дополнительные данные. Модуль неоптимален по скорости.
    5) Там же, при проверке отрицательных остатков: параметр в запрос передается

     Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

    так получатся остатки регистра без учета движений самого документа — проверка на отрицательные остатки некорректна.
    6) Спорный момент: Инвентаризация. Заполнение в запросе обращается не к итогам на дату, а к окончательным. Оно не критично, если инвентаризацию сразу вносить в 1С, хуже если забивают документы задним числом, тогда заполнение не поможет пользователю — прийдется учетное количество сверять с отчетными данными, а это источник ошибок. Возможно тут я уже придираюсь.
    7) Несколько странно выглядит реквизит ИсточникПоступления в документе Поступление: не ясно зачем он нужен, раз по нему не ведется никакой аналитики и зачем его заполнять. Возможно это — задел под будущие доработки, а иначе смысл его непонятен. Если потом строить отчеты с отбором или группировкой по данным из шапки документа (с обращением “через точку”), то такие отчеты не будут быстрыми — по данным из регистров быстрее.

    все, на что взгляд упал.

    Часть 3 не получилась по организационным причинам… :(

    C почтением,
    Начальник отдела разработки и сопрвождения ПО,
    ОАО Татспиртпром, г. Казань.
    Власовский С.М.

    • Dobrenko Oleg 10.04.2015 в 20:49

      Сергей, благодарим вас за обратную связь!
      Практическое задание принято.
      >Часть 3 не получилась по организационным причинам… :(
      Можете помочь кому-нибудь на форуме, думаю для программиста с вашим опытом это не составит труда :)

  2. Отчет по финальному домашнему заданию.

    >Финальное домашнее задание состоит трех частей:

    >1. Обратная связь по пройденному курсу.
    >2. Выполнение практической задачи.
    >3. Помощь начинающим в конфигурировании платформы.

    > Шаг 1. Обратная связь по курсу
    > Мы завершаем базовый курс, поэтому хотелось бы подвести
    финальную черту и узнать ваше мнение о базовом курсе. Оставьте
    в произвольном виде обратную связь по курсу. Или используйте
    вспомогательные вопросы:
    > • Что нового Вы узнали из базового курса по программированию?
    > • От каких заблуждений избавились?
    > • Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом вам удалось применить новые навыки (какие результаты были достигнуты);
    > • Если Вы пока не работаете реальных проектах по внедрению решений на «1С:Предприятии 8», то, что оказалось неожиданным из материалов курса?
    > • Насколько удобен, оказался формат обучения в сравнении с очным форматом?
    > Свой отзыв оставляйте в комментарии к текущей записи. Укажите своё ФИО, должность и город, где вы работаете. Эти данные будут использоваться для публикации в списке финалистов и при составлении рекомендательных писем. Спасибо вам, за предоставленную обратную связь!

    Гиричев Андрей Михайлович, руководитель отдела ИТ, город Москва.

    Большое спасибо Евгению Гилеву за интересное, системное изложение материала, подкрепленное практическими примерами и заданиями, которые позволили открыть много интересного и главное практически применимого в моей работе.

    Из базового курса для себя я систематизировал и уяснил принципы и детали работы различных объектов конфигурации как единого целого, понял как работают и строятся управляемые формы, структуру модулей системы, как работают процедуры в различном контексте, как именно производится клиентское и серверное взаимодействие,
    как настраиваются и работают планы видов характеристик, как настраиваются и работают механизмы по оперативному учету, бухгалтерии и расчету, освоил практические техники работы с системой компоновки данных, контролю остатков и языком запросов. Избавился от заблуждения, что с расчетами лучше дела не иметь, поскольку там все “слишком сложно”.

    Используя новые знания я оптимизировал работу нескольких “проблемных” отчетов и обработок, используемых в нашей организации, расширил функциональность имеющихся объектов и смог реализовать более сложные запросы от пользователей системы самостоятельно, в тоже время как руководитель отдела смог на более качественном уровне производить постановку задач, производить контроль выполнения, оперативно решать возникающие проблемы, консультировать и обучать подчиненных мне сотрудников.

    Формат обучения оказался очень удобен, он позволил без ущерба для работы и личной жизни в достаточно сжатые сроки освоить новые и окончательно систематизировать имеющиеся знания по платформе.

    > Шаг 2. Практическое задание
    > ООО «Энимал-Софт» разработало конфигурацию по заказу
    Екатеринбургского зоопарка.
    > Функциональные возможности конфигурации:
    > 1. Ведется количественный учет животных. Хранятся данные о
    размещении животных (вольеры, клетки). Для анализа информации
    используется отчет «Размещение животных».
    > 2. Отражаются поступления животных (в том числе, при рождении на
    территории зоопарка).
    > 3. Ведется учет перемещений животных между помещениями(клетками,
    вольерами).
    > 4. Для инвентаризации животных создан специальный документ, в
    котором отражается учетное и фактическое количество. На основании
    расхождения можно сформировать документы поступления и выбытия.
    > 5. Выбытие животных фиксируется отдельным документом,
    указывается направление выбытия. Для анализа информации используется
    отчет «Анализ выбытий животных».
    > Информационная база должна корректно работать в толстом и
    тонком клиентах управляемого приложения.
    > Учтите, что ошибки могут быть не только в программном коде, но и в
    настройках объектов. В приведенном решении содержится, по крайней мере,
    10 ошибок.
    > Ваша задача – оттестировать прикладное решение, найти
    максимальное количество ошибок и описать пути их исправления.
    При этом учитывайте, что функционал заказчика полностью устраивает.
    > Выгрузку ИБ с исправлениями предоставлять не требуется. Отчет о
    выполнении домашнего задания нужно выложить в виде комментария в
    соответствующую запись на сайте.

    Найденные ошибки и пути их исправления:
    1. Документ.ВыбытиеЖивотных.Форма.ФормаДокумента.Форма(7,24)}:
    Переменная не определена (Константы).
    Путь решения – заменить код

    Объект.Направление = Константы.ОсновноеНаправление.Получить();

    на вызов серверной функции без контекста:

    Объект.Направление = ПолучитьОсновноеНаправление();
    ...
    &НаСервереБезКонтекста
    Функция ПолучитьОсновноеНаправление()
        Возврат Константы.ОсновноеНаправление.Получить();
    КонецФункции

    2. Регистр “ВыбытияЖивотных” – имеет вид “Остатки”, хотя по сути
    движение происходит только в одну сторону – выбытие и регистр никогда не
    сойдется в 0. Поэтому следует указать вид “Обороты”, произвести пересчет
    итогов.
    3. В модуле объекта документа “ВыбытиеЖивотных” не работает контроль
    отрицательных остатков, т.е. возможно сделать выбытие большего
    количества животных, чем есть в наличии на момент проведения документа.
    Для исправления этого в модуле объекта документа “ВыбытиеЖивотных”
    вместо кода:

        Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

    внести код которых учитывает остатки на момент включая момент проведения
    документа:

        Запрос.УстановитьПараметр("МоментВремени", Новый
    Граница(МоментВремени(),ВидГраницы.Включая));

    4. При нехватке животных неверно определяется номер строки и поле
    табличной части “Животные” в документе “ВыбытиеЖивотных” при выдаче
    сообщения пользователю.
    Для исправления этого в модуле объекта документа “ВыбытиеЖивотных”
    вместо строки кода:

        Сообщение.Поле =
    "Животные["+ВыборкаДетальныеЗаписи.НомерСтроки+"].Животное";

    пишем код учитывающий правильную строку табличной части и более удобное
    и логичное для исправления пользователем поле “количество”:

          НомерСтрокиСОшибкой = ВыборкаДетальныеЗаписи.НомерСтроки - 1;
          Сообщение.Поле = "Животные["+НомерСтрокиСОшибкой+"].Количество";

    5. В модуле объекта документа “Поступление” в процедуре
    ОбработкаЗаполнения не заполнялась дата документа, что могло привести к
    искажению данных.
    Для исправления в код процедуры внесено изменение:

    ...
            Дата = ДанныеЗаполнения.Дата;
        КонецЕсли;
    КонецПроцедуры

    6. В модуле объекта документа “ВыбытиеЖивотных” в процедуре
    ОбработкаЗаполнения не заполнялась дата документа, а также присутствовал
    избыточный код, что могло привести к искажению данных.
    Для исправления в код процедуры внесено изменение:

    ...
            Дата = ДанныеЗаполнения.Дата;
        КонецЕсли;
    КонецПроцедуры

    7. В документе “Инвентаризация” в реквизите “Количество” стоит свойство
    “Проверка заполнения” в значении “Выдавать ошибку”, что приводит к
    невозможности вводить фактические “излишки” животных при их отсутствии
    по учету базе данных. Для исправления следует установить в реквизите
    “Количество” свойство “Проверка заполнения” в значение “Не проверять”.

    8. Аналогично в документе “Инвентаризация” в реквизите “КоличествоФакт”
    стоит признак “Проверка заполнения” в значении “Выдавать ошибку”, что
    приводит к невозможности вводить фактические “недостачи” животных при их
    фактическом отсутствии в зоопарке. Для исправления следует установить в
    реквизите “КоличествоФакт” свойство “Проверка заполнения” в значение “Не
    проверять”.

    9. Сомнительна установка значения свойства “Иерархический справочник” в
    справочнике “НаправлениеВыбытия”, в то время как в задании не указана
    необходимость какой-либо классификации, кроме того это свойство не
    установлено в аналогичных чисто информационных справочниках:
    ИсточникиПоступления, Клетки.

    10. В модуле объекта документа “ПеремещениеЖивотных” не работает контроль отрицательных остатков, в результате невозможно сделать перемещение животных, даже если они есть на остатке в конкретной клетке, чем есть в наличии на момент проведения документа.
    Для исправления этого в модуле объекта документа “ПеремещениеЖивотных” вместо кода:

    "ВЫБРАТЬ
            |    РазмещениеЖивотныхОстатки.Животное,
            |    РазмещениеЖивотныхОстатки.Клетка,
            |    -РазмещениеЖивотныхОстатки.КоличествоОстаток КАК Нехватка
            |ИЗ
            |    РегистрНакопления.РазмещениеЖивотных.Остатки(
            |            &МоментВремени,
            |            Животное = &Животное
            |                И Клетка = &Клетка) КАК
    РазмещениеЖивотныхОстатки";

    внести код которых учитывающий только отрицательные остатки в момент
    времени включая момент проведения документа:

    "ВЫБРАТЬ
            |    РазмещениеЖивотныхОстатки.Животное,
            |    РазмещениеЖивотныхОстатки.Клетка,
            |    -РазмещениеЖивотныхОстатки.КоличествоОстаток КАК Нехватка
            |ИЗ
            |    РегистрНакопления.РазмещениеЖивотных.Остатки(
            |            &МоментВремени,
            |            Животное = &Животное
            |                И Клетка = &Клетка) КАК РазмещениеЖивотныхОстатки
            |ГДЕ
            |    РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";

    > Шаг 3. Помощь миру Вы уже достаточно опытные специалисты, поэтому нужно поделиться информацией с миром. Мы предлагаем Вам на выбор три варианта третьего шага:
    > 1. Провести мини-семинар (длительностью, например, 20-30 минут) на тему «Основные фишки платформы 8.2» для своих клиентов/коллег, или любую другую тему, касающуюся платформы 8.2. Нам необходимо будет предоставить фотографии с этого мероприятия по адресу mg@spec8.ru.
    > 2. Помочь разобраться со сложным вопросом на каком-либо форуме по 1С. При этом нужно детально подойти к решению проблемы. Нам нужно будет предоставить ссылку на обсуждение.
    > 3. Написать небольшую статью на любую интересную Вам тему по платформе “1С:Предприятие 8.2”. Статью нужно будет опубликовать на сайте с соответствующей тематикой, например, http://nashe1c.ru, http://infostart.ru. Конечно прямой перевод наших видео-материалов в текст с картинками мы не одобряем. Правильным было бы написать о том механизме, который у вас наиболее “срезонировал” во время обучения. Причем написать со своей точки зрения.

    По материалам базового курса был произведен мини-семинар среди сотрудников нашей организации на тему “Новые возможности по решению задач оперативного и бухгалтерского учета в 1С Предприятии 8.2”. Ссылка на фотографии с семинара отправлена по адресу mg@spec8.ru 08 апреля 2015 г.

    • Dobrenko Oleg 10.04.2015 в 20:45

      Андрей, благодарим Вас за развернутый отзыв!
      Финальное задание принято, поздравляем, с успешным окончанием базового курса!