Урок 6. Курс 1С для начинающих
1 часть урока
В начале шестого урока мы с вами подробно разберем решение пункта 2 домашнего задания по 5 уроку нашего курса. Разбор домашнего задания заканчивается на 6:18.
В рамках решения пункта 2 домашнего задания мы:
- создали общий модуль СерверныеПроцедуры;
-в общем модуле СерверныеПроцедуры создали экспортную функцию ПрочитатьКонстантуПодтверждение() Экспорт;
- вызвали функцию ПрочитатьКонстантуПодтверждение() из модуля управляемого приложения, чтобы прочитать значение константы Подверждение.
Выгрузка эталонной базы, создаваемой на 5 уроке с выполненным домашним заданием
для установки эталонной базы (конфигурации) вам понадобится скачать платформу 1С Предприятие 8.2 (версия для обучения) или использовать платформу 1С:Предприятие версии не ниже 8.2.15.301.
В каких случаях используются общие модули?
Если процедура или функция вызывается в более чем одном месте конфигурации или если нам нужно выполнить действия на стороне сервера (например, обратиться к базе данных), а в данном модуле это невозможно , то в таких случаях следует использовать Общие модули!
Свойства общих модулей
Главной особенностью Общих модулей является то, что в них нельзя объявлять общие переменные. Дополнительную информацию смотри тут.
Свойства конкретного Общего модуля задаются в его палитре свойств:
Глобальный – если флаг установлен, то процедуры и функции данного модуля становятся доступны в глобальном контексте, то есть их можно вызвать в любом месте конфигурации, обращаясь без название Общего модуля (по имени самой процедуры или функции). При этом название процедур и функций в этом Общем модуле должны быть уникальны в рамках глобального контекста.
Сервер – процедуры и функции данного общего модуля могут быть выполнены на стороне сервера.
Внешнее соединение – процедуры и функции данного общего модуля могут быть выполнены при подключении внешним источником (например, COM).
Клиент – процедуры и функции данного общего модуля могут быть выполнены на стороне клиента.
Вызов сервера - флаг, разрешающий из клиентских процедур и функций (выполняемых на стороне клиента) вызывать процедуры и функции данного общего модуля.
Привилегированный – если значение Истина, то в данном общем модуле будет отключена проверка прав доступа. Значительно ускоряет выполнение процедур и функций модуля, но не стоит злоупотреблять данной настройкой.
Повторное использование – определяет настройки возвращаемых значений. Если опция включена – то после первого выполнения система запомнит значение для данных входных параметров и будет возвращать уже готовое значение. Может принимать следующие значения:
- не используется – отключение повторного использования;
- на время вызова – на время выполнения определенной процедуры;
- на время сеанса – пока пользователь не закрыл сеанс (не завершил работу с программой).
Первая часть урока завершается созданием формы элемента нашего справочника Напоминания. В результате у вас должна получиться примерно такая форма:
2 часть урока
Вторая часть урока полностью посвящено программированию формы элемента справочника Напоминания: изменению свойств реквизитов формы справочника в зависимости от поведения пользователя.
Для доступа к текущему значению реквизита объекта, расположенного на форме (в данном случае, для доступа к значению реквизита справочника Напоминания) используется свойство Объект:
//прочитать значение реквизита
УстановленСрок = Объект.Срок;
//установить новое значение
Объект.Срок = '2014.02.02';
Для управления свойствами реквизитов формы используется свойство Элементы:
//прочитать значение свойства реквизита
ДоступенЛиРеквизит = Элементы.Срок.Доступность;
//установить новое значение свойства
Элементы.Срок.Доступность = Истина;
Скачать конфигурацию, создаваемую на 6 уроке (без выполненного практического задания)
Итоги 6 урока
1. Мы познакомились с общими модулями.
2. Мы научились настраивать свойства общих модулей.
3. Мы научились программно читать и устанавливать текущие значения в реквизитах формы.
4. Мы научились программно управлять свойствами реквизитов на форме.
Практические задания по 6 уроку
Практические задания по 6 уроку будут вам представлены сразу же после успешного решения теоретического теста:
Пройти тест на понимание материала 6 урока
Мы настоятельно рекомендуем вам переходить к изучению следующего урока только после выполнения всех теоретических и практических заданий по данному уроку.
К оглавлению |
Перейти к 7 уроку |
Комментарии
Здравствуйте! Когда следующий урок?
Я уже боюсь называть точную дату :) Обязательно случится какой-то аврал, форс-мажор и т.д. Скажу просто: я помню про урок, постараюсь завершить его оформление в кратчайшие сроки.
Влад, скажите, в каком уроке будет подробней рассказано о встроеном языке 1с ?
Leo, уверяю вас, что уже на 6 уроке программирования более чем достаточно... :)
Влад,а если основных форм несколько,какая из них будет открываться при открытии,ну справочника,например?
На 3 уроке мы говорили о том, что типов форм у объекта Справочник может быть 5: форма элемента, форма группы, форма списка, форма выбора и форма выбора группы. Так вот, в каждом типе может быть назначена только 1 основная форма. В верхней части окна формы как-раз и отображаются (устанавливаются) 5 типов форм, которые будут открываться по умолчанию. Если мы попытаемся, например, для элемента справочника задать 2 форму по умолчанию, то она и станет формой по умолчанию и будет отображаться в вехней части окна Формы (в строке Форма элемента). PS: если уж быть до конца точным, то типов форм у справочника может быть 6: мы может также создать Произвольную форму. Такие формы мы можем использовать в каких-либо специфических ситуациях.
Текстова часть 6 урока оформлена, в ближайшее время постараюсь оформить тест по 6 уроку.
как я вам благодарен за такие уроки!! ничего лучше я пока не нашел, хотя перелопатил не один курс!! Думаю со мной многие согласятся. У меня 2 вопроса:1. Ваши уроки дают знания и навыки, а насколько востребованы именно эти навыки в будущей практической работе по сопровождению/разработке прикладных решений для 1С? Что чаще всего приходится делать програмисту 1С на предприятии?2. Как вас спонсировать? Я думаю, что все мы, ваши ученики, сможем вас поддержать, это в наших интересах.
Здравствуйте.Спасибо за уроки.К сожалению, не грузится теоретический тест урок 6 (черный экран).
Для S. Спасибо Вам за теплые слова в адрес моего сайта и моей работы! Ответы на ваши вопросы я дам в новостном блоке сайта (не хочется писать слишком кратко и чтобы ответы на эти важные вопросы потерялись). Когда я говорю важные вопросы, то прежде всего имею ввиду вопросы практического применения навыков конфигурирования 1С 8.
Для tarasovatk. Я знаю, что тест по 6 уроку пока не грузится. Это потому, что ссылку на тест я сделал раньше, чем оформил сам тест. Сегодня допишу скрипт и все будет работать. Спасибо за сигнал.
слушайте, а если мне надо сделать ежедневную напоминалку! в форме это не предусмотрено...я вот у себя добавил следом за разовым напоминанием - ежедневное.
Поздравляю, S. Вы меня раскусили! Это один из пунктов домашнего задания по 6 уроку. Подумал что всем будет интересно попробовать немного переделать то, что мы сделали вместе на уроке.
мы много работаем над формой элемента справочника Напоминания. А ведь первой мы видим форму списка! Именно там можно сделать настройки, повышающие ее информативность. Я планирую ввести "галочку" "Скрыть завершенные", выводить наименование реквизита "Тип напоминания" ну и еще кое что..А у вас планируется настройка формы списка? Короче говоря, огласите, плиз, план наших занятий, если это не комерческая тайна, конечно. Какие уроки ждут нас в ближайшее время?
Все формы мы в итоге настроим, плюс сделаем специальную парольную защиту на отдельные разделы в режиме 1С Предприятие и обсудим для чего это может понадобиться, сделаем отчеты по доходам и расходам, посмотрит как можно оформлять деньги, кторые мы даем или берем в долг, кредиты, подумаем как фиксировать комиссионные отчисления при переводах, оплатах и т.д. Я сам использую такой Персональный менеджер уже несколько лет и постоянно к нему что-то прикручиваю. Поэтому при подготовке уроков я могу вносить кое-какие коррективы в реализацию для более понятной демонстрации. Общая концепция следующих уроков следующая. Закончим с напоминаниями, вернемся к контактам - сделаем быстрый поиск и отчет по именинникам, затем доработаем нашу финансовую часть и наваяем финансовые отчеты. Заодно познакомимся со всем способами разработки отчетов: с помощью методов встроенного языка, с помощью SQL запросов и спомощью СКД.
Влад, почему при изменении шрифта заголовка переключателя тип напоминания, да и у других реквизитов формы тоже, форма не растягивается и теряется часть текста заголовка? Может это в настройках платформы что-то не так?
На оформление реквизитов могут влиять настройки (свойства) групп, в которых они располагаются. Так, например, у Группы ПЕРИОДИЧНОСТЬ есть свойства ШИРИНА ПОДЧИНЕННЫХ ЭЛЕМЕНТОВ, РАСТЯГИВАТЬ ПО ВЕРТИКАЛИ и РАСТЯГИВАТЬ ПО ГОРИЗОНТАЛИ. Это свойства самой группы, но они вляют на то, как будет отображаться находящееся в ней Поле переключателя ТИП НАПОМИНИЯ. Чтобы все отображаось корректно (если я правильно понял) достаточно ГРУППЕ ПЕРИОДИЧНОСТЬ выставить ШИРИНА ПОДЧИНЕННЫХ ЭЛЕМЕНТОВ - Авто, РАСТЯГИВАТЬ ПО ВЕРТИКАЛИ - Авто, РАСТЯГИВАТЬ ПО ГОРИЗОНТАЛИ - Авто. Если при таких настройках не помещается - то можно поиграться со свойством ШИРИНА ПОДЧИНЕННЫХ ЭЛЕМЕНТОВ. И если все-равно не помещается - можно вручную установить свойство ШИРИНА для данной группы.
Влад, добрый день, как можно обратиться к свойствам элементов формы из серверной процедуры? И, еще, как добиться, чтобы при открытии формы списка напоминаний они сортировались по дате?Если настраивать в режиме 1сПр, то сортировка по наименованию возвращается...
Игорь, отличные вопросы. К элементам формы можно обращаться и на стороне сервера. Важно лишь, чтобы директива компиляции была "На сервере", а не "НаСервереБезКонтекста". Вот пример как мы можем сделать надписть Наименования напоминания красным цветом - делаю на стороне сервера: &НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Элементы.Наименование.ЦветТекстаЗаголовка= новый цвет(255,0,0);КонецПроцедуры С сортировкой это старые глюки :) считается что пользователь может для себя сохранить любую настройку формы, но на практике некоторые настройки слетают, сортировка в том числе. Для того, чтобы она была всегда такой как надо (по умолчанию) нужно это делать в Конфигураторе. Для этого открываем Форму списка справочника, выбираем реквизит список (в право части) - в палитре свойст находим "Настроить список".
Влад, спасибо, но при таком раскладе:Элементы.Наименование.ЦветТекстаЗаголовка= новый цвет(255,0,0) этим цветом окрашиваются все наименования всех строк "напоминаний", а надо только то напоминание, которое соответствует условию выборки при переборке строк напоминаний. Выборка.Наименование есть, а ЦветаФона (как у элемнта) у него нет.А с сортировкой помогло, сам ни когда бы не догадался. Про оформление в уроке все понятно, вот и искал тщетно, как в конфигураторе настроить весь список...Спасибо еще раз...
Ну,в общем,не сложный урок.Можно,наверное,переходить к следующему.Кто против? :)
Намек понял. :) Завершаю оформление 7 урока!
Для Игоря. Теперь кажется дошло!! :) Если нужно чтобы подсвечивались только те напоминания, которые содержат определенные символы или слова (напрмер, чтобы все напоминания, которые содердат словл важно имели красный фон, а со словами РАБОТА - имели красный шрифт), то для этого нужно также использовать "Настройка списка". Оно отлично устанавливается как в режиме 1С, так и в режиме Конфигуратора (в режиме 1С установится только для текущего пользователя, а в режиме конфигуратора для всех "по умолчанию"). Для этого идем в Настройку списка на закладку Условное оформление (я уже писал как его найти в конфигураторе). Выбираем что именно мы хотим выделить (фон, шрифт, задаем какой цвет и т.д.), далее указываем поле (или поля, можно выбрать все поля), которые нужно окрашивать, а затем создаем новый отбор - это условие, при выполнении которого будет применяться данное оформление (окраска напоминания). Тут мы указываем поле, вид сранения - выбираем "содержит" и пишем слово или словочетание, которое и будет являться условием для окрашивания.
Для Влада!Я просто хотел выделить фоном то напоминание в списке, у которого срок истекает ТекущаяДата(), т.к. вывел список напоминаний на рабочий стол.Все реализовалось успешно.Настройку списка отработал вдоль и поперек. Еще раз спасибо за Ваши уроки...
Игорь, через оформление такое не получится. Нам придется писать программный код. Но мы все-равно планируем это реализовать: красным будут выделяться просроченные напоминания, зеленым - те, что на сегодня, а светло-серым шрифтом будут оформляться ближайшие напоминания.
В общем, удалоь программно выделить актуальное напоминаие.Теперь как увеличить дату на год, а тем более на несколько лет. Ведь они могут вклчать високосные года(могут и не включать).Может есть метод какой особый?!
Конечно есть. Игорь, вы бежите вперед паровоза - мы на 7 уроке все это будем делать :) Хотя я рад - значит я правильно объясняю и сам вас наталкиваю на соответсвующие рассуждения.К дате можно прибавить число - это количество секунд - данный метод подойдет для прибавления дней и недель, а можно прибавить количество месяцев (ДобавитьМесяц(<Дата>, <ЧислоМесяцев>), если ЧислоМесяцев прибавить со знаком минус, то месяцы вычтутся) - там мы можем прибавить месяцы и даже годы (месяцы *12). При этом 1С умеет вычислять и высокосность и разнок количество дней в месяцах. например если напоминание стоит на 31 января и мы прибавим месяц - то получится не 31 февраля (которого не может быть), а 28 февраля.
Да,Влад!После того, как написал код с кучей Если(при чем это работает при продлении напоминания только на 1год)...Век живи,...С помощью вашей подсказки ДобавитьМесяц() все уместилось в пол-строки и работает при всех условиях.Можно переходить к 8 уроку :)
Ребят подскажите как менять цвета фона элементов списка справочника "напоминание" , сам не допктрил как :) , а ссылка на выполненое ДЗ не работает... Спасибо.
Smilk, отркпыть форму списка напоминаний в режиме 1сПредприятие. Все действия-Настроить список-Условное оформление-Добавить, и в редакторе условного оформления в условиях выбрать тип напоминания(в зависимости от настроек:Прим: 0-одноразовое, 1-ежедневное установить условие) На вкладке Оформление выбери цвет фона или цвет текста...
Большое спасибо Игорь, все так просто оказалось, а я пытался с помощью кода это сделать :)
После написания в процедуру кода Элементы.КнопкаЗавершить.Видимость=Ложь; В пользовательском режиме при открытии формы элемента возникает ошибка "Несоответствие свойства и элемента данных XDTO. Свойство: 'name' " В чем причина такой ошибки? Если убрать записи с кнопкой, то все работает без ошибки.
У вас Объект кнопка с именем "КнопкаЗавершить"? И работает ли остальной код, если эту строку закоментировать?
Да, имя объекта "КнопкаЗавершить". При возникновении ошибки данный код срабатывает через раз. Если закомментировать все элементы кнопки, т.е. Элементы.КнопкаЗавершить.Видимость, Элементы.КнопкаЗавершить.Заголовок, то остальной код работает без ошибок.
Юлия, тогда вы что-то упустили. Просмотрите повнимательнее 2 часть 6 урока. Если Строка(Объект.Статус)="Завершено" тогда...Если у вас именно так написано в начале процедуры ПрименитьОформление,то все должно работать.Возможно Вы не использовали функцию Строка()
Юлия, именно для таких случаев я и выкладываю конфигурации каждого урока. Для начала скачайте мою конфигурацию 6 урока (находится в конце материала 6 урока перед тестом), убедитесь. чтов се работает правильно, а затем просто сравните со своей.Особое внимание обратите на название кнопки и ее свойства, а также на программный код оформления. Уверен, вы быстро найдете в чем была ошибка. Допускаю, что возможно у вас в названии кнопки где-то вместо русской буквы написана похожая, но английская (например, буквы a, o, K), причем таке может быть как в имени самой кнопки, так и в программном коде. Ппопробуйте написать название русскими буквами и заменить везде, где оно встречается.
Спасибо за ответы. Я уже много раз сравнивала все коды, их написание и условия. С вашей конфигурацией не пробовала. Попробую. Спасибо.
Привет Влад! Спасибо большое тебе за уроки. Это - лучшее из того, на что наталкивался в сети. Дело в том, что смотрел-смотрел я на тот конфигуратор 1с8, а руки все не доходили (да и в 7-ке, дальше поменять пару строк на документах не лез). И вот решил "разобраться". Очень качественно и доступно изложен материал. Смотришь - душа радуется.Единственно,что мне мешает - прошлый опыт. Дело в том, что одно время по работе - шаманил с access-ом. И теперь мозг постоянно пытается приравнять понятия. А архитектура-то сильно разная. Методы разработки - тоже. Но потихоньку(урока с 5-го, когда прошло время и осмыслил сделанное) - начал въезжать в логику конфигуратора. Зато с кодом проблем особых нет. Играюсь с Delphi на любительском уровне - тут опыт очень помогает. Очень похоже на "русский Паскаль". Даже в задании 5 урока - почти дошел до истины. Особенно в свете предыдущего урока, где рассказывалось о клиент-серверных особенностях 1с. И если бы про галочки хоть где-то упоминалось в уроках - победил бы скорее всего и наверняка разобрался бы, если бы сам задумал такой как мы создаем проект, когда весь интернет в ход пошел бы, чего в данном случае не делал.))) Единственно что - в свете предыдущих задач - все можно было найти в уроках или вычислить логически, а тут нужно было именно знать КАК. Кстати это задание - понравилось - больше всех. Остальное - слишком просто.А вопрос мой - такой. Скажи? Можно ли тут заглянуть "под ковер"? Хочу видеть или хотя-бы представлять схему рел.БД. Увидеть связи таблиц, что мы создаем?
И да. По мере усложнения уроков (а до сих пор - детский сад почти), будет возникать тьма-тьмущая вопросов. Нет, не по урокам, а по конфам пользователей. Ведь изучив основы - по любому народ кинется пробовать свои силы в создании лично-ориентированых конфигураций. Уже даже можно, но пойдет с потом и кровью, хотя пойдет. Так вот. Не плохо было-бы прикрутить форум хоть какой-то к сайту. Где ты, Влад, будешь "Гуру", а народ друг другу сам подсказывать сможет. Иначе один не справишься...))). Комменты - не очень удобный инструмент...
Добрый день! А у меня такой вопрос: Моя КнопкаЗавершить появляется/исчезает только после перевыбова типа напоминания. Как так то? Код написан одинаково...
Для VrednayaGIRL. Нужно в процеруде ПриОткрытии() вызвать нашу процедуру с оформлением кнопки. Смотрите 2 часть 6 урока начиная с 14 минуты.
Влад, ты монстр! спасибо!
Вот такую ошибку выдает, что делать? {МодульУправляемогоПриложения(8,11)}: Переменная не определена (СерверныеПроцедуры)Результат=<<?>>СерверныеПроцедуры.ПрочитатьКонстантуПодтверждение();
уже исправил)
Спасибо вам большое за уроки!! Все понятно, все здорово пока получается. Однако есть вопрос по 3 заданию 6 урока. Может я бегу впереди поровоза, но не совсем здорово понимаю, зачем мы создавали форму списка справочника напоминания. Может она где-то вызываться должна, да я не разобрался. И если так, то где? И самое смешное, я не нашел, где устанавливать сортироовку на поле "срок". Попробовал задать программно, но не могу проверить, потому что не знаю, где должна отображаться эта форма)) Подскажите пожалуйста. Заранее спасибо!
Добрый день!Уроки супер, но застрял на 6 подскажите пожалуйста когда настраиваем ТипНапоминания СписокВыбора создаю но не могу туда поставить цифры и слова, жму добавить потом клацаю на клавиатуру, а нечего не вводится, как починить)
Для Дениса Юрьевича. Очень странно. Убедитесь, что реквизит ТипНапоминанияимеет тип "Число". В крайнем случае скачайте мою конфигурацию со страницы урока и попробуйте добавлять, редактировать или удалять новые значения. Уверен,что все получится.
Скажите, пожалуйста, что такое веб-клиент, тонкий клиент и толсыйого клиент
При создании формы элемента справочника убрала пометку Назначить форму основной. Теперь при просмотре в 1С открывается нередактированная форма. Можно как-то это исправить?
Для Зинаиды. Веб клиент - это когда мы (пользователь, клиент) работаем с программой с помощью интернет браузера. Как правило обращается к серверу с помощью локальной сети или интернет. Тонкий клиент - это когда все вычисления выполняются на сервере. При таком режиме работы можно использовать медленное соединение и даже периодически соединение может ненадолго разрываться - на работе программы это не скажется. Ну и толстый клиент - это стандартный клиент. Для работы с программой требуется устойчивое соединение с сервером и высокая пропускная способность сети. Часть вычислений выполняется на компьютере пользователя, поэтому скорость работы программы зависит от компьютера пользователя.