Финальное домашнее задание – Теперь с решениями!
Финальное домашнее задание базового курса по программированию.
Задание коренным образом отличается от обычных ДЗ, которые мы решали в ходе курса.
Внимание: прием решений уже завершен. Но, думаю, всем будет полезно посмотреть на возможные решения :)
Финальное домашнее задание состоит трех частей:
1. Решить практическую задачу (см. ниже), плюс написать по ней отчет. Что должно быть в отчете – указано в самом задании.
2. Вы уже достаточно опытные специалисты, поэтому наступает момент не только впитывать новые знания, но отдать их во внешний мир, поделиться информацией с другими людьми.
Мы предлагаем Вам два варианта, как это можно сделать:
- Провести для своих клиентов/коллег по цеху мини-семинар (30-ти минут достаточно) на тему «Основные фишки платформы 8.2». В качестве отчета – вполне подойдут фотографии с этого мероприятия.
- Помочь разобраться со сложным вопросом на каком-либо форуме по 1С. При этом нужно детально подойти к решению проблемы. Идеальный вариант – это видео-разбор какой-либо проблемы. Для записи можно использовать Jing (http://www.techsmith.com/jing/, он дает возможность бесплатно записывать мини-уроки до 5 минут). Нам нужно будет предоставить ссылку на обсуждение.
3. Ответить на ряд вопросов по прохождению базового курса (вопросы – в задании).
Текст задания доступен по ссылке.
ИБ для выполнения первой части задания скачивайте по ссылке.
Update.
Шаг 2 финального домашнего задания. Поступило несколько просьб придумать еще один вариант выполнения этого шага. Т.к. не всегда возможно устроить публичную презентацию, либо “повисеть” на форумах (сам захожу туда уже около года).
Можно написать небольшую статью на любую интересную вам тему по платформе “1С:Предприятие 8.2”. Статью нужно будет опубликовать на сайте с соответствующей тематикой, например, http://nashe1c.ru/, http://infostart.ru/.
Ps. Конечно прямой перевод наших видео-материалов в текст с картинками мы не одобряем. Правильным было бы написать о том механизме, который у вас наиболее срезанировал во время обучения. Причем написать со своей точки зрения.
Pps. Отчет о ДЗ нужно писать прямо в этой ветке. Многие участники уже начали писать отчеты, но не удивляйтесь, что вы не видите их комментарии – так и задумано :)
Ppps. В отчете по первой части финального ДЗ нужно привести список ошибок М.Н. Выгрузку базы присылать не нужно.
Евгений, по пункту пока 2 очень скромно, но лучше что-то чем ничего совсем :
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566402#566402
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566403#566403
Игорь, по шагу 2 – зачет.
Поздравляю вас, как финалиста базового курса! =)
1. Что нового Вы узнали из базового курса по программированию?
Во-первых – работа с управляемыми формами. Во-вторых работа с регистрами расчета. Были пробелы. В третьих во всех темах было что-то новое и интересное, а при изучении уже знакомых вопросов, материал раскладывался «по полочкам»
2. От каких заблуждений избавились?
Интересная постановка вопроса. Было заблуждение об уровне своих знаних. Изначально, когда только узнал про проект, хотел подписаться на продвинутый курс. И купил полный комплект только благодаря спецпредложению… Но сейчас закончился базовый курс а в моей голове уже многое изменилось J. Что же дальше будет…
3. Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
вам удалось применить новые навыки (какие результаты были достигнуты);
Если Вы пока не работаете реальных проектах по внедрению решений на
«1С:Предприятии 8», то, что оказалось неожиданным из материалов курса?
Больших проектов в данных момент нет… Понравилась методичность, последовательность, обстоятельность изложения материала курса. Остается ощущение что по пройденной теме «перемыли» все косточки. И на вопрос «Что бы вы хотели рассмотреть в мастер-группе» не сразу придумаешь, что ответить…
4. Насколько удобен, оказался формат обучения в сравнении с очным форматом?
Как неоднократно упоминалось в комментариях, формат обучения очень удобен. Может быть побольше практических заданий хотелось бы. Пусть даже не обязательных для выполнения всем. Как в школьных учебниках. Прошел раздел в теме – и тебе тестовая задачка на применение только что изученного. Так сказать руку набить, мозги разгрузить…
Алексей, спасибо за обратную связь.
Спешу вас поздравить со статусом “Финалист базового курса”! Ура, товарищи =)
Опубликовал:
http://nashe1c.ru/materials-view.jsp?id=346
но на данный момент материал находится в модерации
Алексей по шагу 2 ставим зачет авансом :)
1. Документ ПродажаТоваров не является регистратором “ТоваровНаСкладе”. Необходимо выставить в свойствах объекта.
2. При вводе серии показывать только серии владельца в документе ПродажаТоваров. Необходимо установить для реквизита табличной части “серия” в связях параметров выбора отбор по владельцу.
3. Покупка товаров не формирует движения. Не установлено свойство “Записывать”
4. Команда “ЗаполнитьКлиента” работает неправильно – на клиенте недоступен СправочникМенеджер. Необходимо либо использовать серверный вызов, либо функцию “ПредопределенноеЗначение”, что, в принципе, одно и тоже.
5. У общего модуля “ПроверкаДокументовСервер” не установлен флажок “Вызов сервера”. Таким образом для вызова из клиентских процедур он недоступен.
6. В процедуре общего серверного модуля использовано “Предупреждение”, доступное только в контексте клиента. Как вариант – заменить его на “Сообщить”.
7. Команда “ЗаполнитьТовары” не выведена на форму документа. Необходимо создать кнопку с вызовом соответствующей команды.
8. В процедуре “ЗаполнитьТовары” тип неверен – должен быть Тип(“ДокументСсылка.ПокупкаТоваров”)
9. Неправильная проверка на основание в функции “ВвестиЗначение”. При отказе от выбора переменная Основание будет инициализирована значением “Неопределено”, что приведет к ошибке. Надо ставить блок “Если” на функцию “ВвестиЗначение”.
10. В процедуре “ЗаполнитьТоварыНаСервере”, если вводимый документ еще не записан, то получим ошибку времени исполнения. Необходимо передавать объект, а потом преобразовывать универсальный объект к объекту прикладного типа, либо сделать вызов контекстным.
11. В процедуре “ЗаполнитьТоварыНаСервере” метод “загрузить” не работает, так как принимает на вход объект типа “ТаблицаЗначений”, а не табличную часть. То есть надо для табличной части основания вызвать метод “Выгрузить()”.
12. По пожеланиям Виолы Григорьевны необходимо в стандартных реквизитах справочника “Серии” у реквизита “Код” установить свойство проверки заполнения в состояние “Выдавать ошибку”.
13. В табличной части документ ПокупкаТоваров неверный тип данных у реквизита “Количество”. Необходимо его исправить на числовой с размерностью 15.3.
14. Также в табличной части документа ПродажаТоваров и регистра ТоварыНаСкладе размерность поля “Количество” отличается. Необходимо привести ее к общему типу, например – число с размерностью 15.3.
15. Процедура проверить документ будет работать только для записанных документов. Так что, как вариант – необходимо перед проверкой записывать документ, что получать ссылку и потом использовать в запросе.
16. В модуле проведения документа “ПродажаТоваров” в запросе при получении остатков, в параметрах виртуальной таблицы необходимо указывать также серию, так как остатки при исходном тексте запроса получаются только по товарам.
17. В модуле проведения документа “ПродажаТоваров” в запросе необходимо использовать вложенный запрос по табличной части сгруппированный по товару и серии и уже его соединять с таблицей остатков.
18. В модуле проведения документа “ПродажаТоваров” при обнаружении недостаточности товара на складе необходимо устанавливать параметр “Отказ” = Истина, чтобы документ не проводился.
19. Честно говоря, модуль проведения рациональней просто переписать, что я и сделал, но поскольку код выкладывать нежелательно, я опишу алгоритм:
– Запрос строится с учетом вышеуказанных замечаний без секции итогов
– Цикл по записям выборки с проверкой на отрицательные остатки, в случае отрицательных остатков по разрезу – серия, товар – отказ устанавливается в истину с выводом соответствующего сообщения
– Если отрицательных остатков не обнаружилось то формируется запись в регистре, посчитанная по простой формуле Запись.Сумма = Выборка.СуммаОст/Выборка.КолОст*Выборка.КолДок
В результате получился вот такой небольшой совсем алгоритм, соответствующий условиям задачи.
В исходном варианте он также неправильно работал в цикле, списывая один товар по одной серии несколькими строчками и с неверно-посчитанным количеством в функции Мин(ОсталосьСписать, ВыборкаСерии.КолОст).
Возможно что-то где-то недоглядел, так как очень торопился с выполнением.
Часть3. Ответы на вопросы:
1. Нового очень много. Во-первых, все особенности платформы 8.2. Структурировались все знания по различным видам учета. По БУ и расчетным задачам практически все новое, так как был знаком с ними очень поверхностно.
2. От заблуждения, что сложные периодические расчеты – это очень сложно.
3. Новые навыки на практике именно на платформе 8.2 пока применить не удалось, но общий стиль программирования стал более упорядоченным, логичным. И это проявляется в написании кода на платформе 8.1, на которой сейчас и работаем.
4. Формат – отдельная тема. Мне лично, он кажется наиболее удобным из возможных. В том числе, удобнее формата вебинаров. Есть возможность варьировать самому нагрузку, есть хороший контроль в виде ДЗ, они же закрепляют пройденный материал. В общем, мне кажется вы нашли очень продуктивный формат, удобный для работающих людей.
Вот такой получился отчет о выполнении. В понедельник планирую провести семинар у себя в организации и выложить фотоотчет. Спасибо большое за огромную проделанную вами работу.
Шаг 1. Зачет.
Шаг 3. Зачет.
Ждет фотоотчета с семинара :)
Шаг 1
Создать форму элемента Справочники.Серии
Покупка товаров
1. Тип значения строка в реквизите количество табличной части Товары .
Действие : Изменить тип на <<Число 15.3>>
2. Не вынесена команда «Заполнить Товары» на форму.
Действие :Расположить кнопку на форме
3. В процедуре ЗаполнитьКлиента(Команда)
На клиенте недоступны методы обращения к базе данных
а) Заменить «Справочники.Клиенты.ОсновнойПокупатель» на «ПредопределенноеЗначение(“Справочник.Клиенты.ОсновнойПокупатель”)»;
или
б) Создать Функцию c компиляцией <<&НаСервереБезКонтекста>> и возвращать <<Справочники.Клиенты.ОсновнойПокупатель>>
4. В процедуре «ЗаполнитьТовары(Команда)Заменить Тип(“Документ.ПокупкаТоваров”) на Тип(“ДокументСсылка.ПокупкаТоваров”)
5. В процедуре «ЗаполнитьТовары(Команда)»
В условии «Если НЕ Основание.Пустая() Тогда »
Основание может иметь тип : если выбор произошло успешно Тип(“ДокументСсылка.ПокупкаТоваров” .
Если нет тип <<Неопределено>> Метод <<Пустая()>> будет выдавать ощибку.
Заменить «НЕ Основание.Пустая()» на «ВвестиЗначение(Основание, “Выберите документ-основание”,Тип(“ДокументСсылка.ПокупкаТоваров”))» .
6. «ЗаполнитьТоварыНаСервере()» изменит компиляцию с &НаСервереБезКонтекста на &НаСервере
(при компиляции &НаСервереБезКонтекста – при вызове этих методов не выполняется передача данных формы на сервер и обратно)
7. «ЗаполнитьТоварыНаСервере(ТекущийДокумент, ДокументОснование)» ТекущийДокумент не нужно передавать , <<Объект>> основной реквизит формы и он доступен в процедуре при компиляции на &НаСервере.
8. <<Объект = ТекущийДокумент.ПолучитьОбъект()>> -> <<Если Не Объект.Ссылка.Пустая() Тогда л_Объект = Объект.Ссылка.ПолучитьОбъект()КонецЕсли;>>
9. <<Объект.Товары.Загрузить(ДокументОснование.Товары)>> -> <<Объект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить())>>.
10.В процедуре «ОбработкаПроведения» не установлено свойство Движения.ТоварыНаСкладе.Записывать=Истина;
Продажа Товаров
11.Вставить <<Записать()>> перед вызовом процедуры ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка)
12. ПроверкаДокументовСервер не установлен флажок “Вызов сервера”
13. В процедуре <<ПроверкаДокументовСервер>> <<Предупреждение>> не доступно на сервере
заменить <<СообщениеПользователю>> или <<Сообщить>>
14.Не отмечена что является регистратором для <<регистра накопления Остатки товаров>>
В процедуре <<ОбработкаПроведения>>
15. Добавить в начало процедуры
<<Движения.ТоварыНаСкладе.Очистить();
Движения.ТоварыНаСкладе.Записать();>>
Запрос на получение остатков
16 Добавить <<ПродажаТоваровТовары.НомерСтроки>>
17 Сделать проверку На <<isNULL>> для полей <<КолОст,СуммаОст>>
18.Добавить условие <<ПродажаТоваровТовары.Ссылка = &Ссылка>>
19.Сделать Группировку <<Товар,Серия>> Сумма по полям <<КолДок,КолОст,СуммаОст>>
Максимум по полю<<НомерСтроки>>
20.Для виртуальной таблицы <<РегистрНакопления.ТоварыНаСкладе.Остатки>>
добавить параметр <<Период>> <<&МоментВремени>> в запросе ,
процедуре Запрос.УстановитьПараметр(“МоментВремени”,МоментВремени()).
добавить параметр Измерения <<Серия>> ,
Во вложенном запросе для получения отборов по измерениям регистра добавить измерение – серия .
21.Убрать в запросе <<секцию Итоги>> -т.к. в запросе стоит <<внутреннее соединение>> -> уменьшиться количество уровней выборки.
Выборка результата запроса
<<ВыборкаТовары = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам)>> заменить на <<ВыборкаТовары = Результат.Выбрать()>>
убрать <<Обход группировки ВыборкаСерии>>
22. В условии <<Если Недостача>0 Тогда
.
<<“Товары.Количество”>> заменить на <<“Товары[ВыборкаТовары.НомерСтроки].Количество”>>
.
Отказ =Истина;
КонецЕсли>>
23.Перед добавлением записей в регистр вставить проверку <<Если Не Отказ Тогда>>
24.Заменить <<ВыборкаСерии.СумОст/ВыборкаСерии.КолОст*Запись.Количество>> на <<Запись.Количество*?(ВыборкаТовары.КолОст=0,0,ВыборкаТовары.СумОст/ВыборкаТовары.КолОст)>>
Справочник Серии
«Номер серии» -это синоним поля <<Код>> справочника Серии.
порядок <<Справочники>><<Серии>><<Свойства>><<Стандартные реквизиты>><<Открыть>><<Код>><<Обработка заполнения>><<Выдавать ощибку>>
Шаг 2
Сделаю во время прохождения продвинутого курса.
Название статьи – <<две базовых единицы хранения на складе>>
Шаг 3.
1.Появилась уверенность в себе.
Вариантность решения задачи- не ищу похожее решение ,а делаю осмыслено .
2.Что это не доступно мне.
Спасибо
Р . S ДЗ 9,10,11,13,14 сделал
12,15,монетизация -догоню в продвинутом.
>8. <> -> <<Если Не Объект.Ссылка.Пустая() Тогда л_Объект = Объект.Ссылка.ПолучитьОбъект()
Без этого можно было спокойно обойтись. У вас ведь вызов контекстный, работайте с объектом напрямую.
По остальным пунктам согласен.
Шаг 1 – зачет.
По шагу 2. Можно было бы помочь на форумах..
Евгений, Фарит! добрый вечер! только сегодня появилась возможность справиться с 2 шагом.
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566357
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566391
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=566169 это мои ответы… скромно. Но, честно сказать, я никогда на формумах не бывала, а это, оказывается, затягивает, когда людям начинаешь помогать в вопросах. Огромное спасибо Вам еще раз. Валентина
Отлично, Валентина!
Шаг 2 принимается.
А я вас поздравляю, вы – финалист базового курса :)
На счёт фото понятно, вот они здесь:
Фото принято!
Степан, поздравляю вас с успешным окончанием базового курса!
Зачисляю вас в ряды финалистов!!
Спасибо! :)
Ещё моменты для тонокого клиента:
1. Заполнение основного клиента в документе поступления нужо выполнять в серверной процедуре;
2. Общий модуль ПроверкаДокументовСервер не доступна на клиенте в управляемом режиме
>2. Общий модуль ПроверкаДокументовСервер не доступна на клиенте в управляемом режиме
А как нужно решить проблему?
Для модуля включить галочку “Вызов сервера”
Здравствуйте, Фарит и Евгений!
Вот какие ошибки удалось определть:
1. РегистрНакопления.ТоварыНаСкладе – измерениям Товар и Серия установить “Запрет незаполненных значений”;
2. РегистрНакопления.ТоварыНаСкладе – включить индексирование;
3. РегистрНакопления.ТоварыНаСкладе не включен ни в одну подсистему;
4. для РегистрНакопления.ТоварыНаСкладе движения выполняются только документом поступления товаров, движения на списание не выполняются – не обеспечивается условие выведения ресурсов регистра накопления в ноль;
5. Документы также не включены ни в одну подсистему;
6. В конфигурации вообще отсутсвуют подсистемы;
7. Не включены проверки заполнения основных реквизитов документов;
8. Можно включить автоматическое заполнение незаполненных значений значениями по-умолчанию;
9. Перед записью движений необходимо вызвать Движения.ТоварыНаСкладе.Записывать = Истина;
10. В обработке проведения документа продажи не указан момент получения остатка (должент быть момент времени документа, а фактически берётся текущая дата);
11. В обработке проведения документа продажи в запросе по фактическим остаткам не учитываются серии;
12. Опечатка в сообщении пользователю: “Недостаточно товава” :)
13. Также в запросе необходимо делать проверку на ЕСТЬNULL, чтобы в проверках результата запроса избежать исключительной ситуации;
14. В документе продажи в табличной части для Серии не указаны параметры выбора значения (отбор по владельцу Товар)
Что нового Вы узнали из базового курса по программированию?
а самом деле очень много. Очень полезны были ситуации, когда казалось бы я что-то делаю через костыли, но когда вы приводили подобное решение, это успокаивало. Очень пригодилось описание некоторых новых настроек объектов. Много всего очень полезного, всё и не перечислить сейчас, потому что перечислять можно всю программу курса. Главное – это постоянное держание в тонусе, интересные ДЗ, над которыми интересно работать и интересные сессии мастер-группы, когда появляются идеи, как можно применить только что увиденное.
• От каких заблуждений избавились?
Скорее даже не так. Почему-то хочется сказать, что все ошибаются и на каждую задачу можно придумать много решений. Почему-то об этом подумалось, когда увидел этот вопрос :)
• Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
вам удалось применить новые навыки (какие результаты были достигнуты);
Естественное, когда решая реальную задачу вспоминается что-то, что уже видел, например в Вашем курсе, то скорость решения этой задачи возрастает.
• Насколько удобен, оказался формат обучения в сравнении с очным форматом?
Есть и плюсы и минусы. При очном формате хочешь или не хочешь, но всё твоё внимание сосредоточенно на обучении. Ваш формат очень удобен тем, что можно выбирать удобное дял себя время, но минус в том, что постоянно есть что-то, оказывается важнее, срочнее и т.д. Хотя очень хочется позаниматься. Курс очень хороший, честное слово – когда смотрю Ваши видеозаписи или читаю предложенный материал просто отдыхаю душой, ещё и полезных знаний прибавляется. Спасибо!
Ещё хочу извиниться за пассивное участие – в то время, когда курс уже начался произошли кадровые перестановки на работе, в связи с чем сфера решаемых задач несколько изменилась и количество задач резко возросло. Но материалы всё равно считаю очень полезными и ещё не раз буду их пересматривать и использовать по назначению. Тем более, что с 13 числа получилось организовать себе неделю отпуска :)
Кстати, куда загрузить фотографии? У меня есть кадры с так называемого дня 1С Карьеры от ноября прошлого года. Там я как раз презентовал новую платформу студентам старших курсов IT и финансовых специальностей в одном из ВУЗов нашего города. Такая презентация засчитается.
>2. РегистрНакопления.ТоварыНаСкладе – включить индексирование;
Для какой цели?
>13. Также в запросе необходимо делать проверку на ЕСТЬNULL
Есть еще ряд претензий к запросу.
По шагу 1 ставим зачет.
Шаг 3. Спасибо за ответы :)
>Там я как раз презентовал новую платформу студентам старших курсов IT и финансовых специальностей в одном из ВУЗов нашего города.
В виде исключения примем этот отчет :)
Спасибо :)
Индексирование по товарам я бы включил для уменьшения риска блокировок и ускорения выполнения запросов. Т.к. назначение этого регистра подразумевает его интенсивное использование.
Неназванные недочёты в запросе уже озвучили коллеги, теперь уже не вижу смысла переписывать это. Но кое-что действительно не заметил.
А у нас автоматически строится кластерный индекс по всем первым измерениям. Так что это действие лишнее.
1. Поле «Номер серии»: в справочнике «Серии» заходим в стандартные реквизиты и для поля код ставим в проверке заполнения «Выдавать ошибку»
2. Документ «Покупка товаров» реквизит ТЧ «Товары» – «Количество» имеет тип «Строка», соотв. меянем на «Число» 15.3
3. В форме документа «Покупка товаров» в процедуре «Заполнить Клиента» идет обращение к типу «СправочникМенеджер», который не доступен для тонкого клиента – создаем функцию на сервере без контекста которая возвращает значение клиента
4. В модуле проведения документа «Покупка товаров» движения не записываются в регистр, вставляем строку «Движения.ТоварыНаСкладе.Записывать = Истина;»
5. В форме документа «Покупка товаров» есть незадействованная команда «Заполнить Товары», добавляем кнопку на форму
6. При определении типа в процедуре «ЗаполнитьТовары» вместо «Документ» указываем «ДокументСсылка»
7. Меняем директиву компиляции в процедуре «ЗаполнитьТоварыНаСервере», ставим «НаСервере»
8. В процедуре «ЗаполнитьТоварыНаСервере» убираем лишний параметр «Объект.Ссылка», в теле процедуры меняем код на: «Объект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());»
9. Документ «Продажа товаров» не делает движений, ставим галку на закладке «Движения»
10. В ТЧ документа «Продажа товаров» реквизит «Серия» не привязан к владельцу, ставим отбор по товару
11. В форме документа вызов процедуры общего модуля, который доступен только на сервере (нет вызова сервера с клиента), ставим галку «Вызов сервера»
12. В общем модуле использована функция «Предупреждение», которая не доступна на сервере, используем метод «Сообщить»
13. При проверке корректности заполнения ТЧ в документе «Продажа товаров» в общий модуль передается не записанный документ, записываем документ
14. Неправильно организовано списание товара и контроль остатков, меняем обработку проведения документа, сначала записываем движения, а потом проверяем есть ли отрицательные остатки
15. Не ведется учет списания по себестоимости, в обработке проведения в запросе определяем себестоимость товаров, которую подставляем вместо суммы и потом записываем движения по регистру
16. В регистре «Товары на складе» ресурс «Количество» имеет 2, а не 3 знака после запятой
> сначала записываем движения, а потом проверяем есть ли отрицательные остатки
Не получится здесь, ведь нужно рассчитать себестоимость.
По шагу 1 – зачет.
Андрей, по остальным частям финального ДЗ не вижу информации
Первая часть ДЗ
1. В справочнике Серии для поля “Код” не выставлено свойство “Проверка заполнения” в значение “Выдавать ошибку”
2. Для работы приложения в режиме Толстого клиента (обычное приложение) необходимо для всех объектов создать обычную форму и назначить ее в качестве дополнительной.
Для документа “Покупка товаров”:
3. В процедуре ОбработкаПроведения нет принудительной записи в РН или не установлен флаг Записывать в значение “Истина”
4. Исходя из требований к устойчивости, клиента по умолчанию необходимо брать из константы, а не из справочника
5. В процедуре ОбработкаПроведения нет группировки по дублям строк ТЧ. Для устранения проблемы необходимо выбирать данные запросом с группировкой по товару и серии, суммируемые – количество и сумма.
6. В процедуре модуля формы “Заполнить клиента” заполнение происходит в клиентской процедуре. Необходимо это делать на сервере (для работы в тонком клиенте)
7. Не отмечен РН “Товары на складах” в закладке “Движения”
8. Нет кнопки “ЗаполнитьТовары” на форме.
9. При использовании функции ВвестиЗначение(…) необходимо вставить условный оператор Если…Тогда…КонецЕсли;
10.Эту процедуру лучше переписать так:
&НаСервере
Процедура ЗаполнитьТоварыНаСервере(ДокументОснование)
ТекущийДокумент = РеквизитФормыВЗначение(“Объект”);
ТекущийДокумент.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
ЗначениеВРеквизитФормы(ТекущийДокумент,”Объект”);
КонецПроцедуры // ЗаполнитьТоварыНаСервере()
11.В процедуре модуля формы “ЗаполнитьТоварыНаСервере” для загрузки ТЧ необходимо прописать: Объект.Товары.Загрузить(ДокументОснование.Товары.ВЫГРУЗИТЬ())…ну и неплохо было бы обновить форму созданного документа.
Для документа “Продажа товаров”:
12. В процедуре “ОбработкаПроведения” в существующем запросе необходимо делать Левое соединение к ВТ таблице РН
13. В процедуре “ОбработкаПроведения” в существующем запросе необходимо сделать проверки полей “КолОст” и “СумОст” на значения NULL
14.В процедуре “ОбработкаПроведения” в существующем запросе во вложенном запросе в параметрах ВТ необходимо использовать ключевое слово Различные.
15.В процедуре “ОбработкаПроведения” в существующем запросе необходимо указать, что данные берутся из определенного документа
16.В процедуре “ОбработкаПроведения” при выводе сообщения о недостатке товара необходимо установить параметр процедуры Отказ в значение “Истина”. Также необходимо сделать проверку: “Если Отказ Тогда Продолжить КонецЕсли”;
17.В процедуре “ОбработкаПроведения” необходимо прописать условие так: Пока ВыборкаСерии.Следующий() И ОсталосьСписать>0…
18.В процедуре “ОбработкаПроведения” при определении себестоимости необходимо добавить условие: ?(ВыборкаСерии.КолОст=ОсталосьСписать,ВыборкаСерии.СумОст,ВыборкаСерии.СумОст/ВыборкаСерии.КолОст*Запись.Количество)
19.В модуле формы в клиентской процедуре “ПроверкаДокумента” производится вызов процедуры из общего модуля. Для корректного вызова данной процедуры необходимо установить свойства общего модуля: Сервер, Вызов сервера. Либо создать серверную процедуру в модуле объекта из которой уже вызывать процедуру из общего модуля
20.В процедуре общего модуля нельзя вызывать процедуры, работающие с формами (“Предупреждение”). Для исправления данной ошибки необходимо воспользоваться классом “СообщениеПользователю”
Вторая часть ДЗ:
http://chistov.spb.ru/forum/33-1097-1#11252
Третья часть ДЗ:
1. Принципы БУ и периодических расчетов
2. Не было заблуждений
3. Пока не работаю
4. Все было новое и можно сказать неожиданное =)
5. Очно не обучался, сказать не могу
По всем пунктам согласен.
Финальное ДЗ – зачет.
Алексей, вы финалист. Поздравляю!
Задание в разработанной конфигурациии Программистом М.Н. самому решить не удалось.
Есть ли у меня возможность посмотреть и послушать, как решаются проблемы и задачи заложенные в функциональности прикладного решения этого ДЗ? Это же всё таки пока обучение.
В реальной работе или на экзамене, пусть через некоторое время, это будет нужно, как особая “грабля”!
Да, конечно.
Сейчас можете ознакомиться с решениями других участников.
3. ВОПРОСЫ ПО КУРСУ (что не успел до полуночи)
[4]
Что до вечного спора – очно или заочно. Это как сравнивать парусную регату группы людей с путешествием той же группы на одном корабле. В первом случае определены только точки старта и финиша и ты сам хозяин своего паруса. Во втором – все одновременно выполняют одни и те же действия: спят, едят, развлекаются. В первом ты волен сойти с дистанции в первом же порту, во втором – тебя обязательно доставят в пункт назначения.
Пройденный курс собственно и заочным-то не был: всегда была помощь и поддержка преподавателя, обучающая площадка работала круглосуточно. Хочешь – учись ночью, хочешь – днем. Хочешь – бери ноутбук на пляж и учись на берегу моря… Правда, можно и вообще ничего не делать, но тут уже вопрос самодисциплины. Сложить парус, пойти ко дну – разве за этим выходил из порта?
Формат обучения пройденного курса является самым оптимальным, которые я встречал. Ни один очный курс не дал мне столько информации, не длился столько времени, да и не стоил таких денег в пересчете на время! Если смотреть на проект этого курса глазами Клиента (а все мы такие и были в этом обучении), то треугольник время/деньги/объем получился золотым!
Огромное спасибо вам, Евгений и Фарит! Так держать!
Спасибо, Александр!
Поздравляю вас с успешным окончанием базового курса и зачислением в команду финалистов :)
3. ВОПРОСЫ ПО КУРСУ
[1]
Если перечислить ЧТО ЖЕ ИМЕННО нового я узнал из базового курса, то для перечисления не хватит ни объемов стандартного комментария, ни времени. Не скажу, что моя подготовка перед курсом была «новичковая» – многолетний опыт работы в программировании, базах данных, 1С как 7-й, так и 8-й версии сослужил хорошую службу при прохождении курса. Однако даже прослушивая нулевой и первый блоки находил для себя особенности системы, которых не знал, которые становились новыми знаниями. Вместе с тем курс «разложил все по полочкам». Новые знания вместе с уже существующими, подкрепленные практикой решения интересных ДЗ, уложились в голове в стройную схему, которую уже не забудешь, как студент после сдачи экзамена.
На мой взгляд, курс чудесным образом решил обе задачи: новичкам дал начальные знания и навыки решения прикладных задач средствами 1С, опытным программистам показал новые фишки версии 8.2 и ее отличия от предшественницы а также дал уникальную информацию сессий МГ, особенно тематических. А поначалу курса опасения вызывало именно возможное наличие в группе участников уровня «а что такое 1С» (конечно же, немного утрирую)
[2]
Главное заблуждение, которое было перед началом курса – это мысли от «8.2 – слегка приукрашенная 8.1», до «8.2 – совершенно другая система, зверь неведомый». Истина оказалась где-то посередине :) Ну и конечно же вечное человеческое «я ее изучу, эту 8.2, может быть завтра». Последнее конечно же не заблуждение а банальная лень, но в результате покупки и прохождения курса от этого тоже избавился. Продвинутый курс, я уверен, теперь пойдет намного легче.
[3.1]
На практике с 1С работаю давно. Вот только так получилось, что это лето выдалось почти свободным (самозанятость – весьма специфичная штука) и я не преминул возможностью провести его вдали от работы, учебы и других вещей, занимающих ум. Думаю, по числу выполненных ДЗ и интенсивности и периодичности комментариев Вам это точно было заметно :) Поэтому новые знания и навыки этого курса применить на практике пока не было возможности. Но из опыта прошлого курса («5 шагов к расчету себестоимости», ведь Вы с Фаритом – одна команда) вынес главное. Полученный от курса результат – это не просто успешные внедрения, не полученные знания и навыки! Результат – это удивленные глаза Клиента и вопрос: «А откуда Вы все это знаете?» А еще уважение. Когда Александр, а не программист 1С.
[3.2]
Нельзя умолчать и о неожиданном. Неожиданно приятном. Тема «Монетизация» дала толчок к переосмыслению собственной «самозанятости». Во-первых, оказалось все не так плохо: интуитивно выбранный ранее курс оказался правильным, вернее, созвучным с Вашими, Фарит, утверждениями и мыслями. Во-вторых теперь я точно знаю, что есть люди, которые тоже не могут работать вполсилы, для галочки. Я до сих пор не могу смириться с утверждением руководителя проектов одной известной украинской софтверной компании, что стремиться делать классно – глупо, что себестоимость таких работ будет высока (много не заработаешь), что большинство делает «средне» и зарабатывает. Спасибо за этот бонус вне регламента курса.
> периодичности комментариев Вам это точно было заметно :)
Это точно =)
>Когда Александр, а не программист 1С.
Отлично!
Спасибо за развернутые ответы, Александр!
По финальному ДЗ – зачет.
1. Практическое задание:
Финальное ДЗ
Желание ГБ – дело святое.
Справочник «Серии» > Данные > Стандартные реквизиты > Код > Проверка заполнения > «Выдавать ошибку».
Идем дальше:
1. Регистр накопления «Товары на складе» > Регистраторы > +Продажа товаров
2. Документ «Покупка товаров» > «ОбработкаПроведения» не записывает движения в регистр при проведении документа > в начале процедуры добавить строку «Движения.ТоварыНаСкладе.Записывать = Истина»
3. Документ «Покупка товаров» > «ЗаполнитьКлиента» вместо «Справочники.Клиенты.ОсновнойПокупатель» пишем «ПредопределенноеЗначение(“Справочник.Клиенты.ОсновнойПокупатель”)»
4. Общий модуль «ПроверкаДокументовСервер» – установить флаг «Вызов сервера»
5. Общий модуль «ПроверкаДокументовСервер» > «ПроверитьДокумент»
a. заменяем «Предупреждение» на «Сообщение»: вместо « Предупреждение(“Ошибка в строке № “+Выборка.НомерСтроки+” количество не может быть отрицательным!”, 5)»
пишем «
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Ошибка в строке № “+Выборка.НомерСтроки+” количество не может быть отрицательным!”;
Сообщение.Сообщить();»
b. однако существенный недостаток этой процедуры проверки в том, что она работает только с записанным документом т.к. читает данные из базы. Заметно нужнее и удобнее проверять документ ДО записи.
Убираю вызов «ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка)» и заменяю его на вызов своей функции. Помещаю ее в модуле формы. И если при проверке ошибок не обнаружено – неплохо бы сообщить об этом пользователю. Получаю:
&НаКлиенте
Процедура ПроверкаДокумента(Команда)
ТЧ = Объект.Товары;
Если Не ПроверкаСтрок(ТЧ) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = “Документ заполнен правильно”;
Сообщение.Сообщить();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПроверкаСтрок(ТЧ)
Для Каждого СтрокаТЧ Из ТЧ Цикл
Если СтрокаТЧ.Количество Данные > Товары > Серия > Связи параметров выбора пишем «Отбор.Владелец(Товары.Товар)»
7. Документ «Продажа товаров». Документ записывается и проводится и с отрицательным количеством. Чтобы этого не происходило – вызываю проверку строк в обработчике «Перед записью»:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ТЧ = Объект.Товары;
Если ПроверкаСтроки(ТЧ) Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Теперь при отрицательном количестве документ не записывается (ну, и не проводится). Что есть правильно.
8. При проведении документа «Продажа товаров» в случае недостаточности товара на складе выдается сообщение, но документ проводится. Исправляю: в процедуре «ОбработкаПроведения» в блок «Если Недостача > 0…» после вывода сообщения добавляю «Отказ = Истина; Возврат;»
9. Процедура проведения документа «Продажа товаров».
a. В запрос добавляю условие «ПродажаТоваровТовары.Ссылка = &Ссылка»
b. В запрос «Итоги» – группировки по товар, серия
c. В запрос «Итоги» – итоги по КолДок, КолОст, СумОст
d. В цикле обхода выборки серии проверка а нужно ли еще что-то списывать:
«Если ОсталосьСписать=0 Тогда Прервать; КонецЕсли;»
10. В документе «Покупка товаров» создан код для загрузки товаров из другого документа этого типа. Чтобы он заработал:
a. В «Команды»> «Команды формы» делаю команду «Заполнить товары». Действие назначить «ЗаполнитьТовары»
b. В командной панели формы добавляю кнопку и назначаю ей созданную команду
c. Проверку заполненности основания переделываю. Вместо
«Если НЕ Основание.Пустая() Тогда» пишу
«Если Основание Неопределено Тогда».
Иначе ошибка если при выборе основания нажать «Esc»
d. Процедуру «ЗаполнитьТоварыНаСервере» компилирую с директивой «&НаСервере». Соответственно:
i. Передаю только один параметр «Основание»
e. Табличную часть заполняю ч/з промежуточную таблицу значений.
Код:
Вызов: «ЗаполнитьТоварыНаСервере(Основание)»
Процедура:
&НаСервере
Процедура ЗаполнитьТоварыНаСервере(ДокументОснование)
тзТовары = ДокументОснование.Товары.Выгрузить();
Объект.Товары.Загрузить(тзТовары);
КонецПроцедуры // ЗаполнитьТоварыНаСервере()
11. И мысль о том, что заполнение ТЧ по документу прихода логичнее было бы сделать в документе расхода. Для этого необходимо процедуры «ЗаполнитьТовары» и «ЗаполнитьТоварыНаСервере» перенести (скопировать) из модуля формы документа «Покупка товаров» в модуль формы документа «Продажа товаров» и выполнить для этого документа подпункты a,b пункта 9.
Вот, где-то так. Больше не увидел.
3. От курса хотел немного:
– упорядочить и систематизировать знания по платформе 8.х;
– разобраться что нового в 8.2.
Курс в этом плане вполне себя оправдал несмотря на то, что посмотрел еще далеко не все что хотелось бы (времени сильно мало).
Плюс к тому “мелкая нарезка” видео оказалась очень полезной как справочник.
Заблуждения, по-моему все давно уже ушли…
В практике применял именно как справочное пособие.
И в этом плане минусы видео в затратах времени на его просмотр. Поскольку «по диагонали» его не пробежишь (подробно не нужно – а никуда не денешься). Вот тут было бы очень классно иметь конспект видеоуроков. Не просто голос набитый в текст, а именно краткий конспект. С тезисами и примерами кода. Чтобы можно было «пробежать» его глазами и все понять или пойти в видео если мало.С очным форматом сравнить не могу поскольку на очном обучении не бывал.
>&НаКлиенте
>Функция ПроверкаСтрок(ТЧ)
>Для Каждого СтрокаТЧ Из ТЧ Цикл
Такой цикл делать опасно, может создавать излишний трафик.
Подробно об этом – в продвинутом.
>c. В запрос «Итоги» – итоги по КолДок, КолОст, СумОст
Итоги здесь вообще ни к чему.
Шаг 1. – Зачет.
Шаг 3. Принято, спасибо.
Не вижу информации по шагу 2 и выполнении ДЗ курса.
Ну, чего нет – того нет.
ДЗ делал далеко не все. Системно курс пока первый блок посмотрел не весь. Времени еще слишком мало. Я понимаю, что прерваться и заточить топор…
Уже писал, что использую время от времени как справочник (или, если угодно, подсказку). Когда втыкаюсь во что-то что совсем непонятно как сделать. Нахожу подходящий раздел. По заголовкам выбираю урок… Хватает 1-3 чтобы родилась идея “как это сделать”.
Вооот.
Главное, что есть практическое применение материалов.
Удачи, Александр!
Шаг 1. Ниже привожу обнаруженные мною ошибки и неточности в предоставленной для анализа конфигурации:
1.Документ “ПокупкаТоваров” не будет производить записей в регистре “ТоварыНаСкладе”, поскольку для документа
“ПокупкаТоваров” значение свойства “ЗаписьДвиженийПриПроведении” установлено в значение
“ЗаписыватьВыбранные”, а установка значения свойства “Записывать” набора записей регистра “ТоварыНаСкладе”
в обработке проведения документа не происходит.
2.Модуль формы “ФормаДокумента” документа “ПокупкаТоваров” процедура “ЗаполнитьКлиента”. Прикладной объект
“СправочникМенеджеры” недоступен на тонком клиенте. В тонком клиенте Обрашение к данному объекту
возможно только в контексте серверной процедуры.
3.Форма “ФормаДокумента” команда “ЗаполнитьТовары” не связана ни с одним из элементов управления формы. Механизм
вызова процедура-обработчика данной команды отсутствует. Необходимо создать кнопку на форме и связать её
с данной командой.
3.Модуль формы “ФормаДокумента” документа “ПокупкаТоваров” процедура “ЗаполнитьТовары”. В параметр “Тип” метода
“ВвестиЗначение” передается некорректный тип. Во встроенную функцию языка “Тип” передается параметр
“Документ.ПокупкаТоваров”; такого типа не существует в системе. Следует указывать “ДокументСсылка.ПокупкаТоваров”.
4.Модуль формы “ФормаДокумента” документа “ПокупкаТоваров” процедура “ЗаполнитьТовары”. При вызове процедуры
этого же модуля “ЗаполнитьТоварыНаСервере” в первый параметр передается ссылка на объект, редактируемый
в форме. Для незаписанного документа, которым будет являться каждый новый документ, данное обращение к
свойству “Ссылка” будет возвращать значение пустой ссылки, что впоследствии будет вызывать ошибку в
вызываемой процедуре (“ТекущийДокумент.ПолучитьОбъект()”). Для устранения данной проблемы можно было бы
использовать предварительную программную запись редактируемого документа, но лучшим решением считаю
оформление процедуры “ЗаполнитьТоварыНаСервере” как контекстной, с помощью директивы “&НаСервере”. При
этом сам реквизит формы “Объект” будет доступен в контексте данной процедуры, что исключит необходимость
его считывания из базы данных (“Объект = ТекущийДокумент.ПолучитьОбъект();”).
5.Модуль формы “ФормаДокумента” документа “ПокупкаТоваров” процедура “ЗаполнитьТоварыНаСервере”. В параметр
метода “Загрузить” табличной части документа (“Объект.Товары”) следует передавать параметр типа
“ТаблицаЗначений”. В существующем же коде передается объект типа “ТабличнаяЧасть” (“ДокументОснование.Товары”),
что будет приводить к ошибке несоответсвия типов параметров. Для решения данной проблемы следует вызывать
метод “Выгрузить” табличной части, который и будет возвращать значение необходимого типа – “ТаблицаЗначений”
(“ДокументОснование.Товары.Выгрузить()”).
6.Модуль формы “ФормаДокумента” документа “ПродажаТоваров”. В процедуре “ПроверкаДокумента” осуществляется вызов
процедуры “ПроверитьДокумент” общего модуля “ПроверкаДокументовСервер”. Данный модуль является серверным
и у него не установлено свойство “Клиент (управляемое приложение)”. Такой вызов процедуры будет корректен
только в толстом клиенте. В тонком же клиенте будет генерироваться ошибка. Для решения проблемы
следует установить свйоство “Клиент (управляемое приложение)”.
7.Модуль формы “ФормаДокумента” документа “ПродажаТоваров”. При вызове процедуры “ПроверитьДокумент” для незаписанного
документа (нового), в качесте параметра будет передаваться значение пустой ссылки документа, в результате чего
вызываемая процедура не будет осуществлять контроль неотрицательного количества в строке документа. Для решения
данной проблемы можно порекомендовать производить предварительную программную запись документа или же контроль
выставить свойство “Неотрицательное” в настройках рекизита “Количество” табличной части “Товары”.
8.Документ “ПродажаТоваров” реквизит “Серия” табличной части “Товары”. С целью оптимизации заполнения данного реквизита
следует установить его свойство “СвязиПараметровВыбора” в значение отбора по элементу владельцу “Товар”.
9.В свойствах “Движения” документа “ПродажаТоваров” следует установить, что данный документ может выступать регистратором
для регистра накопления “ТоварыНаСкладе”. В противном случае будет возникать ошибка, поскольку в процедуре
“ОбработкаПроведения” этого документа описан алгоритм записи движений в данный регистр, где реистраторм выступает
данный документ.
10.В обработке проведения документа “ПродажаТоапров” нужно учесть тот факт, что документ может проводиться неоперативно.
В этом случае итоги регистра нужно получать на момент времени документа (укзать в первом параметере виртуальной
таблицы “Остатки”).
11.Необходимо установить для стандартного реквизита “Код” справочника “Серии” свойство “ПроверкаЗаполнения” в значение
“Выдавать ошибку”.
Шаг 2. На данный момент не успеваю записать разбор разбор проблемного вопроса с форума. В случае предоставления отсрочки
выполнения данного пункта до 13.09.2010, обязуюсь выполнить.
>6.Модуль формы «ФормаДокумента» документа «ПродажаТоваров».
Правильнее поставить вызов сервера, ведь в этой процедуре идет обращение к БД и на тонком клиенте она никак не отработает…
По п. 10 там еще с самим запросом неладно..
Шаг 1. Ставим зачет, с натяжкой..
Шаг1
Ошибки:
1. в модуле документа «ПокупкаТоваров» не хватает строки
Движения.ТоварыНаСкладе.Записывать = Истина;
2. в табличной части документа «ПродажаТоваров» для колонки серия надо установить в связи параметров выбора: «Отбор.Владелец[Товары.Товар]
3. документ «ПродажаТоваров» не является регистратором регистра «ТоварыНаСкладе»
4. табличную часть документа необходимо группировать, чтобы не было одинаковых строк
5. в параметрах виртуальной таблицы «Товары.НаСкладе.Остатки» необходимо указывать МоментВремени.
6.Внутреннее соединение таблиц приводит к потере данных, необходимо использовать Левое соединение
и функцию ЕСТЬNULL()
7. необходимо включать блокировку,
Движения.ТоварыНаСкладе.БлокироватьДляИзменения=Истина
8.при проведении проведенного документа запрос выдаст остатки с учетом его движений,
необходимо их очищать,
Движения.ТоварыНаСкладе.Очистить();
Движения.ТоварыНаСкладе.Записать();
9.запрос обращается к табличной части документа 2 раза, необходимо поместить эти данные во временную таблицу и затем использовать ее данные
10.в условиях виртуальной таблицы надо указывать кроме товара и серию товара
11.сообщение об ошибке не привязано к полю документа
12.так как учет товаров и по стоимости, и по количеству ведется в разрезе товар+серия,
нет смысла в двухуровневой выборке, сначала по товару, а потом по серии
13.чтобы не было проблем с округлением необходимо, чтобы количество из документа в формуле расчета суммы было первым.
14.если товара не хватает, то нет смысла проводить документ, необходимо присвоить Отказ = Истина и пропускать запись движений
15.в документе «ПокупкаТоваров» команда ЗаполнитьКлиента в тонком клиенте не работает,
так как тип Справочники.Менеджер на клиенте недоступен, необходимо перенести код в серверную процедуру.
16.в документе «ПродажаТоваров» команда «ПроверкаДокумента» в тонком клиенте не работает, необходимо перенести вызов процедуры общего модуля в процедуру с директивой
&НаСервереБезКонтекста,
17.список строк, заполненных неправильно, надо выводить не в процедуре общего модуля, а через параметры передавать в клиентскую процедуру и выводить там.
18. в документе «ПокупкаТоваров» команда «ЗаполнитьТовары» не выведена на форму.
19.в документе «ПокупкаТоваров» в процедуре «ЗаполнитьТовары»
необходимо в параметре функции выбратьзначение надо указывать Тип(“ДокументСсылка.ПокупкаТоваров”), а не Тип(“Документ.ПокупкаТоваров”)
и учитывать возможность отказа от выбора.
20.в процедуре ЗаполнитьТоварыНаСервере
строка Объект = ТекущийДокумент.ПолучитьОбъект(); не будет работать для новых документов, так как их еще нет в базе данных, поэтому лучше убрать эту строку и заменить директиву &НаСервереБезКонтекста на директиву &НаСервере, также надо заменить
Объект.Товары.Загрузить(ДокументОснование.Товары) на
Объект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
Было
&НаСервереБезКонтекста
Процедура ЗаполнитьТоварыНаСервере(ТекущийДокумент, ДокументОснование)
Объект = ТекущийДокумент.ПолучитьОбъект();
Объект.Товары.Загрузить(ДокументОснование.Товары);
КонецПроцедуры // ЗаполнитьТоварыНаСервере()
Стало
&НаСервере
Процедура ЗаполнитьТоварыНаСервере(ДокументОснование)
Объект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
КонецПроцедуры //
Просьба Виолы Григорьевны:
Чтобы сделать поле НомерСерии обязательным для заполнения, необходимо, чтобы в свойстве «Проверка заполнения» стандартного реквизита код стояло «Выдавать ошибку»
Шаг 2.
Ответил на вопрос на форуме, правда не сложный
http://www.1c-pro.ru/index.php?showtopic=26232
Шаг3.
При просмотре материалов курса обнаружил, что не использовал некоторые возможности конфигуратора. По базовому курсу ознакомился с новыми возможностями версии 1с 8.2, также прояснились некоторые неясные моменты по блоку «расчеты».
Не ожидал таких интересных бонусных материалов.
Заочный формат обучения гораздо удобнее очного, так как если что-то непонятно, можно остановиться и разобраться. Информация из видеоуроков усваивается гораздо лучше, чем из книг.
>5. в параметрах виртуальной таблицы «Товары.НаСкладе.Остатки» необходимо указывать МоментВремени.
Или неопределено. Верно?
>7. необходимо включать блокировку,
>Движения.ТоварыНаСкладе.БлокироватьДляИзменения=Истина
Печально, но эта строка не поможет. Подробно – в курсе продвинутом.
>16.в документе «ПродажаТоваров» команда «ПроверкаДокумента» в тонком клиенте не работает, необходимо перенести вызов процедуры общего модуля в процедуру с директивой
Есть более простое решение :)
По шагу 1 – зачет.
Шаг 2. Принимается.
Шаг 3. Спасибо за ответы.
Влад, не вижу информации по домашним заданиям базового курса. Отпишитесь как по ним успехи.
Шаг №1
Как и ранее из-за катастрофической нехватки времени, задания пришлось решать бегло и в самый последний момент, уделяя внимание только основным ошибкам. Но половина задания это же лучше, чем ничего.
1.В обработке проведения документа ПокупкаТоваров отсутствует возможность записи в регистр остатков ТоварыНаСкладе: (Движения.ТоварыНаСкладе.Записывать = Истина);
2.Процедура ЗаполнитьКлиента в модуле формы документа ПокупкаТоваров должна иметь серверный вызов и вызываться с клиента.
3.Документ ПродажаТоваров не выбран регистратором для регистра ТоварыНаСкладе(установить флажок на закладке Движения).
4.В документе ПродажаТоваров в серии(или при подборе серии) не установлены СвязиПараметровВыбора(установить Товар).
5.Общий модуль ПроверкаДокументовСервер не имеет возможности вызова сервера с Тонкого клиента(установить флажок вызов сервера).
6.Функция Предупреждение в процедуре ПроверитьДокумент общего модуля ПроверкаДокументовСервер недопустима на сервере(заменить на Сообщить).
7.В документе ПродажаТоваров кнопка проверки заполнения табличной части делает проверку уже записанного документа, хотя намного удобнее проверять табличную часть еще до записи документа(необходимо изменить процедуру проверки и передавать ТекущиеДанные таблицы).
8.В документе ПродажаТоваров в запросе не указана группировка по товарам и сериям.
9.В документе ПродажаТоваров для правильного формирования запроса на закладке Движения необходимо установить удаление движение – Удалять автоматически.
10.По просьбе уважаемой Виолы Григорьевны в справочнике Серии в стандартных реквизитах для кода («Номер серии») необходимо установить проверку заполнения.
Шаг №2.
К сожалению, «помочь близким» не получится в ближайшее время, хотя информация, которую хотелось бы вынести в общественность – накоплено прилично.
Шаг №3.
1.В 2004 прошел курсы по 7.7, которые помогли окончательно определится с выбором специальности. С 8-кой работаю около 3 лет. За это время, пройдя довольно таки нелегкий путь проб и ошибок, был накоплен, опыт работы на данной платформе. Но постоянное желание расширить свои знания и полностью овладеть всеми возможностями платформы не давало мне покоя)).
Все что узнал нового с базового курса, это в основном касается специфики работы управляемого приложения, всех ее форм, модулей и программных особенностей. Так же стала более понятной работа и назначение некоторых прикладных объектов. Заполнилось много «белых пятен», с которыми иногда приходилось сталкиваться в процессе работы.
2.Пришлось кардинально пересмотреть работу с некоторыми объектами(регистры сведений, бухгалтерии) в плане упрощения кода. Стала более понятной работа с запросами в СКД.
3. Т. к. управляемое приложение только начинает входить в обиход, и все клиенты смотрят на него с опаской, то о практике применения говорить еще рано. Есть только разработка небольшой конфигурации по приему заявок, которая работает через веб.
4. По формату обучения, слов нет – он супер! Тем более сравнивая с курсами, которые предоставляют партнеры – он в десять раз эффективней. Занимаясь в то время, которое удобно мне без выезда и отрыва от работы, при этом получая в несколько раз больше информации с возможностью повторного прохождения плохо понятных тем – это самая удобная для меня форма обучения.
Шаг 1.
>Но половина задания это же лучше, чем ничего.
Конечно лучше. Ставим с натяжкой зачет.
Шаг 2. Самый простой способ выйти на форумы. Много времени не должно отнять.
Шаг 3. Спасибо за позитивные ответы на вопросы.
Жду информации по шагу 2.
Да форумы и так уже все обойдены сокурсниками)) …а статья будет – есть и тема интересная, есть и материал, только время нужно на верстку и все остальное …а пока внедрение не закончим – никак низзя, второй месяц уже без выходных ..а финал? …ну так главное ж не победа, а участие …за все и так огромное спасибо!
Спасибо, Петр!
1.Отчет по ошибкам в конфигурации
Для работы во всех режимах установить флаг «Использовать управляемые формы обычном приложении».
Для справочников: необходимо создать любую форму, иначе в генерируемых формах нет возможности вносить изменения при запуске в толстом клиенте (обычное приложение)
Общий модуль:
• Предупреждение() – функция для интерактивной работы – возможна только на клиенте. Можно использовать Сообщить()
• У общего модуля «ПроверкаДокументовСервер» не выставлен флаг вызов сервера – обращение в режиме тонкого клиента будет невозможно.
• В процедуре ПроверитьДокумент() до открытия выборки логичнее проверить результат запроса на пустоту.
Документ ПокупкаТоваров
Модуль документа
В ОбработкеПроведения() для набора записей свойство Записывать не установлено в истину.
Модуль формы
• В Процедуре модуля формы ЗаполнитьКлиента() идет обращение к БД, что недопустимо. Получать основного контрагента нужно отдельной функцией с директивой &НаСервереБезКонтекста.
• Процедура ЗаполнитьТовары()-в функции ВвестиЗначение() неправильно задан параметр , должно быть: Тип(“ДокументСсылка.ПокупкаТоваров”)
• Не создана команда для запуска процедуры ЗаполнитьТовары()
• Директива у процедуры ЗаполнитьТоварыНаСервере() должна быть &НаСервере и в качестве параметра нужно передавать только клиентскую переменную Основание.( да и кстати в качестве параметра Объект.Ссылка вообще не передать, т.к. документ м.б.не записан)
• В качестве Параметра у метода загрузить должна передаваться Таблица значений. Т.е. сначала нужно выгрузить ТЧ ДокументаОснования в ТЗ.
• Метод ПолучитьОбъект () не нужен.
Документ ПродажаТоваров
• На закладке движения не выбран регистр ТоварыНаСкладе
• В ТЧ у реквизита серия не заполнено свойство СвязиПараметровВыбора, нужно заполнить аналогично документу Поступление товаров
Модуль формы
• При передаче параметра в процедуру ПроверитьДокумент() Ошибка- Объект.Ссылка ,у нового документа еще нет ссылки.
• Процедура ПроверкаДокумента (): вызывает сомнение необходимость ее существования, проще запретить ввод отрицательных значений на уровне реквизита, чем делать серверный вызов с проверкой.
Модуль Документа
• Перед выполнением запроса необходимо очищать движения документа.
• Не списываются товары в разрезе серий
Запрос
• Параметры виртуальной Таблицы Остатки:
< Не задан период – МоментВремени()
0 и записи просто не будут делаться.)
Доработка Поле НомерСерии : СправочникСерии – стандартные реквизиты – код – свойство «проверка заполнения» устанавливаем в «Выдавать Ошибку»
2. Помощь ближним.
http://www.infostart.ru/public/75329/ .
Ну совсем я не писатель.(((
Нельзя сказать, что эта тема срезанировала, мне как раз показалось, что это просто и понятно и вызывали недоумение комментарии участников, что с этим проблемы. Поэтому решила, что если про это написать понятно и собрать основную информацию вместе, то это будет полезно. Правда не уверена, что получилось)))
3. Вопросы по курсу
Новое – всё что касается 8.2. Сессии Мастер группы. Часть информации в ответах на вопросы
Заблуждений вроде особых не было. Бонус по монетизации помог кое – что переосмыслить, что-то систематизировалось, но над этим еще нужно думать и работать. Вообще большое спасибо за этот материал – «то что доктор прописал». Как будто Вы мои мысли прочитали и решили помочь. Очень хочется продолжения.
С 8 пока активно не работаю, только консультации по пользовательскому режиму. Пока роль «Уборщицы» и нет «Клиента». Неожиданностей не было.
Формат курсов просто отличный. Совершено неизвестно, когда бы выбралась на очные курсы. Кроме того остаются видео уроки и к ним всегда можно вернуться – это большое преимущество. Со временем то, что не используется постоянно – забывается, а так всегда можно в памяти освежить. Правда для меня темп был слишком быстрый, опыта программирования в 8 почти нет, поэтому времени на задания и осмысление уходит больше, спасибо за перерывы, а то бы точно отстала.
По шагу 1 со всеми пунктами согласен, зачет.
Шаг 2. Неплохо для начала :)
Шаг 3. Спасибо за обратную связь.
Подводим итоги.
Торжественно зачисляю вас в ряды финалистов базового курса и поздравляю! :)
1.
1. Заполняется клиент на клиенте. Идет обращение к справочникам. На тонком клиенте не получится.
2. Запись документа покупка товаров по регистру товары не происходит. Не установлено свойство записывать.
3. Документ «Продажа товаров» процедура ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка); должна вызываться в серверной процедуре, иначе на тонком клиенте будет ошибка.
4. В процедуре ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка); используется функция «Предупреждение». Надо использовать «Сообщить».
5. В документе «Покупка товаров» не установлена связь по владельцу для серии.
6. В документе «Продажа товаров» не установлена связь по владельцу для серии.
7. В процедуре проверки документа есть вызов: ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка); лучше использовать ПроверкаДокументовСервер.ПроверитьДокумент(Объект), а перед этим сделать вопрос о записи документа в базу иначе новые документы не будут проверяться.
8. В документе «Продажа товаров» не отмечено на вкладке «Движения», что документ делает движения по регистру «Товары на складе»
9. Документ «Продажа товаров» в запросе надо сделать условие на документ ДокументСсылка = &Ссылка
10. Документ «Продажа товаров» в запросе надо сделать связь «Левое внешнее соединение»: К выборке товаров присоединяется таблица остатков. Остатки надо преобразовать по ЕстьNull.
11. Документ «Продажа товаров» в запросе надо сделать указать параметр «МоментВремени», иначе документы прошлым периодом будут проводиться в общем случае неправильно.
12. Документ «Продажа товаров» в запросе для выборки того, что есть в документе надо использовать вложенный запрос с группировкой по номенклатуре и серии, а в итогах сумма и номер строки (минимум или максимум)
13. Чтобы документ «Продажа товаров» не проводился при нехватке товаров, надо ставить отказ = Истина;
14. Неправильно указаны параметры для вывода сообщения о нехватке товара. Нет привязки к полю количества.
15. В обработке проведения должно быть
Движения.ТоварыНаСкладе.Очистить();
Движения.ТоварыНаСкладе.Записать();
, чтобы при повторном проведении не учитывалось что было раньше проведено по документу.
16. Документ «Продажи товаров». Запрос в целом построен неправильно. Например, если будет одна номенклатура с двумя сериями в одном документе – будет полная лажа. Решение, не использовать итоги, а использовать группировку.
17. Соответственно, код в процедуре обработки проведения документа «Продажа товаров» неправильный.
18. Не выведена на форму кнопка «Заполнить товары» в документе «Покупка товаров»
19. Вместо Тип(“Документ.ПокупкаТоваров”)) нужно Тип(“ДокументСсылка.ПокупкаТоваров”))
20 – 23 При заполнении товаров в модуле формы документа «Покупка товаров сразу несколько ошибок». Например: Вместо ЗаполнитьТоварыНаСервере(Объект.Ссылка, Основание); надо ЗаполнитьТоварыНаСервере(Основание);
Вместо &НаСервереБезКонтекста
Процедура ЗаполнитьТоварыНаСервере(ТекущийДокумент, ДокументОснование) надо
&НаСервере
Процедура ЗаполнитьТоварыНаСервере( ДокументОснование)
Вместо Объект = ТекущийДокумент.ПолучитьОбъект(); надо Объект1 = ДанныеФормыВЗначение(Объект, Тип(“ДокументОбъект.ПокупкаТоваров”));
Вместо Объект.Товары.Загрузить(ДокументОснование.Товары); надо Объект1.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
2. Сделаю обучение в конторе, где работаю не было времени.
3. Узнал очень много. Бухгалтерия и Расчет заработной платы с точки зрения программирования были для меня – “темный лес”. Сейчас стало понятно. 8.2, управляемый интерфейс.
Избавился от заблуждения, что все очень сложно. И что по утрам сложно вставать в шесть и заниматься.)))
Поднялся общий уровень программирования и стал быстрее принимать решение, например при вводе нового регистра и т. д.
Формат очень удобный. Когда между блоками есть возможность небольшой отдых(типа какого-нибудь бонуса) можно догнать.
П. С. По поводу остальных ДЗ. На данные момент не сделал третье задние по оперативному учета и третье задание по бухгалтерии. На выходных доделаю:)
>5. В документе «Покупка товаров» не установлена связь по владельцу для серии.
На уровне реквизита есть. Вы в форме смотрели?
> а в итогах сумма и номер строки (минимум или максимум)
Я бы вообще убрал итоги.
>20-23
А проще вот так – Объект.Товары.Загрузить(ДокументОснование.Товары.Выгрузить());
По шагу 1 – зачет.
Шаг 2 – можно поотвечать на форумах, например.
Шаг 3. Спасибо за ответы :)
Жду отчета по ДЗ и информацию по шагу 2.
Поскольку так и не понял куда отправлять фотографии, отправил почтой на mg.spec8.ru DOG gmail.com
Сегодня провел семинар (фирма у нас маленькая, собрал почти всех).
Тема самая общая “Что интересного я узнал, пройдя курс обучения по платформе 8.2”
Хочу подчернуть, что мы уже всех своих клиентов перевели на 8.2. Прелестей 8.2 Они пока не почуствовали, но так и сопровождать легче
и двигаться вперед тоже. На Управляемом приложении никто из клиентов пока не работает, но мы уже начали готовить рабочие места.
Т.е. в целом люди (в аудитории) в теме.
Что вызвало наибольший интерес:
1. Взаимный вызов модулей (это пункт 3-28 первого блока)
2. Условное проведение.
3. Работа с РеквизитФормыВЗначение и ЗначениеВРеквизитФормы, и вообще: что мы имеем в управляемой форме на клиенте.
4. Новые обработчики событий.
5. И (что для меня удивительно) организация синтакс-помощника и работа с ним.
Переварив Вашу работу с Синтакс-помощником (Находим класс – смотрим методы/свойства – смотрим где они доступны – смотрим что рядом),
я строил рассказ в том же ключе, методологически. И оказалось, что многие его рассматривали как банальный справочник, что ли.
( вот процедура/функция и вот её параметры) без “осознания” её места в общем контексте.
Фотографии такие – как получились. Дал сотруднику (его в кадре есс-но нет) фотоаппарат, он вначале пощелкал, а дальше слушал. Потом
посмотрел и вижу, что начало снято и все. Но тут как получилось :(
По ДЗ кроме 14 и 15 отчитался. Но с ними и не буду спешить. Я ведь на 4 мес брал курс. Зарплату еще поковыряю.
Жду продолжения (Продвинутый, Администрирование, Управление проектами). Деньги приготовил :)
Еще раз Вам спасибо.
>5. И (что для меня удивительно) организация синтакс-помощника и работа с ним.
И это здорово! Ведь на 90% вопросов ответ найдется в СП.
Фотографии отличные.
По второму шагу – зачет.
Подводим итоги.
Владимир, поздравляю вас с новым статусом “Финалист базового курса”!! :)
Очень рад. Спасибо Вам.
Часть 3.
1. Работа с управляемыми формами, СКД.
2. Избавился от самого главного своего заблуждения – конфигурить на платформе 1С Предприятие 8 сложно. На самом деле – хорошие преподаватели, практика разработки и написания кода и все уже просто и логично.
3. Работаю с платформой 1С Предприятие 8 не очень много. в основном с 7.7. Ближе к окончанию данного курса поймал себя на мысли, что пытаюсь сделать код не “чтобы работало”, а красивым, читаемым. Когда получается – испытываю чувства морального удовлетворения.
4. Формат проведения обучения очень удобен. Был на очных курсах. Пока сидишь, слушаешь преподавателя – все просто и ясно. А через два дня уже половины не можешь вспомнить. В данном курсе если что позабыл, то есть возможность пересмотреть часть занятий, подробнее разобраться с непонятными темами.
За ответы на вопросы вас благодарю.
Жду уточнения по шагу 2.
Шаг 1 Поиск и исправление ошибок в программе.
1.Справочник «Серии»
a.Зачем называть справочник «Серии» если идет речь о «Сертификатах»?
b.Нет контроля уникальности, т.е. можно ввести два одинаковых сертификата по одному и тому же владельцу, что позволяет ввести два сертификата с одинаковыми номерами, считаю, что контроль в пределах подчинения владельцу подойдет.
c.Нет контроля заполнения поля «Номер серии».
2.Справочник «Клиенты»
a.По условию задачи необходимо заполнять контрагента по умолчанию, делать его предопределенным элементом неправильно, лучше ввести константу.
3.Документ «Покупка товаров»
a.ТЧ – Товары, количество – текстовая строка
b.Проведение документа, не делает проводок (добавить св. Записать = истина)
c.Кнопка «Заполнить клиента» заполняет поле по предопределенному элементу справочника, в режиме предприятия работает, а в конфигураторе синтаксис не проходит непонятно.
d.В документе есть команда «Заполнить товары», которая не включена в форму, если ее включить и исправить ряд ошибок по заполнению на основе документа основания можно получить результат, хотя по условию задачи этого нет.
4.Регистр накопления ТоварыНаСкладе – поставить для измерения Товар запрет незаполненных значений
5.Документ «Продажа товаров»
a.На закладке движения не проставлено движение по регистру накопления ТоварыНаСкладе
b.Проведение документа, неправильно построен запрос, не учитываются товары, по которым нет остатка из-за внутреннего соединения и нет группировки по сериям, необходимо еще добавить контроль количества и суммы остатка на NULL, вывести итог по сумме.
c.Проведение документа контроль деления на 0.
d.Кнопка проверки в документе не учитывает отрицательные значения, если документ не записан, т.е. нужно вначале записать документ, а потом делать проверку или проверять что есть на форме. А еще лучше просто сделать реквизит не отрицательным.
e.Форма документа нет привязки серии к товару (владельцу).
6.Для работы программы в «толстом клиенте» необходимо создать интерфейс, для работы пользователей.
Шаг 2
Во время изучения курса активно обсуждал с работниками отдела новые возможности платформы 8.2. Больше всего внимания уделяли принципам разделения выполнения модулей на клиент и сервер. Активно обсуждали шаги по переходу и переводу конфигураций на 8.2. Фотографии правда не делал :-), при следующих обсуждениях это учту.
Шаг 3
При изучении курса узнал много нового, особенно, что касается 8.2, так как до этого 8.2 практически не смотрел. Для себя вынес, что очень многое придется переписывать из того, что писал раньше, чтобы в полной мере использовать возможности новой платформы. Сейчас практически работаю на 8.1 но намного проще стало формировать различные запросы к БД и работа при создании отчетов пошла намного быстрее. Думаю надо срочно одну из баз переводить на 8.2 и закреплять полученные навыки.
По поводу формата курса – считаю, формат удачным, но времени на освоение мне, честно говоря, не хватило (на это правда были личные причины) и часть тем пришлось отложить на потом, особенно освещенные в МГ. Темп был явно высокий. По сравнению с очным форматом мне кажется, что раскрытие тем более полное, да и интересных вопросов заданных слушателями намного больше, пусть даже я на данный момент пока вопросов не задавал, но все равно есть много моментов, которые я бы просто не заметил, да и любую тему можно прослушать не один раз, если что-то не понятно. Отсутствие «живого» общения меня не смущает, тем более с Фаритом пересекался на очных курсах, ну а голос Евгения мне лично понравился.
P.S. по домашним заданиям все сделать не успею, сейчас только начал расчет, но его хочу пройти более подробно.
>в режиме предприятия работает, а в конфигураторе синтаксис не проходит непонятно.
Потому что запускается толстый клиент, а ошибка только в тонком и веб-клиентах будет возникать :)
>6.Для работы программы в «толстом клиенте» необходимо создать интерфейс
Правильнее писать – в обычном приложении.
Шаг 1 – зачет.
Шаг 2 – жаль, что не фото, с натяжкой принимаем.
Спасибо за ответы на вопросы.
>P.S. по домашним заданиям все сделать не успею
Выполненных домашних заданий все же хватит для успешного финала.
С чем я вас и поздравляю, Сергей! =)
2. ПОМОЩЬ БЛИЖНИМ
Ответы на форумах (пользователь gavlexx):
[1]
Отсутствие записей с нулевыми остатками в таблице остатков:
http://www.forum.mista.ru/topic.php?id=503927
[2]
Создание таблицы значений с колонкой-флажком на управляемой форме:
http://www.forum.mista.ru/topic.php?id=503934
[3]
Модифицированность при записи:
http://www.forum.mista.ru/topic.php?id=503942
[4]
Контроль остатков – коллизия при изменении проведенного документа:
http://www.forum.mista.ru/topic.php?id=503779
[5]
Архивирование файловой ИБ методом копирования файла 1Cv8.1CD:
http://www.forum.mista.ru/topic.php?id=504254
Сразу несколько участников нашего курса отписались в теме [4] :))
По второму шагу – однозначно зачет :)
в [5] прямо война…
1.
Документ “Покупка товара”:
Реквизит ТЧ документа Количество — строка 10
Обращение к справочнику в процедуре &НаКлиенте
Объект.Клиент=Справочники.Клиенты.ОсновнойПокупатель
ВвестиЗначение(Основание, “Выберите документ-основание”, Тип(“Документ.ПокупкаТоваров”)); Правильно Тип(“ДокументСсылка.ПокупкаТоваров”)
Обращение к основному реквизиту формы Объект в процедуре с компиляцией &НаСервереБезКонтекста
Попытка записи в основной реквизит формы
Объект = ТекущийДокумент.ПолучитьОбъект();
ПолучитьОбъект() – документ может быть еще не записан (ссылки еще нет)
Объект.Товары.Загрузить (ДокументОснование.Товары);
ДокументОснование.Товары — табличная часть документа, нужна таблица значений ДокументОснование.Товары.Выгрузить()
Модуль объекта:
Нет записи свойства Движения
Процедура ОбщегоМодуля ПроверкаДокументовСервер:
отсутствует флаг ВызовСервера
Использование процедуры итеракивной работы “Предупреждение” на сервере для тонкого клиента
Документ “Продажа товара”:
Используется Объект.Ссылка (документ может быть еще не записан)
Закладка Движения – нет пометки движения по регистру
Модуль объекта:
В запросе поменять Внутренннее соединение на Левое соединение
Нет проверки isnull для колОст
Сообщение Поле — отсутствует привязка к строке документа
Не использован параметр Отказ Процедуры ОбработкаПроведения. Правильно
Если Недостача>0 Тогда …Отказ=Истина Иначе ….КонецЕсли;
Грамматическая ошибка «Недостаточно товава»
ВыборкаСерии.КолОст — нет проверки деление на ноль
Регистр накопления:
Ресурс Количество в регистре -число 15.2
Для Виолы Григорьевны:
Свойства:Справочник Серии: Стандартные Реквизиты-Код – Проверка заполнения Выдавать ошибку.
2…
3. Новой информации чрезвычайно много, здесь проблема усвоения. Многие сессии МГ “оставлены на потом”, дефицит времени.
Но курс для себя оцениваю более чем положительно. Курс заставил проснуться и помог преодолеть психологический барьер неприязни к платформе 1С8, за что благодарен авторам.
Реальный крупный проект начинается в октябре, рассчитываю на помощь материалов.
Формат обучения в целом удобен, если придумаете дополнительные средства для навигации и поиска по материалу, было бы совсем хорошо. Очный формат имеет свои положительные моменты, пришел и учись, не отвлекаясь, а здесь проблема самодисциплины, понуждения, дефицита времени.
Мне кажется, что усилить обратную связь можно если ДЗ сделать меньше, но в разделе ДЗ публиковать и обсуждать конкретные решения и подходы, может даже проводить конкурс. Отметка о выполнении ДЗ во многом формальна.
Хочу еще раз поблагодарить авторов и пожелать им найти новые удачные формы и методики обучения.
Спасибо.
>Попытка записи в основной реквизит формы
Во внеконтекстном серверном вызове система не знает, что такое Объект. Поэтому использовать можно.
Но, согласен, что лучше взять за правило – Объект и Список, это реквизиты формы.
По шагу 1 – зачет.
Спасибо за ответы на вопросы.
Игорь, как успехи по шагу 2?
Шаг 2.
Моя попытка ответить на вопрос “Текущая строка таблицы, Неправильно определяет текущий номер строки”
http://www.1c-pro.ru/index.php?showtopic=26045&st=0&gopid=110738&#entry110738
Если ошибаюсь, прошу поправить.
Там все сложнее.
Идентификатор может меняться. Например, номер строки может быть 4, а идентификатор 1698.
Это нормальная ситуация, мы разбирали в мастер-группе, можно воспользоваться поиском на сайте.
Начало положено. Надеюсь еще кому-нибудь поможете.
Сейчас ставлю небольшим авансом зачет по 2-му шагу.
И, вы – финалист! Поздравляю :)
Шаг 1.
1. Обработка проведения документа Приход. Добавить строку в процедуру обработка проведения: Движения.ТоварыНаСкладе.Записывать = Истина;
2. В для реквизита «Серия» документа «Продажа» заполнить свойство: «Связи параметров выбора».
3. Обработка проведения документа «Продажа»: Не отмечено «Движение в каком регистре», поэтому: Ошибка при выполнении обработчика – ‘ОбработкаПроведения’
по причине: {Документ.ПродажаТоваров.МодульОбъекта(4)}: Поле объекта не обнаружено (ТоварыНаСкладе)
Движения.ТоварыНаСкладе.Записывать = Истина;
4. Проверка на заполнение проводиться после проведения документа.
5. Работа в тонком клиенте: Обращение из клиентской процедуры к справочнику.
Ошибка при создании «Покупка»
{Документ.ПокупкаТоваров.Форма.ФормаДокумента.Форма(4,18)}: Переменная не определена (Справочники)
Объект.Клиент = <>Справочники.Клиенты.ОсновнойПокупатель;
6. Работа в тонком клиенте: Ошибка при создании «Продажа». Ошибка при вызове
процедуры из общего модуля.
{Документ.ПродажаТоваров.Форма.ФормаДокумента.Форма(4,2)}: Переменная не определена (ПроверкаДокументовСервер)
<>ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка);
7.Тип данных табличной части «Количество», документ «Покупка»: Строка
8. Те же ошибки должны быть в web-клиенте Ошибка при создании «Покупка». Обращение из клиентской процедуры к справочнику.
9. Те же ошибки должны быть в web-клиенте Ошибка при создании «Продажа». Ошибка при вызове процедуры из общего модуля.
10. Добавить регистр накоплений «Продажа».
11. Создать «Отчет о продажах».
12. Команда « Заполнить товары» заполнение «Покупки» на основании «Покупки»
Этой задачи нет в задании.
Шаг 2. Презентация ближним.
Презентация отправлена по почте.
Шаг 3.
1. Что нового Вы узнали из Базового курса по программированию?
Опыта практического программирования нет, только вводный курс по разработке в среде 1С, соответственно все что слышала и видела интересно. Появилась определенность, понимание о самой платформе, о механизмах платформы.
2. От каких заблуждений избавились?
Сочетание: ctrl+v , ctrl+c помощники, когда знаешь, откуда скопировать и куда вставить.
3. Если работаете на практике с платформой «1С.Предприятие 8», то каким образом удалось применить новые навыки(какие результаты были достигнуты)?
Узнала об объекте: « форматированный документ», есть необходимость формирования и хранения различных видов договоров.
4.Если пока не работаете на реальных проектах по внедрению решений на «1СПредприятие», то, что оказалось неожиданным из материалов курса?
Все что я слышала, для меня было интересно и ново.
5. Насколько удобен, оказался формат обучения в сравнении с очным форматом?
Это мое личное мнение, для меня (отсутствие практического опыта программирования, лишь небольшие изменения) курсы были интенсивными, спасибо за перерывы, которые позволяли прослушать материал, и разбираться с домашними заданиями. Очные курсы растянуты по длительности, и позволяют проходить курсы без стресса.
Шаг 1. Вас не смутил запрос в “Продаже товара”? Да и вообще сам алгоритм списания…
Вообщем с большой натяжкой, но ставим зачет.
Шаг 2. Презентация серьезная.
Как прошла? Фото остались?
Шаг 3. Спасибо за ответы вопросы.
Екатерина, как дела обстоят с выполнением домашних заданий в рамках базового курса?
Домашние задания с опозданиями сделаны.
Так как я постоянно догоняла, поэтому не отчитывалась.
Это хорошо.
В таком случае зачисляю вас в финалисты базового курса.
Примите поздравления!!
Я сегодня добрый. По Шагу 2 “подхалтурил” ещё:
http://forums.kuban.ru/forum/viewtopic_new.php?t=3095855&all=all
Пост 1 от 10.09.2010 – 18:58
В этом посте было сразу 2 участника нашего курса :)
Ответы на вопросы:
1. Что нового Вы узнали из базового курса по программированию?
Поскольку с платформой 8.0/8.1 плотно работал ранее, то из нового узнал особенности работы управляемого приложения, настройка управляемых форм, разделение на клиентский и серверный контекст и т.п. Понял, почему управляемая форма описывается, а не рисуется – чтобы минимизировать трафик между клиентом и сервером. Узнал, что основная обработка в 8.2 идёт на сервере в отличие от 8.1. Понял, что фирма 1С вложила много сил в разработку новой платформы и перевод типовых приложений на 8.2 – это вопрос времени. Надеюсь, к этому времени я буду достаточно подготовлен, в т.ч. с помощью Ваших курсов (надеюсь, не последних).
2. От каких заблуждений избавились?
Основное заблуждение: что переход на управляемое приложение 8.2 – это по сложности то же самое, что переход с 8.0 на 8.1. Понял, что всё не так просто и подход к разработке в 8.2 совершенно иной. Ранее предполагал, что переход на 8.2 не потребует специальной подготовки (по аналогии с миграцией 8.0 – 8.1). Надеюсь, что полученные навыки быстро не обесценятся в связи с выходом платформы 8.3
3. Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
вам удалось применить новые навыки (какие результаты были достигнуты);
С платформой «1С:Предприятие 8» работаю, но полученные навыки пока на практике применить не удалось. Предполагаю, что новые навыки потребуются в ближайшее время в связи с переходом на УПП ред.1.3 (начало 2011 года). Рассматриваю данное обучение как инвестиции в будущее и подготовку к переводу на 8.2 «боевой базы». Очевидно, что поддержка предыдущей редакции УПП в ближайшее время будет прекращена.
4. Если Вы пока не работаете реальных проектах по внедрению решений на
«1С:Предприятии 8», то, что оказалось неожиданным из материалов курса?
На реальном проекте работаю, неожиданностей не встретилось, см. п.1-3. Из не очень приятных неожиданностей – не совсем стабильная и предсказуемая работа платформы 8.2 последних релизов. Надеюсь, что к концу года ситуация в этом плане улучшится. Иначе будет ситуация: «Не переходить нельзя, а переходить страшно»
5. Насколько удобен, оказался формат обучения в сравнении с очным форматом?
Скажу честно: лично для меня такой формат – практически единственный реальный вариант обучения. Неоднократно посещал очные курсы в УЦ 1 по УПП и УСО и выездные. По платформе очно не обучался, до этого была самостоятельная подготовка. Из плюсов: удобный график, возможность создать для себя комфортную среду (кондиционер, удобное и привычное рабочее место). Минусы, к сожалению, тоже есть. Например, больше факторов отвлечения внимания (клиентские задачи, Интернет и т.п.). Но по совокупности плюсов и соотношению «цена-качество» дистанционный формат с помощью видеоуроков безусловно выигрывает. Тем более, что всего сразу не запомнишь. А на компьютере и CD видеоуроки сохраняются и всегда есть возможность обратиться к ним, как к справочнику. Теперь это моё оружие в конкурентной борьбе на рынке труда. А оружие другим не отдают Надеюсь пополнить «арсенал» с помощью продвинутого курса.
>Надеюсь, что полученные навыки быстро не обесценятся в связи с выходом платформы 8.3
Пока таких планов нет, думаю что 8.2 будет жить долго. Да и при выходе следующей версии скорее всего преемственность будет обеспечена :)
Спасибо за развернутые ответы!
Безусловно зачисляю вас в финалисты базового курса. Поздравляю =)
Вот какие ошибки я нашел:
*****Документ “Покупка товаров”
– вызов функции “ВвестиЗначение” необходимо выполнять в условном операторе. В случае возврата значения “Истина” необходимо выполнить последющие операторы, в противном случае выйти из обработчика.
– в вызове функции “ВвестиЗначение” не верно указан последний операнд, необходимо указать – Тип(“ДокументСсылка.ПокупкаТоваров”)
– не верно реализован обработчик команды “ЗаполнитьТовары”. Здесь необходим контекстный вызов функции “ЗаполнитьТоварыНаСервере”. В Функции “ЗаполнитьТоварыНаСервере” необходимо получить объект след. образом
ДокОбъект = РеквизитФормыВЗначение(“Объект”); //также необходимо в последующем коде изменить имя переменной “объект” на “ДокОбъект”
затем, в конце функции нужно обратное преобразование ЗначениеВРеквизитФормы(ДокОбъект,”Объект”);
– не верный тип у реквизита “Количество” таб. части “Товары”. необходим тип число (15,3).
– в обработке проведения не хватает строки:
Движения.ТоварыНаСкладе.Записывать = Истина;
– на форму не выведена команда “ЗаполнитьТовары” (ее необходимо вывести в коммандную панель таб. части )
*****Документ “Продажа товаров”
– Не верно реализована проверка документа.
Здесь решений несколько,
а) Некрасивый вариант – перед вызовом функции “ПроверкаДокументовСервер.ПроверитьДокумент(Объект.Ссылка)” документ необходимо записать, для общего модуля “ПроверкаДокументовСервер” необходимо выставить флаг “Вызов сервера”, заменить вызов процедуры глобального контекста “Предупреждение” на создание экземпляра объекта “Сообщение” с последующим вызовом метода сообщить.
б) Более правильный вариант, реализовать проверку в обработчике “ОбработкаПроверкиЗаполнения” (при этом запрос не нужен (т.к. он не будет работать для новых документов), в данном случае достаточно обычного обхода таб части.). Затем в обработчике команды “ПроверкаДокумента” вызвать метод ПроверитьЗаполнение().
– В обработке проведения в запросе не указан 1-й параметр вирт. таблицы “Остатки” для регистра “ТоварыНаСкладе”. Туда необходимо передать “момент времени” документа.
– В запросе необходимо “свернуть” таблицу документа (создать подзапрос, суммируемые поля: “Сумма”, “Количество”)
– Так же, в случае нехватки товаров из выбранной серии сообщение не будет привязано к необходимой строке таб. части.
для устранения проблемы необходимо в подзапросе добавить еще одно агрегироемое поле “Максимум(НомерСтроки)” и изменить строку: Сообщение.Поле = “Товары[” + (ВыборкаТовары.НомерСтроки -1) + “].Количество”;
– В запросе необходимо заменить “внутреннее соединение” на “Левое соединение”, в разделе “ГДЕ” добавить условие “ПродажаТоваровТовары.Ссылка = &Ссылка”, для выбираемых полей из присоединяемой таблицы остатков необходимо их значения привести к нулю с случае отсутствия данных для соединения (при помощи ф-и isnull(поле,0) )
– В начале обработки проведения необходимо очистить коллекцию движений по регистру “ТоварыНаСкладе” и записать пустую коллекцию.
– В обработке проведения нет “борьбы с копейками”
(необходимо переписать расчет суммы для записи регистра след. образом
Запись.Сумма = Запись.Количество/ВыборкаСерии.КолОст * ВыборкаСерии.СумОст;
)
*****Регистр накопления “Товары на складе”
– не верный тип ресурса “Количество”, необходим тип число (15,3)
P/S Извините за сумбурное описание, описывал ошибки только на основании программного кода, запускать режим отладки просто нет времени … т.к. на днях стал папой и сон уже почти вычеркнут из моего распорядка дня.
>Функции «ЗаполнитьТоварыНаСервере» необходимо получить объект
Можно и без объекта обойтись.
Ведь ДанныеФормыКоллекция поддерживает метод Загрузить()
По первому шагу – зачет.
>на днях стал папой и сон уже почти вычеркнут из моего распорядка дня
Поздравляю!!! Знакомый период жизни, чуть позже все устаканиться ))
По шагу 2 и 3 реально отписаться?
Задание 2
Форма выполнения задания в виде фотоотчета, будет отправлена в любое время по вашему пожеланию.
Ждем на ящик технической поддержки :)
Задание 3
Что узнал нового:
1. Гибкая работа с отладчиком: точка останова с условием, переход на курсор;
2. Просмотр данных в табло;
3. Работа с константами: обработчики событий;
4. Работа с объектами метаданных и их применение в различных модулях;
5. Особенности глобальных переменных;
6. Особенности проведения документов с использованием методов прочитать и записать;
7. Каким образом ведется управленческий и бухгалтерский учет;
8. Методы описания финансово хозяйственной деятельности и её разделения по видам учета БУ,УУ;
9. Способы представления данных;
10. Методы регистрации событий финансово хозяйственной деятельности(документы);
11. Организация клиент-серверной архитектуры;
12. Преимущество тонкого клиента;
13. Наличие Веб-клиента;
14. Способы контроля корректности введённых данных;
15. Объектный и табличный режим работы с данными;
16. Встроенный язык программирования и язык запросов;
17. Работа с широким спектром универсальных коллекций;
18. Модель хранения данных отдельно от регистраторов.
19 Работа с управляемыми формами
Насколько удобна форма обучения в сравнении с очной:
1. Возможность организовать удобный для себя график просмотра;
2. Возможность сделать паузу в любой момент времени;
3. Просмотреть ещё раз неусвоенный материал;
4. Затраты на обучение меньше, а эффективность больше.
Заблуждения
1. При работе использование объекта вместо ссылки и наоборот;
2. 1с-работа только в толстом клиенте;
3. Нет возможности групповой обработки записей в таблице
Насколько удобен оказался формат обучения , в сравнении с очным форматом?
Данный формат обучения оказался в разы удобнее, так как он подстроен под обучение именно конкретного человека, а не группы. Человек может в любое время, не выходя из-за своего компьютера получить новые сведения. Особо радует, что в отличие от очного обучения, можно перемотать и просмотреть еще раз фрагменты, которые не понял с первого раза, а также то, что продолжительность занятий и перерывов можно определять индивидуально исходя из собственных потребностей =DD.
Алексей, спасибо за ответы на вопросы.
Жду отчета по второму шагу :)