woodman02

На Пикабу
поставил 18 плюсов и 6 минусов
Награды:
5 лет на Пикабу
124 рейтинг 1 подписчик 4 подписки 2 поста 0 в горячем

Как подружить Ежа с Ужом или отправить с сайта заявку в 1С

Наступил час Х, директор вызвал меня и объявил, что хочет, что бы заказы с сайта падали в 1С. Деваться некуда пришлось браться за столь весёлую и увлекательную задачу. Так как 1С я видел только из далека на компьютере главного бухгалтера, первая моя мысль была поймать нашего 1С-ника работающего на удалёнке и объяснить ему задачу. Поймал, объяснил, что хочу мол в 1С POST запросы отправлять для формирования заявки. 1Сник очень удивился, сказал: "Моя твоя не понимать", но обещал подумать. Через пару часов позвонил и сказал, что в 1С есть уже готовая система для приёма заявок с сайта. Но как она работает он не знает, так что разбирайся сам. Приехали.


Что делать, пришлось сесть и читать про CommerceML 2. При первом знакомстве с документацией на сайте 1С, чтение сего мануала вызывало боль, отвращение и мысли о суициде. Такой охуенной документации я давно не читал. После первого прочтения решил позвонить в одну известную в нашем городе 1С контору и спросить, сколько будет стоить сопряжение нашего сайта с 1С, менеджеры долго совещались и через сутки вынесли вердикт 30 000 рублей.


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


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


А что дальше? Проверяем как работает веб сервер и отправляем ему запрос в браузере:


http://xxx.xxx.xxx.xxx/'Имя сервиса'/ws/SiteExchange?wsdl


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


Попытки отправить XML запрос вызывали ошибки на стороне 1С, она ругалась не понятными словами. А дальше пару дней я просто читал всё что связанно с оформлением заявок с сайта в 1С.


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


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


Выкладываю его сюда может ещё кому пригодится:


function Connect1C(){

if (!function_exists('is_soap_fault')){

print 'Не настроен web сервер. Не найден модуль php-soap.';

return false;

}

try {

$client1C = new SoapClient('http://xxx.xxx.xxx.xxx/'Имя веб-сервиса'/ws/SiteExchange?wsdl',

array('login' => 'woodman02',

'password' => 'password',

'soap_version' => SOAP_1_2,

'cache_wsdl' => WSDL_CACHE_NONE, //WSDL_CACHE_MEMORY, //, WSDL_CACHE_NONE, WSDL_CACHE_DISK or WSDL_CACHE_BOTH

'exceptions' => true,

'trace' => 1));

}catch(SoapFault $e) {

trigger_error('Ошибка подключения или внутренняя ошибка сервера. Не удалось связаться с базой 1С.', E_ERROR);

}

if (is_soap_fault($client1C)){

trigger_error('Ошибка подключения или внутренняя ошибка сервера. Не удалось связаться с базой 1С.', E_ERROR);

return false;

}

return client1C;

}

function GetData($idc, $param){

if (is_object($idc)){

try {

$ret1c = $idc->LoadOrders($param);

} catch (SoapFault $e) {

echo "Ошибка</br>";

var_dump($e);

var_dump($ret1c);

}

}

else{

echo 'Не удалось подключиться к 1С<br>';

}

return $ret1c;

}

$OrdersData = Array(

"ВерсияСхемы" => "2.05",

"ДатаФормирования" => "2020-05-29T11:56:10",

"Документ" => Array(

"Ид" => null,

"Номер" => null,

"Дата" => "2020-05-29",

"ХозОперация" => "ЗаказНаПродажу",

"Валюта" => "руб",

"Курс" => "1",

"Сумма" => "6945",

"Контрагенты" => Array(

"Контрагент" => Array(

"Ид" => null,

"Наименование" => "Иванов",

"ПолноеНаименование" => "Иван",

"Роль" => "Покупатели",

"Адрес" => Array(

"Представление" => "Тест",

"Комментарий" => "Тест"

)

)

),

"Время" => "15:30:15",

"СрокПлатежа" => "0001-01-01",

"Комментарий" => "Заказ с сайта",

"Налоги" => Array(

"Налог" => Array(

"Наименование" => "НДС",

"УчтеноВСумме" => "false",

"Сумма" => "0"

)

),

"Товары" => Array(

"Товар" => Array(

"Ид" => null,

"Артикул" => null,

"Наименование" => "Грабля электронная",

"БазоваяЕдиница" => Array(

"Код" => "796",

"НаименованиеПолное" => "Штука",

"МеждународноеСокращение" => "PCE"

),

"СтавкиНалогов" => Array(

"СтавкаНалога" => Array(

"Наименование" => "НДС",

"Ставка" => "0",

)

),

"ЗначенияРеквизитов" => Array

(

"ЗначениеРеквизита" => Array

(

"0" => Array

(

"Наименование" => "ВидНоменклатуры",

"Значение" => "Товар"

),

"1" => Array

(

"Наименование" => "ТипНоменклатуры",

"Значение" => "Запас"

)

)

),

"ЦенаЗаЕдиницу" => "6945",

"Количество" => "1",

"Резерв" => "1",

"Сумма" => "6945",

"Единица" => "шт",

"Коэффициент" => "1"

)

),

"ЗначенияРеквизитов" => Array

(

"ЗначениеРеквизита" => Array

(

"0" => Array

(

"Наименование" => "Организация",

"Значение" => "ИП Чоршамбе Нет Отчества"

),

"1" => Array

(

"Наименование" => "Вид цен",

"Значение" => "1-2 Единая оптовая"

),

"2" => Array

(

"Наименование" => "Склад",

"Значение" => "Склад №1 для торговли"

),

"4" => Array

(

"Наименование" => "Дата отгрузки",

"Значение" => "2020-05-29"

),

"5" => Array

(

"Наименование" => "Статус заказа",

"Значение" => "Подготовка КП"

),

)

),

)

);

$params = Array();

$params["OrdersData"] = $OrdersData;

// Загружаем заказ с сайта.

//$result = $client->LoadOrders($params);

$idc = Connect1C();

$ret1c = GetData($idc,$params);

var_dump($ret1c->return);


Сразу отвечу на один вопрос, который занимал меня. Как 1С будет привязывать к своей номенклатуре мою заявку. Это потрясающее решение от компании 1С, мне такое даже в голову не могло прийти. При получении заявки 1С смотрит по названию (по названию Карл!??, не по Id, не по штрихкоду, а по названию) есть у неё в номенклатуре такой товар или нет, если нет, она тупо его создаёт, 1С-ники умеют поражать. Так что будьте внимательны названия в заявке должно строго соответствовать названию в 1С, иначе наплодите товаров в номенклатуре.


Ура! Пол дела было сделано. Далее я настроил проброс портов на нашем Mikrotik-е, что бы к 1С серверу можно было обратиться только с IP адреса Web-сервера и определенного порта (не скажу какого).


Дописал скрипты и вот наш интернет магазин сделанный на Joomla + Seblod отправляет заявки в 1С. Всё теперь я то же могу брать 30 т.р. за подключение сайт к 1С ))))

Показать полностью

Dominions 4. Один бой в AdorableAshmedai

В игре Очаровательный Ашмедай произошло интересное сражение. Попробую его подробно описать. К слову, то как я подробно это сумею сделать в отношении ОДНОЙ ЕДИНСТВЕННОЙ битвы, красочно показывает сколь Домики (Dominions) сложносоставная игра и что писать репорты по ней это сизифов труд - слишком много деталей надо упоминать, чтобы сделать это осмысленно. Поэтому наше комьюнити это не просто ленивые задницы, а... ленивые задницы осознающие тщетность писания качественных репортов.


Ладно, по поводу сражения, диспозиция такова: идёт война между Каэлумом и Пангеей, птички сумели в предыдущей её фазе с большими затратами вернуть часть своего RIGHTFUL CLAY'я. Однако Пангея собрала силы своей огромной нации в кулак и сконсолидировала армию разером в 800 юнитов и осадила в крепости бога Каэлума и его основную армию, не столь многочисленную и разбила стены форта за 1 ход, готовясь штурмовать.


Очевидно что как игроку за Каэлум мне необходимо было что-то предпринять чтобы в идеале одолеть эту армию, либо нанести ей существенный урон. Для этого я принял 2 решения. Во-первых, для максимизации возможного урона при помоще летающих отрядов и СК (юнит с обвесом и большим ХП) я отрезал армии Пангеи пути отступления с форта. Мне очень повезло что он предпринял вялые попытки защитить земли на подступах. Фактически это не давало мне никакого преимущества, однако теперь отступающий юнит Пангеи погибал, - в итоге это и определило исход битвы.

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

Глядя на статистику битвы может показаться что она была незначительная в плане потерь, однако половина войск Пангеи отступила, в том числе 60% магов - все они погибли. И, во-вторых, я решил выйти из крепости своим Богом-СК, а также примечательным Големом-СК в качестве подкрепления с целью максимально нанести ущерб, а то и наголову разбить целую армию фурей.


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

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

- он бафает перед битвой все свои юниты Удачей, лечит увечия Шалиссой и если ему противопоставить СК, то усыпляющий Глаз способен при удаче полностью его иммобилизовать.


Иначе чем "могущественная армия" про это не скажешь. Чтобы нанести урон ей я решил использовать лишь 2 СК с минимальным прикрытием из летунов. Во-первых мой бог:

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

физически он очень силён, я дополнительно разогнал его мр (MR - сопротивление магии) и броню. Его задача заключалась в том чтобы, находясь при помощи Соул Вортекса "в состоянии динамического ранвовесия хп" с чаффом который его окружит, скастовать Огненный Шторм и максимально нанести ущерб армиям врага перед неизбежным бегством. И, во-вторых, ключевой юнит Голем с уникальным предметом Дар Курги.

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

Этот жуткий артефакт дарует носителю Эфирность, возможность летать в Шторм, Защитную Силу размером в 20, но самое главное Ауру Страха с силой в 30, при помощи Шлема Ужаса я разогнал этот параметр аж до 35. Замысел был прост: при помощи защитный свойств Дара, волосатого щита, кровососущего двуручника, вводящего в берсерк, тапочек на прыткость и простейших бафов Голема выдержать натиск чаффа Пангеи и тем временем распугивать всё что не вошло в боевой раж в радиусе 35 клеток, отправляя их в бегство на верную смерть.


Разумеется всё не пошло согласно плану. Но сперва посмотрим формации Пангеи и Каэлума. Пангея под бафом Удачки вся зелёненькая, на флангах кентавровая сакредная кавалерия, в центре крепкие ламии, тыл составляют гарпии, готовые сорваться в тыл врага при первой же возможности передовая линия Панов заскрипчена кастовать Очарование. Я знал об этом, поэтому и принял решение посылать в бой бездушного Голема и Претендента, которого невозможно Зачармить.

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

Формация Каэлума есть простенькое забивание в угол. В данном случае в разные, потому что я боялся что жуткая Аура Страха Голема достанет и божка. Примечательно что Дар Курги сразу призывает младших хорроров возле Голема, однако о них позаботятся гарпии Пангеи и птички-бодигварды.

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

Битва началась с места в карьер и гарпии окружили и бога, скастовавшего Пламя Феникса и в меньшей степени Голема. Кентавры также с флангов устремились очень быстро к СК. Бафы Пангеи заключались во всей возможной N-вкусности, за исключением пожалуй что Гроуин Фури, а так всё было, даже Фоул Вапорс.


На первых ходах произошло то что я не ожидал, гарпии окружившие божка от страха отступили и открыли путь кентаврам, бог плюнул на обкаст и начал резать их мечом, но сам опиздюливался знатно, он скастовал Соул Вортекс когда было бы уже пора повесить Файер Шторм, но при всём при этом он внезапно потерпел множество урона, как не хватало Эфирности! Его здоровье упало до 30% от первоначального и... он сбежал.

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

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


Однако он кадр проверенный и я был уверен что он выстоит. В сущности так и получилось. Гарпиям и кентаврам без магического оружия непосильно было пробивать регулярно Эфирность и Защитную Силу и Голем при этом постоянно набирал излишнее хп от Адского Меча, доведя его до максимума в +50% до 136. Я почуял запах победы, вражескому Голему-СК было не подступиться из-за чаффа, Тролль стоял на дальней кромке поля, а магам Природы по сути было нечем уязвить резистантного ко многому Голема.


Единстенная его слабость это Проклятье от Дара и он стал ловить Аффликты, но по удаче все они были незначительными типа Ослабления или Увечия (Голему пох на них) и продолжал резать. Впрочем, домка практически никогда не позволяет планам исполниться 1 в 1 как задумывалось. Во-первых план распугивать солдат с задних рядов по большей части провалился. Да, передовые отряды ламий и кентавром запаниковали, однако чафф давил сзади и у них не было возможности даже убежать, они просто топтались на месте, повернув спину к Голему. И при том те кто всё же сумел прорваться и бежать прочь встречал линию Панов, которые оббафывали отступающих Яростью и трусы в большом числе тут же возвращались в битву. Число чаффа не уменьшалось практически. Но главная проблема состояла в том что враг начал входить в боевое безумие. Бессильные уязвить Голема, Паны начали оббафывать Яростью всех союзников, причём даже самих Панов. Кентавры также потихонечку один за одним стали впадать в боевое бузумие.


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


Голем стал накапливать усталость. И тут приблизился Морской Король-СК и начал кастовать Окоченение, у Голема было 10 протекта от Холода, однако этого было мало и его стукнула фатига в 100. Берсеркнутость пропала у выключившегося Голема и поскольку силы Каэлума давно уже должны были отступить по автороуту, то его ходы были сочтены. Голем барахтался на грани 100 фатиги, то приходя в себя, то снова отключаясь. И тут Пангею треснул автороут. Только берсерки рвались вперёд, все остальные солдаты и маги рванулись прочь с поля боя.


Первыми отступили дальние Паны, Королева Фей. Голем-СК Пангеи развалился, ибо так и не вошёл в ярость, Тролль-СК рванулся к выходу и... покинул поле боя, а на следующий ход Голем с Даром Курги сам развалился, ибо некому было нанести ему урона, введя его в берсерк.

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

Битва закончилась по истине пирровой победой для Пангеи. Они потеряли практичекси 100% всех летунов, около 50% ламий, толику кентавров, но самое главное только 4 Пана не успели сбежать и оба СК погибли, без возможности отступить. Каэлум потерял чаффа горсточку, но и ключевого СК. Учитывая урон - вполне приемлемые потери.


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


Автор: Vava

Dominions 4. Один бой в AdorableAshmedai Dominions 4, Dominions 5, Стратегия, Длиннопост

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

Показать полностью 9
Отличная работа, все прочитано!