Нотатки із дзеркалля 1с. Мобільний клієнт. Babor - "Мистецтво очищення"

Стаття входить у цикл «Перші кроки у створенні 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).

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

Отже, йдемо далі – у наступній статті ми повернемося до програмування та розберемо поняття контексту програмного коду.

Шановні та улюблені клієнти, ми прагнемо стати кращими для Вас!

У зв'язку з цим ми починаємо перетворенняЦентру краси на Тульськійз 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, предметно-специфічна мова). Програміст може використовувати готові конфігураційні об'єкти (довідник контрагентів, план рахунків, розрахунок зарплати) для модифікації поведінки системи під потреби замовника.

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

Коротко про бізнес-логіку прикладного рішення можна сказати: її змінюють. Її змінюють співробітники ІТ-відділів клієнта, адаптуючи рішення під бізнес-процеси підприємства. І її змінює постачальник рішення, додаючи новий функціонал, підтримуючи зміни законодавства та періодично випускаючи оновлення.

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

Це завдання добре знайоме всім, кому доводилося працювати в команді над одним додатком і об'єднувати свої зміни вихідного коду зі змінами інших учасників команди. Навіть якщо всі розробники з однієї команди і дотримуються одного набору правил розробки та оформлення коду, завдання злиття вихідних робіт іноді буває непростою справою. Ну а у випадку 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С рішень для різних областей бізнесу, від автоматизації малого бізнесу до систем управління підприємствами з тисячами одночасно працюючих користувачів. Додати теги

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

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

  1. Світ Аліси за книгою Льюїса Керролла "Alice`s Adventures in Wonderlend".
  2. Задзеркалля за книгою Льюїса Керролла " Through the Looking Glass " .


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

"Чарівна комп'ютерна книга"

На обкладинці диска сповіщають нас (між іншим, серед інших зауважень про продукт): "Перед вами чарівна комп'ютерна книга". І це правда! Подорож, в яку ви пускаєтеся не разом з Алісою, а зовсім самостійно, стає цікавішою з кожним новим кроком. Простір розгортається, кожен новий зустрічний справді новий і аж ніяк не схожий на інших, що живуть у цій країні. Відкриття на кожному кроці, їх передчуєш із прихованим захопленням. Подумати тільки, все це придумано позаминулому столітті, а вимога новизни, що висувається до мистецтва постмодернізму, задовольняється абсолютно! Книга, умовою прочитання якої стала здатність розуму до інтелектуальної гри, друге століття надихає людей на творчість. Але творчість і є чаклунство.

Введення в першу частину "Світ Аліси" зроблено найпопулярнішим перекладачем "Аліси в країні чудес" російською мовою - Борисом Заходером, який визнається в тому, що текст "Alice's Adventures in Wonderlend" відноситься до принципово неперекладних. Це і спонукало його свого часу зробити свій варіант переказу книги. На диску Борис Заходер розмовляє з вами, причому ви можете вибрати, читати його передмову або бачити і чути письменника. Андрій Тарковський любив повторювати, що кіно – законсервований час. Ви клацаєте кнопкою мишки – і чарівна баночка часу відкрита!

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

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

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

При налаштуванні можна залишити текст в одній сторінці англійською або російською мовою.

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

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

Тут цілісність тексту не порушується, а численні коментарі та інтерпретації сховані за дотепною системою посилань, мовних зауважень, міркувань та роздумів, фактів та пояснень і навіть коментаря шахіста.

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

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

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

Гра для будь-якого віку

За закутками цієї гри можна довго блукати, але в ній неможливо заблукати.

Вивчення навігації - частина пропонованої авторами подорожі країною Чудес і Задзеркаллю.

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

Тут кожна деталь є частиною багатошарової конструкції, в якій головне – книги Льюїса Керролла. Занурені у видимий і чутний контекст, вони стають об'ємними. Гра зі СЛОВОМ, гра самим СЛОВОМ будить уяву читача і провокує подальші кроки до самостійної роботиз текстом. Це справжня освітня програма, захоплююча та дозволяє приймати самостійні рішення; повна цікавих та точних подробиць, історичних та філософських коментарів. З нею можна працювати поодинці, а можна удвох або цілою компанією. Програма, як і книга, зроблена, що називається, "на виріст", чим більше ви дізнаєтесь, тим цікавіше.

"Дуже корисний подарунок!"

Якщо у вас є комп'ютер, цей диск буде перлиною вашої колекції компакт-дисків. Не має значення, якого ви віку, знаєте англійську чи ні, не важливо, в якій сфері ви працюєте. Дуже добре, якщо ви ще навчаєтесь у школі. Ця стара, добра книжка, прочитана по-новому, подарує вам хвилини відпочинку та насолоди, пізнання майже нескінченного, оскільки текст настільки щільний, що його можна читати без кінця. І грати із ним. Адже відомо, що будь-який текст інтерактивний, за великим рахунком, проникнення в глибину тексту відповідає рівню розвитку, а прагнення до досконалості нескінченно. Сьогодні дуже багато вчителів, школярів, батьків тільки що отримують доступ до комп'ютера. Своє завдання освітня лабораторія сайт бачить не лише у представленні найновіших електронних продуктів, а й у тому, щоб відкрити користувачеві найкращі видання, які не застаріли з часом та з розвитком телекомунікаційних технологій. Таких видань не так уже й багато. Комп'ютерна книга про Алісу на одному з перших місць. Дивовижний приклад не суперництва, а поєднання "галактики Гутенберга" з новими винаходами людини!

Ми вже неодноразово представляли нашим читачам продукти фірми "1С". Це ще раз переконатися, наскільки високий рівень освітніх електронних продуктів, що видаються цією компанією. "Аліса в країні чудес і Задзеркалля" отримала чимало заслужених нагород і призів.

Редакція дякує компанії "1С"за надану програму.