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

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

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

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

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

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

  1. Денис 30.07.2013 в 08:29

    Первое задание. Денис Тиунцев.
    C 2002 года я писал на 7.7 . Всех сотрудников где я работал и работаю по сей день 7-ка устраивала и устраивает. Есть фирмы (в основном не большие и занимающиеся торговлей ) которые и сейчас не хотят переходить на 8 ку. Их конфигурация допиливалась или писалась с 0. Они отработали в ней десяток лет и не хотят ничего менять. Товар приходит и отражается в базе как они хотят, резервируется как они хотят, списывается по их алгоритмам. Им незачем покупать 8-ку и ее переделывать. Они работают по нарисованному алгоритму год из года, у них ничего не меняется. Лет пять назад я устроился на мебельное производство. На нем стояла и сейчас стоит 7.7. Базы – Комплексная, ЗиК, Торговля, Бухгалтерия. Центральная Производство, куда стекаются все данные для расчета зарплаты, настройки плана, контроля норм. Сейчас предприятие планирует обновить ПО на станках. Мы вышли с предложением к руководству купить 8-ку, нам сказали – Для чего? Все же и так работает. После недолгих трений мне выпала роль – пройти сначала базовый курс по программированию, чтобы понять какие новые возможности и механизмы нам дает 8-ка по сравнению с 7.7. Итак:

    1. Избавился от заблуждения, что 8-ка это совершенно новый продукт с совершенно иной концепцией по программированию. Справочники остались справочниками, документы документами. Остались константы, правда они перестали в себе нести периодичесткую нагрузку. Но зато имея теперь Регистр сведений мы можем вести периодичность в разрезе нескольких измерений. Например цена – Может изменяться в разрезе Номенклатуры и ВидаЦен. Удобно? Безусловно.
    2. Оценил ввод на основании элементов справочника. с помощью этого механизма у знакомых теперь на основании Товара создается Расходная накладная.
    3. Предопределенные Элементы – Для таких случаев в 7 – ки приходилось описывать отдельные процедуры. Теперь это уже реализовано и главное визуально видно – каой элемент предопределенный, а какой нет.
    4. Понравилась Настрока Прав пользователей. Опять же если раньше приходилось например для редактирования какого либо элемента в документе писать специальные алгоритмы (кто имеет право его редактировать а кто нет) то сейчас для этого есть штатные средства – Ограничения Доступа к данным.
    5. Совсем новым оказалось, что теперь не важно проведен документ или нет – он может делать набор записей в регистры. Понравилась идея ССЫЛКИ на документы и справочники.
    6. Механизмы Оперативного и бухгалтерского учета оказались схожими с 7.7. Есть конечно свои нюансы, в частности настройка количественного учета в бух учете, настройка субконто, появление регистра бухгалтерии но восновном это касалось бух учета.
    7. Новым оказался и механизм работы с печатными формами.
    8. Контекстные подсказки , Сtrl+Пробел – это вообще песня. Сейчас программируя на 7.7 этого уже не хватает.
    9. Ну и конечно отдельного внимания заслуживает механизм построения запросов +СПКД. Мне кажется что именно это и является главным предметом для разговоров о том почему надо переходить с 7.7. на 8.

    Второе задание.
    Документ “Выбытие животных”.
    1. модуль формы. при запуске в тонком клиенте нельзя получить константу. сделал так:

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

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

    2 .
    Добавил в запросе.

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

    3.

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

    4.

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

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

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

    7. Документ “ПеремещениеЖивотных” закомментировал строку –

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

    8. Документ “Инвентаризация” убрал проверку заполнения у реквизита табличной части КоличествоФакт т.к. фактическое количество животных может быть 0 (Например сбежал).
    9. Еще добавил Период

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

    10. Документ “Поступление”. При открытии документа реквизит “Источник поступления” в документа брался ВСЕГДА из константы. Переделал так, чтобы только при создании НОВОГО Документа элемент заполнялся из константы.

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

    Третье задание.

    Т.к. в данный момень нахожусь в отпуске и не имею возможности делать семинар,решил написать заметку. Написал, выложил на http://www.nashe1c.ru еще 28 го. До сих пор в состоянии модерации. Но можно посмотреть войдя на сайт под логином и паролем (log:enzito pass:T2YmGfXK).

    • Dobrenko Oleg 30.07.2013 в 09:12

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

      • Денис 30.07.2013 в 09:29

        Большое спасибо. Тиунцев Денис Сергеевич. Программист. ООО МФ “Олимп мебель”

  2. Александр Филонов 29.07.2013 в 22:01

    Шаг-1.
    1. Узнал более детальную информацию по Регистрам, лучше стал понимать
    бухгалтерский учет. Правильно сказать что стал понимать учет заработной
    платы, до этого работал с ЗУП практически вслепую.
    Стал грамотно пользоваться отладкой, что увеличило скорость и разроботок
    и изучения.
    2. Открытием стало, что проведение по РегистрамРасчета выполняется в 2 этапа.
    Стал понимать как настраиваются ПланыВидовРасчета.
    3. Я работаю со стандартными конфигурациями БП 2.0 и ЗУП 2.5 они в режиме
    обычного приложения. Изучение Управляемого приложения необходимо, так как
    в обозримом будущем придется переходить на 3.0 и чтобы перевести в
    Управляемое приложение все доработки конфигураций нужны знания.
    4. В общем неожиданного ничего не было, появилось понимание механизмов
    Управляемого приложения.
    5. Формат более удобный, так как сам планируешь время занятий. Из-за работы
    не всегда можно выделить ежедневно одинаковое время. Иногда бывает несколько
    дней вообще нет времени, а бывает несколько дней целиком посвящаешь занятиям.

    Филонов Александр Семенович, Санкт-Петербург, Системный Администратор и Администратор 1С.

    Шаг-2.
    1. В модуле формы документа Поступление исправить

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

    2. В документе Поступление реквизит – ИсточникПоступления устанавливаем
    проверку заполнения.
    3. В модуле формы документа ВыбытиеЖивотных в процедуре ПриОткрытии()
    ошибка синтаксиса, хотя в пользовательском режиме работает. Видимо
    недокументированные фишки, но для чистоты исправляем на процедуру

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

    4. В документе ВыбытиеЖивотных реквизит – Направление устанавливаем
    проверку заполнения.
    5. В модуле документа ВыбытиеЖивотных в процедуре ОбработкаПроведения
    в тексте запроса ошибка – нет привязки к документу.
    6. Так же неправильно задан МоментВремени, делаем Границу. Исправляем

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

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

        Результат = Запрос.Выполнить();

    7. Также в методе СообщениеПользователю неправильно задан НомерСтроки в поле,
    8. и для красоты переносим сообщение на поле кол-во.
    9. Так же исправляем текст – перед именем животного убираем ” в “. Исправляем

                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Недостаточно животного "+ВыборкаДетальныеЗаписи.Животное+" в "+ВыборкаДетальныеЗаписи.Клетка+" в количестве "+ВыборкаДетальныеЗаписи.Нехватка;
                Сообщение.Поле = "Животные["+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+"].Количество";
                Сообщение.УстановитьДанные(ЭтотОбъект);
                Сообщение.Сообщить();

    10. В модуле документа Инвентаризация в Процедура Заполнить(Команда)
    добавляем Модифицированность = Истина;
    11. В документе Поступление в настройках стандартного реквизита – Дата
    значение заполнения – 01.01.1980 0:00:00 – убираем его.
    12. В модуле документа ВыбытиеЖивотных в процедуре ОбработкаЗаполнения
    убираем ветку Иначе, где так-же формируется дата – 01.01.1980 0:00:00
    13. Регистр накопления ВыбытиеЖивотных – Вид регистра-Остатки не совсем корректный.
    По нему проводится только расход, поэтому меняем Вид на – Обороты.
    Для корректного изменения нужно сначала отменить проведение всех
    документов ВыбытиеЖивотных, а после изменения Вида перепровести.

    Шаг-3.
    http://infostart.ru/profile/62535/public/

    • Dobrenko Oleg 30.07.2013 в 07:23

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

  3. Обратная связь по курсу
    Курс действительно раза в 2 превышает по знаниям то, что преподают по официальным курсам 1С и в 1.5 раза тот который преподавали когда то в специалисте (у них как раз и обучался по курсу программирования). В курсе рассказывали многое из того, с чем пришлось столкнуться в жизни и что в итоге приходилось разбирать самому. (например ограничение в 100000 записей в документе). К сожалени. На чистом 8.2 пока писать не приходилось (работаю с переведенной в режим совместимости базой написанной на 8.1), но для будущей работы очень пригодится. Многие вещи вспомнил и лучше разобрался, в том числе и с нелюбимым мной расчетом З/П.
    Формат обучения очень удобен, единственный минус – немного запаздывает с откликом служба поддержки.

    Практическое задание
    1. При открытии документа поступление в поле «источник поступления» присваивается значение константы. При повторном открытии документа, значение поля изменяется на значение константы. Необходима проверка на создание документа ЭтоНовый().
    2. В документах поступления и перемещения животных не учитывается вид животного хищник это или травоядное. Надо либо ввести контроль, либо в справочнике Направление выбытия добавить «съеден сокамерниками»
    3. Регистр размещения животных наверно надо сделать регистром оборотов, т.к. никаких расходов по этому регистру нет.
    4. Документ «Перемещение животных» в обработке проведения нет условия отбора только тех записей, которые имеют отрицательный остаток, выбираться будут все записи.
    5. В документе выбытие животных в обработке проведения при проверке остатков параметру запроса Момент времени передается МоментВремени документа не включая границу, из за чего не работает проверка остатков.
    6. При заполнении документа инвентаризации остатки получаются на текущую дату, без возможности заполнения документа инвентаризации задним числом.
    7. В перемещении животных при выводе ошибки в строку для вывода ищется по номеру строки, а не по индексу.
    8. При Вводе на основании у документа Поступления дата по умолчанию ставится 01.01.1980 года, при вводе на основании выбытия дата ставится правильная, так и не нашел с чем это связано.

    С третьей частью не готов пока что – семинар проводить не с кем – 1С программист я один, бухгалтером основные фишки 1С 8.2 не интересны. На форумах по сложным вопросам сам бывает решения ищу, а с простыми вопросами (по базовому курсу) на форумах отсылают в FAQ или в поиск. А насчет статей – я всегда был технарем и ненавидел писать сочинения :)

    Могу только тут поделиться знанием из жизненного опыта. При копировании файлов базы с сервера (windows 2003) на NAS от Синолоджи файлы базы скопировались, совпадали по размерам, но данные внутри базы были частично утеряны, как будто документов и не было. Поэтому после копирования обязательно проверяйте наличие данных. Лучше конечно переносить базы выгрузкой/загрузкой базы в файл.

    • Dobrenko Oleg 30.07.2013 в 06:16

      Благодарим за обратную связь по курсу!
      Практическое задание принято. Попытайтесь всё же поучаствовать в решении какого нибудь вопроса на форуме, пусть не самого сложного.
      PS укажите ваше ФИО

      • вроде в профайле указано, но на всякий случай Ковалев Андрей Петрович

  4. Анатолий 28.07.2013 в 22:23

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

    2. В документе “Поступление”, при открытии уже созданого документа, реквизит “ИсточникПоступления” всегда устанавливается в значение по умолчанию. Решение: сделать проверку объекта на пустую ссылку и только в этом случае менять реквизит.

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

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

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

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

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

    т.к. происходит явная запись и данная строка добавит лишнее обращение к серверу.

    7. В обработке проведения документа “ПеремещениеЖивотных”, явно лишняя строка:

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

    т.к. происходит явная запись и данная строка добавит лишнее обращение к серверу.

    8. Неплохо сделать проверку при поступлении и перемещении животного в не пустую клетку, если в этой клетке другое животное, то запретить туда добавлять. Сделать это можно в обработке проведения документа, с помощью запроса получить количество видов животных в клетке и если значение больше 1, то отменить транзакцию.

    9. В документах “Поступление” и “ВыбытиеЖивотных”, перед записью нужно сделать объединение одинаковых строк в табличной части. Сделать это можно в серверном вызове через выгрузку в таблицу значений, объединения и обратной загрузки.

    10. В табличной части документа “Инвентаризация”, необходимо убрать проверку заполнения для полей количество и фактическое количество, т.к. возможно в этих полях значение 0.

    11. Желательно сделать проверку на количество вводимых документов на основании документа инвентаризации, один документ поступления и один документ выбытия. Для этого нужно в документах поступления и выбытия добавить реквизит “ДокументОснование”, при проведении необходимо проверять, а был ли документ инвентаризации основанием для другого документа и при необходимости выводить сообщение пользователю.

    Фото отчет мини-семинара.

    1

    2

    • Dobrenko Oleg 29.07.2013 в 10:51

      Здравствуйте, Анатолий!
      Благодарим вас за отзыв по курсу. Поздравляем, вы в списке финалистов!

  5. 1) Обратная связь:
    Григин Федор Иванович, ведущий специалист отдела автоматизации ОАО “Межтопэнергобанк”, г.Новокузнецк.

    Для меня много нового в этом курсе. Трудноватым оказался 4 блок – автоматизация расчета з/п. В процессе выполнения д/з по блоку приходилось несколько раз просматривать уроки.

    В реальных проектах по внедрению 1с, к сожалению, пока не участвовал.(За исключением создания нескольких внешних обработок, напр. заполнение табл.частей документа данными из внешнего приложения excel) Однако есть интерес и желание приобретать и практиковать новые знания.

    Формат обучения для меня идеальный. Без отрыва от работы. К тому же, в нашем городе, я не нашел возможности очного обучения 1с.

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

    При решении домашних заданий не раз сталкивался с затруднениями, всплывали “белые пятна” недопонятого. От этого процесс решения становился еще более интересным и полезным.

    Огромное спасибо Евгению Гилеву, всем авторам и участникам этого замечательного проекта! Спасибо!

    2) отчет по практической задаче:
    1. В модуле упр. формы документа Поступление добавил условие: если документ новый (Если Объект.Ссылка.Пустая()), только тогда выполнить подстановку значения константы ОсновнойИсточник.

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

    3. В документе Инвентаризация, в его ТЧ Животные, свойство “проверка заполнения” полей КоличествоФакт и КоличествоФакт, выставлено – Выдавать ошибку, что исключает нулевое количество, а это вполне возможно. Исправил – “не проверять”.
    4. В модуле Документа ВыбытиеЖивотных исправил параметр запроса &МоментВремени – ВключаяГраницу:

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

    5. В этом же модуле исправил индекс строки при сообщении ошибки. В таблице – с 1, индекс – с 0:

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

    6. Тут же в строке сообщения убрал лишний предлог “в” и вставил скобки для лучшей читаемости:

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

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

    11. Удалил в стандартном реквизите “Дата” значение заполнения “01.01.1980 0:00:00”. Ну, и если уж в данные заполнения не передаем никакую дату, тогда убрал галку “Заполнять из данных заполнения” – в документе “ВыбытиеЖивотных”, станд.реквизит “Дата”. Хотя возможно и другое решение: галочку “Заполнять из данных заполнения” можно оставить, а в структуру данных заполнения передавать дату документа инвентаризации. Например, так:

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

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

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

    и заменил запись во все регистры на запись только в нужный для данной ситуации:

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

    Аналогично для документа “ПеремещениеЖивотных”.

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

    3) провел мини-семинар на тему “Обычные и управляемые формы”. Фото отправил на mg@spec8.ru

    1

    • Dobrenko Oleg 29.07.2013 в 08:34

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

  6. esmirallda 28.07.2013 в 11:32

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

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

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

    2. В обработке проведения документа “Выбытие животных” после создания движений по регистру РазмещениеЖивотных выполняется запись всех регистров, поскольку используется метод Записать() коллекции Движения. Более оптимально указывать для записи конкретный регистр:

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

    3. Там же в запросе используется внутреннее соединение таблицы остатков к табличной части документа, при этом не накладывается
    условие на равенство документа текущей ссылке. Часть запроса с исправлением:

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

    4. Там же в качестве даты получения остатков указывается МоментВремени(), при этом остатки возвращаются, не учитывая движения
    самого документа, нужно использовать границу:

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

    5. Там же в качестве номера строки для привязки сообщения к конкретной строке табличной части документа используется реквизит НомерСтроки, нужно использовать НомерСтроки-1, т.к. индексы строк начинаются с 0, а номера строк с 1:

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

    6. В процедуре ПриОткрытии() формы документа “Выбытие животных” происходит обращение к глобальному свойству Константы, которое
    недоступно для тонкого клиента. Было бы правильным разместить данный код в серверной процедуре ПриСозданииНаСервере().
    7. В документе “Инвентаризация” для реквизитов табличной части Количество и КоличествоФакт в свойстве “Проверка заполнения”
    указать “Не проверять” на случай если по данным регистров или по факту животных не будет в наличии.
    8. В меню Сервис-Параметры принудительно указан способ запуска приложения Толстый клиент. Правильнее было бы указать “Выбирать
    автоматически” для того, чтобы действовали настройки, установленные в настроках конфигурации и для конкретного пользователя.
    9. Регистр накопления Выбытия животных имеет вид Остатки. Это неправильно, т.к. мы учитываем показатель оборота – сколько животных
    выбыло, показатель растет только в одну сторону. Система хранит лишние данные, поддерживает актуальность таблицы итогов, что
    снижает ее производительность. Нужно указать вид регистра Обороты.
    10. Отчет “Размещение животных” при заполнении параметра Дата выведет данные на начало дня, не учитывая движения этого дня. Поэтому в качестве выражения указала следующее:

    ВЫБОР КОГДА &Период <> ДАТАВРЕМЯ(1,1,1) ТОГДА ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&Период, "День"), "Секунда", 1) ИНАЧЕ &Период КОНЕЦ

    Шаг 3. http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=614379#614379

    • Dobrenko Oleg 29.07.2013 в 08:21

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