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

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

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

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

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

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

  1. Шаг1. Хотя отзыв уже оставляла ,но повторюсь =)
    Ионова Дарья Александровна.
    Являюсь студенткой очного отделения специальности «Прикладная информатика в экономике». На данный момент прохожу практику в организации, занимающейся внедрением, сопровождением «1С», разработкой индивидуальных прикладных решении.
    Опыта работы в такой сфере еще не имела, с «1С» ( Бухгалтерия 7.7.) работала в рамках программы института, и то, по большей части, в качестве пользователя . Знакома с теорией баз данных ,теорией бухгалтерского учета, языком запросов SQL. Опыта программирования совсем немного. Можно сказать, эту стезь осваивала практически с нуля.
    Наверно, сложнее всего дался первый блок, пришло понимание понятий платформы, конфигураций, объектов платформы, форм объектов, методов, свойств и т.д. А еще, что немаловажно, это – стали понятны отличия одних от других. Если раньше, при решении тестовых задач, все действия производились довольно сумбурно, то после прослушивания уроков, уже при постановке задачи более -менее обрисовывалась картина, представлялась последовательность действий, проще говоря, стало понятно , куда нажать , где написать, чтобы произошло то-то и то-то.
    В силу обстоятельств, пришлось еще постоянно догонять, поэтому уже по ходу выполнения заданий просматривала материалы, искала решение возникающих проблем.
    Курс изложен понятным языком, понравилось, что много внимания уделяется нюансам.
    Для меня наиболее интересными были материалы по встроенному языку, написанию запросов и созданию отчетов.
    Касаемо домашних заданий, понравилась направленность на создание универсальных решений. Это заставляет уже мыслить шире. И вообще, в уроках делается постоянный акцент на том, чтобы решение было как можно более оптимальным и показывается, как это можно реализовать. Понравилось, что рассматриваются разные варианты решений одних и тех же задач. Для меня это сыграло роль.
    При решении домашних заданий, в основном, возникали вопросы типа «А как обратиться к тому-то от туда-то» и, в целом, были постоянные проблемы с синтаксисом, но это уже, конечно, дело времени, ибо программирование требует практики.
    Еще явился полезным такой момент, что в рассматриваемых решениях учитываются различные варианты поведения пользователя. Сначала как-то об этом не задумываешься, решаешь задачу, как она поставлена, не учитывая, что пользователь может сделать и немного по-другому. Это вырабатывает привычку обдумывать исключительные ситуации и соблюдать правило хорошего тона – ограничивать действия пользователя во избежание ошибок.
    В заключение, хотелось бы отметить, что материал изложен таким образом, что понятно даже человеку без особой подготовки (действительно «введение в специальность»), формируется систематизированное представление о механизмах платформы и, непосредственно, об организации ведения учета в программе.

    Далее у меня -диплом и дальнейшее становление как специалиста )надеюсь, реализовать себя в этой области .Ваши курсы помогли мне сделать старт. Было очень полезно и интересно проходить это обучение.
    Спасибо Вам большое.

    Шаг 2.
    Нашла следующие ошибки:
    1.В документе поступления животных при создании подставляется дата 01.01.1980 0:00:00. Считаю, что в этом нет необходимости – убрала значение заполнения реквизита «Дата».
    2. в модуле формы документа поступления в процедуре «ПриСозданииНаСервере» получается из константы значение основного источника поступления и проставляется в документ. Такое поведение некорректно, т.к. при открытии любого ранее созданного документа значение источника будет перезаполняться. Решение –перенести присваивание в модуль объекта в процедуру «ОбработкаЗаполнения», при условии что документ не создается на основании документа инвентаризации.
    3.в документе выбытия так же подставляется дата 01.01.1980 0:00:00.Заполняется в процедуре обработки заполнения. Решение- убрала данное присваивание .
    4.Не работает контроль остатков животных в документе выбытия, потому что остатки проверяются без учета движений документа. Нужно задать параметру
    «МоментВремении» значение: Новый Граница(МоментВремени(), ВидГраницы.Включая)
    5.Документ инвентаризации заполняется конечными остатками – нет возможности создать документ не текущим числом. Необходимо в запросе у параметров виртуальной таблицы остатков задать период и передавать значение даты документа .
    6. Некорректно привязывается сообщение об ошибке при проверке остатков в документе выбытия . Необходимо исправить : Сообщение.Поле = “Животные[“+ВыборкаДетальныеЗаписи.НомерСтроки-1″].Животное”;
    7.в документе инвентаризации – нельзя проставить фактическое количество равное нулю.
    8. в документе выбытия при проверке остатков в условии виртуальной таблицы в запросе отбора по измерениям необходимо выборку делать по различным элементам. Так же там в подзапросе при выборе номера строки не задан параметр «ссылка».
    9. регистр «Выбытие животных» должен иметь вид обороты.
    10. в документе перемещения не задано условие- при выборе остатков из регистра необходимо указать остаток <0.
    11. не очень удобно, что нет переходов от документов к движениям по регистрам .Сделаны соответствующие настройки .
    Шаг3.
    К сожаленью, в силу отсутствия опыта, навряд ли я могу рассказать коллегам что-то принципиально новое =) но все-таки какие –то озвученные мною в ходе работы нюансы и оказывались неожиданными )
    Да и с помощью на сайтах туговато ,не говоря уже о статье . )

    • Dobrenko Oleg 19.03.2013 в 07:56

      Дарья, благодарим за развернутый отзыв!
      >эту стезь осваивала практически с нуля.
      И не зря. 1С в IT сфере – одно из самых перспективных направлений.
      Практическую часть принимаю.
      >с помощью на сайтах туговато
      Сделайте мини-семинар для своих одногрупников, они вам спасибо скажут :)
      Ждем обратную связь по 3му шагу.

  2. Наталья 18.03.2013 в 01:18

    Добрый день.
    Шаг 1. Обратная связь по курсу
    Наталич Наталья Владимировна.
    Начальник отдела ИТ «ЗАО Сибгидромехстрой» г.Новосибирск
    С 1С работаю с 1998. Много времени работала с платформой 1с:7.7. До недавнего времени с 1С:8.2 – больше как «Продвинутый пользователь» и консультант по работе с конфигурациями БП и УП для бухгалтерии и кадров. Был опыт доработки внешних печатных форм, внешних отчетов и обработок, но «думать на языке 8.2» было очень сложно после долгой работы с 7-кой. Чтение литературы тоже особых навыков не добавляло, а только расстраивало: вроде написано русским языком – а все равно не понятно. И еще помню первое впечатление о 7 книжках по встроенному языку 8.1, где 7 книга – оглавление. Как же в этих описаниях функций разобраться… Очные курсы по конфигурированию особых навыков не прибавили. В основном все умения и навыки были приобретены с большим трудом и в основном «методом тыка»
    На ссылку о Ваших курсах я набрела совершенно случайно, когда пыталась найти в интернете ответ на свой очередной вопрос «как это правильно сделать в 1с…». Скачала бесплатные демо-материалы – просмотрела -и поняла: «Это то, что мне нужно. То ,что я так долго искала. Здесь я смогу получить ответы на многие свои почему и как это будет в 1с 8.2». При выборе Базового курса были сомнения – может он не нужен, я же училась на очных курсах… Но начав обучения, поняла сколько базовых моментов мне было неизвестно: здесь и работа с синтакс-помощником, конструктором запросов (масса примеров по формированию запросов), работа с отладчиком …и многое, многое другое.
    Очень понравился формат обучения: можно просматривать материал, когда тебе удобно. Если что-то не понятно, можно остановить и прослушать еще раз или потом вернуться к просмотру нужного видеоурока. Рассматривается несколько вариантов решения одной задачи, затем выбирается оптимальный. Написание кода и его отладка происходит непосредственно в видеоуроке и создается ощущение присутствия.
    Очень сложным для меня оказалось то, что нужно отчитываться по домашним заданиям непосредственно на сайте. До недавнего времени в интернете я только искала нужную информацию, но вот чтобы чего-нибудь написать…

    Шаг 2. Практическое задание
    1. Документ «Поступление». При создании нового документа устанавливается дата 01.01.1980 0:00:00. Решение: в стандартных реквизитах необходимо у реквизита «Дата» очистить значение заполнения.
    2. Документ «ВыбытиеЖивотных». При создании нового документа устанавливается дата 01.01.1980 0:00:00. Решение: В модуле объекта в процедуре «ОбработкаЗаполнения» убрать фрагмент:

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

    3. Документ «ВыбытиеЖивотных». При проведении не контролируются остатки.
    Решение: Необходимо при установке параметра запроса «МоментВремени» использовать тип «Граница»:

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

    4. Документ «ВыбытиеЖивотных». В запросе при внутреннем соединении с табличной частью необходимо добавить условие для отбора данных по текущему документу:

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

    И в параметрах виртуальной таблицы РазмещенииъеЖивотныхОстатки в условии во вложенном запросе заменить «Выбрать» на «Выбрать различные» т.к. в документе могут быть дубли строк.
    5. Документ «ВыбытиеЖивотных». При сообщении о нехватке неверно формируется ссылка на номер строки. Решение: изменить фрагмент «ВыборкаДетальныеЗаписи.НомерСтроки» на «(ВыборкаДетальныеЗаписи.НомерСтроки-1)»;
    6. Документ «ВыбытиеЖивотных». При открытии в тонком клиенте выдается сообщение об ошибке: «Документ.ВыбытиеЖивотных.Форма.ФормаДокумента.Форма(7,24)}: Переменная не определена (Константы)…» Решение: Для получения основного направления использовать безконтекстную серверную функцию:

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

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

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

    Шаг 3. Помощь миру
    Была попытка помочь на форуме http://forum-1c.ru/index.php?topic=15433.0 (ник nn68)

    • Dobrenko Oleg 18.03.2013 в 07:08

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

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

    –Что нового Вы узнали из базового курса по программированию?
    Много нового было в Блоке 3. Автоматизация бухгалтерского учета и в Блоке 4. Автоматизация расчета заработной платы. Пришлось некоторые темы несколько раз просматривать и все равно до конца не уложилось, в процессе дальнейшего обучения думаю возвращаться к лекциям.
    –От каких заблуждений избавились?
    избавился от заблуждения что изучить 1с будет легко. Учиться, учиться и ещё раз учиться.
    –Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом вам удалось применить новые навыки (какие результаты были достигнуты);
    Нахожусь в процессе обучения. Надеюсь применить навыки в будущем.
    –Насколько удобен, оказался формат обучения в сравнении с очным форматом?
    очные курсы в том обьеме в каком давались здесь очень сложны для понимания. Думаю очные курсы полезны по отдельным темам подготовленным слушателям.

    Коробков Дмитрий. программист. г. Димитровград.(Ульяновская область)

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

    1)Документ «Поступление»
    а) Реквизит «ИсточникПоступления» – установить флаг проверки заполнения.
    б) Стандартные реквизиты – Дата – убрать значение заполнения «01.01.1980».
    в) При открытии любого документа, нового или сохраненного, перезаполняется реквизит «ИсточникПоступления». Нужно перенести код из Модуля Формы в Модуль Объекта в процедуру «ОбработкаЗаполнения».
    2)Документ «ВыбытиеЖивотных»
    а) При открытии документа в тонком клиенте возникает ошибка в процедуре формы «ПриОткрытии» из-за обращения к объекту «Константы». Нужно перенести код из Модуля Формы в Модуль Объекта в процедуру «ОбработкаЗаполнения».
    б) В документе «Выбытие животных» из процедуры «Обработка заполнения» убрать данные заполнения ДанныеЗаполнения.Вставить(«Дата», ’19800101′);.
    в) Список животных получается на дату документа, а не на МоментВремени документа.
    Нужно использовать исключающую границу.
    Запрос.УстановитьПараметр(“МоментВремени”, Новый Граница(МоментВремени(), ВидГраницы.Включая));
    г) При нехватке товара сообщение выводится не в том месте. Нужно выводить рядом с табличным полем документа под нужной строкой.
    Сообщение.Поле = “Животные[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Количество”;
    д) В процедуре “ОбработкаПроведения” записывать движения только по регистру Движения.РазмещениеЖивотных.Записать(), а не записывать все регистры : Движения.Записать().
    3)Документ «ПеремещениеЖивотных»
    В запросе определения остатков в процедуре ОбработкаПроведения необходимо добавить условие: «Где РазмещениеЖивотныхОстатки.КоличествоОстаток < 0»
    иначе документ не будет проводится .
    4)Документ «Инвентаризация»
    При заполнении табличной части «Животные» не учитывается дата документа. Нужно установить параметр «ДатаДок» в запрос в процедуре «ЗаполнитьНаСервере()».
    Запрос.УстановитьПараметр("ДатаДок ", Объект.Дата);
    5)Отчет «РазмещениеЖивотных»
    Параметр «Период» нужно брать на конец дня.
    6)Регистр накопления «ВыбытиеЖивотных»
    Регистр накопления должен быть оборотным, а не остаточным так как по нему нет расходов.
    7)Отсутствие ролей и пользователей.

    Шаг 3. Помощь миру.
    1. Провести мини-семинар (длительностью, например, 20-30 минут) на тему «Основные фишки платформы 8.2» для своих клиентов/коллег, или любую другую тему, касающуюся платформы 8.2.

    Провел мини-семинар по теме "Система компоновки данных(скд) в 1с 8.2"

    1

    2

    • Dobrenko Oleg 18.03.2013 в 07:06

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

  4. Наталья Маренкова 16.03.2013 в 17:54

    Маренкова Наталья Васильевна, г.Воронеж, программист 1С.
    Шаг 1. Обратная связь.
    В процессе изучения базового курса удалось значительно упорядочить свои знания по 1С. Очень полезно было все, что касается управляемых форм и взаимодействия клиент-сервер. В первый раз обратила внимание на то, что ВидыСубконто – это стандартная табличная часть ПланаСчетов. Очень пригодились уроки про ПВХ, т.к. с этим объектом сложно работать. Правда, в курсе не показано, как можно вести учет по ПВХ – в документах, но, может, это в продвинутом? Я его тоже обязательно пройду. С регистрами расчета редко сталкиваюсь в реальной работе, поэтому все уроки про них – очень интересны и познавательны. Да и вообще уроки и домашние задания заставили задуматься над многими нюансами, на которые не обращала внимания.
    Формат обучения на мой взгляд идеальный. Он доступен в любом городе, удобен по времени, остаются видео, которые всегда можно пересмотреть при необходимости. По сравнению с очным обучением этот курс выигрывает по всем параметрам. Еще и потому, что восприятие у всех разное и уровень знаний тоже.

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

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

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

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

    КонецФункции // ПолучитьНаправление()

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

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

    5.В документе «Выбытие животных» в запросе для получения отрицательных остатков, в подзапросе ДанныеДокумента не установлено условие
    ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка, поэтому данные в подзапросе выбираются из всех документов Выбытие. Добавлено это условие в подзапрос и добавлена установка параметра Ссылка.
    Запрос.УстановитьПараметр(“Ссылка”, Ссылка);
    6.Документ ВыбытиеЖивотных. В параметрах виртуальной таблицы РазмещениеЖивотныхОстатки в Условии в подзапросе нужно не просто ВЫБРАТЬ, а ВЫБРАТЬ РАЗЛИЧНЫЕ.
    7.Документ ВыбытиеЖивотных. Сообщение с указанием на строку с отрицательным остатком указывало не правильно. Нужно НомерСтроки-1, чтобы получить индекс:

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

    8.В документе Поступление: Данные-СтандартныеРеквизиты- Дата – Свойства – ЗначениеЗаполнения было 01.01.1980 – очищено, т.к. это очень не удобно – каждый раз менять дату.
    9.В документе ВыбытиеЖивотных в ОбработкеЗаполнения – в ДанныеЗаполнения значение даты изменено с 19800101 на ТекущаяДата()
    10.В обработке проведения документа Перемещение в запросе не было условия
    ГДЕ РазмещениеЖивотныхОстатки.КоличествоОстаток < 0, поэтому при положительном остатке тоже выдавалось сообщение и документ не проводился. Исправлено.
    11.В документе Инвентаризация поле КоличествоФакт ТЧ Животные нельзя было заполнить нулем, но ведь может быть такая ситуация, когда по факту – 0. Поэтому в свойствах реквизита КоличествоФакт установлено ПроверкаЗаполнения – НеПроверять, НеОтрицательное.
    12.12. В документе Инвентаризация в запросе получения остатков не задан Период, на который нужно получать остатки, поэтому остатки всегда получаются последние актуальные. Возможно, инвентаризация и должна делаться на дату актуальности, но тогда нужно ставить запреты на делание инвентаризации задним числом. Поэтому я изменила запрос так:

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

    Если документ новый, то момент времени его еще не определен и документ нужно перед заполнением записать. Но записываться с пустой табличной частью он не хотел, т.к. в свойствах ТЧ стояло ПроверкаЗаполнения – ВыдаватьОшибку. Я поменяла ее на НеПроверять. И обработчик кнопки Заполнить изменила так:

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

    13.Это не ошибка, но в обработке проведения Выбытия можно было бы написать так:

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

    Мне кажется, что это было бы то же самое. Хотя, возможно, тут есть какие-то нюансы, которые я не поняла.
    14.Отчет РазмещениеЖивотных. В параметрах нужно задать выражение для параметра Период: ДОБАВИТЬКДАТЕ(&Период, "Секунда", 1), т.к. в запросе используется виртуальная таблица Остатки, которая выдает данные на начало секунды заданной даты.

    Шаг3. На работе провела минисеминар на тему "Виртуальные и физические таблицы регистра бухгалтерии". Для этого сделала небольшую презентацию. Обсудили особенности и область применения каждой виртуальной таблицы.

    1

    2

    • Dobrenko Oleg 18.03.2013 в 06:57

      Наталья, благодарим за отзыв.
      Шаги №2 и 3 принимаю.
      К стати на фото, если я не ошибаюсь есть уже знакомые лица :)
      Поздравляем с успешным завершением базового курса и ждем на продвинутом!

      • Наталья Маренкова 18.03.2013 в 20:57

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

  5. Юров Александр 16.03.2013 в 16:47

    Юров Александр Анатольевич, Финансовый менеджер Загорского лакокрасочного завода, Сергиев Посад

    Поскольку моя профессия напрямую с программированием не связана, в пройденном базовом курсе для меня новое было практически всё. Впервые вплотную столкнулся с 1С 8 Конфигурацией УПП при построении системы бюджетирования в одной IT компании, в 2006 году, но до разработки тогда дело не дошло, всё на уровне использования стандартных инструментов системы. Хотя, нужно признать, с тех пор стал явно ощущать необходимость копнуть в 1С поглубже. Необходимо отметить, что с автоматизацией я всегда был связан довольно плотно, разрабатывал несложные программы на Access, писал макросы в Excel, всё для решения прикладных задач и облегчения работы своей и своих коллег. Декларируемые цели такой автоматизации для себя определял как повышение эффективности выполнения основной работы – финансово-экономической. По факту же всегда оказывалось, что именно в автоматизации и находятся мои главные интересы. И вот, наконец, решился, выбрал ваши курсы – я в восторге! Курс замечательный, данный формат обучения для меня – лучше не придумаешь (начинал с предыдущим, 15-м потоком, но в декабре существенно отстал из-за большой загрузки на работе, как обычно у финансистов в конце года, – отчеты, бюджеты, кредиты…). Теперь только вперед, продвинутый курс ждет меня…
    Спасибо огромное за вашу работу, за хорошо подобранный материал, его подачу, глубину, разбор неоднознчных ситуаций и многое другое. Всё это придает уверенность в правильности своего выбора.

    Теперь что касается задачи.

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

    2. Не работает автозаполнение поля “направление” документа ВыбытиеЖивотных в принципе, поскольку обращение к значению константы ОсновноеНаправление производится в процедуре модуля формы “ПриОткрытии”, компилируемой на клиенте.
    Решение: поставил данное присваивание в обработку заполнения модуля документа, в ветку Иначе (если документ создается не из документа Инвентаризация)

    3. При создании нового документа Поступление по умолчанию задается неправильная (нетекущая) дата – 01.01.1980, заполняется значением по умолчанию стандартного реквизита Дата документа.
    Решение: убрал значение по умолчанию реквизита

    4. При создании нового документа ВыбитиеЖивотных по умолчанию задается неправильная (нетекущая) дата 01.01.1980, заполняется значением из ДанныхЗаполнения, установленных в обработке заполнения модуля объекта в случае, если документ создается не из документа Инвентаризация.
    Решение: убрал данное присваивание из ветки Иначе

    По умолчанию в обоих случаях (3 и 4 пункты ошибок) дата должна быть текущей, либо датой документа Инвентаризация, поскольку согласно правилам БУ излишки и недостачи отражаются в учете на дату инвентаризации (а не на какую-то самую раннюю дату, как тут, возможно, предполагалось)
    Решение:
    Прописал
    Дата = ДанныеЗаполнения.Дата
    в тело оператора Если ТипЗнч(ДанныеЗаполнения) = Тип(“ДокументСсылка.Инвентаризация”) в обработке заполнения обоих документов.

    5. Не работает проверка остатка животных при проведении документа ВыбытиеЖивотных.
    Решение: установка параметру “МоментВремении” значения: Новый Граница(МоментВремени(), ВидГраницы.Включая)

    6. В случае ошибки проведения (непрохождении контроля остатка) неправильно привязывается сообщение об ошибке.
    Решение: исправил указание индекса привязываемой строки: (ВыборкаДетальныеЗаписи.НомерСтроки-1)

    7. Неправильно работает контроль остатка в документе ПеремещениеЖивотных в обработке проведения:
    Решение: В запрос, проверяющий остаток после проведения, добавил условие
    РазмещениеЖивотныхОстатки.КоличествоОстаток < 0.

    8. Ошибка в запросе обработки проведения модуля документа ВыбытиеЖивотных, не установлено условие отбора данных вложенного запроса ДанныеДокумента (проверка остатка, в принципе, будет осущестляться правильно, но производительность запроса с ростом количества документов будет ухудшаться и привязка сообщения об ошибке будет производится неправильно, поскольку № строки может получаться из другого документа).
    Решение: добавил в запросе условие отбора во вложенном запросе ДанныеДокумента:
    ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка.

    9. При формировании документов Поступление и ВыбытиеЖивотных на основе Инвентаризации неправильно заполнять поля "источник поступления" и "направление" значениями по умолчанию, нужно как минимум оставлять эти поля пустыми, а лучше
    Решение: завести в справочники (Источники поступления и Направления выбытия) предопределеное значение "По результатам инвентаризации" и подставлять его в документ, сформированный таким образом. В обработке заполнения в теле оператора
    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Инвентаризация")
    добавить строку:
    Направление = Справочники.НаправленияВыбытия.ПоРезультатамИнвентаризации //(это для документа ВыбытиеЖивотных, аналогично для документа Поступление)

    9.1. Увеличил длину наименования Справочника НаправленияВыбытия до 50.

    10. Отчет "Размещение животных" некорректно выводит данные на указанную дату (по умолчанию установлено – на указанную секунду), не включая последнюю.
    Решение: Для исправления ситуации в СКД указал состав даты только ДАТА (вывод отчета на конкретную секунду представляется нецелесообразным), описано выражение для Периода: ДобавитьКДате(КонецПериода(&Период, "День"), "Секунда", 1)

    11. Документ "Инвентаризация" заполняется при нажатии на кнопку "Заполнить" на текущую дату, а не на дату документа. При строгом следовании срокам проведения инвентаризаций, возможно это и не будет создавать проблем, однако если нужно будет сформировать документ задним числом, система не покажет остатков на это число.
    Решение: передал в запрос остатков параметр – дату документа Инвентаризация

    12. Внес корректировки в программный код, не влияющие на функционал системы, однако влияющий на производительность и удобство сопровождения:
    12.1. Исправил вид регистра ВыбытияЖивотных – Обороты (расчет остатков по данному регистру не имеет смысла). Однако данное исправление повлияло на работоспособность отчета АнализВыбытийЖивотных, данные стали выводиться некорректно. Создал копию регистра, перепривязал к нему документ ВыбытиеЖивотных. Всё работает.
    12.2. В обработке проведения документов ВыбытиеЖивотных и ПеремещениеЖивотных (при контроле остатков) убрал строку
    Движения..Записывать = Истина,
    поскольку применяется принудительная запись регистра до контроля остатков:
    Движения.Записать()
    Оставил строку:
    Движения..Записать() в конце перед построением запроса на поиск отрицательных остатков.
    12.3. Еще в обработках проведения документов несколько укоротил код (вместо указания ВидДвиженияНакопления…) сразу:
    Движение = Движения..ДобавитьПриход()
    Движение = Движения..ДобавитьРасход()
    12.4. Вынес процедуру расчета отклонений фактического количества животных от расчетного в функцию общего серверного модуля, обращаюсь к ней из обработки заполнения документов Поступление и ВыбытиеЖивотных:

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

    12.5. Итоговый код обработки заполнения документа Поступление:

    Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
       
        Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Инвентаризация") Тогда
           
           
            ДанныеДляЗагрузки = АвтозаполнениеДокументов.ОтклоненияПоРезультатамИнвентаризации(ДанныеЗаполнения, Ссылка);

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

    12.6. Итоговый код обработки заполнения документа ВыбытиеЖивотных:

    Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
       
        Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Инвентаризация") Тогда
           
            ДанныеДляЗагрузки = АвтозаполнениеДокументов.ОтклоненияПоРезультатамИнвентаризации(ДанныеЗаполнения, Ссылка);

            Животные.Загрузить(ДанныеДляЗагрузки.Выгрузить());

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

    Помощь миру

    Опубликовал статью (правда сложно назвать её небольшой) о механизме создания управленческой отчетности в 1С, надеюсь, мой опыт окажется еще кому-нибудь полезным.
    Сейчас статья на модерации, ссылки ниже:
    http://nashe1c.ru/materials-view.jsp?id=443
    http://infostart.ru/public/178081/

    • Dobrenko Oleg 18.03.2013 в 06:22

      Александр, благодарим за отзыв по курсу!
      Шаги 2 и 3 приняты. Поздравляем, вы в списке финалистов!

  6. Здравствуйте.
    ШАГ 1.
    Леонтьев Алесандр Сергеевич, г.Омск, работаю менеджером.
    До этого с 1С сталкивался только на уровне пользователя, т.е. сюда нажимай- туда не нажимай, поэтому новым было практически все. После курсов решил поменять все-таки вид деятельности и стать программистом 1с. Формат курсов для меня лучше не придумаешь, т.к. очно нет времени вообще заниматься и вечером так же не всегда могу выделить конкретное время. Старался на выходных догонять то что не успевал в течение недели.

    ШАГ 2.

    1. В документе выбытие животных константу для создания нового документа получали на клиенте. при запуске тонкого клиента выскакивала ошибка. Перенес получение константы в обработку заполнения в модуль объекта.
    2. В выбытии животных устанавливали дату нового документа 1980 г. Исправил на текущую дату.
    3. Проведение документа Выбытие животных исправил параметр момент времени для верного контроля остатков

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

    4. В пользовательском режиме при сообщении об ошибке проведения выбытия информационное окно привязывалось в угол экрана. Поправил в поле установки сообщения

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

    5. При открытии проведенного документа Поступления источник заполнялся из константы, Перенес константу в обработку заполнения
    6. Дата ставилась по умолчанию в конфигураторе 1980 год, убрал ее из конфигуратора и добавил заполнение текущей в обработке заполнения
    7. Не корректно работало Перемещение, в запросе исправил чтоб ошибка выдавалась только когда животных <0 после проведения.
    8. Регистр Выбытия сделал оборотным.
    9. После п.8 перестал работать отчет по выбытиям, поправил его в СКД, заменил таблицу на верную, настроил период.
    10. В инвентаризации нельзя было установить фактическое количество=0, убрал проверку заполнения, представление незаполненного значения сделал = 0 ;
    11. не знаю ошибка или нет но принудительно запускался толстый клиент, поставил АВТО.

    ШАГ 3.
    Семинар мне проводить не у кого, т.к. работа не та, для статьи я как то не дорос. на форумах старался помочь, насколько это получилось не знаю. Ник kontur
    http://www.1c-pro.ru/topic21896.html
    http://www.1c-pro.ru/topic49229.html
    http://www.1c-pro.ru/topic49160.html
    http://www.1c-pro.ru/topic49174.html

    • Dobrenko Oleg 18.03.2013 в 06:09

      Здравствуйте, Александр.
      >решил поменять все-таки вид деятельности
      Смелый шаг! Успехов на новом поприще :)
      Поздравляем с успешным окончанием базового курса!

  7. Соков Михаил 15.03.2013 в 19:15

    I.Соков Михаил Аркадьевич, ИП, г. Иваново, Бухучет- анализ -аудит – 1С.
    1. Принципиально новое только в последнем блоке, т.к. с ЗП обычно дел не имел, а так понравились многие алгоритмы решения задач.
    2. Понял, что есть чему учиться.
    3. Переписал некоторые обработки и отчеты, так сказать усовершенствовал, оптимизировал их работу. Есть самопальная конфигурация “Учет канцтоваров” писал в 2011 году, подумываю о пересмотре ее устройства и алгоритмов, но возьмусь наверно только после “Продвинутого курса” (чтобы потом еще раз не переделывать). Кроме этого раньше модифицировал поведение и проведение документа изменениями в модуле документа, теперь перешел на подписки на события, не требуется изменения конфигурации поставщика (1С), и быстрее проходит обновление. По новому посмотрел на свои блоки добавляемые в типовые решения, но к переделке приступлю после “Продвинутого” см. выше.
    4. Формат обучения по сравнению с очным намного удобен, особенно понравились тематические сессии мастер группы, но хотелось бы уже услышать/увидеть более актуальный материал по 8.3, хотя бы в рамках ознакомительной версии, а то релиз уже не за горами – 17.04.2013.

    II. Ошибки:
    1. Документ “Поступление” форма документа процедура “ПриСозданииНаСервере” реквизит документа ИсточникПоступления всегда заполняется значением константы “ОсновнойИсточник”, вне зависимости от того какой источник выбран и сохранен в документе.
    Решение: Если Объект.Ссылка.Пустая() Тогда Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить(); КонецЕсли;
    2. Документ “Поступление” в стандартном реквизите “Дата” указано значение заполнения “01.01.1980 00:00:00”. Решение: убрать.
    3. Документ “ВыбытиеЖивотных” форма документа событие “ПриОткрытии” в тонком клиенте попытка обращения к константе на стороне клиента. Решение: перенести текст в обработчик “ПриСозданииНаСервере”.
    4. Документ “ВыбытиеЖивотных” при анализе отрицательных остатков, остатки получаются на момент времени документа. Решение: вместо Запрос.УстановитьПараметр(“МоментВремени”, МоментВремени()); – Запрос.УстановитьПараметр(“МоментВремени”, Новый Граница(МоментВремени(), ВидГраницы.Включая)); Кроме того можно убрать строку ЯДвижения.РазмещениеЖивотных.Записывать = Истина;, движения все равно записываются принудительно. То же и в “Перемещении”.
    5. В этом же запросе во вложенном запросе “ДанныеДокумента” необходимо условие ГДЕ ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка, иначе выбираются все документы выбытия и все животные в них. Условие ограничит выборку только одним документом.
    6. Документ “ВыбытиеЖивотных” при создании нового устанавливается не текущая дата, а “01.01.1980”. Решение: в модуле объекта в процедуре Обработка заполнения убрать ветвь “иначе”.
    7. Документ “ВыбытиеЖивотных”. В свойствах стандартного реквизита “Дата” стоит “Заполнять из данных заполнения” – то же можно убрать.
    8. Документ “ВыбытиеЖивотных”. Сообщение о нехватке привязывается к номеру строки, а не к индексу. Решение: вместо НомерСтроки надо – (НомерСтроки – 1).
    9. Документ “Перемещение” в запросе просто остатки. Нужно добавить условие ГДЕ РазмещениеЖивотныхОстатки.КоличествоОстаток < 0"
    10. Документ "Инвентаризация", табличная часть, реквизит "КоличествоФакт" проверка заполнения "Выдавать ошибку", но по факту может быть и 0. Установить "Не проверять".20:09 15.03.2013
    11. Форма документа, модуль формы, команда процедура обработки команды "Заполнить", остатки животных целесообразнее наверно получать на дату документа, т.к. документ может быть введен задним числом, или отредактирован позднее. В запросе на виртуальную таблицу наложить условие по периоду.
    12. Регистр накопления "ВыбытияЖивотных" скорее всего должен быть Оборотным (в базе "Остатки" и регистр в 0 не выводится).
    Не ошибки, пожелания:
    Для удобства анализа движений в интерфейс установить видимость регистров накопления, или установить видимость движений у документов. В документы "Поступление", "ВыбытиеЖивотных" добавить ссылку на документ основание "Инвентаризация" и при создании документов на основании учитывать созданные документы или можно у документа "Инвентаризация" добавить два реквизита – "ДокументСписания" и "ДокументОприходования" и при вводе на основании заполнять их, иначе документов можно создать любое количество.

    III. Самое тяжелое в этом задании – найти вопросы. Регистрироваться на форумах. Это-же куча времени. Статьи писать не умею (чукча не писатель, чукча читатель). А уж на публике выступать – неа, могу только строить. Псему сколько нашел.

    http://www.1c-pro.ru/topic49219.html
    http://www.1c-pro.ru/topic49131.html
    http://www.1c-pro.ru/topic49006.html
    http://www.1c-pro.ru/topic48811.html
    http://www.nowa.cc/showthread.php?t=354705&page=77
    на эту ссылку жду данных регистрации – http://www.forum.mista.ru/topic.php?id=656583, но ответ уже готов:

    ВЫБРАТЬ
       Таблица1.Дата1,
       Таблица1.Дата2
    ПОМЕСТИТЬ Таблица1
    ИЗ
       &Таблица1 КАК Таблица1
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
       Таблица2.Дата
    ПОМЕСТИТЬ Таблица2
    ИЗ
       &Таблица2 КАК Таблица2
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
       Таблица2.Дата
    ИЗ
       Таблица2 КАК Таблица2
          ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица1 КАК Таблица1
          ПО (Таблица2.Дата МЕЖДУ Таблица1.Дата1 И Таблица1.Дата2)
    • Dobrenko Oleg 20.03.2013 в 12:55

      Михаил, благодарим за обратную связь.
      Шаги №2 и 3 приняты. Поздравляем, вы в списке финалистов.

  8. Игорь Щербаков 14.03.2013 в 13:30

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

    Щербаков Игорь Борисович, программист, Москва.

    Этот курс лишен главного недостатка других учебных курсов по 1С – фрагментарности. В учебных центрах №1 и №3 сложные и объемные вопросы пытаются закрыть демонстрацией одного примера. В данном курсе материал рассматривается обстоятельно и подробно, с достаточным количеством разнообразных примеров.
    Для меня очень полезной оказалась еще одна особенность курса – многочисленные демонстрации отладки программного кода, когда Евгений сначала допускал какую-нибудь ошибку (случайно или намеренно), а потом исправлял ее.
    И наконец то, что можно назвать сталкингом 1С, – исследование возможностей с помощью отладчика, экспериментальное получение ответов на вопросы: если мы используем этот метод, какой тип данных получим на выходе? Какие значения возвратит эта процедура? И т.д. В отличие от продуктов западных разработчиков, по 1С нет полноценной документации. Подобный сталкинг – вынужденная ее замена. Освоив эту методику на курсе, теперь регулярно ею пользуюсь.

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

    1. Для регистра накопления ВыбытияЖивотных свойство “Вид регистра” имеет значение “Остатки”. Этот регистр заполняется только при выбытии животных, в нем накапливаются движения только в одну сторону, поэтому регистр не может быть выведен в 0. Для исправления ошибки вид регистра сменил на “Обороты”.

    2. В форме документа ВыбытиеЖивотных в клиентской процедуре делается попытка обратиться к константе ОсновноеНаправление, при этом возникает ошибка. Для исправления ошибки создал серверную процедуру с обращением к константе, которая вызывается из клиентской процедуры.

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

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

    4. В обработке проведения документа ВыбытиеЖивотных добавил ограничение во вложенный запрос

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

    5. В обработке проведения документа ВыбытиеЖивотных исправил небольшую ошибку в текстовой строке.
    Было:

    Сообщение.Текст = "Недостаточно животного в "+ВыборкаДетальныеЗаписи.Животное+" в "+ВыборкаДетальныеЗаписи.Клетка+" в количестве "+ВыборкаДетальныеЗаписи.Нехватка;

    Стало:

    Сообщение.Текст = "Недостаточно животного "+ВыборкаДетальныеЗаписи.Животное+" в "+ВыборкаДетальныеЗаписи.Клетка+" в количестве "+ВыборкаДетальныеЗаписи.Нехватка;

    6,7,8,9. Для измерений регистров (Животное и Клетка регистра РазмещениеЖивотных, Животное и Направление регистра ВыбытияЖивотных) необходимо установить свойство “Запрет незаполненных значений”.

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

    ——————————
    Не ошибка, но неудобство: в документе ВыбытиеЖивотных, в процедуре ОбработкаЗаполнения значение даты по умолчанию – 1 января 1980 года. Стоит убрать это заполнение, чтобы по умолчанию проставлялась текущая дата.

    Помощь миру

    Написал статью «Ведущие виды расчета», опубликовал на обоих рекомендованных сайтах:

    http://infostart.ru/public/177676/ (уже набрал +2 балла :) )

    На сайте http://www.nashe1c.ru материал пока ожидает проверки модератором.

    • Dobrenko Oleg 15.03.2013 в 09:47

      Игорь, благодарим за отзыв.
      Практическая часть принята. Шаг №3 принят.
      Поздравляем, вы финалист 16 потока базового курса!

  9. Елена 13.03.2013 в 18:51

    Шаг 1.
    Холостенко Елена, г.Одесса. Работаю в фирме франчайзи консультантом по прикладным решениям (УТ, БУ, ЗУП) в пользовательском режиме.

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

    Что нового? Весь материал был новым, не изучавшимся ранее.
    Заблуждений не было.
    Из неожиданного: наконец- то удалось найти именно тот курс, который долго искала:
    1. для новичков в программировании, а не только новичков в 1С
    2. для заочников
    Для меня такой формат курсов самый приемлемый.

    Шаг 2.
    Документ «Выбытие животных», Модуль Объекта, процедура «Обработка проведения»:
    1. если документ не новый, то можно указать любое количество животных, документ проведется без контроля остатков.
    Решение:
    При передаче параметра

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

    необходимо учесть границу, т.е.

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

    2. во вложенном запросе при отборе Животных и Клеток из документа, не указано из какого именно документа идет выбор

    (ВЫБРАТЬ
        МИНИМУМ(ВыбытиеЖивотныхЖивотные.НомерСтроки) КАК НомерСтроки,
    ВыбытиеЖивотныхЖивотные.Животное КАК Животное,
    ВыбытиеЖивотныхЖивотные.Клетка КАК Клетка
    ИЗ
    Документ.ВыбытиеЖивотных.Животные КАК ВыбытиеЖивотныхЖивотные
    ГДЕ
        ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка))

    3. для привязки сообщения о нехватке животных необходимо указать:

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

    4. Документ «Выбытие животных», Модуль формы документа
    В процедуре ПриОткрытии с директивой &НаКлиенте идет обращение к объекту конфигурации Константы.
    Решение:
    Первоначальное заполнение реквизитов объекта значениями по умолчанию проводить в Модуле объекта в процедуре ОбработкаЗаполнения.
    5. Документ «Поступление», не корректно работает заполнение реквизита «ИсточникаПоступления» из значения константы по умолчанию. Документ проведен, изменяем значения константы ОсновнойИсточник, открываем документ, значение ИсточникаПоступления меняется на новое по умолчанию.
    Решение:
    Первоначальное заполнение реквизитов объекта значениями по умолчанию проводить в Модуле объекта в процедуре ОбработкаЗаполнения.
    6. Документ «ПеремещениеЖивотных» корректно работает только в случае, когда количество перемещаемых животных равно количеству этих же животных на остатке.
    Решение:
    в запросе в Модуле Объекта в процедуре «Обработка проведения»

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

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

    Не ошибки, но замечания:
    1. В отчете РазмещениеЖивотных нет отбора по клетке и/или животному
    2. При записи в регистры накопления дубли строк в документах не группируются
    3. Не совсем понятно зачем в документе «Поступление» инициализовано в свойствах стандартного реквизита Дата значением 19800101, а также при создании документа «ВыбытиеЖивотных» в модуле объекта, в процедуре ОбработкаЗаполнения..

    Шаг. 3
    Часто читаю моему 2-х летнему сыну «Телефон» Чуковского.
    «Бегу! Бегу! Чем смогу – помогу!»

    Так вот, чем смогла ;)
    http://www.forum.mista.ru/topic.php?id=655851
    http://www.forum.mista.ru/topic.php?id=655644
    http://www.forum.mista.ru/topic.php?id=655560
    http://www.forum.mista.ru/topic.php?id=655546
    http://www.forum.mista.ru/topic.php?id=655517

    Ник в форуме t731

    • Dobrenko Oleg 15.03.2013 в 09:43

      Елена, благодарим за отзыв.
      >Курс полностью оправдал ожидания
      Отлично! Успехов в дальнейшем обучении!
      Шаги №2 и 3 приняты. Поздравляем, вы в списке финалистов базового курса!

  10. Касьянов Андрей Александрович, программист 1С, г. Подольск.

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

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

    Предварительно определимся с функциями, которые нужно тестировать:
    – Поступление животных,
    – Выбытие животных,
    – Перемещение животных,
    – инвентаризация животных.
    Кроме функций есть 2 отчета:
    – “Размещение животных”,
    – “Анализ выбытий животных”.

    1. Поступление животных. Здесь мы хотим отразить факт поступления животного и изменить количество животных, имеющихся в наличии.
    Для этого создаем и проводим документ “Поступление”.
    – Предварительное заполнение – Дата по умолчанию 1980 год, не удобно, убрал в стандартных реквизитах.
    – Проверка заполнения – есть возможность указать отрицательное количество, исправил, поставив галку “Неотрицательное” в свойствах реквизита.
    – проведение – нет замечаний.

    2. Выбытие животных.
    – Предварительное заполнение – также дата 1980 год, закомментировал ветку “Иначе” (смысл – ввод не на основании) из процедуры “Обработка заполнения”.
    – Проверка заполнения – также как и в поступлении была возможность указать отрицательное количество, исправил.
    – Проведение:
    – По новой технологии нам не нужно включать флажок “Записывать” в начале обработки проведения, закомментировал.
    – в запросе стоял ненужный минус в строке

    "-РазмещениеЖивотныхОстатки.КоличествоОстаток КАК Нехватка"

    убрал.
    Этот минус поставил в эту строку:

    "Сообщение.Текст = "Недостаточно животного в "+ВыборкаДетальныеЗаписи.Животное+" в "+ВыборкаДетальныеЗаписи.Клетка+" в количестве "+(-ВыборкаДетальныеЗаписи.Нехватка)";

    Перенес сообщение из поля животные в поле количество:

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

    – Отбор по Моменту времени не включает данный документ, вместо этого сделал ВидГраницы.Включая.

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

    Никак не мог получить отрицательные остатки после этого, пока не обнаружил, что нужно заменить в начале процедуры строку:

    Движения.Записать();

    на строку:

    Движения.РазмещениеЖивотных.Записать();

    – Теперь сообщение об отрицательных остатках появилось, но не показывает в нужное поле. Вспомнил, что универсальная коллекция начинается с нуля, скорректировал вывод.

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

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

    3. Перемещение животных.
    – Убрал минус в запросе контроля остатков, вместо этого добавил условие:

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

    – добавил унарный минус в сообщении пользователю:

    (-ВыборкаДетальныеЗаписи.Нехватка).

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

    5. Отчеты
    5.1. “Размещение животных”.
    Не нашел к чему придраться

    5.2. “Анализ выбытий животных”.
    Здесь отчет перестал работать после того как изменил Вид регистра с “Остатки” на “Обороты”. Пересчитал Итоги в пользовательском режиме, отчет заработал.

    ШАГ 3. Помощь миру
    Самая сложная задача оказалась. Статью писать пока рановато, презентацию на работе устраивать некому, из 1с-ников только я да шеф, который и так в курсе, но настроен скептически – говорит главное опыт, а на курсах узнаешь только основы (хотя я уже вижу, что у него “белых” пятен немерянно )). Надеюсь мой отзыв он не увидит )).
    В итоге, как большинство наверное, я выбрал форум, но и не тут-то было, вопросы-то на форумах часто за пределами стандартных решений, а там где я мог бы помочь, уже куча решений предложена. В итоге открыл 5 форумов и начал мониторить вопросы, когда появился новый интересный вопрос, который мог иметь решение, а мог и не иметь, я решил все-таки попробовать и получилось!
    http://www.1c-pro.ru/topic49163.html
    Ник ankass.
    Надеюсь этого хватит для финала, задачка маленькая, но нестандартная и интересная получилась, а главное, возможно, очень своевременная и полезная для автора. Если не открывать форму модально, то мы не сможем извлечь нужное введенное значение.

    • Dobrenko Oleg 15.03.2013 в 09:38

      Андрей, благодарим за отзыв по курсу!
      >В итоге: курсами доволен, однозначно буду еще учиться
      Отлично, ждем в будущем на продвинутом
      >«белых» пятен немерянно ))
      Так абсолютно у всех, кто изучает материал методом “научного тыка” :)
      Поздравляем с успешным окончанием базового курса по программированию!