Главная Уроки 1С Урок 6. Курс 1С для начинающих

Урок 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 уроку

 

Количество просмотров: 91204

Комментарии

  • Здравствуйте! Когда следующий урок?

    28 декабря 2013 , 22:35
  • Я уже боюсь называть точную дату :) Обязательно случится какой-то аврал, форс-мажор и т.д. Скажу просто: я помню про урок, постараюсь завершить его оформление в кратчайшие сроки.

    30 декабря 2013 , 09:27
  • Влад, скажите, в каком уроке будет подробней рассказано о встроеном языке 1с ? 

    01 февраля 2014 , 15:53
    Leo
  • Leo, уверяю вас, что уже на 6 уроке программирования более чем достаточно... :)

    02 февраля 2014 , 11:56
  • Влад,а если основных форм несколько,какая из них будет открываться при открытии,ну справочника,например?

    04 февраля 2014 , 20:44
  • На 3 уроке мы говорили о том, что типов форм у объекта Справочник может быть 5: форма элемента, форма группы, форма списка, форма выбора и форма выбора группы. Так вот, в каждом типе может быть назначена только 1 основная форма. В верхней части окна формы как-раз и отображаются (устанавливаются) 5 типов форм, которые будут открываться по умолчанию. Если мы попытаемся, например, для элемента справочника задать 2 форму по умолчанию, то она и станет формой по умолчанию и будет отображаться в вехней части окна Формы (в строке Форма элемента). PS: если уж быть до конца точным, то типов форм у справочника может быть 6: мы может также создать Произвольную форму. Такие формы мы можем использовать в каких-либо специфических ситуациях.

    05 февраля 2014 , 09:26
  • Текстова часть 6 урока оформлена, в ближайшее время постараюсь оформить тест по 6 уроку.

    21 февраля 2014 , 12:46
  • как я вам благодарен за такие уроки!! ничего лучше я пока не нашел, хотя перелопатил не один курс!!  Думаю со мной многие согласятся. У меня 2 вопроса:1. Ваши уроки дают знания и навыки, а насколько востребованы именно эти навыки в будущей практической работе по сопровождению/разработке прикладных решений для 1С? Что чаще всего приходится делать програмисту 1С на предприятии?2. Как вас спонсировать? Я думаю, что все мы, ваши ученики, сможем вас поддержать, это в наших интересах. 

    01 марта 2014 , 22:20
    s
  • Здравствуйте.Спасибо за уроки.К сожалению, не грузится теоретический тест урок 6 (черный экран).

    02 марта 2014 , 17:25
  • Для S. Спасибо Вам за теплые слова в адрес моего сайта и моей работы! Ответы на ваши вопросы я дам в новостном блоке сайта (не хочется писать слишком кратко и чтобы ответы на эти важные вопросы потерялись). Когда я говорю важные вопросы, то прежде всего имею ввиду вопросы практического применения навыков конфигурирования 1С 8.

    03 марта 2014 , 09:24
  • Для tarasovatk. Я знаю, что тест по 6 уроку пока не грузится. Это потому, что ссылку на тест я сделал раньше, чем оформил сам тест.  Сегодня допишу скрипт  и все будет работать. Спасибо за сигнал.

    04 марта 2014 , 10:06
  • слушайте, а если мне надо сделать ежедневную напоминалку! в форме это не предусмотрено...я вот у себя добавил следом за разовым напоминанием - ежедневное.

    04 марта 2014 , 15:26
    s
  • Поздравляю, S. Вы меня раскусили! Это один из пунктов домашнего задания по 6 уроку. Подумал что всем будет интересно попробовать немного переделать то, что мы сделали вместе на уроке.

    04 марта 2014 , 15:58
  • мы много работаем над формой элемента справочника Напоминания. А ведь первой мы видим форму списка! Именно там можно сделать настройки, повышающие ее информативность. Я планирую ввести "галочку" "Скрыть завершенные", выводить наименование реквизита "Тип напоминания" ну и еще кое что..А у вас планируется настройка формы списка? Короче говоря, огласите, плиз, план наших занятий, если это не комерческая тайна, конечно. Какие уроки ждут нас в ближайшее время?

    05 марта 2014 , 13:40
    s
  • Все формы мы в итоге настроим, плюс сделаем специальную парольную защиту на отдельные разделы в режиме 1С Предприятие и обсудим для чего это может понадобиться, сделаем отчеты по доходам и расходам, посмотрит как можно оформлять деньги, кторые мы даем или берем в долг, кредиты, подумаем как фиксировать комиссионные отчисления при переводах, оплатах и т.д. Я сам использую такой Персональный менеджер уже несколько лет и постоянно к нему что-то прикручиваю. Поэтому при подготовке уроков я могу вносить кое-какие коррективы в реализацию для более понятной демонстрации. Общая концепция следующих уроков следующая. Закончим с напоминаниями, вернемся к контактам - сделаем быстрый поиск и отчет по именинникам, затем доработаем нашу финансовую часть и наваяем финансовые отчеты. Заодно познакомимся со всем способами разработки отчетов: с помощью методов встроенного языка, с помощью SQL запросов и спомощью СКД. 

    05 марта 2014 , 16:53
  • Влад, почему при изменении шрифта заголовка переключателя тип напоминания, да и у других реквизитов формы тоже, форма не растягивается и теряется часть текста заголовка? Может это в настройках платформы что-то не так?

    12 марта 2014 , 08:04
  • На оформление реквизитов могут влиять настройки (свойства) групп, в которых они располагаются. Так, например, у Группы ПЕРИОДИЧНОСТЬ есть свойства ШИРИНА ПОДЧИНЕННЫХ ЭЛЕМЕНТОВ, РАСТЯГИВАТЬ ПО ВЕРТИКАЛИ и РАСТЯГИВАТЬ ПО ГОРИЗОНТАЛИ. Это свойства самой группы, но они вляют на то, как будет отображаться находящееся в ней Поле переключателя ТИП НАПОМИНИЯ. Чтобы все отображаось корректно (если я правильно понял) достаточно ГРУППЕ ПЕРИОДИЧНОСТЬ выставить ШИРИНА ПОДЧИНЕННЫХ ЭЛЕМЕНТОВ - Авто, РАСТЯГИВАТЬ ПО ВЕРТИКАЛИ - Авто,  РАСТЯГИВАТЬ ПО ГОРИЗОНТАЛИ - Авто. Если при таких настройках не помещается - то можно поиграться со свойством ШИРИНА ПОДЧИНЕННЫХ ЭЛЕМЕНТОВ. И если все-равно не помещается - можно вручную установить свойство ШИРИНА для данной группы.

    12 марта 2014 , 12:46
  • Влад, добрый день, как можно обратиться к свойствам элементов формы из серверной процедуры? И, еще, как добиться, чтобы при открытии формы списка напоминаний они сортировались по дате?Если настраивать в режиме 1сПр, то сортировка по наименованию возвращается...

    13 марта 2014 , 17:09
  • Игорь, отличные вопросы. К элементам формы можно обращаться и на стороне сервера. Важно лишь, чтобы директива компиляции была "На сервере", а не "НаСервереБезКонтекста". Вот пример как мы можем сделать надписть Наименования напоминания красным цветом - делаю на стороне сервера: &НаСервереПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Элементы.Наименование.ЦветТекстаЗаголовка= новый цвет(255,0,0);КонецПроцедуры    С сортировкой это старые глюки :) считается что пользователь может для себя сохранить любую настройку формы, но на практике некоторые настройки слетают, сортировка в том числе. Для того, чтобы она была всегда такой как надо (по умолчанию) нужно это делать в Конфигураторе. Для этого открываем Форму списка справочника, выбираем реквизит список (в право части) - в палитре свойст находим "Настроить список".

    14 марта 2014 , 10:17
  • Влад, спасибо, но при таком раскладе:Элементы.Наименование.ЦветТекстаЗаголовка= новый цвет(255,0,0) этим цветом окрашиваются все наименования всех строк "напоминаний", а надо только то напоминание, которое соответствует условию выборки при переборке строк напоминаний. Выборка.Наименование есть, а ЦветаФона (как у элемнта) у него нет.А с сортировкой помогло, сам ни когда бы не догадался. Про оформление в уроке все понятно, вот и искал тщетно, как в конфигураторе настроить весь список...Спасибо еще раз...

    14 марта 2014 , 18:28
  • Ну,в общем,не сложный урок.Можно,наверное,переходить к следующему.Кто против? :)

    17 марта 2014 , 20:04
  • Намек понял. :) Завершаю оформление 7 урока!

    18 марта 2014 , 14:24
  • Для Игоря. Теперь кажется дошло!! :) Если нужно чтобы подсвечивались только те напоминания, которые содержат определенные символы или слова (напрмер, чтобы все напоминания, которые содердат словл важно имели красный фон, а со словами РАБОТА - имели красный шрифт), то для этого нужно также использовать "Настройка списка". Оно отлично устанавливается как в режиме 1С, так и в режиме Конфигуратора (в режиме 1С установится только для текущего пользователя, а в режиме конфигуратора для всех "по умолчанию"). Для этого идем в Настройку списка на закладку Условное оформление (я уже писал как его найти в конфигураторе). Выбираем что именно мы хотим выделить (фон, шрифт, задаем какой цвет и т.д.), далее указываем поле (или поля, можно выбрать все поля), которые нужно окрашивать, а затем создаем новый отбор - это условие, при выполнении которого будет применяться данное оформление (окраска напоминания). Тут мы указываем поле, вид сранения - выбираем "содержит" и пишем слово или словочетание, которое и будет являться условием для окрашивания. 

    18 марта 2014 , 14:37
  • Для Влада!Я просто хотел выделить фоном то напоминание в списке, у которого срок истекает ТекущаяДата(), т.к. вывел список напоминаний на рабочий стол.Все реализовалось успешно.Настройку списка отработал вдоль и поперек. Еще раз спасибо за Ваши уроки...

    18 марта 2014 , 19:12
  • Игорь, через оформление такое не получится. Нам придется писать программный код. Но мы все-равно планируем это реализовать: красным будут выделяться просроченные напоминания, зеленым - те, что на сегодня, а светло-серым шрифтом будут оформляться ближайшие напоминания.

    19 марта 2014 , 09:14
  • В общем, удалоь программно выделить актуальное напоминаие.Теперь как увеличить дату на год, а тем более на несколько лет. Ведь они могут вклчать високосные года(могут и не включать).Может есть метод какой особый?!

    20 марта 2014 , 20:53
  • Конечно есть. Игорь, вы бежите вперед паровоза - мы на 7 уроке все это будем делать :) Хотя я рад - значит я правильно объясняю и сам вас наталкиваю на соответсвующие рассуждения.К дате можно прибавить число - это количество секунд - данный метод подойдет для прибавления дней и недель, а можно прибавить количество месяцев (ДобавитьМесяц(<Дата>, <ЧислоМесяцев>), если ЧислоМесяцев прибавить со знаком минус, то месяцы вычтутся) - там мы можем прибавить месяцы и даже годы (месяцы *12). При этом 1С умеет вычислять и высокосность и разнок количество дней в месяцах. например если напоминание стоит на 31 января и мы прибавим месяц - то получится не 31 февраля (которого не может быть), а 28 февраля.

    21 марта 2014 , 09:32
  • Да,Влад!После того, как написал код с кучей Если(при чем это работает при продлении напоминания только на 1год)...Век живи,...С помощью вашей подсказки ДобавитьМесяц() все уместилось в пол-строки и работает при всех условиях.Можно переходить к 8 уроку :)

    22 марта 2014 , 08:53
  • Ребят подскажите как менять цвета фона элементов списка справочника "напоминание" , сам не допктрил как :) , а ссылка на выполненое ДЗ не работает... Спасибо.

    26 апреля 2014 , 11:04
  • Smilk, отркпыть форму списка напоминаний в режиме 1сПредприятие. Все действия-Настроить список-Условное оформление-Добавить, и в редакторе условного оформления в условиях выбрать тип напоминания(в зависимости от настроек:Прим: 0-одноразовое, 1-ежедневное установить условие) На вкладке Оформление выбери цвет фона или цвет текста...

    26 апреля 2014 , 15:02
  • Большое спасибо Игорь, все так просто оказалось, а я пытался с помощью кода это сделать :)

    26 апреля 2014 , 15:49
  • После написания в процедуру кода Элементы.КнопкаЗавершить.Видимость=Ложь; В пользовательском режиме при открытии формы элемента возникает ошибка "Несоответствие свойства и элемента данных XDTO. Свойство: 'name' " В чем причина такой ошибки? Если убрать записи с кнопкой, то все работает без ошибки.

    19 мая 2014 , 11:19
  • У вас Объект кнопка с именем "КнопкаЗавершить"? И работает ли остальной код, если эту строку закоментировать? 

    19 мая 2014 , 13:15
  • Да, имя объекта "КнопкаЗавершить". При возникновении ошибки данный код срабатывает через раз. Если закомментировать все элементы кнопки, т.е. Элементы.КнопкаЗавершить.Видимость, Элементы.КнопкаЗавершить.Заголовок, то остальной код работает без ошибок.

    21 мая 2014 , 09:51
  • Юлия, тогда вы что-то упустили. Просмотрите повнимательнее 2 часть 6 урока. Если Строка(Объект.Статус)="Завершено" тогда...Если у вас именно так написано в начале процедуры ПрименитьОформление,то все должно работать.Возможно Вы не использовали функцию Строка()

    21 мая 2014 , 22:04
  • Юлия, именно для таких случаев я и выкладываю конфигурации каждого урока. Для начала скачайте мою конфигурацию 6 урока (находится в конце материала 6 урока перед тестом), убедитесь. чтов се работает правильно, а затем просто сравните со своей.Особое внимание обратите на название кнопки и ее свойства, а также на программный код оформления. Уверен, вы быстро найдете в чем была ошибка. Допускаю, что возможно у вас в названии кнопки где-то вместо русской буквы написана похожая, но английская (например, буквы a, o, K), причем таке может быть как в имени самой кнопки, так и в программном коде. Ппопробуйте написать название русскими буквами и заменить везде, где оно встречается.

    22 мая 2014 , 05:54
  • Спасибо за ответы. Я уже много раз сравнивала все коды, их написание и условия. С вашей конфигурацией не пробовала. Попробую. Спасибо.

    22 мая 2014 , 10:22
  • Привет Влад! Спасибо большое тебе за уроки. Это - лучшее из того, на что наталкивался в сети. Дело в том, что смотрел-смотрел я на тот конфигуратор 1с8, а руки все не доходили (да и в 7-ке, дальше поменять пару строк на документах не лез). И вот решил "разобраться". Очень качественно и доступно изложен материал. Смотришь - душа радуется.Единственно,что мне мешает - прошлый опыт. Дело в том, что одно время по работе - шаманил с access-ом. И теперь мозг постоянно пытается приравнять понятия. А архитектура-то сильно разная. Методы разработки - тоже. Но потихоньку(урока с 5-го, когда прошло время и осмыслил сделанное) - начал въезжать в логику конфигуратора. Зато с кодом проблем особых нет. Играюсь с Delphi на любительском уровне - тут опыт очень помогает. Очень похоже на "русский Паскаль". Даже в задании 5 урока - почти дошел до истины. Особенно в свете предыдущего урока, где рассказывалось о клиент-серверных особенностях 1с. И если бы про галочки хоть где-то упоминалось в уроках - победил бы скорее всего и наверняка разобрался бы, если бы сам задумал такой как мы создаем проект, когда весь интернет в ход пошел бы, чего в данном случае не делал.))) Единственно что - в свете предыдущих задач - все можно было найти в уроках или вычислить логически, а тут нужно было именно знать КАК.  Кстати это задание - понравилось - больше всех. Остальное - слишком просто.А вопрос мой  - такой. Скажи? Можно ли тут  заглянуть "под ковер"?  Хочу видеть или хотя-бы представлять схему рел.БД. Увидеть связи таблиц, что мы создаем?

    12 августа 2014 , 20:56
  • И да. По мере усложнения уроков (а до сих пор - детский сад почти), будет возникать тьма-тьмущая вопросов. Нет, не по урокам, а по конфам пользователей. Ведь изучив основы - по любому народ кинется пробовать свои силы в создании лично-ориентированых конфигураций. Уже даже можно, но пойдет с потом и кровью, хотя пойдет. Так вот. Не плохо было-бы прикрутить форум хоть какой-то к сайту. Где ты, Влад, будешь "Гуру", а народ друг другу сам подсказывать сможет. Иначе один не справишься...))). Комменты - не очень удобный инструмент...

    12 августа 2014 , 21:14
  • Добрый день! А у меня такой вопрос: Моя КнопкаЗавершить появляется/исчезает только после перевыбова типа напоминания. Как так то? Код написан одинаково...

    25 октября 2014 , 15:31
  • Для VrednayaGIRL. Нужно в процеруде ПриОткрытии() вызвать нашу процедуру с оформлением кнопки. Смотрите 2 часть 6 урока начиная с 14 минуты.

    27 октября 2014 , 14:51
  • Влад, ты монстр! спасибо!

    27 октября 2014 , 22:27
  • Вот такую ошибку выдает, что делать? {МодульУправляемогоПриложения(8,11)}: Переменная не определена (СерверныеПроцедуры)Результат=<<?>>СерверныеПроцедуры.ПрочитатьКонстантуПодтверждение(); 

    31 января 2015 , 08:01
  • уже исправил)

    31 января 2015 , 08:54
  • Спасибо вам большое за уроки!! Все понятно, все здорово пока получается. Однако есть вопрос по 3 заданию 6 урока. Может я бегу впереди поровоза, но не совсем здорово понимаю, зачем мы создавали форму списка справочника напоминания. Может она где-то вызываться должна, да я не разобрался. И если так, то где? И самое смешное, я не нашел, где устанавливать сортироовку на поле "срок". Попробовал задать программно, но не могу проверить, потому что не знаю, где должна отображаться эта форма)) Подскажите пожалуйста. Заранее спасибо!

    17 февраля 2015 , 16:49
  • Добрый день!Уроки супер, но застрял на 6 подскажите пожалуйста когда настраиваем ТипНапоминания СписокВыбора создаю но не могу туда поставить цифры и слова, жму добавить потом клацаю на клавиатуру, а нечего не вводится, как починить)

    25 апреля 2015 , 12:08
  • Для Дениса Юрьевича. Очень странно. Убедитесь, что реквизит ТипНапоминанияимеет тип "Число". В крайнем случае скачайте мою конфигурацию со страницы урока и попробуйте добавлять, редактировать или удалять новые значения. Уверен,что все получится.

    28 апреля 2015 , 09:42
  • Скажите, пожалуйста, что такое веб-клиент, тонкий клиент и толсыйого клиент

    30 апреля 2015 , 18:24
  • При создании формы элемента справочника убрала пометку Назначить форму основной. Теперь при просмотре в 1С открывается  нередактированная форма. Можно как-то это исправить?

    04 мая 2015 , 11:26
  • Для Зинаиды. Веб клиент - это когда мы (пользователь, клиент) работаем с программой с помощью интернет браузера. Как правило обращается к серверу с помощью локальной сети или интернет. Тонкий клиент - это когда все вычисления выполняются на сервере. При таком режиме работы можно использовать медленное соединение и даже периодически соединение может ненадолго разрываться - на работе программы это не скажется. Ну и толстый клиент - это стандартный клиент. Для работы с программой требуется устойчивое соединение с сервером и высокая пропускная способность сети. Часть вычислений выполняется на компьютере пользователя, поэтому скорость работы программы зависит от компьютера пользователя.

    06 мая 2015 , 14:09