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

Прочитав статью, вы узнаете:

  • Что такое контекстная подсказка и как она помогает при написании программного кода?
  • Для чего нужны шаблоны текста и как их применять на практике?
  • Зачем использовать группировку строк программного кода?
  • Как выделение цветом может улучшить удобство работы с редактором кода?
  • В чем удобство нового поиска в дереве конфигурации?
  • Как быстро отобразить объекты нужной подсистемы?
  • Какие инструменты рефакторинга и отказа от модальности существуют и как ими пользоваться?

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

В статье рассматривается возможности конфигуратора на примере платформы «1С:Предприятие» редакций 1C 8.3.5 – 8.3.11, поэтому вся информация актуальна.

Улучшения в конфигураторе платформы «1С:Предприятие 8.3»

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

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

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

Подсказка со списком параметров выглядит следующим образом:

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

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

Контекстная подсказка для параметров процедур и функций вызывается нажатием сочетания клавиш Ctrl + Shift + Пробел. Также ее можно вызвать автоматически при наборе символов “(“ и “, ”. Это поведение можно включить в диалоге параметров конфигуратора (пункт меню Сервис – Параметры, закладка Модули – Контекстная подсказка):

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

Для увеличения нажмите на изображение.

Напомним, что существует документ “Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8”, в котором описаны рекомендации фирмы “1С” к разрабатываемому программному коду.

Так, секция “Параметры” описывает параметры процедуры (функции). Если их нет, секция пропускается.

Предваряется строкой “Параметры:”, затем с новой строки размещаются описания всех параметров. Описание параметра начинается с новой строки, далее следуют имя параметра, затем дефис и список типов, далее – дефис и текстовое описание параметра.

Например:

// Подготовить форму ответа на существующее письмо.
// Параметры:
// ВходящееПисьмо – СправочникСсылка.ВходящиеПисьма – письмо, на которое следует ответить.
// ИсходящееПисьмо – СправочникСсылка.ИсходящееПисьмо – данные формы для типа СправочникСсылка.ИсходящееПисьмо,
// расположенные в форме редактора исходящего письма.
// Текст – ФорматированныйДокумент – поле редактора текста письма, расположенное в форме
// редактора исходящего письма.
Процедура ЗаполнитьОтветНаПисьмо(ВходящееПисьмо, ИсходящееПисьмо, Текст) Экспорт

И конфигуратор анализирует комментарии, написанные по таким правилам, и использует их для отображения контекстной подсказки!

Для увеличения нажмите на изображение.

Чтобы избежать ручного написания комментария по приведенному формату, в платформе предусмотрены шаблоны текста, ознакомиться с которыми можно, нажав сочетание клавиш Ctrl + Shift + T.

Шаблон с наименованием “Процедура (с заголовком)” как раз и формирует правильный комментарий.

Чтобы этот шаблон сработал, достаточно набрать в редакторе символы “Проц”, нажать Ctrl+Q и выбрать нужный шаблон из предлагаемого системой списка.

Группировка строк программного кода

Модули типовых решений на платформе “1С:Предприятие 8” достаточно объемные, содержат достаточно большое количество строк кода.

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

Платформа 8.3 предоставляет еще одну возможность – сгруппировать произвольные строки модуля в одну группу по логическому принципу, а затем свернуть ее, чтобы она занимала меньше места на экране для повышения читабельности текста.

Для выделения области текста введены две новые инструкции препроцессора #Область и #КонецОбласти.

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

Для увеличения нажмите на изображение.

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

В конфигуратор добавлен шаблон текста для сокращения #Обл, который автоматически добавит в текст модуля инструкции по созданию новой области.

В диалоге параметров конфигуратора (пункт меню Сервис – Параметры, закладка Модули – Группировка) можно настроить группировку и сворачивание областей текста.

Выделение цветом конструкций

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

Для увеличения нажмите на изображение.

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

Для увеличения нажмите на изображение.

В диалоге параметров конфигуратора (пункт меню Сервис – Параметры, закладка Модули – Редактирование) можно настроить выделение цветом еще нескольких полезных конструкций.

Если выбрать параметр “Текущий идентификатор” и назначить ему цвет, отличный от цвета фона редактирования (по умолчанию – белый), то при установке курсора на какой-либо идентификатор программного кода он сам выделяется выбранным цветом, а кроме того выделяются все такие же идентификаторы, встречающиеся в модуле, и строковые константы с заключенным в кавычки этим же идентификатором:

Для увеличения нажмите на изображение.

Также интерес представляет параметр “Выбранный идентификатор”. Если для него установлен цвет, не совпадающий с цветом фона редактирования, то при двойном щелчке мышью по идентификатору будет подсвечен и он, и все совпадающие идентификаторы в тексте модуля.

Для увеличения нажмите на изображение.

При выполнении поиска в тексте модуля при помощи строки поиска или после нажатия сочетания клавиш Ctrl + F найденное слово выделяется, а все такие же найденные слова подсвечиваются.

Для увеличения нажмите на изображение.

Объединение ячеек табличного документа

Ранее ячейки табличного документа можно было объединить только с помощью пункта меню или соответствующей кнопки командной панели.

Теперь появилось сочетание клавиш Ctrl + M, при нажатии которого и происходит объединение ячеек табличного документа. Также операция “Объединить” доступна в контекстном меню табличного документа.

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

Новые возможности для разработчика в «1С:Предприятие 8.3.5»

Поиск в конфигураторе

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

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

До выхода платформы 8.3.5 поиск по дереву метаданных можно было осуществить следующим образом:

  • набирать с клавиатуры название объекта, при этом система будет искать по совпадению наименования с первой буквы названия, но только в развернутых строках дерева конфигурации;
  • при помощи сочетания клавиш Ctrl+F открыть окно поиска:

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

В платформе 8.3.5 появилось новое поле поиска, расположенное над деревом конфигурации:

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

Причем дерево конфигурации фильтруется “на лету”: в нем остаются только объекты, удовлетворяющие введенному фильтру.

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

Если строка поиска была найдена, то имя такого объекта выделяется в дереве конфигурации черным цветом.

Если кроме того искомая строка присутствует в имени объекта (не в синониме, не в комментарии), то такие вхождения выделяются красным цветом.

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

На приведенном выше рисунке реквизит ИдентификаторПользователяИБ справочника Пользователи отображается в дереве, т.к. его синоним содержит подстроку “пост”:

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

Аналогичная строка поиска появилось и у окна, содержащего набор свойств выделенного объекта (палитра свойств):

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

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

Переключиться между режимами имя/представление можно с помощью команды “Отображать имена свойств” контекстного меню:

Такая же строка поиска была добавлена в окне выбора типа данных:

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

Для быстрого отображения объектов, входящих в одну конкретную подсистему, в контекстном меню появился новый пункт “Объекты подсистемы”:

Напомним, как такого можно было добиться в предыдущих версиях платформы.

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

Теперь получить тот же самый результат можно быстрее. Кроме того, чаще всего используется и наиболее востребован отбор именно по одной подсистеме.

А, следовательно, это маленькое удобное новшество сэкономит время разработчика.

Быстрое отображение объектов, захваченных в хранилище

Если конфигурация подключена к хранилищу, то в командной панели над самим деревом конфигурации доступна кнопка “Захваченные объекты”:

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

Инструменты рефакторинга

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

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

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

Кроме этого разработчикам предстоит выполнить в своих конфигурациях работу по отказу от модальности – устранению модальных вызовов.

Поэтому в конфигураторе платформы 8.3.5 появились механизмы рефакторинга кода и инструменты работы с модальными вызовами.

Они доступны в контекстном меню текстового редактора конфигуратора в отдельном меню Рефакторинг.

Для увеличения нажмите на изображение.

Рассмотрим подробнее реализованные инструменты рефакторинга.

1. Выделить фрагмент

Эта команда преобразует выделенный участок кода в отдельную процедуру или функцию.

Если процедура, внутри которой расположен выделенный участок, содержит директиву компиляции (&НаКлиенте, &НаСервере и т.д.), то создаваемая процедура или функция будет иметь такую же директиву компиляции.

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

&НаКлиенте
Процедура ТоварыТоварПриИзменении (Элемент )
Стр = ;
Стр.Цена = ПолучитьЦенуТовара (Объект.Дата , Стр.Товар );

КонецПроцедуры

Если применить команду “Выделить фрагмент” к выделенному участку кода, система сформирует следующий программный код (создаст новую функцию):

&НаКлиенте
Процедура ТоварыТоварПриИзменении (Элемент )
Стр = Элементы.Товары.ТекущиеДанные ;
Стр.Цена = ПолучитьЦенуТовара (Объект.Дата , Стр.Товар );
Стр.Сумма = РассчитатьСумму (Стр );
КонецПроцедуры
&НаКлиенте
Функция РассчитатьСумму (Знач Стр )
Возврат Стр.Количество * Стр.Цена ;
КонецФункции

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

&НаКлиенте
Процедура ТоварыЦенаПриИзменении (Элемент )
Стр = Элементы.Товары.ТекущиеДанные ;
Стр.Сумма = Стр.Количество * Стр.Цена ;
КонецПроцедуры

Выделенный участок будет преобразован следующим образом:

&НаКлиенте
Процедура ТоварыЦенаПриИзменении (Элемент )
Стр = ТекущаяСтрокаТоваров ();
Стр.Сумма = Стр.Количество * Стр.Цена ;
КонецПроцедуры
&НаКлиенте
Функция ТекущаяСтрокаТоваров ()
Перем Стр ;
Стр = Элементы.Товары.ТекущиеДанные
Возврат Стр ;
КонецФункции

2. Переименовать

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

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

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

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

Пусть в модуле документа существует процедура:

Процедура Пересчитать () Экспорт
Для каждого ТекСтрокаТовары Из Товары Цикл
ТекСтрокаТовары.Сумма = ТекСтрокаТовары.Количество * ТекСтрокаТовары.Цена ;
КонецЦикла ;
КонецПроцедуры

А в модуле формы этого документа – следующий обработчик:

&НаСервере
Процедура ПересчитатьНаСервере ()
Документ = РеквизитФормыВЗначение (“Объект” );
Документ.Пересчитать ();
ЗначениеВРеквизитФормы (Документ , “Объект” );
//дальнейшая обработка…

КонецПроцедуры

Пиктограмма с красным восклицательным знаком в окне результатов поиска означает, что однозначно и точно определить использование в строке кода процедуры Пересчитать() системе не удалось.

Это связано с тем, что система не может автоматически определить тип переменной Документ после выполнения функции РеквизитФормыВЗначение() .

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

Для увеличения нажмите на изображение.

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

3. Создать описание функции

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

// Процедура – Заполнить письмо по шаблону
// Параметры:
// ИсходящееПисьмо – –
// Текст – –
Процедура ЗаполнитьПисьмоПоШаблону (ИсходящееПисьмо , Текст ) Экспорт
//…
КонецПроцедуры

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

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

4. Создать обработку оповещения

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

Причем это такие методы, как ПоказатьВопрос() , ПоказатьПредупреждение() , ПоказатьВводЧисла() и прочие блокирующие аналоги модальных методов.

Рассмотрим пример. Начнем писать клиентский обработчик команды, установим курсор на встречающийся метод ПоказатьВопрос() , вызовем команду “Создать обработчик оповещения”:

&НаКлиенте
Процедура ЗаполнитьМатериалы (Команда )
ПоказатьВопрос (
КонецПроцедуры
В результате система сформирует следующий программный код:
&НаКлиенте
Процедура ЗаполнитьМатериалы (Команда )
ПоказатьВопрос (Новый ОписаниеОповещения (“ЗаполнитьМатериалыЗавершение” , ЭтотОбъект ));
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьМатериалыЗавершение (РезультатВопроса , ДополнительныеПараметры ) Экспорт
КонецПроцедуры

5. Преобразовать модальный вызов

Эта команда преобразует выделенный фрагмент кода, содержащий модальный метод, с использованием его асинхронного аналога. Рассмотрим несколько примеров.

Преобразуем вызов метода Предупреждение():

&НаКлиенте
Процедура НовыйОбработчик ()
А = 1 ;
Предупреждение (“Текст” );
А = 2 ;
КонецПроцедуры // НовыйОбработчик()

После применения указанной команды программный код примет следующий вид:

&НаКлиенте
Процедура НовыйОбработчик ()
А = 1 ;
ПоказатьПредупреждение (Новый ОписаниеОповещения (“НовыйОбработчикЗавершение” , ЭтотОбъект ),
“Текст” );
КонецПроцедуры
&НаКлиенте
Процедура НовыйОбработчикЗавершение (ДополнительныеПараметры ) Экспорт
А = 2 ;
КонецПроцедуры

Усложним пример. Рассмотрим использование модальной функции и условного оператора:

&НаКлиенте
Процедура НовыйОбработчик ()
Ответ = Вопрос (,
РежимДиалогаВопрос.ДаНет );
Если Ответ = КодВозвратаДиалога.Да Тогда
//алгоритм заполнения
КонецЕсли ;
КонецПроцедуры

После преобразования модального вызова получаем:

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

Следует подчеркнуть в получившемся фрагменте инициализацию переменной Ответ.

6. Преобразовать в асинхронную процедуру

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

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

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

Для этого и предназначена еще одна команда подменю “Рефакторинг” – “Преобразовать в асинхронную процедуру”. Поясним на примере процедуры, вызывающей другую процедуру с модальной функцией внутри:

&НаКлиенте
Процедура НовыйОбработчик ()
А = 1 ;
ВложеннаяПроцедура ();
А = 2 ;
КонецПроцедуры &НаКлиенте
Процедура ВложеннаяПроцедура ()
Предупреждение (“Текст” );
КонецПроцедуры

Устанавливаем курсор на объявление процедуры ВложеннаяПроцедура() , выполняем преобразование в асинхронную процедуру. Система строит нам следующий код:&НаКлиенте
Процедура НовыйОбработчикЗавершение (Результат , ДополнительныеПараметры ) Экспорт
Оповещение = ;
А = 2 ;
ВыполнитьОбработкуОповещения (Оповещение );
КонецПроцедуры &НаКлиенте
Процедура ВложеннаяПроцедура (Знач Оповещение )
Предупреждение (“Текст” );
ВыполнитьОбработкуОповещения (Оповещение );
КонецПроцедуры

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

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

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

Если в исходном фрагменте кода на строке, содержащей Предупреждение() , выполнить команду “Преобразовать модальный вызов”, то система спросит:

Результат получится следующий:

&НаКлиенте
Процедура НовыйОбработчик (Знач Оповещение )
А = 1 ;
ВложеннаяПроцедура (Новый ОписаниеОповещения (“НовыйОбработчикЗавершение” ,
ЭтотОбъект , Новый Структура (“Оповещение” , Оповещение )));
КонецПроцедуры &НаКлиенте
Процедура НовыйОбработчикЗавершение (Результат , ДополнительныеПараметры ) Экспорт
Оповещение = ДополнительныеПараметры.Оповещение ;
А = 2 ;
ВыполнитьОбработкуОповещения (Оповещение );
КонецПроцедуры &НаКлиенте
Процедура ВложеннаяПроцедура (Знач Оповещение )
ПоказатьПредупреждение (Новый ОписаниеОповещения (“ВложеннаяПроцедураЗавершение” ,
ЭтотОбъект , Новый Структура (“Оповещение” , Оповещение )), “Текст” );
КонецПроцедуры
&НаКлиенте
Процедура ВложеннаяПроцедура Завершение (ДополнительныеПараметры ) Экспорт
Оповещение = ДополнительныеПараметры.Оповещение ;
ВыполнитьОбработкуОповещения (Оповещение );
КонецПроцедуры

7. Выделить в асинхронную процедуру

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

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

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

8. Найти модальные вызовы модуля

Описанные выше команды работают с отдельным методом или выделенным участком кода.

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

Найденные строки кода будут выведены в окно с результатами поиска:

Для увеличения нажмите на изображение.

9. Преобразовать модальные вызовы модуля

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

Также в главном меню расположена команда (Конфигурация – Рефакторинг – Анализировать модальные вызовы конфигурации).

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

Для увеличения нажмите на изображение.

Заключение

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

  • Появились списки закладок в текстах модулей, которые возможно сохранить между сеансами работы (8.3.6+)
  • В случае динамического обновления отпала необходимость перезапускать конфигуратор при работе в клиент-серверном варианте работы информационной базы (8.3.7+)
  • Реализована возможность разработки конфигураций под ОС OS X 10.8 и выше (8.3.7+). Теперь в этой операционной системе доступен и конфигуратор, и клиентское приложение (толстый и тонкий клиенты)
  • Существенно расширены операции, которые могут быть выполнены в пакетном режиме (8.3.8+). За счет этого существенно упрощен процесс автоматизированного обновления конфигурации
  • Реализована утилита административной консоли, при помощи которой стало возможно исправлять часть проблем, возникающих с информационной базой без запуска конфигуратора (8.3.8+)
  • Добавлен функционал проверки проблем подключения расширения к конфигурации. Ранее такого функционала не было, и диагностика выводилась в окно сообщений при подключении расширения (8.3.9+)
  • Реализована поддержка 64-разрядного конфигуратора. Такая возможность позволила устранить проблемы нехватки памяти для операций сравнения и объединения при обновлении конфигурации и прочих ресурсоемких операций (8.3.9+)
  • Существенно ускорено первое открытие управляемой форме в конфигураторе (8.3.9+)
  • Появилась возможность частичной выгрузки редактируемой конфигурации в файлы XML. Теперь можно выгружать только те объекты, которые изменялись с момента последней выгрузки. Это существенно ускорило процесс выгрузки в файлы XML, в случае когда изменения вносятся в большие конфигурации (8.3.10+)
  • Улучшены возможности объединения модулей за счет учета расположения методов в областях, заданных инструкциями препроцессора (8.3.10+)
  • Повышена скорость работы часто используемых операций при разработке (8.3.11).

Кроме того, разработчики платформы из релиза в релиз улучшают производительность и эргономичность конфигуратора, поэтому рекомендуем вам, при возможности вести разработку на платформе актуальных релизов.

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

Сегодня читателю предлагается рецензия на издание не новое, но заслуживающее внимания хотя бы потому, что по сей день остаётся образцом настоящих интерактивных образовательных программ. Программ, в которых печатный текст остроумно и профессионально соединяется с возможностями аудио, 3-D анимации, мультипликации, графики. Издателем выступила известная российская компания "1С" .

Издание относится к серии "1С:Познавательная коллекция". В состав комплекта входят два диска.

  1. Мир Алисы по книге Льюиса Кэрролла "Alice`s Adventures in Wonderlend".
  2. Зазеркалье по книге Льюиса Кэрролла "Through the Looking Glass".


Авторами рецензии выступили: Елена Беляева , искусствовед, редактор Т/О "М-студия" г. Киров, и Вера Булдакова , филолог, преподаватель высшей категории. Экспертом была приглашена Любовь Георгиевна Зубарева , преподаватель английского языка высшей категории (Кировский областной колледж культуры)

"Волшебная компьютерная книга"

На обложке диска нас извещают (между прочим, среди других замечаний о продукте): "Перед вами волшебная компьютерная книга". И это чистая правда! Путешествие, в которое вы пускаетесь не вместе с Алисой, а совершенно самостоятельно, становится интереснее с каждым новым шагом. Пространство разворачивается, каждый новый встречный действительно новый и нисколько не похож на других, живущих в этой стране. Открытия на каждом шагу, их предвкушаешь с затаённым восторгом. Подумать только, всё это придумано в позапрошлом веке, а требование новизны, предъявляемое к искусству постмодернизма, удовлетворяется абсолютно! Книга, условием прочтения которой стала способность ума к интеллектуальной игре, второй век вдохновляет людей на творчество. Но творчество и есть волшебство.

Введение в первую часть "Мир Алисы" сделано самым популярным переводчиком "Алисы в стране чудес" на русский язык - Борисом Заходером, который признаётся в том, что текст "Alice`s Adventures in Wonderlend" относится к разряду принципиально непереводимых. Это и побудило его в своё время сделать свой вариант пересказа книги. На диске Борис Заходер разговаривает с вами, причём, вы можете выбрать, читать его предисловие или видеть и слышать писателя. Андрей Тарковский любил повторять, что кино - законсервированное время. Вы щёлкаете кнопкой мышки - и волшебная баночка времени открыта!

Идея многовариантности перевода становится главной и для разработчиков этой образовательной программы. Здесь представлен весь спектр авторов-переводчиков: В. Набоков, В. Орел, Б. Балтер, Б. Заходер - в первой части; В. Орел, Л. Яхнин, В. Азов - во второй. Дополняет картину система цитат классических переводов Н. Демуровой, О. Седаковой, Д. Орловской, А. Щербакова, С. Маршака. Варианты переводов будят фантазию читателя-путешественника, невольно появляются идеи своей собственной трактовки не текста, но ситуаций, героев и событий.

Принцип работы прост. Перед нами - два окна с синхронно передвигающимся английским и русским текстом (в "Зазеркалье" любой перевод легко заменяется другим). Под каждым английским словом открывается его русский эквивалент.

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

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

Система переходов от слоя к слою многовариантна и функциональна одновременно. Так, можно заменить текст перевода под картинкой, а можно к этому переводу подобрать другого автора иллюстраций. Кстати, среди иллюстраторов и классики от Дж.Тенниела до самого Кэрролла...

Книгу можно читать на английском языке или на русском (или слушать на английском) главу за главой, а можно увлечься примечаниями (известно, что по количеству сказанных о нём мудрёных слов, Кэрролл уступает разве что Шекспиру).

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

Можно изучить "Биографию профессора оксфордского университета, преподавателя математики Чарлза Лютвиджа Доджсона", или зеркально отражённую "Биографию писателя Льюиса Кэрролла - создателя "Алисы".

А можно сразу отправиться на страницу с лаконичной, но отборной библиографией изданий Кэррола и книг о нём.

Кроме того, диск "Алиса в Зазеркалье" даёт возможность скопировать в буфер обмена любую часть текста.

Игра для любого возраста

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

Изучение навигации - часть предлагаемого авторами путешествия по стране Чудес и Зазеркалью.

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

Здесь каждая деталь является частью многослойной конструкции, в которой главное - книги Льюиса Кэрролла. Погруженные в видимый и слышимый контекст, они становятся объёмными. Игра со СЛОВОМ, игра самим СЛОВОМ будит воображение читателя и провоцирует дальнейшие шаги к самостоятельной работе с ТЕКСТОМ. Это настоящая образовательная программа, увлекательная и позволяющая принимать самостоятельные решения; полная интересных и точных подробностей, исторических и философских комментариев. С ней можно работать в одиночку, а можно вдвоём или целой компанией. Программа, как и книга, сделана, что называется, "на вырост", чем больше вы узнаёте, тем интереснее.

"Очень полезный подарок!"

Если у вас есть компьютер, этот диск будет жемчужиной вашей коллекции компакт-дисков. Неважно, какого вы возраста, знаете английский или нет, неважно, в какой сфере вы трудитесь. Очень хорошо, если вы ещё учитесь в школе. Эта старая, добрая книжка, прочитанная по-новому, подарит вам минуты отдыха и наслаждения, познания почти бесконечного, поскольку текст настолько плотен, что его можно читать без конца. И играть с ним. Ведь известно, что любой текст интерактивен, по большому счёту, проникновение в глубину текста соответствует уровню вашего развития, а стремление к совершенству бесконечно. Сегодня очень многие учителя, школьники, родители только-только получают доступ к компьютеру. Свою задачу образовательная лаборатория сайт видит не только в представлении новейших электронных продуктов, но и в том, чтобы открыть пользователю лучшие издания, не устаревшие со временем и с развитием телекоммуникационных технологий. Таких изданий не так уж много. Компьютерная книжка про Алису на одном из первых мест. Удивительный пример не соперничества, а соединения "галактики Гутенберга" с новыми изобретениями человека!

Мы уже не раз представляли нашим читателям продукты фирмы "1С" . Это случай ещё раз убедиться, насколько высок уровень образовательных электронных продуктов, издаваемых этой компанией. "Алиса в стране чудес и Зазеркалье" получила немало заслуженных наград и призов..

Редакция благодарит компанию "1С" за предоставленную программу.


Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Реализовано в версии 8.3.12.64 мобильной платформы.

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

Сценарии мобильной работы

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

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

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

Такие мобильные приложения могут взаимодействовать с «основным» приложением, установленным в офисе. Но это не онлайн взаимодействие, а периодический обмен данными с бэк-офисом. Основная работа в мобильном приложении ведется в оффлайн-режиме. А при появлении интернет-соединения выполняется синхронизация данных.

Таким образом мобильная платформа хорошо подходит для разработки автономных рабочих мест сотрудников, которые находятся вне компании и не имеют надежного интернет-соединения с офисом. Однако такие рабочие места, как правило, обладают ограниченной функциональностью, меньшей, чем функциональность «основного» приложения. К тому же они не обеспечивают онлайн-взаимодействие с информационной базой.

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

  • Взаимодействие с информационной базой должно выполняться в онлайн-режиме;
  • На мобильном устройстве должна быть доступна вся функциональность «основного» прикладного решения, даже такого крупного, как, например, «1С:ERP Управление предприятием»;
  • Интерфейс должен обеспечивать комфортную работу на любых мобильных устройствах с любым размером и расположением экрана.

Мобильный клиент

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

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


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


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

Потенциальные пользователи

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

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


Кроме этого мобильный клиент будет полезен для пользователей сервисов, работающих на базе технологии 1Сfresh. Это сервисы 1Сfresh.com и «Бухгалтерское обслуживание », поддерживаемые фирмой «1С», а также любые другие сервисы, развернутые с использованием этой технологии.

Функциональность

Если сравнивать функциональность мобильного клиента с тем, что «умеет» тонкий клиент, то тут есть не только ограничения, но и преимущества.

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

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

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

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

Автоматизация построения интерфейса форм

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

Например, мы выяснили, что большие формы, как правило, имеют незначительное количество важных элементов. То есть таких элементов, работа с которыми идет постоянно. И в то же время в них есть много менее важных элементов, работа с которыми работа выполняется время от времени.

Например, важные элементы это таблица динамического списка в форме списка, табличный документ в форме отчёта. Важные колонки это, например, колонки «Наименование» и «Дата».

Соответственно чтобы обеспечить достаточный уровень удобства работы с формой, мобильный клиент важным элементам даёт больше места на форме, а менее важным элементам даёт меньше места, убирая их, например, в сворачиваемую группу.

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

Адаптация конфигураций к мобильному клиенту

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

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

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

Другое направление – это подсказать мобильному клиенту дополнительную информацию об элементах формы. Мы научили мобильный клиент легко распознавать элементы в стандартных или в небольших формах, и определять их важность. Но если форма нестандартная или большая, то будет полезно вручную указать, какие из ее элементов являются более и менее важными. Для этого вы можете использовать новое свойство элементов – ВажностьПриОтображении: высокая, обычная, низкая и т.д.

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

Дистрибутив, сборка и публикация

Мобильный клиент, по сути, представляет собой некоторую «оболочку», которая может запустить то или иное прикладное решение. При этом функциональность запускаемых прикладных решений может сильно отличаться друг от друга. В то же время магазин приложений AppStore, требует, чтобы приложение, опубликованное в магазине, не меняло значительно свою функциональность после публикации.

Поэтому мы не публикуем мобильный клиент как отдельное универсальное приложение. Мобильный клиент поставляется вместе с мобильной платформой в виде набора исполняемых файлов. На основе этих файлов разработчик должен собрать приложение, которое будет работать на мобильном устройстве. Процедуры сборки и публикации приложений, что для мобильной платформы, что для мобильного клиента, схожие. Используется один и тот же инструмент – сборщик мобильных приложений.

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

Уважаемые и любимые клиенты, мы стремимся стать лучше для Вас!

В связи с этим мы начинаем преображение Центра красоты на Тульской с 15 июля. Ремонт продлится 2 недели. Обновленный и модернизированный центр распахнет свои двери для Вас 29 июля.

На этот период будем рады видеть Вас в Центре на Кантемировской, а так же хотим сообщить, что некоторые специалисты с Тульской во время ремонта будут работать на Кантемировской.

Приносим свои извинения за причиненные неудобства.

Более подробную информацию Вы можете уточнить в едином CALL-центре +7 495 134 22 22.

Подписывайтесь на наш Instagram и следите за процессом, будет интересно!

Криолиполиз - NEW!!!

ВЫГОДА ДО 54 400*!

АБСОЛЮТНЫЙ ХИТ КЛИНИК ЕВРОПЫ - КРИОЛИПОЛИЗ COCCON :

✔️ БЕЗБОЛЕЗНЕННО;

✔️ БЫСТРЫЙ РЕЗУЛЬТАТ;

✔️ РАВНОМЕРНОЕ УМЕНЬШЕНИЕ ЖИРОВОЙ ТКАНИ;
✔️ ОТСУТСТВИЕ ПОБОЧНЫХ ЭФФЕКТОВ;
✔️ ШИРОКАЯ ОБЛАСТЬ ПРИМЕНЕНИЯ - ОТ ЖИВОТА И БЕДЕР ДО ПОДБОРОДКА.

*Подробнее об акции спрашивайте у администраторов или по телефону.

Революционная эмульсия PRX-T33 ТЕПЕРЬ У НАС!

PRX-T33 это уникальное запатентованное средство, которое совершило переворот косметологии в Италии, и после 10 лет клинических испытаний вышел на Российский рынок. PRX-T33 - химический пилинг для ревитализации (омоложения) кожи. Процедура контролируемого повреждения кожи с целью ее стимуляции и восстановления, без повреждения эпидермиса, не вызывающая шелушения. Большинство пилингов рекомендуют делать в осенне-зимний период, но PRX-T33 - всесезонный.

NEW BARBER!

Теперь в сети центрах красоты "Зазеркалье" (м.Кантемировская, м.Тульская) появились Барберы - это мастера, которым современный мужчина смело может доверить свой образ: стрижку, оформление усов, бороды или побаловать себя королевским бритьем. Барбер поможет выбрать уход и стайлинг для волос, порекомендует подходящую к типу внешности укладку и идеальную бороду. Прически для мужчин отличаются широким разнообразием. Молодой человек при помощи стрижки может выразить свой характер, настроение, образ!Выбери свой стиль жизни!

Babor - "Искусство очищения"

В центрах красоты "Зазеркалье" появилась новая линейка косметики для домашнего ухода - "Искусство очищения", от немецкой компании Babor.
В линейку входят:
Очищающая Ферментная Пудра, Набор "Трио для Очищения Кожи", Мягкий Пилинг, Эссенция-Тоник с Термальной Водой, Эссенция-Тоник с Розовой Водой, Молочко для Умывания.

Идеальный маникюр с Luxio теперь и в Зазеркалье на Кантемировской

Салон красоты Зазеркалье представляет современную линию для маникюра и педикюра - LUXIO.

Последнее время на Хабре стали все чаще появляться статьи, посвященные 1С как среде разработки приложений . Статьи по смыслу более концептуальные, чем прикладные; авторы делают обзор платформы «1C:Предприятие 8» в целом, пытаются понять, хороша или плоха технология создания бизнес-приложений, предлагаемая 1С.

Не буду обсуждать, прав ли каждый из авторов или нет; у платформы 1С, как у любой технологии, есть свои преимущества и недостатки. А есть и свои интересные особенности, свои наработки и механизмы. Вот о них и хочется поговорить. А еще - хочется написать статью про 1С для людей, с 1С незнакомых, статью, которая показывает, какое место 1С занимает в ряду аналогичных программных продуктов. Мне лично такой ознакомительной обзорной статьи очень не хватало, когда я еще не был знаком с 1С, но был знаком с рядом других ERP продуктов.

Итак, начнем!

Что производит фирма 1С?

Думаю, широкая публика на этот вопрос ответит: «1С:Бухгалтерию». Кто-то вспомнит обучающие программы или знаменитую серию игр «ИЛ-2 Штурмовик».

Участники Хабра, конечно, в курсе, что 1С – это не только «1С:Бухгалтерия», что есть целая система программ «1С:Предприятие», включающая средства разработки бизнес-приложений и бизнес-приложения, созданные с помощью этих средств. А уж с помощью средств разработки 1С написаны и бухгалтерия, и CRM, и ERP (с внедрениями на тысячи и десятки тысяч пользователей), и многое другое.

ERP-системы - наиболее интересные и насыщенные по функционалу бизнес-приложения; посмотрим на их примере, какое место технологии «1С:Предприятия» занимают в ряду аналогов.

Какие бывают ERP

Какое самое ценное свойство ERP систем (да и любых бизнес-приложений)? На мой взгляд – это гибкость, возможность приспосабливаться к бизнес-процессам конечного пользователя как можно меньшей ценой.

Понятно, что, программируя ERP систему, все варианты бизнес-процессов предусмотреть невозможно. На помощь приходит параметризация; вводя в систему параметры, которые может изменить в настройках системы пользователь (консультант, администратор), мы повышаем гибкость системы сравнительно небольшой ценой. Первые ERP системы были parameter-driven, т.е. настраиваемые с помощью параметров.

Не все бизнес-кейсы можно предусмотреть и в параметризуемых системах. Когда одной настройкой параметров не обойтись – надо менять исходный код. Тут перед производителем ERP встает вопрос – менять код самому под нужды потребителей и выпускать обновления или поставлять систему в исходных кодах, чтобы пользователи могли сами переписать систему под свои нужды (что, кстати, не освобождает производителя от выпуска обновлений - система должна развиваться, поддерживать новый функционал, чтобы быть конкурентоспособной).

Отдельный вопрос – выбор языка программирования для написания ERP системы. Бо́льшая часть ERP системы – это бизнес-логика, для которой обычные языки программирования типа С++ не всегда подходят наилучшим образом. В идеале бизнес-логику хорошо бы программировать на высокоуровневом языке, способном обеспечить бизнес-программисту максимальный комфорт при написании бизнес-логики, абстрагировать его от низкоуровневых деталей (особенностей работы с базами данных, подсистемой файлового ввода-вывода и печати, оконной подсистемой пользовательского интерфейса и т.п.). Конечно, в этом случае надо еще создать и компилятор/интерпретатор для этого языка и среду разработки.

Имеем матрицу возможных сочетаний:

  • открытый или закрытый код приложения (тут я имею в виду не open source в обычном его понимании , а возможность поставки исходного кода приложения, в том числе и за отдельную плату).
  • язык программирования бизнес логики – «обычный» (С/Java/Perl/…) или специально разработанный, проприетарный.

Бизнес-приложения, созданные с помощью технологий «1C: Предприятия» - это системы с открытым прикладным исходным кодом, написанным на проприетарном языке , у которого нет короткого названия; официально его называют «Встроенный язык программирования 1С: Предприятие», неофициально и коротко – «язык 1С».

Большинство лидеров современного ERP рынка – это системы с открытым кодом. Возможность изменять исходный код «на местах» дает огромную гибкость и конкурентное преимущество. Продукты с закрытым кодом вынуждены использовать другие приемы; самый распространенный ход – аналог CallBacks, возможность повесить кастомный код на предопределенные события, как визуальные (открытие-закрытие формы, выбор из списка значений, …), так и бизнес-событие (обработка заказа, ввод счета на продажу, …). В некоторых системах есть возможность написать свои обработчики на C# (или других распространенных языках), в других для этого есть Visual Basic for Applications, лицензированный у Microsoft и т.п.

Как устроены ERP

ERP системы с открытым кодом приложения состоят из собственно исходного кода, реализующего бизнес-логику, и среды исполнения этого бизнес-кода (т.н. платформы).

Платформа, как правило, написана на низкоуровневом языке (C, C++), часто исходные коды платформы закрыты для конечных пользователей. Задача платформы – позволить программисту абстрагироваться от низкоуровневых деталей (особенности ОС и СУБД и т.п.) и сосредоточиться на написании собственно бизнес-логики. К платформе также часто относят средства разработки бизнес-приложений и средства администрирования системы (и я согласен с этим подходом). Не обходятся, кстати, без платформы и системы, где бизнес-логика написана на «обычных» языках программирования. Интерпретировать код приложения там не надо, но потребность в платформенном функционале остается (например, «обертках» вокруг БД или унифицированном доступе к списку пользователей и их прав).

Платформу как среду исполнения бизнес-приложений можно охарактеризовать как виртуальную машину. Как правило, платформа должна эмулировать для ERP три основные вещи:

  • Среда исполнения бизнес-логики.
  • База данных.
  • Графическая подсистема для отображения клиентского приложения. Клиентское приложение может быть графическим, отрисованным штатными средствами ОС (в том числе и мобильной ОС), а может быть веб-приложением. В случае веб-приложения платформа или реализует свой веб-сервер, или обеспечивает поддержку стандартных веб-серверов (IIS, Apache и т.д.)
В принципе, модифицируя платформу, можно заставить ERP, написанную на проприетарном языке, запускаться под любой ОС и хранить данные практически в любой СУБД. Обычно производители ERP ограничиваются одной-двумя ОС и одной-двумя СУБД. Поддержка дополнительных ОС и СУБД – это увеличение затрат на разработку и тестирование; нередко производители ERP в новых версиях продуктов объявляют о прекращении поддержки какой-либо СУБД.

Платформа 1С в плане поддержки ОС и СУБД предлагает следующее:

  • Среда исполнения бизнес-логики: отказоустойчивый кластер серверов приложений с балансировкой нагрузки; ОС - Windows или Linux
  • База данных: собственная файловая СУБД (рекомендуемая для разработки и небольших инсталляций), MS SQL, Oracle, IBM DB2, PostgreSQL
  • Клиент:
    • тонкий клиент (только отображение и ввод информации на клиенте) – Windows и Linux. Может работать с сервером приложений через локальную сеть или через веб-сервисы (в этом случае на серверной стороне должен быть развернут Microsoft IIS или Apache)
    • Веб-клиент – на серверной стороне Microsoft IIS или Apache, на клиентской – любой из четырех браузеров - Internet Explorer, Chrome, Firefox, Safari
    • толстый клиент (с возможностью исполнять на клиенте часть бизнес-логики) – Windows и Linux. Обладает рядом ограничений (например, может работать только в пределах одной локальной сети с сервером приложений). Считается устаревшим, далее его развивать фирма «1С» не планирует.
    • Мобильный офлайн-клиент (с возможностью периодической синхронизации) – iOS и Android.
Если мы используем при написании программы 1С технологию управляемого приложения (доступна с 2008 года) – то из одного прикладного кода мы получаем и тонкого клиента для Windows/Linux, и веб-клиента.

Язык приложений ERP

Отдельная тема – язык, на котором пишется бизнес-логика. Для эффективной работы бизнес-программиста этот язык должен быть как можно ближе к предметной области бизнеса (в идеале – DSL, Domain Specific Language) и подальше от технических деталей ОС и СУБД.

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

  1. Создать таблицы в БД, где будет храниться информация о документе.
  2. Написать класс (или классы), реализующие бизнес-логику работы с документом. Помимо бизнес-логики классы должны также реализовывать взаимодействие с БД - чтение и запись данных документа.
  3. Создать пользовательский интерфейс для редактирования нового типа документа. Часто нужно бывает еще создать форму, отображающую список документов с возможностью поиска по разным полям и т.п.
Если мы работаем на C# в Visual Studio – все шаги можно сделать внутри одной среды разработки (включая дизайн БД).
В ряде ERP систем, использующих проприетарные языки, также надо пройти все три описанных выше шага, как правило, внутри одной среды разработки.

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

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

  • Создаст структуры в СУБД для хранения данных.
  • Создаст формы для редактирования документа, показа списка документов этого типа и т.д. Если автоматически созданные формы нас чем-то не устроят – можно сделать свои, расширив и/или изменив стандартные.
  • Документ станет доступен в отчетах.
  • Документ и его поля станут доступны для раздачи прав на чтение/запись в системе безопасности приложения.
  • Поля документа станут доступны для полнотекстового поиска по всей системе (с учетом синонимов, поддержкой транслитерации, нечеткого поиска и т.д.).
  • Все изменения в документах нового типа будут регистрироваться в журнале регистрации приложения.
  • Будут автоматически созданы методы для сохранения и чтения документа в/из XML и JSON.
  • Документ станет доступен по интерфейсу REST (через протокол OData).
  • И многое другое

Особенностью разработки в 1С является то, что в системе существуют порядка 20 встроенных типов объектов, и все новые объекты, которые разработчик создает, должны принадлежать к одному из этих типов. Большая часть этих типов описывают объекты из сферы учетной деятельности предприятия – справочники, документы, планы счетов и т.д. Другая часть типов объектов – технологические, например, Web- и HTTP-сервисы; они позволяют программам 1С общаться с внешним миром.


Конфигуратор 1С – в нем создаются прикладные решения. Слева - дерево встроенных типов 1С; под каждой веткой - прикладные объекты данного типа.

Разработка прикладных решений делается в Конфигураторе (Designer в англоязычной версии). Недавно была выпущена ознакомительная версия инструмента «1C:Enterprise Development Tools», позволяющая вести разработку решений 1С в популярной среде Eclipse . Промышленную разработку в «1C:Enterprise Development Tools» вести пока нельзя, но понять, куда в технологическом плане движется компания, по этой версии вполне можно. В частности, поддерживается коллективная разработка с использованием популярных систем управления версиями (Git, SVN и любых других, для которых есть плагины к Eclipse); есть также возможность написать к IDE Eclipse собственные плагины, расширяющие возможности среды разработки по работе с 1С.


Enterprise Development Tools - разработка приложения 1С в IDE Eclipse

Собственно язык программирования 1С по синтаксису напоминает больше всего JavaScript. Язык, строго говоря, не является объектно-ориентированным. В нем нет наследования; но, поскольку все объекты программ 1С принадлежат к одному из встроенных типов объектов – это можно назвать упрощенным наследованием: встроенные типы объектов реализуют предопределенный функционал, который прикладной программист может в своих объектах-наследниках переопределить. Такое наследование – одноуровневое, наследовать от прикладных объектов уже нельзя; похожий подход к наследованию принят в концепции прототипного программирования (prototype-based programming); одним из популярных представителей этой концепции как раз является JavaScript.

Такой подход осознанно ограничивает свободу разработчика прикладных решений, заставляя его для реализации своих задач выбирать нужный тип объекта из разумно ограниченной палитры встроенных типов. Взамен разработчик получает богатый функционал, реализованный платформой, и действительно быструю разработку. Плюсы такого подхода очевидны – учетные системы на 1С создавать легко и быстро. Есть и минусы – если нужно реализовать что-то, для чего в платформе нет встроенных типов (например, работу с SFTP), то нужно либо ждать новой версии платформы, в которой будет реализован этот функционал, либо писать свою реализацию на «обычном» языке и вызывать её из 1С через технологию внешних компонент .

Несколько фактов о встроенном языке программирования 1С:

  • Поддерживается английский (if… then) и русский (если… тогда) синтаксис.
  • Язык обладает полнотой по Тьюрингу .
  • Это язык с динамической типизацией. Переменная связывается с типом в момент присваивания значения, а не в момент объявления переменной. Объявляя переменную, нельзя указать ее тип.
    Можно так: var а; а = 1;
    Нельзя так: var a as Int; a = 1;
  • Для чтения данных из СУБД у 1С есть свой язык запросов, похожий на SQL. Собственно, в SQL он и транслируется при выполнении программ 1С.

Как все это работает

Как решения 1С поставляются конечным пользователям? И как они работают у этих самых конечных пользователей?

Чтобы полнее ответить на этот вопрос, надо вспомнить об одной характерной особенности 1С.
Проект в 1С называется конфигурацией. Конфигурация – это законченная самодостаточная программа, например, бухгалтерия или ERP; она включает в себя все объекты и код, нужные для полноценного функционирования бизнес-приложения. Особенность 1С в том, что конфигурация хранится в базе данных, в той же самой, в которой лежат данные самого приложения (проводки, данные справочников и документов и т.п.), т.е. программа хранится вместе с данными. База данных с конфигурацией (и данными приложения) в терминологии 1С называется информационной базой (сокращенно – инфобазой).

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


Архитектура решений 1С

Где какой софт установлен:

  • Сервер СУБД – одна или несколько СУБД, поддерживаемых 1С (MS SQL, Oracle, IBM DB2, PostgreSQL). Если на сервере 1С установлено несколько приложений 1С - приложения могут использовать разные СУБД; например, бухгалтерия – MS SQL, а ERP – Oracle.
  • Сервер – один или несколько серверов отказоустойчивого масштабируемого кластера. Тут должен быть установлен программный продукт «Сервер 1С» (набор библиотек и исполняемых файлов). Отказоустойчивость и масштабируемость кластера, а также балансировка нагрузки между серверами кластера обеспечиваются средствами ПО «1С». В составе одного кластера могут быть сервера под Windows и Linux, в системе может быть предусмотрен резервный кластер.
  • Клиент: ОС Windows или Linux, должен быть установлен тонкий клиент (1cv8c.exe/1cv8) или толстый клиент 1С (1Cv8.exe для Windows, 1cv8 – для Linux).
    • Тонкий клиент умеет исполнять ограниченный набор функциональности встроенного языка 1С. Оперирует ограниченным набором типов встроенного языка, предназначенным лишь для отображения и изменения данных в памяти. Вся работа с базой данных, объектными данными, исполнение запросов выполняется на стороне сервера. Тонкий клиент только получает готовые данные, подготовленные для отображения.
    • Толстый клиент может исполнять практически всю функциональность, предоставляемую встроенным языком 1C сам, прибегая к помощи сервера только когда надо записать или считать данные из базы. Ограничения: требует значительного количества аппаратных ресурсов и может «общаться» с кластером серверов 1С только по локальной сети. Считается устаревшим, поддерживается для обратной совместимости.
  • Веб-сервер – IIS или Apache. От 1С – ставится набор расширений для веб-серверов.
  • Веб-клиент – любой из четырех поддерживаемых браузеров: Internet Explorer, Chrome, Firefox, Safari.
  • Мобильный клиент: iOS или Android и любое мобильное приложение 1С. Способ общения мобильного приложения 1С с сервером зависит от конкретного приложения; чаще всего используются Web- или HTTP-сервисы.

Между собой компоненты 1С - сервер, тонкий и толстый клиенты и веб-расширения - общаются или по собственному протоколу (реализованному поверх TCP), или по http.

Что особенного в 1С

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

Разработка

Легко создавать решения с нуля - благодаря встроенным объектам, реализующим базовый функционал учетных систем. Именно продуманная система встроенных объектов (а не язык, который в общем-то обычный скриптовый) делает «1С:Предприятие» мощным инструментом создания бизнес-приложений. Разработчику не нужно писать слой доступа к данным, базовый UI и т.п. – можно сразу сосредоточиться на решении бизнес-задачи. Для решения бизнес-задач также многое уже реализовано во встроенных объектах (читай – базовых библиотеках) – например, поддержка иерархических справочников, учетные машины для реализации бухгалтерского и товарного учета, механизмы для сложных периодических расчетов (например, расчета зарплаты) и многое другое.

«Из коробки» разработчик получает встроенные объекты (справочники, документы, регистры и т.д.), реализованные платформой; это паттерны из мира учетных систем. В прикладном решении (конфигурации) разработчик реализует эти паттерны, наполняя их конкретной бизнес-логикой.

Прикладное решение в «1С:Предприятии» не пишется в прямом смысле на языке программирования. Два краеугольных камня идеологии разработки – разработка от метаданных (Metadata-driven development) и построение приложения на основе модели (Model-driven development).

В основе бизнес-приложения лежат метаданные, представляющие собой декларативное описание самого приложения. Прикладное решение описывается не в терминах реляционных таблиц, классов объектного языка программирования и т.д., как в большинстве систем. Решение в «1С: Предприятии» описывается метаданными в виде совокупности прикладных объектов, выбираемых из определенного набора прототипов-паттернов (справочников, документов, планов счетов, …).

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

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

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

Все бизнес-приложения следуют принятой модели, и этим обеспечивается единообразие и предсказуемость их поведения. Разработчик, желающий отразить в прикладном решении специфику той или иной предметной области, имеет вполне определенный набор способов решения этой задачи средствами, заложенными в платформу. С одной стороны, такой подход ограничивает (осмысленно!) свободу разработчика, но с другой - защищает его от множества ошибок и позволяет в сжатые сроки получать работоспособное решение, которое сможет в дальнейшем развиваться и поддерживаться как им самим, так и, при необходимости, другим специалистом.

Наличие единой модели положительно сказывается на простоте освоения системы. Вся разработка ведется в рамках одной сквозной системы понятий, в едином пространстве типов данных. Описание в метаданных тех или иных объектов (сущностей) сразу определяет и соответствующие типы встроенного языка программирования, и необходимые для их хранения структуры БД. Все последующие манипуляции этими объектами как в памяти, так и в БД выполняются единообразно, не требуя преодоления барьеров между различными нотациями, принятыми при работе с СУБД и универсальными языками программирования.

Готовое приложение (конфигурация), поставляемое в открытых исходных кодах (например, бухгалтерия или ERP), для программиста на стороне клиента – это уже практически DSL (Domain Specific Language, предметно-специфичный язык). Программист может использовать готовые объекты конфигурации (справочник контрагентов, план счетов, расчет зарплаты) для модификации поведения системы под нужды заказчика.

Кастомизация и поддержка

Коротко о бизнес-логике прикладного решения можно сказать следующее: её меняют. Её меняют сотрудники IT-отделов клиента, адаптируя решение под бизнес-процессы предприятия. И её меняет поставщик решения, добавляя новый функционал, поддерживая изменения законодательства и периодически выпуская обновления.

Процедура установки обновления там, где бизнес-логика была изменена «на местах» под нужды клиента, часто бывает нетривиальной операцией, иногда чреватой ошибками. По большому счету, это слияние исходных кодов нового приложения от поставщика с измененным (по сравнению с предыдущей версией от поставщика) приложением клиента. С одной стороны, надо получить новый функционал, пришедший с обновлением; с другой стороны – не потерять свои наработки.

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

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

Описанное выше – одна из самых непростых задач в жизненном цикле практически любой бизнес-системы с открытым кодом приложения. От того, насколько успешно производитель ПО решит эту задачу, во многом зависит успех приложения на рынке. В случае «1С» объединение в ходе обновления двух конфигураций (поставщика и пользователя) – это не просто объединение исходных кодов двух приложений, это прежде всего объединение моделей приложений, которое должно проходить по определенным правилам.

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

В свою очередь, и клиент с помощью этого механизма может определять правила поддержки объектов своей конфигурации - например, он может отказаться от поддержки поставщиком конкретного объекта, если возьмет на себя ответственность за дальнейшую модификацию этого объекта или если данный объект ему в его работе не нужен. А можно, наоборот, запретить редактирование объекта «своей» конфигурации (даже если поставщик разрешает это делать) с тем, чтобы застраховаться от случайного изменения.

В идеале хотелось бы, чтобы пользовательские изменения существовали как бы «в стороне» от стандартной конфигурации поставщика и включались в работу только в момент непосредственного выполнения кода. В этом случае процесс установки обновлений от поставщика станет автоматическим процессом, не требующим вмешательства человека. 1С предлагает два подхода, покрывающих значительный процент сценариев кастомизации.

Первый подход - использование внешних обработок и внешних отчетов . Эти механизмы позволяют надстраивать дополнительную функциональность «сверху» системы, не изменяя исходного кода конфигурации. По сути это скрипты с графическим интерфейсом, предназначенные для запуска на конкретном прикладном решении. Эти механизмы породили свой аналог «App Store», онлайновый магазин , где независимые программисты выкладывают, а конечные пользователи приобретают нужные дополнения для разных программ.

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

Что еще?

Что еще есть интересного/важного в технологической линейке 1С? В списке – наиболее значимые механизмы, о каждом из которых можно написать отдельную статью (или несколько):

  • Облачное решение 1cFresh - «облако из коробки», горизонтально масштабируемая среда для работы с прикладными решениями 1С (и фирм-партнеров) в модели сервиса (SaaS). Продукт содержит в себе все нужные для работы SaaS функции – регистрация и управление пользователями, возможность быстрой публикации новых прикладных решений, создание резервных копий пользовательских данных и т.п. Фирма 1С сама использует продукт 1cFresh для предоставления своих продуктов в аренду (http://1cfresh.com), а также продает решение 1cFresh как коробочный продукт, позволяя партнерам и клиентам разворачивать собственные облака для прикладных решений на основе технологий «1С: Предприятие».
  • Мобильная платформа 1С (упомянутая выше), позволяющая создавать приложения для мобильных ОС (iOS, Android) из одного исходного кода, используя ту же методику и среду разработки (Конфигуратор), что и для «обычных» приложений 1С.
  • Мощная и гибкая система отчетности . Отчеты – крайне важный механизм в любой бизнес-системе; многие ERP используют внешние генераторы отчетов от других производителей, т.к. создание хорошего генератора отчетов – непростая задача с особой спецификой. В 1С отчеты разрабатываются в той же среде (Конфигураторе), что и само приложение; в основе механизма отчетов лежит система компоновки данных (СКД) – механизм декларативного описания отчетов. Одна из важных особенностей отчетов в 1С – это то, что конечный пользователь, может изменить созданный разработчиком отчет «под себя», используя те же возможности по дизайну отчетов, что и разработчик.
  • Механизм обмена данными , позволяющий создавать территориально распределенные информационные системы, обменивающиеся данными в офлайн режиме, без постоянного соединения. Обмен данными возможен как между приложениями «1С: Предприятия», так и между приложениями «1С: Предприятия» и сторонними системами.
  • И еще много интересного


«1С:Предприятие» - технологии и инструменты

Вместо заключения

Надеюсь, у не знакомых с 1С читателей сложилась более-менее ясная картинка – что такое 1С, как она работает и какие возможности она предоставляет разработчикам. За рамками обзора осталось много интересных тем; о них - в следующий раз.

Платформенно-ориентированный подход к архитектуре приложений был выбран фирмой 1С еще в середине 1990-х. Это своеобразное сочетание мощной платформы и разумно-ограниченного прикладного языка хорошо себя показало – на технологиях 1С создано более 1000 официально сертифицированных фирмой 1С решений для самых разных областей бизнеса, от автоматизации малого бизнеса до систем управления предприятиями с тысячами одновременно работающих пользователей. Добавить метки

Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png