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

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

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

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

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

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

  1. timur.bagautdinov 16.10.2013 в 11:12

    I.
    С 1С уже работаю некоторое время. И для меня, прежде всего, запоминались интересные приемы и методы разработки:
    – разработка универсального алгоритма расчета заработной платы
    – работа с часовыми поясами
    – работа с уникальными идентификаторами
    – как обеспечить устойчивость проведения документов
    – заполнение расчетных документов по кадровым данным
    – основы работы с управляемыми формами
    и т.д.

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

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

    Что касается формата работы. Он имеет как ряд плюсов, так ряд минусов.

    Положительные моменты:
    – работать в своем темпе и в удобное время
    – просмотреть какой-то материал несколько раз
    – на каждый блок предлагается выполнить домашнее задание и закрепить навыки. Самое главное, домашнее задание не просит повторить материал на уроке, а проявить некоторую смекалку и, порой, даже изучить какой-то дополнительный механизм. Яркий пример, “неразрывный пробел” в числах.

    Багаутдинов Тимур Аскарович (пока нигде не работаю, перезжаю на постоянное место жительства в г. Санкт-Петербург).

    II.
    1. Исправялем тип РН “Выбития животных” на Обороты. Затем необходимо перепровести документ “Выбитие

    животных”

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

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

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

    события “при открытии” используем событие “при создании на сервере”.

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

    5. В модуле объекста “Выбытие животных” в процедуре “Обработка заполнения” убираем принудительное

    заполнение даты в 01.01.1980

    6. В обработке проведения документа “Выбытие животных” исправим параметр запроса “Момент времени”. Не

    забываем учитывать остатки за секунду, в который проводится документ

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

    7. В РН “Размещение животных” для измерений устанавливаем запрет незаполненных значений.

    8. В форме документа “Поступление” исправляем событие “При создании на сервере”. В нашем случае при

    открытии формы всегда подставляется источник по умолчанию. Исправляем, чтобы такой вариант работал только

    для новых документов

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

    9. В документе “Поступление” для реквизита Источник высатвляем проверку заполнения значения.

    10. Для стандартного реквизита “Дата” документа “Поступления” убираем значение по умолчанию 01.01.1980

    11. В документе “Перемещение” в обработчике проведения исправляем запрос. Получаем данные только по

    отрицательным остаткам

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

    12. В документе “Инвентаризация” для колонки “Количество” устанавливаем флажок “Только просмотр”. Данные

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

    13. Отключаем проверку заполнения для реквизита “Количество факт” в документе “Инвентаризация”. У нас по

    фактам инвентаризации может оказаться, что животных нет в наличии.

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

    на конец дня документа

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

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

    III.
    Переезжаю жить в Санкт-Петербург и нет возможности выполнить третий шаг в указанные сроки.

    • Dobrenko Oleg 17.10.2013 в 09:27

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

  2. Шаг 3.
    Вот ссылка на решение одного вопроса, заданного на форуме Mista
    http://www.forum.mista.ru/topic.php?id=684357

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

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

        ДеревоЗн = Новый ДеревоЗначений;
        ДеревоЗн.Колонки.Добавить("Номенклатура");
        ДеревоЗн.Колонки.Добавить("Количество");
        ДеревоЗн.Колонки.Добавить("Состояние");

    4) Обходится результат запроса и для каждой строки номенклатуры выводится код:

        Строка = ДеревоЗн.Строки.Добавить();
        Строка.Номенклатура = СтрокаСчета.Номенклатура;
        Строка.Количество  = СтрокаСчета.Количество;
        Строка.Состояние = "Заказано";

    5) Затем по детальным записям в зависимости от значения:

        СтрокаСостояния = Строка.Строки.Добавить();
        СтрокаСостояния.Количество  = [Сколько из запроса на складе]
        СтрокаСостояния.Состояние = "На складе";

    или

            СтрокаСостояния = Строка.Строки.Добавить();
        СтрокаСостояния.Количество  = [Сколько из запроса отгружено]
        СтрокаСостояния.Состояние = "Отгружено";

    6) По окончанию цикла пишется

           ЗначениеВДанныеФормы(ДеревоЗн,СостояниеСчета);

    В результате на закладке Состояние счета будет выведено соответствующее дерево.

    • Dobrenko Oleg 15.10.2013 в 08:15

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

  3. Шаг 1
    1) Работаю с 1С давно, поэтому примерно 80% из услышанного в базовом кусе было известно, но и это было полезно, т.к. знания систематизировались, дополнялись отдельными, иногда значительными, штрихами. 20% курса оказалось для меня новым. Очень полезны были разделы по регистрам бухгалтерии, весь раздел по ЗП и кадрам.
    2) Избавился от заблуждения, что в списке баз нельзя указывать одну и ту же базу. Оказывается можно, активно использую это свойство для запуска базы в режиме обычного приложения (когда надо запустить консоль).
    3) Уверенно работаю с управляемыми формами, особенно меня “радуют” новые возможности по отбору в списках.
    4) Формат обучения очень удобен. Во-первых, теоретическую часть можно изучать в любое удобное время, при необходимости – повторить. Во-вторых, ДЗ составлены толково: почти в каждом попадались “заковыристые” моменты, которые заставляли просматривать повторно курс. В-третьих, и об этом я уже много раз писал, очень нравится метод подачи материала, особенно “нечаянные” ошибки, исправление которых происходит тут же. При этом показываются способы поиска ошибок и это необычайно полезно.

    Боков Владимир Геннадиевич, старший программист, г.Москва

    Шаг 2.
    1) Документ «Выбытие животных». Установка реквизита «Направление» осуществлялась на клиенте, что вызывало ошибку при работе в тонком клиенте. Перенес в процедуру «ПриСозданииНаСервере».

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

    2) В стандартном реквизите документа «Дата» установлено значение 01.01.1980, а не должно ничего устанавливаться.
    3) В документе«Выбытие животных»: при проверке заполнения для простого создания документа устанавливается дата 01.01.1980.Нужно просто убрать ветку Иначе…

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

            Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);

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

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

    4) Вид регистра накопления «ВыбытияЖивотных» судя по названию, да и по коду процедур является Обороты, а установлено Остатки.
    5) В документе «Поступления» при установке Источника поступления надо проверять на пустую ссылку.

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

    6) Пользователю не предоставлена возможность контролировать движения документов. Надо в командном интерфейсе форм указать видимость регистров накопления.
    7) При контроле выбытия животного (документ «Выбытие животных») при проведении при установке параметра запроса «МоментВремени» надо указать границу:

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

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

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

    9) В документе «Перемещение животных» при проведении и контроле на остаток в клетке «Откуда» в запросе не установлен контроль на отрицательное значение. Существующий документ перепроводится только из-за того, что в клетке маленькой совсем не осталось животных. Если попытаться перевести одно из 2-х животных – запрос выдаст нехватку=-1 (т.е. в клетке осталось одно животное) и документ не удастся провести. Надо добавить условие на Остаток<0.
    10) После установки правильного вида РН «ВыбытияЖивотных» проявилась еще одна ошибка в отчете: перестал выводиться отчет «Анализ выбытия животных». Не указана была периодичность в параметрах виртуальной таблицы.

    Шаг 3
    Фото семинара вышлю завтра-послезавтра.

    • Dobrenko Oleg 15.10.2013 в 08:14

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

  4. Hamster-Killer 14.10.2013 в 19:44

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

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

    Документы “Поступление”,”Выбытие животных” – дата подставляется 01.01.1980, удобнее было бы текущей датой, для этого в документе “Выбытие животных” в модуле объекта в процедуре “ОбработкаЗаполнения”:

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

    В документе “Поступление” очистила: закладка “Данные” – “Стандартные реквизиты” – “Дата” – “Значение заполнения”
    В документе “Поступление” поставила проверку заполнения реквизита “Источник поступления”, в документе “Выбытие животных” – реквизита “Направление” т.к. животные должны поступать и выбывать в конкретные места.
    Документ “Перемещение животных”. Изменила “Обработку проведения”:

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

    Документ “Выбытие”
    Изменила процедуру “Обработка проведения”

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

    Документ “Инвентаризация”
    Остатки брать на дату документа, для более удобного просмотра списка можно упорядочить по животным, так же поставила заполнение колонки “Количество факт” и убрала “Количество факт” из проверяемых реквизитов, чтобы пользователь мог ввести 0.

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

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

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

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

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

    Отчет “Размещение животных” изменила запрос, чтобы остатки брать на дату:

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

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

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

    3. Помощь миру. Помимо работы в 1С-франчайзи учусь в ВГУ(Воронежский Государственный Университет) на факультете ПММ (Прикладная математика, информатика и механика) в магистратуре. Есть предмет «1С –предприятие» . Сделала доклад на тему «Регистры сведения и накопления». Фото выслала на указанную почту.

    • Dobrenko Oleg 15.10.2013 в 08:11

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

  5. 1 часть
    Машковцев Александр Анатольевич, программист 1С. г. Москва.
    Базовый курс по программированию будет интересен для начинающих программистов и для тех кто переходит с 1С 7.7. Сам вариант обучения в виде видеоуроков имеет свои плюсы и минусы. Самый главный минус это необходимость заставлять себя заниматься. И еще минус это сложность поиска необходимого материала. Но как говориться: “Лучше один раз увидеть чем сто раз услышать”. Материал видеоуроков лучше запоминается и более понятен чем “обрезки” изображений в книгах.
    Материала дали много, но закончив курс понимаешь что нужно еще. Я буду ждать продвинутый курс по 1С 8.3.
    Также надо отметить что курс подготовлен 3 года назад и имеет множество ошибок. Часть ошибок закрыли дополнительными уроками но все равно не все. И достаточно тяжело смотреть курс когда автор делает целую кучу опечаток и по 3-4 раза переписывает одно слово. Оставим эти недостатки на совести авторов.
    Для меня самым сложным был последний раздел: “Расчет”.
    Очень интересная тема это работа с интерфейсом. Интерфейс создается для пользователей и очень важно знать все тонкости настройки объектов. Предлагаю добавлять эту тему в комплект при продаже 1С))).

    2 часть
    Регистры накопления
    1 Выбытия животных, Вид регистра = Обороты. Нужно снять с проведения документы выбытия а потом провести.
    Документы.Поступление
    2 ИсточникПоступления, проверка заполнения выбрать “Выдавать ошибку”. Животные не должны появляться из неоткуда.
    3 Животные.Количество поставить галочку “Неотрицательное”. В процедуре при записи сделать проверку Количество = 0.
    4 ФормаДокумента.Процедура ПриСозданииНаСервере заполняем источник поступления только у нового документа.

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

    Документы.ВыбытиеЖивотных
    5 Направление, проверка заполнения выбрать “Выдавать ошибку”
    6 Животные.Количество поставить галочку “Неотрицательное”. В процедуре при записи сделать проверку Количество = 0.
    7 ФормаДокумента.Процедура ПриОткрытии, получим константу на сервере.

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

    8 МодульОбъекта.Процедура ОбработкаЗаполнения уберем строчки “Иначе”.

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

    9 МодульОбъекта.Процедура ОбработкаПроведения в запросе, во вложенном запросе, нужно добавить условие Документ = Ссылка.
    ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка
    10 МодульОбъекта.Процедура ОбработкаПроведения в запросе нужно установить параметр “МоментВремени” ВидГраницы Включая.
    Запрос.УстановитьПараметр(“МоментВремени”, Новый Граница(МоментВремени(), ВидГраницы.Включая));
    11 МодульОбъекта.Процедура ОбработкаПроведения сообщение об ошибке НомерСтроки-1.
    Сообщение.Поле = “Животные[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Животное”;
    Документы.ПеремещениеЖивотных
    12 Количество поставить галочку “Неотрицательное”.
    13 МодульОбъекта Добавить процедуру при записи и сделать проверку Количество=0 и КлеткаОткуда=КлеткаКуда.
    Документы.Инвентаризация
    14 Животные.Количество поставить галочку “Неотрицательное”.
    15 Животные.КоличествоФакт поставить галочку “Неотрицательное”, и убрать проверку заполнения, количество может быть = 0.
    16 ФормаДокумента.Процедура Заполнить ставим признак модифицированности формы.
    Модифицированность = Истина;

    3 часть
    Обучение сотрудников начну с понедельника, и выложу фото.

    • Dobrenko Oleg 12.10.2013 в 11:14

      Александр, благодарим за отзыв!
      Учтем замечания при разработке следующих продуктов :)
      Ждем от Вас фото-отчет.

  6. Ольга 11.10.2013 в 15:32

    1. Что нового – Рассмотренный блок по расчету зарплаты был полностью новым, но достаточно интересным.

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

    на 8.0 и 8.1 сложно перестроиться.
    2. От каких заблуждений избавились – От заблуждения что многое знаю – Учиться, учиться и еще раз учится –

    многое еще не знаю и надо подтягивать знания.
    3. На практике с управляемым приложение 8.2 еще никаких проектов не было – в планах перевод нашей

    учетной системы, написанной еще под 8.0 на управляемые формы.
    4. Не могу сказать что что то было неожиданным.
    5. Формат обучения – Могу сказать что обучение гораздо удобнее очного, урок можно слушать столько раз

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

    Рагозина Ольга г. Тюмень
    //**************************************************************
    Поступление, реквизит ИсточникПоступления нужно проставить проверку заполнения – Выдавать ошибку.
    //**************************************************************
    Поступление- общие рекизиты Дата – стоит значение заполнения 01.01.1980 – убрала.
    //**************************************************************
    Поступление – модуль формы, ПриСозданииНаСервере – текст подстановки константы перенести в мобуль

    объекта при условии ДанныеЗаполнения = Неопределено;

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

    //**************************************************************
    Поступление – форма – добавила просмотр движений документа.
    //**************************************************************
    Перемещение животных – добавила форму, установила признак отображения движений документа.
    //**************************************************************
    Перемещение животных – Корректируем запрос в обработке проведения

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

    //**************************************************************
    Инвентаризация – для простоты и удобства заполнения добавила автоматическое проставление реквизита ТЧ

    КоличествоФакт, а также заполнение по дате документа.

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

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

    //**************************************************************
    Инвентаризация – не нужно контролировать заполнение реквизита ТЧ КоличествоФакт – убрала.
    //**************************************************************
    В обработке заполнения Поступления на основании Инвентаризации поставить ИсточникПоступления из

    константы
    //**************************************************************
    Выбытие животных – реквизит Направление – установить проверку заполнения – Выдавать ошибку.
    //**************************************************************
    Выбытие животных – процедура ОбработкаЗаполнения – в данные заполнения зачем то проставляется дата

    01.01.1980 – убрала.
    //**************************************************************
    Выбытие животных – в форме документа проставила просматривать движения документов.
    //**************************************************************
    Выбытие животных – форма – переделала процедуру при открытии

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
           ПриОткрытииНаСервере();
    КонецПроцедуры

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

    //**************************************************************
    Выбытие животных – переделала запрос и установку параметра.

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

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

    &Ссылка)) КАК РазмещениеЖивотныхОстатки
        |       ПО ВыбытиеЖивотныхЖивотные.Животное = РазмещениеЖивотныхОстатки.Животное
        |           И ВыбытиеЖивотныхЖивотные.Клетка =

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

    //**************************************************************
    Регистры накопления
    Выбытие животных – должен быт оборотным регистром – исправила
    //**************************************************************
    Проставить Запрет незаполненных для реквизитов регистров накопления.
    //**************************************************************
    3 шаг.
    Отправила фото на mg@Spec8.ru.
    Помощь по материалу – работа с управляемыми формами.

    • Dobrenko Oleg 12.10.2013 в 10:49

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

  7. Константин 11.10.2013 в 14:12

    Румянцев Константин Александрович, г. Ташкент, Узбекистан

    Шаг 1

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

    Шаг 2

    1. Документ Поступление. Процедура ПриСозданииНаСервере

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

    Для существующих документов переопределяет ИсточникПоступления в форме.

    Нужно перенести в процедуру модуля объекта в процедуру ОбработкаЗаполнения:

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

    2. Стандартный реквизит Дата. Значение заполнения 01.01.1980 – если не ошибка, то излишество, источник ошибок, лучше очистить.

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

    4. Документ ВыбытиеЖивотных.
    Стандартный реквизит Дата. Установлен флаг “Заполнять из данных заполнения”. При вводе
    нового все правильно заполняется из структуры ДанныеЗаполнения, но нужно ли опять
    устанавливать реквизит Дата в значение 01.01.1980?

    5. Документ ВыбытиеЖивотных Процедура ПриОткрытии

    Ошибка при открытии формы в тонком клиенте.
    Метод Получить для менеджера Константы недоступен в тонком клиенте.
    Для решения проблемы или нужно вынести код получения значения константы на Сервер или
    заполнять реквизит Направление в процедуре ОбработкаЗаполнения модуля документа.

    Документ ВыбытиеЖивотных Процедура ОбработкаПроведения

    6. В запросе не хватает условия отбора текущего документа при обращении к данным документа во внутреннем соединении.

    7. Там же параметр запроса МоментВремени должен быть не МоментВремени(), а Граница вида

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

    8. В СообщенииПользователю описание свойства Поле использует НомерСтроки вместо (НомерСтроки-1).
    А также лучше позиционировать указатель не на Животное, а на Количество.

    Документ ПеремещениеЖивотных

    ОбработкаПроведения.
    9. В запросе нет условия отбора отрицательных остатков.

    Регистр ВыбытияЖивотных

    10. Вид регистра: Остатки – ошибка. Должен быть Обороты.

    Инвентаризация

    11. Реквизит КоличествоФакт, свойство “Проверка заполнения” установлено не верно: “Выдавать ошибку”.
    При такой настройке нет возможности указать нулевое количество животных.
    Правильно: “Не проверять”.

    При заполнении документа по кнопке в запрос попадают только данные актуальных итогов, т.к. не указан параметр Период ВТ регистра.
    Нет возможности заполнить документ задним числом, что делает его применение ораниченным.

    • Dobrenko Oleg 12.10.2013 в 10:23

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

      • Константин 14.10.2013 в 19:43

        Шаг №3.
        Проведен мини-семинар на тему “Система компоновки данных на платформе 8.2” для своих коллег. Рассмотрены:
        Схема разработки и использования отчетов с помощью СКД,
        Разработка отчета без программирования,
        Настройка варианта отчета в пользовательском режиме.

        1

        2

        • Dobrenko Oleg 15.10.2013 в 08:07

          Константин, шаг №3 принят. Поздравляем, вы в списке финалистов!

  8. integragirl 10.10.2013 в 10:00

    Белевич Вера Алексеевна. Программист 1С. Город Тюмень.

    Шаг 1.
    Нельзя так сразу описать сколько нового я узнала, не первый год работаю в этой сфере, но только сейчас начали переходить на управляемые формы. Ваши курсы неоценимыми для меня, мне как раз не хватало понимания того как разграничивать клиент – сервер, как создавать управляемые формы и как работать с ними, начиная с самых основ как бы заново учишься. Особенно пригодился мини курс по бух учету и по зарплате, хоть и сложновато там все, хотелось бы поподробнее, хотя и так все буквально “разжевано”.
    Практические задачи были очень инетересными, было даже интересно, как будут решать их мои коллеги. Также пригодились правильные решения, можно критически отнестись к своему коду.
    Формат обучения по видеоурокам оказался неожиданно удобен, флэшка всегда при тебе, в любой свободный момент как говорится сел и посмотрел.
    Также небольшое замечание, хотелось бы, чтобы запросы в курсах изначально составлялись оптимально, т.е. через временный таблицы,а не же через вложенные запросы.
    Разочаровало постоянное закрывание видеоплеера.
    Спасибо Вам за столь замечательные курсы.

    Шаг 2.
    1. документ “Выбытие животных”, форма документа, получение константы на клиенте. Надо создать отдельную процедуру для получения константы на сервере
    2. документ “Выбытие животных”, обработка проведения, проверка на достаточность животного. надо исправить запрос, добавить во вложенный запрос условие по ссылке
    3. документ “Выбытие животных”, обработка проведения, проверка на достаточность животного, при установке параметров надо устанавливать не момент времени, а границу включая.
    4. в данных документа 003 “выбытие животных” установлена некорректная дата, так как на эту же дату происходило перемещение животного в другую клетку
    5. документ “Поступление животных”, форма документа, при создании на сервере не проверяется новый это документ или нет. Надо добавить проверку на пустую ссылку.
    6. Документ “перемещение животных”, модуль документ, обработка проведения, неправильно составлен запрос, нужно определить реальный остаток и не умножать на -1, плюс добавить в условие, чтобы количество остаток был меньше нуля.
    7. документ “инвентаризация”, форма документ, кнопка заполнить, в запросе не указывается дата на которую нужно получить остатки, соответственно в параметрах виртуальной таблицы нужно обязательно ее указать как границу и момент времени.
    8. документ “инвентаризация” ошибка при настройке проверки заполнения табличной части, колонка количество факт. при вводе количества факт равным нулю система сообщает об ошибке, но хотя такое возможно. нужно настроить соответствующую проверку в конфигураторе.
    9. документ “выбытие животных”, обработка проведения, при обходе цикла указывает номер строки. причем должен указываться номер по индексу, т.е. номер строки – 1
    10. документ “Поступление животных”, форма документа, при создании на сервере программа присваивает источнику поступления не проверяя на новый документ, таким образом уже проведенные документы искажаются. надо добавить проверку на новый.

    Шаг 3.
    Фото проведения семинара выслала на указанную почту.
    1

    • Dobrenko Oleg 10.10.2013 в 14:54

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