Языки программирования – 19
Пока все работают в одном здании, машины которого можно соединить в общую локальную сеть проблем не возникает. Все вводят информацию в общую базу и все же с любой машины в сети мгновенно видят эту информацию. Проблемы, конечно, могут быть. Например, кто-то открыл документ, ушел пить чай, а с другой машины за эти полчаса этот документ поменяли. Но на экране сохранился старый вариант данных, который и увидит вернувшийся на своё место сотрудник. На самом деле это всё мелочи, даже если это случается. Но и случается это обычно довольно редко.
Здесь:
http://akostina76.ucoz.ru/blog/2016-10-17-3527
…на примере чтения и корректировки справочника показаны 4 хранимые процедуры, с помощью которых программа (клиентское приложение) работает с данными. Три из них предназначены для корректировки данных.
Считывание данных строки с текстовые поля и списки, в которых их будут корректировать:
Лучше считывать информацию непосредственно перед корректировкой. Так всё-таки меньше вероятность, что данные будут не свежими.
Вставка новой строки или корректировка существующий строки (sp_ins_sSpr0). Процедура длинная, потому только кусок с корректировкой существующей строки SQL командой UPDATE:
… Тут всякие проверки (может ли пользователь корректировать информацию, не получилась ли при корректировке строка, точная копия которой уже есть в базе и т.д). Но если всё в порядке до за долю секунды информация поменяется и любой, кто заказал список строк (процедура sp_lst_sSpr0) или считывание информации перед корректировкой строки (sp_get_sSpr0) получит последнее, что было записано в базу.
Процедура sp_del_sSpr0 – удаление строки из справочника, что тоже происходит мгновенно (если происходит).
Но как только по каким-то причинам у людей нет возможности работать с одной базой данных (т.е мгновенно менять информацию, давая возможность всем читать самый свежий вариант информации) возникает масса проблем. Для этого вполне достаточно чтобы контора располагалась на двух площадках. На одной, например, бухгалтерия в которой вводят договора, а на другой склад, с которого идёт отгрузка. При этом элементарная аккуратность требует запрещать отгрузку если в базе нет договора, на основе которого осуществляется эта отгрузка. Если такой проверки нет, то будет хуже до «совсем плохо». Это хорошо если только в документах названия перепутают, а если что-то не туда и непонятно кому отгрузят? Чем больше естественных и необременительных проверок типа необходимости такого договора тем надёжнее система. Но люди на разных площадках вводят информацию в разные базы данных. Договор в бухгалтерии может уже быть, но чтобы его увидел кладовщик информация каким-то образом должна доехать до его базы и попасть в неё с помощью какой-то загрузки данных. Обычный вариант работы при этом – передача данных через файлы, хоть текстовые, в которая вся информация, которую надо передать. Файлы могут передаваться как угодно. Например, отправляться по электронной почте. Т.е кладовщик должен получить этот файл, запустить некую служебную программу которая как-то зальёт эту информацию. При этом естественно, человек, который вводил договор вовсе не обязан ввести всё правильно и без ошибок. При работе в общей базе он быстро исправит ошибку. При работе в отдельных базах он должен ещё раз переслать на склад этот договор. Со склада в бухгалтерию могут и должны при такой работе идти отгрузочные документы. Т.е когда все отправки состоялись и данные залиты обе базы становятся одинаковые, т.е содержащие одинаковую информацию (но достигается это описанными отправками и заливками данных). Такое склеивание информации нескольких баз данных называется РЕПЛИКАЦИЯ. Процесс можно немного упростить, сняв с людей обязанность запоминать, что они меняли в базе и что надо переслать на другие площадки.
Здесь:
http://akostina76.ucoz.ru/blog/2016-10-21-3537
… описано как работают триггеры, с помощью которых можно соединять данные в двух конфигурациях 1С. Но конкретно в том примере при всех изменениях данных таблицы добавляется таблица с историей изменений. Если отправлять на другие площадки все строки этой таблицы, которые не были переданы ранее, то работа немного упроститься. Этот список изменений можно использовать просто как руководство к действию, т.е добавить строки, с информацией, если в служебном поле записано “I” – insert, вставка, удалить при “d” – delete, изменить содержание при U – update.
Репликация - это такая отложенная на несколько часов корректировка информации. Вероятность коллизий при такой работе многократно возрастает. Например на одной площадке могут поменять документ который на другой по каким-то причинам удалили. Такого бы не возникло при мгновенном изменении данных, но нескольких часов задержки для возникновения такой ситуации вполне достаточно.
А если таких «рабочих площадок» - 100? Филиалов магазинов легко может быть 20. Редко больше. А вот подведомственных учреждений обычно примерно столько и бывает. При этом уже сама элементарная операции, т.е получить файл по почте, сохранить на диск, загружать с свою базу начинает отнимать уйму времени. К тому же эта сотня вовсе не обязана присылать только правильные данные, повторная отправка при ошибках – обычная практика. Т.е это всё, ненадёжно, утомительно и медленно при хоть сколько-нибудь существенных объемах информации и участников процесса. Причина одна – необходимость работы с несколькими базами и коллективно бороться со всеми последствиями ошибок и задержек. И никакого решения кроме засовывания всех в одну базу не просматривается даже в теории.
Первая технология, позволяющая решить проблему хоть как-то и без Интернета это VPN. Т.е отдельный пользователь, пусть это всё тот же кладовщик на складе может подключиться внешним пользователем к основной сети и работать там как будто все сидят в одном здании. При таком варианте сразу снимается ещё одна проблема неизбежно возникающая при работе многих отдельных пользователей. Меняются не только данные. Довольно часто меняются и сами программы. И все 100 человек должны не забыть установить обновления. Естественно добиться такого невозможно. Забывают. А вот при работе через VPN при старте можно запрашивать с сервера номер версии и блокировать вход если у клиентского приложения номер меньше (т.е обновления программы нет). Но у VPN есть два недостатка. Во-первых, он чувствителен к качеству телефонных линий. Оговорюсь, что это – не норма. У меня были проблемы с несколькими пользователями в Ленинградской области.. сколько там… 7 лет назад. В городе такой проблемы не было. Во-вторых, только одни человек их местной локальной сети может подключаться и удалённо работать в другой сети. Т.е два кладовщика одновременно работать в офисной- бухгалтерской базе не могут.
Несколько человек могут работать если между сетями поднять IPSec – канал. По рассказам этот вариант не только чувствителен к качеству связи, но и требует однотипного (до только одинакового) оборудования с двух сторон. Т.е роутеры D-Link и ZyXEL не только не обязаны вместе работать но и почти наверняка не будут. Ещё один вариант – протянуть провод между зданиями, по сути засунув всех в одну локальную сеть. Упоминаю как экзотику, потому, что это может сделать администрация Петербурга но вряд ли такое потянет даже богатая торговая сеть с магазинами в разных районах. И никакой крупный регион типа области такое тоже не сможет.
Потому реальной альтернативы Интернету если кто-то хочет чтобы все сотрудники вводили информацию в общую базу, а не возились с репликацией, нет.
Вот так выглядит погодная конфигурация 1С в браузере:
… т.е по виду отличить почти невозможно, всё работает, ничего не дёргается, лишних перерисовок экрана нет, корректировка строк открывается во всплывающих окнах. В адресной строке написанo “localhost” Это означает моя личная машина. Для работы в локальной сети достаточно указать адрес машины в сети, на которой установлен сервер 1С с этой конфигураций… точнее на которой к IIS серверу прицеплена эта конфигурация. Это не важно потому, что это, по любому что-то типа 192.168.1.100/pogoda. Чтобы можно было работать со всем этим с любой машины подключенной к Интернету администратор локальной сети должен нажать несколько неизвестных мне кнопок и дать возможность удалённого доступа к своей сети. Строго говоря, конфигурация 1С это не сайт. Но если открыт удалённый доступ, то любая машина из Интернета может общаться с сервером локальной сети на языке обмена HTML информацией, что и происходит.
Всё это вместе означает, что довольно неприятная раньше проблема возникновения вдруг ещё одной площадки решается за минуты. Не надо думать о каких-то передачах и склеивании информации. Достаточно дать возможность работать с 1С в режиме Web-клиента и немного изменить настройки локальной сети.
Этим всем меня 1С вполне устроил.
Совсем немного про альтернативы, которые появились в примерно тот же период. Как уже было сказано в 2010 году появился работающий Silverlight. Он позволяет работать в Интернете с такой же формой как в обычном Windows и с теми же компонентами (галки, списки, тексты):
Есть один компонент, который я раньше упомянула как то, что мне не очень нравилось. Это GRID, который в числе прочего стандартного тоже был всегда. Любой Grid используется для вывода какой-то таблицы. Список городов в погодной базе тоже выводит на экран какой-то внутренний 1С-овский grid.
Так вот этот стандартный Grid был до крайности убог по своим возможностям. Желающие большего могли брать вот это:
http://helpcentral.componentone.com/nethelp/truedbgrid8/tutorial1bindingtruedbgridtoadatacontrol.html
… но и тут не всё так как хотелось бы. Я решала этот вопрос корректировкой информации в отдельной форме корректировки, а не в строке. В обычном Интернете та же проблема и решала я ей точно также.
Про Grid SilveLight например тут:
http://www.c-sharpcorner.com/uploadfile/mahesh/working-with-datagrid-in-silverlight/
… и тут:
https://blogs.msdn.microsoft.com/scmorris/2008/03/21/using-the-silverlight-datagrid/
Они конечно могут больше чем древние образца 2000 года, но к 2010 году мне уже несколько надоела вся эта возня с разнообразными GRIDами и когда я увидела что в 1С всё это сделано достаточно добротно я решила, что и это весомый повод для перехода на работу в нём.
Ещё один вариант работы в Интернетом – это Flash, доделанный вариант которого появился, так понимаю в 2007 году:
https://sevidi.ru/flash/flash40.php
Я на нём не писала, но судя по списку отсюда:
http://help.adobe.com/ru_RU/ActionScript/3.0_ProgrammingAS3/flash_as3_programming.pdf
… на нём с графикой и музыкой надо работать а не с базами данных.
Вот например:
Если кто-то захочет в Интернете написать аналог AutoCAD-а то лучше явно использовать Flash чем что-то другое. Он явно был сделан для того чтобы писать в нем игрушки и весь заточен именно на это. Про то, что AutoCAD это ещё одна программа, работающая с объектами, свойства которых описаны текстом я уже писала тут (про макросы):
http://akostina76.ucoz.ru/blog/2016-10-09-3503
… Но ведь векторные картинки это только ещё один вид информации, так же как строки базы данных. С этой информацией тоже надо работать какими-то инструментами. Вот Flash и разработан в виде такого инструмента для работы с такой и подобной информацией в Интернете.
Данные он понимает в формате XML но какого-то отлаженного инструментария для работы с табличными данными даже на уровне нелюбимых мной Grid я не нашла.
И последнее, тесно связанное с самым началом. Это:
… компания Grid-ов расставленных на форме столь странным способом в 2005 году, когда писалась очередная версия офисной бухгалтерии. Точнее бухгалтерия была общая. Для домашних нужд был сделан аналог без специфических офисных модулей. Но в то же время начали появляться карманные компьютеры, которые умели почти всё, что обычные, но легко засовывались в карман. Пожалуй единственный серьёзный недостаток – маленький экран, на котором при всём желании много не разместишь. Вот у меня и возникла идея придумать такой диалог, который помстился бы на маленьком экране. Конкретно на форме – выбор счета и субсчёта и просмотра проводок по нему. Т.е на первом окне (слева сверху) выбирается основной тип счёта, на следующих двух счёт и субсчёт по набору признаков, а на последнем (справа, снизу) уже список проводок с возможностью что-то вводить. Вариант для карманного компьютера так и не возник. Остался только общий вид и вывод, что если очень хочется, то исхитриться можно и на таком маленьком экране. И даже в списке будет видно сразу несколько строк. Всё-таки какое-то место, останется несмотря на то, что кнопки и прочие элементы занимают много этого места.
В 2005 году была возможность писать для карманного компьютера и даже был какой-то свой формат базы данных, который можно было туда записать. Но дальше возникала всё та же проблема репликации, т.е объединения введённой в разных местах информации. Введу я, например, чек прямо в магазине. Не руками же мне переносить информацию на компьютер. А отчёты в которых не 3 видные строки а весь лист всё-таки удобнее. Но писать инструментарий переброски данных мне было уже категорически лень. Да и не особо это было надо.
А относительно недавно появились описанные тут планшеты:
http://akostina76.ucoz.ru/blog/2016-07-13-3180
… про которые тихо но решительно подчёркивается, что они именно Интернет – планшеты. И они действительно ориентированы на работу с информацией, расположенной в Интернете. И экран у них меньше чем у обычного компьютера но раза в два больше чем к карманного компьютера. Т.е это устройство решает сразу две старые проблемы карманных компьютеров – позволяет больше увидеть на экране и изначально ориентирует на работу с базами данных доступными через Интернет (избавляя от проблем репликации).
|