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

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

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

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

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

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

  1. Темирлан Джашеев 25.05.2014 в 21:53

    Джашеев Темирлан Борисович, руководитель группы АСУ, г.Буденновск
    1. Курс очень помог систематизировать знания, получил развернутое представление о прикладных объектах, работа с метаданными, различные способы работы с регистрами. В курсе рассказано много нюансов при работе с 1С.

    1) Модуль формы документа «ВыбытиеЖивотных»

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

    Контстанты доступны на Сервер, толстый клиент, внешнее соединение, поэтому необходимо получить значение константы на сервере, вызвав серверную процедуру.
    Код модуля формы документа «ВыбытиеЖивотных» будет выглядеть так

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

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

        Возврат Константы.ОсновноеНаправление.Получить();

    КонецФункции

    2) Модуль формы документа «Поступление»

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

    При каждом открытии документа будет меняться источник поступления, необходимо выполнять проверку на «Новый» этот документ

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

    3)Регистр накопления «ВыбытияНакопления» должен иметь вид регистра «Остатки», так как для этого регистра существует один вид движений – это выбытие и не надо хранить остатки.
    4) При создании нового документа «Поступление» дата устанавливается в значение
    01.01.1980 0:00:00, чтобы это изменить надо в стандартных реквизитах для «Дата» удалить значения свойства «ЗначениеЗаполнения».
    5) В обработке проведения документа «ВыбытиеЖивотных» ошибка в установке параметра «МоментВремени», необходимо установить значение «МоментВремени – 1», либо установить значение типа «Граница» с включением границы.
    6) При выводе сообщения необходимо с номера строки -1
    7) Отчет анализ выбытия животных не работает, для его работы необходимо пересчитать итоги регистра накопления «ВыбытияЖивотных»
    8) В документе «ВыбытиеЖивотных дата для новых документов устанавливается «1980 01 01», для исправления необходимо в модуле объекта документа «ВыбытиеЖивотных» убрать следующий код

    Иначе
           
            ДанныеЗаполнения = Новый Структура;
            ДанныеЗаполнения.Вставить("Дата", '19800101');

    9) Заполнение документа «Инвентаризация» происходит без учета даты документа

    &НаСервере
    Процедура ЗаполнитьНаСервере()

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

        Запрос.УстановитьПараметр("&МоментВремени",  Объект.Ссылка.МоментВремени()); 
        Результат = Запрос.Выполнить();

        Объект.Животные.Загрузить(Результат.Выгрузить());

    КонецПроцедуры // ЗаполнитьНаСервере()

    10) В документе «Инвентаризация» в ТЧ «Животные» нельзя установить нулевое значение для реквизита «КоличествоФакт», необходимо установить свойство «Проверка заполнения» в «Не проверять».
    11) Для документов «Поступление» и «ВыбытиеЖивотных» созданных на основании документа «Инвентаризации» необходимо устанавливать дату равную дате инвентаризации.

    Дата = ДанныеЗаполнения.Дата;

    12) В обработке проведение документа «ПеремещениеЖивотных» в запросе нет условия проверки на отрицательность «КоличествоОстаток»

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

    • Татьяна Гужавина 09.04.2014 в 07:23

      Здравствуйте, Николай! По нашим данным Ваше финальное задание уже одобрено.

  3. Здравствуйте!
    Таранов Николай Иванович, заместитель руководителя отдела проектов, г. Ростов-на-Дону.

    1. Обратная связь по курсу.
    Курс позволил узнать большое количество мелких моментов, с которыми еще не сталкивался. Понравились структурированность изложения и подробные разборы домашних заданий. Готовлюсь вести курсы по бухгалтерским задачам, поэтому было полезно освежить знания в этой области.
    Также понравилось, что освещается много моментов, обойденных вниманием в официальной литературе (например, особенности преобразования типов данных).
    Спасибо, было очень интересно!

    2. Практическое задание.
    Удалось найти следующие ошибки:
    1) В документе “ПеремещениеЖивотных” не хватает условия на отрицательные остатки. В результате в запрос попадают данные и по животным с

    положительными остатками. в запрос необходимо добавить условие:
    ГДЕ
    РазмещениеЖивотныхОстатки.КоличествоОстаток < 0
    2) В документе "ВыбытиеЖивотных" в запросе при внутреннем соединении с вложенным запросом не хватает условия на конкретный документ
    "ВыбытиеЖивотных":

    ГДЕ

    ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка
    3) Регистр накопления "ВыбытияЖивотных" по смыслу задачи должен быть оборотным (при текущей реализации в виде остаточного, как минимум, регистр не будет сходиться в ноль)
    4) В форме документа "ВыбытиеЖивотных" в процедуре при открытии в тонком клиенте не будет работать код:
    Объект.Направление = Константы.ОсновноеНаправление.Получить();
    Для решения проблемы необходимо выполнять эту строку в обработчике формы "ПриСозданииНаСервере"
    5) Документы "ВыбытиеЖивотных" в качестве значения параметра "МоментВремени" принимает МоментВремени(). Поэтому остатки в результате запроса будут получены до проведения документа, а не после. В результате ничего не помешает пользователю сделать "ВыбытиеЖивотных" в минус.
    Для устранения проблемы нужно передавать в параметр "МоментВремени" значение

    Новый Граница(МоментВремени(), ВидГраницы.Включая)

    6) При создании документов "Поступление" и "ВыбытиеЖивотных" на основании документов "Инвентаризация" необходимо проверять, не были ли уже созданы поступления или выбытия на основании этой же инвентаризации, если были, предупреждать об этом
    7) В документе "Инвентаризация" поле "КоличествоФакт" является обязательным к заполнению. Поэтому не получится указать фактическое количество, равное 0. Для устранения проблемы необходимо в свойствах реквизита "КоличествоФакт" установить свойство "ПроверкаЗаполнения" в значение "Не проверять"
    8) В документе "Поступление" по умолчанию устанавливается значение даты "01.01.1980 0:00:00". Для устранения проблемы нужно в свойствах
    стандартного реквизита "Дата" очистить свойство "Значение заполнения"
    9) В документе "Инвентаризация" при заполнении в параметрах виртуальной таблицы не указывается "Период". Поэтому если заполнить документ "Инвентаризация" за прошедшую дату, он будет заполнен актуальными остатками. Для устранения проблемы необходимо передавать в параметр "Период" виртуальной таблицы дату документа.
    10) Источник поступления в документе "Поступление" в модуле формы необходимо заполнять только для новых документов, иначе это реквизит будет затираться значением по умолчанию в старых документах. Для решения проблемы нужно поместить заполнение реквизита внутрь условия:
    Если Объект.Ссылка.Пустая() Тогда
    11) В обработке заполнения документа "ВыбытиеЖивотных" нужно убрать ветку "Иначе":

    Иначе 
        ДанныеЗаполнения = Новый Структура;
        ДанныеЗаполнения.Вставить("Дата", '19800101');

    3. Помощь миру. Выбрал второй вариант – помощь на форуме. Ссылка:
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=625548#625548

    • Dobrenko Oleg 08.04.2014 в 08:07

      Николай, благодарим за обратную связь по курсу!
      Решение принято, поздравляем вы в списке финалистов!

  4. Дмитрий 07.04.2014 в 10:51

    Добрый день.
    Шаг №3.

    Выбрал второй вариант – помощь на форуме:
    http://www.forum.mista.ru/topic.php?id=704383
    Мой ник: Dmitlion.

    • Dobrenko Oleg 07.04.2014 в 12:18

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

  5. Шаг 1.

    Медвежонков Василий Сергеевич
    Программист 1с
    Иркутск
    1. Считаю, что работа по материалам курса очень полезной для меня. Все разрозненные сведения собираются в единое целое.
    Появляется уверенность в своих силах и знаниях. Особенно ценно для меня было узнать как выполняется проведение документов по регистрам накопления.
    Практически с нуля узнал понятия и механизмы бухгалтерского учета, Расчета заработной платы.
    Разобрался с контекстом выполнения программного кода в 1с 8.2. Узнал как представяются ДанныеФормы на клиенте.
    Буду использовать параметр стандартный период в СКД. Научился разбираться в запросах. Использовать вложенные запросы. Отборы в параметрах виртуальных таблиц.
    2.На практике работаю с платформой 1с предприятие 8 УПП.
    Использовал полученные знания для корректной записи наборов Записей в регистр сведений.
    Очень помогло мне приобретенное понимание использования момента времени документа и Границы.
    Создавал Обработки по помещению данных выполнения запроса в Таблицу на управляемую форму.
    3. Формат обучения для меня очень подходит. Можно в любой момент остановить просмотр видео и отвлечься на что-то другое,
    либо повторно пересмотреть непонятные моменты. В отличие от очных занятий, где отвлечение в каком-то месте грозит непониманием всей темы.
    По поводу формы принятие результатов: отсутствие проверки на ошибки и оценок несколько демотивирует, поскольку “все равно примут”.
    С другой стороны есть разбор решения домашнего задания, что компенсирует свои недоработки.
    Шаг 2.
    1-я ошибка: При открытии сохраненных документов “Поступление” неправильно отображается реквизит “Источник поступления”.
    Так как в процедуре “При Создании на сервере” не проверяется это новый документ или нет при изменении значения реквизита на константу.
    2-я ошибка: В форме документа “Выбытие” Реквизит направление выбирается из константы в процедуре ПриОткрытии.
    Но эта процедура выполняется на клиенте, где недоступны константы. Нужно было сделать эту проверку в процедуре “ПриСозданииНаСервере”.
    3-я ошибка: (Косвенная) – Не создан и не сохраняется значения реквизита “Источник поступления” в Регистре накопления “Размещение животных”
    из документов “Поступление” и “Выбытие животных” при проведении. Поэтому при построении отчетов нужно будет обращаться к документам, а не к регистру накопления.
    4-я ошибка: В обработке проведения документа “Выбытие животных” в запросе во внутреннем соединении при выборе данных из документа
    не сделан отбор по ссылке, поэтому может быть выбран неверный НомерСтроки.
    5-я ошибка: (Косвенная) – В том же запросе при установке условий на виртуальную таблицу остатков во вложенном запросе не указано ключевое слово “Различные”,
    поэтому теоретически запрос будет выполняться дольше.
    6-я ошибка: Неправильно установлен параметр моментВремени в этом запросе. Сейчас не получаются записи, которые сделал сам документ. Для корректной работы запроса
    нужно проверять на оперативный и неоперативный режим и вместо момента времени использовать границу с видом включая.
    7-я ошибка: (Синтаксис) Неправильно формируется текст надписи при нехватке в документе выбытие. Лишний символ “в”.
    (Например: Недостаточно животного в Медведь).
    8-я ошибка: Неправильное указание поля в сообщении пользователю Нужно указывать индекс, а не номер строки табличной части (т.е. Номерстроки-1).
    А также логичнее было бы привязать сообщение к колонке количество, а не к колонке животное.
    9-я ошибка: (Косвенная) В обработке заполнения в документе Выбытие не понятно назначение создания структуры из данныхзаполнения при условии Иначе.
    10-я ошибка: Неправильно указан вид регистра накопления “Выбытия животных”. Животные только выбывают в этом регистре,
    поэтому логичнее было бы сделать вид регистра Обороты, а не Остатки.
    11-я ошибка: В запросе по нахождению нехватки в документе ПеремещениеЖивотных нет условия: количествоОстаток меньше нуля.
    Поэтому при положительном остатке всегда будет выдаваться сообщение об отрицательной нехватке и документ не будет проводиться.
    12-я ошибка: Не выставляется признак модифицированности документа Инвентаризация после нажатия на кнопку Заполнить.
    13-я ошибка: При заполнении документа Инвентаризация можно было бы брать данные на дату документа.
    А при создании на основании устанавливать дату создаваемого документа из текущего документа Инвентаризация.
    14-я ошибка: Невозможно сохранить нулевое количество животных по факту в документе Инвентаризация.
    Нужно изменить свойство “Проверка заполнения” реквизита количествоФакт табличной части Животные на “не проверять”.
    Шаг 3.
    Помощь миру.
    1)http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=625499#625499
    2)http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=625455#625455
    3)http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=625467
    4)http://www.forum.mista.ru/topic.php?id=704453
    5)http://www.forum.mista.ru/topic.php?id=704460

    • Dobrenko Oleg 08.04.2014 в 08:05

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

  6. Так как у меня не было практики по программированию управляемых форм, было очень много полезной практической информации по управляемым формам, как оказалось – все не так и сложно. Огромное спасибо разработчикам курса за доступное изложение материала, данный материал очень практичен и всегда под рукой для освежения в памяти в случае надобности, правда, хотелось бы высказать пожелание разработчикам курса, чтобы в будущем предусмотрели возможность просмотра на планшетных компьютерах.
    Наряду со знаниями по программированию приложений в режиме управляемых форм, много практических знаний и советов по оптимальному написанию текстов запросов, что помогает при текущей работе при создании СКД отчетов и внешних обработок.
    По сравнению с очным вариантом обучения очень удобно планировать график просмотра материала и выполнения домашних заданий, хотя учитывая текущую загруженность на работе, было очень тяжело идти по графику.
    Ярдыков Александр Егорович
    Ведущий инженер программист ОАО «Водоканал» г. Чебоксары.

    Шаг 3. Помощь миру.

    Вариант 2. помощь на форуме:
    http://www.forum.mista.ru/topic.php?id=704383
    http://www.forum.mista.ru/topic.php?id=704442

    • Dobrenko Oleg 07.04.2014 в 10:33

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

  7. Совершенно новыми были для меня расчетные задачи. Спасибо за хорошее разъяснение этой темы.
    Новым было также различные места компиляции различных модулей, способы обеспечения устойчивости системы, особенности виртуальных таблиц регистров бухгалтерии и регистров расчетов, свойство «Записывать» набора записей.

    Формат обучения очень удобен, не нужно никуда ехать, непонятные моменты можно просмотреть еще раз, задать вопросы. Намного лучше, чем очное обучение. Материал разъясняется понятно и подробно.

    1) Документ выбытие животных – заполнение реквизита должно быть на сервере
    2) РЕГИСТР НАКОПЛЕНИЯ Выбытия животных должен быть вида обороты
    3) выбытие животных – при создании нового проставляется неверная дата, т.к.

    для реквизита Дата в свойствах указано “Заполнять из данных заполнения”, а в

    обработке заполнения в ветке “иначе” заполняется неверная дата
    4) док.Поступление – при создании нового проставляется неверная дата- для

    рекв.Дата установлено значение заполнения “01.01.1980 0:00:00”)
    И ИсточникПоступления нужно заполнять только для новых документов

    док. выбытие животных – при проведении в запросе ошибка:

    5) момент времени в параметрах запроса – это Новый Граница(МоментВремени(),

    ВидГраницы.Включая)
    6) при выводе сообщения об ошибке от номера строки нужно отнять 1
    7)в запросе при выборе номера строки не установлено условие по ссылке

    8) док.Перемещение животных: ошибка в запросе при проведении:
    нужно добавить условие
    “|ГДЕ
    |РазмещениеЖивотныхОстатки.КоличествоОстаток < 0"

    9) док.Инвентаризация – в табличной части нужно дать возможность вводить

    количество = 0, если животного нет. Сейчас работает проверка на ненулевые

    значения.(нужно убрать проверку на незаполненные значения для табличной

    части)
    10) Сейчас можно открыть любой стаый документ Инвентаризация и на основании

    него ввести сколько угодно Поступлений животных. Чтобы этого избежать, В

    документе Поступление создать реквизит Основание и заполнять его при

    создании ссылкой на док.Инвентаризация. Далее нужно выполнять проверку в

    документе поступления в обработке заполнения – если документ Поступление уже

    создан, то еще один создавать нельзя:

    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Инвентаризация") Тогда
           
            Запрос = Новый Запрос;
            Запрос.Текст =
            "ВЫБРАТЬ
            |   Поступление.Ссылка
            |ИЗ
            |   Документ.Поступление КАК Поступление
            |ГДЕ
            |   Поступление.Основание = &ДанныеЗаполнения";
           
            Запрос.УстановитьПараметр("ДанныеЗаполнения",

    ДанныеЗаполнения);
           
            Результат = Запрос.Выполнить();
           
            Если Не Результат.Пустой() Тогда
               
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "На основании данного документа

    уже есть документ Поступления";
                Сообщение.Сообщить(); 
               
                СтандартнаяОбработка = Ложь;
            Иначе
    //заполнение документа...
    • Dobrenko Oleg 07.04.2014 в 10:31

      Annet, благодарим за отзыв!
      Практическое задание принято, ждем от вас отчета по шагу №3.

  8. P.S.
    Михейкин Денис Васильевич.
    Инженер-программист.
    Беларусь. Минск.
    Компания по оптовой и розничной торговле.

    Шаг 1. Обратная связь по курсу.
    Первые впечатление: курс разжеван настолько, что осталось лишь проглотить. Достаточно подробно сделаны видео уроки по теоретическому материалу и довольно детально предоставлено эталонное ДЗ, что приятно удивило. Понравилось то, что ДЗ разбирались так, словно предполагалось — участник курсов теорию мог и не смотреть, не было ссылок на главы той или иной части теоретического материала, как это обычно бывает в традиционном обучении, что зачастую, лично меня, раздражает. Поскольку я уже работаю с платформой 1с8, то сказать, что я узнал очень много нового — не могу. Тем не менее, были фишки, о которых я не знал и уже успел применить на работе. В частности не документированная особенность оператора ВЫБОР в запросе и вызов окна отметки элементов списка значений. Казалось бы, мелочь, а иногда бывает очень полезна.
    Поскольку с областью автоматизации бухгалтерского учета и расчета ЗП мне пока плотно работать не приходилось, эти темы представляли большой интерес. Благодаря курсу пришло понимание того, как устроены регистры для автоматизации данных областей, осталось теперь все полученные знания применять на практике. Понравилось в курсе также то, что были разборы реального хранения таблиц в базе данных, всегда интересно, что творится внутри.
    Формат обучения довольно удобный в плане того, что не нужно куда-то ехать, на очные курсы, срываться с работы. Респект ребятам, что придумали такую форму. В любое время, пришел с работы, расположился как можно удобнее и вперед вникать в теорию. Над ДЗ конечно иногда приходилось потрудиться. Единственное что доставило неудобство — это сроки. Понимаешь, что мастер группа не вечна и нужно держать темп. С одной стороны — это подстегивает, с другой — иногда напрягало. Все же таки курс объемный и что бы ни отставать, нужно заниматься регулярно. А когда пропускаешь, приходится потом нагонять, что тяжеловато, ввиду того, что еще есть работа. И все же это не такой уж и большой минус в этой форме обучения. Всегда можно перемотать урок, если что-то пропустил, не понял или уснул где-то по середине)).
    Напоследок, кому бы я посоветовал дынный курс? Вспоминаю себя, когда только-только познакомился с 1С вообще. Конечно, с тех пор уже пересмотрел кучу бесплатных видео, прочел некоторые книги и теперь уже смотрел этот курс совсем с другого ракурса, нежели бы я его начал смотреть тогда, на первых шагах. В связи с этим, сложилось впечатление, что курс будет полезен тем, кто уже хотя бы немного поработал с платформой либо занимался по другим курсам, благо нынче их достаточно, те же: «Программирование в 1С за 21 день», «1С: Программист — Быстрый старт в профессию!». Там объем поменьше и задания по проще. И если этот курс проходить уже, будучи немного подготовленным, то и отдача от него будет больше. Поскольку есть вещи, которые начинают хорошо доходить, после определенной практики. Например, те же запросы, можно смотреть кучу видео, читать тонны книг, но пока не попробуешь своими руками что-то с ними делать, покрутить таблицы, выжать из них то, что нужно, вот тогда приходит некое понимание. А курс в данный момент устранит пробелы и подскажет методологию использования.
    Спасибо авторам, за сохраненное время! Ведь время — это бесценный ресурс!
    Шаг 2. Практическое задание.
    1. В отчете “Размещение животных” добавил 1 секунду в дате, что бы отчет показывал результат с точностью до секунды. В противном случае, если, к примеру, документ Перемещение будет проведен датой “01.04.2014 23:59:59”, то отчет на эту дату не покажет изменения, внесенные документом, нужно устанавливать начало следующего дня.
    2. В модуле формы документа “ВыбытиеЖивотных”, вынес обращение к константе в серверную функцию.
    3. При создании нового документа “ПеремещениеЖивотных”, дата по умолчанию заполняется значением “01.01.1980 0:00:00”. Для того, что бы заполнялась текущая дата, очистил значение свойства “Значение заполнения” стандартного реквизита “Дата”.
    4. В обработке проведения документа Выбытие животных, изменил установку параметра запроса МоментВремени. Вместо передачи момента времени на прямую использовал метод граница, в противно случае контроль остатков отрабатывал не корректно.
    5. Документ “ПеремещениеЖивотных” не проводился, даже при наличии остатка. В запрос добавил условие, на проверку отрицательного остатка.
    6. Регистр “ВыбытиеЖивотных” наверняка должен быть оборотным. У меня 2 довода:
    1-й: Его ресурс может изменяться только в одну сторону, то есть увеличение выбытий.
    2-й: он является аналогом регистра “Продажи” из той же конфигурации “Управление торговлей”.
    7. В документе “ВыбытиеЖивотных”, при не хватке количества, выдается сообщение “Недостаточно животного в Лев в Клетка большая 150 м2 в количестве 10”. Первый предлог “в” лишний. Это скорее эстетическая ошибка, работе конфигурации она не мешает, поэтому не знаю, можно ли ее отнести к ошибке.
    8. В документе “ВыбытиеЖивотных”, в случае проведения с недостаточным количеством, диагностическое сообщение не было корректно привязано к задуманному полю “Животное” из табличной части “Животные”. Для решения проблемы, при указании значения свойства “Поле” объекта “Сообщение” вместо значения:
    “Животные[“+ВыборкаДетальныеЗаписи.НомерСтроки+”].Животное”, записал значение:
    “Животные[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Животное”. Поскольку обращение к коллекции происходит по индексу, а не по номеру строки. А, как известно: номер строки начинается с 1, а индекса – с 0. То есть номер строки всегда больше номера индекса на единицу(Индекс = НомерСтроки – 1).
    9. При нехватке животных в момент проведения документа “Перемещение животных”, выдается сообщение, без привязки к какому-либо реквизиту документа. Добавил для удобства, что бы сообщение было привязано к реквизиту “Количество”. То есть при проведении с большим количеством, чем имеется в наличии, сообщение укажет на реквизит количество с позиционированием курсора в данном поле, что позволит быстро скорректировать его и провести документ.
    10. При указании одинакового места выбытия и прибытия животного, в документе “Перемещение животных”, он проводился без всякой диагностики. Но такой документ лишен смысла, а записи в регистре он создает. Для оптимизации добавил проверку на заполнения этих реквизитов одинаковыми значениями. В случае из совпадения, отменяется проведение документа и выдается диагностическое сообщение пользователю.
    11. Во всех документах есть возможность указать отрицательное значение в реквизитах количество. В связи с этим, можно запросто создать минусовые остатки в регистрах, что приведет к отражению не корректных результатов в отчетах. Для устранения данной возможности вносить не корректные данные, в каждом документе для реквизита “Количество”, установил значение свойства “Неотрицательное” равным Истина.

    Шаг 3. Помощь на форуме.
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=625408#625408

    • Dobrenko Oleg 07.04.2014 в 10:21

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

  9. Геннадий Сергеев 06.04.2014 в 12:39

    Здравствуйте!

    1.Обратная связь
    Сергеев Геннадий Валентинович, зам. директора, г.Москва.

    Для многолетнего практика на платформе 7.7. , базовый курс дал много нового материала. Общее представление о работе платформы 8, систематизацию очевидных и, казалось бы, не очевидных вещей-нюансов. Короче, тот базис, который помогает в решении практических задач.

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

    По мере получения знаний и навыков из курса, все используется в практической работе. Т.е. происходит МОНЕТИЗАЦИЯ знаний реально. Монетизация зависит от времени и качества исполнения, а курс в этом реально способствует.
    Формат курсов для меня оказался весьма привлекательным. В повседневной работе регулярно обращаюсь к видео материалам как к справочнику.

    2. Практическое задание
    Проблема 1: При создании документа поступления (по умолчанию) дата документа 01.01.1980.
    Решение: Очистка поля «значение заполнения» в свойствах стандартного реквизита Дата.
    Проблема 2: При открытии существующего документа поступления реквизит «источник» перезаполняется из константы.
    Решение: Добавить условие на пустое значение ссылки объекта в процедуре ПриСозданииНаСервере для чтения константы ОсновнойИсточник при заполнении ИсточникаПоступления.
    Проблема 3: Проведение документа поступления с незаполненным реквизитом Источник.
    Решение: Установка для реквизита свойство проверка заполнения — выдавать ошибку.
    Проблема 4: Для документа Выбытие Животных (если документ вводится не на основании Инвентаризации) подставляется дата документа 01.01.1980. Решение: Удалил строки модуля ОбработкаЗаполнения относящиеся к ДанныеЗаполнения.
    Проблема 5: При проведении Документа выбытие животных неверно определяется наличие животных.
    Решение: При указании Момента времени учитывать ВидГраницы.Включая.
    Проблема 6: В процедуре ПриОткрытии формы документа ВыбытиеЖивотных, свойство глобального контекста Константы не доступно на клиенте. Решение: Чтение значения Константы перенести в функцию формы с тегом &НаСервереБезКонтента, В процедуре ПриОткрытии осуществить обращение к данной функции.
    Проблема 7: В документе ВыбытиеЖивотных, при выдаче сообщения о нехватке животных, в табличной части неверна привязка к НомеруСтроки. Решение: НомерСтроки требуется уменьшить на 1.
    Проблема 8: В процедуре проведения Документа ВыбытиеЖивотных вложенный запрос ДанныеДокумента работает некорректно. Решение: Требуется добавить отбор по регистратору.
    Проблема 9: Регистр накопления ВыбытияЖивотных увеличивается только в одну сторону. Это приводитедет к увеличению таблиц остатков и замедлению работы системы.
    Решение: Сделать регистр ВыбытияЖивотных оборотным.
    Проблема 10: Для документа Перемещение животных неверно работает контроль остатков при проведении.
    Решение: Необходимо добавить в запрос отбор только отрицательных остатков РазмещениеЖивотныхОстатки.КоличествоОстаток < 0.
    Проблема 11: В Документе Инвентаризаци, по кнопке Заполнить, вычисляются актуальные остатки, а не на дату документа.
    Решение: Нужно изменить установку параметра запроса
    Запрос.УстановитьПараметр("Дата",КонецДня(Объект.Дата));
    Проблема 12: В документе Инвентаризация невозможно отразить нулевой остаток (фактический или плановый остаток).
    Решение: Убрать значение свойства проверка заполнения Выдавать ошибку.
    Проблема 13: Не приводится к концу дня период Отчета размещение животных.
    Решение: В СКД (на закладке Параметры), в колонке выражение написать КонецПериода(&Период, "День")

    3.Помощь миру
    фотогрОтправляюафии по мини семинару "Особенности использования платформы" на mg@spec8.ru

    • Dobrenko Oleg 07.04.2014 в 10:28

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

  10. Обратная связь.
    Из базового курса узнала очень много новой полезной информации. Работаю в данной сфере чуть больше полугода. После изучения данного курса, начала на некоторые вещи смотреть по другому, и стараться максимально оптимизировать написанный год. Так же регистры бухгалтерии и расчет – это вообще совершенно новое для меня, так как не сталкивалась еще с ними, они мне казали неприступной крепостью, но теперь (если конечно еще пару раз пересмотреть данный курс) я с ними справлюсь, если возникнет необходимость. Действительно в курсе очень хорошо уточняются мельчайшие детали, которые полезно знать. Формат обучения с одной стороны очень удобный, можно заниматься в своем темпе, но с другой стороны, если начинаешь по каким то причинам отставать очень сложно расспланироваться время самостоятельно, чтобы нагнать курс.
    Мельникова Юлия Викторовна, программист, город Воронеж

    Практическое задание.
    1) документ Поступление. При Создании по-умолчанию подставляется дата 01.01.1980, устанавливается в свойствах реквизита. Очищаем.
    2) Документ Поступление. ФормаДокумента. Процедура ПриСозданииНаСервере. Значение ИсточникПоступления заполняется константой ОсновнойИсточник. Добавила условие.

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

    3) Возможная ошибка. Документ Поступление. Добавила реквизит ИстоникПоступления в обязательные для заполнения.
    4) Документ ВыбытиеЖивотных. Добавление реквизита направления в обязательные для заполнения.
    5) документВыбытиеЖивотных. Процедура ПриОткрытии. Происходит получение константы на клиенте. Создала процедуру на сервере ПолучитьОсновноеНаправление(), в которой получется константа. Из проц ПриОткрытии вызываем эту процедуру.
    6) Документ ВыбытиеЖивотных. Модуль объекта. При заполнении происходит подставление даты по-умолчанию 01.01.1980. Убираем данную ветку оператора Если.
    7) Документ ВыбытиеЖивотных. Модуль объекта. Обработка проведения. При установлении параметра запроса МоментВремени не включается граничное значений. Заменяем на Границу.
    Запрос.УстановитьПараметр(“МоментВремени”, Новый Граница(МоментВремени(),

    ВидГраницы.Включая));
    8) Документ ВыбитиеЖивотных. МодульОбъекта. ОбработкаПроведения. При выводе сообщения об ошибке происходит привязываение сообщение к номеру строки (начинается с 1), а не к индексу. Добавлено -1.

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

    9) Документ ПеремещениеЖивотных. МодульОбъекта. ОбработкаПроведения. В запросе выбираются вес записи по данным измерениями, а при проверке наличия остатков, необходимо проверять только отрицательные значения. Изменен запрос

    |ГДЕ
    |   РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";
    10) Регистр накопления Выбытие имеет значения Остатки. Заменено на Обороты.

    11) Возможная ошибка. Документ Инвентаризация. При заполнении не учитывается дата, на которую берутся остатки. Не является ошибкой. если задумано проводить инвентаризацию текущей датой. Исправляется добавлением условия в запрос.
    12) Возможная ошибка. Добавление в свойствах Количество документов значение Неотрицательное.

    Помощь миру.
    Провела мини семинар на работе. Рассказала новым сотрудникам-стажерам про язык запросов и в основное о некоторых моментах платформы в виде ответов на вопросы. которые из интересовали. Фото отправила на почту mg@spec8.ru.

    • Dobrenko Oleg 07.04.2014 в 10:26

      Юлия, благодарим за обратную связь!
      Практическое задание принято, фото получили. Поздравляем с успешным окончанием курса!

  11. Максим В. 05.04.2014 в 11:24

    Решение финального домашнего задания

    Шаг 1. Обратная связь по курсу

    1. Что нового Вы узнали из базового курса по программированию?

    Во-первых – работа с управляемыми формами, СКД. Во-вторых работа с регистрами расчета, бухгалтерии. Были пробелы. В третьих во всех темах было что-то новое и интересное, а при изучении уже знакомых вопросов, материал раскладывался «по полочкам»

    2. От каких заблуждений избавились?

    В основном заблуждения были по поводу понимания работы тех или иных механизмов в 8.2, теперь все встало на свои места.

    3. Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом вам удалось применить новые навыки (какие результаты были достигнуты);

    Крупных проектов, как таковых, не было, но по работе постоянно приходится сталкиваться с различными программными решениями 1С у клиентов. Соотвественно каждый день приходится разбираться в чем-то новом, осваивать новые механизмы работы 1С. И здесь как раз очень помогает структурированность ваших курсов, когда необходимо разобраться в той или иной теме.

    4. Насколько удобен, оказался формат обучения в сравнении с очным форматом?

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

    ————————–

    Шаг 2. Практическое задание

    1) Документ Поступление. В модуле формы вместо процедуры ПриСозданииНаСервере, создать клиентскую процедуру ПриОткрытии() и из неё уйти в серверную процедуру. В которой, при условии, что это новый документ, заполнить реквизит ИсточникПоступления значением константы ОсновнойИсточник.
    2) Документ Поступление. Нет смысла в заполнении Стандартного реквизита Дата значением заполнения 01.01.1980 0:00:00
    3) Документ ВыбытиеЖивотных. В модуле формы, в клиентской процедуруе ПриОткрытии() нельзя читать значение константы, поэтому и из неё уйти в серверную процедуру. В которой, при условии, что это новый документ, заполнить реквизит Направление значением константы ОсновноеНаправление.
    4) Документ ВыбытиеЖивотных. ОбработкаПроведения(). Строку: Движения.РазмещениеЖивотных.Записывать = Истина; УБРАТЬ, т.к. далее происходит запись движений напрямую.
    5) А при записи движений, вместо Движения.Записать(); надо указать имя регистра: Движения.РазмещениеЖивотных.Записать();
    6) Во вложенном запросе, при формировании таблицы ДанныеДокумента, нужно добавить условие ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка.
    7) Этот же запрос, при установке параметров запроса, вместо МоментВремени() установить значение Новый Граница(МоментВремени(), ВидГраницы.Включая)
    8) Далее, сообщая об ошибке по номеру строки, надо значение номера строки уменьшать на единицу
    9) Документ ПеремещениеЖивотных. ОбработкаПроведения(). Строку: Движения.РазмещениеЖивотных.Записывать = Истина; УБРАТЬ, т.к. далее происходит запись движений напрямую. А при записи движений, вместо Движения.Записать(); надо указать имя регистра: Движения.РазмещениеЖивотных.Записать();
    10) Запрос необходимо дополнить условием:
    |ГДЕ
    | РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";

    11) Хорошо бы при перемещении или прибытии животных проверять пустая клетка или в ней уже есть какое-то животное, если это другое животное, то выдавать предупреждение.
    12) Регистр ВыбытияЖивотных надо сделать оборотным, т.к. выбытие увеличивается в одну сторону.

    ——————————

    Шаг 3. Помощь миру

    Буквально пару месяцев назад, на работе мой руководитель поставил задачу провести обучение некоторых работников клиентов основам Конфигурирования в системе 1С. Мне пришлось подготовить краткий теоретический курс, который включал в себя основные понятия, объекты конфигурации, встроенный язык 1С, работа с запросами, введение в администрирование. Всего курс занял около 16 ак.часов. При подготовке курса очень помогли знания полученные в Базовом курсе, а в кое в чем
    пришлось даже разбираться уже походу обучения сотрудников. Так что это было полезно обеим сторонам ))). Вот только, к сожалению, фоток того обучения я не сделал, т.к. не знал что это понадобится для участия в финале Базового курса. И сидеть на форумах, тоже, к сожалению, нет такой возможности, т.к. большую часть времени помимио работы, трачу на
    самообучение по вашим и некоторым другим курсам.

  12. Шаг 1.
    Ольга Викторовна Дмитриева, программист 1С, Санкт-Петербург.
    В качестве программиста с 1С работаю чуть меньше года. До этого 10 лет работала бухгалтером и чувствовала себя не на своём месте. И поскольку такая резкая смена деятельности без дополнительного набора опыта и самостоятельного обучения является очень непростой задачей, я старалась учиться, где только возможно. В ваших курсах я нашла прекрасное сочетание доходчивого изложения и полноты подачи материала. Дальше уже никуда искать не пойду, с вами останусь надолго :)
    Формат обучения, если сравнивать с очным, имеет сплошные преимущества. Во-первых – расписание. Можно заниматься хоть днём, хоть ночью, хоть неделю подряд и неделю отдыхать. Правда, это требует определённой внутренней дисциплины, отсутствия авралов на работе и хорошо построенных домочадцев, не мешающих заниматься. Если ничего этого нет – будет тяжело :)
    Во-вторых – формат подачи материала. Очень помогает, когда наряду с теорией видишь практическую реализацию изучаемого вопроса, можешь разобрать пример преподавателя и потом сделать то же, но самостоятельно, в домашнем задании. Очень стимулирует к выполнению ДЗ выдача решений только после собственного отчёта, т.к. в эталонных решениях много именно практической информации, которая при отсутствии опыта здорово помогает.
    Очень важно то, что к любому материалу можно возвращаться неоднократно, и то, что он состоит из множества маленьких уроков, облегчает дальнейшее нахождение нужной информации и экономит время.
    Благодаря Базовому курсу я хорошо структурировала уже имеющиеся знания и получила практический опыт решения бухгалтерских и расчётных задач. То, что до курса занимало у меня целый день, я теперь пишу за час. Сложные рабочие задачи перестали представлять из себя проблему.

    Шаг 2.
    1. Документ Поступление создаётся по умолчанию с датой 01.01.1980 12:00:00. На текущую её надо менять вручную. Это происходит потому, что у стандартного реквизита Дата задано значение заполнения «01.01.1980 0:00:00». Это значение необходимо очистить.
    2. То же происходит с датой в документе ВыбытиеЖивотных, но по другой причине – здесь дата задаётся в обработчике ОбработкаЗаполнения. Здесь можно или ставить текущую дату, или совсем убрать добавление даты в данные заполнения.
    3. В документе Поступление проводится рождение без проверки, что в зоопарке должен быть хотя бы один родитель. Может и не ошибка, но я бы добавила проверку: в обработке проведения, если ИсточникПоступления это «рождение на территории», то запросом к регистру РазмещениеЖивотных получаю животных по списку документа, имеющихся в наличии на момент проведения, и при формировании проводок проверяю, есть ли в зоопарке потенциальный родитель. Если родителя нет, то выдаю пользователю сообщение об ошибке и не провожу документ, в остальных вариантах поступления проверку не провожу.

    Процедура ОбработкаПроведения(Отказ, Режим)
        Рождение = Ложь;
        ЖивотныеВНаличии = Неопределено;
        Движения.РазмещениеЖивотных.Записывать = Истина;
        Если ИсточникПоступления = Справочники.ИсточникиПоступления.НайтиПоКоду("000000001") Тогда
            Рождение = Истина;
            Запрос = Новый Запрос;
            Запрос.Текст =
                "ВЫБРАТЬ
                |   РазмещениеЖивотныхОстатки.Животное
                |ИЗ
                |   РегистрНакопления.РазмещениеЖивотных.Остатки(
                |           &Дата,
                |           Животное В
                |               (ВЫБРАТЬ РАЗЛИЧНЫЕ
                |                   ПоступлениеЖивотные.Животное
                |               ИЗ
                |                   Документ.Поступление.Животные КАК ПоступлениеЖивотные
                |               ГДЕ
                |                   ПоступлениеЖивотные.Ссылка = &Ссылка)) КАК РазмещениеЖивотныхОстатки";
            Запрос.УстановитьПараметр("Дата", Дата);
            Запрос.УстановитьПараметр("Ссылка", Ссылка);
            Результат = Запрос.Выполнить();
            ЖивотныеВНаличии = Результат.Выгрузить();
        КонецЕсли;
        Для Каждого ТекСтрокаЖивотные Из Животные Цикл
            Если Рождение
                И ЖивотныеВНаличии.Найти(ТекСтрокаЖивотные.Животное,"Животное") = Неопределено Тогда
                Отказ = Истина;
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Это животное не могло быть рождено не территории зоопарка!";
                Сообщение.Поле = "Животные[" + (ТекСтрокаЖивотные.НомерСтроки - 1) + "].Животное";
                Сообщение.Сообщить();         
            КонецЕсли;
            Если НЕ Отказ Тогда
                Движение = Движения.РазмещениеЖивотных.Добавить();
                Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
                Движение.Период = Дата;
                Движение.Животное = ТекСтрокаЖивотные.Животное;
                Движение.Клетка = ТекСтрокаЖивотные.Клетка;
                Движение.Количество = ТекСтрокаЖивотные.Количество;
            КонецЕсли;
        КонецЦикла;
    КонецПроцедуры

    4. При открытии уже сохранённого в базе документа Поступления Источник поступления во всех случаях «Рождение на территории зоопарка», независимо от варианта, сохранённого в документе. Это происходит потому, что Источник поступления при создании формы на сервере берётся из константы и подставляется в форму. Имеет смысл ставить значение константы только при создании нового документа.

    Если РеквизитФормыВЗначение("Объект").ЭтоНовый() Тогда
        Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
    КонецЕсли;

    5. В обработке проведения документа ПеремещениеЖивотных в запросе получения отрицательного остатка не указано условие отбора:

    ГДЕ РазмещениеЖивотныхОстатки.КоличествоОстаток < 0

    6. Регистр ВыбытияЖивотных должен быть оборотным.
    7. В документе ВыбытиеЖивотных исправила запрос (соединение д.б. левое, во вложенном запросе ДанныеДокумента необходимо условие отбора документа по Ссылке), а в установке поля для сообщения нужнен индекс, а не номер строки (т.е. НомерСтроки – 1).
    8. Ещё в документе ВыбытиеЖивотных в модуле формы объекта на клиенте делатется попытка получить значение константы ОсновноеНаправление. Код клиентского обработчика ПриОткрытии для корректонй работы надо перенести в серверный обработчик ПриСозданииНаСервере.
    9. Документ «Инвентаризация». В ТЧ документа у реквизита КоличествоФакт надо снять проверку заполнения, тогда будет возможно регистрировать полное отсутствие животных (нулевое значение количества).
    10. В отчёте РазмещениеЖивотных нужно в схеме компоновки данных на вкладке Параметры указать для Периода выражение «ДобавитьКДате(&Период,”Секунда”, 1)», чтобы корректно учитывались остатки на заданное время.

    Шаг 3.
    В рамках 3 шага помогла с вопросом на форуме: http://www.cyberforum.ru/1c/thread1139108.html

    • Dobrenko Oleg 07.04.2014 в 10:19

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

  13. Шаг 2. Решение практического задания.
    1.Документ «Поступление» – при создании нового документа значение реквизита «дата» принимает «01.01.1980 0:00:00». Связано с тем что свойство «значение заполнения» стандартного реквизита «Дата» установлено – «01.01.1980 0:00:00».
    2. Документ «Поступление» – при создании формы документа значение реквизита «ИсточникПоступления» заполняется значением из константы, как для новых, так и для существующих документов.
    Для заполнения реквизита «источник поступления» только для новых документов необходимо включить выражение присвоения значения константы в условие:

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

    3.Документ «ПеремещениеЖивотных» – при проведении документа неверно выполняется контроль остатков. В запрос необходимо добавить отбор только на отрицательный остаток.

    |ГДЕ
            |   РазмещениеЖивотныхОстатки.КоличествоОстаток < 0

    4.Документ «Инвентаризация» – невозможно отразить нулевой фактический остаток (или плановый остаток). Значение свойства проверка заполнения установлено «Выдавать ошибку».
    5. Возможна ошибка. Документ «Инвентаризация» – таб. Часть «Животные» заполняется текущими остатками, а не на дату документа.
    6. Документ «ВыбытиеЖивотных» – при создании нового документа значение реквизита «дата» принимает «01.01.1980 0:00:00». Связано с тем что свойство «Заполнять из данных заполнения» стандартного реквизита «Дата» установлено – «Истина», а также в процедуре «ОбработкаЗаполнения» модуля объекта данным заполнения установлено значение «01.01.1980 0:00:00»

    ДанныеЗаполнения = Новый Структура;
    ДанныеЗаполнения.Вставить("Дата", '19800101');

    7. Документ «ВыбытиеЖивотных» – процедура формы «ПриОткрытии», свойство глобального контекста «Константы» не доступно на клиенте.

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

    Можно установить значение реквизита «Направление» в событии формы «ПриСозданииНаСервере».
    8. Документ «ВыбытиеЖивотных» – при проведении документа неверно выполняется контроль остатков. Необходимо передавать параметру запроса «МоментВремени» границу (вид границы – включая).
    9. Документ «ВыбытиеЖивотных» – неверная привязка сообщений о нехватке животных к таб. части документа.

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

    Нужно уменьшить на 1.
    Во вложенном запросе «ДанныеДокумента» необходимо установить отбор на документ регистратор .
    10.Не правильно выбрано значение свойство «Вид региста» регистра накопления «ВыбытияЖивотных» – Остатки, что является ошибкой, так как регистр не будет выводиться в 0 (избыточность таблицы итогов). Нужно установить в значение «Обороты».
    11.Отчет «РазмещениеЖивотных» – не будут учтены данные на последнюю секунду параметра (Период). Нужно состав даты параметра период установить значение «Дата» , а в выражении: ДобавитьКДате(КонецПериода(&Период,”День”),”Секунда”,1) .

    • Dobrenko Oleg 03.04.2014 в 20:17

      Александр, практическое задание принято!
      Ждем от вас отчеты по 1 и 3 пунктам финального задания.

  14. Обратная связь по курсу:

    1.Впервые напрямую столкнулся с расчетными задачами. Материал курса стал отличной базой для дальнейшего изучения темы.
    2.Курс просто замечательный, занятия курса помогли систематизировать уже имеющиеся знания и позволили избавиться от пробелов в них.
    3.Формат обучения гораздо удобнее очного. Ранее мне приходилось участвовать в группах выходного дня и вечернего обучения. Во-первых, не всегда удается найти время на посещение таких курсов, во-вторых после рабочего дня обучение дается сложнее.

    Практическое задание:
    1.Документ «Поступление». Процедура формы «при создании на сервере» всегда по умолчанию в источник поступления подставляет значение константы Основной источник, даже если документ проведен. При открытии уже проведенного документа мы получим недостоверные данные. Исправил ошибку, реализовав проверку в модуле формы документа, аналогично документу «Выбытие»(значение константы подставляется только если это новый документ не создающийся на основании инветаризации).
    2.Реквизиту документа «Поступление» – «Источник поступления» присвоил составной тип данных (СправочникСсылка.ИсточникиПоступления, ДокументСсылка.Инвентаризация). Если поступление создается на основании, инвентаризации в реквизит подставляется ссылка на этот документ.
    3.Документ «Поступление»: Значение заполнения даты было установлено на 01.01.1980 0:00:00 . Убрал значение заполнения.
    4.Документ «Выбытие»: обработка заполнения ,если документ не создается на основании документа «Инвентаризация», тогда по умолчанию подставляется дата – 01.01 .1980. Исправил.
    5.Документ «Выбытие» ,процедура «При открытии» формы документа: добавил функцию(НаСервереБезКонтекста), возвращающую значение константы. Там же реализовал проверку: если документ создается на основе инвентаризации, то в качестве направления подставляется ссылка на этот документ.
    6.Документ «Выбытие» исправил контроль остатков.
    Текст запроса:

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

    7.Документ Инвентаризация: отключил проверку заполнения табличной части КоличествоФакт, т.к. фактическое количество животных может быть равным 0.
    8.Документ «Инвентаризация»: В запрос получения остатков добавил параметр Момент – (Граница(МоментВремени(),ВидГраницы.Включая).
    9.Документ «Перемещение»: реализовал проверку, не позволяющую переводить животных в совпадающие клетки. Ранее если «КлеткаОткуда» совпадала с «КлеткаКуда» документ не проводился, но сообщение, выдаваемое пользователю, было неверным.
    10.Справочник «Направления выбытия» был иерархическим. Исправил.
    11.Регистр накопления «Выбытие животных»: реквизиту направление присвоил составной тип данных(ДокументСсылка.Инвентаризация, СправочникСсылка.НаправленияВыбытия).
    12.Отчет «Размещение животных»: изменил состав периода с «ДатаВремя» на «Дата», период привел к концу дня +1 секунда – (ДобавитьКДате(КонецПериода(&Период, “День”),”Секунда”,1).

    • Dobrenko Oleg 03.04.2014 в 20:19

      Благодарим вас за обратную связь по курсу!
      Практическое задание принято, ждем отчета по шагу №3.

  15. Астафьев Александр Николаевич
    Работаю в должности программиста на протезно-ортопедическом предприятии
    г. Москва

    Материал курса оказался очень полезным. Дал понятие того, как “живет” система. Удалось понять назначение регистров и, главное, механизм расчета. Познакомился с особеностями программирования в клиент-серверной архитектуре. СКД была “черным ящиком”, но теперь не представляю как можно было раньше обходиться без нее.
    Полученные навыки уже пришлось применить при добавлении новых отчетов в рабочей конфигурации. Надеюсь, новые знания помогут в переводе доработанной конфигурации Бухгалтерии КОРП с редакции 2.0 на редакцию 3.0.
    В перспективе отказ от сопровождения франчайзи в пользу собственных сил конфигурации ЗУП и дальнейший переход на 3 редакцию.
    Формат обучения очень удобен. На очных курсах обучаться не приходилось. На изучение материала можно выделять свободное от работы время, причем это никак не сказывается на результате. Экономия времени и денег.

    Исправления:

     

    1) Документ Поступление

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

    перенес из процедуры “ПриСозданииНаСервере” модуля формы в Процедуру “ОбработкаЗаполнения” модуля объекта.
    2)

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

    перенес из процедуры модуля формы ПриОткрытии в модуль объекта ОбработкаЗаполнения

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

    3)Удалил из процедуры “обработкаЗаполнения” в модуле объекта документа ВыбытиеЖивотных код:

     Иначе    
            ДанныеЗаполнения = Новый Структура;
            ДанныеЗаполнения.Вставить("Дата", '19800101');

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

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

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

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

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

    РазмещениеЖивотныхОстатки.КоличествоОстаток < 0

    8) Документ Инвентаризация. В форме сделал недоступной для изменения колонку “Количество”.
    9) Регистр накопления “ВыборкаЖивотных” сделал оборотным.При этом пришлось изменить запрос в СКД у отчета “АнализВыбытияЖивотных”.
    10) Для удобства анализа включил отображение движений регистров у документов. При этом создал форму документа “ПеремещениеЖивотных”.

    Помощь миру.
    Дополнительного времени на форумы не получается найти, но иногда помощь окажу в консультации. В основном это удаленная подержка. Сотрудники организации был обучены работе с конфигурацией Бухгалтерия КОРП редакции 2.0. Отчета нет, поскольку обучение прошло в начале года. Последняя актуальная задача была решена
    тут: http://forum.infostart.ru/forum15/top

    • Dobrenko Oleg 03.04.2014 в 20:12

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

  16. Дмитрий 02.04.2014 в 12:17

    Что нового Вы узнали из базового курса по программировнаию:
    1. Получил полноценное представление о многих базовых объектах, в том числе объектах языка. Например четче стал понимать различия и предназначение различных коллекций.
    2. Получил четкое представление о предназначении и месте компиляции различных модулей, а так же о клиент-серверном взаимодействии. Лучше стал понимать архитектуру платформ 8.1 и 8.2.
    3. Новые настройки механизма проведения документов позволяют лучше понимать поведение платформы при записи движений.
    4. Закрыты вопросы об оперативном и неоперативном проведении документов.
    5. Разобрался в механизме хранения итогов регистров накопления.
    6. Важной информацией считаю упоминание о проектирование устойчивых алгоритммов проведения документов.
    7. Разобрался с использованием виртуальных таблиц регистра бухгалтерии.
    8. Получил представление о механизмах периодических расчетов.

    Применение новых навыков на практике:
    1. Сократилось время и уменьшилось количество ошибок при проектировании новых структур данных.
    2. Помогли некоторые приемы работы с формами и интерфейсными объектами.

    Насколько удобен оказался формат обучения в сравнении с очным форматом:
    Безусловно это наиболее удобный вариант обучения. Позволяет самостоятельно планировать время обучения, что особенно важно для работающих. Кроме того, всегда есть возможность вернуться и разобраться в упущенном моменте.

    Гребенников Дмитрий Юрьевич
    программист
    г. Воронеж
    Оптовая и розничная торговля.

    Шаг 2. Практическое задание.

    1. Регистр «ВыбытияЖивотных» должен быть оборотным.

    2. В списке поступлений Источник поступления отличается от значения в форме документа.
    В форме документа Источник поступления безусловно заполняется из константы.
    Правильно заполнять только для новых документов. (Ссылка.Пустая())

    3. Некорректно работает контроль остатков при выбытии животных. В запрос передается неверное значение параметра «МоментВремени». В данном алгоритме контроля остатков он должен включать границу, чтобы получать остатки с учетом движений этого документа.

    4. Кроме того, во второй части запроса идет обращение ко всей таблице ТЧ Животные без фильтра по ссылке.
    Это приведет к неверным результатам по номеру строки и может резко увеличить объем выбираемых данных.

    5. В модуле проведения документа «ВыбытиеЖивотных» необязательно устанавливать признак:
    Движения.РазмещениеЖивотных.Записывать = Истина;
    так как запись проходит явно.

    6. Некорректно работает контроль остатков при перемещении. Перемещение проходит успешно только если в «клетка откуда» количество этих животных списывается в 0.
    В запросе к таблице остатков необходимо добавить фильтр на отрицательность остатков.

    7. В модуле проведения документа перемещение необязательно устанавливать признак:
    Движения.РазмещениеЖивотных.Записывать = Истина;
    так как запись проходит явно.

    8. В документе инвентаризация необходимо запретить редактирование колонки «Количество». Можно установить признак «Только просмотр» для колонки.

    9. Документ инвентаризация не записывается, если в колонке факт стоит 0. У реквизита «КоличествоФакт» необходимо в свойствах отключить проверку заполнения.

    10. При вводе на основании документа инвентаризация не контролируется наличие уже введенных документов.
    Для этого в документах «Поступление» и «ВыбытиеЖивотных» должен быть создан реквизит «Основание» типа ДокументСсылка.Инвентаризация.
    В модулях документов «Поступление» и «ВыбытиеЖивотных» в процедуре ОбработкаЗаполнения необходимо делать запрос к таблицам соответствующих документов с указанным основанием и запрещать вводить на основании лишние документы.

    11. Документы поступление, введенные на основании инвентаризации, имеют пустую дату. В свойствах стандартного реквизита «Дата» необходимо установить галочку «заполнять из данных заполнения».

    12. В форме документа ВыбытиеЖивотных в клиентской процедуре ПриОткрытии происходит обращение к таблице констант, что приведет к ошибке в тонком клиенте. Эти данные надо получать в серверной процедуре ПриСозданииНаСервере().

    • Dobrenko Oleg 03.04.2014 в 20:15

      Дмитрий, благодарим вас за развернутый отзыв!
      Практическое задание принято, ждем отчет по шагу №3.