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

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

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

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

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

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

  1. Виктор 04.07.2014 в 13:50

    • Что нового Вы узнали из базового курса по программированию?
    – Взаимные вызовы клиентских и серверных методов управляемой формы.
    – Освоил новые приемы работы с СКД.
    – Работа с регистрами расчета.

    • От каких заблуждений избавились?
    – Такого не было

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

    • Насколько удобен, оказался формат обучения в сравнении с очным форматом?
    – Очень понравился этот формат, так как можно обращаться к материалу все снова и снова и вспоминать забытое, улучшая понимание.

    Сивульский Виктор, Программист 1С ИП, Алматы.

    1. В документе ПеремещениеЖивотных проверка нехватки животных не срабатывает. Добавить условие в запрос:

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

    2. В документе ВыбытиеЖивотных проверка нехватки животных не срабатывает. Нужно заменить момент времени:

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

    3. Вызов объекта КонстантаМенеджер.ВыбытиеЖивотных в Форме Документа в процедуре ПриОткрытии на клиенте в управляемом приложениии, у которого Доступность: Сервер, толстый клиент, внешнее соединение. Чтобы корректно и независимо от вида формы выполнялось заполнение необходимо перенести этот код в процедуру:

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

    4. На основании документа Инвентаризация не заполняется табличная часть документа Выбытие. Изменить запрос:

        ИнвентаризацияЖивотные.КоличествоФакт - ИнвеннтаризацияЖивотные.Количество КАК Количество

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

    6. Нет ни одной роли для пользователей системы. Создать роли.

    7. Нет ни одного итерфейса для обычного приложения. Создать интерфейсы.

    8. В Документе Поступление нужно, чтобы корректно и независимо от вида формы выполнялось заполнение необходимо перенести этот код в процедуру:

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

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

    http://www.forum.mista.ru/topic.php?id=713112

    Мой логин softmaker

    • Dobrenko Oleg 07.07.2014 в 09:16

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

  2. 1. Кирюшатов Алексей Владимирович, Начальник отдела информационных технологий, ООО «МОИС – Энерго», г. Москва.
    Ранее покупал курсы по УПП, благодаря которым стал хорошим специалистом по сопровождению данной конфигурации. Купил данный курс, чтобы стать уверенным разработчиком на платформе 8.
    Главным показателем успешного прохождения базового курса считаю, применение полученных знаний на практике. К примеру, полностью переписал отчет по анализу бухгалтерских проводок, что позволило формировать его за считанные секунды, старый удалил и вспоминаю с «ужасом» :).
    Громадное спасибо за Ваш труд! Жду с нетерпением начал продвинутого курса.

    2.
    1. При записи нового документа «Поступление» заполняется дата на «01.01.1980 12:00:00». В стандартном реквизите «Дата» документа «Поступление» значение для заполнения установлено «01.01.1980 12:00:00». Очистил данное поле.
    2. При записи нового документа «ВыбытиеЖивотных» заполняется дата на «01.01.1980 12:00:00». В стандартном реквизите «Дата» документа «ВыбытиеЖивотных» свойство «заполнять из данных заполнения» = Истина, поэтому в модуле объекта в процедуре «ОбработкаЗаполнения» выполнялся код:
    Иначе
    ДанныеЗаполнения = Новый Структура;
    ДанныеЗаполнения.Вставить(“Дата”, ‘19800101’);
    Снял галочку.
    3. Для осуществления контроля выбытия в документе «ВыбытиеЖивотных» добавлен код в обработку проведения:
    Граница = Новый Граница(МоментВремени(), ВидГраницы.Включая); Запрос.УстановитьПараметр(“МоментВремени”, Граница);
    4. После проведения документа «ВыбытиеЖивотных» для позиционировании на ошибке в строке табличной части документа, исправлен код:
    Сообщение.Поле = “Животные[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Количество”;
    5. После редактирования документа «ВыбытиеЖивотных» конфигурация выдавала ошибку {Документ.ВыбытиеЖивотных.Форма.ФормаДокумента.Форма(7,24)}: Переменная не определена (Константы) Объект.Направление = <>Константы.ОсновноеНаправление.Получить(); (Проверка: Тонкий клиент)
    Перенес процедуру на сервер.
    &НаСервере
    Процедура ПолучитьКонстанту()
    Объект.Направление = Константы.ОсновноеНаправление.Получить();
    КонецПроцедуры // ()
    6. В документе «Инвентаризация» в реквизите «КоличествоФакт» поменял значение свойства «Проверять заполнение этого поля» с «Выдавать ошибку» на «Не проверять».
    7. В отчете «РазмещениеЖивотных» изменил параметр «Период» ДобавитьКДате(КонецПериода(&Период, “День”), “Секунда”, 1)
    8. Изменил Вид регистра накопления «ВыбытияЖивотных» на оборотный. Поправил отчет «АнализВыбытийЖивотных».
    9. Для реквизитов «Количество» установил точность 3.

    3. http://forum.infostart.ru/forum26/topic77306/message1165703/?result=reply#message1165703 ник: Kirush

    • Dobrenko Oleg 30.06.2014 в 07:04

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

  3. Софья 27.06.2014 в 08:59

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

    Вебер Софья Викторовна, программист ТОО «Customs satellite», г. Костанай, Казахстан.

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

    Из минусов:
    1. Не хватало печатного варианта лекций. Не просто карточек с заголовками тем, а именно лекций. (Пыталась писать лекции сама, но выходило очень долго и неэффективно, поскольку больше всего интересовали фрагменты кода, а они из-за длинных названий объектов очень неудобны для записи от руки) Вернуться к какому-то вопросу или примеру практически нереально (ну то есть занимало кучу времени), поскольку приходилось проматывать в «поисках утраченного» главу туда и обратно.
    2. Ошибки в решении примеров. Честно говоря, сначала думала, что это фишка такая в обучении, чтобы ошибка и пути ее решения лучше зафиксировались. Но, начиная где-то с середины курса, неоднократно ловила себя на том, что видела ошибку гораздо раньше лектора и уже просто ждала, когда же лектор и сам ее распознает.
    3. Отсутствие реальной обратной связи с преподавателем. Когда решаешь задачу, хочется задать вопрос и максимально быстро получить ответ, а общение через письма не лучший вариант. Я почему-то рассчитывала на другой формат связи. Поэтому даже и не пыталась писать – искала самостоятельно, где только могла, только не на ваших ресурсах ( а жаль!). А еще у меня закралось предположение, что выполненные домашние задания никто даже и не читает(…
    4. Очень огорчила тема про сторнирование. Очень сложная глава, много-много времени, а как результат – в прилагаемом учебном модуле этого кода просто нет!… (((

    В ЦЕЛОМ ЖЕ, ПОСЛЕ ПРОХОЖДЕНИЯ КУРСА Я ЗНАЮ ГОРАЗДО БОЛЬШЕ, ЧЕМ ДО НЕГО. ТАК ЧТО ВРЕМЯ И ДЕНЬГИ ПОТРАЧЕНЫ НЕ ЗРЯ)))…

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

    1)
    Документ «Поступление» при любом открытии документа (в обработчике ПриСозданииНаСервере) насильно записывает в реквизит ИсточникПоступления данные Основного источника из соответствующей константы.

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

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

    2)
    Документ «ВыбытиеЖивотных» при открытии нового документа в тонком клиенте выдает ошибку, поскольку в клиентской процедуре ПриОткрытии() нельзя обратиться к константе.

    Следует переместить содержимое обработчика ПриОткрытии в обработчик события ПриСозданииНаСервере:

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

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

    Следует указать, что ТЧ документа, участвующего во внутреннем соединении, надо ограничить текущим документом, т.е. добавить условие

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

    4)
    В документе «ВыбытиеЖивотных», в обработке проведения некорректно задается параметр запроса МоментВремени.

    Следует его задать, включая границы:

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

    5)
    В документе «ВыбытиеЖивотных», в обработке проведения при выводе сообщения об ошибке неверно задан индекс строки, из-за чего сообщения выводятся не у тех строк.

    Следует в качестве индекса использовать полученный номер строки – 1, т.е.:

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

    6)
    В документе «ПеремещениеЖивотных» некорректно проводится контроль по животным с места, откуда их переводят. Фактически успешный перевод возможен только если переводятся сразу все животные указанного вида из указанной клетки.

    Следует изменить запрос таким образом, чтобы в запрос вытягивались только отрицательные остатки, т.е. добавить секцию ГДЕ со следующим условием:
    РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";

    7)
    Регистр «ВыбытияЖивотных».

    Судя по использованию этого регистра, вид регистра следует задать как «Обороты»

    8)
    Документ «Инвентаризация» в текущем виде не дает указать нулевое значение по факту и по базе, хотя теоретически это возможно.

    Следует у реквизитов «Количество» и «КоличествоФакт» «Проверка заполнения» выставить в значение «Не проверять»

    9)
    В документе «ВыбытиеЖивотных» возможно сохранить документ без указания «Направления». Однако, регистр накопления «ВыбытияЖивотных» использует этот реквизит в качестве Измерения.

    Было бы правильнее сделать реквизит «Направление» обязательным к заполнению.

    10)
    Открыт доступ к прямому удалению данных из ИБ, что может привести к некорректным ссылкам типа

    Следует настроить роли и права пользователей, и запретить Интерактивное удаление.

    11)
    В документе «Поступление» у стандартного реквизита «Дата» установлено «Значение заполнения» как 01.01.1980 0:00:00, что не является ошибкой, но крайне неудобно!

    Следует убрать эту настройку

    12)
    В документе «ВыбытиеЖивотных» в ОбработкеЗаполнения установлено

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

    Что насильно задает дату нового документа как 01.01.1980 , что тоже крайне неудобно.

    Следует убрать данные операторы.

    3 ШАГ. Помощь миру.

    Предложила два решения по следующим вопросам:
    http://www.forum.mista.ru/topic.php?id=712292
    http://www.forum.mista.ru/topic.php?id=712109
    Мой логин — websony…

    • Dobrenko Oleg 30.06.2014 в 06:49

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

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

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

    избавился от заблуждения что 1с это просто, и для программирования можно глубоко не разбираться в Бухгалтерии
    Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
    вам удалось применить новые навыки (какие результаты были достигнуты);
    По факту, курс изучал для ознакомления, и после некоторой тренировки, на мелочах подстраховывать конторского програмера, по факту видимо только в администрировании 
    Применить планирую разве что для создания массовой базы, биллинг аудит пользователей, пароли информация о кроссировке ))
    Если Вы пока не работаете реальных проектах по внедрению решений на «1С:Предприятии 8», то, что оказалось неожиданным из материалов курса?
    Затрудняюсь ответить чем удивила 8рка, зато всплыл вопрос, который наверное не к программированию а администрированию больше, как правильно спроектировать базу, разнести на сервере по кластерам, или кластера по серверам, чтоб уменьши нагрузку. (SQL)
    Насколько удобен, оказался формат обучения в сравнении с очным форматом?
    Формат не привычный но нормальный, по факту мне не хватало времени , чтоб успевать делать домашку, не программировал из лекций.

    Укажите своё ФИО, должность и город, где вы работаете. Эти данные будут использоваться для публикации в списке финалистов и при составлении рекомендательных писем.
    Королев А.Л. сис. Администратор. Иркутск ЗАО «Энерпред – Холдинг»

    Ваша задача – оттестировать прикладное решение, найти максимальное количество
    ошибок и описать пути их исправления. При этом учитывайте, что функционал заказчика полностью устраивает.
    1. Ошибка или нет незнаю, но при выборе любой уже созданной записи при поступлении животных, им автоматом подставляется значение рождение на территории зоопарка.
    В коде стоит поставить условие, если это не вновь создаваемый объект то то значение по умолчанию не подставлять!
    2. Дата при поступлении нового животного берется от начала веков, а не текущая. Привязать бы к системной или оставлять пустой, и сделать обязательной для заполнения
    3. Поступление животных, позволяет проводить при незаполненном источнике поступления, желательно поле сделать обязательным для заполнения
    4. Документ позволяет выбытие животных которых нет в зоопарке, в отчете в клетках сидят минусовые животные. Надо бы выдавать ошибку при выбытии несущисвующих животных
    5. При инвентаризации нельзя поставить что животных не «-»,а 0.
    простейшее исправление (Формат и формат редактирования) ЧН=0
    6. Направление выбытия, поле не обязательно для заполнения, очистив поле, животное можно выбыть в никуда.
    7. В инвентаризации не учитывается год в запросе, нужно добавить условие на дату из формы.
    8. Регистр ВыбытияЖивотных – изменить с Остатки на Обороты
    9. Модуль объекта , процедура ОбработкаПроведения. В запросе на получение остатков нужно добавить условие «ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка»
    10. Остатки получать надо на Границу а не на момент времени
    11. При выводе сообщения о нехватке остатка надо «ВыборкаДетальныеЗаписи.НомерСтроки – 1″
    12. Модуль формы, документа выбытие, процедуру «ПриОткрытии» переименовать в «ПриСозданииНаСервере» чтоб работало в тонком клиенте
    13. Отчет РазмещениеЖивотных – В СКД добавить секунду к периоду, для правильного получения остатков на заданную дату.

    http://forum-1c.ru/index.php?topic=40802.new#new
    Не программирование, но 1с, и помощь миру ;)

    • Dobrenko Oleg 30.06.2014 в 07:01

      Благодарим за развернутый отзыв!
      Поздравляем с успешным окончанием курса! Успехов в дальнейшем обучении :)

  5. Добрый день.

    Беляков Егор Александрович, г.Санкт Петербург.

    Обратная связь.
    Так как моя работа с 1С ни как не связана, то все, что я узнал – новое для меня.
    Главное, что я понял из курса так, это то, что 1С изучить реально, было бы желание.
    Не сомненно на сегодняшний день Ваши курсы лучшее, что есть на рынке обучения по 1С.
    Формат обучения гараздо лучше очного, планировать свое время, это очень важно.
    Единственное, что смущает так, это то, что курс 2010 года и нет описания изменений появившихся в версии 8.3

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

    1- Регистр накопления – ВыбытиеЖивотных был остатки, нужно сделать обороты, перепровести документы выбытия.

    2- В модуле формы поступления был код
    Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
    в событии при создании на сервере.Это не давало полноценно изменять Источник поступления.

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

    3-Модуль объекта обработка проведения, движения по регистру ВыбытиеЖивотных записываются после проверки на отрицательные остатки (можно заминусить остаток по клетке).
    необходимо проводить движения до проверки отрицательных остатков.

    4-модуль обработка проведения в запросе (на проверку отрицательных остатков) указано “момент времени” без граници.
    а нужно -Запрос.УстановитьПараметр(“МоментВремени”, Новый Граница(МоментВремени(), ВидГраницы.Включая));

    5-Документ инвентаризация в реквизите Количество факт – проверка заполнения-Выдавать ошибку.
    Нужно енто удалить, ибо факт может бытьт 0.

    6-В документе инвентаризация можно изменять учетные остатки, это как то не правельно.
    Нужно в реквизите Количество ткнуть галку “Только просмотр” и убрать галку “Доступность”.

    7-При создании поступления и выбытия на основании инвентаризации, автоматом выбираются значения констант.
    Добавил в обработку заполнения документов следующий код.

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

    8-В обработке проведения перемещения в запросе (на проверку появления отрицательных остатков после проведения).
    В запрос необходимо добавить условие.
    |ГДЕ
    | РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";

    9-Документ поступление и выбытие при создании заполняется 1980 годом.

    Необходимо в документе поступление/Выбытие, стандартные реквизиты "Дата", убрать значение заполнения.

    10-В документе перемещение животных если выбрать два одинаковых склада, то можно в реквизите количество указать любое количество к перемещению.
    В регистр данные заносятся корректно но в реквизите видна кривизна.
    Нужно сделать запрет на выбор одинаковой клетке.

    • Dobrenko Oleg 30.06.2014 в 06:53

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

      • Добрый день.
        Отправил фото с семинара в мастер группу.

        • Dobrenko Oleg 02.07.2014 в 07:27

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