Перейти к содержимому

Как определить переменную в 1с

  • автор:

Переменные в 1С 8.2 и 8.3

Во встроенном языке программирования 1С используются переменные. Имена переменных должны начинаться с английского или русского символа, или подчеркивания. Нельзя чтобы наименование переменной начиналось с цифры. Не рекомендуется именовать переменные зарезервированными синтаксическими конструкциями. Имена переменных должны носить осмысленный характер. Это улучшает читабельность программного кода. Что в последующем увеличивает скорость разработки или доработки приложения. При объявлении переменных не требуется указывать тип значения, как это делается во многих других языках программирования. Тип значения определяется автоматически системой.

Локальные переменные

Локальные переменные определяются внутри процедур или функций. Перед ними необязательно писать ключевое слово "Перем". Область доступности таких переменных ограничена границами своей процедуры или функции. То есть, к такой переменной нельзя обратиться в другой процедуре или функции или из глобального контекста.

Глобальные переменные

Во многих языках программирования предусмотрено создание глобальных переменных. Во встроенном языке 1С, так же есть возможность создавать глобальные переменные. Такие переменные доступны во всех процедурах и функциях модуля в котором они определены. В языке программирования 1С глобальные переменные могут быть определены в любых модулях (объектов, форм, и т.д) кроме общих модулей. Глобальные переменные задаются в самом верху модуля, перед определением всех процедур и функций. Перед именем переменной пишется ключевое слово "Перем". Значение указывать нельзя. Значение глобальной переменной можно задать в процедурах, функциях модуля или в конце модуля после всех процедур и функций.

Экспортные переменные

Глобальную переменную можно сделать экспортной, указав ключевое слово "Экспорт". Например, если экспортная переменная создаётся в модуле объекта справочника, то к ней можно обратиться через объект этого справочника, СправочникОбъект.ИмяПеременной.

Комментарии (0)

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

1С объявление переменных

Это именованное значение данных для хранения и последующего доступа.

Могут быть произвольного допустимого в рамках 1С и контекста типа.

Далее под «модулем» будет подразумеваться блок исполнения кода, который связан с объектами системы (приложение,форма, справочник, документ и другие), детально будут рассмотрены в других разделах.

Под «контекстом» будет подразумеваться модуль и окружение которому этот модуль принадлежит.

Объявление переменных

Явное объявление переменных в 1с, в общем случае, не обязательно и может производится непосредственно перед использованием.

Для явного используется служебное имя «Перем«, которое регистронезависимое (допустимо использование, например»ПеРЕМ«).

Примеры явного объявления переменной:

Пример объявления в функции:

В данном случае мы видим две переменные :

  • «ПараметрФункции«, которую нам передали при вызове, она объявлена в месте вызова, и возможно с другим именем.
  • «ПеременнаяФункции1» — новая переменная, которая действует только в рамках функции

Именование переменных

Переменные должны именоваться, начинаясь с символов русского или английского алфавита или символа подчеркивания(«_»).

Не могут начинаться на цифру, но могут ее содержать.

Не рекомендуется именовать переменные используя имена конструкций языка, свойств реквизитов объектов, в некоторых случаях система не даст этого сделать, в других может привести к неявным ошибкам.

Например, находясь в контексте формы, нельзя использовать имя переменной Заголовок, т.к. в этом случае будет происходить непосредственное изменение заголовка окна формы.

Имя должно быть понятным, запоминаемым. Допускается использование префиксов для удобства восприятия, например: лЛокальнаяПеременная, фПеременнаяФормы.

Обычно применяется выделение регистром для визуального осмысления: ВременнаяПеременнаяДляХраненияПромежуточныхРасчетов

Длина имени переменных не ограничена в разумных пределах, опирайтесь на удобство чтения кода.

Инициализация переменных

Платформа инициализирует переменные значением «Неопределено» по умолчанию

В момент объявления переменные явно присвоить значение возможно только, если это параметр функции

  • ПараметрфункцииИнициализируемый — если не передан параметр в функцию он будет инициализирован строковым значением 123
  • ПеременнаяФункции2 — переменная инициализирована после объявления
  • ПеременнаяФункции3 — переменная инициализирована по имени и значением, без явного объявления

Последний вариант ничем не хуже второго и повсеместно используется, но явная инициализация, признается более «правильной«

Также не является обязательным инициализация ранее объявленной переменной сразу, это может быть сделано непосредственно перед использование.

Допустимо не переопределять значение «Неопределено«, т.к. всегда можно проверить тип значение или содержимое

Видимость переменных

В версии 8 в отличии от 7.7. глобальных переменных не существует и их видимость определяется контекстом исполнения

  • под контекстом в данном случае понимается модуль текущего объекта
  • в некоторых модулях допустима инициализация переменных в начале, что позволит использовать переменных неограниченно в любой точке данного модуля (модуль приложения, формы, объекта и другие)
  • в других такое недопустимо (модуль команды, модуль веб-сервисов)
  • допустима передача значений или ссылки на значение переменой в функции(процедуры)
  • к экспортным переменным допустимо обращение из других объектов (модулей, объявляются служебным регистронезависимым словом «Экспорт» через пробел от имени)
Передача значений переменных
  • Не ограничивается передача значений внутри процедуры или функции
  • Передача значений между процедурами внутри модуля объекта, допустимо при совместимых местах исполнения («клиент<->клиент»,»сервер<->сервер»)
  • Ограниченная передача при несовместимых местах выполнения кода или передача в другие объект
    • примитивные типы: строка, число, дата переносятся без ограничений
    • объектные типы и коллекции переносятся, если в среде возможно использование данных типов, либо не запрещается их передача («мутабельные» типы)

    Более подробно на последнем случае останавливаться не буду, т.к. это один уроков, который вы должны пройти самостоятельно. Система вам сообщит, когда вы наступите на «грабли«, а объяснить простыми не получится.

    В случае, если вам все-таки требуется передать значение, необходимо:

    • подумать над тем, верный ли выбрали тип или место исполнения (возможно вы гоняете не те данные или не туда)
    • использовать более универсальный тип для передачи
    • преобразовывать тип в более простой перед транспортировкой, и обратно преобразовывать в месте получения

    Конвертация значений будет рассмотрена в других разделах.

    Замечу лишь, что примитивные типы конвертируется более просто, при соблюдении условий «авто-приведения», объекты обычно через их методы, либо уже написанием кода преобразования.

    Реклама духов принесла мне больше известности, чем любой фильм, в котором я снималась.

    — Денев Катрин

    Переменные и операторы (бесплатная статья по Программированию 1С)
    из цикла статей «Первые шаги в разработке на 1С»

    Как правило, изучение любого языка программирования начинается с примера написания первой простейшей программы (“Hello world!”). Делается это для того, чтобы наглядно показать работу с базовыми синтаксическими конструкциями. Мы не будем делать исключение из этого общепринятого способа подачи материала при изучении новой среды разработки и поэтому нашу первую статью следует рассматривать в этом же ключе. В ней мы подробно разберем ответы на следующие вопросы, касающиеся программирования на платформе «1С:Предприятие 8»:

    • Где и при помощи чего писать программный код на встроенном языке 1С?
    • Что такое программные модули, какие существуют правила работы с ними?
    • Что такое переменная, как с ней работать, как и где её объявлять?
    • Какие операторы сравнения, присваивания и условий существуют и как их применять?
    • Булевы операции – что это и как с ними работать?
    • Зачем нужны циклы и как их использовать?

    Статья будет полезна всем тем, кто еще не знаком с разработкой на платформе «1С:Предприятие 8», но хочет научиться программировать на 1С.

    Применимость

    Материал актуален для платформы «1С:Предприятие 8» редакций 8.2. и 8.3.

    Переменные и операторы

    В этой статье мы приступаем к изучению встроенного языка 1С:Предприятие 8. Исполняемый код содержится в программных модулях.

    Существует достаточно большое количество модулей, которые предназначены для обработки различных событий.

    Так, вход пользователя в систему обрабатывается в одном модуле, а обработка нажатия пользователя на некоторую кнопку – в совершенно другом.

    Таким образом, каждый модуль описывает поведение конфигурации в определенной точке. В модуле содержится, прежде всего, раздел описания переменных. Т.е. мы можем объявить в модуле некоторые переменные.

    В дальнейшем они могут быть использованы в процедурах и функциях этого модуля. Если переменная определена с ключевым словом Экспорт, то она будет доступна вне данного модуля. Пример строки объявления переменных:

    Перем Склад, Подразделение, Кладовщик Экспорт;

    После объявления переменных содержится раздел процедур и функций.

    За ними располагается раздел основной программы, который будет выполняться в момент обращения к данному модулю.

    Например, в разделе основной программы можно осуществить инициализацию переменных, т.е. присвоить им некоторые начальные значения:

    Состояние=1;
    НовоеВыражение=2;
    Результат=3;

    Модуль можно представить, как комбинацию различных операторов, которые выполняют разные нужные нам действия.

    Разделителем операторов является символ «;» (точка с запятой). Этот знак является признаком окончания оператора. Т.е. оператор может быть записан в таком виде:

    Результат=100Х200
    +400
    -600;

    При этом не важно, на скольких строках располагается оператор.

    Конечно, чаще удобнее и нагляднее располагать оператор в одной строке, но иногда операторы являются достаточно длинными (число строк обоснованно может достигать нескольких десятков).

    Точку с запятой можно не ставить в завершающем операторе данной конструкции, например, процедуры. Т.е. следующий код будет работать:

    ИсходноеЗначение = 100;
    ПромежуточноеЗначение = ИсходноеЗначение/5;
    ИтоговоеЗначение = ИсходноеЗначение+ПромежуточноеЗначение

    Однако лучше использовать точку с запятой в завершающем операторе. Не исключено, что со временем конструкция будет продолжена, и завершающий оператор окажется уже не завершающим. Придется специально отслеживать эту ситуацию.

    Переменные предназначены для того, чтобы хранить некоторые значения любого типа данных. Они используются для промежуточного хранения информации, для обработки.

    Практически в любом программном модуле, который выполняет некоторые действия, есть различные переменные. Типизация переменных по значениям в Платформе 1С:Предприятие 8 мягкая.

    Например, переменная может содержать значение одного типа данных, а через несколько строк – другого типа:

    Создан = Ложь;
    Создан = Истина;
    Создан =100;

    В первых двух операторах значение переменных булевское, а в третьем оно меняется на числовое значение. Т.е. типизация зависит от того значения, которое присваивается данной переменной.
    Описывать переменные можно двумя способами:

    • неявный способ (упоминание в левой части оператора присваивания описывает данную переменную, нет предварительного описания переменной со словом Перем, т.е. нет специального раздела описания переменных);
    • явное описание переменных (Перем КонтрольныеДанные;). Явное описание переменных используется, например, если предполагается последующая передача этой переменной в функцию.

    Для названия переменных используется классическое описание идентификатора. Идентификатор состоит из букв, цифр и знаков подчеркивания. Начинаться идентификатор должен либо с буквы, либо со знака подчеркивания.

    При этом название переменной должно отображать смысл данной переменной. Названия переменных из одной буквы (типа А, В, С) являются плохими примерами. Они не отражают суть переменных.

    Примеры правильного названия переменных: Счетчик (увеличивающаяся переменная для цикла), Контрагент. Если имя переменной содержит несколько слов, то каждое новое слово, для наглядности, следует начинать с большой буквы.

    В названии переменных нельзя использовать зарезервированные слова, такие как Процедура, Функция, Цикл, КонецЦикла и т.д. (эти конструкции выделяются в программном модуле красным цветом).

    Зарезервированные слова – это операторы встроенного языка и их достаточно небольшое количество. Все они представлены в Синтакс-помощнике.

    Встроенный язык программирования 1С в Синтакс-помощнике

    Следует отметить, что типы данных к зарезервированным словам не относятся (например, Массив, Булево, Истина, Ложь). Система такие имена переменных воспримет корректно.

    Для написания программного кода регистр не имеет никакого значения. Например, слово Процедура можно писать как с большой, так и с маленькой буквы. Более того, большие и маленькие буквы можно чередовать внутри слова.

    Для Платформы это не имеет никакого значения. Тем не менее, по правилам хорошего тона начало слова нужно писать с большой буквы, все остальные буквы маленькими.

    По поводу языка. Можно использовать и русский язык, и английский, и комбинацию двух языков. Если кому-то удобно, можно спокойно использовать английский язык для написания программного кода, а также комбинировать русский и английский языки. Для Платформы это не важно.

    Но существуют рекомендации использовать русский язык, потому что в системе достаточно большое количество объектов, которые имеют длинные названия.

    Многие названия на английском языке довольно сложно помнить. При использовании комбинации двух языков ухудшается читаемость программного кода.

    Булевы операции

    В операторах сравнения очень часто используется булевская логика, которая возвращает значение Истина или Ложь.

    Например, в условном операторе можно сравнивать: Если Событие = Продажа Тогда алгоритм пойдет по одной ветке (т.е. при значении Истина), по условию Ложь выполняется другая ветка алгоритма.

    Условия могут быть достаточно сложными, они могут комбинироваться, при этом применяются следующие операторы: И, ИЛИ, и НЕ. Так, для оператора И:

    Истина И Истина = Истина;
    Истина И Ложь = Ложь;
    Ложь И Истина = Ложь;
    Ложь И Ложь = Ложь.

    Для опрератора ИЛИ достаточно, чтобы один из операндов был равен Истина, тогда и значение комбинации будет Истина. Значение Ложь получается только в том случае, когда оба операнда Ложь.

    Оператор НЕ просто инвертирует текущее значение (Ложь в Истину, Истину в Ложь).

    С помощью комбинации данных операторов можно строить достаточно сложные условия. При составлении сложных условных операторов следует учитывать приоритеты.

    Высший приоритет имеет оператор НЕ, следующим идет оператор И, а за ним оператор ИЛИ. То, что заключено в скобки, имеет самый высший приоритет и выполняется в первую очередь.

    Например, расставим приоритеты (последовательность выполнения) для операций в приведенном выражении:

    НЕ(Условие1 ИЛИ Условие2) И Условие3 ИЛИ Условие4
    1. Результат1 = (Условие1 ИЛИ Условие2);
    2. Результат2 = НЕ Результат1;
    3. Результат3 = Результат2 И Условие1;
    4. Результат = Результат3 ИЛИ Условие4;

    Существует правило преобразования:

    НЕ (Условие1 ИЛИ Условие2) = НЕ Условие1 И НЕ Условие2.

    Однако не следует всегда стремиться упростить выражение, поскольку зачастую, по логике, проще читается выражение развернутое.

    Оператор присваивания

    Не следует путать оператор присваивания с равенством, не смотря на то, что у них одинаковое написание.

    Принцип работы оператора присваивания таков, что левому значению (переменной с левой части) присваивается то значение, которое находится справа от знака равенства. Разберем пример:

    Переменная1 = Переменная2 = Переменная3;

    Левое значение – Переменная1, далее следует оператор присваивания.

    Переменной1 присваивается значение равенства из булевской логики, т.е. Истина, если Переменная2 = Переменная3, или Ложь в обратном случае.

    При тестировании на должность начинающего программиста довольно часто используется задача: поменять значения двух переменных местами.

    Данная задача решается с использованием оператора присваивания и имеет два решения.

    Решение №1 с использованием временной переменной:
    ВременнаяПеременная = Переменная1;
    Переменная1 = Переменная2;
    Переменная2 = ВременнаяПеременная;

    Решение №2:
    Переменная1 = Переменная1 + Переменная2;
    Переменная2 = Переменная1 – Переменная2;
    Переменная1 = Переменная1 – Переменная2;

    Условный оператор

    Есть такой оператор Если, после которого необходимо описать некоторое условие (само условие может быть достаточно большим). После условия следует слово Тогда и выполняемые операторы.

    Далее может следовать ключевое слово Иначе и серия других операторов. Если разных условий несколько, можно использовать серию ключевых слов ИначеЕсли (см. пример ниже). Вся конструкция обязательно завершается ключевым словом КонецЕсли, после чего следует знак точки с запятой.

    Оператор Если

    Кроме простого и множественного условия существует сокращенная форма условного оператора: ?(Условие, Выражение1, Выражение2);

    Если условие истинное, то будет выполняться Выражение1, в противном случае – Выражение2. Пример кода: ДорогойТовар = ?(Товар.Цена>100000, Истина, Ложь);

    На практике вместо записей сравнения со значением Истина (Ложь) типа:

    Если Переменная = Истина Тогда
    и
    Если Переменная = Ложь Тогда

    реально используются эквивалентные записи:

    Если Переменная Тогда
    и
    Если НЕ Переменная Тогда

    Циклические операторы

    Для любого вида цикла обязательно явное указание окончания этого цикла с помощью ключевого слова КонецЦикла. Существует несколько типов циклов.

    Цикл по счетчику – цикл с фиксированным количеством повторений. Условием выхода из цикла является превышение граничного значения. Пример использования для расчета значения А!

    А = 5;
    Факториал = 1;
    Для Счетчик = 1 По А Цикл
    Факториал = Факториал * Счетчик;
    КонецЦикла;

    Цикл по условию – выполняется пока истинно условие данного цикла. Пример:

    ОстатокСуммы = 1000;
    ЦенаДополнительногоТовара = 243;
    Количество = 0;
    Пока ОстатокСуммы>0 Цикл
    Количество = Количество+1;
    ОстатокСуммы = ОстатокСуммы – Количество*ЦенаДополнительногоТовара;
    ЦенаДополнительногоТовара = ЦенаДополнительногоТовара * 0.8;
    КонецЦикла
    Количество = Количество-1;

    Данный цикл вычисляет, сколько единиц товара можно купить на данную сумму (1000 рублей), если после покупки каждой единицы товара предыдущая его цена умножается на коэффициент 0,8. Изначальная цена товара – 243 рубля.

    Примером ошибки при использовании данного вида цикла новичками является вечный цикл, когда изначально условие цикла истинно, а в рамках самого цикла оно никак не изменяется.

    Цикл по коллекциям (другое название Для каждого).

    В Платформе существует достаточно большое количество коллекций (это такие контейнеры, которые содержат элементы определенного типа).

    Обойти элементы коллекции можно с помощью цикла специального вида.

    Например, существует массив чисел, необходимо посчитать сумму всех элементов массива:

    Сумма = 0;
    Для каждого Элемент Из Массив Цикл
    Сумма=Сумма+Элемент;
    КонецЦикла;

    Для циклов существуют специальные операторы: Продолжить и Прервать.

    Если в некоторой точке цикла выполнение дальнейших операторов данного витка становится бессмысленным, то чтобы вернуться на начало цикла и организовать его следующий виток используется оператор Продолжить.

    Оператор Прервать позволяет закончить выполнение цикла, даже если условие цикла истинно.

    На этом мы завершаем наше первое знакомство с разработкой на внутреннем языке 1С.

    А как же Hello World? Мы же его еще не написали, да? Да, но ничто не мешает вам сделать это самостоятельно, т.к. знаний УЖЕ достаточно. Ну а если не получается, то можете подглядеть сюда.

    Далее мы продолжим изучать разработку на 1С, поэтому оставайтесь на связи и не пропустите следующую статью 😉

    PDF-версия статьи для участников группы ВКонтакте

    Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.

    Статья по программированию - в PDF-формате

    Статья в PDF-формате

    Вы можете скачать эту статью в формате PDF по следующей ссылке:Ссылка доступна для зарегистрированных пользователей)

    Ссылка доступна для зарегистрированных пользователей)
    Ссылка доступна для зарегистрированных пользователей)
    Ссылка доступна для зарегистрированных пользователей)

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

    На пятом уроку нашего курса 1С мы с вами начинаем знакомиться со встроенным языком 1С. В процессе урока мы с вами рассмотрим, где именно пишется программный код на языке 1с, познакомимся с операциями, которые можно выполнять с примитивными типами данных и разберем базовый синтаксис языка 1с.

    для установки эталонной базы вам понадобится скачать платформу 1С:Предприятие 8.2 (учебная версия) или платформу 1С:Предприятие версии не ниже 8.2.15.301.

    Программные модули конфигурации

    Программный модуль — это своеобразный «контейнер» для размещения текстов процедур и функций на встроенном языке 1С. Эти процедуры и функции вызываться системой в определенные моменты работы системы. Программные модули не имеют формальных границ своего описания типа: «Начало модуля» — «Конец модуля».

    Программные модули размещаются в тех местах конфигурации, в которых может требоваться описание специфических алгоритмов функционирования. Эти алгоритмы оформляются в виде процедур или функций, которые будут вызваны самой системой в заранее предусмотренных ситуациях (например, при нажатии кнопки в диалоговом окне и т.д.). Каждый отдельный программный модуль воспринимается системой как единое целое.

    На уроке мы познакомились со следующими программными модулями:

    • модуль управляемого приложения. В данном модуле описываются процедуры (обработчики событий), которые инициализируются при старте и окончании работы системы. Например, при начале работы приложения можно обновить какие-либо данные конфигурации, вывести сообщения пользователю, а при завершении работы — поинтересоваться, стоит ли выходить из программы или, например, записать в базу данных время завершения работы пользователя.
    • модуль внешнего соединения. Модуль внешнего соединения срабатывает, когда запуск приложения происходит в режиме com-соединения. В этом режиме происходит программная работа с информационной базой без запуска окна приложения.
    • модуль сеанса. Это узкоспециализированный модуль, предназначенный исключительно для инициализации параметров сеанса.
    • общие модули. Общие модули предназначены для описания некоторых общих алгоритмов (процедур и функций), которые будут вызываться из других модулей конфигурации.
    • модуль объекта конфигурации. Данный модуль имеется у большинства объектов конфигурации и предназначен для обработки событий, непосредственно связанных с объектом. Например, события записи или удаления объектов, проверка заполнения реквизитов объекта, проведение документа и т.д.
    • модуль формы. Модуль формы предназначен для обработки действий пользователя с данной формой (обработка события нажатия кнопки, изменения реквизита формы и т.д.).

    Более подробную информацию о программных модулях вы найдете в разделе Язык 1С: виды и структура программных модулей.

    Структура программных модулей

    Программный модуль может включать в себя три раздела:

    • область объявления переменных;
    • область описания процедур и функций;
    • основной текст программы.

    В конкретном программном модуле любой из разделов (или даже все разделы) могут отсутствовать. Давайте познакомимся с разделами программного модуля более подробно:

      область объявления переменных размещается от начала текста модуля до первого оператора Процедура или оператора Функция или любого исполняемого оператора. В этом разделе могут находиться только операторы объявления переменных Перем .

    Виды переменных в программных модулях

    Переменная – это поименованное временное хранилище одного значения, которое можно считывать и изменять в ходе выполнения программы.

    Переменные бывают 3 видов:

    • глобальные переменные. Значение данной переменной можно прочитать или изменить из другого программного модуля;
    • переменные модуля. Переменная модуля доступна для чтения и записи (изменения) в любой процедуре и функции, а также в области основного текста программы данного программного модуля.
    • локальная переменная. Локальная переменная доступна лишь внутри процедуры или функции, в которой она объявлена.

    Объявление переменной (в явном виде) осуществляется при помощи оператора Перем. В языке 1С переменные не обязательно объявлять в явном виде. Неявным объявлением переменной является первое ее появление в левой части оператора присваивания (знак =). Тип переменной определяется типом присвоенного ей значения. В процессе исполнения программа переменная может менять свой тип (мягкая типизация), например:

    Перем1 = » Иванов» ; //неявное объявление переменной, тип переменной (что она хранит) Строка

    Перем1 = 32 ; //присвоение нового значения нашей переменной, теперь она имеет тип Число

    Синтаксис языка 1С

    На уроке мы с вами познакомились с базовыми (примитивными) типами значений, синтаксисом и операциями с ними. Более подробную информацию вы найдете в разделе Язык 1С: общие конструкции языка 1С. Прошу обратить особое внимание на синтаксис составных логических выражений, условий и циклов.

    Итоги 5 урока

    1. Мы познакомились с программными модулями и их назначением.

    2. Мы рассмотрели структуру программных модулей.

    3. Мы познакомились с видами переменных и их назначением.

    4. Мы познакомились с примитивными типами данных и операциями над ними.

    Практические задания по 5 уроку

    Практические задания по 5 уроку будут вам представлены сразу же после успешного решения теоретического теста:

    Пройти тест на понимание материала 5 урока

    Мы настоятельно рекомендуем вам переходить к изучению следующего урока только после выполнения всех теоретических и практических заданий по данному уроку.

    К оглавлению

    Перейти к 6 уроку

    Комментарии

    Влад, добрый день! Позвольте узнать, как продвигается решение об опубликовании очередного урока. Наверняка он в каком-то виде готов уже, может посмотрим и , если будут вопросы, тогда и будетвозможность его откорректировать. Этот материал один из самых интересных (о встроенном языке). Давайте решайтесь уже на его публикацию. Удачи вам.

    Здравствуйте, Игорь! За праздничные дни очень постараюсь оформить 5 и 6 уроки. Я не забросил свое начинание, просто прошлый месяц получился богатым на события: это и поездка на канарские острова, и череда дней рождений, покупка земельного учатска и еще много чего. Сейчас я полон решимости выполнить все, что задумал на сайте. 🙂 И время на это появилось!

    Дошел до 5 урока, ожидая от Вас продолжения, что посоветуете еще почитать или посмотреть по теме? Дабы не останавливаться на долго.

    Спасибо за предоставленный материал!Все понятно и интересно.Жду продолжения уроков!

    а подзкажите как написать чтоб програма віводила собщение с ближайшими днями рождение

    как писать чтоб програма віводила сообщение с ближайшими днями рождение

    На 6 уроке мы научимся работать с датой и сделаем отчет по напоминаниям (запланированным делам на нужную дату или ближайшее время), разберем как программно работать со справочниками и вот тогда вы мне сами скажете как написать, чтобы программа выводила ближайших именинников.

    Влад, тест не запускается. Можете поправить?

    Для Игоря. Ссылку на тест 5 урока поправил.

    Подскажите, а будут ли еще уроки? Закончил на 5-ом и всё ((( Все тесты пройдены

    Конечно будут еще уроки. Мы с вами еще только начали знакомство с языком. На 6 уроке напишем полностью систему напоминаний: от сложного поведения формы до построения отчета + модифицируем наше напоминание при закрытии программы.

    Влад, пытался написпть серверную процедуру в модуле управляемого приложения для получения константы в ДЗ.Пишет «процедура не определена. В этом модуле только предопределенные процедуры исполняются?

    Игорь все верно! С этого мы и начнем разговор в 6 уроке. Если посмотреть материал про программные модули в разделе «Язык 1С», то мы увидим, что модуль управляемого приложения выполняется на стороне клиента, а это значит в нем НЕ МОГУТ РАСПОЛАГАТЬСЯ серверные функции и процедуры. А значит в нем мы не можем прочитать значения с нашей базы данных. Какой может быть выход? Вызывать процедуру из другого модуля, который может выполняться на сервере.

    Здравствуйте Влад! Программа несколько раз выдавала ошибку, что-то вроде (модуль управления не может отразить. МояПеременная=МояПеременная+С), текст проверял несколько раз, один в один, с вашим оригиналом. Полностью удалил текст и прписал сначала, всё работает, но от ошибки, осадок непонимания остался, может занете в чём дело?

    Для noperson. Чаще всего причина ошибок банальна: опечатки или орфографические ошибки, иногда забывают ставить «;» в конце оператора. Могу предложить такой способ проверки где именно ошибка: комментируйте часть кода (ставьте // перед кодом) если ошибка пропала — значит скорее всего она именно в этих закоментированных строках.

    Здравствуйте, Влад. Я понимаю,что я не по теме, но все же. Не могли бы Вы выложить на сайт конфигурацию Конвертация данных для 8.2? (2.0, 2.1 не помню точно версию). Я так понимаю она находится в свободном доступе. Я зарегистрировался на сайте ИТС через тест-драйв, скачиваю конфигурацию оттуда, но постоянно выходит ошибка, хотя другие материалы качаю без проблем. На сайте ИТС не поддерживается докачка, поэтому скачать не получается за раз 10 Мб. (интернет медленный). Был бы очень благодарен 🙂

    Я посмотрю. 24/01/2014 к сожалению, выложит конфигурацию Конвертация данных не могу — она только для подписчиков ИТС. Возможно, сделаю несолько гайдов по ее использованию — вещь крайне полезная.

    Добрый день. Недавно начал изучать 8.2. Понял что синтаксис и объекты разительно отличаются от 7.7. Но при это возможности также очень интригуют. Жалко что на создание урока нужно потратить больше времени чем на его просмотр. За труд вам отдельное СПАСИБО.Но вопрос у меня по пятому уроку. Понимаю что что-то не так делаю. Написал код с вопросом о завершении как на видео. Сначала все отрабатывало штатно. Но сейчас программа успевает закрыться до появления вопроса. Понимаю что куда-то залез. Подскажите где копать?

    Все разобрался. Внимательнее надо быть. Вопрос снят.

    Хотя как семерочнику мне не до конца понятен смысл строчки Отказ = (Ответ=КодВозвратаДиалога.Нет); Переменная Отказ как я понял произвольная. Но для чего она? В каком месте начинается завершение работы?В семерке было бы так Если Ответ = 1 Тогда ЗавершитьРаботуСистемы() КонецЕсли; С правой стороны от равно в коде 8.2 я вижу условие. А где само завершение?

    Прошу прощенья за форматирование.

    Для lexnlist. 1 мысль) В 1С 8.2 при завершение пользователем работы программы (интерактивном завершении программы) автоматически системой вызываются 2 процедуры: ПередЗавершениемРаботыСистемы() и ПриЗавершенииРаботыСистемы. Разница в них заключается в том, что в процедуре ПередЗавершением мы еще можем отказаться от завершения, а ПриЗавершении уже нет. Тут мы говорим об интерактивном завершении программы (когда пользователь хочет завершить программу, а мы можем ему разрешить или запретить). Но кроме этого мы можем и программно в любой момент завершить программу с помощью команды ЗавершитьРаботуСистемы(Ложь); 2 мысль) Перейдем к интерактивному завершению программы. Рассмотрим строчку Отказ = (Ответ=КодВозвратаДиалога.Нет). Тут Отказ — это парамент нашей процедуры ПередЗавершениемРаботыСистемы(Отказ). Отказ имеет тип Булевый — если истина — программа завершится, если Ложь — то нет. Так вот, (Ответ=КодВозвратаДиалога.Нет) это логическое условие, где ОТВЕТ — это переменная в которую возвращается значение из диалога (вопроса), какую кнопку нажал пользователь в диалоге. Если он нажмет кнопку НЕТ, то логическое условие (Ответ=КодВозвратаДиалога.Нет) будет равно ИСТИНА. Так с помощью логического условия мы 1 строкой определяем нажал ли пользователь кнопку НЕТ и сразу же присваиваем в зависимости от этого соответсвующее значение параменту Отказ.

    Добрый день. Спасибо за видеоуроки. С 1-го урока параллельно с тем, что Вы делаете на экране — то же самое делаю у себя в компьютере, конфигурацию создавал с нуля. По 5-му уроку вопрос. У меня стоит 1С:Предприятие 8.3 (8.3.4.437) Когда ввожу текст процедуры, которая ждёт мой ответ да или нет при выходе из программы — выскакивает ошибка : Использование модальных окон в данном режиме запрещено. Причём я эту процедуру копирую из Вашей конфигурации и вставляю в свою, то есть синтаксис верный. Запускаю Вашу конфигурацию — всё работает. Но дело в том, что сам интерфейс программы с самого начала у меня отличался от Вашего, именно интервейс платформы 1С. Понимаю, что вопрос расплывчатый, но может быть что то подскажете??

    Александр: вместо Вопрос() и Предупреждение() в 1С 8.2 в 1С 8.3 нужно писать ПоказатьВопрос() и ПоказатьПредупреждение(). Понадобилось это только для совместимости с мобильными платформами (чтобы можно было на 1С писать приложения для Андроида, Ipad и ifon).

    <p>Сделал код яснее и короче &mdash; и он сработал!:</p>
    <p>Процедура ПередЗавершениемРаботыСистемы(Отказ)<br />&nbsp;&nbsp; &nbsp;МойВопрос = Вопрос(&quot;Ты уходишь?&quot;,РежимДиалогаВопрос.ДаНет,5,,&quot;Внимание! Осталось 5 сек&quot;,);<br />&nbsp;&nbsp; &nbsp;
    Отказ = (МойВопрос = КодВозвратаДиалога.Нет);<br />&nbsp;&nbsp; &nbsp;<br />&nbsp;&nbsp; &nbsp;Если Отказ тогда<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Отказ = Истина;<br />&nbsp;&nbsp; &nbsp;КонецЕсли<br />КонецПроцедуры<br />&nbsp;</p>

    Процедура ПередЗавершениемРаботыСистемы(Отказ) МойВопрос = Вопрос(«Ты уходишь?»,РежимДиалогаВопрос.ДаНет,5,,»Внимание!»,); Отказ = (МойВопрос = КодВозвратаДиалога.Нет); Если Отказ тогда Отказ = Истина; КонецЕслиКонецПроцедуры

    Здорово, но сокращенные логические условия могут быть трудны для восприятия новичков 1С. В любом случае я очень рад, что вы творчески подходите к материалу уроков!

    Добрый день Влад, вроде все делаю правильно, но у меня появляется окно «Использование модальных окон в данном режиме запрещено».Не понимаю где именно делаю ошибку.

    Для u.say@mail.ru. Судя по всему вы используете версию платформы 1С 8.3, а не 8.2. Но так тоже можно, только вместо ВОПРОС и ПРЕДУПРЕЖДЕНИЕ нужно использовать ПоказатьВопрос и ПоказатьПредупреждение. В синтаксис помощнике посмотрите параметры этих функций.

    Здравствуйте Влад, с 5 уроком возникли проблемы :<МодульУправляемогоПриложения(6)>: Ошибка при вызове метода контекста (Вопрос)Если Вопрос(«Завершить работу с программой?»,РежимДиалогаВопрос.ДаНет. «ВНИМАНИЕ. «,)=по причине:Использование модальных окон в данном режиме запрещено!1С выдает такую ошибку в режиме «1С:Предприятие » при закрытие окна

    Для Joker89. Вы делаете уроки на платформе 1С 8.3, а не 1С 8.2. Но ничего страшного. Вместо Вопрос() используйте ПоказатьВопрос(). Вместо Предупреждение() — ПоказатьПредупреждение(). В остальном все будет точно также.

    Извените, но не помоглоОшибка инициализации модуля: МодульУправляемогоПриложенияпо причине:<МодульУправляемогоПриложения(6,7)>: Обращение к процедуре как к функции (ПоказатьВопрос)Если <<?>>ПоказатьВопрос(«Завершить работу с программой?»,РежимДиалогаВопрос.ДаНет. «ВНИМАНИЕ. «,)=

    Для Joker89. В 1С 8.3 с показом вопроса теперь стало чуть сложнее, чем в 1С 8.2. Вы можете открыть в синтксис помощнике ПоказатьВопрос() и увидеть подробное описание. Кроме того там есть пример использования данной процедуры. Примерно будет выглядеть так:

    &НаКлиенте
    Перем ОтветПередЗакрытием;

    &НаКлиенте
    Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    Если ОтветПередЗакрытием <> Истина Тогда
    Отказ = Истина;
    Оповещение = Новый ОписаниеОповещения(
    «ПередЗакрытиемЗавершение»,
    ЭтотОбъект);
    ПоказатьВопрос(Оповещение, “Закрыть?”, РежимДиалогаВопрос.ДаНет);
    КонецЕсли
    КонецПроцедуры

    &НаКлиенте
    Процедура ПередЗакрытиемЗавершение(Результат, Параметры) Экспорт
    Если Результат = КодВозвратаДиалога.Да Тогда
    ОтветПередЗакрытием = Истина;
    Закрыть();
    КонецЕсли;
    КонецПроцедуры

    Возможно проще будет просто включить режим совместимости с версией 1С 8.2 и не заморачиваться с немодальными диалогами.

    Попробуйте включить в свойствах управляемого приложения «Режим использования модальности», вкладка Совместимость.

    Помогите разобраться с функцией работы со значением ДАТА — Добавить месяц.В указнном примере не понятно что к чему прибавляется и отнимается. Как это выглядит на примере если подставить? У меня выходит, что год даты умножается на 12 (. ), т.е. выходит месяцы в параметре «дата», и суммируется с числом, год(ТекущаяДата) * 12. т.е. если год 1975*12, это что выйдет. Помогите понять.Спасибо.

    Вот этот примет в Синтаксис-Помощнике: ДатаРождения =СтрокаТаблицы.КонтактноеЛицо. ДатаРождения;ДеньРожденияБудущегоГода = ДобавитьМесяц((ДобавитьМесяц(НачалоДня(ТекущаяДата()), — (Год(ДатаРождения)-1)*12)), (Год(ТекущаяДата())*12));

    Здравствуйте, есть сложности с адаптацией данного урока под 8.3.Постоянно ругается: Переменная не определена (ЭтотОбъект)Оповещение = Новый ОписаниеОповещения(«ОбработатьОтвет», <<?>>ЭтотОбъект); (Проверка: Тонкий клиент) Скопипастил пример Влада выше, получил такие ошибки:<МодульУправляемогоПриложения(10,1)>: Переменная не определена (ЭтотОбъект)<<?>>ЭтотОбъект); (Проверка: Тонкий клиент)<МодульУправляемогоПриложения(19,1)>: Процедура или функция с указанным именем не определена (Закрыть)<<?>>Закрыть(); (Проверка: Тонкий клиент) Как это обойти? В инете практически во всех примерах ссылаются на ЭтотОбъект.

    ДЛя marinaR.Все просто. Параметры ф-ии 1: «Исходная дата», т.е. НачалоДня(ТекущаяДата()) (Сегодня это 20150131000000) 2: число месяцев, которое вы хотите добавить к исходной дате: 1975*12.Т.к. там перед параметром стоит минус, значит программа это число вычтет из количества месяцев исходной даты и вы в итоге получите 31 января 1975 г в формате 19750131000000. В с-п пример неудачный. ДеньРожденияБудущегоГода вы не получите

    ДЛя marinaR. Извиняюсь, в моем примере возвращается результат 31января 0040года. Думаю смысл вам понятен в любом случае

    Добрый день! Прошел 5 уроков, паралельно создавал конфигурацию вместе с уроком. Первые 4 без ошибок, а вот сейчас, после написания программного кода в модуле управляемого приложения система выдает ошибку: Использование модальных окон в данном режиме запрещено! Код проверил несколько раз, все так же как и у Вас. Подскажите, пожалуйста, в чем дело?

    Для steeshiy. Вы используете платформу 1С 8.3, а на наших уроках мы используем 1С 8.2. В принципе никаких проблем нет. Как быть в данной ситуации я подробно изложил в данной статье http://1c-uroki.ru/news/besplatnye_uroki_1S_Predprijatie_8.3Как показывает практика не зря я ее писал 🙂 Всего наилучшего.

    Вопрос такой. Описываю процедуру завершение работы(чтобы выводился запрос перед закрытием программы), всё повторяю точно, буковка в буковку, а при завершении работы программы выходит вопрос, если нажимать кнопку «Нет», то программа всё равно закрывается.Процедура ПриЗавершенииРаботыСистемы(Отказ) Ответ = Вопрос(«Завершить ли работу программы?»,РежимДиалогаВопрос.ДаНет. «Внимание!»,);Отказ = (Ответ=КодВозвратаДиалога.Нет); КонецПроцедурыГде могла быть допущена ошибка?

    Здравствуйте, Влад! Не могу понять в чем проблема выполняю все, как у вас в видео уроке, но после всех действий выдается сообщение об ошибке и не запускается 1С ПредпреятиеСоздаю следующее:// 1. Область объявления переменныхПерем МояПеременная, МояВтораяПеременная; //переменная модуляПерем Третья Экспорт; //глобальная переменная // 2. Область описания процедур и функцийПроцедура Сумма()С=15; //локальная переменнаяМояПеременная = МояПеременная+С; //итого 25Сообщить(МояПеременная,);КонецПроцедуры Функция СуммаЧисел(А, Б)Возврат Сумма(А+Б); КонецФункции Процедура ПриНачалеРаботыСистемы() //Сумма();Итог = СуммаЧисел(15,10); Сообщить(Итог);КонецПроцедуры // 3. Основной текст программыМояПеременная = 10; //значение число, 10.7, 10+7/7*3-20, -12.6 Пытаюсь сохранить а мне выдается сообщение об ошибках <МодульУправляемогоПриложения(16,9)>: Обращение к процедуре как к функции (Сумма)Возврат <<?>>Сумма(А+Б); (Проверка: Тонкий клиент)<МодульУправляемогоПриложения(16,15)>: Слишком много фактических параметров (Сумма)Возврат Сумма(<<?>>А+Б); (Проверка: Тонкий клиент) Заранее спасибо за разъяснеение с ув. Денис.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *