Урок 7. Курс 1С для начинающих
Выгрузка эталонной базы, создаваемой на 6 уроке с выполненным домашним заданием
для установки конфигурации вам понадобится скачать платформу 1С:Предприятие 8.2 (версия для обучения) или использовать платформу 1С Предприятие версии не ниже 8.2.15.301.
1 часть 7 урока
При написании программного кода в рамках нашего курса мы начинаем использовать шаблоны текста. Скачать шаблоны текста и получить более подробную информацию по их установке и использованию можно тут.
Для оформления программного кода используется табуляция (клавиша Tab). С помощью табуляции можно смещать программный код на определенное расстояние, тем самым добиваясь выравнивание программного кода. Табуляция не оказывает влияние на выполнение программного кода (не ускоряет и не замедляет выполнение программы) а лишь делает программный код более читабельным.
При изучении данного урока рекомендуем Вам познакомиться со следующими теоретическими разделами нашего сайта:
2 часть 7 урока
Отчеты – прикладные объекты конфигурации, предназначенные для обработки накопленной информации и получения сводных данных в удобном для просмотра и анализа виде. Конфигуратор позволяет формировать набор различных отчетов, достаточных для удовлетворения потребности пользователей системы в достоверной и подробной выходной информации. Каждый отчет может иметь несколько форм и макетов.
Макеты - это подчиненные объекты конфигурации, позволяющие хранить в конфигурации различные данные, требующиеся для отображения в процессе работы как всего прикладного решения, так и отдельных его объектов, например, отчетов.
Макеты могут содержать данные самых разных видов. Это может быть табличный документ, который напоминает электронные таблицы и широко используется при формировании выходных форм документов и отчетов. Такжеэто может быть текстовый документ или двоичные данные. Макет также может содержать ActiveDocument (например, документ Word, лист Excel или рисунок CorelDRAW), HTML-документ или географическую схему.
Скачать конфигурацию, создаваемую на 7 уроке (без выполненного практического задания)
Итоги 7 урока
1. Мы познакомились с установкой отбора в режиме Конфигуратора и 1С Предприятие.
2. Мы научились использовать шаблоны текста для написание программного кода.
3. Мы познакомились с объектами системы 1С - Отчетами и макетами.
4. Мы научились создавать отчеты с использованием объектной модели.
Практические задания по 7 уроку
Практические задания по 7 уроку будут вам представлены сразу же после успешного решения теоретического теста:
Пройти тест на понимание материала 7 урока
Мы настоятельно рекомендуем вам переходить к изучению следующего урока только после выполнения всех теоретических и практических заданий по данному уроку.
К оглавлению |
Перейти к 8 уроку |
Комментарии
Ну наконец-то седьмой урок. Спасибо.
Влад, подскажите, какую литературу по 1С стоит изучить для начинающих?
Есть очень хорошая книга: Радченко М.Г., Хрусталева Е.Ю. "1С Предприятие 8.2. Практическое пособие разработчика". Других книг с таким подробным и доступным изложением материала не встречал.
А как эта книга ???Ажеронок В.А., Габец А.П., Гончаров Д.И. и др. - Профессиональная разработка в системе 1С Предприятие 8. (2-е изд.) В 2-х томах.
Очень подробная книга: Ажеронок В.А., Габец А.П., Гончаров Д.И. и др. - Профессиональная разработка в системе 1С Предприятие 8. (2-е изд.) В 2-х томах. Написана сухим языком, но все по делу. Настоящий справочник 1С разработчика.
Влад, а как у элемента формы (тип булево) скрыть заголовок, если значение ЛОЖЬ?
Игорь. На форме (в конструкторе форм) реквизит с типов булево отображается флажком (можем поставить галку - это Истина, без галки - Ложь), а заголовок - это надпись переж этим флажком (или после, в зависимости от настройки свойства "Положение заголовка"). Если свойству "Положение заголовка" установить значение "Нет" - заголовок выводиться не будет
Влад, здравствуйтене могу открыть 7-й урок?
Bugi, урок будет доступен в субботу (завтра).
уже 31 а его все нет
Для Игоря. По поводу как у элемента формы (тип булево) скрыть заголовок, если значение ЛОЖЬ? Тут возможны 2 варианта: если БулевРеквизит - это реквизит формы (присутсвует только на форме и среди реквизитов справочника его нет) и 2 вариант: если БулевРеквизит - это реквизит справочника Напоминания. Отличия будут лишь в том, как нам считать его текущее значение. Привожу листинг: 1 вариант: Если ЭтаФорма.БулевРеквизит = Ложь ТогдаЭлементы.БулевРеквизит.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; Иначе Элементы.БулевРеквизит.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто; КонецЕсли; 2 вариант: Если Объект.БулевРеквизит=Ложь ТогдаЭлементы.БулевРеквизит.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; Иначе Элементы.БулевРеквизит.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто; КонецЕсли;
Для AHDPOHNG. Видео опубликовано.
Добрый день, Влад! А вот интересует такая ситуация. Есть форма документа, в нем етсь три реквизита: Дата Начала, Дата Окончания и Коэфициент. (Даты отображаются - день, месяц, год). Как прописать код, чтобы в при изменении даты окончания сразу рассчитывался коэфициент.? Если дата окончания больше даты начала на 1 месяц, коэфициент должен быть равен 1. Если дата окончания больше на 20 дней, то коэфициент равен 0,66 (20/30), или же 064 (20/31), в зависимости от того, какой месяц.
Для Criativve. У программистов есть поговорка: сделать легко - сложно придумать как именно сделать. Если вы сможете написать на листке просто математическую модель того расчета, какой вы хотите - то проблем с реализацией нет и я легко помогу (хотя, уверен вы и сами сразу же справитесь самостоятельно). Как я понимаю какие есть варианты: 1. использовать функцию ДеньГода(<Дата>) - определяет номер дня в году для указанной даты. Определяем разницу между номером дня в году Конечной и начальной даты.2. Если ДатаНачала и ДатаКонца можут отличаться на год и более, то можно из ДатыОкончания вычесть ДатуНачала - получем количество секунд - разницу между этими данными; 3. Если РазницуМеждуДатами разделить на 60 сек*60 мин * 24 часа, то получим число дней. Если у нас фиксируется время (часы минуты и секунды), то деление будет с десятичной частью и в этом случае можно использовать функцию Цел(<Число>) - она возвращает только целую часть числа. Так мы узнаем разность в днях. А дальше разность в днях нужно каким-то образом сравнивать с количеством дней в месяце или месяцах. PS: как я понимаю, такие коэффициенты могут понадобиться для определения приоритетов выполнения напоминаний и важности просрочки того или иного напоминания. Но могу ошибаться :)
Влад, спасибо, все получилось, искал типа: Элементы.БулевРеквизит.Заголовок.Видимость.По уроку-ищу, как бы сделать ответ на Вопрос с кнопками ЗавершитьПродлить. Если Завершить, тогда..., если продлить, тогда...Как затолкать СписокЗначений в Функцию ВОПРОС? Нам же надо выбирать НЕ между Завершить и Отменить..., я думаю.
Игорь. Спасибо за наводку. В уроке я допустил ошибку - вы ее исправите в домашнем задании тогда :) Дело в том, что вопросы для одноразовых напоминаний и периодических мы должны делать разными (в первом случае завершить, а во втором спросить "Продлить напоминание?"). У нас логика следующая - периодическое напоминание только продлевается, завершить его можно лишь с помощью изменения реквизита Статус (как мы и делали вначале) 7 урока. А одноразовые можно только завершить. Таким образом программа сама знает Продлить или Завершить. Отвечая на вопрос: в вопросе нельзя использовать свои произвольные кнопки - их перечень зашит в систему. Обычно выходом является либо показ значений списком после нажатия кнопок либо создание формы с нужными кнорками и ее вызов при нажатии на нашу кнопку - в данном случае мне кажется это излишним.
Влад, а как же При использовании типа СписокЗначений:...В качестве значения может использоваться значение перечисления КодВозвратаДиалога, а также другие значенияПредставление – задает текст кнопки.Ну, не важно,просто для общего развития.Я Вас понял.
Действительно можно. Никогда не обращал внимание, что можно задать представление :)
Влад, здравствуйте!Спасибо большое за Ваши уроки. Всё очень понятно и интересно.Скажите, пожалуйста, какую литературу Вы можете порекомендовать для начинающих 1С программистов? Чем вы пользовались при изучении? Спасибо .
Я бы порекомендовал любую литературу от главного методолога 1С Радченко М.Г. Например, Радченко М.Г., Хрусталева Е.Ю. "1С Предприятие 8.2. Практическое пособие разработчика". Изложена простым язком и лаконично. Материала вполне достаточно, чтобы "въехать" в идеологию платформы 1С 8.
Спасибо! И еще один вопрос. Я часто слышу: толстый клиент, тонкий клиент, веб-клиент. Не могли бы вы своими словами объяснить, что это и чем конкретно они отличаются?
Для Инны. Что же такое"толстый", "тонкий" и Web-клиент? Ответ перенес в раздел "Вопросы по 1С".
Влад, когда Вы планируете продолжить урок?
7 урок будет полностью оформлен либо до праздников, либо во время праздников.
Празднование Победы так-то закончилось. Мы уж заскучали...
Да, Спасибо Вам большое за материал!!! Просто супер!!! Ждем с нетерпеньем!!!
Спасибо Вам! Очень интересно и доступно все объясняете!
Влад, вот скажите, почему курсов по 1С захватывающих платформу, язык программирования, написание конфигураций с нуля куча, а вот курсов где бы разбирались самые распространенные типовые конфтгурации (УТ, БП, Розница) нет?Ведь именно это и нужно при устройстве на работу, у нас в 200 тысячном городе даже во франчайзи за тарелку супа без знания типовых конфигураций на работу не берут... :( , а сам я установил, посмотрел, конечно много всего и самому сложно разобрать код... Спасибо.
Спасибо за предложение, Smilk. В планах уже давно есть сделать материалы по типовым конфигурациям, для этого я даже сделал отдельный блок в разделе Пошаговые примеры. Постараюсь не сильно затягивать с его наполнением. :)
А сколько всего планируется уроков?
Пока не думал об этом, но материала хватит и 20 уроков. А также хотелось бы еще сделать уроки по 1С 8.3 и мобильной платформе (как написать программу на 1С для айфона или телефона с андроидом).
А как сделать регистарцию по остаткам, учитывая валюту и пользователя. А еще бы добавить процент на скидку, или процент при переводе денег, или снятии с карты (с электронного счета). Где можно подобную информацию с примерами посмотреть?
Влад, с личными напоминаниями для каждого пользователя реализовать удалось динамическим списком. Теперь хотелось бы вывести только те напоминания, которые "В работе". Еще один динамический список в туже процедуру?
Отбой...Настройка списка в Конфигураторе,разобрался :)
Ссылка "Выгрузка эталонной базы, создаваемой на 6 уроке с выполненным домашним заданием" не работает(((
Спасибо за сигнал. Тепереь конфигурация 6 урока скачивается.
Не дождался ответа, но с валютой и пользователями разобрался. Осталось сделать скидки при расходах в процентах или суммах, и комиссию при переводах. Влад, подскажи пожалуйста!
Влад, я дико извиняюсь, но с отбором по работающим и уволенным-проблема.Можете в своей конфигурации ПошаговогоПримера реализовть увольнение сотрудника Только из группы Работающие, а не из всего справочника?
Влад!!!! Помоги пожалуйста, направь на путь истенный... Есть список напоминаний. Я добавил реквизит пользователь (например я и жена пользуемся напоминаниями). В форме списка устанавливаю поле выбора пользователя. Как сделать отбор напоминаний определенного пользователя не через условное оформление, а через поле выбора, а то каждый раз в условном оформлении менять совсем неудобно. Пожулуйста!!!
Для user-sergey. В общем алгоритм выглядит так: При запуске приложения мы считываем какой пользователь зашел в систему и либо запоминает в глобальную переменную данное значение (глПользователь), либо находим его в справочнике Пользоватли (естественно, что нужно будет провериьт есть ли такой пользователь в справочнике и если его нет, то добавить). Вариант с глобальной переменной попроще - давайте по нему и пойдем. При создании нового напоминания мы будем строковому реквизиту Автор присваивать значение нашей глобальной перемнной глПользователь. А дальше при открытии формы напоминания нам лишь нужно ПРОГРАММНО установитть отбор по реквизиту АВТОР. На сайте есть материал по написанию программного отбора в справочнике http://1c-uroki.ru/articles/1C_otbor_v_dinamicheskom_spiske. Для того чтобы в глобальну. переменную записать значение нашего пользователя можно использовать функцию ИмяПользователя()
Здравствуйте!Влад, не могу понять почему код для "КнопкиЗавершить", который Вы создаёте в процессе 7-ого урока не даёт результатов в моей конфигурации, хотя я последовательно создавал её по шагам и ДЗ урков. При этом если я вставляю код в конфигурацию с выполненным ДЗ 6-ого урока - работает. Есть какая-нибудь хитрость с кнопкой?
Простите, за неточность, я имел в виду, что код работает в вашей эталонной базе 6-ого урока с выполненным ДЗ. А в моей - нет.
Для Владимира. Мало скопировать текст программного модуля. Нужно чтобы КнопкаЗавершить была связана с соответсвующей командой, а эта команда с процедурой программного модуля (делается в палитре свойств). Проверьте эти связи.Если же выскакивает ошибка при нажатии на кнопку в режиме 1С, то внимательно прочитайте на что ругается система и исправьте: скорее всего это просто опечатка, забытый разделитель команд (;) либо завершение условия (КонецЕсли), цикла, процедуры и т.п.
Влад, оказалось, что этот косяк происходил из-за того, что я внёс сначала ежедневные напоминания в "Список Выбора" в свойствах реквизита "ТипНапоминания" со значением "4" между "0" и "1", чтобы не возиться с перенумерацией в процедуре "ПрименитьОформление". С такими значениями задание 6-ого урока получилось: оформление работало, а вот КнопкаЗавершить не реагировала, пока я не переприсвоил значеия в "Списке Выбора", чобы они были по порядку - тогда всё заработало.А вообще, Большое Спасибо! Очень хороший материал. Жду продолжения 7-ого урока и др...
А когда выйдет вторая часть 7 урока?
И если она вышла где её можно найти?
В строке ------Если Вопрос("Продлить напоминание",РежимДиалогаВопрос.ОКОтмена,0)=КодВозвратаДиалога.ОК-----для периодических напоминаний нужно писать ПРОДЛИТЬ НАПОМИНАНИЕ, а не ЗАВЕРШИТЬ.
Согласен с H2O, зачем для разовых напоминаний сделали сразу кнопку завершить, можно выставить новую дату и нажать продлить. В плане примера разнообразия хорошо, но все продления должны быть единым стилем.Я так понимаю продолжения уроков ждать уже не стоит?И, кстати, спасибо за курсы!
Спасибо за ваши предложения. Продолжение уроков будет. Более подробно напишу в анонсе и в новостях.
Спасибо огромное за курсы!! очень грамматно и понятно.Когад примерно ожидать вторую часть и продолжение остальных уроков? хочется поскорей уже организовать отчеты, ну и продолжить обучение конечно:)
Спасибо! Прямо в данный момент выклдываю видео 2 части 7 урока. Все материалы, тест и домашнее задание постараюсь оформить сегодня.