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

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

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

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

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

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

  1. Шаг 1.
    Кошелев Андрей г.Липецк
    Никогда профессионально не был связан с 1С или чем-то подобным (программирование и т.д.). Сам я работаю торговым, но мечтаю овладеть новой профессией. Без ваших курсов 100% это так бы и осталось мечтой, более того, даже без Быстрого старта вряд ли бы я отважился на Базовый. С точки зрения новичка мне все понравилось: подача материала, ДЗ, очень много пользы дает разбор ответов. Разочаровало описание уроков. Я сравниваю с Быстрым стартом: там посмотрел несколько строчек кода – и мгновенно все в памяти освежилось. Если бы вы переработали описания для Базового в таком же ключе (чтобы не было см. видео), было бы просто замечательно.
    Планирую сдать тесты на Профессионала. Продвинутый курс уже приобрел, но это для будущего. Пока сил и времени хватило только на сквозной пример, теперь буду разбирать бонусы и т.д.

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

    Шаг 3.
    К сожалению, помочь в конфигурировании ничем не могу, так как я сам начинающий – начальнее не бывает. Может быть, у вас как раз для подобных случаев есть какой-нибудь облегченный вариант рекомендательного письма?

    С огромным уважением ко всей вашей команде, Andrej.

    • Dobrenko Oleg 06.11.2012 в 13:17

      >Может быть, у вас как раз для подобных случаев есть какой-нибудь облегченный вариант рекомендательного письма?
      К сожалению такого варианта письма нет. Для того, чтобы получить рекомендательное письмо нужно отчитаться по всем 3м этапам. Причем необходимо решать самое актуальное финальное задание (каждый поток базового курса публикуется новое финальное задание) в отведенный для этого промежуток времени (см. план график).

  2. Здравствуйте.
    Шаг 3.
    Публикация: http://infostart.ru/public/155133/

    • Dobrenko Oleg 09.10.2012 в 13:57

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

  3. Алексей 03.10.2012 в 03:56

    ШАГ 1. Ильин Алексей Юрьевич г.Москва Руководитель отдела Информационных технологий. В профессии с 1987 года времена БК и ЕСок. Армия инженер по АСБУ. С 1С познакомился в 2000 году легендарная 7.7 В 2006 году отучился на курсах 1С на v.8 два заказных решения с нуля под ключ. Пройти Базовый курс решил по нескольким причинам.
    1. Освежить старые и почерпнуть новые знания при очень ограниченном временном ресурсе.
    2. Работая с командой сильных специалистов нужно и самому соответствовать.
    3. Посмотреть на свои знания, которые как сам считаешь, что знаешь достаточно не плохо всегда полезно со стороны тех кто «живет этими знаниями».
    Очень рад, что я не ошибся выбором. Формат курса, оказался очень удобен. Есть возможность самому определять продолжительность занятий в день. Очень много нового и полезного. Столько нюансов, все разложено по полочкам. Замечательная подача материала. Кроме того очень понравилось, что придумали физическую поставку. Это кладовая знаний, которая всегда под рукой. Теперь по моим следам пройдут курсы и программисты моего отдела. Решили приобрести Ваши курсы для нашего предприятия. Я благодарю весь коллектив Spec8 за качественный и современный продукт!
    ШАГ 2. Тестирование прикладного решения:
    1. Документ «Закупка»
    – Стандартный реквизит Дата значение заполнения 01/01/1980 00:00:00
    Очищаем значение;
    2. Модуль формы при синтаксическом контроле ошибка:
    {Документ.Закупка.Форма.ФормаДокумента.Форма(4,2)}: Переменная не определена (РаботаСДокументамиКлиент)
    в свойствах общего модуля РаботаСДокументамиКлиент стоит галка Сервер, снимаем ее, устанавливаем Клиент

    3. Документ «Продажи» при синтаксическом контроле ошибка:
    {Документ.Продажа.Форма.ФормаДокумента.Форма(21,23)}: Переменная не определена (Константы)
    Объект.Покупатель = <>Константы.ОсновнойПокупатель.Получить(); (Проверка: Тонкий клиент)
    Из-за попытки получить константу из клиентской процедуры. Лечим переносом заполнения в модуль объекта Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    Покупатель = Константы.ОсновнойПокупатель.Получить();
    КонецПроцедуры
    4. Регистр накопления Продажи целесообразно использовать с видом Обороты, а не Остатки, т.к. движения этого регистра делает только один документ «Продажи» и только приходные. С таким видом регистр никогда не закроется в ноль.
    Документ Продажи в обработке проведения комментируем строку
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

    5. Общий модуль «РаботаСДокументамиСервер». Компилируется на сервере, поэтому необходимо дополнительно поставить флажок «Вызов сервера».
    Идеологические ошибки в процедуре «ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента»: ошибка в реализации контроля отрицательных остатков в использовании параметра «Момент»
    Запрос.УстановитьПараметр(«Момент», ДокументОбъект.МоментВремени());
    лечим заменой на:
    Запрос.УстановитьПараметр(«Момент», Новый Граница (ДокументОбъект.МоментВремени(), ВидГраницы.Включая));
    Ошибка позиционирования не на ту строку при выводе сообщения.
    Сообщение.Поле = «Номенклатура[“+ВыборкаДетальныеЗаписи.НомерСтроки+”].Количество»;
    Лечим следующим образом:
    Сообщение.Поле = «Номенклатура[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1) +”].Количество»;
    6. Регистр сведений «Состав блюд». Показатель «Количество» тип «Число» является измерением, а должен быть отнесён к ресурсам регистра. Переносим данный показатель в Ресурсы.
    7. В отчете ПродажиЗакупки для удобства работы пользователя добавляем параметр параметр Период, тип: СтандартныйПериод, в колонке «Включать в доступные поля» ставим отметку. Для параметра НачалоПериода в колонке Выражение вводим параметр: &Период.ДатаНачала, а для параметра КонецПериода – параметр &Период.ДатаОкончания. Для параметров НачалоПериода и КонецПериода ставим отметку в колонке «Ограничение доступности». На закладке Настройки параметра Период включаем в пользовательские настройки, а параметры НачалоПериода и КонецПериода, наоборот – выключаем из пользовательских настроек.
    8. В отчете ОстаткиТМЦ в параметр добавляем 1 сек, для учета последней секунды периода. Закладка Параметры в колонке Выражение пишем: ДобавитьКДате(КонецПериода(&Период, “День”), “Секунда”, 1)
    9. Реквизит «Количество» табличных частей документов «Закупка», «КомплектацияБлюд», «Продажа», а также ресурс Количество регистр сведений «СоставБлюд» тип Число 10(2) в типовых решениях используется 15(3), меняем.

    ШАГ 3. Если честно писать статью совершенно нет времени. Начинающих в конфигурировании платформы в моем окружении нет. В процессе прохождения курса в отделе были дискуссии и порой очень жаркие(что и породило желание у моих сотрудников пройти Ваши курсы) Считаю, что приобретение Ваших курсов можно засчитать как продвижение 1С и конечно же Ваших поистине бесценных трудов.
    Фото семинара:
    1

    • Dobrenko Oleg 03.10.2012 в 10:36

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

  4. Добрый день!

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

    Отзывы по курсу:

    1. Новым для меня оказалось много тем – прежде всего, работа с регистрами расчета, новые методика контроля остатков, разделение на клиент-сервер в тонком клиенте. Думаю, что еще несколько месяцев знания в голове будут укладываться ))
    2. Удалось избавиться от заблуждений, что базовый курс – это для новичков )) Объем материала и тщательность его изложения приятно удивили, хотя я уже давно познакомился с проектами Фарита по УПП ))
    3. На практике удается использовать полученные знания: есть планы оптимизировать ряд ранее написанных алгоритмов для ускорения их работы.
    4. Формат обучения очень удобен – раньше практиковали очные курсы в УЦ, но потом стало понятно, что пользы от них мало – знания “улетучивались”, несмотря на методички, были претензии к качеству изложения материала. В данном формате материалы остаются на руках, и главное, доступно взаимодействие по сложным темам в рамках Мастер-группы без отрыва от работы.

    Ошибки в базе:

    1. Необходимо в обшем модуле РаботаСДокументамиСервер в параметре запроса вместо МоментВремени использовать Границу с видом “Включая”.

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

    2. Там же в общем модуле в строке Сообщение.Поле необходимо использовать “НомерСтроки – 1” (так как нужен индекс, который начинается с нуля).

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

    3. У регистра “Продажи” неправильный тип – “Остатки”, а нужно “Обороты”
    4. Неправильная настройка общего модуля РаботаСДокументамиКлиент, выставлено “Сервер”, а нужно “Клиент”, из-за этого возникают ошибки в тонком клиенте у документов “Продажа” и “Закупка”.
    5. В процедуре ПриОткрытии идет попытка получить константу, недоступную в тонком клиенте – необходимо вынести в серверную процедуру.
    Пример кода:

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
       
        ЗаполнитьПоУмолчанию();
           
    КонецПроцедуры

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

    6. В отчете “Остатки” на закладке “Параметры” задан параметр “Период”, но не включен в текст запроса – необходимо его либо включить в параметры виртуальной таблицы, либо убрать с закладки “Параметры”.
    7. В отчете ПродажиЗакупки на закладке “Параметры” заданы параметры “НачалоПериода” и “КонецПериода”, но не включены в текст запроса – необходимо либо включить их в параметры виртуальной таблицы, либо убрать с закладки параметры.
    8. В процедуре ОбработкаПроведения документа “КомплектацияБлюд” повторно вызывается Движения.ОстаткиТМЦ.Записывать = Истина;
    9. Некорректный код записи в РН “Продажи”. Его следует (с учетом пункта 3) переписать:

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

    10. В общем модуле РаботаСДокументамиСервер у процедуры ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента не прописана директива компиляции &НаСервере

    Статья по теме курса:

    Разместил статью на Infostart. Правда, тема в курсе не поднималась – “Использование подписок на событие для корректировки движений документов «извне»” (на особую новизну не претендую =)). Постарался связать ее с темой использования коллекции Движения для записи документов и работы с набором записей. Эта тема была взята с связи с решением похожей задаче на работе.
    Ссылка на статью: http://infostart.ru/public/154317/

    • Dobrenko Oleg 03.10.2012 в 10:33

      Здравствуйте, Дмитрий.
      Благодарим за отзыв по курсу! Шаги 2 и 3 приняты.
      >Удалось избавиться от заблуждений, что базовый курс – это для новичков ))
      Поздравляем с успешным окончанием базового курса и ждем на продвинутом!

  5. Шаг 1.

    Меня зовут Сафонов Максим, г.Ярославль – программированием я занимаюсь совсем недавно – около года, перешел с рельс продаж в новую для себя стезю. По началу был шок – слишком много информации, слишком много вопросов. Некоторое время я безуспешно пытался найти хоть какой-то системный подход к изучению языка – смотрел найденные мной “бесплатные” курсы, читал книги, даже прошел курс в УЦ. Результат был практически нулевой – те знания, которыми я располагал быстро терялись – без правильного практикума, без закрытия пробелов не удавалось собрать картинку даже по простым понятиям – вроде различий между видами регистров накопления. И даже если удавалось добиться какого-то успеха в одном направлении, новые задачи быстро показывали, что я практически ничего не знаю и выполнение их снова превращалось в неосознанные “танцы с бубном”.

    И тут произошло знаковое событие – на инфостарте я наткнулся на рекламу курса Spec8 – “быстрый старт”. Признаюсь честно – по-началу все казалось заманухой – уж слишком настойчиво и доброжелательно с ролика презентовал данные продукты Евгений, уж слишком много было плюсов в рекламных буклетах. Но что-то подсказывало – бери :) И теперь у меня в наличии уже 5 курсов производства Spec8 и не один из них не разочаровал!
    А самое главное – мои успехи “заразили” коллег, и они с удовольствием стали вашими клиентами! Я благодарю весь коллектив Spec8 за качественный и современный продукт!

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

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

    5. Обработка проведения документа “Продажа” может быть слегка оптимизирована. Можно удалить возможные дубли строк и формирование движений производить в одном цикле:

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

    6. Документ “Закупка” – установлена дата по-умолчанию 01.01.1980 – видимо дата рождения хозяина заведения. Убеждаем хозяина, что хоз.операция должна правильно отражаться во времени и убираем значение по-умолчанию у стандартного реквизита “Дата”;
    7. При комплектации блюд при проведении не контролируются остатки. Ошибка найдена в тексте запроса – остатки контролируются на момент времени документа, но не включая границу времени. Исправляем параметр запроса:

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

    8. В документе “Комплектация блюд” при изменении количества блюд не перезаполняется табличная часть. Так же неправильно – можно провести документ с количеством несоответствующим истине. Возможно это задумка разработчика и контролировать соотвествие комплектации блюд количества компонент не нужно. Но предлагать перезаполнить нужно – реализовываем:

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

    9. При заполнении табличной части документ не видит изменений (не модифицируется) – при закрытии не будет выдано предупреждение об изменении данных:

        Модифицированность = Истина;

    10. Вид регистра “Продажи” следует поменять на оборотный – расхода данный регистр не предполагает. Соответственно исправить обработку проведения документа “Продажи”;

    11. При контроле остатков документов, если выявлена ошибка подсказка не правильно позиционируется. Исправляем ошибку:

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

    12. Для чего-то еще раз наложили условие “Различные” на встроенный запрос
    (ВЫБРАТЬ РАЗЛИЧНЫЕ – все будет прекрасно работать и без него

    13. Документы “Комплектация блюд”, “Продажа” проводятся оперативно, что само по себе может быть продиктовано условиями заказчика, но без последовательности приведет к ошибкам в отчете. Рекомендация – создать последовательность или контролировать изменение остатков блюд на момент времени;

    14. В регистре “Состав блюд” считаю правильным использовать “Количество” в качестве ресурса. Только так мы сохраним уникальность состава блюд в количественных показателях.
    Чтобы не потерять информацию сначала добавим скопируем измерение “Количество” в ресурс. Зайдем в пользовательском режиме и перенесем данные. Затем удалим соотвествующее измерение;

    15. Во всех отчетах периодические параметры указываются в секундах – возможно это продиктовано требованием заказчика. Если это не так – нужно поменять состав даты и привести конечные значения периода к концу дня с добавлением секунды;

    16. При изменении суммы правильно было бы пересчитывать один из показателей – количество или цену. Вариант пересчета можно предложить определять пользователю самостоятельно – например в константе;

    Шаг 3.
    Первая публикация на инфостарте – http://infostart.ru/public/153478/
    и ее бы не было, если бы не новый взгляд на построения запросов, формирование выгрузок и загрузок и т.д. Причем форма, прилагаемая в виде бонуса была сформирована в рекордные для меня сроки – и только благодаря этому курсу.
    Я был сильно удивлен, что действительно помог людям – выгрузку на момент публикации данного сообщения скачало 74 человека! Огромное спасибо всей команде Spec8 за то, что вы делаете!

    • Dobrenko Oleg 02.10.2012 в 09:03

      Здравствуйте, Максим. Благодарим за отзыв по курсу!
      >уж слишком настойчиво и доброжелательно с ролика презентовал данные продукты Евгений
      Да, Евгений так умеет :)
      Шаг №2 принят.
      >выгрузку на момент публикации данного сообщения скачало 74 человека!
      Возможно Вы правильно выбрали тему – “Выгрузка алкогольной декларации” :)))
      Шаг №3 принят.
      Поздравляем, вы в списке финалистов 12го потока!

  6. Добрый вечер, Олег! Для выполнения шага 3 я провела на работе мини-семинар для бухгалтеров по новым возможностям платформы 8.2, агитируя их так сказать к более активному их использованию. Фото отправила на ящик mg@spec8.ru

    • Dobrenko Oleg 02.10.2012 в 08:56

      Здравствуйте, Светлана, фото опубликованы.

  7. SergeMalikov 01.10.2012 в 16:30

    Правильная ссылка на мою публикацию:
    http://infostart.ru/public/153498/

  8. Кураторский Пакет:
    Шушаков Константин, г.Белгород. Шаг№1,2 в ящике МГ, Шаг№3 http://infostart.ru/public/153851/

    • Dobrenko Oleg 01.10.2012 в 16:21

      Константин, поздравляем Вас с успешным окончанием базового курса! Успехов на нашем не легком поприще :)

  9. Шабунина Евгения 01.10.2012 в 15:33

    Здравствуйте.
    Шаг 3.
    Публикация: http://infostart.ru/public/154236/ – не судите строго:) это моя первая в жизни статья.
    Помощь миру: http://www.forum.mista.ru/topic.php?id=631445 – зарегистрировалась под ником deff.

    • Dobrenko Oleg 02.10.2012 в 08:47

      Здравствуйте.
      Шаг №3 принят.
      Евгения, поздравляем вас с успешным окончанием базового курса по программированию!

  10. Здравствуйте Олег. Непонял следующее:
    “По практическому заданию: в одном из документов существует «диверсия», связанная со стандартным реквизитом «Дата». Найдите её и попытайтесь исправить.”
    А разве пункт 6 не про это?
    В свойствах стандартного реквизита “Дата” документа документа “Закупка”
    есть свойство ” Значение заполнения” там стоит 01.01.1980. 0:00:00, вот это значение и надо очистить. Я не прав?

    • Dobrenko Oleg 01.10.2012 в 10:48

      Здравствуйте, Генадий.
      Прошу прощения, как-то я этот момент упустил :)
      Поздравляем, вы в списке финалистов базового курса!

  11. Юрий Л. 30.09.2012 в 13:35

    Отчёт по финальному заданию базового курса.
    1.Обратная связь:
    Лопухин Юрий Григорьевич. Ленинградская область, г. Тихвин.
    1.Прохождение базового курса является для меня вторым этапом обучения программированию в 1С. До этого изучал «Быстрый старт», поэтому часть материала «Базового курса» была для меня повторением пройденного. Из базового курса многое узнал о расчёте заработной платы и расширил знания о бухгалтерском учёте.
    2.Полученные знания позволили мне начать работу на небольшом реальном проекте. Пока мои задачи связаны с внесением небольших доработок в конфигурацию клиента. Однако я планирую продолжить обучение (пройти «Продвинутый курс») и со временем решать более сложные задачи.
    3.Что касается формата курса, то для меня он оказался очень удобен. Есть возможность самому определять продолжительность занятий в день. Кроме того очень понравилось, что придумали физическую поставку. Во-первых, если идёшь вперёд, не надо ждать, когда появится очередной блок, а во-вторых, благодаря альбому слайдов, можно сделать конспект курса, что позволяет лучше запомнить материал.
    2. Практическая часть
    В конфигурации обнаружены следующие ошибки:
    1.Общий модуль «РаботаСДокументамиКлиент». В настройках определено, что он компилируется на сервере, а в модулях форм документов, где происходит обращение к данному модулю, указана директива компиляции «&НаКлиенте. Поэтому необходимо установить флажок «Клиент», указывающий, что модуль компилируется на клиенте.
    2.Общий модуль «РаботаСДокументамиСервер». В настройках определено, что он компилируется на сервере, поэтому необходимо дополнительно поставить флажок «Вызов сервера».
    3.Документ «Продажа» модуль формы:
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    Если Объект.Ссылка.Пустая() Тогда
    Объект.Покупатель = Константы.ОсновнойПокупатель.Получить();
    КонецЕсли;
    КонецПроцедуры
    Неправильное обращение к данным, находящимся на сервере. Необходимо вынести обращение к константе в отдельную процедуру, для которой установить директиву компиляции «&НаСервере».
    Правильный код:
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    Если Объект.Ссылка.Пустая() Тогда
    Объект.Покупатель = ПолучитьНаименованиеОсновногоПокупателя();
    КонецЕсли;
    КонецПроцедуры

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

    4. Регистр сведений «Состав блюд». Показатель «Количество» является измерением, а должен быть отнесён к ресурсам регистра.
    5.Регистр накопления «Продажи». Установлен вид регистра «Остатки», однако в этом случае регистр будет неоправданно расти, поэтому данный регистр должен быть оборотным. Необходимо внести соответствующие изменения и в процедуру «ОбработкаПроведения» документа «Продажа».
    6.Документ «КомплектацияБлюд». В процедуре «ОбработкаПроведения» (расположена в модуле объекта) отсутствует группировка строк, что приведёт к дублированию записей в регистре накопления.
    7. Общий модуль «РаботаСДокументамиСервер».
    В процедуре «ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента» есть ошибка в реализации контроля отрицательных остатков а именно:
    Строку:
    Запрос.УстановитьПараметр(“Момент”, ДокументОбъект.МоментВремени());
    нужно заменить на:
    Запрос.УстановитьПараметр(“Момент”, Новый Граница (ДокументОбъект.МоментВремени(), ВидГраницы.Включая));
    8. Общий модуль «РаботаСДокументамиСервер». После внесения в процедуру «ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента» изменений, указанных в пункте 7, возникает ошибка, связанная с позиционированием не на ту строку при выводе сообщения. Поэтому необходимо изменить строку:
    Сообщение.Поле = “Номенклатура[“+ВыборкаДетальныеЗаписи.НомерСтроки+”].Количество”;
    Изменённая строка должна выглядеть следующим образом:
    Сообщение.Поле = “Номенклатура[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1) +”].Количество”;
    9.Документ «Закупка». При создании нового документа реквизит дата автоматически заполняется значением 1980.01.01. 0:00:00 Это происходит из-за того, что для стандартного реквизита «Дата» указано такое значение. Необходимо удалить значение заполнения для этого стандартного реквизита.

    3.Помощь миру
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=602126#602126

    P.S. Большое спасибо организаторам курсов за интересное изложение материала. В дальнейшем планирую сдать на сертификат “Профессионал по платформе” и проходить продвинутый курс.

    • Dobrenko Oleg 01.10.2012 в 10:16

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

  12. Viktor2009 30.09.2012 в 04:50

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

    но в основном конечно на 7.7. Самое ценное для меня это конечно информация

    полученная по запросам и отчетам. Это очень помогло в профессиональном росте.

    Народу требуется много отчетов новых. Особенно интересна и необходима для

    меня была информация по расчетной компаненте – был полный ноль. Последний

    раздел по ней тяжеловато дался. Както все систематезировалось, особенно по

    теории бух учета. И самое главное – курсы прошли с пользой. Сам такой материал

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

    процес обучения вполне устраивает. Даже если немного отстаешь можно в

    выходные нагнать основную группу.
    В октябре – обучение на продвинутом курсе.

    Обнаруженные ошибки:
    1. При проверке конфигурации встроенными средствами было выдано два типа

    ошибок:
    – Документ.Закупка и документ.Продажа – Переменная не определена

    (РаботаСДокументамиКлиент).
    Для устранения ошибки необходимо в свойствах общего модуля –

    РаботаСДокументамиКлиент выставить галочку – Клиент (управляемое

    приложение).
    – Документ.Продажа – переменная не определена (Константа). Обращение к

    константам возможно только на сервере. Неоходимо заменить директиву –

    &НаКлиенте на директиву – &НаСервере.
    2. При проведении документа – Продажа – неправильно работает контроль остатков

    номенклатуры. Нужно контролировать остатки на момент после проведения

    документа. Для этого в запросе изменим строки установки параметров на

    следующие:

        Граница = Новый Граница(ДокументОбъект.МоментВремени(),

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

    3. При выводе ошибки об отсутствии товара – сообщение указывает на нижнюю

    строку. Для устранения этой ошибки добавим -1 в код сообщения:
    Сообщение.Поле = “Номенклатура

    [“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Количество”;
    4. В документе – КомплектацияБлюд – повторяются две строки кода. Одну из них

    можно закоментировать.
    //Движения.ОстаткиТМЦ.Записывать = Истина;
    5. Документ Продажа – выдавал ошибку при проведении. Удалил строку кода в

    цикле по регистру Продажи:
    //Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    6. В регистре сведений – СоставБлюд измерение “количество” необходимо

    перенести в Ресурсы. Т.к. из-за этого в регистр может быть записано несколько

    строк с одним и тем же продуктом но с разным весом.
    7. Регистр Продажи должен иметь вид – Обороты также как и регистр Закупки,

    чтобы он не разрастался до бесконечности.
    8. В отчетах – Остатки и ПродажиЗакупки в параметр КонецПериода добавил

    значение – ДобавитьКДате(Период(&Период, “День”), “Секунда”, 1) для

    корректного учета конца периода.
    9. Отчет – Продажи закупки. Необходимо изменить тип параметра – Начало и конец

    периода на тип – Дата (в параметре состав).
    10. Дополнения.
    – Нет пользователей и нет ролей с правами, что очень плохо. Т.е. необходимо все

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

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

    добавить на форму всех документов возможность видеть эти движения.

    Добавляется настройкой в командном интерфейсе.

    Помощь начинающим в конфигурировании платформы:
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=602103#602103
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=602104#602104
    http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=602106#602106

    • Dobrenko Oleg 01.10.2012 в 10:11

      Благодарим за отзыв по курсу! Для публикации в списке финалистов требуется ваше ФИО и город.
      Шаги 2,3 приняты. Поздравляем вас с успешным окончанием базового курса по программированию!

      • Viktor2009 01.10.2012 в 10:42

        Тепляков Виктор Иванович
        Приморский край, г.Уссурийск

  13. 1 ЧАСТЬ
    Хочу поблагодарить Вас, Евгений, за этот курс в
    изучении “восьмерки”. До этого, обучался на
    очных курсах 1С, но Ваш курс, Евгений, дал мне
    более основательные знания. Спасибо Вам!
    Перехожу к продвинутому курсу.

    Мои Данные:
    Шатов Илья Олегович, программист, Москва

    2 ЧАСТЬ
    1. РН Продажи – ВидРегистра=Обороты
    2. МО док.Продажа – ОбработкаПроведения
    Убрал- Движение.ВидДвижения = ВидДвиженияНакопления.Приход
    3. Для отчета ПродажиЗакупки – нет данных продажи
    ВсеФункции-Управление итогами-Продажи-Пересчет-
    Пересчитать итоги
    4. ОМ-РаботаСДокументамиКлиент
    [х]Клиент(управляемое приложение)
    [ ]Сервер
    5. МФ док.Продажа
    //Процедура ПриОткрытии(Отказ)
    // Если Объект.Ссылка.Пустая() Тогда
    // Объект.Покупатель = Константы.ОсновнойПокупатель.Получить();
    // КонецЕсли;
    //КонецПроцедуры

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

    6.Переименовал ТЧ Номенклатура в Товары
    в док.Закупка, док.Продажа, док.КомплектацияБлюд
    Исправил ОбработкаПроведения
    Исправил ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента
    -в 2 местах запроса
    в МФ КомплектацияБлюд проц.Заполнить
    //Объект.Номенклатура.Загрузить(Результат.Выгрузить());
    заменил на:
    Объект.Товары.Загрузить(Результат.Выгрузить());
    7.

    8.РС СоставБлюд
    Добавляю ресурс Количество1, переношу данные
    с изм.Количество, удаляю изм. переименовываю
    р.Количество

    9.док.Закупка, док.КомплектацияБлюд, док.Продажа,
    РС СоставБлюд, РН ОстаткиТМЦ, РН Продажи, РН Закупки
    =Количество, тип Число10:3

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

    11.
    //Сообщение.Поле = “Номенклатура[“+ВыборкаДетальныеЗаписи.НомерСтроки+”].Количество”;
    заменил на:
    Сообщение.Поле = “Товары[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Количество”;

    12.
    &НаКлиенте
    Процедура Заполнить(Команда)
    ЗаполнитьНаСервере();
    NEW!Модифицированность = Истина;
    КонецПроцедуры

    3 ЧАСТЬ
    В 1С разработке я более чем новичок, практики еще не было вообще.
    Пока дать совет не могу.

    • Dobrenko Oleg 01.10.2012 в 10:06

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

  14. Курчавова Галина Владимировна
    начальник отдела ИТ в частной компании, г.Пермь

    ШАГ 1.

    Очень рада, что нашла ваш сайт с курсами. Очно обучаться мне не хотелось, т.к. мне кажется, что эффективность такого обучения небольшая. Искала именно дистанционные интернет-курсы, чтобы иметь возможность гибкого графика и интерактивной связи в течение более длительного периода. К вам попала по ссылке с http://forum-1c.ru.

    Впечатления самые благоприятные: доступное изложение, много практики, все очень предметно, актуально.
    Несколько лет работаю с 1С 8.1, больше по администрированию и поддержке. Но при необходимости создавала внешние отчеты и печатные формы, корректировала некоторые процедуры. При этом мое программирование больше было похоже клипование, интуитивное тыканье, и в результате детское удивление “О, заработало!”.
    Очень хотелось работать профессионально, как когда-то с другими языками программирования. Ну вот, это стало получаться. С легкостью написала несколько служебных внешних процедур, а также процедуру выгрузки справочника номенклатура и сопутствующих ему свойств номенклатуры в *.csv
    Осталось, правда, много незакрытых тем, которые я надеюсь услышать в продвинутом курсе: РИБ и планы обмена, работа с внешними файлами, процедуры-драйвера для подключения внешнего оборудования, работа с картинками.

    ШАГ 2.

    1) В тонком клиенте при открытии документов продажи и закупки вылетало сообщение об ошибке.
    Решение: В свойствах Общего модуля РаботаСДокументамиКлиент снимаем галочку “сервер” и ставим “клиент”.

    2) В тонком клиенте при создании документа продажи вылетало сообщение об ошибке
    Решение: Получение константы вынести в серверную процедуру.

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

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

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

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

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

    КонецФункции // ()

    3) При создании нового документа Закупки дата заполнялась значением.
    Решение: В документе Закупка в стандартных реквизитах очистила “ЗначениеЗаполнения” у реквизита Дата.

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

    5) В обработке проверки остатков Параметр МоментВремени нужно устанавливать с учетом границы:

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

    6) Неправильно устанавливается курсор в сообщении о недостатке на складе при проведении документа Продажа. Надо так:
    Сообщение.Поле = “Номенклатура[“+(ВыборкаДетальныеЗаписи.НомерСтроки – 1) +”].Количество”;

    7) Отчет ПродажиЗакупки. Параметр КонецПериода необходимо было привести к концу дня. Для этого в параметры добавляем Период (тип – СтандартныйПериод) и вводим выражение &Период.ДатаОкончания.

    8) Регистр накопления Продажи сделала – оборотный. Удалила строку в проведении документа Продажа:
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

    9) Отчет ОстаткиТМЦ. Дату приведим к концу дня:
    ДобавитьКДате(КонецПериода(&Период, “День”), “Секунда”, 1)

    10) В обработках проведения документов выполним метод Свернуть() для устранения дублей номенклатуры, а также перебор строк табличной части объединим в один цикл.
    Таблица = Номенклатура.Выгрузить();
    Таблица.Свернуть(“Номенклатура”, “Количество, Сумма”);

    Оптимизация:

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

    ШАГ 3.

    http://forum-1c.ru/index.php?topic=15854.0

    http://forum-1c.ru/index.php?topic=15880.0

    http://forum-1c.ru/index.php?topic=15936.0

    http://forum-1c.ru/index.php?topic=15845.0

    http://forum-1c.ru/index.php?topic=15860.0

    http://forum-1c.ru/index.php?topic=15827.0

    http://forum-1c.ru/index.php?topic=15956.0

    Публикация на Infostart:

    http://infostart.ru/public/153602/

    • Dobrenko Oleg 30.09.2012 в 12:52

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

  15. Ivan Frickun 29.09.2012 в 14:25

    Добрый день, Олег!
    Высылаю отчет по финальному заданию.
    Шаг 1.
    Начал изучать 1С, начиная с версии 8.1, раньше не приходилось работать с более ранними версиями. Имея опыт программирования на языках программирования Visaul Basic, Java, Delphi и работы с базами данных Access, MS SQL, InterBase, чисто случайно обнаружил наличие платформы 1С и начал изучать ее самостоятельно с помощью книг, материалов на сайтах, курсах. Для меня открылся новый мир платформы, я был положительно поражен ее возможностями, насколько тонко она «избавляет» программиста от суеты создания объектов как на уровне базы данных, так и на уровне создания интерфейсов при работе со справочниками и т.д., при этом все силы программиста концентрируются на выполнение задания на уровне функциональности созданного программного продукта (конфигурации).
    Пока я считаю себя новичком, но прилагаю все усилия для изучения возможностей платформы, и чем дальше я двигаюсь на этом пути – тем больше меня захватывает это занятие.
    К сожалению, в наших краях особенного спроса на доработку конфигураций нет, мы занимаемся продажей и установкой программных продуктов фирмы 1С, редкий случай, когда покупатель просит доработать конфигурацию, написать новый отчет или обработку.
    Для меня курс был очень полезен, теперь я имею возможность обнаружить «белые пятна» в моих знаниях и навыках программирования в 1С. Курс дал четкую последовательность освоения материала, много полезных примеров. Теперь стоит задача: еще раз (уже без обязательств вписаться в график выполнения заданий) пройтись по курсу более тщательно.
    Материал изложен доступно, формат обучения удобен (лучше не придумаешь), спасибо Вам за материалы Мастер-группы!
    Обязательно запишусь на Продвинутый курс, но сначала «разложу» по полочкам знания, приобретенные на Базовом курсе.
    С искренней благодарностью: Иван Фрицкун, инженер-программист, фирма «Кредис», г. Ужгород, Закарпатская область, Украина.
    Шаг 2.
    1. При создании нового документа Закупка автоматически устанавливается дата документа 1980.01.01. 0:00:00 так как для стандартного реквизита Дата указано значение заполнения: 1980.01.01. 0:00:00.
    Исправление ошибки: удалить значение заполнения для этого реквизита.
    2. Для обеспечения вызова процедуры ПересчитатьСумму из модуля формы документов Закупка и Продажа необходимо в свойствах общего модуля РаботаСДокументамиКлиент установить флаг «Клиент (управляемое приложение)». Флаг свойства «Сервер» можно удалить.
    3. При создании нового документа Продажа для заполнения реквизита Покупатель происходит обращение к значению константы на стороне клиента.
    Исп Исправление ошибки: необходимо обеспечить получение константы на сервере с помощью функции:

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

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

    или обеспечить заполнение реквизита Покупатель в модуле объекта в процедуре ОбработкаЗаполнения.
    4. Для обеспечения правильного контроля отрицательных остатков в общем модуле РаботаСДокументамиСервер в процедуре ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента код

    Запрос.УстановитьПараметр("Момент", ДокументОбъект.МоментВремени());

    необходимо заменить на

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

    5. Для обеспечения правильного позицирования на нужную строку в общем модуле РаботаСДокументамиСервер в процедуре ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента код

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

    необходимо заменить на

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

    6. Регистр накопления Продажи хранит информацию только о продажах, т.е. он должен быть оборотным. Изменим свойство регистра «Вид регистра» на «Оборотный», в документе Продажи в обработке проведения удалим строку

    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

    7. В отчете Остатки на закладке Параметры в колонке Выражение добавил текст кода:

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

    8. В отчете ПродажиЗакупки на закладке Параметры добавил параметр Период, тип: СтандартныйПериод, в колонке «Включать в доступные поля» поставил отметку. Для параметра НачалоПериода в колонке Выражение написал текст: &Период.ДатаНачала, а для параметра КонецПериода – текст &Период.ДатаОкончания. Для параметров НачалоПериода и КонецПериода поставил отметку в колонке «Ограничение доступности». На закладке Настройки параметра Период включил в пользовательские настройки, а параметры НачалоПериода и КонецПериода, наоборот – исключил из пользовательских настроек.
    Остальные замечания/пожелания не относятся к категории ошибок, скорее всего к дизайну, проверки заполнения и т.п., поэтому описывать их не буду.
    Шаг 3.
    Как я уже написал в шаге №1, я являюсь «новичком» в программировании в среде 1С, пока статей и других печатных изданий не имею, рановато. Считаю, что писать статьи по методологии программирования в среде 1С – это очень ответственная задача, к ней надо относиться очень внимательно, со всей ответственностью в знаниях предметной области.
    При работе с клиентами, их пожеланиями и вопросами (например, как изменить фамилию сотрудницы после ее выхода замуж), мы стараемся дать ответ в письменной форме, но это скорее всего пошаговые инструкции.
    В процессе изучения материалов я готовлю пишу/дорабатываю/исправляю конспекты, но этот материал еще не владеет силой и условиями для их опубликования. Как только я почувствую, что написанный мной материал достойный, чтобы его опубликовать и не повторяется – непременно выставлю на сайт.
    С уважением, Иван Фрицкун

    • Dobrenko Oleg 29.09.2012 в 19:32

      Здравствуйте, Иван.
      Спасибо за обратную связь по курсу! Чувствуется большей энтузиазм и творческий подход :) Желаем вам успехов в дальнейшей разработке!
      Практическую часть принимаю, а вот помощь ближним всё же придется оказать :)
      Предлагаю провести мини-семинар на тему возможностей платформы (пусть даже для одного сотрудника) и прислать фото. Так делают многие финалисты.

      Пришли фото мини-семинара:
      1
      2
      3
      Отличные снимки!
      Иван, поздравляем вас с успешным окончанием базового курса!

      • Ivan Frickun 01.10.2012 в 18:57

        Добрый день, Олег!
        Высылаю электронной почтой (на mg@spec8.ru) снимки, сделанные во время проведения лекции для сотрудников фирмы. Еще раз выражаю глубокую благодарность и огромное спасибо за созданный Вами курс.
        С моим первым преподавателем по 1С Анной Янчевской мы пришли к выводу: “Программирование – это искусство, а программирование на платформе 1С – это искусство ради искусства”.
        Всех благ.
        С уважением, Иван Фрицкун.

  16. Очепятался в п.9 Измерение “Блюдо”, а не “Номенклатура”(которого нет) надо сделать ведущим.

  17. Чернышев Геннадий Владимирович. Программист 1с. Москва.

    ШАГ 1.

    Много нового. Запросы, СКД, подход к контролю остатков, Всего и не перечесть. До этого V8 осваивал “по наитию” с помощью жены бухгалтера, которая перешла на V.8(помогал ей освоить “подглядывая изнутри”).

    Про заблуждения ничего сказать не могу.
    Не трогая конфигурацию написал отчет для заполнения таможенных оповещений. Использовал доп. параметры справочников. Проще стало разбираться с текстами программ от 1с. Стал применять ваши приёмы отладки.
    Формат. Если есть работа (я на “постоянке” сопровождал V7 + сисадминил + всякие такскомы с клиент-банками)
    то лучше сначала без группы пройти курс, при этом выполняя все ДЗ, а затем вместе с группой. Иначе просто не успеваешь ДЗ делать. Да и ещё, я про это как то писал, желательно эталонные решения всё же делать на пройденном материале, либо при изложении давать намёк на возможность использования механизмов, которые будут в эталонном решении(ученик может попробовать сам понять из Помощника как задействовать это механизм).

    ШАГ 2.

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

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

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

    КонецФункции

    Но лучше

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

    в модуле объекта в процедуре “ОбработкаЗаполнения”.

    4. Контроль остатков в функции ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента в параметр надо передавать границу:

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

    5. ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента: сообщение при отрицательном остатке не правильно “привязано” поле – индекс начинается с нуля, поэтому:

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

    6. Документ “закупка”: “Заполнение значения” стандартного реквизита “Дата” – очистить

    7. Отчет “Остатки”: СКД, Параметры, Выражение – вставить

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

    иначе может быть не достоверный отчет

    8. Отчет “ПродажиЗакупки” в параметрах СКД надо использовать стандартный период.

    9. Регистр сведений “СоставБлюд” не содержит ресурсов. Количество надо бы перенести в ресурсы, а то возможна ситуация, когда в компонентах салата появится “Салат “Цезарь” – сыр 0.5, сыр 06, лук 1, Лук 2 ну и т.д. что в общем то ошибкой назвать трудно. Измерение “Номенклатура” сделать ведущим, иначе в регистре останется грязь после удаления номенклатуры например “салат “Цезарь””.

    10. Вид регистра накопления “Продажи” должен быть “Обороты”

    11. После изменения вида регистра “Продажи”, в модуле документа “Продажа”, убрать

     Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

    12. Документ “КомплектацияБлюд”: достаточно одного раза

    "Движения.ОстаткиТМЦ.Записывать = Истина;"

    ШАГ 3
    Сам мало что ещё умею в V8, а туда же других учить. Но что поделаешь, надо выполнять условия “игры”
    http://infostart.ru/public/154040/

    • Dobrenko Oleg 29.09.2012 в 17:10

      Генадий, благодарим за отзыв по курсу! Шаг №3 принят.
      По практическому заданию: в одном из документов существует “диверсия”, связанная со стандартным реквизитом “Дата”. Найдите её и попытайтесь исправить.

  18. Андрюхина Альбина 28.09.2012 в 15:05

    Андрюхина Альбина Флюровна
    г.Стрежевой Томская обл.

    Шаг 1

    Поскольку обучение по платформе 8.0 я проходила в очном формате в 2005-м году, то из базового курса новым для меня было всё, что появилось в платформе 8.2.

    10 лет проработала только на 7.7 и вот, наконец, на предприятии начался переход на платформу 1с 8.2, причем на полностью заказную конфигурацию (т.е. не типовую)

    При попытке разобраться самостоятельно (по книгам), возникло заблуждение, что 7.7 лучше, так как проще и понятнее. Пользователи тоже кричали «Верните нам 7.7!» :)

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

    Какие результаты были достигнуты? Пользователи признали, что 8.2 всё-таки лучше и намного! :) Сейчас на предприятии программа работает устойчиво, в том числе, благодаря знаниям полученным на этом базовом курсе. Не представляю, как бы обошлась без них в такой тяжелый период внедрения. Ещё избавилась от заблуждения, что платформа 1с 8.2 невероятно сложна.

    В данном формате обучения информация успевает прочно закрепиться, так как обучение длится ежедневно в течении 3-х месяцев и то , что узнали ранее неоднократно повторяется в работе тренера при разборе новых задач. При решении домашних заданий снова и снова отрабатываешь навыки. Тут хочешь- не хочешь поймешь и запомнишь! И ещё, есть ещё один неявный бонус курса – заметно укрепляется самодисциплина. А если недостаточно мотивации и самодисциплины, то лучше очные курсы, на мой взгляд..

    Шаг 2

    1)Общий модуль РаботаСДокументамиКлиент является серверным. А из документов «Продажа» и «Закупка» вызывается процедура этого серверного общего модуля из клиентских процедур. Для исправления ошибки надо установить в свойствах общего модуля РаботаСДокументамиКлиент свойство «Клиент» в Истина и свойство «Сервер» в Ложь

    2) Проверка на отрицательный остаток при списании номенклатуры из регистра Остатки ТМЦ выполняется по новому алгоритму. Когда сначала расходные движения записываются в этот регистр, а затем контролируется, а не получился ли отрицательный результат..
    Но после записи расходных движений в запрос передан параметр «Момент» типа МоментВремени() и здесь ошибка. Так как при получении таблицы остатков с указанием параметра Период типа МоментВремени, полученного из даты документа и ссылки на документ остатки получаются, исключая записи движений самого документа!
    А в нашем случае надо получить данные об остатках, включая движения данного документа, потому надо применить параметр Период с типом значения Граница.
    Запрос.УстановитьПараметр(“Момент”, Новый Граница(ДокументОбъект.МоментВремени(), ВидГраницы.Включая));

    3) При сообщении об отрицательном остатке сообшение об ошибке позиционируется не на той строке. Потому что в качестве индекса табличной части Номенклатура передается номер строки.

    Было:

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

    Правильно:

    ИндексСтроки=ВыборкаДетальныеЗаписи.НомерСтроки-1;
    Сообщение.Поле = “Номенклатура[“+ИндексСтроки+”].Количество”;

    Или второй вариант исправления ошибки:

    изменить в запросе
    Вместо
    | МИНИМУМ(ТабличнаяЧастьДокумента.НомерСтроки) КАК НомерСтроки

    Правильно
    | МИНИМУМ(ТабличнаяЧастьДокумента.НомерСтроки) -1 КАК НомерСтроки

    И тогда в сообщении ничего не менять
    Сообщение.Поле = “Номенклатура[“+ВыборкаДетальныеЗаписи.НомерСтроки+”].Количество”;

    4)Обращение к классу КонстантыМенеджер невозможно в тонком клиенте, но возможно на сервере.

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

    Исправление ошибки состоит в том, чтобы обращаться к классу КонстантыМенеджер из серверной функции. А в клиентской ПриОткрытии вызываем эту функцию.

    5)В документе «Закупка» реквизит Дата внесено значение заполнения 01.01.1980 00:00:00 и при создании нового документа «закупки» эта дата устанавливалась. Значение заполнения этого реквизита надо очистить.

    6)РегистрНакопления «Продажи» настроен как регистр остатков. И движения в этот регистр делает только один документ «Продажи» и только приходные. Значит этот регистр никогда не закроется в ноль. Этот регистр должен быть оборотный. Для этого надо:
    1. установить свойство «Вид регистра» у регистра накопления «Продажи» – «Обороты»
    2.изменить код добавления движений в этот регистр в процедуре «ОбработкаПроведения» вмодуле объекта документа «Продажи». И в модуле,где формируются движения по регистру «Продажи» и закомментировать эту строку :
    // Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

    7) неверно спроектирован регистр сведений «СоставБлюд»: три измерения «Блюдо», «Компонента», «Количество» и ни одного ресурса. . В данном решении измерениями должны быть «Блюдо», «Компонента», а ресурсом «Количество».
    8) В отчете Остатки период надо привести к концу дня, включая последнюю секунду
    9) При смене реквизита «Блюдо» в документе «Комплектация блюд» надо табличную часть перезаполнять табличную часть. Для этого в модуле формы создать обработчик события ПриИзменении реквизита «Блюдо» и там вызывать процедуру модуля формы ЗаполнитьНаСервере();

    Шаг 3

    Самый трудный..

    http://infostart.ru/public/153748/

    Может кто знает, если редактировать (обновлять) свою публикацию на инфостарте плюсы остаются?

    • Dobrenko Oleg 29.09.2012 в 17:05

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

      • Андрюхина Альбина 29.09.2012 в 20:19

        Забыла самое главное-поблагодарить создателей курса за отличную работу! Огромное человеческое СПАСИБО! :)

    • >Может кто знает, если редактировать (обновлять) свою публикацию на инфостарте плюсы остаются?

      остаются, но нужно отправить публикацию еще раз на модерацию! Иначе она будет не активна

    • Андрюхина Альбина 01.10.2012 в 13:32

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

  19. Эрнест 28.09.2012 в 13:09

    1. Обратная связь.
    1. Нового почти всё, т.к. что было знакомо перешло на уровень выше понимания.
    2. Заблуждения заключались в основном в управляемых формах – сейчас намного понятней.
    3. На практике получил пока небольшое ускорение в работе т.к. упрощённые схемы помогают понять более сложные.
    4. Намного удобней в плане экономии времени.
    Корниенко Эрнест Сергеевич, 1С специалист (комбинат питания), 1С программист (производство общепит). Город Самара.

    2. Практическое задание.
    1. Общий модуль РаботаСДокументамиКлиент поставить галочку Клиент и Вызов сервера.
    2. Запуск 1С Предприятие запуск поменять на Выбирать автоматически.
    3. Регистр сведений Состав блюд – Компонента и количество перенести в ресурсы.
    4. Рег сведений СоставБлюд лучше сделать Подчинённым регистратору документу КомплектацияБлюд.
    5. Функция ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента в запросе установить Параметр(“Момент” поставить Граница ВидГраницы.Включая.
    6. Продажа Форма документа ПриОткрытии вынести получение константы на сервер с обратной передачей в форму.
    7. Доработать смену номенклатуры в формах документов.
    8. Продажа обработка проведения ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента(ЭтотОбъект) параметр заменить на Ссылка.
    9. В общем модуле в Функции ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента запрос оптимизировать – левое соединение по ТабличнаяЧастьДокумента – избавимся от вложенного запроса.
    10. Там же Сообщение.Поле = “Номенклатура[“+ВыборкаДетальныеЗаписи.НомерСтроки+”].Количество”; индекс уменьшить на 1.
    11. Регистр продажи поменять на оборотный.

    3. Помощь миру.
    Мини-семинар назначен на 2 сентября, фото вышлю в тот же день. Ещё раз хочу сказать огромное спасибо за курс.

    • Dobrenko Oleg 29.09.2012 в 16:50

      Эрнест, благодарим за обратную связь по курсу!
      >оптимизировать – левое соединение по ТабличнаяЧастьДокумента – избавимся от вложенного запроса.
      Приведите пожалуйста вашу версию запроса.

      • Эрнест 29.09.2012 в 17:55
        "ВЫБРАТЬ
                |   ОстаткиТМЦОстатки.Номенклатура,
                |   ОстаткиТМЦОстатки.КоличествоОстаток,
                |   ТабличнаяЧастьДокумента.НомерСтроки
                |ИЗ
                |   (ВЫБРАТЬ
                |       ТабличнаяЧастьДокумента.Номенклатура КАК Номенклатура,
                |       МИНИМУМ(ТабличнаяЧастьДокумента.НомерСтроки) КАК НомерСтроки
                |   ИЗ
                |       Документ.Продажа.Номенклатура КАК ТабличнаяЧастьДокумента
                |   ГДЕ
                |       ТабличнаяЧастьДокумента.Ссылка = &ДокументСсылка
                |  
                |   СГРУППИРОВАТЬ ПО
                |       ТабличнаяЧастьДокумента.Номенклатура) КАК ТабличнаяЧастьДокумента
                |       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(&Момент, ) КАК ОстаткиТМЦОстатки
                |       ПО ОстаткиТМЦОстатки.Номенклатура = ТабличнаяЧастьДокумента.Номенклатура
                |ГДЕ
                |   ОстаткиТМЦОстатки.КоличествоОстаток < 0";

        Я исходил из того что база маленькая (т.е. в регистре ОстаткиТМЦОстатки мало записей) и поэтому такой запрос будет выполняться быстрее, т.к. избавляемся ещё от одного запроса :

        Номенклатура В
            (ВЫБРАТЬ РАЗЛИЧНЫЕ
                ТабличнаяЧастьДокумента.Номенклатура
            ИЗ
                Документ.Продажа.Номенклатура КАК ТабличнаяЧастьДокумента
            ГДЕ
                ТабличнаяЧастьДокумента.Ссылка = &ДокументСсылка)

        Вопрос оптимизации для меня не совсем прозрачен в части запросов )).

        • Dobrenko Oleg 01.10.2012 в 10:00

          Эрнест, практическую часть принимаю, ждем фото-отчета с вашего семинара :)

          • Эрнест 01.10.2012 в 18:33

            Олег, добрый день. Фотоотчёт выслал. С экраном и помещением не совсем получилось, но главный бухгалтер честно предоставила свой кабинет.
            1
            2

            • Dobrenko Oleg 02.10.2012 в 09:15

              Здравствуйте, Эрнест.
              Отлично! Поздравляем, вы в списке финалистов 12 потока базового курса!

  20. Обратная связь

    Я работаю с программистом 1С с 2005 года, до этого была просто пользователем. Проходила несколько обучений в УЦ по УПП, платформе, конвертации. Хотела начать сразу с продвинутого курса. Хорошо, что остановилась и решила начать с базового. Столько информации, именно начальной, которая в принципе собирается обрывками с опытом, я нигде не получала. Заполнила все свои пробелы. Очень много нового и полезного. Столько нюансов, все разложено по полочкам. Замечательная подача материала. Главное отличие от курсов в учебных центрах – там прослушал целый день, информации море, большая часть просто улетучивается, так как не воспринимается от избытка. А здесь что-то упустил – недопонял – можно в любой момент вернуться, дорассмотреть. Возник вопрос по работе – вернулся в соответствующий раздел. Очень удобный план-график! Единственное, что при заявленном времени занятий – час-полтора в день – у меня уходило гораздо больше. Но одно несомненно, это очень нужный и полезный курс! Жалею, что когда я пришла в 1С его еще не было. С него надо было начинать! Но никогда не поздно продолжить! Спасибо вам!
    Новые навыки постоянно применяю – отчеты в СКД, выборки в запросах, разбор текстов типовых конфигураций, дополнительные печатные формы и прочее…

    Ошибки в базе

    1. ОМ.РаботаСДокументамиКлиент – в свойствах ОМ стоит галка Сервер, а должна стоять Клиент
    Документ.Продажа – процедура ПриОткрытии() – попытка получить константу из клиентской процедуры. Надо использовать процедуру ПриСозданииНаСервере.

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

    2. В ОМ.РаботаСДокументамиСервер в функции ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента, параметр МоментВремени установлен на дату документа, а надо использовать Границу включая, так как иначе в запросе не будут учтены движения самого документа и результат будет искажен, т.е надо заменить строку
    Запрос.УстановитьПараметр(“Момент”, ДокументОбъект.МоментВремени());
    на строку
    Запрос.УстановитьПараметр(“Момент”, Новый Граница(ДокументОбъект.МоментВремени(), ВидГраницы.Включая));

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

    4. Вид регистра накопления Продажи должен быть Обороты, а не Остатки.
    5. В связи с п.5 в документе Продажи в обработке проведения надо закомментировать строку
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    6. в пользовательском режиме продажа салата Цезарь по времени осуществляется раньше, чем этот салат скомплектовали. Для решения изменить время проведения документа Продажа после документа Комплектация
    7. Документ КомплектацияБлюд – в обработке проведения 2 раза идет запись в регистр ОстаткиТМЦ можно сделать цикл с условием и записывать 1 раз
    8. Отчет ПродажиЗакупки – для удобства пользователя добавить параметр Стандартный период
    9. Отчет ОстаткиТМЦ – в параметрах добавить 1 сек
    10. Документы (3 штуки) – для удобства установить галки видимости регистров, по которым есть движения

    Аверьянова Светлана программист 1С СПб

    Помощь миру – пока в разработке

    • Dobrenko Oleg 29.09.2012 в 16:20

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

      Пришли фотографии мини-семинара:
      1
      2
      Светлана, поздравляем вас с успешным окончанием базового курса по программированию!
      Вы в списке финалистов :)

  21. Конорев Игорь 28.09.2012 в 11:35

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

    6.При изменении состава блюд в регистре сведений есть вероятность того,
    что в уже проведенном документе Комплектация блюд будут перезаполнены строки документа новыми значениями и при перепроведении остатки “уедут”.
    Сделана проверка на наличие строк в табличной части.
    Если Объект.Номенклатура.Количество()=0 Тогда
    ЗаполнитьНаСервере();
    Иначе
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = “Составные части этого блюда уже заполнены.”;
    Сообщение.Сообщить();
    КонецЕсли;
    Предупреждение потребует первоначально удалить все строки из табличной части. А это уже осознанное действие.
    7.Отчет остатки Закладка Параметры. У Периода ввел выражение:
    ДобавитьКДате(КонецПериода(&Период, “День”), “Секунда”, 1)
    т.е. Поступления за текущий день тоже должны попадать в отчет.
    Аналогично у отчета ПродажиЗакупки приведение Конца Периода к концу суток.
    ДобавитьКДате(КонецПериода(&КонецПериода, “День”), “Секунда”, 1)
    Состав Даты поставил “Дата” в обоих случах. Отчет с точностью до секунды это слишком.
    8. Общий модуль РаботаСДокументамиСервер нет директивы &НаСервере.
    9. Проблема: ПриВводе нового документа Закупка Дата ставится на 01.01.1980
    Источник проблемы: В стандартных реквизитах у “Даты” “Значение заполнения” именно эта дата.
    Очистил параметр.

    Прочие:
    0.Для оптимизации обработку проведения объединил движения по регистрам
    0.Во всех документах и регистрах поле Количество стоит флаг Неотрицательное. Это некритично, но если нужно ввести сторнировочную запись по количеству – проблемы.
    0.Состав блюд. Удобно сделать группировку по блюдам, это можно и в пользовательском режиме, также некритично.
    №3
    Тут pass.
    Сам еще новичок и не люблю давать советы.
    Извините. Спасибо за знания.

    • Dobrenko Oleg 28.09.2012 в 15:48

      Игорь, благодарим за отзыв по курсу!
      >Тут pass.
      Уверен, после базового курса Вы уже приобрели значительный опыт.
      Почему бы им не поделиться ? :)

  22. Широков Максим 27.09.2012 в 23:03

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

    Т.к. из курсов я посещал год назад только Основные Объекты а до этго просидел несколько лет на 7.7
    то нового для меня было море. Самое главное и трудное забыть методы работы в 7.7 :-)
    все таки очень многого из мелочей которых сейчас не вспомнишь и не перечислишь не найдешь
    в литереатуре и интернете и не запомнишь или не услишишь на курсе в ЦО. сейчас же при
    повседневной работе с ситемой я замечаю что я часто пользуюсь мелкими удобствами самой
    платформы ок оторой не знал, чаще стал пользоваться СП, потому что болше понимаю как
    выцеплять из него нужную информацию. На работе у нас УПП и хоть она на платформе 8.2
    управляемых решений в ней пока мало, но уже на середине курса я понял как просто и быстро
    создавать в управляемой форме объектов. Выполнил давнюю просьбу админа сваяв ему мелкую
    БД по учету оргтехники и картриджей в отделе ИТ. 4 документа 3 отчета и несколько справочников
    он счастлив т.к. для мизерных потребностей изучать типофую конфигурацию никому не нужно.
    Формат оочень удобный, непонтяное можно пересмотреть пересулшать иногда это конечно расслабляет
    потому что дает возможность догонять материал на выходных, но лучше так чем просто пропущенное
    занятие из-за рабты, здоровья или еще какой причины. Курс стал для меня полным открытием и я
    обязательно продолжу его 15 октября 2012 на продвинутом курсе

    Широков Максим Алексеевич г. Сергиев Посад

    Практическая часть:
    1. Продажа №1 не должна проводиться, на момент продажи салата цезарь еще нет,
    его скомплеrтуют через 6 секунд

    Отладчиком выяснил что в запросе не создается минусовой остаток.
    Анализ запроса показал что он построен правильно, после чего началось изучения параметров и
    стало ясно что на момент времени минуса еще нет. Код исправлен изменением момента на границу:

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

    2.После того как убедился что вылазит ругачка заметил что указатель идет не на ту строку.
    потому как в квадратных скобках индексы , а нумеруются они в отличае от номера строки с нуля :
    НомерстрокиУказатель = ВыборкаДетальныеЗаписи.НомерСтроки-1;
    Сообщение.Поле = “Номенклатура[“+НомерстрокиУказатель+”].Количество”;

    3.При создании документа “Продажа” выводится ошибка:

    {Документ.Продажа.Форма.ФормаДокумента.Форма(5,2)}: Переменная не определена (РаботаСДокументамиКлиент)
    <>РаботаСДокументамиКлиент.ПересчитатьСумму(Элементы.Номенклатура.ТекущиеДанные);
    {Документ.Продажа.Форма.ФормаДокумента.Форма(12,2)}: Переменная не определена (РаботаСДокументамиКлиент)
    <>РаботаСДокументамиКлиент.ПересчитатьСумму(Элементы.Номенклатура.ТекущиеДанные);
    {Документ.Продажа.Форма.ФормаДокумента.Форма(21,23)}: Переменная не определена (Константы)
    Объект.Покупатель = <>Константы.ОсновнойПокупатель.Получить();

    Первые две ошибки видны невооруженным взглядом, модуль РаботаСДокументамиКлиент не компилируется на клиенте.
    после установки соответсвующей галки остается только последняя ошибка с константой. Кстати как я понимаю глаку “Сервер”
    с общего модуля : “РаботаСДокументамиКлиент” можно убрать. все процедуры модуля имеют дерективу &НаКлиенте

    С константой тоже все просто, на клиенте ее нет. перенаправляем чтение его в функцию на сервере:
    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    Если Объект.Ссылка.Пустая() Тогда

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

    КонецЕсли;

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

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

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

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

    4. В формах документов закупки и продажи обрабатываются все события по изменению реквизитов табличных чстей
    кроме смены наименования:
    &НаКлиенте
    Процедура НоменклатураБлюдоПриИзменении(Элемент)
    ТД = Элементы.Номенклатура.ТекущиеДанные;
    ТД.Цена = 0;
    ТД.Сумма = 0;
    КонецПроцедуры

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

    Ошибка при выполнении обработчика – ‘ОбработкаПроведения’
    по причине:
    {Документ.Продажа.МодульОбъекта(18)}: Ошибка при установке значения атрибута контекста (ВидДвижения)
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    по причине:
    Поле недоступно для данного регистра!

    закоментировал строку с видом движения, документ проводится – движения делает.
    //Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

    6. В отчете остатки в парметрах у периода в выражение вписал : ДобавитьКДате(КонецПериода(&Период, “День”), “Секунда”, 1)
    и в отчете “ПродажиЗакупки” описал период через стандартный : &Период.ДатаНачала, &Период.ДатаОкончания и тип стандартный период.

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

    7. Документ “Закупка” Дата документа при создании нового 1980 год и проводится той же датой, неоперативно

    Чего мне стоило найти значение заполнения 01.01.1980 0:00:00 в стандартных реквизитах описывать не буду, врагу не пожелаю :-)

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

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

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

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

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

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

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

    • Dobrenko Oleg 28.09.2012 в 07:44

      Максим, благодарим за оставленную обратную связь по курсу!
      Шаг №1,3 приняты.
      >Чего мне стоило найти значение заполнения 01.01.1980 0:00:00 в стандартных реквизитах описывать не буду, врагу не пожелаю :-)
      Да, многие этого не находят :)
      Практическое задание принято. Обратите внимание на ошибки других финалистов, есть те которые повторяются у вас.
      Поздравляем вас с успешным окончанием базового курса!

  23. Процедура ОбработкаЗаполненияне не сработает при корировании документа, при программном создании документа без вызова процедуры Заполнить(), следовательно данное условие не выполниться.

    • Dobrenko Oleg 28.09.2012 в 07:35

      я говорю не о процедуре ОбработкаЗаполнения, а конкретно о условии
      >Если ЭтоНовый() Тогда
      Выполняться оно будет всегда, по этому оно лишнее.

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

      • Спасибо за объяснение, что эта строчка кода лишняя
        >Если ЭтоНовый() Тогда
        и она будет выполнятся всегда. Довстречи в продвинутом!!!

  24. Не успел зафиналиться с прошлым потоком по техническим пичинам, потому пробую сейчас.

    Шаг 1.
    Дмитрий, Москва.
    Плотного опыта работы с v8 до базового курса не было. Все сводилось на поддержку обновлений некоторых баз и
    переносу рабочих отчетов и обработок из 7.7 в 8.2.
    Но после курса пришло понимание общих принципов работы в каждой области учета, будь то бухгалтерсие или управленческие задачи методами новой платформы.
    Не говоря уже про зарплатные, с которыми вообще никогда до этого не сталкивался.
    А главное, появилась уверенность в знаниях.
    Даже , если что-то забудется, всегда можно будет вернуться к курсу и освежить пройденное.
    Осталось дело за малым – за опытом.
    Очень удобный формат обучения.
    До этого был опыт только очных курсов и потому были сомнения, что заочное обучение сможет восполнить все минусы
    очного формата. Но, прочитав про преимущества с главной страницы сайта, решил попробовать – и не прогадал.
    Готов подписаться подо всем сказанным.
    Качество материала, его структура и подача – все на высоком уровне. А возможность планировать собственное время
    и возможость вернуться к старым урокам при возникновении вопросов только улучшает общее понимание.
    Вообщем, я доволен.
    В данный момент уже штурмую Продвинутый курс )

    Шаг 2.
    1. Документ “Закупка”.
    1.1 При проведении убираем возможность записывать несколько строк с одинаковой номенклатурой

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

    1.2. В базе существует возможность вводить отрицательные цены при поступлении.
    Устанавливаем свойства флаг “Неотрицательное” для реквизита “Цена”.

    2. Документ “КомплектацияБлюд”.

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

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

    2.2. В запросе по контролю остатков номенклатуры в параметрах pапроса вместо Момента времени используем границу

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

    2.3. ЛЕВОЕ соединение к таблице Табличной части и ГРУППИРОВКУ по Номенклатуре.

    2.4 В цикле вывода сообщения не забываем, что индекс меньше номера строки на 1

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

    3. В свойствах общего модуля РаботаСДокументамиКлиент поменял флаг с “сервер” на “клиент”, убрав
    при этом с процедуры пересчета суммы инструкцию #НаКлиенте.

    4. Регистр “Продажи” переделал в оборотный регистр, удалив в обработке проведения документа “Продажа” строку

            //Движение.ВидДвижения = ВидДвиженияНакопления.Приход;

    5. В регистре сведений СоставБлюд изменил реквизит “Количество”, на ресурс “Количество”.

    6. Отчет “Остатки”.
    В параметре СКД Период в ячейке Выражение добавляем

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

    7. Отчет “ПродажиЗакупки”.
    В параметре СКД КонецПериода в ячейке Выражение добавляем

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

    8. Проверил конфигурацию на корректноть работы под разными клиентами черех меню “Конфигурация- Проверка конфигурации”
    Получение константы под тонким клиентом в модуле формы документа “Продажа” вывел как ошибку.
    Оформил получение через функцию

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

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

    Шаг 3.
    К сожалению, в интернете в основном выступаю в роли Читателя.
    Поэтому особо не могу похвастать какой либо помощью нуждающимся на форумах. В режиме живого общения стараюсь помогать по мере сил )

    • Dobrenko Oleg 28.09.2012 в 15:40

      Дмитрий, благодарим за отзыв по курсу!
      Шаг №2 принимаю, но 3й шаг всё же придется выполнить :)
      Объясните коллеге какой нибудь механизм, о котором вы узнали из наших курсов, сдайте фото вашего мини-семинара, вот и всё :)

  25. SergeMalikov 27.09.2012 в 16:31

    Конечно не реквизит а ресурс. Это я оговорился.
    в 13) к этому выражению надо добавить 1 сек.
    ДобавитьКДате(КонецПериода(&Период,”День”),”Секунда”,1)

    • Dobrenko Oleg 28.09.2012 в 07:47

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

  26. SergeMalikov 27.09.2012 в 11:43

    Маликов Сергей
    Программист-разработчик
    Беларусь Брестская обл. г.Пинск

    ШАГ1
    Почти вся информация по платформе 8.2 для меня была новая. Продолжительное время
    использовал платформу 7.7 и другие системы программирования. Самостоятельно пытался
    перейти на платформу 8. Базовый курс помог мне преодолеть психологический барьер в
    изучении новой платформы. Появились первые навыки разработки приложений в новой системе.

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

    Планирую продолжить обучение.

    ШАГ2
    Обнаруженные ошибки:

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

    2) Место: Документ.Продажа.ФормаДокумента
    Ошибка: Присвоение значения константы в контексте клиента.
    Путь исправления: Создать функцию “ОсновнойПокупатель” в контексте сервера
    и перенести туда обращение к константе. В контексе клиента заменить обращение
    к константе на вызов функции “ОсновнойПокупатель”.

    3) Место: Документ.Продажа.ФормаДокумента
    Ошибка: Заполнение значения реквизита в модуле формы
    Путь решения: перенести заполнение реквизита “Покупатель” в модуль объекта
    в процедуру “ОбработкаЗаполнения”

    4) Место: Документ.Закупка
    Ошибка: При вводе нового документа Дата документа устанавливается на 01.01.1980 что не верно
    для документа которому разрешено оперативное проведение.
    Путь исправления: в свойствах стандартного реквизита “Дата” очистить поле “Значение заполнения”.

    5) Место: ОбщийМодуль.РаботаСДокументамиСервер.ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента
    Ошибка: Не работает контроль отрицательных остатков
    Путь исправления: Заменить параметр Документ.МоментВремени() на Граница
    где Граница = Новый Граница(ДокументСсылка.МоментВремени(),ВидГраницы.Включая);

    6) Место: ОбщийМодуль.РаботаСДокументамиСервер.ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента
    Ошибка: Сообщение о нехватке номенклатуры показывает не на ту строку
    Путь исправления: скорректировать выражение вычисления индекса. Должно быть:
    Сообщение.Поле = “Номенклатура[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Количество”;

    7) Место: Регистр.Продажи
    Ошибка: Вид регистра “Остатки”
    Путь исправления: Должен быть “Обороты”

    8) Место: Документ.Продажи.МодульОбъекта Процедура “ОбработкаПроведения”
    Ошибка: В связи с изменением вида регистра “Продажи” на “обороты” при записи движений прихода
    по регистру “Продажи” возникает ошибка “Поле недопуступно для данного регистра”.
    Путь исправления: исключить строку Движение.ВидДвижения = ВидДвиженияНакопления.Приход; из алгоритма.

    9) Место:РегистрСведений.СоставБлюд
    Ошибка: Измерение “Количество”
    Путь исправления: Вместо измерения “Количество” надо поставить реквизит “Количество”

    10) Место:РегистрСведений.СоставБлюд
    Ошибка: У измерений и реквизитов не установлена проверка заполнения
    Путь исправления: Установить проверку заполнения в состояние “ВыдаватьОшибку”
    Примечание: Отнес к ошибке в связи с тем что режим записи данного регистра – независимый.
    У остальных регистров контроль осуществляется в документах “Регистраторах”.

    11)Место: Отчет “ПродажиЗакупки” Запрос на выборку данных.
    Ошибка: В строках запроса получения количества и суммы отсутствует функция ЕСТЬNULL
    Путь исправления: Добавить вызов функции ЕСТЬNULL для корректного приведения значений.

    12)Место: Отчет “ПродажиЗакупки”
    Ошибка: Отсутствует параметр “Период” типа “СтандартныйПериод”
    Путь исправления: Добавить параметр “СтандартныйПериод” и включить его в пользовательские
    настройки.

    13) Место: Отчет “Остатки”
    Примечание: В параметрах можно дописать выражение приведения даты к концу
    периода КонецПериода(&Период,”День”)

    Не ошибки но улучшение интерфейса:
    В форме документа “КомплектацияБлюд” организовать очистку многострочной части при изменении
    реквизита “Блюдо”. В документах “Закупка” и “Продажа” при изменении номенклатуры сбрасывать цену.

    Шаг 3.

    По работе пришлось углубиться в конвертацию данных. Посмотрел ваши вебинары на
    эту тему. Самостоятельно поковырял “Внешние источники данных”.

    Полученные небольшие знания оформил в виде публикации и выложил на infostart.ru

    Название : “1С Конвертация, использование внешнего источника данных”.
    Раздел: ОБМЕН
    Ссылка: http://infostart.ru/browse/new/
    Зарегистрировался на сайте под ником: SergeMalikov

    • Dobrenko Oleg 27.09.2012 в 16:07

      Сергей, благодарим за отзыв по курсу. Шаг №3 принят.
      Обратная связь по второму шагу:
      >Вместо измерения «Количество» надо поставить реквизит «Количество»
      Уверены что нужен именно реквизит?
      13) Не совсем верная формула приведения к ноцу дня. Постарайтесь разобраться почему.

  27. Шабунина Евгения 26.09.2012 в 16:49

    Шабунина Евгения Сергеевна
    Программист 1С город Воронеж

    Шаг 1. Обратная связь по курсу.
    Курс помог мне закрыть много белых пятен в знаниях. В своё
    время курс “Быстрый старт” помог систематизировать уже
    имеющиеся знания, что в свою очередь помогло успешно пройти
    тест и устроиться на новую хорошую работу. Теперь, Базовый курс
    вывел мои знания на новый уровень. Появилось более глубокое
    понимание платформы.
    Я занимаюсь, в основном, доработкой уже имеющихся решений,
    поэтому для меня очень полезны приёмы разработки, показанные в
    уроках.
    Формат обучения довольно удобен. Можно обучаться в удобное
    время. Единственная сложность – это борьба с самой собой: после
    работы нужно прийти домой и, по сути, опять работать.

    ////////////////////////////////////////////////////////////
    Шаг 2.
    я решила разделить найденные ошибки в базе на ошибки и
    недочёты.

    Оптимизация:
    1)ОбработкаПроведения документа Продажа. Дважды обходится
    табличная часть Номенклатура. Добавление движений можно сделать
    в одном цикле.

    2)ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента – я бы сразу
    делала выход из функции, если результат пустой. А если не
    пустой, то тогда уже делала бы обход выборки.

    3)КомплектацияБлюд обработка проведения – 2 раза
    устанавливается свойство записывать у регистра Остатки ТМЦ.
    Достаточно 1-го раза.

    4)В регистре сведений СоставБлюд можно поставить флаг “ведущее”
    для измерения “Блюдо”, чтобы при удалении элемента в регистре
    не осталось по нему записей.

    Недочёты:
    1)Регистр сведений СоставБлюд – Количество лучше отнести в
    ресурсы. В текущем варианте для одного блюда мы можем назначить
    несколько одинаковых компонент, указав разное количество. Я бы
    поддерживала уникальность в разрезе блюдо – компонента.

    2) Для количества обычно ставим число 15(3), а не 10(2).

    3) Для измерений регистров я бы на всякий случай поставила
    запрет незаполненных значений. Думаю, это будет особенно
    полезно для регистра накопления ОстаткиТМЦ, чтобы уменьшить
    вероятность “зависания” итоговых сумм. (во всех документах
    стоит проверка заполнения, но если в конфигурацию будут
    добавлены новые объекты об этой настройке могут забыть)

    4) В отчёте ПродажиЗакупки можно использовать функцию is Null
    для выбираемых количества и суммы. Пригодится, если
    пользователь захочет, например настроить условное оформление по
    этим полям.

    Ошибки
    1) ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента – Неверно
    установлен параметр “Момент”. В таком варианте не будут учтены
    движения проверяемого документа. Нужно использовать границу,
    включая.

    2)ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента –
    Некорректное указание номера строки для вывода сообщения
    пользователю. Номера строк начинаются с 1, а индексы с 0. Нужно

    Сообщение.Поле = “Номенклатура[“+ВыборкаДетальныеЗаписи.НомерСтроки – 1 +”].Количество”;

    3)Форма документа Продажа – ПриОткрытии получение константы на
    стороне клиента. Нужен вызов сервера без контекста или, даже,
    наверное лучше, заполнять контрагента в обработке заполнения.

    4) Общий модуль РаботаСДокументамиКлиент – Не установлено
    свойство вызов сервера. Вызов методов такого модуля со стороны
    клиента невозможен.

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

    6)В регистрах накопления для ресурса Количество стоит флаг
    “Неотрицательное”. При такой настройке для регистра ОстаткиТМЦ
    имеющийся алгоритм контроля остатков не сработает, а для Продаж
    и закупок не сможем сделать сторно, если это когда-нибудь
    потребуется. Да и для ОстаткиТМЦ ввести корректно сторно не
    получится.

    6)в отчёте Остатки к периоду нужно прибавлять 1 сек

    /////////////////////////////////////////////////////

    Шаг 3 в разработке…

    • Dobrenko Oleg 27.09.2012 в 11:27

      Евгения, благодарим вас за отзыв по курсу!
      Ждем шага №3.
      Обратная связь по шагу №2:
      >В регистрах накопления для ресурса Количество стоит флаг «Неотрицательное». При такой настройке для регистра ОстаткиТМЦ имеющийся алгоритм контроля остатков не сработает
      Здесь я с вами не соглашусь. Проверяли ваше предположение?

      • Шабунина Евгения 27.09.2012 в 11:53

        Посмотрела внимательнее. Да, действительно, проверка работает. Поторопилась с выводами.

  28. Обратная связь

    Караков Александр Александрович
    Много нового и интересного я узнал в этом курсе начиная с общих механизмов платформы,заканчивая автоматизацией
    расчета зарплаты.
    на практике полученные знания пригодились для построения внешних печатных форм и обработки заполнения табличных частей
    документов, построению отчетов в СКд в конфигурации Бухгалтерии предприятия.
    Сейчас работаю над проектом перехода крупной организации с 7.7 на 8.2 Бухгалтерию предприятия. Очень доволен форматом курса, большое спасибо!!!
    Буду слушать продвинутый.

    Ошибки и решения.

    1 . В форме документа Закупка,КомплектацияБлюд,Продажа на панели навигации нет команд перехода на движения в регистрах сделанных этим документом
    Устанавливается в командном интерфейсе управляемой формы

    2. Общий модуль РаботаСДокументамиКлиент компилируется на сервере ,а необходимо компилировать на клиенте.

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

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

    4 В Регистре сведений состав блюд имеется измерение Количество, а оно должно быть ресурсом , для того чтобы платформа не давала
    записать ошибочные сведения (На одно блюдо , одна компонента и разное количество)

    5-6.В общем модуле неправильный код контроля остатков

    Перписал запрос по контролю остатков (выбираем различную номенклатуру из табличной части документа,используем левое соединение к таблице документа,
    в параметре Момент устанавливаем границу включая движения самого документа)

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

    Если ИмяДокумента”Продажа” Тогда

    Запрос.Текст = СтрЗаменить(Запрос.Текст, “Продажа”, ИмяДокумента);

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

    7. При выводе сообщения пользователю не правильно позиционируется поле вывода ,необходимо
    Сообщение.Поле = “Номенклатура[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Количество”;

    8-9.В документе комплектация в модуле объекта процедуры обработки проведения Нет группировки строк (будет дублирование в регистре).обйти Циклом таблицу вводя записи в регистр,
    так же отсутствует необходимость дважды установки флага записывать для набора записей ОстаткиТМЦ

    Процедура ОбработкаПроведения(Отказ, Режим)

    // регистр ОстаткиТМЦ Приход
    Движения.ОстаткиТМЦ.Записывать = Истина;
    Движение = Движения.ОстаткиТМЦ.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Номенклатура = Блюдо;
    Движение.Количество = Количество;

    // регистр ОстаткиТМЦ Расход
    // Движения.ОстаткиТМЦ.Записывать = Истина;

    Таблица = Номенклатура.Выгрузить();
    Таблица.Свернуть(“Номенклатура”,”Количество”);

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

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

    Отказ = РаботаСДокументамиСервер.ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента(ЭтотОбъект, “КомплектацияБлюд”);

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

    10.В форме документа продажа обращение к КонстантыМенеджер можно только на сервере

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

    Если Объект.Ссылка.Пустая() Тогда

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

    КонецЕсли;

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

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

    11.В документе продажа в модуле объекта процедуры обработки проведения Нет группировки строк (будет дублирование в регистре).обйти Циклом таблицу вводя записи в регистр,

    Процедура ОбработкаПроведения(Отказ, Режим)

    // регистр ОстаткиТМЦ Расход
    Движения.ОстаткиТМЦ.Записывать = Истина;
    Движения.Продажи.Записывать = Истина;

    Таблица = Номенклатура.Выгрузить();
    Таблица.Свернуть(“Номенклатура,Цена”,”Количество,Сумма”);

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

    // регистр Продажи Приход
    Движение = Движения.Продажи.Добавить();
    Движение.Период = Дата;
    Движение.Номенклатура = ТекСтрокаНоменклатура.Номенклатура;
    Движение.Количество = ТекСтрокаНоменклатура.Количество;
    Движение.Сумма = ТекСтрокаНоменклатура.Сумма;
    КонецЦикла;

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

    Отказ = РаботаСДокументамиСервер.ЕстьОтрицательныеОстаткиПоНоменклатуреДокумента(ЭтотОбъект);

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

    12.В отчете Остатки необходимо добавить параметр НаДату ,который будет вводить пользователь,а в выражение параметра Период ввести : ДобавитьКДате(КонецПериода(&НаДату, “День”), “Секунда”, 1)
    для получения корректных остатков. параметр НаДату включим в быстрые пользовательские настройки

    13. Регистр накопления Продажи должен быть оборотным, т.к. иначе регистр не будет закрываться в ноль
    14. В отчете ПродажиЗакупки изменим Запрос в СКД так же в пользовательском режиме пересчитаем итоги для корректного
    формирования отчета.

    ВЫБРАТЬ
    ЕСТЬNULL(ЗакупкиОбороты.Номенклатура, ПродажиОбороты.Номенклатура) КАК Номенклатура,
    ЕСТЬNULL(ЗакупкиОбороты.КоличествоОборот, 0) КАК КоличествоЗакупки,
    ЕСТЬNULL(ЗакупкиОбороты.СуммаОборот, 0) КАК СуммаЗакупки,
    ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0) КАК КоличествоПродажи,
    ЕСТЬNULL(ПродажиОбороты.СуммаОборот, 0) КАК СуммаПродажи
    ИЗ
    РегистрНакопления.Закупки.Обороты КАК ЗакупкиОбороты
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
    ПО ЗакупкиОбороты.Номенклатура = ПродажиОбороты.Номенклатура

    Помощь миру

    http://forum.infostart.ru/forum15/topic68900/message739993/#message739993

    http://forum.infostart.ru/forum26/topic70963/

    //продолжение следует

    • Dobrenko Oleg 26.09.2012 в 08:43

      Александр, благодарим за обратную связь по курсу! Шаг№1,3 приняты.
      Обратная связь по практическому заданию:

      10.Эти действия лучше выполнять в модуле объекта документа. Помните, какая процедура для этого предназначена?
      12.
      >В отчете Остатки необходимо добавить параметр НаДату ,который будет вводить пользователь,
      Не совсем понятно для чего вы предлагаете создать ещё один параметр?
      >а в выражение параметра Период ввести :ДобавитьКДате (КонецПериода(&НаДату, «День»), «Секунда», 1)
      Отлично! Очень часто не учитывают последнюю секунду периода.

      • Добрый вечер!
        10. Выполним автоматическое заполнение контрагента по умолчанию в модуле объекта в процедуре:
        Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
        Если ЭтоНовый() Тогда
        Покупатель =Константы.ОсновнойПокупатель.Получить();
        КонецЕсли;

        КонецПроцедуры
        12. Согласен , что второй параметр лишний . Можно указать в выражение параметра Период : ДобавитьКДате(КонецПериода(&Период, “День”), “Секунда”, 1)

        Караков Александр. город Йошкар-ола.

        • Dobrenko Oleg 27.09.2012 в 07:37

          Здравствуйте, Александр.
          >Если ЭтоНовый() Тогда
          Приведите пожалуйста пример, когда данное условие не выполнится?