<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Достаточно интересная статейка получилась!
Когда наткнулся на нее — думал что чисто про EDI, у меня на работе как раз эта тема сейчас разрабатывается. Наши зарубежные партнеры и филиалы используют нечто подобное. И да, мы сталкиваемся именно с такими же проблемами, что и в разделе «Проблемы предметной области».
Кстати, настолько плавно и органично в статье осуществлен переход от темы «EDI» к теме про «командную работу» — читабельность поразительная! 🙂
Спасибо!
Интересная статья, спасибо!
Меня, как одного из мейнтейнеров продуктов precommit1c и V8Reader, заинтересовали доработки к нашим продуктам.
Вопросы
После декомпиляции удаляем файлы обычных форм, чтобы не засорять коммиты.
Из управляемых форм вытаскиваем код отдельно.
Каждый метод записывается отдельным файлом. Это сильно облегчает и Code Review, и просмотр в режиме Blame.
Можно получить эти доработки для основного проекта precommit1c?
Например, сделать pull-request ?
И по V8Reader можно ли также получить pull-request?
(2) artbear, Pull request на самом деле уже есть, мы списывались несколько месяцев назад:
https://github.com/xDrivenDevelopment/v8Reader/pull/30
https://github.com/volodkindv/v8Reader/tree/develop (скорее всего, устарело, давно не обновлял). Могу отправить на почту то и другое.
Но ту идею я в конце концов забросил.
Сам V8Reader мы почти не меняли, только убрали в каком-то месте переименование макетов и добавили вызов нашего обработчика, который проводит дальнейшее разбиение разобранного модуля. Лежит здесь:
И спасибо за эти разработки, нам очень помогло!
(3) Было бы удобно получить последние версии с описанием доработок.
Можно и на почту.
Жду
Всегда пожалуйста.
Предлагай свое, я вижу, что также интересные вещи делаете.
Приходилось часто работать с этой штукой…Столько приходилось дописывать/переписывать, столько там «хорошего» кода, с кучей комментариев разных разработчиков, которые из одних косяков делают другие…Но в целом продукт годный и крайне полезный. Надеюсь избавитесь от мелких недочетов, если уже не избавились. ))
(5) PrinzOfMunchen, речь про xUnit, если я правильно понял? Естьстатья про эволюцию этого инструмента , поясняющая почему там такой код и версия 4.0, в которой legacy-код из прототипа был удален.
Ну и сами же пишете:
А внутри может быть и страшно, но это называется инкапсуляция 🙂
(6) Evil Beaver, нет, я про модуль интеграции EDI<->1С. Там внутри был ад перфекциониста, по крайней мере раньше. Как с текущими версиями дела обстоят, к сожалению не знаю. )
В целом-то продукт хороший, но когда надо заглядывать внутрь…
(7) PrinzOfMunchen, а как давно заглядывали?
(8) bolshakov_2015, довольно таки давно, если честно. Где-то с полгода назад.
(0) тесты прогоняете на всех версиях различных видов конфигурации? Отдельные виртуалочки для 8.3, 8.2 ? На скольких версиях 1с запускаете тесты?
(5) PrinzOfMunchen, Да, у нас там в комментариях иногда шекспировские страсти разыгрываются ))
Избавляемся постепенно.
Интересно было бы узнать подробнее, что вам приходилось переписывать/исправлять. Возможно, что-нибудь в коробку возьмем. Ну и если есть какие-то баги, о которых мы еще не знаем, то тоже будем работать. Если скинете вашу версию модуля, проанализируем.
(9) pumbaE,
Для юнит-тестов список баз такой:
БП 1.6
БП 2.0
КА 1.1
УПП
УТ 10.2
УТ 10_3 (MS SQL и DB2 на всякий случай)
УТ 11.0
УТ 11.1
Платформы — 8.2.19.106 для УТ11 и 8.2.16.362 для остального.
Для сценарных:
БП 1.6
КА 1.1
УПП 1.3
УТ 10.2
УТ 11.1
БП 2.0 (в 2 режимах — «справочники добавлены в базу» и «справочники во внешней базе»)
УТ 10.3 — так же, как БП 2.0.
Платформы те же.
Т.е. покрытие не полное. Автотесты пока не запускаем на конфигурациях с дополнительной защитой (Астор, Рарус и т.д.), на БП 3.0, ERP 2.0/2.1, платформу 8.3 тоже пока не задействовали. Различные релизы тех же БП 2.0 не трогаем. Это все в планах.
(11) как у многих ))
То что избавляетесь, крайне радует. Судя по статье идеал не за горами. )))
Переписывал пока во франче работал, для разных конфигураций под разные нужды. Где-то адреса доставки некорректно заполнялись, где-то с единицами мест беды были при пересчете, сейчас все не упомню. Попробую поискать дописки. Не из багов, дописывал параметризацию проставления некоторых реквизитов, например складов. Что бы для каждого контрагента свои склады проставлялись.
Можно узнать поподробнее про собственный инструмент контроля версий на 1С?
(14) maleshov.maxim, это больше не инструмент контроля версий, а инструмент для запуска тестов, т.к. в дальнейшем скрины показаны стандартного gitlab.
(1) pavlov_dv, спасибо, статью тоже рефакторили )
У вас EDI в какой отрасли? Продуктовый ритейл или что-то другое?
(14) maleshov.maxim, (15) pumbaE, это смесь СКВ и автотестов. Отдельная база на 1С, которая хранит все «дерево разработки» и версии модулей.
Основной сценарий такой: разработчик хочет внести изменения в модуль. Для этого он создает отдельную ветку. На его машине в определенной папке появляется файл с обработкой, которую он может править. Время от времени он «коммитит» — файл обработки сохраняется в базе и становится виден всем, при этом запускаются автоматические тесты. После окончания работ он блокирует предрелизную ветку. На его машине появляется второй файл с предрелизной версией модуля. Затем он вручную переносит свои изменения и сливает ветки. В git публикуются его изменения, снова запускаются автотесты, на машинах тестировщиков автоматически обновляется модуль для тестирования. В нее же встроена автоматизация выпуска релиза: обновление архива модулей, расчет контрольной суммы файла, обновление RSS и прочее.
В эту же базу ради интереса встроили интеграцию с YouTrack, чтобы работать с задачами в одном месте и привязывать их к коммитам.
Git и его веб-интерфейс Gitlab используем для Code Review, там очень удобно комментировать. Храним там только тексты модулей.
(0) один вопрос меня волнует — кто этот волшебный маг семерочник ;-). Можете озвучить никнейм — чувствую я, что никнейм будет известным.
(0) (18) имеется ввиду вот эта цитата
очень хочется узнать обладателя черного пояса ;-).
Пользуюсь вашей обработкой, молодцы! За подключаемый модуль отдельный +
(16) торговля электронными компонентами, автоматикой, КИП и т.д.
Используем EDIFACT… Хотя слово «используем» -это за уши притянуто 🙂
Кастомизация практически под каждого конкретного поставщика. От стандарта остается только заголовок 🙂
Зато зарубежные (особенно стоки) с удовольствием соглашаются, но с ними тяжеловато работать — этапов тестирования не будет 🙂 Тренируемся
на кошкахна маленьких посылках.Отечественные же при слове «Едиай» смотрят мутными глазами, переспрашивают «А шо это?» и отказываются: «Ышшо деды работали безо всяких буржуйских извращений, и мы не будем».
(18) lustin, (19) lustin, Матвей Новоселов, он сказал, что вряд ли его кто знает )
(20) Red_Devil, Спасибо, приятно слышать.
Спасибо автору, интересно и даже как-то мотивирует на хорошую работу)
Притча.
Лет десять назад настроили с магазинами электронные заявки. Быстро, дёшево и сердито.
Спустя годы появились EDI-провайдеры с откровенно глючным сырьём и невменяемыми ценами за воздух. Посему все «выгодные мля буду» идеи были посланы в топку.
И вдруг… Буквально пару лет назад все крупные сети как с цепи сорвались. В ультимативном порядке сети потребовали всех подключить к своему EDI-провайдеру, которые разгубастились трясти деньги за каждый чих.
Ниточка потянулась в Вашингтон.Погуглив «ху из ху», а так же «кто такие», «чё такие борзые», «с какого району», выяснилось, что по крайней мере один из «независимых» EDI-провайдеров был очень даже зависим от сети, которая требовала заявок через этот провайдер.Итого: крупные торговые сети не только навели порядок со своими поставщиками и клиентами (что само по себе не плохо), но и хорошо нагрели руки, продавая воздух. Суки. Из-за них сломали что итак отлично работало, так ещё и деньги платим хер знает за что.
(0) Статья Супер.
Очень интересует это
и возможность сделать так
Был бы признателен примерам этих собираний разбираний
(8) bolshakov_2015, заглядывали буквально только что
комментарии в стиле
Если Стр.СуммаНДС=0 Тогда //самый важный блок вроде бы
Если Стр.СуммаБезНДС<>0 Тогда
Стр.СуммаНДС=Окр(Стр.СуммаБезНДС*КоэффНДС,2);
ИначеЕсли Стр.СуммаСНДС<>0 Тогда
Стр.СуммаНДС=Окр(Стр.СуммаСНДС*КоэффНДС/(1+КоэффНДС),2);
ИначеЕсли Стр.ЦенаСНДС<>0 Тогда
Стр.СуммаНДС=Окр(Окр(Стр.ЦенаСНДС*Стр.Количество,2)*КоэффНДС/(1+КоэффНДС),2);//адовы округления детектед
ИначеЕсли Стр.ЦенаБезНДС<>0 Тогда
Стр.СуммаНДС=Окр(Окр(Стр.ЦенаБезНДС*Стр.Количество,2)*КоэффНДС,2);//адовы округления детектед
КонецЕсли;
КонецЕсли;
это нечто, визуально понижающее уровень программистов и показывающий их мощную работу мысли.
Ну и вот в этих самых краях, начиная с 10 ноября и кроется мощный косяк «адовых округлений»
Нам в компанию приходят заказы с ценами без НДС. Ну вот скажите, какая легкая наркомания заставила вашу команду сначала посчитать цену с НДС, ОКРУГЛИТЬ ее до копеек и потом считать НДС?
Я не гуру 1С, с нового года перешли на эту систему, кучу времени потратил что бы вставить свои костыли, потому что просто не работает что то или работает но криво.
(26) Ibrogim,
Если вкратце, то за основу связей между документами и типами сообщений мы берем запрос такого вида:
Показать
Под каждую конфигурацию и каждую цепочку документов свой.
Дальше функция ПолучитьТаблицуДляСборкиЗапросов() парсит данный запрос в ТаблицуЗначений. Затем для каждого конкретного случая функция ПолучитьТекстЗапросаДляТаблицы() преобразует эту таблицу в нужный запрос. Например, нам надо получить все Реализации, по которым не созданы Счета-Фактуры. Понятно, что надо взять таблицу РеализацияТоваровУслуг и сделать левое соединение со счетами-фактурами.
С реквизитами шапки документов немного сложнее, мы пока предполагаем, что там всегда есть Организация, Контрагент, СуммаДокумента и т.д. Случаи, когда это не выполняется, приходится уже кастомить вручную, но это уже мелочи на фоне всего остального, что приходилось делать раньше.
Наборы этих запросов как раз и лежат в макете СКД. Там их удобнее структурировать.
Еще есть так называемый «Подключаемый модуль». Это обработка, которая лежит рядом с основной и содержит в себе код, дополняющий или переопределяющий некоторые методы из основного модуля. Грубо говоря, в основном модуле лежит некая функция ЗаполнитьЗаказПокупателя(Сообщение,ОбъектДокумента), которая в инициализированном ДокументОбъект.ЗаказПокупателя заполняет Организацию, Контрагента, Товары и т.д. Она рассчитана на известные типовые конфигурации, но у клиента есть какое-то нестандартное поле в этом документе, и его надо тоже заполнить. Чтобы не добавлять код в основном модуле и не перетаскивать его потом в новые релизы, мы сделали вызов экспортного метода «ПослеЗаполненияЗаказаПокупателя» в дополнительной обработке («подключаемый модуль»). Туда передаются те же самые параметры (Сообщение,ОбъектДокумента), и там уже можно писать произвольный код.
Это довольно долго рассказывать, проще будет в коде глянуть, вверху есть ссылка на демо-базу с модулем.
(29)
У меня похоже и модуль ваш есть, его купили для сильно переписанной УТ11. без моего ведома Всё ещё не взлетело, скоро продолжу попытки подружить с нашей конфой
Я подобную штуку использую и в своих разработках.
(27) sea123, раз уж вы добрались до этого кода, то вы прочитали также и комментарий в начале метода, где этот код расположен.
Изначально я описывал этот случай в разделе «Проблемы предметной области», но потом решил, что как-то много получается.
В общем случае сеть может «забыть» указать любые поля в сообщении, в любой комбинации. В сообщении есть 6 числовых полей: цена с/без НДС, сумма с/без НДС, сумма НДС, ставка НДС. Теперь вычеркните любые из них в случайном порядке и попробуйте придумать алгоритм, который рассчитает недостающие.
Мы пытаемся их рассчитать за торговую сеть хоть как-то. Мне пока известен только один случай, когда этот алгоритм кому-то не подходил. Там, насколько я помню, мы сделали небольшой чит и использовали событие подключаемого модуля «ПринятьВходящееСообщение» не совсем по назначению, зато сработало на ура.
Конкретно по вашему случаю мне хотелось бы больше деталей. Вы можете обратиться к вашему внедренцу или на техподдержку, чтобы они зарегистрировали этот инцидент. Он рано или поздно попадет к нам. Или можете отправить мне в ЛС ссылку на подобное сообщение в мониторинге и скриншоты загруженного документа — как загрузил модуль и как должно быть. Постараемся смоделировать это у себя, если это действительно общий случай, то включим в коробку. Если он возникает только у вас, попробуем решить подключаемым модулем.
(27) sea123, этому коду, кстати, года полтора примерно.
(28) Crazy_kz, было бы интересно узнать, что именно не работало и с чем возникали сложности. Сможете выслать получившийся у вас модуль с доработками на почту?
Как раз в начале этого года мы начали работать над облегчением кастомизации модуля. Брали реальные примеры кастомов и искали общие места, которые чаще всего приходится костылить. Возможно, в вашем варианте есть что-то, чего мы еще не учли.
Смотрю историю версий, у вас, скорее всего, 4.02.001.02 или где-то рядом?
(30) Ibrogim, будет интересно посмотреть, что у вас в конечном итоге получится и какие сложности возникали. Возможно, что-то возьмем в коробку, облегчим обновление модуля вам и тем, у кого подобные кастомы.
(30) Ibrogim, УТ 11 — как много в этом звуке
Вот только их 3 разных версии и изменения (11.0-11.1-11.2)там отнюдь не косметические. И даже в пределах 11.0 реквизиты того же заказа от релиза к релизу волшебным образом исчезали и появлялись вновь. ))
Доля сильно кастомизированных УТ 11 сейчас в природе крайне мала (боятся все-таки 1С ники УФ всё ещё)
и да, очень хотелось бы услышать фидбек по возникавшим проблемам.
(31)
Заявку мы уже оставили.
теперь разберемся с проблемами от сетей
====
В общем случае сеть может «забыть» указать любые поля в сообщении, в любой комбинации. В сообщении есть 6 числовых полей: цена с/без НДС, сумма с/без НДС, сумма НДС, ставка НДС. Теперь вычеркните любые из них в случайном порядке и попробуйте придумать алгоритм, который рассчитает недостающие.
====
Мой взгляд со стороны (работаю в УПП 1.3):
1. поле НДС в принципе мало кому интересно и выбирается из карточки номенклатуры, т.к. продавец лучше знает, по какой ставке НДС он продает.
2. При наличии полей сумма с/без НДС тоже ничего сложного, суммы то известны, и вы обратным ходом считаете цены.
3. Поле СуммаНДС обязательно будет идти совместно с полями сумма с/без НДС и мы опять легко выходим на цену.
4. При условии, что указаны поля в п.2, общая сумма накладной и сумма НДС высчитывается элементарно.
5. При наличии поля цена с НДС тоже вопросов нет. Создаем документ заявки в флагом «сумма включает НДС» и спим спокойно.
6. Если пришли оба поля цен (с и без НДС), то приоритетное поле идет с НДС
7. пришла сумма без НДС. Это как раз наш случай.
Пример такой: цена продукта 28,95, количество 2 646 единиц, ставка НДС 18% (0,18)
Расчет суммы НДС делается на мой взгляд просто: ЦенаБезНДС*Количество*СтавкаНДС, получаем сумму 13 788,31 (вообще получается 13 788,306, но мы округляем по арифметическим правилам)
Сумму по строке нашли по формуле ЦенаБезНДС*Количество+СуммаНДС, получаем 90 390,01
Смотрим ваш метод:
а. Находим цену с НДС = 28.95*1,18=34,161
б. Округляем цену с НДС = 34,16
в. Находим сумму НДС, Стр.СуммаНДС=Окр(Окр(Стр.ЦенаСНДС*Стр.Количество,2)*КоэффНДС/(1+КоэффНДС),2);//адовы округления детектед
получаем 13 787,9023728814
Все, приехали, сумма НДС не совпала
Приятно читать то, что написано человеком, который имеет талант к творческому изображению довольно-таки сухих технических тем )) спасибо
http://www.diadoc.ru/integrations/1c) вы отношение имеете как разработчик?
А к диадоку (
(36) sea123, все не так однозначно. Ставка НДС далеко не всегда выбирается из карточки номенклатуры. У кого-то она вообще не заполнена в справочнике. У кого-то есть ИП на УСН и рядом же ООО на ОСНО. Порядок расчета цен у каждой сети свой и иногда даже прописывается в договоре поставки. Одни считают суммы от цен, другие — цены от суммы, кто-то включает НДС в сумму, кто-то нет.
По вашему примеру — кусок XML файла мне было бы удобнее проанализировать. В любом случае, на нашем трекере сегодня появился тикет с таким же содержанием, и, видимо, это как раз ваш. Так что будем с вами связываться.
(37) kraynev-navi, спасибо )
Диадок — это другой проект, у него своя команда разработки, лично я в нее не вхожу. Но мы часто общаемся и обмениваемся идеями, а иногда и кодом (а иногда даже сотрудниками )) ). Например, для группового подписания счетов-фактур мы используем компоненту Диадока. Архитектура модуля изначально была позаимствована у них, и лишь потом мы выстроили ту, которая больше подходила именно под специфику EDI. Диадок тоже иногда перенимает кое-какие наработки из EDI. Мир очень тесен.
Как поставщик, «Проблемы предметной области» — абсолютная истина! Конфигурация полностью кастомная, основана на древней БП 1.6, потому «Подключаемый модуль» ОЧЕНЬ помогает.
(41) sevushka,
В интерфейсе для обычных форм в меню («шестеренка») есть пункт «Новое в релизе». Туда можно иногда посматривать, важную информацию выкладываем там.
На УФ это еще не перетягивали, было полно других задач. Со временем и туда прикрутим.
Можем приделать RSS, вам это насколько удобно будет?
(41) sevushka,
Доступ на вики — сильно сомневаюсь, если честно. Там очень много внутренней информации, не только по проекту EDI.
Года полтора назад мы делали ветку в одном из форумов Контура как раз под эти цели. Т.е. хотели накопить некую базу знаний и организовать общение клиентов друг с другом. Что-то вроде партнерского форума 1С. Как это часто бывает с форумами, он помер от голода, туда почти никто не заходил. Непонятно было, а кому он вообще интересен, кому о нем рассказать, как на нем регистрироваться и т.д. Я попробую поднять этот вопрос.
Лично у меня вообще есть давняя мечта — выложить исходники на GitHub, включить там же Вики, и вперед. Там же и форки делать. Возможно, когда-нибудь к этому придем.
Насчет подключаемого модуля. У нас когда-то были развернутые инструкции, примеры, как его писать и какими событиями пользоваться. Они уже безнадежно устарели. Мы пошли другим путем: в сам шаблон ПМ выкладываем примеры обработчиков событий, их можно раскомментировать и настроить под себя. Там есть примеры для большей части событий.
Там же есть простенькая возможность трассировки событий, посмотрите по коду, где-то в самом начале.
(41) sevushka,
В 4.03.004 мы добавляли прямо на интерфейсе ссылку «Отправить отзыв», вверху посередине. Письмо уходит в ящик, который мы периодически мониторим. Правда, пока почти никто не пишет.
OTRS добавит нам вторую точку входа инцидентов. Это будет уже довольно тяжело обрабатывать. Сейчас инциденты регистрируются через внедренцев и техподдержку, они многие вещи решают сами, что сильно разгружает нас для продуктовой разработки. Тут такое противоречие: если мы будем напрямую работать со всеми конечными пользователями, то коробка перестанет развиваться. А если совсем не будем контактировать, то коробка будет развиваться совсем не туда )) Мы пытаемся балансировать посередине.
Давайте пока что остановимся на ссылке «Отправить отзыв». Я не обещаю, что у нас будут ресурсы для того, чтобы отвечать всем и сразу. Но мы будем стараться. Насчет OTRS пока планов нет, возможно, организуем в будущем.
(41) sevushka,
Раз уж у вас все так технологично сделано внутри — ну сделайте что-то полезное для сторонних программистов, которые внедряют ваши системы, тот же форум и вики, хотя бы.
Планы пока предоставлять не готовы. По крайней мере на квартал — точно. Они довольно укрупненные, и вам вряд ли будут интересны вещи вроде «прокачать взаимодействие с отделом продаж». А расписывать детальные планы для конечных пользователей — можно, но это как в анекдоте с лисой. «Да все так же, только бухгалтерии добавилось». Наши ресурсы очень ограничены, и даже отвечая вам сейчас здесь, я не занимаюсь разработкой.
Кроме того, у нас же часто возникают срочные задачи вне плана. Вот захотела какая-то сеть добавить пару полей в сообщениях, и без них машины не будет принимать уже прям через неделю. Понятно, что все наши планы летят в тартарары.
Но вы запросто можете спрашивать у внедренцев по конкретным задачам, которые хотели бы видеть. Они обычно в курсе, если что, уточнят у нас.
(41) sevushka,
Обязательно всем передам, спасибо за позитив!
А можно мне тоже на почту? Я правильно понимаю что вы удаляете весь мусор который генерится для обычных форм и макетов?
(48) comol, мы на самом деле мы добавили в .gitinfoexclude наворотов вроде
*.orig
src/*/Form/*/form
*/managedForm.bareForm.txt
*.txt
src/*/und/*
и на этом успокоились ))
Скиньте почту в ЛС, отправлю сборку целиком.
(49) О, может этого и хватит. спс. Но сборку закинь всё равно если не трудно… e-mail кинул в личку…
(42) (41) sevushka,
Проблема УФ в том, что перестроение списка задач действительно затратная штука. Нам надо ходить за результатами анализа сделок на сервер, т.к. оперативные изменения происходят там. При этом на сервере мы толком ничего не можем закэшировать — это все протухнет сразу как только мы уйдем оттуда (это модуль внешней обработки все-же, можно пытаться кэш как-то сохранять, мы думали над этим, но оказалось что он постоянно норовит испортиться + часто обновить кэш ненамного дольше чем достать его откуда-то ). Выливается это в действительно неприятное подлагивание у пользователя даже на не очень больших периодах анализа задач.
Мы над этим подумали и уже зарелизили крутую штуку: мы не будем обновлять весь список при воздействии только на 1 строку — мы её «зачеркиваем» — вот прямо берем и перечеркиваем пользователю, а список задач заново не обновляем. Его можно обновить 1 раз после обработки всех задач. Кажется что это как раз то, что Вам нужно! Механизм появился в окончательном виде с релиза 4.03.004.01.
Мы даже подумали что можно засекать время обновления и если оно слишком велико — сразу пользователю предлагать попробовать новый режим. Так и сделали. Таймер там сейчас стоит на 10 секунд, но видимо это много, верное значение должно быть в районе 2 сек.
В любом случае, вы можете зайти в настройки и воткнуть этот флажок самостоятельно. называется он «Обновлять данные в списке документов полностью».
С этой штукой даже у клиентов с очень большим количеством заказов (500+ в день) удалось достичь вполне приятного быстродействия.
(22)
Спасибо!
а какой ник он использует?
(49)
*.orig
src/*/Form/*/form
*/managedForm.bareForm.txt
*.txt
src/*/und/*
и на этом успокоились ))
это тот же файл, что я на почту получил, верно?
(52) artbear, Здесь я под этим ником.
(53) artbear, да, тот же
(54) а тутhttp://www.1cpp.ru/forum/YaBB.pl ?
(56) lustin, Там я не зарегистрирован.
(42) отвечаю в ЛС, здесь это вряд ли интересно, оффтопик же.
(0)
сделайте переменную ИмяРеквизитаОрганизация глобальной, чтобы можно было в одном месте в ПМ ее инициализировать под себя
(59) Ibrogim, мы сейчас разрабатываем инструмент для маппинга полей документов и сообщений. Эта переменная, скорей всего, будет уже не нужна. Потерпите немного.
Можете пока выслать получившийся у вас модуль (вместе с подключаемым) и файл конфигурации?
(60)
т.к. через подключаемый модуль у нас не получилось везде заменить организацию на наш реквизит (судя по всему это не возможно) то мы внесли изменения в сам модуль, а ПМ не пользовались. Конфигурация типовая УТ11.1.2, изменения затрагивающие взаимодействия с вашим модулем это только свой реквизит «организация» в документах.
Исправленный под нас ваш модуль можем выслать. Куда?
(61) Ibrogim, написал в ЛС
А к разработе Диадок вы имеете отношение?
(63) dgolovanov, отвечал в (38). Разработкой модуля Диадок занимается другая команда. В данный момент мы подумываем объединить с ними усилия.
(64) понял, спасибо. В Диадоке код совсем не дружелюбный для допиливания. Странно, что два продукта настолько отличаются.
(65) Буквально сегодня, кстати, в модуль Диадока протянули подключаемый модуль, примерно как в EDI.
Можете написать в ЛС свое видение идеального модуля Диадока? Чего не хватает, что удобно/неудобно, что хотелось бы видеть, любые соображения.
Лично я этими вопросами не заведую, но ребятам передам, они как раз плотно взялись за облегчение кастомизации модуля.
Добротно все расписано. С 2010 года занимаемся чем-то подобным — сбор заявок от торговых с КПК и передача их дистрибьюторам для осуществления продаж на торговые точки. Но кроме этого в нашей системе учитываются еще складские остатки и движения «нашей» продукции и ДЗ точек перед дистрибьюторами. Также используем разделение интерфейса (как мы его называем) на шаблонную часть и специфику дистрибьютора. Но есть несколько отличий:
1. Поддерживаем платформы 7.7 (хватает еще и таких дистров) и 8.Х. Причем для 8-ки используется единая обработка для ОФ и УФ — при переходе на УФ нам ничего менять не надо (в теории, но могут быть нюансы)
2. Специфика дистрибьютора вынесена в отдельные обработки — слишком много «хотелок» по формам формирования документов + не всегда тривиальное получение данных о продажах, движениях, ценообразовани и ДЗ.
3. с 2015 года для обмена используется SFTP-сервер(а) — пришлось «наваять» свой транспорт на Питоне.
И также столкнулись со многими проблемами, как в предметной области, так и в вопросе реализации (а теперь и развитии) самого интерфейса.
(41) sevushka,
полностью согласен с 1 пунктом.
У нас ~600 заказов в день только от 1 сети. Обрабатывать их этой обработкой просто невозможно.
Решение: выпилил куски общего модуля, где идет обмен через API. Спокойно забираю заказы, сам распознаю, сам пишу в базу. также с DESADV’ами и RECADV’ами.
Работает быстро.
(67) jerokee, у нас 7.7 тоже есть, ОФ и УФ тоже в уже едином модуле. Транспорт там же, на 1С (нам проще, поскольку нет необходимости лезть на SFTP). Вот вставок на Питоне нет ))
А как ваш проект называется? Интересно было бы посмотреть.
(68) zumik3, в (41) с sevushka вопрос порешали. У нас есть клиенты с таким количеством заявок — и работают нормально. Есть торговые сети, у которых документов еще больше.
Хотелось бы подробностей от вас: в чем заключается невозможность? Скорость работы, недостаточно данных в интерфейсе, еще что-то?
Контакты есть в моем профиле, пишите, отвечу.
(69) Здесь долго и много описывать… В ЛС почему-то ничего написать Вам не могу.
А как же поставщики Алкоголя, не побоюсь этого слова с большой буквы 🙂
К ним требования по EDI еще более изощренные, причем у каждой сети свои.
А в их конфигурациях информация по алкореквизиитам и лицензиям у кого где хранится…..
Что-то ничего не написано про DESADVALCO — он у вас не поддерживается?
Я так понял у Вас все в одной системе и EDI и ЮЗД (юридически значимые документы) документы?
Подписывается сразу все из обработки для ЮЗД документов или лезть на сайт?
Обработка квитанций по счетам-фактурам, аннулирование, счета-фактуры исправительные, корректировочные?
Все что отправляется через обработку видно и в WEB интерфейсе?
Единый сайт для ЕДИ и ЭДО (ЮЭД) документов?
Я бы пошел к вам, т.к. у других компаний которыми мы пользуемся интеграционные решения — жесть какие костыли, да в которых нам еще и ковыряться приходится….
Я даже раза 3 писал Вашим продажникам запросы со списком сетей и документов — говорил, что если обеспечите обмен по всем — то мы рассмотрим более удобный для нас вариант централизации с более грамотным интеграционным решением.
Но они игнорят такие письма — ответов нет, только рекламные звонки (и это не смотря на платежи от 70+ тыс. руб в месяц за трафик).
(72) serg_info, DESADVALCO у нас называется ALCRPT. Есть еще вариант, когда прямо в DESADV сведения о лицензиях/производителях добавляются, это, наколько помню, от требований сетей зависит.
Для алко есть конфигурации УТАП и КАТАП, и я пока еще ни разу не видел, чтоб клиенты пользовались им прямо так, как задумывали разработчики. Самописок еще больше, все верно.
Поэтому алкопоставщикам в подключаемом модуле настраиваем заполнение всех этих полей в отдельном событии. Есть несколько шаблонов кода, которые наши внедренцы потом уже допиливают до конкретной конфигурации.
EDI и ЮЗДО — пока отдельные проекты. Но в EDI есть немного ЮЗДО: когда цепочка EDI сообщений доходит до INVOIC, из него автоматом генерируется ЭСФ (+ТОРГ12, если надо), и модуль EDI после этого выдает «а давай-ка теперь все это сертификатом подпишем». Ctrl+A, «Подписать», выбрать сертификат и подождать.
ИСФ/КСФ где-то в начале года прикрутили, дальше была долгая тишина и отсутствие обратной связи. Недавно тема наконец начала набирать обороты, появились некоторые замечания/хотелки, обрабатываем. А так клиенты пользуются.
Аннулирование ЭСФ: в самом модуле EDI не предусмотрено, возможно только посмотреть статусы по отправленным ЭСФ: какие подписаны, по каким сеть отказала/запросила аннулирование. Полный набор плюшек на эту тему — в Диадоке.
Сайты Диадока и EDI — разные. Но туда можно попадать по одной учетной записи, если привязать ее к обоим сервисам. Собственно, и сервисы то разные изначально.
То, что отправлено интеграцией, в мониторинге отражается точно. Попадает ли в веб-интерфейс поставщика, точно не скажу, поскольку не пользуюсь им.
Странно, что продажники не ответили. Переправьте письмо на мой ящик, попингую их, они тут через стенку сидят ))
В самом начале статьи есть ссылка на демо базу с модулем. С тех пор многое поменялось/добавилось/отрефакторилось, но для общего представления должно хватить.
День добрый!
Замечательная статья и хорошее решение.
Есть у меня один вопрос по поводу данного продукта.
По ряду причин мы переходим на облачный сервис. Использовать измененную конфигурацию (в частности, дополнительные справочники, регистры) нет возможности.
Можете предложить какое-то решение в этом случае?
Заранее спасибо за ответ.
Добрый день!
Благодарю за отзыв.
Увы, в данном случае решения предложить не могу.
Разве что попробовать договориться с владельцем сервиса об изменении конфигурации в облаке. Кажется, был один похожий прецедент. Напомните на следующей неделе в личке — постараюсь узнать.
Оказывается, я давно сюда не заходил.
Коллеги, кто-то из вас спрашивал про Диадок, на что я отвечал, что это другая команда разработки.
Так вот, этой осенью я официально перешел в проект Диадок и вместе с его командой занимаюсь разработкой соответствующего модуля интеграции.
Поэтому, если будут вопросы/пожелания по этой теме, пишите.
(76) День добрый! Не получается написать в личку — не уходит сообщение. Переходим в облако. 1sfresh.com. Им писал — пока ответа нет. Самому писать с нуля — не быстро. Переходить к другому оператору — тоже не панацея. Тот же самый СБИС не использует дополнительных объектов, но есть другие моменты… В частности традиционное «бухгалтера привыкли». Так что — прошу совета. Думаю, мы не единственные и не уникальные. В облако люди будут переходить. Может как-то централизовано попытаться порешать? Хотя, это тоже, наверное, не быстро… С другой стороны это стратегически выгодно — будет конкурентное преимущество перед другими операторами EDI.
(77) Согласен с вами, стратегически это выгодно.
Мы какое-то время ждали выпуск механизма расширений в 8.3. Но поскольку оказалось, что таблицы расширениями не изменяются, этот вариант отпал.
Второй вариант — договариваться с поставщиками сервиса (кроме 1cfresh.com есть еще несколько организаций, предоставляющих такие услуги). Пока непонятно, насколько это возможно. Прецедентов, оказывается, пока все-таки не было.
Третий вариант — пересматривать механизмы хранения данных в модуле. У нас довольно много зависимостей в коде от текущей подсистемы хранения данных. Теоретически мы можем переключиться на кое-что другое, но это довольно трудоемко и не быстро.
Пока приоритет данной задачи низкий, со временем, возможно, будет повышаться. Когда он перевесит трудоемкость, займемся.
Если будут какие-то новости, я напишу.
(78) Да уж. Ситуация патовая. Перейти на другого оператора мы не можем — одна из сетей работает _только_ через Контур и роуминговых соглашений с другими операторами нет.
Фреш — вопрос политический и поменять это тоже проблематично если не сказать — не возможно.
Видится одно решение, пусть и кривое, но реализуемое.
В облаке у нас БП3.0
Формируем АРМ, синхронизируем с облаком.
Разворачиваем локальную БП3.0, в которую заводим только EDI.
Между АРМ и базой с EDI настраиваем обмен — в сторону АРМа документы Реализация и Счет-Фактура, в сторону базы с EDI — НСИ.
Ну и АРМ с облаком обменивается полностью.
Криво, громоздко, но других вариантов навскидку я не вижу.
Подскажите, если есть еще какой вариант…
(79) Костыли с обменами, пожалуй, сработают.
http://www.scloud.ru/tariffs_arenda_1c/
Есть еще такой вариант:
Это не fresh, это просто виртуалка с терминалом и 1С внутри. (но можно и снаружи через веб-клиента подключаться).
Разумеется, там есть конфигуратор.
Такое вам подойдет?
(80) Fresh — вопрос, скорее, политический. Попробуем костыли.
Прикладная ортопедия на новогодние праздники — хорошая альтернатива бытовому алкоголизму. 🙂
(81) тут не за горами «Расширение данных» в 8.3.11
https://wonderland.v8.1c.ru/blog/rasshirenie-dannykh/
Выглядит очень заманчиво
Доброго времени суток!
Три года используем модуль Контур.EDI для 1С. Когда в 2014 году адаптировали его к нашей конфигурации (сильно переписанная УТ 10.1), пришлось помучиться с некоторыми моментами. С тех пор модуль не обновлялся, ибо «работает — не трогай», да и особой необходимости не было.
В начале июня 2017 встала задача о переходе на электронные УПД, и оказалось, что для этого нужно обновить модуль. Когда я начал копаться в коде актуальной версии, то увидел, что за эти годы была проделана огромная работа. Адаптировать новую версию к нашей конфигурации стало намного проще благодаря таким, на мой взгляд, изящным решениям, как, например, вынесение имён метаданных и текстов запросов в макеты. Подключаемый модуль на данный момент очень и очень удобен. Порадовали некоторые «пасхалки» 🙂
По изменениям, произошедшим в модуле, как будто чувствуется, как изменился подход к работе и атмосфера в команде разработчиков. Эта статья усилила впечатления и заставила задуматься о том, что мы делаем так или не так в своей работе.
Спасибо за работу и за статью, так держать!
(83) Добрый день! Спасибо за отзыв. Мы правда старались ))
Добрый день. Тоже являюсь «пользователем» модуля интеграции. И, когда появляется нужда открыть его в конфигураторе, мой мозг ломается от слова напрочь. Форма для хранения кода? Вэлкам. Форма-разделитель форм в списке — тут же. Читабельность — неа, это не про нас.Отладка? А зачем? Как вы это вообще разрабатываете?
У нас в компании куплен модуль интеграции EDI (Обработка) версия 4.03.031.02. Обработка очень глючная, постоянные лаги, стандартную обработку к стандартной УТ 11 пытаемся внедрить уже несколько месяцев, только по моим заявкам в контур были исправлены некоторые глюки обработки. За все время общения с контуром складывается впечатление, что они на нас обкатывают обработку. Менеджеры отвечают не охотно, на рабочем месте их никогда нет. Ответ на письмо получаем спустя полдня в лучшем случае. Это очень неудобно, потому что мы находимся в другом часовом поясе и выходит что ответ на один вопрос мы ждем сутки. Вопросов много, линия техподдержки на некоторые важные вопросы не может них ответить. Пока что один негатив, нет такого, что поставил обработку и все заработало. Инструкция только общая, нюансы опущены.
Если смотреть обработку изнутри то там часто можно встретить «здесь пожалуй вставим костыль», функционал управляемых и не управляемых форм попытались засунуть в одну и ту процедуру, что приводит к ошибкам, например попытайтесь добавить подключаемый модуль в управляемых формах который лежит на рабочем столе. У вас ничего не получится! И так во всем.
Резюмирую:
Контур на мой взгляд выглядит молодой компанией, которая еще не до конца доработала свой продукт. Обработки других провайдеров я не тестировал, как Контур выглядит на фоне других аналогичных компания я не могу сказать
(86) Я из команды 1С проекта Контур.EDI. Напишите в личку с чем возникли трудности. Если есть номера обращений в техподдержку, то это поможет быстрее разобраться.
(87)Пытаюсь вам написать в личку, не получается, пишет «Сообщение не отправлено. Отложенная группа». Предлагаю вам написать мне, чтобы я мог вам ответить. Сегодня очередной раз столкнулся с глюком обработки, пытаясь отклонить заказ.
Я работал с разными провайдерами Корус, ЛераДата, Эдисофт, СБИС=Тензор и СКБ Контур EDI + ЭДО.
Работал и «в алкоголе» (писал в 16 году) и работаю сейчас «не в алкоголе», производство.
Из моего опыта — СКБ Контур лучшее из того что я видел по поддержке, скорости реакции и реализации интеграции для 1С.
Все что нам нужно можно сделать в подключаемом модуле, при этом при обновлениях все было норм с нашим кодом и переписывать особо не приходилось.
Работа с разными потоками документов и с сетями (Лента, Х5, + факторинг) и с поставщиками такими как Деловые линии.
Я потихоньку свожу все к единому провайдеру и это СКБ Контур, когда в наследство достается зоопарк.
Гибкость настроек и маршрутизации, изменение схем на лету (когда тебе нужно выслать например INVOIC без пришедшего RECADV) все это решается штатными средствами. Отправить повторно любой документ — все это штатно без «танцев с бубном»
Дельные идеи берут в реализацию и годика через пол появляется в типовом решении.
Удачи Вам разработчики.
Я голосую за Вас рублем 🙂
PS Это не реклама, это мое мнение и никакого отношения к СКБ Контур я не имею.
Наверное есть и неудачные примеры, но у меня с ними все складывалось лучше чем с другими провайдерами, может мне везло.
Хотя схемы обменов и требования к форматам обмена самые разные были.
Наверно это и отличает людей которые разрабатывают продукт на 1С или разработчиков виндовс от разработчиков Apple