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

Представляем финальное задание для 10-го потока базового курса по программированию.

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

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

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

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

  1. Дрыганец Сергей 22.10.2012 в 20:33

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

    I. Обратная связь.
    Т.к. систематизированных знаний по платформе 8.х у меня не было, то курс несомнено помог мне в этом.
    Информация была разрозненна и неполна. Сейчас островки знаний соединились во многих местах и картина
    стала более целостной.
    Мне кажется, что заблуждений у меня до начала курса не было по причине недостатка информации. Заблуждения скорее появились сейчас ;-)
    Избавлятся от них всегда трудно, но это приходит по мере практики работы с материалом на практике.
    Практически сейчас у меня сопровождение продукта “Зарплата 3,0 Камин” фирмы Камин-софт. Применяю полученные навыки для написания
    дополнительных внешних отчетов для данной конфигурации. Вскоре добавится поддержка “1С логистика 3,5” и “1С Подрядчик строительства”.
    До этого изучал немного платформу по некоторым учебным материалам (не буду их тут рекламировать), но без решения практически учебных задач
    материал усваивается слабо.
    Курсы в виде лекций, записанных на диск, очень удобно. Я не могу в рабочее время отвлекаться на занятия столь долгое время, а так вечером
    вполне комфортно прослушать материал, поработать с заданиями, вернуться к непонятому или упущенному в лекциях.

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

    1. Документ “Поступление”, Форма документа. Тонкий клиент:

    Ошибка в Проц. “ПриОткрытии” – попытка обратиться от клиента к серверному объекту “Справочники”

    Решение: вызвать через серверную процедуру

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

    &НаСервере
    Функция ПолучитьОсновногоПоставщика()
        Возврат Справочники.Контрагенты.ОсновнойПоставщик
    КонецФункции // ПолучитьОсновногоПоставщика()

    2. Документ “Поступление”, Форма документа. “Контрагент” заменится при повторном открытии существующего документа.
    По условию это нужно делать для нового документа.

    Решение:
    нужно проверить Контрагента на Пустоту

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

    еще лучше перенести этот код в модуль документа.

    3. Документ “Прирост” Модуль формы. Ошибка вызова серверного метода.

    Решение:

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

    //Объект.Животные.Загрузить(ОбработкаДокументовСервер.ПолучитьОстаткиЖивотных()); // исходный ошибочный вариант
    // рабочий вариант
    ОбъектФормы = Объект; // копия основного реквизита формы
    ЗаполнитьНаСервере(ОбъектФормы); // вызов серверного метода
    КопироватьДанныеФормы(ОбъектФормы,Объект); // заполнение основного реквизита формы полученными данными
    Элементы.Животные.Обновить(); // обновление формы

    КонецПроцедуры

    &НаСервереБезКонтекста
    Процедура ЗаполнитьНаСервере(ОбъектФормы)
    ДокОбъект = ДанныеФормыВЗначение(ОбъектФормы, Тип(“ДокументОбъект.Прирост”)); // преобразование данных формы в Объект
    ДокОбъект.Животные.Загрузить(ОбработкаДокументовСервер.ПолучитьОстаткиЖивотных()); // загрузка в ТЧ результата запроса
    ЗначениеВДанныеФормы(ДокОбъект, ОбъектФормы); // преобразование Объекта в данные формы
    КонецПроцедуры // ЗаполнитьНаСервере(Объект)

    4. Документ “Прирост” – нет движений регистра. Причина – В свойствах На закладке “Движения” не отмечен регистр “ОстаткиЖивотных”

    Решение – отмечаем. Перепроводми документы.

    5. Документ “Выбытие”. В обработке проведения при отсутствии наличия животных
    документ проводится, без предупреждений.

    Решение:
    При пустой выборке выдавать Сообщение пользователю и записывать с отменой проведения.

    Если ВыборкаДетальныеЗаписи.Количество()=0 Тогда
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = “Данных животных Нет в наличии. Документ не проведен.”;
    Сообщение.Сообщить();
    Записать(РежимЗаписиДокумента.ОтменаПроведения);
    Возврат;
    КонецЕсли;

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

    Решение:

    Передавать в функцию момент времени документа, в запросе получать остатки на этот момент времени, исключая сам момент.

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

    7. Функция “ОбработкаДокументовСервер.ПолучитьОстаткиЖивотных()” возвращает все остатки животных – положительные и отрицательные (не важно по каким причинам
    они возникнут).

    Решение:

    ввести в запрос условие на положительность остатков.

    8. Документ “Выбытие”. Модуль объекта “ОбработкаПроведения”.
    Ошибка – не записываются в регистры движения документа.

    Решение:
    установить признак записи движений в Истину

        Движения.ОстаткиЖивотных.Записывать = Истина;
        Движения.ВыбытиеЖивотныхПоНаправлениям.Записывать = Истина;

    9. В Процедуре “ОбработкаПроведения” док-та “Выбытие” в подзапросе в параметре обращения к “РегистрНакопления.ОстаткиЖивотных.Остатки”
    используется вариант ВЫБРАТЬ из таблицы документа, более правильно было бы использовать

    ВЫБРАТЬ РАЗЛИЧНЫЕ для исключения ошибок, если в таблице документа будут дубли строк.

    10. Документ “Выбытие”. Модуль объекта “ОбработкаПроведения”.
    Ошибка – список животных получается на дату документа, а не на моментвремени документа.

    Решение: использовати исключающую границу

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

    11. Отчет “ОстанкиЖивотных” – скорее не ошибка, а фича.

    III.
    Семинаров, форумов и статей у меня нет. И скорее всего не будет, т.к. времени на это нехватает. А знания,полученные от курса, никуда не денутся.

    ОГРОМНОЕ СПАСИБО!
    С уважением, Сергей Дрыганец, Барнаул.

    • Dobrenko Oleg 23.10.2012 в 15:37

      Здравствуйте, Сергей.
      Практическую часть принимаем, успехов в дальнейшем обучении!

  2. I. Что нового Вы узнали из базового курса по программированию?
    К сожалению константировал Сократовскую фразу ” Я знаю только то, что ничего не знаю”, Единственное утешение, “а другие не знают даже этого”.
    От заблуждений полезнее не избвляться.
    Работаю с платформой . Пока работа сводится к поддержке уже до меня написанного.
    Формат для меня тяжеловат при восприятии на слух. Но это скоре моя проблема.
    Смирнов Д.А., г. Москва, ЗАО “Газинком”, “програмист”.

    II
    1. При создании документа поступления в тонком клиенте возникала ошибка при заполнении реквизита Клиент.
    Исправил код:
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    Если объект.Контрагент.Пустая() Тогда
    Объект.Контрагент = КонтрагентСервер() ;
    КонецЕсли;
    КонецПроцедуры
    &НаСервереБезКонтекста
    Функция КонтрагентСервер()
    Возврат( Справочники.Контрагенты.ОсновнойПоставщик);
    КонецФункции // КонтрагентСервер()
    2. Не было движений по документу «Прирост», добавил галку по регистру «ОстаткиЖивотных»
    3. Не регистрируются движения при проведении документа «Выбытие», добавил строки:
    Движения.ОстаткиЖивотных.Записывать = Истина;
    Движения.ВыбытиеЖивотныхПоНаправлениям.Записывать = Истина;
    4. Проверка остатков при выбытии. Дописал условие:
    Если Результат.Пустой() Тогда
    Отказ=Истина;
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = “Нет остатков “;
    Сообщение.Сообщить();
    Иначе
    Движения…
    5. Тут же наступаем на грабли, если повторно провести документ, то таблица движений документа не очищается. А как очистить движения?

    III Помощь? К сожалению пока сам в ней нуждаюсь.
    Единственно могу предложить Блог, составленный на основе решений задач курсов”Введение в конфигурирование в системе “1с:Предприятие 8”
    и Конфигурирование в системе “1С:Предприятие” Решение Оперативных задач”, некоторых Ваших И примитивненькую конфу для “Учета договоров”
    http://1c8k.wordpress.com/

    • Dobrenko Oleg 16.10.2012 в 14:08

      Здравствуйте, Дмитрий.
      Дело в том, что финальное задание принимается в четко установленные сроки.
      Однако мы решили сделать для Вас исключение, будем считать что курс вы окончили.
      Если на ваш взгляд данный материал усвоился недостаточно хорошо, то возможно вам нужно пройти сначала более простой курс. Такой курс имеется, он называется “1С Программист – Быстрый старт в профессию”. В этом нет ничего страшного, уже встречалось достаточно людей, которые поступали таким образом.
      Успехов в дальнейшем обучении!
      PS
      > А как очистить движения?
      Для того, чтобы очистить набор записей, существует метод “Очистить()”.

  3. Наташа Лемешева 29.09.2012 в 09:38

    Добрый день, Олег. Я не успела закончить со свои потоком вовремя, только сейчас получилось выполнить задания. Надо же на этой странице отчитываться?

    Лемешева Наталья Станиславовна ,г.Екатеринбург
    1. Часть 1:
    Для меня изучение возможностей платформы 8.2 в виде видео-уроков оказался наиболее продуктивным вариантом обучения. Большой объем тематических сессий позволяет изучить разнообразные механизмы работы 1С.
    При начале обучения у меня не до конца было понимание принципа разделения серверных и клиентских процедур, в 8.1 нет такого разделения, сейчас я понимаю принцип этого разделения. Сейчас я занимаюсь поддержкой небольшой конфигурации «Документооборот», осуществляю небольшие доработки, пишу отчеты по выполненным заданиям. Каких-то больших работ пока делать не приходилось, но в скором времени придется дорабатывать «УКФ» на 8.2.
    Признаюсь, что материал курса еще не до конца уложился в голове и мне придется еще раз пересмотреть некоторые уроки, т.к. в связи с нехваткой времени мне пришлось пропустить некоторые из них.

    2. Часть 2:
    Ошибки:
    1. Документ «Поступление»- в процедуре ПриОткрытии() ошибка в тонком клиенте
    Решение: удалить эту процедуру, устанавливаем поставщика (см. п2).
    2. Документ «Поступление»- поле «Контрагент» перезаписывается у уже созданного документа.
    Решение: Проверять в процедуре ПриСозданииНаСервере на Объект.Ссылка.Пустая() и в этом случае заполнять поле «Контрагент» объекта.
    3. Не правильное название отчета «Останки животных»
    Решение: изменить название отчета «Остатки животных»
    4. Документ «Прирост» не работает команда «Заполнить»
    Решение: заполнять через цикл по таблице остатков:

    ТЧ = ОбработкаДокументовСервер.ПолучитьОстаткиЖивотных();
    Объект.Животные.Очистить();
       
    Для каждого СтрокаТЧ Из ТЧ Цикл
                НоваяСтрока = Объект.Животные.Добавить();
            НоваяСтрока.Животное = СтрокаТЧ.Животное;
            НоваяСтрока.Вес     = СтрокаТЧ.ВесОстаток;
    КонецЦикла;

    5. Документ «Прирост» при проведении документа надо фиксировать изменение веса.
    Решение: Добавить выходное поле «ВесОстаток»- ресурс регистра, в запрос и заполнять строку документа (п.5). Также добавить новое поле в ТЧ документа «НовыйВес». При проведении документа делать движения про разнице в весе (Новый вес-СтарыйВес).
    6. Документ «Прирост» не является регистратором у регистра «ОстсткиЖивотных»
    Решение: Установить флажок для документа как регистратор по регистру
    7. В базе не хранятся данные про поставщика документа «Поступление»
    Решение: Добавить реквизит регистра «Контрагент» и заполнять его при поведении документа
    8. В процедуре «Заполнить» документа «Прирост» получаются самые последние остатки, а не на момент документа.
    Решение: применить параметр МоментВремени() в запрос получения остатков.

            Параметры = Новый Массив(2);
        Параметры[0] = Объект.Дата;
        Параметры[1] = Объект.Ссылка;
        Момент = Новый (Тип("МоментВремени"),Параметры);
        Запрос.УстановитьПараметр("Момент",Момент);

    9. При проведении документа «Выбытие» не ВесОстаток не проверяется на NULL.
    Решение: Добавить условие (ЕСТЬ NULL, Вес,0)
    10 При проведении документа «Выбытие» не контролируется «наличие» животных
    Решение: В цикле по выборке проверяем, если Вес=0 Тогда присваиваем Отказ=Истина. И далее если НЕ Отказ, тогда записываем движения регистров.

    3. Часть 3:

    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=601995

    http://www.1c-pro.ru/topic45469.html

    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=602087#602087

    • Dobrenko Oleg 29.09.2012 в 19:05

      Здравствуйте, Наташа.
      >Признаюсь, что материал курса еще не до конца уложился в голове и мне придется еще раз пересмотреть некоторые уроки
      Ничего страшного, информации было действительно очень много.
      Шаги 2,3 приняты. Поздравляем вас с успешным окончанием базового курса по програмированию!

  4. Обратная связь:
    Власенко Дмитрий Сергеевич, г.Саратов.
    1. Из нового для меня в основном была информация по регистрам расчета и работе с ними, т.к. до этого я мало соприкасался с подобными задачами.
    2. Избавился от заблуждения, что я знаю почти все.
    3. Формат обучения удобен, но не очень гибок, т.к. сам курс я прошел больше месяца назад, но финальное задание пришлось ждать, и выпало оно на весьма неудобное для меня время.
    Ошибки:
    1. Документ «Поступление», ФормаДокумента, модуль формы, процедура ПриОткрытии: в тонком клиенте не существует данный контекст.
    Метод решения: создать серверную процедуру, которую и вызывать из клиентской.
    2. Документ «Поступление», ФормаДокумента, модуль формы, процедура ПриОткрытии: поле Контрагент заполняется значением по умолчанию независимо от того, является документ новым, или уже сохраненным.
    Метод решения: заполнять реквизит в обработчике события «ПриСозданииНаСервере»:

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

    3. Документ «Прирост» не является регистратором регистра «ОстаткиЖивотных», хотя в обработчике проведения прописаны движения по данному регистру.
    Метод решения: назначить документ «Прирост» регистратором регистра «ОстаткиЖивотных».
    4. Общий модуль «ОбработкаДокументовСервер», Функция «ПолучитьОстаткиЖивотных» возвращает таблицу значений, что вызывает ошибку в случае вызова функции из клиентской процедуры.
    Метод решения: т.к. возвращается таблица значений с одной колонкой, то можно возвращать массив, а в процедуру «Заполнить» формы документа Прирост добавить цикл по данному массиву с добавлением строк в табличную часть.
    5. Документ «Выбытие». Движения не записываются.
    Метод решения: при формировании движений добавить Движения.ИмяРегистра.Записывать = Истина;
    6. Я понимаю, что функционал устраивает, но все-таки не совсем ясно, почему документ «Выбытие» всегда списывает подчистую ту номенклатуру, которая указана в табчасти документа. Было бы логичнее добавить реквизит «Вес» и дать возможность пользователю самому определять величину данного параметра.
    7. Необходимо добавить проверку остатков при проведении документа «Выбытие», для чего можно использовать уже существующий запрос.
    8. Документ «Выбытие», нет проверки на заполнение реквизита табчасти «Направление выбытия».
    Метод решения: в свойствах реквизита «Проверка заполнения» установить в «Выдавать ошибку».
    9. Орфографическая ошибка в названии отчета «Остатки животных».
    Метод решения: изменить хотя бы синоним отчета с «Останки животных» на «Остатки животных».
    10. Любые ссылочные данные базы данных можно удалить непосредственно, что однажды обязательно приведет к проблемам. Хотя бы поэтому необходимо добавить роли, пользователей и настроить роли и права пользователей.

    Помощь залу:

    1. http://www.1c-pro.ru/topic44574.html
    2. http://www.1c-pro.ru/topic44567.html
    3. http://www.1c-pro.ru/topic43841.html

    • Dobrenko Oleg 21.08.2012 в 11:03

      Дмитрий, благодарим за обратную связь по курсу!
      >2. Избавился от заблуждения, что я знаю почти все.
      Значит время не прошло даром :)
      Поздравляем вас с успешным окончанием базового курса по программированию!

    • Наташа Лемешева 29.09.2012 в 19:23

      Спасибо большое, Олег! А будет ли мне предоставлен доступ к бонусам для финалистов курса? вот сюда:https://mg.spec8.ru/2012/08/21/11basefinal/

      • Dobrenko Oleg 01.10.2012 в 10:01

        Наташа, доступ будет предоставлен на странице финалистов 12го потока.

        • Наташа Лемешева 04.10.2012 в 17:21

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

          • Dobrenko Oleg 05.10.2012 в 10:10

            Здравствуйте. Наташа, вы в списке финалистов 12 потока. Конечно, письмо вышлют и Вам.

  5. 3 часть задания.
    Не буду скрывать, здесь у меня возникли сложности.  Семинар проводить не для кого, для статей еще слишком мало знаю и, тем более, очень много вполне грамотных статей уже написано на том же инфостарте, а дублировать одно и тоже смысле не вижу никакого.  На некоторые вопросы участников форумов попытался ответить, но там слишком легкие вопросы, чтобы это показывать). В общем, поскольку задание все же называется помощь людям, я выложил одну из своих разработок на инфостарте http://infostart.ru/public/148173/ , правда она написана на 77) Зато она действительно может кому-то пригодится, хотя бы в части алгоритмов формирования регламентых форм. Вообще, изначально идея была написать ведомость по партиям (аналогично ТиС 77) для УТ 10.3, и я ее написал и уже приготовился загрузить на ИС, но в последний момент воспользовался поиском и обнаружил, что таких отчетов там уже много и практического смысла в новом аналогичном отчете не будет.  Лучше реальная помощь людям)

  6. Людмила 20.08.2012 в 12:11

    Добрый день.
    Сегодня последний день 11 потока Базового курса, но я  выполнила только 11 занятие  и  отстала от графика на 4 занятия. Могу ли отчитаться с 12 потоком?,а Базовый начать позже, он оплачен . Спасибо

    • Dobrenko Oleg 21.08.2012 в 07:18

      Здравствуйте. Если вы имеете доступ в мастер группу на дату финального задания 12го потока (см. план график), то можете отчитаться с ним.

  7. Кураторский пакет. Дмитрий Зырянов. г.Пермь.
    Шаг1
    Проходил кураторский пакет, чем очень доволен. Значительно расширились знания по 1с, и программированию в частности. Работа с формами интересна, т.к. на практике очень часто хотелось что-нибудь “подправить”. Узнал много нового теперь осталось применить все знания в практике. Формат обучения удобен, т.к. можно в любое удобное время изучать программирование.
    Шаг3
    Фото отчет с семинара по функциональным возможностям платформы.
    1
    2
    2

    • Dobrenko Oleg 21.08.2012 в 07:31

      Благодарим за обратную связь по курсу.
      Дмитрий, поздравляем с успешным окончанием базового курса!
      Желаем дальнейших успехов на нашем не легком поприще :)

  8. Олег, мне писали с саппорта на почту, что я могу зафиналиться с 11 потоком, чуть снова не пропустила. Попытка зафиналиться:

    ШАГ 1:
    Уже не помню, что нового было узнано, но порядка в голове точно больше стало, а главное уверенности, что верно делаю. А, новое – моя адаптацию с кодом управляемых форм в 8.2 – много времени потратила, пока привыкла данные между сервером и клиентом передвать ))). С “1С:Предприятие 8” работаю не первый год, создана пара отчетов на управляемых формах (за счет использования управляемого интерфейса, выигрыш в производительности получили в разы). Екатеринбург Елисейкина Марина.

    ШАГ 2:
    1)      При открытии док. Поступление в тонком клиенте выпадает ошибка:
    {Документ.Поступление.Форма.ФормаДокумента.Форма(5,22)}: Переменная не определена (Справочники)
    Все верно, обращение к классу СправочникиМенеджер доступно только на Сервере и
    Толстом клиенте (плюс еще внешнее соединение).

    Как вариант можно код заполнения реквизита Контрагент из клиентской процедуры ПриОткрытии перенести в серверную процедуру ПриСозданииНаСервере, НО в этом же месте кроется еще еще одна ошибка:

    2)      При открытии док.Поступление ранее сохраненное значение ВСЕГДА будет подменяться на предопреленного контрагента, что не верно.

    Нужно добавить проверку, например, в процедуре ПриСозданииНаСервере,
    <code>
    Если ЭтаФорма.РеквизитФормыВЗначение(“Объект”).ЭтоНовый() Тогда
            Объект.Контрагент = Справочники.Контрагенты.ОсновнойПоставщик;
    КонецЕсли;</code>
    или, как вариант, проверить на пустую ссылку
    <code>

    Объект.Ссылка = Документы.Поступление.ПустаяСсылка()
    </code>
     3)      Документ прирост в принципе не может делать никаких движений на регистры (!?), что не верно, т.к. учет ведется по веса животных в разрезе самих животных. Нужно добавить:

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

     4)      Нет в конфигурации преднастроенных ролей – поэтому на все объекты распространяется право непосредственного удаления (Интерактивное удаление) без проверки ссылочной целостности, что может привести к появлению записей с пустыми ссылками.

    Нужно создать роли и назначить пользователям базы права (хотя бы одну роль).

     5)      В табличной части документа Выбытие не предусмотрен реквизит Вес, поэтому документ не может создать движения по регистрам.

    Добавить реквизит Вес (число 15,2), – это необходимо, НО этого не достаточно.

     6)      В процедуре обработка проведения не происходит запись движений

    Нужно либо после цикла добавить строки, записывающие движения в регистры (Движения.ВыбытиеЖивотныхПоНаправлениям.Записать(); и Движения. ОстаткиЖивотных.Записать();), НО более правильно будет выставить свойство Записывать в Истину для регистров ВыбытиеЖивотныхПоНаправлениям и ОстаткиЖивотных в обработке проведения до или после цикла.

     7)      Не совсем оптимально построен запрос в обработке проведения – было бы лучше вложенные запросы заменить на временные таблицы, НО вообще странный запрос.   РН ОстаткиЖивотныхОстатки вроде бы и верно выбирается  – только по списку животных текущего документа, т.е. возвращает только Дату документа, НО у нас водной секунде может оказаться несколько документов, а значит в этой же секунде, но более ранним по моменту документом остатки могут быть уже списаны.

    Надо брать в запрос не на дату документа, а на момент времени документа

     8)      НО и это не все- непонятно зачем был использован вложенный запрос ДанныеДокумента, если в нем не сделана группировка ТЧ документа.

    Нужно добавить группировку по животным, и вернуть также запрашиваемый в документе вес животных

     9)      Еще в запросе вложенный запрос ДанныеДокумента и ОстаткиЖивотныхОстатки соединены через  внутреннее соединение, в результате запрос возвращает только ОСТАТОК о животным из ТЧ документа, который потом и списывается – это вообще бед.
     10)   И правильнее было бы использовать методику списания остатков: сначала делаем запрос по документу с группировкой ТЧ по животным – затем делаем движения на РН ОстаткиЖивотных, а потом проверяем, возникли ли у нас отрицательные остатки запросом, и если запрос не пустой, то отказ устанавливается в истину. В противном случае делается проведение по остальным регистрам.
     11)   ЮЗАБИЛИТИ: добавить вывод движений на формы документов

    В редакторе управляемой формы документа на закладке «Командный интерфейс» установить в Команде «Перейти» Видимость Истина

    ШАГ 3:
    Можно сказать шаг 3 в каком-то виде уже реализован: создано на сегодня около 6 часов видео-лекций для студенотов университета, где я по вечерам временами читаю лекции (специальность “Прикладная информатика (в экономике)”) – многие из них 1С видят впервые, поэтому курс больше похож на курс по основным объектам конфигурации.
    Олег, реально оценила Ваш труд по созданию лекций (Ваши мне кажутся лучше).  И меня еще постоянно смущает отсутствие аудитории передо мной, никак не могу привыкнуть.

    Еще у меня есть код по расширению функционала “Произвольных отчетов” в УПП, чтобы они сохраняли ориентацию страницы при выводе на печать, при наличии сохраненной настройки (это одно строка в коде, не знаю, почему ее типовая не имеет, хотя для внутренних отчетов, вывод которых происходит через ПроизвольныйОтчет все отрабатывает хорошо) и вывода на печать повторяющихся строк (области) на каждой страницы. В пятницу это доделала, поэтому не раньше понедельника смогу что-нибудь на эту тему изложить.

    • Dobrenko Oleg 20.08.2012 в 07:37

      Марина, благодарим за обратную связь по курсу!
      >создано на сегодня около 6 часов видео-лекций для студенотов
      Отлично! было бы очень любопытно посмотреть какой-нибудь не большей ролик!

      • Олег, нашла ваш e-mail в переписке на yandex.ru, туда отправила два примера.

        • Dobrenko Oleg 20.08.2012 в 09:44

          Видео посмотрел, третий шаг засчитан.
          Марина, поздравляем вас с успешным окончанием базового курса по программированию!
          Желаем творческого вдохновения для записи собственного курса :)

      • Задание по публикации на инфостате:
        http://infostart.ru/public/148206/

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

    Воронов Марк, Ростов-на-Дону

    Из базового курса я понял основные принципы работы платформы 1С8. Образовался контур понимания программирования на V8.2, а это, я считаю, очень существенно – удалось освоить материал курса как систему знаний, а не набор разрозненных единиц типа “тут надо кодить так”. Раньше я никогда не сталкивался с V8, поэтому все здесь было для меня впервой. Но надо было сначала пройти быстрый старт))

    На практике я применял навыки, полученные в материалах курса – я сделал доработки в конфигурации УТ 10, создал справочник автопарк, добавил туда нужные реквизиты для убодного заполнения ТТН, написал несколько простых управленческих отчетов по движения товаров с использованием СКД.

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

    Ок, вторая часть задания:

    1. В Свойстве документа Прирост не выбраны регистры, по которым нужно делать движения. Нужно выбрать регистр Остатки животных.
    2. В документе прирост неправильно реализована процедура заполнения – работать с табличной частью и таблицей значений можно только на сервере. Нужно создать серверную процедуру с тем же кодом.
    3. Функция общего модуля ПолучитьОстаткиЖивотных() не учитывает дату, на которую нужно получить данные. Она всегда будет возвращать данные на ноябрь over 9000 года. Нужно добавить в параметры виртуальной таблицы ОстаткиЖивотных.Остатки

    параметр Период. Так же нужно обеспечить передачу параметра Период из документа.
    4. В форме документа поступление, при открытии устанавливается основной контрагент. Это не правильно, это действие нужно совершать в процедуре обработка заполнения модуля объекта.
    Например, так:
    <code>
    Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

    КонтрагентОтбора = Неопределено;
    Если ТипЗнч(ДанныеЗаполнения) = Тип(“Структура”) И ДанныеЗаполнения.Свойство(“Контрагент”,КонтрагентОтбора) Тогда
    Контрагент = ДанныеЗаполнения.Контрагент;
    КонецЕсли;

    Если Контрагент.Пустая() Тогда

    Контрагент = Справочники.Контрагенты.ОсновнойПоставщик;

    КонецЕсли;

    КонецПроцедуры
    </code>
    5. Нет контроля за наличием скотины при выбытии. Для обеспечения контроля нужно обратиться к разработчику) (А еще можно вместо внутреннего соединения в запросе использовать левое соединение таблицы документа в ВТ остатки + добавить

    предупреждение и отказ в случае, если животное отстутствует) Кроме того, в запросе зачем-то использовался вложенный запрос к таблице документа, однако в этом нет никакого смысла, т.к. нет группировки по полям запроса. Это нужно

    исправить.

    Запрос, соответственно, станет таким
    Запрос.Текст =
    “ВЫБРАТЬ
    | ЕСТЬNULL(ОстаткиЖивотныхОстатки.ВесОстаток, 0) КАК Вес,
    | ВыбытиеЖивотные.Животное,
    | ВыбытиеЖивотные.НаправлениеВыбытия
    |ИЗ
    | Документ.Выбытие.Животные КАК ВыбытиеЖивотные
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиЖивотных.Остатки(
    | &Дата,
    | Животное В
    | (ВЫБРАТЬ
    | ВыбытиеЖивотные.Животное
    | ИЗ
    | Документ.Выбытие.Животные КАК ВыбытиеЖивотные
    | ГДЕ
    | ВыбытиеЖивотные.Ссылка = &Ссылка)) КАК ОстаткиЖивотныхОстатки
    | ПО ВыбытиеЖивотные.Животное = ОстаткиЖивотныхОстатки.Животное”;

    6. В отчете Ведомость по животным нужно поменять колонки отчета местами.

    7. В отчете Анализ выбытий нужно привести конец периода к концу дня методами конецПериода и ДобавитьКДате.
    8. Название отчета Останки животных не отражает его суть. Нужно переименовать в Остатки животных.
    9. В документе Выбытие, в модуле объекта остатки животных получают на дату документа, а нужно – на момент времени.
    10.В свойствах документа выбытие стоит значение Удалять движение при отмене проведения, а так же записывать выбранные движения. Это, в целом, правильно для платформы 8.2, однако, в обработке проведения требуется явное указание на запись

    движений:

    Движения.ОстаткиЖивотных.Записывать=Истина;
    Движения.ВыбытиеЖивотныхПоНаправлениям.Записывать=Истина;

    3 часть в процессе. 

    • Dobrenko Oleg 21.08.2012 в 07:10

      Марк, благодарим за обратную связь по курсу!
      >надо было сначала пройти быстрый старт))
      Ничего страшного, многие делали это даже после базового.

  10. Кураторский пакет.
    Шишков Максим. Самара.
    Шаг 1. Детальный отзыв составлял для получения курса “Быстрый старт”, поэтому тут добавлю немного.
    Активно использую полученные знания при формировании отчетов, создаю и модифицирую внешние печатные формы. В целом было интересно открыть для себя новую область знаний, программирование. Нравится, что теперь есть возможность хотя бы несложные задачи решать самостоятельно, не обращаясь к посторонней помощи. С интересом продолжу изучение 1С в  Продвинутом курсе.
    Шаг 3.   Отчет по взаиморасчетам с комитентами.
    http://infostart.ru/public/119024/

    • Dobrenko Oleg 17.08.2012 в 13:38

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

  11. Калеников Сергей 16.08.2012 в 10:04

    Обратная связь
    С 1С 8 я работаю уже более 4х и поэтому сразу хотел приобретать продвинутый курс, думая “ничего нового там для меня нет”. Но внутренний голос шептал “А вдруг ты что-то важное пропустишь в базовом?..” и не давал мне покоя. В общем, решил потратить три месяца времени и денег на базовый и… конечно не пожалел!
    Я самоучка, платформу всегда изучал скорее исходя из поставленных перед собой практических задач и иногда изобретал свой велосипед. Это наверное как в школе решать квадратные уравнения, не зная всех формул, а зная только операции умножения и деления :) Не хватало всегда этой самой базы, структурированных знаний. Конечно, не скажу, что курс – это первый материал, с помощью которого я закрываю это пробел, но из всего того, на что я тратил свои время и силы, он оказался самым эффективным.
    Заблуждений по поводу 1с никогда не испытывал, но в процессе изучения понял, что изменилось мое мнение по поводу того, что “некоторым дано быть 1с-гуру, а некоторым этого никогда не достичь”. Пришло осознание, что успех – это во многом результат работы, а не случайности :) Выросла самооценка себя как специалиста.
    До прохождения курса уже работал вплотную с управляемыми формами. Прошло столько мало времени, а мне уже стыдно смотреть на тот свой код :)
    Из минусов могу сказать только о проблемах с воспроизведением файлов. Приходилось перезагружаться, поменял привод (помогло только временно). Но несмотря на все преграды, упорно пришел к цели :)
    ошибки
    1. Поступление
    1.1 При подставлении значения контрагента не учитывается, новый ли это документ. Нужно вставить условие, например Объект.Ссылка.Пустая()
    1.2 На клиенте к предопределенному значению нужно обращаться через функцию: Объект.Контрагент = ПредопределенноеЗначение(“Справочник.Контрагенты.ОсновнойПоставщик”)
    1.3 Нет группировки строк (будет дублирование в регистре). Правильнее получать данные документа запросом, а не обходом табличной части
    2. Выбытие
    2.1 Вместо параметра Дата в запрос надо передавать МоментВремени()
    2.2 Наборы движений не записываются
    2.3 Не очищаются движения при повторном проведении
    2.4 Дата – заполняется значение (2001, 1, 1)
    2.6 В запросе исправил внутренне соединение на левое (происходит потеря информации, если в документе выбран зверь, которого нет на остатке)
    2.7 Добавил ISNULL для поля вес
    2.8. Собственно, Нет проверки на наличие животных. В процедуре обработки ее добавил  – если остаток списываемого животного = 0, выдается ошибка.
    3. Прирост
    3.1 Заполнение ТЧ должно происходить в серверной процедуре
    3.2 Не отмечено, что док является регистратором регистра Остатки
    3.3 По правилам хорошего тона надо бы выводить вопрос перед очисткой ТЧ.
    4 Регистры накопления
    Для измерения и ресурса выключена проверка незаполненных значений
    5 Отчеты
    Ведомость – лишняя детальная группировка в настройках
    Анализ выбытий – параметры не включены в пользовательские настройки
    Остатки животных – опечатка в названии отчета
    Помощь новичикам
    http://www.forum.mista.ru/topic.php?id=625238
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=598675
    http://www.1c-pro.ru/topic44437.html
    http://www.1c-pro.ru/topic43666.html
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=598868
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=598867
     
     
     

    • Dobrenko Oleg 16.08.2012 в 15:41

      >Выросла самооценка себя как специалиста.
      Положительная самооценка – главный инструмент достижения любой цели :)
      Поздравляем вас с успешным окончанием базового курса по программированию!
      Ждем на продвинутом курсе :)
      Укажите ваш город для публикации в списке финалистов.

      • Калеников Сергей 16.08.2012 в 16:33

        Спасибо! 
        Волгодонск, Ростовская обл

  12. 1.
    Что нового Вы узнали из базового курса по программированию? Платформа 1с 8.2 гораздо функциональнее  платформы 1с 7.7. Реализация прикладных решений проще, быстрее, удобнее.
    От каких заблуждений избавились?  Не было
    Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
    вам удалось применить новые навыки (какие результаты были достигнуты): перевод управленческого логистического учета с 7.7 на 8.2 (управляемое приложение). Реализован логистический блок движения товаров, различные выгрузки из иных систем. Пригодились абсолютно все навыки. Конечно доработка программы (например, расшифровка ОСВ), оптимизация программного кода, разработка нового функционала будет вестись параллельно с добавлением новых знаний и в соответствии с производственной необходимостью.
    Если Вы пока не работаете на реальных проектах по внедрению решений на «1С:Предприятии 8», то, что оказалось неожиданным из материалов курса? Я раньше не работала ЗП, все было интересно.
    Насколько удобен, оказался формат обучения в сравнении с очным форматом? Так гораздо удобнее по многим причинам, Вы их уже перечисляли в одном из начальных уроков. Единственное, я так и не разобралась как делать расшифровку ОСВ. Если бы мне предоставили видеоурок по этой теме, была бы благодарна.
    Мои данные: Петрухина Наталья Викторовна, г. Москва, ООО «Эр-Эс Сервис», Специалист по автоматизации Финансового Департамента. Каким образом можно получить рекомендательное письмо?
    2.
    Ошибки:
    1)  МФ документа «Поступление», обращение в объекту метаданных  «СправочникМенеджер.<Имя справочника>» возможно только на сервере.
    2)  Когда создаем и проводим документ «Поступление» невозможно посмотреть какие движение в РН внесены этим документом.
    3)  это же касается документа «Выбытие»;  4) у документа «Выбытие» вообще нет формы.
    5) это же касается документа «Прирост». 6) нет движения по РН «ОстаткиЖивотных», так как этот документ не является для данного регистра регистратором.
    7) Не совсем понятно назначение регистра «ВыбытиеЖивотныхПоНаправлениям», мне кажется лучше анализировать не только Обороты по расходу, но и обороты по приходу, так можно оценить ежемесячные «животнооборот». Я бы внесла по документам «Поступление» и «Прирост» в этот РН, сделав регистраторами и дополнив МО, убрав заполнение направление выбытия, изменив Командный интерфейс формы. Сумма выбытия только в документе «Выбытие» в РН «ВыбытиеЖивотныхПоНаправлениям» отрицательная.
    8) В документе «Выбытие» невозможно указывать вес выбывшего животного. + необходимо видоизменить проведение этого документа, чтобы при проведении отслеживались остатки.
    9) «Функция ПолучитьОстаткиЖивотных() Экспорт» скорее должна использоваться для документа «Выбытие». Ее надо видоизменить с учетом нового реквизита ТЧ «вес».
    10) немного изменила последовательности в графическом отображении отчета «ВедомостьПоЖивотным».
    11) хорошо было бы еще иметь возможность дополнительного Фильтра «по животному». КонструкторЗапросаàКомпоновка данных(тут задаем условие), потом выводим этот параметр на форму пользователю. Если он не выбран – выбираются все остатки, если выбран, то соответственно в разрезе выбранного животного.
    12) в БД нет ни одного пользователя + нет разграничения прав.
    13)  нет разбивки на подсистемы, чтобы разгрузить рабочую область..хотя это возможно и не обязательно…как кому удобно.
    14) В Журнале документов не видно общей суммы веса каждого документа. Для этого необходимо создать реквизит в каждом документе, в МО в процедуре ПередЗаписью() сделать ее заполнение, вывести в ФормеСписка Журнала.
     
    3. Заметка «Пример загрузки данных с помощью COMObject в 1с 8.2»:
    http://infostart.ru/public/147600/

    • Dobrenko Oleg 16.08.2012 в 11:20

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