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

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

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

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

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

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

  1. Добрый день!

    Переверзев Владислав Геннадьевич, программист, г. Воронеж

    I. Обратная связь

    Трезво оценил свой уровень программирования и дисциплинированности. По факту буду пересматривать курс несколько раз, особенно при решении рабочих задач. Новым оказались 3 и 4 блоки курса.
    Избавился от заблуждения, что весь багаж знаний по 1С, который накапливался “по кусочкам” из различных источников, нельзя систематизировать.
    Теперь даже сложные типовые конфигурации типа УТ или ЗУП в своем фундаменте не являются уже столь сложными и запутанными.
    Повысилось эффективное время выполенения рабочих задач. Пришлось оптимизировать свой код, написанный ранее.
    Формат шикарен. Он показывает твою дисциплинированность и собранность. Проходил курс совместно с постоянной 8-ми часовой работой. Самый большой плюс – ты можешь смотреть и выполнять задания тогда, когда считаешь нужным и, как в моем случае, можешь сдать задания со следующим потоком. Это я считаю правильным шагом, так как мне требовалось больше времени, некоторые моменты пересматривал по несколько раз. Это из-за небольшого опыта в программировании. Особо отмечу домашние задания, в которых требовалось не просто выполнить задания согласно теории, а еще поразмышлять, оптимизировать данные задания и создать план решения – это в будущем, я уверен, поможет в решении уже настоящих сложных задач оптимизации. В принципе формат оптимален – главное смотреть видеолекции вовремя согласно план-графику. Единственное – необязательные темы все-таки по ходу работы необходимо смотреть тоже – они помогают в решении ряда задач. Большое спасибо разработчикам!

    II.Выполнение практической задачи.

    1. В документе “Поступление” у реквизита “Дата” в свойствах стоит значение заполнения “01.01.1980”. Очистил.
    2. Не выведены на формы документов и рабочий стол ссылки на регистры. Установил видимость в командном интерфейсе.
    3. В документе “ВыбытиеЖивотных” в обработке заполнения дата документа устанавливается как фиксированная 01.01.1980. Очистил.
    4. В документе “ВыбытиеЖивотных” в модуле формы попытка получения константы на клиенте:

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    Корректнее:

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    5. В документе “ВыбытиеЖивотных” в модуле формы некорректна сама проверка:

    Если Объект.Ссылка.Пустая() Тогда

    Корректнее:

    Если Параметры.Ключ.Пустая() Тогда

    6. В документе “Поступление” в модуле формы при создании документа в качестве источника поступления подставляется константа вне зависимости новый ли это документ. Сделал соответствующую проверку:

    Если Параметры.Ключ.Пустая() Тогда
        Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
    КонецЕсли;

    7. Для документа “ПеремещениеТоваров” не настроена основная форма. Создал основную форму документа.
    8. В документе “Инвентаризация” в табличной части Количество и КоличествоФакт теоретически могут быть нулевыми. Убрал проверку заполнения этих реквизитов и установил представление нуля.
    9. В Документе “ВыбытиеЖивотных” в модуле документа в тексте запроса для таблицы ДанныеДокумента необходимо добавить:

    ГДЕ
       ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка

    10. При выводе сообщения о нехватке животного так как номер строки начинается с 1, а индекс с нуля, нужно вместо:

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

    написать:

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

    11. В документе “Перемещение” в модуле формы нужно исправить запрос:

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

    12. По логике задания документ “Инвентаризация” нужно проводить, то есть свойство Проведение необходимо установить в “Разрешить”.
    13. По логике регистр накопления “ВыбытияЖивотных” необходимо сделать Оборотным.
    14. В отчете “Размещение животных” параметр “Период” нужно привести к концу дня. Для этого можно в СКД на закладке Параметры в колонке Выражение написать:

    ДобавитьКДате(КонецПериода(&Период,"День"),"Секунда",1)

    III.Помощь начинающим в конфигурировании платформы – организовал небольшое выступление в компании, вышлите пожалуйста адрес электронной почты, куда можно отослать фото.

    • Dobrenko Oleg 26.01.2015 в 20:22

      Добрый день, Владислав! Благодарим вас за развернутый отзыв :)
      Фото получи, финальное задание принято. Поздравляем с успешным окончанием базового курса!

  2. До прохождения Вашего курса пытался изучать 1С 8 самостоятельно
    книги, интернет о многих вещах знал, но как оказалось после вашего курса
    не совсем правильно понимал, благодаря курсу систематизировал свои накопленные знания (особенно: клиент-серверное взаимодествие, не было цельной картины взаимодействия,различные настройки документов).
    С 1С 8 «плотно» на проектах не работал, были разовые доработки, основная работа была на 1С 7.7
    Формат обучения оказался очень даже удобным, заниматься можно в удобное время.
    Самое сложное в обучении оказалось найти время. Так же удобным средством обучения оказались печатные слайды, если делать пометки очень удобно после прохождения материала вспоминать пройденый материал.
    Курс полностью оправдал мои ожидания.

    P.S. Спасибо Вам за Вашу работу.

    Осипик Дмитрий Викторович, инжинер-экономист, г.Минск, Республика Беларусь

    ФИНАЛ
    1.В документе “Поступление” , при повторном открытии уже сохраненного документа заполняется источник поступления из константы прописан код:

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

    Вариант исправления:

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
        Если Объект.Ссылка.Пустая() Тогда
            Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
        КонецЕсли;
    КонецПроцедуры

    2.В Отчете “Размещение животных” параметр “Период” следует привести к концу дня
    в СКД на закладке Параметры в колонке Выражение пишем:
    ДобавитьКДате(КонецПериода(&Период,”День”),”Секунда”,1)

    3.В Документе “ВыбытиеЖивотных” в модуле формы написан код:

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

    Константы на клиенте не доступны,следует код разместить в процедуре ПриСозданииНаСервере()

    4.В Документе “ВыбытиеЖивотных” в модуле документа написан текст запроса:

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

    следует написать для таблицы ДанныеДокумента доп. условие:

    ГДЕ
       ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка

    5.При установке параметра “МоментВремени” следует использовать тип “Граница” (ВидГраницы.Включая)

    6.При выводе сообщения о нехватке животного следует вместо:

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

    написать:

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

    7.На мой взгляд документ “Инвентаризация” должен проводиться (соответственно в документе “Инвентаризация” проведение указваем “Разрешить”)

    8.В модуле формы документа в процедуре “ЗаполнитьНаСервере()” указваем МоментВремени получения остатков

    9. В документе Перемещение в модуле формы исправляем запрос на:

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

    ПОМОЩЬ МИРУ:
    http://1c-pro.ru/threads/kak-vypolnit-modul-formy-metodom-otkrytformu.52351/#post-337204

    • Dobrenko Oleg 22.12.2014 в 18:45

      Дмитрий, благодарим вас за отзыв!
      Финальное задание принято. Поздравляем, вы в списке финалистов базового курса!

  3. I Парышева Елена Викторовна, Программист 1С, Москва.
    На практике не сталкивалась с регистрами бухгалтерии и регистрами расчета, здесь было новое все. Про заблуждения не помню, но мои знания стали более систематизированными. Стало проще работать с управляемыми формами. Больше понимания в СКД. Стала применять всякие «фишки» о которых не знала раньше, что экономит время. Такой формат очень удобен. Можно повторять материал столько раз, сколько надо. Занимаешься тогда, когда у тебя есть время. Не надо записывать большие объемы, только помечаешь в слайдах где и что проходили. Если есть необходимость – смотришь заново.
    II
    1.) Документ Поступление создается с датой 01.01.80. В стандартных реквизитах удалила Значение заполнения.
    2.) Документ Поступление при открытии созданного документа в источник поступления подставляется значение константы.
    Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
    Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
    КонецЕсли;
    3.) Документ Выбытие создается с датой 01.01.80. В модуле объекта
    Строки закомментарила
    ДанныеЗаполнения = Новый Структура;
    ДанныеЗаполнения.Вставить(“Дата”, ‘19800101’);
    4.) Документ Выбытие в тонком клиенте не открывается. Перенесла код в серверную процедуру.
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Объект.Ссылка.Пустая() Тогда
    Объект.Направление = Константы.ОсновноеНаправление.Получить();
    КонецЕсли;
    КонецПроцедуры
    5.) Документ Инвентаризация. Не дает проставить фактическое количество равное нулю.
    Убрала проверку заполнения.
    6.) Документ Выбытие в процедуре ОбработкаПроведения не правильно считается параметр МоментВремени.
    Запрос.УстановитьПараметр(“МоментВремени”, Новый Граница(МоментВремени(), ВидГраницы.Включая));
    7.) Документ Выбытие при нехватке сообщение позиционируется не на количестве и текст сообщения не совсем корректный. Исправила.
    Сообщение.Текст = “Недостаточно животного “+ВыборкаДетальныеЗаписи.Животное+” в “+ВыборкаДетальныеЗаписи.Клетка+” в количестве “+ВыборкаДетальныеЗаписи.Нехватка;
    Сообщение.Поле = “Животные[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Количество”;
    8.) Документ Перемещение. Если после перемещения остается остаток, то не дает провести документ.
    Надо добавить условие
    |ГДЕ
    | РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";
    9.) Отчет Размещение Животных конец периода не приводится к концу дня.
    В СКД, в параметрах прописала КонецПериода(&Период, "День").
    10.) Регистр Накопления ВыбытияЖивотных сделала Оборотным, вроде так больше смысла.
    III http://infostart.ru/public/319029/

    • Dobrenko Oleg 21.12.2014 в 14:12

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