Базовый курс. Финальное задание 38-го потока
Объявляем начало финала 38-го потока базового курса по программированию.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь.Если не активировали токен — посмотрите видео-инструкцию (видео N5)Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись — напишите нам на e-mail поддержки.
1. Обратная связь
Полетаев Сергей Николаевич., Системный администратор., г.Углич
Добры день!
Обратная связь:
Моя трудовая деятельность давно связана с It инфраструктурой, основные задачи, которые были связанные с 1С – это инсталляция, бакапы, сопровождение по мере возможности. Знаний для решения повседневных задач, стало не хватать. Очно проходить курсы нет возможности, так как все учебные центры очень далеко. Поэтому обратил внимание на ваши курсы, последовательно прохожу «Быстрый старт в профессию», сейчас «Базовый курс», далее планирую пройти «Продвинутый курс». Опыта в разработке у меня мало, поэтому осталось ещё много «белых пятен» на устранение которых планирую возвращается к материалам курса, возможно какие-то вопросы снимутся в процессе прохождения продвинутого курса.
В видео уроках материал излагается доступно и понятно (от простого к сложному) с закреплением на практических примерах, очень удобно, что можно возвращается к пройденному материалу
2. Практическая часть
1. При создании нового Документа «Поступление» дата документа задаётся как 01.01.1980 0:00:00, обычно должна задаваться дата и время создание документа. У стандартного реквизита «Дата» очистил значение 01.01.1980 0:00:00.
2. При вводе нового документа «Выбытие животных» дата проставляется как 01.01.1980 0:00:00, для исправления убираю код в МО из обработки проведения
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("Дата", '19800101');
3. В документе «Выбытие животных», в процедуре, при открытие идёт обращение к серверному методу получить значение константы из клиентского модуля, что вызывает ошибку при попытке открыть документ в тонком клиенте, решение создать серверную функция которая возвращает результат запроса к БД.
Процедура ПриОткрытии(Отказ)
Если Объект.Ссылка.Пустая() Тогда
Объект.Направление = ОсновноеНаправлениеНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОсновноеНаправлениеНаСервере()
Возврат Константы.ОсновноеНаправление.Получить()
КонецФункции // ОсновноеНаправлениеНаСервере()
4. В документе «Выбытие» и «Перемещение» при открытие дату документа привожу к концу дня, так если бы были поступления в этот же день документ их не увидит
5. Ошибка в алгоритме проведения документа «Выбытие животных» не работает проверка остатка
Запрос на время «Момент()» ещё не знает остатков, для исправления передал через параметр
Запрос.УстановитьПараметр("МоментВремени", Граница);
6. Документ «Выбытие животных» №3 есть ошибка в пользовательских данных
Этим документом пользователь пытается оформить выбытие двух Лам, если в зоопарке на момент формирования документа 01.06.2011 12:00:00, только одна Лама, которая родилась 01.04.2011 12:00:00
в «Клетка маленькая 12 м2» и документом «Перемещение животных» 01.06.2011 12:00:00 была переведена в «Клетка средняя 40 м2» от куда уже оформляется её выбытие.
Вторая Лама родится только 18.09.2011 9:14:04
Поэтому операцию выбытия можно оформить только для одного животного
7. Документ «Выбытие животных» сообщение об ошибке привязывалось не правильно к строке
Нужно было от индекса отнять 1, чтобы совпадало с номером строки
Сообщение.Поле = “Животные[“+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+”].Количество”;
8. В документе «Инвентаризация» в табличной части в столбце «КоличествоФакт» свойство было установлено на проверку заполнения, что не давало сформировать на основании документ выбытие, если животного в результате инвентаризации по факту 0.
9. У РН «ВыбытияЖивотных» ВидРегистра должен быть «Обороты» , что приведёт к неработоспособности отчёта «АнализВыбытийЖивотных» переделываем его
3. Помощь миру
Я решил, остановится на написании небольшой статьи по теме «Интерфейс Такси». Собрал всю доступную для меня информацию. Для скриншотов описания взял конфигурацию финального задания «Зоопарк»
http://1c-pro.ru/threads/interfejs-taksi.55273/#post-360328
Сергей, благодарим вас за отзыв!
Финальное задание принято. Поздравляем с успешным окончанием базового курса и желаем успехов в дальнейшем обучении!
I-Часть.
Котвинский Александр Анатольевич, системный администратор, город Иркутск.
Курс очень понравился, все доходчиво и грамотно организованно. Хотелось бы видеть побольше задачек и примеры типовых решений.
На финальное задание к сожалению даеться мало времени, т.к. хотелось написать статью но при загруженном графике не хватает времени.
II-Часть.
1. В документе Поступление удалил стандартное заполнение реквизита Дата 01.01.1980 0:00:00
2. В сообщении сделал позицианирование на количество и -1 к строке:
3. Скорректировал сообщение, убрал лишний предлг В:
4. В ОбработкаЗаполнения закомментировал:
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("Дата", '19800101');
5. Добавил проверку на новый объект:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() Тогда
Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
КонецЕсли;
КонецПроцедуры
6. Модуль объекта ВыбытиеЖивотных, в обработке проведения добавил границу мемента времени:
7. В документе ПеремещениеЖивотных добавил условие в запрос:
| РазмещениеЖивотныхОстатки.КоличествоОстаток < 0
8. В документе Инвентаризация при зполнении ТЧ кнопкой Заполнить не выставлялся признак модифицированности.
Добавил проверку на пустой запрос
Объект.Животные.Загрузить(Результат.Выгрузить());
Модифицированность=истина;
КонецЕсли;
9. В отчете РазмещениеЖивотных привел дату к концу дня:
КонецПериода(&Период, “День”)
10. В модуле формы документа Выбытие нельзя обращаться к константе в клиентской процедуре. Закомментировал:
Объект.Направление = Константы.ОсновноеНаправление.Получить();
КонецЕсли;
11. В документе Инвентаризация невозможно проставить нулевое количество животных. В табличной части Животные этого документа, в свойствах реквизита КоличествоФакт проверку заполнения поставил в значение Не проверять.
III-Часть.
В 3-ей части задания хотел написать статью, но т.к. времени очень мало ответил на вопросы с форума:
http://1c-pro.ru/threads/vzaimodejstvie-neskolkix-tch-v-odnom-dokumente.55237/#post-360041
http://1c-pro.ru/threads/oshibka-zapolnenija-rekvizitov-po-inn.55241/#post-360018
http://forum-1c.ru/index.php?topic=55573.msg149128#msg149128
Александр, благодарим за отзыв.
>Хотелось бы видеть побольше задачек и примеры типовых решений.
Примеры работы с типовыми решениями есть в заключительных модулях курса “1С Программист: Быстрый старт в профессию”.
Базовый курс нацелен полностью на изучение языка и управляемого интерфейса.
Поздравляем вас с успешным окончанием базового курса по программированию! Желаем успехов в дальнейшем обучении!
На всякий случай продублирую, ( помощь миру, остально было принято ниже):
http://1c-pro.ru/threads/kak-poschitat-v-zaprose.55227/
http://1c-pro.ru/threads/1s-obrabotka-zapros-vyvod-soobschenija.55218/#post-359816
http://1c-pro.ru/threads/vzaimodejstvie-neskolkix-tch-v-odnom-dokumente.55237/
Шаг №3 принят, поздравляем с успешным окончанием базового курса!
Шаг 1. Обратная связь по курсу.
Сон Василий Владиславович
Администратор вычислительной сети (программист 1С)
Г. Волгоград
Что нового Вы узнали из базового курса по программированию?
– Большинство, того что я знал до этого было из интернета и собственные догадки. После прохождения Вашего курса, четкое представление о работе платформы 1С. Узнал ряд тонкостей написания кода и построения запросов (грамотности написания), легко начал оперировать с объектами метаданных (используя особенности каждого), получил представление о хранении таблиц в базе и многое другое.
От каких заблуждений избавились?
– Все оказалось легче, чем казалось сначала! Помню, читал тексты ДЗ, перед прохождением курса, и не имел представления как такое можно решить за столь короткий промежуток времени .
Если Вы работаете на практике с платформой «1С:Предприятие 8», то, каким образом
вам удалось применить новые навыки (какие результаты были достигнуты):
– Я системный администратор, начинающий программист 1С (около 6-ти месяцев). В процессе прохождения курса заметил увеличение скорости написания отчетов, обработок… стал быстро ориентироваться в платформе, находить более рациональные и оптимальные решения, ну и конечно исправлять ошибки прошлого.
Насколько удобен, оказался формат обучения в сравнении с очным форматом?
На мой взгляд – это лучший способ обучения, есть возможность самому регулировать свое время. ДЗ очень грамотно составлены и отлично помогают закрепить материал. Хотелось бы времени побольше, маловато показалось на курс, некоторые ДЗ не тестировал как следует, основная работа мешает + много нового материала, особенно раздел 4 (ЗУП), не сталкивался с ним пока на практике, но теперь имею представление. После прохождения курса всегда можно найти нужное и пересмотреть, Ваши видео уроки это не только обучение, но и справочник на будущее!
Шаг 2. Практическое задание
1. Не работает контроль остатков по регистру РазмещениеЖивотных при проведении документа «ВыбытияЖивотных», ошибка в передаче параметра «МоментВремени» в запрос:
Решение:
2. В модуле формы «Поступление» из в процедуре ПриСозданииНаСервере идет присвоение реквизиту значение константы, без проверки на новый объект, то есть при создании любого документа.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
КонецПроцедуры
Решение:
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
КонецЕсли;
КонецПроцедуры
3. В модуле формы «ВыбытиеЖивотных» нельзя обратиться из клиентской процедуры ПриОткрытии() к значению константы.
Процедура ПриОткрытии(Отказ)
Если Объект.Ссылка.Пустая() Тогда
Объект.Направление = Константы.ОсновноеНаправление.Получить();
КонецЕсли;
КонецПроцедуры
Решение:
Процедура ПриОткрытии(Отказ)
Если Объект.Ссылка.Пустая() Тогда
Объект.Направление = ПрочитатьЗначениеКонстантыНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПрочитатьЗначениеКонстантыНаСервере()
Возврат Константы.ОсновноеНаправление.Получить();
КонецФункции
4. В модуле объекта «ВыбытиеЖивотных» некорректно отображается сообщение об ошибке при контроле остатков, точнее указывает на ошибку некорректно.
</code
Решение:
<code>
Сообщение.Поле = "Животные["+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+"].Количество";
5. При проведении документа «ПеремещениеЖивотных» не работает контроль остатков в обработке проведения. Ошибка в запросе нет условия на отрицательный КоличествоОстаток. Решение:
"ВЫБРАТЬ
| РазмещениеЖивотныхОстатки.Животное,
| РазмещениеЖивотныхОстатки.Клетка,
| -РазмещениеЖивотныхОстатки.КоличествоОстаток КАК Нехватка
|ИЗ
| РегистрНакопления.РазмещениеЖивотных.Остатки(
| &МоментВремени,
| Животное = &Животное
| И Клетка = &Клетка) КАК РазмещениеЖивотныхОстатки
|ГДЕ
| РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";
6. Регистр накопления “ВыбытияЖивотных” делает движения только в одну сторону, т.е. он оборотный. В конфигурации указано остатки!
7. Отчет “РазмещениеЖивотных” не выводит корректные остатки на дату. Необходимо в параметрах СКД, на закладке Параметры добавить выражение:
8. Не проиндексированы измерения в регистрах накопления, что скажется на производительности при построении отчетов.
9. При вводе на основании “Инвентаризации” документов “Поступления” и “Выбытия” не понятно присвоение странной даты “01.01.1980”, хотя возможно это специфика конфигурации).
10. При проведении документа «ВыбытиеЖивотных» организовано два цикла перебора строк табличной части, это не оптимально, снижает производительность системы, можно организовать все в один цикл.
11. В документе «Инвентаризация», в табличной части у реквизита Количество, необходимо отключить проверку заполнения, поскольку нельзя указать нулевое количество.
Шаг 3. Помощь миру.
1. http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=642561#642561
2. http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=642559#642559
Василий, благодарим вас за развернутую обратную связь!
>Хотелось бы времени побольше, маловато показалось на курс
Да, график обучения действительно очень плотный.
Финальное задание принято, поздравляем вас с успешным окончанием базового курса!
Швецова Ольга Владимировна, г. Самара.
С 1С работаю с 2000 года. До недавнего времени все мои знания – это результат самообразования и практического опыта. Заняться изучением курсов подвигло желание получше изучить и понять возможности клиент-серверной модели и управляемых форм. Собственно для меня первая часть курса и была самой полезной. Ну и еще последняя, связанная с регистрами расчета.
Формат курсов очень удобен, особенно тем что позволяет не отрываться от основной работы.
Практическое задание:
1. При создании документов поступления и выбытия дата документа ставится «01.01.1980». Может это и не ошибка, но на мой взгляд – неправильно.
Исправление для поступления: Стандартные реквизиты – Дата – очистить значение заполнения.
Исправление для выбытия: убрать соответствующую часть кода в процедуре «ОбработкаЗаполнения».
2. При любом открытии поступления Источник поступления меняется на «Рождение на территории зоопарка». Забыли поставить проверку на создание нового.
Исправление:
Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
КонецЕсли;
3. Неправильно организован контроль остатков при проведении перемещения. Ошибка возникает, если перемещается только часть содержащихся в клетке животных.
Исправление: добавить условие на отрицательный остаток в запросе.
…
|ГДЕ
| РазмещениеЖивотныхОстатки.КоличествоОстаток < 0 ";
4. Выбытие животных: в запросе, во вложенном запросе нет отбора по документу.
5. Неправильно организован контроль остатков при проведении выбытия животных. Можно «списать» любое количество, а программа выдавать сообщения не будет. Причина – неправильная дата получения остатков.
Исправление:
Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени(), ВидГраницы.Включая));
6. Сообщение о нехватке животных при проведении документа «Выбытие» выдается с неправильной привязкой к строке документа. От номера строки надо отнять 1. И сообщение лучше привязать не к колонке «Животное2, а к колонке «Количество».
Исправление:
Сообщение.Поле = "Животные["+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+"].Количество";
5.1 Не ошибка, но описка: Сообщение о нехватке животных при проведении документа «Выбытие» выдается некорректное. Лишняя буква «в» перед наименованием животного.
7. В документе «Инвентаризация» невозможно указать нулевое фактическое количество животных. Однако можно указать отрицательное количество.
Исправление: для реквизита таб. части «КоличествоФакт» убрать проверку заполнения и поставить флажок «Неотрицательное».
8. В документе «Инвентаризация» невозможно указать нулевое учетное количество животных.
Исправление: для реквизита таб. части «Количество» убрать проверку заполнения.
9. В тонком клиенте при создании документа «Выбытие» возникает ошибка.
Исправление: Код необходимо перенести из клиентской процедуры «ПриОткрытии» в серверную «ПриСозданииНаСервере».
10. Для регистр накопления «Выбытие животных» установлен вид «Остатки». Регистр не закрывается в 0.
Исправление: поменять вид регистра на «Обороты» и пересчитать итоги.
Немного помощи миру:
http://forum-1c.ru/index.php?topic=46331.new#new
http://forum-1c.ru/index.php?topic=48136.new#new
http://forum-1c.ru/index.php?topic=48280.new#new
http://forum-1c.ru/index.php?topic=48287.new#new
http://forum-1c.ru/index.php?topic=48305.new#new
http://www.forum.mista.ru/topic.php?id=747196
Ольга, благодарим вас за обратную связь!
Финальное задание принято, поздравляем с успешным окончанием базового курса по программированию!
Шаг 1.
Пермякова Анна Владимировна. Краснодар.
Работаю консультантом-программистом 1С.
Курс очень понравился! Удобный формат, можно самой планировать время обучения и пересмотреть материал. Понравилось, что показывается поиск ошибок, указываются подводные камни. До прохождения курса совершенно не понимала работу с запросами. Полученные знания применяю в работе, очень помогают. Огромное спасибо создателям курса и сотрудникам, осуществляющим поддержку!
Шаг 2. Практическое задание
1. При проверке модулей выдается ошибка в форме документа «Выбытие животных», т.к. выполняется попытка получить константу на клиенте. Решение: сделать это в процедуре «ПриСозданииНаСервере».
2. В документе «Выбытие животных» убрать данные заполнения даты.
3. В документе «Выбытие животных» при сообщении о недостатке животных неверная привязка к строке. Решение: ВыборкаДетальныеЗаписи.НомерСтроки-1
4. В документе «Поступление» убрать значение заполнения для стандартного реквизита «Дата»
5. Неверно выбран вид регистра накопления «ВыбытияЖивотных» – Остатки. Нужно изменить на Обороты.
6. В документе «ПеремещениеЖивотных» в обработке проведения добавить условие РазмещениеЖивотныхОстатки.КоличествоОстаток < 0.
7. В документе «Инвентаризация» убрала проверку заполнения реквизита «КоличествоФакт» в табличной части «Животные», т.к. животных в клетке может не остаться.
8. В документе «Инвентаризация» при заполнении получается остаток на дату заполнения. Необходимо установить параметр ВТ в запросе и установить его равным дате документа.
9. В документе «Инвентаризация» не устанавливается признак модифицированности.
Решение: Модифицированность = Истина;
10. В отчете «РазмещениеЖивотных» период не приводится к концу дня. В параметрах в выражении указать: КонецПериода(&Период, "День")
Шаг 3. Помощь миру
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=642549#642549
Анна, благодарим за обратную связь!
Финальное задание принято, поздравляем с успешным окончанием курса!
Обратная связь.
Опыт работы в 1с не большой(на начало курса), теперь считаю что он уже есть хоть какой то. До не давнего времени работал только на обычных формах и любые даже простые задачи на управляемых были катастрофой. С вашим курсом полностью разобрал клиент-серверный метод и теперь работаю в разных формах с одинаковой эффективностью. Бухгалтерские и расчетные задачи мне пока не давали. Поэтому все что касается 4 и 3 блока все новое. На практике данные разделы я не закрепил, поскольку разовое выполнение домашних заданий быстро забывается. Поэтому нужно будет ещё пересмотреть все и поучить уже з блокнотом и ручкой. Много узнал про универсальные коллекции значений. Да я их видел в работе я ими пользовался но что это и как правильно с ними работать не знал. Чему я очень благодарен так это тому, что научился пользоваться синтакс-помошником. До этого это был темный лес, теперь же я в нем ориентируюсь. И могу искать что то новое для решения задач уже не в инете, а в нем. формат обучения оказался очень удобный можно спокойно после работы позаниматься пока есть силы, если на работе нету задач можно и там саморазвиваться. В общем мне такой формат понравился. Единственное что так и не узнал что такое мастер-гурпы. Все темы скачал но интересно в каком формате они проводились)
Шамрай Михаил Александрович
г.Саратов Программист-консультант в франчайзи Группа компаний «Компьютерный аудит».
Практическое задание
1.Документ выбытия. В обработке заполенения. Если это не заполнение на основании инвентаризации дата проставляется фиксирована и довольно старая. Нужно записать ТекщаяДата().
2 При открытии формы получаем константу на стороне клиента, исправление
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
если Объект.Ссылка.Пустая() тогда
Объект.Направление = Константы.ОсновноеНаправление.Получить();
КонецЕсли;
КонецПроцедуры
3. Поиграв немного с выше сказанным замечанием обнаружил ошибку в поступлении. При открытии формы значение подставляется без всяких проверок. И того сохранили одно значение а при открытии видим второе.
4. При проведении выбытия в запросе мы при обращении к данным документа мы не установили параметр ссылка. Что привело к проверке всех документов. Также нужно установить левое соединение к документу, что позволит уменьшить количество записей выводимых из регистра.
5. При обращении количество остаток нету проверки на null, хотел оказать как ошибку но после вспомнил про статью на вашем сайте про новый метод проведение и понял что данная проверка тут не нужна.
6. При проверки количества не учитывают движение сделаны документом.
7. Если есть не хват тогда привязка сообщения не работает поскольку нумерация строк и полей различается на 1.
8. При заполнении документов из инвентаризации не верно учитывают какой документ заполнить. Нужно переделать заполнение на оборот, когда факт больше делаем поступление, когда факт меньше – выбытие.
9. При проведении перемещения, запрос на проверку отрицательных чисел неверный, поскольку нету условия на Количество <0.
10. Регистр выбытия животных должен быть оборотным. При этом движение по данному регистру документа выбытия можно не править поскольку там не указан вид движения.
Помощь миру
Выбрал ответы на форуме. Поскольку думал завершить курс с предыдущей группой подготовился заранее. Как оказалось на форуме можно найти много интересного просто заходя туда хотя бы один рас в день. Думаю можно медленно развиваться просто читая высказывание знающих людей)
http://www.forum.mista.ru/topic.php?id=746965
http://www.forum.mista.ru/topic.php?id=746964
http://www.forum.mista.ru/topic.php?id=747013
http://www.forum.mista.ru/topic.php?id=747026
http://www.forum.mista.ru/topic.php?id=746997
http://www.forum.mista.ru/topic.php?id=747791
http://www.forum.mista.ru/topic.php?id=747979 ник Mifka
Михаил, благодарим вас за развернутый отзыв!
Финальное задание принято, поздравляем с успешным окончанием базового курса. И желаем успехов в дальнейшем обучении :)
Воронов Дмитрий Александрович
Начальник отдела ИТ.
ООО “Управляющая компания “Горное Управление” ПО “Возрождение”
г.Выборг
1. Начать изучение курса “Базовый” сподвигли именно те самые “белые пятна”, которые очень мешают работе.
До этого прошел курс по конвертации, что просто необходимо было на тот момент,
иначе переход на новую платформу 8.3 затянулся бы ещё на год. В процессе изучения “конвертаций” и разработки моб приложений частично познакомился с платформой 8.2,
всё понравилось, вот и захотелось разобраться в функционале 8ки на хорошем уровне. До этого годы работы на 7ках и 8.1. и на новой платформе, конечно бы методом “тыка”
и пользуясь опытом интернет-сообществ, можно подтянуться конечн, но так знаю лучше и, несмотря на несколько месяцев считаю больших “трудов”,
Ура!, видео просмотрены, домашки сделаны.. база теперь есть, но и работы ух и поднакопилось, которую надо теперь делать и делать, но с большим “комфортом”).
Отчеты теперь только на СКД, – надо не забыть как там всё по старинке лепил. С запросами тоже понмание пришло. Формы управляемые – прелесть, и всем нравятся.. а главное все заказы бухгалтерии
оч быстро исполняюся.
Формат изучения отличный, очень помогает график, потому что знаешь что времени как бы много ещё есть, а его на самом деле нет вообще!
так что придерживался и контролировал себя, когда необходимо чуть отключиться на работу и только работу. Понятно, что курсы уже не новы, но так получилось
что на работе на компъютер пришлось установить сервер, а дома ноут с 4k разрешением – и на них учиться было невозможно,
поэтому пришлось искать третий компьютер чтобы завести нормально плэйер, может новые курсы будут работать и на хороших разрешениях?
В общем, спасибо! Надо чуть передохнуть и взяться за продвинутый курс, а там ещё что то оч “вкусное” готовите вы.
2.
Ошибки:
Документ Поступление.
2.1. При создании формы Источник поступления берется из константы и существующее значение затирается. Исправляем, добавляя условие на существование ссылки этого документа
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() Тогда
Объект.ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
КонецЕсли;
КонецПроцедуры
2.3. Значение заполения стандартного реквизита Дата в документах Поступление, Выбытие (в обработке заполнения) очистил, чтобы дата при создании документа система проставляла текущую дату.
2.4. Выбытие животных - Переносим в серверную процедуру заполенение Основного направления для нового документа по аналогии с поступлением.
2.5. Изменил интерфейс Формы в закладках. Так удобнее.
Выбытие Контроль остатков:
2.6. Выбытие - в запросе при обращении к таблице Животные документа во вложенном запросе нет условия на ссылку документа.
2.7. В параметр запроса включаем момент документа.
2.8. Неверное указание строки ошибки - индекс это НомерСтроки-1
рабочий модуль такой:
Движения.РазмещениеЖивотных.Записывать = Истина;
Для Каждого ТекСтрокаЖивотные Из Животные Цикл
Движение = Движения.РазмещениеЖивотных.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Животное = ТекСтрокаЖивотные.Животное;
Движение.Клетка = ТекСтрокаЖивотные.Клетка;
Движение.Количество = ТекСтрокаЖивотные.Количество;
КонецЦикла;
Движения.Записать();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РазмещениеЖивотныхОстатки.Животное,
| РазмещениеЖивотныхОстатки.Клетка,
| -РазмещениеЖивотныхОстатки.КоличествоОстаток КАК Нехватка,
| ДанныеДокумента.НомерСтроки
|ИЗ
| РегистрНакопления.РазмещениеЖивотных.Остатки(
| &МоментВремени,
| (Животное, Клетка) В
| (ВЫБРАТЬ
| ВыбытиеЖивотныхЖивотные.Животное,
| ВыбытиеЖивотныхЖивотные.Клетка
| ИЗ
| Документ.ВыбытиеЖивотных.Животные КАК ВыбытиеЖивотныхЖивотные
| ГДЕ
| ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка)) КАК РазмещениеЖивотныхОстатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| МИНИМУМ(ВыбытиеЖивотныхЖивотные.НомерСтроки) КАК НомерСтроки,
| ВыбытиеЖивотныхЖивотные.Животное КАК Животное,
| ВыбытиеЖивотныхЖивотные.Клетка КАК Клетка
| ИЗ
| Документ.ВыбытиеЖивотных.Животные КАК ВыбытиеЖивотныхЖивотные
| ГДЕ
| ВыбытиеЖивотныхЖивотные.Ссылка = &Ссылка
|
| СГРУППИРОВАТЬ ПО
| ВыбытиеЖивотныхЖивотные.Животное,
| ВыбытиеЖивотныхЖивотные.Клетка) КАК ДанныеДокумента
| ПО РазмещениеЖивотныхОстатки.Животное = ДанныеДокумента.Животное
| И РазмещениеЖивотныхОстатки.Клетка = ДанныеДокумента.Клетка
|ГДЕ
| РазмещениеЖивотныхОстатки.КоличествоОстаток 0";
Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
Результат = Запрос.Выполнить();
Животные.Загрузить(Результат.Выгрузить());
Иначе
//ДанныеЗаполнения = Новый Структура;
//ДанныеЗаполнения.Вставить("Дата", '19800101');
КонецЕсли;
КонецПроцедуры
2.10. Верный запрос для перемещения Животного, контроль отриц остатка:
Запрос.Текст =
"ВЫБРАТЬ
| РазмещениеЖивотныхОстатки.Животное,
| РазмещениеЖивотныхОстатки.Клетка,
| -РазмещениеЖивотныхОстатки.КоличествоОстаток КАК Нехватка
|ИЗ
| РегистрНакопления.РазмещениеЖивотных.Остатки(
| &МоментВремени,
| Животное = &Животное
| И Клетка = &Клетка) КАК РазмещениеЖивотныхОстатки
|ГДЕ
| РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";
Запрос.УстановитьПараметр("Животное", Животное);
Запрос.УстановитьПараметр("Клетка", КлеткаОткуда);
Запрос.УстановитьПараметр("МоментВремени", Новый Граница(МоментВремени(), ВидГраницы.Включая));
2.12. Модифицированность = Истина в заполнении документа Инвентаризация. Не видно что перезаполнили док
3. Помогаем.
http://infostart.ru/public/390793/
http://infostart.ru/public/390860/
Дмитрий, благодарим вас за обратную связь!
Финальное задание принято, поздравляем с успешным окончанием базового курса!
Шаг 1. Обратная связь по курсу
Лабутин Артем Сергеевич, программист 1С (фрилансер), г. Пермь
Целью курса было обновить свои навыки разработки до управляемых форм. Большим бонусом лично для себя считаю ощущение целостного понимания базовых механизмов платформы – раньше было много “белых пятен”.
До этого я занимался в основном внедрением типовых (УТ 10.3 и БП 1.6), потом был долгий перерыв в 4 года на руководство проектами в своем маленьком франче, поэтому все, что касается разработки на управляемых формах – было новым.
В декабре, закончив первое прохождение курса я взялся за разработку двух небольших подсистем для УНФ. Мне кажется, очень удобно начинать программировать именно для этой конфигурации – она достаточно проста для понимания и не требует глубокой специализации в предметной области (на первых порах). С задачами справился, так что будем считать что и базовый курс в целом тоже со своими “задачами по обучению меня” справился.:)
Неожиданным для меня оказался объем новой информации. Учитывая свой прошлый опыт и подготовку, я планировал просмотреть весь курс + дз + мастер-группу примерно за 1,5 – 2 месяца. В итоге, чтобы усвоить все, пришлось сделать два подхода и потратить примерно по три месяца на каждый. В первую попытку мне не хватило сил на расчетные задачи и большую часть мастер группы. Во время второго подхода, после выполнения первого проекта, я начал с повторения – и с удивлением заметил, что при первоначальном изучении упустил много важных моментов.
Теперь о минусах
1. Огромный минус по сравнению с очными курсами – отсутствие контроля над студентами и отсутствие групповой работы. Думаю, групповая работа даже важнее. Я думал, что она будет реализована в рамках мастер-группы, но оказалось, что там просто отвечают на вопросы по почте. В итоге учеба очень, очень сильно растягивается.
2. Второй недостаток – отсутствие содержания видеокурса в печатном виде. Я уже писал ранее, что текст многими (и мной в том числе) запоминается лучше, так что не буду углубляться.
3. Качество ответов в мастер-группе. Оно очень низкое. Могут ответить формально или вообще не правильно. Я потом даже перестал задавать вопросы.
По поводу содержания курса – я бы больше времени уделил клиент-серверному взаимодействию – именно этого мне не хватало на практике при выполнении первого проекта. Под клиент серверным взаимодействием я подразумеваю различные ситуации, связанные с обновлением данных формы при изменении данных объекта и наоборот. Десятка полтора можно коротеньких практических кейсов включить в курс – будет самое то.
Не смотря на минусы, курсом доволен, сейчас заканчиваю изучать теорию продвинутого курса.
Шаг 2. Практическое задание
Ошибка 1. Документ Поступление животных. При подстановке значения по умолчанию в реквизит Источник поступления, не анализируется, заполнен уже реквизит или нет. (модуль формы, при создании на сервере)
Ошибка 2. Документ Поступление животных. При установке даты документа всегда используется значение заполнения 01.01.1980
Ошибка 3. Документ Инвентаризация. При нажатии на кнопку заполнить табличная часть перезаполняется, но не появляется признак модифицированности.
Ошибка 4. При вводе поступления на основании инвентаризации изменения не записываются. Поэтому может возникнуть ситуация, когда на форме инвентаризации одни данные – а в поступлении – другие (те, что были до перезаполнения)
Ошибка 5. Документ Инвентаризация. Количество факт – обязательно для заполнения. Не дает указать нулевое значение. А отрицательное – дает)
Ошибка 6. Документ Инвентаризация. Количество по учету – доступно для изменения и разрешает записывать отрицательные значения.
Ошибка 7. Документ Выбытие. При проверке остатков необходимо включить параметр МоментВремени в проверяемый интервал: Новый Граница (МоментВремени(), ВидГраницы.Включая)
Ошибка 8. Документ Выбытие. Чтобы сообщение об ошибке привязалось к строке, нужно указывать индекс как «НомерСтроки-1»
Ошибка 9. Регистр накопления Выбытия животных. Необходимо установить тип – Обороты, так как регистр никогда не закроется.
Шаг 3. Помощь ближнему
Доп реквизиты в УНФ http://forum.infostart.ru/forum28/topic135225/message1395114/#message1395114
Масштаб формы http://forum.infostart.ru/forum86/topic136007/message1404537/#message1404537
Артем, благодарим за развернутый отзыв.
Финальное задание принято, поздравляем с успешным окончанием базового курса.
1. Обратная связь по курсу
Благодарю за курс, очень понравилось изложение материала. С 1С знакома давно, начиная с версии 7.7, но моя специфика работы скорее консультанта 1С по типовым решениям, преимущественно Зарплата и Управление персоналом. В настоящий момент нахожусь в декрете :), а потому было решено совместить приятное с полезным, систематизировать разрозненные знания, а в будущем, возможно, поменять направление деятельности на программирование. На практике, к сожалению, пока знаний применить не удалось все по той же причине, но тем не менее, при прослушивании курса было много моментов, которые были бы полезны в моей работе. Формат обучения безумно удобен по сравнению с очным форматом, а в моей ситуации это единственно возможный вариант обучения. Обязательно пройду еще продвинутый курс! Спасибо! Мария Юшкова, г. Барнаул
2 Практическая часть:
1 Регистр ВыбытияЖивотных вместо вида регистра остатки должен быть вид регистра обороты, потому что регистр не выведется в ноль и движения всегда в одну сторону, соответственно нужно изменить отчет АнализВыбытийЖивотных
2 Форма документа ПоступлениеЖивотных лишний обработчик ПриСозданииНаСервере(). Для заполнения ИсточникаПоступления для новых документов можно добавить веточку ИначеЕсли в обработчик события ОбработкаЗаполения() модуля объекта документа ПоступлениеЖивотных
ИсточникПоступления = Константы.ОсновнойИсточник.Получить();
3 В документе Инвентаризация КоличествоФакт и Количество могут быть нулевыми, нужно убрать «Выдавать ошибку» для Проверки заполнения
4 В Форме документа ВыбытиеЖивотных ошибочное обращение к константе на клиенте, можно реализовать заполнение реквизита Направление для вновь создаваемых документов аналогично пункту 2.
5 В модуле объекта документа ВыбытиеЖивотных в ОбработкеЗаполнения лишние строки
ДанныеЗаполнения = Новый Структура;
ДанныеЗаполнения.Вставить("Дата", '19800101');
6 В документе ВыбытиеЖивотных в обработке проведения параметр момент времени в запросе должен включать момент времени документа:
7 В документе ВыбытиеЖивотных в обработке проведения в запросе для данных документа нужно условие по ссылке
8 Отчет РазмещениеЖивотных параметр период – состав даты дата и привести к концу дня
9 При заполнении документа Инвентаризация в параметрах виртуальной таблицы остатков животных нужно добавить параметр Период, соответствующей дате инвентаризации
10 Документ ПоступлениеЖивотных стандартный реквизит Дата убрать значение заполнения 01011980
11. В модуле объекта документа ПеремещениеЖивотных в запросе нужно добавить условие ГДЕ:
12. В модуле объекта документа ВыбытиеЖивотных в процедуре ОбработкаПроведения() исправлен вывод сообщения об ошибке:
Сообщение.Поле = "Животные["+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+"].Количество";
3 Помощь миру http://forum-1c.ru/index.php?topic=54971.10 ник Mariya13
Мария, благодарим вас за обратную связь!
Поздравляем с успешным окончанием базового курса по программированию!
1. Документ Выбытие животных , Форма, В клиенской процедуре обращение к константе. Решение : Переместить код в процедуру ПриСозданииНаСервере(). А В документе поступление в форме добавить проверку на пустоту ссылки, можно также добавить в формы обоих документов проверку на “проведен”.
2. Проведение документа Выбытие животных. В выборке ТабЧасти не указано условие по ссылке. В выборке отриц. остатков. КоличествоОстаток не проверено на null, isnull(КоличествоОстаток,0). Связь , левое соединение к ТЧ, условие отсечет ненужное. Причем в условии тоже необходимо привести к null ЕСТЬNULL(РазмещениеЖивотныхОстатки.КоличествоОстаток, 0) < 0. Неправильно установлен параметр МоментВремени(). Нужны записи включающие движения, документа ВидГраницы.Включая. ("МоментВремени", ?(Режим = РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(), ВидГраницы.Включая))). Сообщение не привязывается , к полю: надо от номера строки отнимать единицу Сообщение.Поле = "Животные["+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+"].Количество"
3. Документ Перемещение, обработка проведения. Поле isnull(РазмещениеЖивотныхОстатки.КоличествоОстаток,0) привести к null. Добавить условие isnull(РазмещениеЖивотныхОстатки.КоличествоОстаток,0) < 0. Оперативное проведение ("МоментВремени",?(Режим = РежимПроведенияДокумента.Оперативный, Неопределено, Новый Граница(МоментВремени(), ВидГраницы.Включая)))
4. Регистр Выбытия животных сделать оборотным
5. Отчет Размещение животных. Привести к концу периода ДобавитьКДате(КонецПериода(&Период, "День"), "Секунда",1). Изменить вариант отчета, С таблицы на список, группировку по клеткам, и детальные записи.
6. Отчет АнализВыбытийЖивотных работал неправильно (Регистр Выбытия сделал оборотным, очистил все движения, записал заново, все равно при получении оборотов выдавались отрицательные числа, в чем причина не разобрался . Удалил регистр , создал заново – проблема решилась.)
====================================================================
Работаю в ресторанной сфере не имеющей никакого отношения к 1С и ИТ. Собственно и учусь, чтобы сменить сферу деятельности. Поэтому думаю семинара на работе не получится))) Что нового узнал: Да все. Все что я узнал- узнал из ваших курсов. До них конечно читал пару книг, но разница колосальная. На Ваших курсах все очень понятно и детально изложено. Действительно очень опытный преподаватель. Он учит не только освоению материала, но и анализировать ошибки, много объясняет, в каких именно местах они чаще всего допускаются. И как правильно и быстро их находить и устранять. Приучает учиться писать универсальные алгоритмы. В общем бесценный на мой взгляд опыт. Что же касается сравнения с очным курсом: думаю, что все кто прослушал хотябы один ваш курс и так понимают разницу. На очной курс если и идти, то надо иметь в голове уже подготовленный багаж знаний. Скажем так повторить материал, заполнить пробелы. Выучить же такой объем за неделю очных курсов невозможно. Мозг не воспримет такое количество информации и как следствие, курс будет прослушан впустую. Тут же можно остановиться отдохнуть, если не понятно прослушать еще раз и только после этого двигаться дальше. Ну и такое количество практики очный курс тем более не даст.
Вобщем огромное спасибо всем кто принимал участие в создании и поддержке Вашего замечательного курса!
Просолин Илья Владимирович, ресторанная сфера, Москва.
Илья, благодарим вас за обратную связь!
Практическая часть принята, а вот по шагу №3 всё-таки придется отчитаться :) Вы могли бы помочь кому-нибудь на форуме, не обязательно выбирать сложный вопрос.
1. Обратная связь.
1.1. Курс был несомненно полезным. Начал я с полного нуля, поэтому каждый видео урок длиной по 3 минуты приносил знания. На протяжении с 0 по 3 блок без труда разбирался в материале и выполнял задания. 4 же блок мне показался чуть сырым: так, например, пересмотр курсов при ранее возникших сложностях мне помогал всегда, а вот с 4 блоком не помог. Приведенные в нем ситуации не были похожи на те, что в задании. В результате получилось выполнить ДЗ лишь методом научного тыка и подстановок, вводя различные периоды базы, действия, регистрации, а также проставляя разные галочки в настройках планов счетов и регистров расчета. Однако со временем понимание пришло.
Работаю учеником 1С программиста. Успел проработать до начала курсов 1,5 месяца, но приобрел в основном практические знания типового решения “Управление торговлей 10.3”. Курсы же дали очень даже неплохое понимание механизмов платформы, синтаксиса, механизмов клиент-серверного взаимодействия, основы бухгалтерии и т.п.
В работе полученные знания помогают очень сильно. С каждым новым рабочим заданием понимаешь насколько легче оно дается, благодаря тому, что знаешь в какую сторону копать и какие объекты использовать. Особненно сильно в работе мне помог блок уроков по отладчику: стал намного быстрее разбираться в чужом коде.
Формат подачи материала в видео уроках всегда был лучше, чем классический текстовый или восприятие информации на слух.
В общем впечатления очень положительные. Уже на 7 задании продвинутого курса.
1.1. Личные данные.
Кузьмин Павел Александрович, работаю учеником специалиста по программированию 1С в г. Иркутске.Если необходимы еще какие-нибудь личные данные для рекомендательного письма письма, укажите какие и я отправлю в мастер группу письмо.
PS
Заказ оформлял начальник.
2. Практическое задание.
2.1. При создании формы документа “Поступление” на сервере происходило заполнение реквизита документа из константы. Это, конечно неверно. Если пользователи хотели автоматическое заполнение реквизита, то делать это необходимо в модуле объекта в процедуре “ОбработкаЗаполнения”, причем с проверкой на то что документ новый и не был ни разу записан. Если оставить все как есть, то в не зависимости какое значение хранилось в реквизите, при открытии формы отображалось бы значение по умолчанию.
2.2. В документе “ВыбытиеЖивотных” также происходит заполнение реквизита из константы, однако не во время создания формы на сервере, а при открытии. Что в двойне не верно. Во-первых пользователь всегда будет видеть значение по умолчанию, вместо того, что было сохранено, во-вторых, обращение к константе происходит с процедуры, скомпиленной на клиенте, тогда как константы хранятся в базе данных, которая находится на сервере.
2.3. В модуле документа “ВыбытиеЖивотных” процедуре “ОбработкаЗаполнения” для каждого нового документа задается дата 01.01.1980. Необходимо исправить такое поведение, удалив код заполнения. В результате по-умолчанию будет устанавливаться текущая дата.
2.4. В документе “Поступление” настроено автоматическое заполнение стандартного реквизита все тем же 1980 годом. Необходимо убрать флажок с “заполнять из данных заполнения”.
2.5. В документе инвентаризация стоит проверка заполнения в табличной части “Животные” реквизита “КоличествоФакт”. В результате, если количество оставшегося животного в клетке равно 0, то документ провести не удастся. Отключаем проверку.
2.6. В документе инвентаризация есть команда “заполнить”. После ее выполнения документ не считается модифицированным и не выдает предупреждение о необходимости применить изменения при закрытии формы. Необходимо добавить строчку в код процедуры “ЗаполнитьНаСервере”.
2.7. В настройках конфигурации стоит управляемый режим управления блокировками, при этом в коде явных блокировок не прописано. Необходимо включить автоматическое управление блокировками, иначе будут коллизии. Например, пользователь списал количество товара проведением документа, в эту же секунду другой пользователь списал этот же товар, но так как остаток заблокирован не был, они видели одну и ту же цифру, и оба документа провелись, сведя остаток в минус.
2.8. При проведении документа выбытие животных происходит неверный контроль остатков: не учитываются движения текущего документа. Решение: использование объекта “Граница”.
Запрос.УстановитьПараметр("МоментВремени", Граница);
2.9. Неверно привязывается сообщение об нехватке при проведении документа “Выбытие животных”. Необходимо привязать сообщение к полю “количество” строки табличной части, а так как нумерация строк идет с 0, то и отнять единицу от номера строки.
Сообщение.Текст = "Недостаточно животного в "+ВыборкаДетальныеЗаписи.Животное+" в "+ВыборкаДетальныеЗаписи.Клетка+" в количестве "+ВыборкаДетальныеЗаписи.Нехватка;
Сообщение.Поле = "Животные["+(ВыборкаДетальныеЗаписи.НомерСтроки-1)+"].Количество";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
2.10. При проведении документа “ПеремещениеЖивотных” не верно составлен запрос на получение отрицательных остатков: нет условия на “КоличествоОстаток” меньше 0.
"ВЫБРАТЬ
| РазмещениеЖивотныхОстатки.Животное,
| РазмещениеЖивотныхОстатки.Клетка,
| -РазмещениеЖивотныхОстатки.КоличествоОстаток КАК Нехватка
|ИЗ
| РегистрНакопления.РазмещениеЖивотных.Остатки(
| &МоментВремени,
| Животное = &Животное
| И Клетка = &Клетка) КАК РазмещениеЖивотныхОстатки
|ГДЕ
| РазмещениеЖивотныхОстатки.КоличествоОстаток < 0";
2.11. Вид регистра “ВыбытияЖивотных” должен быть оборотным: к чему нам остатки, если приходов по сути не будет. В отчете выбития животных запрос автоматически поменялся.
2.12. Ввод на основании документа “Инвентаризация” для документов “Поступление” и “ВыбытиеЖивотных” настроен не верно: проблема в запросах. Переделал их:
Модуль документа “Выбытие”, процедура “ОбработкаЗаполнения”.
Если по факту животных больше, чем должно быть – то разница больше 0 и именно столько животных должно отбыть.
"ВЫБРАТЬ
| ИнвентаризацияЖивотные.Животное,
| ИнвентаризацияЖивотные.Клетка,
| ИнвентаризацияЖивотные.КоличествоФакт-ИнвентаризацияЖивотные.Количество КАК Количество
|ИЗ
| Документ.Инвентаризация.Животные КАК ИнвентаризацияЖивотные
|ГДЕ
| ИнвентаризацияЖивотные.Ссылка = &Ссылка и
| ИнвентаризацияЖивотные.КоличествоФакт-ИнвентаризацияЖивотные.Количество > 0";
Модуль документа “Поступление”, процедура “ОбработкаЗаполнения”
Если по плану животных больше чем по факту, то разница больше 0 и именно столько животных нужно докупить.
| ИнвентаризацияЖивотные.Животное,
| ИнвентаризацияЖивотные.Клетка,
| ИнвентаризацияЖивотные.Количество-ИнвентаризацияЖивотные.КоличествоФакт КАК Количество
|ИЗ
| Документ.Инвентаризация.Животные КАК ИнвентаризацияЖивотные
|ГДЕ
| ИнвентаризацияЖивотные.Ссылка = &Ссылка и
| ИнвентаризацияЖивотные.Количество-ИнвентаризацияЖивотные.КоличествоФакт > 0
3. По поводу помощи миру все сложнее. Выполнить задание нужно до понедельника, как и мое рабочее задание. В результате зарегистрировался на первых попавшихся форумах 1С и ответил на только что созданные вопросы. По 2 из них уже ответили. Доведу все темы до конца, как только ответят остальные или потребуются дополнения.
http://forum-1c.ru/index.php?topic=55507.msg148905#msg148905 Nemesls
http://1c-pro.ru/threads/upravljaemye-formy-kak-programno-zapolnit-tablichnuju-chasl.55206/#post-359672 Nemesls
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=642496#642496 Pavel
Павел, благодарим вас за обратную связь!
Финальное задание принято, поздравляем с успешным окончанием базового куса по программированию!