Контур.EDI изнутри, или история командной разработки тиражного продукта на 1С




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

90 Comments

  1. pavlov_dv

    Достаточно интересная статейка получилась!

    Когда наткнулся на нее — думал что чисто про EDI, у меня на работе как раз эта тема сейчас разрабатывается. Наши зарубежные партнеры и филиалы используют нечто подобное. И да, мы сталкиваемся именно с такими же проблемами, что и в разделе «Проблемы предметной области».

    Кстати, настолько плавно и органично в статье осуществлен переход от темы «EDI» к теме про «командную работу» — читабельность поразительная! 🙂

    Спасибо!

    Reply
  2. artbear

    Интересная статья, спасибо!

    Меня, как одного из мейнтейнеров продуктов precommit1c и V8Reader, заинтересовали доработки к нашим продуктам.

    Вопросы

    В precommit1c внесли изменения:

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

    Из управляемых форм вытаскиваем код отдельно.

    Каждый метод записывается отдельным файлом. Это сильно облегчает и Code Review, и просмотр в режиме Blame.

    Можно получить эти доработки для основного проекта precommit1c?

    Например, сделать pull-request ?

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

    И по V8Reader можно ли также получить pull-request?

    Reply
  3. skif47

    (2) artbear, Pull request на самом деле уже есть, мы списывались несколько месяцев назад:

    https://github.com/xDrivenDevelopment/v8Reader/pull/30

    Но ту идею я в конце концов забросил.

    Сам V8Reader мы почти не меняли, только убрали в каком-то месте переименование макетов и добавили вызов нашего обработчика, который проводит дальнейшее разбиение разобранного модуля. Лежит здесь: https://github.com/volodkindv/v8Reader/tree/develop (скорее всего, устарело, давно не обновлял). Могу отправить на почту то и другое.

    И спасибо за эти разработки, нам очень помогло!

    Reply
  4. artbear

    (3) Было бы удобно получить последние версии с описанием доработок.

    Можно и на почту.

    Жду

    спасибо за эти разработки

    Всегда пожалуйста.

    Предлагай свое, я вижу, что также интересные вещи делаете.

    Reply
  5. PrinzOfMunchen

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

    Reply
  6. Evil Beaver

    (5) PrinzOfMunchen, речь про xUnit, если я правильно понял? Есть статья про эволюцию этого инструмента, поясняющая почему там такой код и версия 4.0, в которой legacy-код из прототипа был удален.

    Ну и сами же пишете:

    в целом продукт годный и крайне полезный

    А внутри может быть и страшно, но это называется инкапсуляция 🙂

    Reply
  7. PrinzOfMunchen

    (6) Evil Beaver, нет, я про модуль интеграции EDI<->1С. Там внутри был ад перфекциониста, по крайней мере раньше. Как с текущими версиями дела обстоят, к сожалению не знаю. )

    В целом-то продукт хороший, но когда надо заглядывать внутрь…

    Reply
  8. bolshakov_2015

    (7) PrinzOfMunchen, а как давно заглядывали?

    Reply
  9. PrinzOfMunchen

    (8) bolshakov_2015, довольно таки давно, если честно. Где-то с полгода назад.

    Reply
  10. pumbaE

    (0) тесты прогоняете на всех версиях различных видов конфигурации? Отдельные виртуалочки для 8.3, 8.2 ? На скольких версиях 1с запускаете тесты?

    Reply
  11. skif47

    (5) PrinzOfMunchen, Да, у нас там в комментариях иногда шекспировские страсти разыгрываются ))

    Избавляемся постепенно.

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

    Reply
  12. skif47

    (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 не трогаем. Это все в планах.

    Reply
  13. PrinzOfMunchen

    (11) как у многих ))

    То что избавляетесь, крайне радует. Судя по статье идеал не за горами. )))

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

    Reply
  14. maleshov.maxim

    Можно узнать поподробнее про собственный инструмент контроля версий на 1С?

    Reply
  15. pumbaE

    (14) maleshov.maxim, это больше не инструмент контроля версий, а инструмент для запуска тестов, т.к. в дальнейшем скрины показаны стандартного gitlab.

    Reply
  16. skif47

    (1) pavlov_dv, спасибо, статью тоже рефакторили )

    У вас EDI в какой отрасли? Продуктовый ритейл или что-то другое?

    Reply
  17. skif47

    (14) maleshov.maxim, (15) pumbaE, это смесь СКВ и автотестов. Отдельная база на 1С, которая хранит все «дерево разработки» и версии модулей.

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

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

    Git и его веб-интерфейс Gitlab используем для Code Review, там очень удобно комментировать. Храним там только тексты модулей.

    Reply
  18. lustin

    (0) один вопрос меня волнует — кто этот волшебный маг семерочник ;-). Можете озвучить никнейм — чувствую я, что никнейм будет известным.

    Reply
  19. lustin

    (0) (18) имеется ввиду вот эта цитата

    Тем более что для 7.7 такой инструмент уже был готов: у нашего основного разработчика на этой платформе черный пояс по магии

    очень хочется узнать обладателя черного пояса ;-).

    Reply
  20. Red_Devil

    Пользуюсь вашей обработкой, молодцы! За подключаемый модуль отдельный +

    Reply
  21. pavlov_dv

    (16) торговля электронными компонентами, автоматикой, КИП и т.д.

    Используем EDIFACT… Хотя слово «используем» -это за уши притянуто 🙂

    Кастомизация практически под каждого конкретного поставщика. От стандарта остается только заголовок 🙂

    Зато зарубежные (особенно стоки) с удовольствием соглашаются, но с ними тяжеловато работать — этапов тестирования не будет 🙂 Тренируемся на кошках на маленьких посылках.

    Отечественные же при слове «Едиай» смотрят мутными глазами, переспрашивают «А шо это?» и отказываются: «Ышшо деды работали безо всяких буржуйских извращений, и мы не будем».

    Reply
  22. skif47

    (18) lustin, (19) lustin, Матвей Новоселов, он сказал, что вряд ли его кто знает )

    Reply
  23. skif47

    (20) Red_Devil, Спасибо, приятно слышать.

    Reply
  24. qazaz2

    Спасибо автору, интересно и даже как-то мотивирует на хорошую работу)

    Reply
  25. vakham

    Притча.

    Лет десять назад настроили с магазинами электронные заявки. Быстро, дёшево и сердито.

    Спустя годы появились EDI-провайдеры с откровенно глючным сырьём и невменяемыми ценами за воздух. Посему все «выгодные мля буду» идеи были посланы в топку.

    И вдруг… Буквально пару лет назад все крупные сети как с цепи сорвались. В ультимативном порядке сети потребовали всех подключить к своему EDI-провайдеру, которые разгубастились трясти деньги за каждый чих. Ниточка потянулась в Вашингтон. Погуглив «ху из ху», а так же «кто такие», «чё такие борзые», «с какого району», выяснилось, что по крайней мере один из «независимых» EDI-провайдеров был очень даже зависим от сети, которая требовала заявок через этот провайдер.

    Итого: крупные торговые сети не только навели порядок со своими поставщиками и клиентами (что само по себе не плохо), но и хорошо нагрели руки, продавая воздух. Суки. Из-за них сломали что итак отлично работало, так ещё и деньги платим хер знает за что.

    Reply
  26. Ibrogim

    (0) Статья Супер.

    Очень интересует это

    Данные запросы разбираются на части и собираются заново в нужном виде. И не говорите, что СКД для этого не предназначена. Знаю, согласен.

    и возможность сделать так

    часть изменений удалось вынести “сбоку”

    Был бы признателен примерам этих собираний разбираний

    Reply
  27. sea123

    (8) bolshakov_2015, заглядывали буквально только что

    комментарии в стиле

    Если Стр.СуммаНДС=0 Тогда //самый важный блок вроде бы

    Если Стр.СуммаБезНДС<>0 Тогда

    Стр.СуммаНДС=Окр(Стр.СуммаБезНДС*КоэффНДС,2);

    ИначеЕсли Стр.СуммаСНДС<>0 Тогда

    Стр.СуммаНДС=Окр(Стр.СуммаСНДС*КоэффНДС/(1+КоэффНДС),2);

    ИначеЕсли Стр.ЦенаСНДС<>0 Тогда

    Стр.СуммаНДС=Окр(Окр(Стр.ЦенаСНДС*Стр.Количество,2)*КоэффНДС/(1+КоэффНДС),2);//адовы округления детектед

    ИначеЕсли Стр.ЦенаБезНДС<>0 Тогда

    Стр.СуммаНДС=Окр(Окр(Стр.ЦенаБезНДС*Стр.Количество,2)*КоэффНДС,2);//адовы округления детектед

    КонецЕсли;

    КонецЕсли;

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

    Ну и вот в этих самых краях, начиная с 10 ноября и кроется мощный косяк «адовых округлений»

    Нам в компанию приходят заказы с ценами без НДС. Ну вот скажите, какая легкая наркомания заставила вашу команду сначала посчитать цену с НДС, ОКРУГЛИТЬ ее до копеек и потом считать НДС?

    Reply
  28. Crazy_kz

    Я не гуру 1С, с нового года перешли на эту систему, кучу времени потратил что бы вставить свои костыли, потому что просто не работает что то или работает но криво.

    Reply
  29. skif47

    (26) Ibrogim,

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

    ВЫБРАТЬ
    докЗаказПокупателя.Ссылка КАК PORDERS,
    докЗаказПокупателя.Ссылка КАК ORDERS,
    докЗаказПокупателя.Ссылка КАК ORDRSP,
    докРеализацияТоваровУслуг.Ссылка КАК DESADV,
    докРеализацияТоваровУслуг.Ссылка КАК RECADV,
    СчетФактураВыданныйДокументыОснования.Ссылка КАК INVOIC
    ИЗ
    (ВЫБРАТЬ
    1 КАК Поле1) КАК Заглушка
    {ПОЛНОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
    {ПОЛНОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК докРеализацияТоваровУслуг
    {ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК докЗаказПокупателя
    ПО докРеализацияТоваровУслуг.Сделка = докЗаказПокупателя.Ссылка}
    ПО СчетФактураВыданныйДокументыОснования.ДокументОснование = докРеализацияТоваровУслуг.Ссылка}
    ПО (ИСТИНА)}

    Показать

    Под каждую конфигурацию и каждую цепочку документов свой.

    Дальше функция ПолучитьТаблицуДляСборкиЗапросов() парсит данный запрос в ТаблицуЗначений. Затем для каждого конкретного случая функция ПолучитьТекстЗапросаДляТаблицы() преобразует эту таблицу в нужный запрос. Например, нам надо получить все Реализации, по которым не созданы Счета-Фактуры. Понятно, что надо взять таблицу РеализацияТоваровУслуг и сделать левое соединение со счетами-фактурами.

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

    Наборы этих запросов как раз и лежат в макете СКД. Там их удобнее структурировать.

    Еще есть так называемый «Подключаемый модуль». Это обработка, которая лежит рядом с основной и содержит в себе код, дополняющий или переопределяющий некоторые методы из основного модуля. Грубо говоря, в основном модуле лежит некая функция ЗаполнитьЗаказПокупателя(Сообщение,ОбъектДокумента), которая в инициализированном ДокументОбъект.ЗаказПокупателя заполняет Организацию, Контрагента, Товары и т.д. Она рассчитана на известные типовые конфигурации, но у клиента есть какое-то нестандартное поле в этом документе, и его надо тоже заполнить. Чтобы не добавлять код в основном модуле и не перетаскивать его потом в новые релизы, мы сделали вызов экспортного метода «ПослеЗаполненияЗаказаПокупателя» в дополнительной обработке («подключаемый модуль»). Туда передаются те же самые параметры (Сообщение,ОбъектДокумента), и там уже можно писать произвольный код.

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

    Reply
  30. Ibrogim

    (29)

    вверху есть ссылка на демо-базу с модулем.

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

    мы сделали вызов экспортного метода «ПослеЗаполненияЗаказаПокупателя»
    Чтобы не добавлять код в основном модуле и не перетаскивать его потом в новые релизы

    Я подобную штуку использую и в своих разработках.

    Reply
  31. skif47

    (27) sea123, раз уж вы добрались до этого кода, то вы прочитали также и комментарий в начале метода, где этот код расположен.

    Изначально я описывал этот случай в разделе «Проблемы предметной области», но потом решил, что как-то много получается.

    В общем случае сеть может «забыть» указать любые поля в сообщении, в любой комбинации. В сообщении есть 6 числовых полей: цена с/без НДС, сумма с/без НДС, сумма НДС, ставка НДС. Теперь вычеркните любые из них в случайном порядке и попробуйте придумать алгоритм, который рассчитает недостающие.

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

    Конкретно по вашему случаю мне хотелось бы больше деталей. Вы можете обратиться к вашему внедренцу или на техподдержку, чтобы они зарегистрировали этот инцидент. Он рано или поздно попадет к нам. Или можете отправить мне в ЛС ссылку на подобное сообщение в мониторинге и скриншоты загруженного документа — как загрузил модуль и как должно быть. Постараемся смоделировать это у себя, если это действительно общий случай, то включим в коробку. Если он возникает только у вас, попробуем решить подключаемым модулем.

    Reply
  32. skif47

    (27) sea123, этому коду, кстати, года полтора примерно.

    Reply
  33. skif47

    (28) Crazy_kz, было бы интересно узнать, что именно не работало и с чем возникали сложности. Сможете выслать получившийся у вас модуль с доработками на почту?

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

    Смотрю историю версий, у вас, скорее всего, 4.02.001.02 или где-то рядом?

    Reply
  34. skif47

    (30) Ibrogim, будет интересно посмотреть, что у вас в конечном итоге получится и какие сложности возникали. Возможно, что-то возьмем в коробку, облегчим обновление модуля вам и тем, у кого подобные кастомы.

    Reply
  35. bolshakov_2015

    (30) Ibrogim, УТ 11 — как много в этом звуке

    Вот только их 3 разных версии и изменения (11.0-11.1-11.2)там отнюдь не косметические. И даже в пределах 11.0 реквизиты того же заказа от релиза к релизу волшебным образом исчезали и появлялись вновь. ))

    Доля сильно кастомизированных УТ 11 сейчас в природе крайне мала (боятся все-таки 1С ники УФ всё ещё)

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

    Reply
  36. sea123

    (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

    Все, приехали, сумма НДС не совпала

    Reply
  37. kraynev-navi

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

    А к диадоку (http://www.diadoc.ru/integrations/1c) вы отношение имеете как разработчик?

    Reply
  38. skif47

    (36) sea123, все не так однозначно. Ставка НДС далеко не всегда выбирается из карточки номенклатуры. У кого-то она вообще не заполнена в справочнике. У кого-то есть ИП на УСН и рядом же ООО на ОСНО. Порядок расчета цен у каждой сети свой и иногда даже прописывается в договоре поставки. Одни считают суммы от цен, другие — цены от суммы, кто-то включает НДС в сумму, кто-то нет.

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

    Reply
  39. skif47

    (37) kraynev-navi, спасибо )

    Диадок — это другой проект, у него своя команда разработки, лично я в нее не вхожу. Но мы часто общаемся и обмениваемся идеями, а иногда и кодом (а иногда даже сотрудниками )) ). Например, для группового подписания счетов-фактур мы используем компоненту Диадока. Архитектура модуля изначально была позаимствована у них, и лишь потом мы выстроили ту, которая больше подходила именно под специфику EDI. Диадок тоже иногда перенимает кое-какие наработки из EDI. Мир очень тесен.

    Reply
  40. vawd

    Как поставщик, «Проблемы предметной области» — абсолютная истина! Конфигурация полностью кастомная, основана на древней БП 1.6, потому «Подключаемый модуль» ОЧЕНЬ помогает.

    Reply
  41. sevushka
    Reply
  42. skif47
    Reply
  43. skif47

    (41) sevushka,

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

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

    На УФ это еще не перетягивали, было полно других задач. Со временем и туда прикрутим.

    Можем приделать RSS, вам это насколько удобно будет?

    Reply
  44. skif47

    (41) sevushka,

    3. Хочется получить рид-онли доступ на вашу вики (или что там у вас используется). Далеко не всегда очевидно, в какой момент какими функциями подключаемого модуля надо пользоваться. От внедренцев этого не добиться, помогает только отладчик. Ну или хотя бы что-то типа best practices.

    Доступ на вики — сильно сомневаюсь, если честно. Там очень много внутренней информации, не только по проекту EDI.

    Года полтора назад мы делали ветку в одном из форумов Контура как раз под эти цели. Т.е. хотели накопить некую базу знаний и организовать общение клиентов друг с другом. Что-то вроде партнерского форума 1С. Как это часто бывает с форумами, он помер от голода, туда почти никто не заходил. Непонятно было, а кому он вообще интересен, кому о нем рассказать, как на нем регистрироваться и т.д. Я попробую поднять этот вопрос.

    Лично у меня вообще есть давняя мечта — выложить исходники на GitHub, включить там же Вики, и вперед. Там же и форки делать. Возможно, когда-нибудь к этому придем.

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

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

    Reply
  45. skif47

    (41) sevushka,

    4. Нахожу некие мелкие баги в программе. Пишу внедренцам. Получаю: «спасибо, Ваша информация передана разработчикам». Все. То, что некоторые из этих багов исправили, я узнаю только через несколько релизов, когда мне присылают новую версию. Хотелось бы обратную связь (пусть и не через внедренцев, а что-то типа otrs или любой другой тикет-системы), что ваш баг исправлен в релизе ххх, скачивайте и пользуйтесь на здоровье.

    В 4.03.004 мы добавляли прямо на интерфейсе ссылку «Отправить отзыв», вверху посередине. Письмо уходит в ящик, который мы периодически мониторим. Правда, пока почти никто не пишет.

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

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

    Reply
  46. skif47

    (41) sevushka,

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

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

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

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

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

    Reply
  47. skif47

    (41) sevushka,

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

    Обязательно всем передам, спасибо за позитив!

    Reply
  48. comol
    После декомпиляции удаляем файлы обычных форм, чтобы не засорять коммиты.

    Могу отправить на почту то и другое

    А можно мне тоже на почту? Я правильно понимаю что вы удаляете весь мусор который генерится для обычных форм и макетов?

    Reply
  49. skif47

    (48) comol, мы на самом деле мы добавили в .gitinfoexclude наворотов вроде

    *.orig

    src/*/Form/*/form

    */managedForm.bareForm.txt

    *.txt

    src/*/und/*

    и на этом успокоились ))

    Скиньте почту в ЛС, отправлю сборку целиком.

    Reply
  50. comol

    (49) О, может этого и хватит. спс. Но сборку закинь всё равно если не трудно… e-mail кинул в личку…

    Reply
  51. bolshakov_2015

    (42) (41) sevushka,

    Проблема УФ в том, что перестроение списка задач действительно затратная штука. Нам надо ходить за результатами анализа сделок на сервер, т.к. оперативные изменения происходят там. При этом на сервере мы толком ничего не можем закэшировать — это все протухнет сразу как только мы уйдем оттуда (это модуль внешней обработки все-же, можно пытаться кэш как-то сохранять, мы думали над этим, но оказалось что он постоянно норовит испортиться + часто обновить кэш ненамного дольше чем достать его откуда-то ). Выливается это в действительно неприятное подлагивание у пользователя даже на не очень больших периодах анализа задач.

    Мы над этим подумали и уже зарелизили крутую штуку: мы не будем обновлять весь список при воздействии только на 1 строку — мы её «зачеркиваем» — вот прямо берем и перечеркиваем пользователю, а список задач заново не обновляем. Его можно обновить 1 раз после обработки всех задач. Кажется что это как раз то, что Вам нужно! Механизм появился в окончательном виде с релиза 4.03.004.01.

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

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

    С этой штукой даже у клиентов с очень большим количеством заказов (500+ в день) удалось достичь вполне приятного быстродействия.

    Reply
  52. artbear

    (22)

    Матвей Новоселов, он сказал, что вряд ли его кто знает )

    Спасибо!

    а какой ник он использует?

    Reply
  53. artbear

    (49)

    comol, мы на самом деле мы добавили в .gitinfoexclude наворотов вроде

    *.orig

    src/*/Form/*/form

    */managedForm.bareForm.txt

    *.txt

    src/*/und/*

    и на этом успокоились ))

    это тот же файл, что я на почту получил, верно?

    Reply
  54. nma

    (52) artbear, Здесь я под этим ником.

    Reply
  55. skif47

    (53) artbear, да, тот же

    Reply
  56. lustin
  57. nma

    (56) lustin, Там я не зарегистрирован.

    Reply
  58. sevushka

    (42) отвечаю в ЛС, здесь это вряд ли интересно, оффтопик же.

    Reply
  59. Ibrogim

    (0)

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

    Reply
  60. skif47

    (59) Ibrogim, мы сейчас разрабатываем инструмент для маппинга полей документов и сообщений. Эта переменная, скорей всего, будет уже не нужна. Потерпите немного.

    Можете пока выслать получившийся у вас модуль (вместе с подключаемым) и файл конфигурации?

    Reply
  61. Ibrogim

    (60)

    Можете пока выслать получившийся у вас модуль (вместе с подключаемым) и файл конфигурации?

    т.к. через подключаемый модуль у нас не получилось везде заменить организацию на наш реквизит (судя по всему это не возможно) то мы внесли изменения в сам модуль, а ПМ не пользовались. Конфигурация типовая УТ11.1.2, изменения затрагивающие взаимодействия с вашим модулем это только свой реквизит «организация» в документах.

    Исправленный под нас ваш модуль можем выслать. Куда?

    Reply
  62. skif47

    (61) Ibrogim, написал в ЛС

    Reply
  63. dgolovanov

    А к разработе Диадок вы имеете отношение?

    Reply
  64. skif47

    (63) dgolovanov, отвечал в (38). Разработкой модуля Диадок занимается другая команда. В данный момент мы подумываем объединить с ними усилия.

    Reply
  65. dgolovanov

    (64) понял, спасибо. В Диадоке код совсем не дружелюбный для допиливания. Странно, что два продукта настолько отличаются.

    Reply
  66. skif47

    (65) Буквально сегодня, кстати, в модуль Диадока протянули подключаемый модуль, примерно как в EDI.

    Можете написать в ЛС свое видение идеального модуля Диадока? Чего не хватает, что удобно/неудобно, что хотелось бы видеть, любые соображения.

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

    Reply
  67. jerokee

    Добротно все расписано. С 2010 года занимаемся чем-то подобным — сбор заявок от торговых с КПК и передача их дистрибьюторам для осуществления продаж на торговые точки. Но кроме этого в нашей системе учитываются еще складские остатки и движения «нашей» продукции и ДЗ точек перед дистрибьюторами. Также используем разделение интерфейса (как мы его называем) на шаблонную часть и специфику дистрибьютора. Но есть несколько отличий:

    1. Поддерживаем платформы 7.7 (хватает еще и таких дистров) и 8.Х. Причем для 8-ки используется единая обработка для ОФ и УФ — при переходе на УФ нам ничего менять не надо (в теории, но могут быть нюансы)

    2. Специфика дистрибьютора вынесена в отдельные обработки — слишком много «хотелок» по формам формирования документов + не всегда тривиальное получение данных о продажах, движениях, ценообразовани и ДЗ.

    3. с 2015 года для обмена используется SFTP-сервер(а) — пришлось «наваять» свой транспорт на Питоне.

    И также столкнулись со многими проблемами, как в предметной области, так и в вопросе реализации (а теперь и развитии) самого интерфейса.

    Reply
  68. zumik3

    (41) sevushka,

    полностью согласен с 1 пунктом.

    У нас ~600 заказов в день только от 1 сети. Обрабатывать их этой обработкой просто невозможно.

    Решение: выпилил куски общего модуля, где идет обмен через API. Спокойно забираю заказы, сам распознаю, сам пишу в базу. также с DESADV’ами и RECADV’ами.

    Работает быстро.

    Reply
  69. skif47

    (67) jerokee, у нас 7.7 тоже есть, ОФ и УФ тоже в уже едином модуле. Транспорт там же, на 1С (нам проще, поскольку нет необходимости лезть на SFTP). Вот вставок на Питоне нет ))

    А как ваш проект называется? Интересно было бы посмотреть.

    Reply
  70. skif47

    (68) zumik3, в (41) с sevushka вопрос порешали. У нас есть клиенты с таким количеством заявок — и работают нормально. Есть торговые сети, у которых документов еще больше.

    Хотелось бы подробностей от вас: в чем заключается невозможность? Скорость работы, недостаточно данных в интерфейсе, еще что-то?

    Контакты есть в моем профиле, пишите, отвечу.

    Reply
  71. jerokee

    (69) Здесь долго и много описывать… В ЛС почему-то ничего написать Вам не могу.

    Reply
  72. serg_info

    А как же поставщики Алкоголя, не побоюсь этого слова с большой буквы 🙂

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

    А в их конфигурациях информация по алкореквизиитам и лицензиям у кого где хранится…..

    Что-то ничего не написано про DESADVALCO — он у вас не поддерживается?

    Я так понял у Вас все в одной системе и EDI и ЮЗД (юридически значимые документы) документы?

    Подписывается сразу все из обработки для ЮЗД документов или лезть на сайт?

    Обработка квитанций по счетам-фактурам, аннулирование, счета-фактуры исправительные, корректировочные?

    Все что отправляется через обработку видно и в WEB интерфейсе?

    Единый сайт для ЕДИ и ЭДО (ЮЭД) документов?

    Я бы пошел к вам, т.к. у других компаний которыми мы пользуемся интеграционные решения — жесть какие костыли, да в которых нам еще и ковыряться приходится….

    Я даже раза 3 писал Вашим продажникам запросы со списком сетей и документов — говорил, что если обеспечите обмен по всем — то мы рассмотрим более удобный для нас вариант централизации с более грамотным интеграционным решением.

    Но они игнорят такие письма — ответов нет, только рекламные звонки (и это не смотря на платежи от 70+ тыс. руб в месяц за трафик).

    Reply
  73. skif47

    (72) serg_info, DESADVALCO у нас называется ALCRPT. Есть еще вариант, когда прямо в DESADV сведения о лицензиях/производителях добавляются, это, наколько помню, от требований сетей зависит.

    Для алко есть конфигурации УТАП и КАТАП, и я пока еще ни разу не видел, чтоб клиенты пользовались им прямо так, как задумывали разработчики. Самописок еще больше, все верно.

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

    EDI и ЮЗДО — пока отдельные проекты. Но в EDI есть немного ЮЗДО: когда цепочка EDI сообщений доходит до INVOIC, из него автоматом генерируется ЭСФ (+ТОРГ12, если надо), и модуль EDI после этого выдает «а давай-ка теперь все это сертификатом подпишем». Ctrl+A, «Подписать», выбрать сертификат и подождать.

    ИСФ/КСФ где-то в начале года прикрутили, дальше была долгая тишина и отсутствие обратной связи. Недавно тема наконец начала набирать обороты, появились некоторые замечания/хотелки, обрабатываем. А так клиенты пользуются.

    Аннулирование ЭСФ: в самом модуле EDI не предусмотрено, возможно только посмотреть статусы по отправленным ЭСФ: какие подписаны, по каким сеть отказала/запросила аннулирование. Полный набор плюшек на эту тему — в Диадоке.

    Сайты Диадока и EDI — разные. Но туда можно попадать по одной учетной записи, если привязать ее к обоим сервисам. Собственно, и сервисы то разные изначально.

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

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

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

    Reply
  74. mvv_nv

    День добрый!

    Замечательная статья и хорошее решение.

    Есть у меня один вопрос по поводу данного продукта.

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

    Можете предложить какое-то решение в этом случае?

    Заранее спасибо за ответ.

    Reply
  75. skif47

    Добрый день!

    Благодарю за отзыв.

    Увы, в данном случае решения предложить не могу.

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

    Reply
  76. skif47

    Оказывается, я давно сюда не заходил.

    Коллеги, кто-то из вас спрашивал про Диадок, на что я отвечал, что это другая команда разработки.

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

    Поэтому, если будут вопросы/пожелания по этой теме, пишите.

    Reply
  77. mvv_nv

    (76) День добрый! Не получается написать в личку — не уходит сообщение. Переходим в облако. 1sfresh.com. Им писал — пока ответа нет. Самому писать с нуля — не быстро. Переходить к другому оператору — тоже не панацея. Тот же самый СБИС не использует дополнительных объектов, но есть другие моменты… В частности традиционное «бухгалтера привыкли». Так что — прошу совета. Думаю, мы не единственные и не уникальные. В облако люди будут переходить. Может как-то централизовано попытаться порешать? Хотя, это тоже, наверное, не быстро… С другой стороны это стратегически выгодно — будет конкурентное преимущество перед другими операторами EDI.

    Reply
  78. skif47

    (77) Согласен с вами, стратегически это выгодно.

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

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

    Третий вариант — пересматривать механизмы хранения данных в модуле. У нас довольно много зависимостей в коде от текущей подсистемы хранения данных. Теоретически мы можем переключиться на кое-что другое, но это довольно трудоемко и не быстро.

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

    Если будут какие-то новости, я напишу.

    Reply
  79. mvv_nv

    (78) Да уж. Ситуация патовая. Перейти на другого оператора мы не можем — одна из сетей работает _только_ через Контур и роуминговых соглашений с другими операторами нет.

    Фреш — вопрос политический и поменять это тоже проблематично если не сказать — не возможно.

    Видится одно решение, пусть и кривое, но реализуемое.

    В облаке у нас БП3.0

    Формируем АРМ, синхронизируем с облаком.

    Разворачиваем локальную БП3.0, в которую заводим только EDI.

    Между АРМ и базой с EDI настраиваем обмен — в сторону АРМа документы Реализация и Счет-Фактура, в сторону базы с EDI — НСИ.

    Ну и АРМ с облаком обменивается полностью.

    Криво, громоздко, но других вариантов навскидку я не вижу.

    Подскажите, если есть еще какой вариант…

    Reply
  80. skif47

    (79) Костыли с обменами, пожалуй, сработают.

    Есть еще такой вариант:

    http://www.scloud.ru/tariffs_arenda_1c/

    Это не fresh, это просто виртуалка с терминалом и 1С внутри. (но можно и снаружи через веб-клиента подключаться).

    Разумеется, там есть конфигуратор.

    Такое вам подойдет?

    Reply
  81. mvv_nv

    (80) Fresh — вопрос, скорее, политический. Попробуем костыли.

    Прикладная ортопедия на новогодние праздники — хорошая альтернатива бытовому алкоголизму. 🙂

    Reply
  82. skif47

    (81) тут не за горами «Расширение данных» в 8.3.11

    https://wonderland.v8.1c.ru/blog/rasshirenie-dannykh/

    Выглядит очень заманчиво

    Reply
  83. OpKc

    Доброго времени суток!

    Три года используем модуль Контур.EDI для 1С. Когда в 2014 году адаптировали его к нашей конфигурации (сильно переписанная УТ 10.1), пришлось помучиться с некоторыми моментами. С тех пор модуль не обновлялся, ибо «работает — не трогай», да и особой необходимости не было.

    В начале июня 2017 встала задача о переходе на электронные УПД, и оказалось, что для этого нужно обновить модуль. Когда я начал копаться в коде актуальной версии, то увидел, что за эти годы была проделана огромная работа. Адаптировать новую версию к нашей конфигурации стало намного проще благодаря таким, на мой взгляд, изящным решениям, как, например, вынесение имён метаданных и текстов запросов в макеты. Подключаемый модуль на данный момент очень и очень удобен. Порадовали некоторые «пасхалки» 🙂

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

    Спасибо за работу и за статью, так держать!

    Reply
  84. skif47

    (83) Добрый день! Спасибо за отзыв. Мы правда старались ))

    Reply
  85. savostin.alex

    Добрый день. Тоже являюсь «пользователем» модуля интеграции. И, когда появляется нужда открыть его в конфигураторе, мой мозг ломается от слова напрочь. Форма для хранения кода? Вэлкам. Форма-разделитель форм в списке — тут же. Читабельность — неа, это не про нас.Отладка? А зачем? Как вы это вообще разрабатываете?

    Reply
  86. zykov_vitaliy

    У нас в компании куплен модуль интеграции EDI (Обработка) версия 4.03.031.02. Обработка очень глючная, постоянные лаги, стандартную обработку к стандартной УТ 11 пытаемся внедрить уже несколько месяцев, только по моим заявкам в контур были исправлены некоторые глюки обработки. За все время общения с контуром складывается впечатление, что они на нас обкатывают обработку. Менеджеры отвечают не охотно, на рабочем месте их никогда нет. Ответ на письмо получаем спустя полдня в лучшем случае. Это очень неудобно, потому что мы находимся в другом часовом поясе и выходит что ответ на один вопрос мы ждем сутки. Вопросов много, линия техподдержки на некоторые важные вопросы не может них ответить. Пока что один негатив, нет такого, что поставил обработку и все заработало. Инструкция только общая, нюансы опущены.

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

    Резюмирую:

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

    Reply
  87. barbaroy

    (86) Я из команды 1С проекта Контур.EDI. Напишите в личку с чем возникли трудности. Если есть номера обращений в техподдержку, то это поможет быстрее разобраться.

    Reply
  88. zykov_vitaliy

    (87)Пытаюсь вам написать в личку, не получается, пишет «Сообщение не отправлено. Отложенная группа». Предлагаю вам написать мне, чтобы я мог вам ответить. Сегодня очередной раз столкнулся с глюком обработки, пытаясь отклонить заказ.

    Reply
  89. serg_info

    Я работал с разными провайдерами Корус, ЛераДата, Эдисофт, СБИС=Тензор и СКБ Контур EDI + ЭДО.

    Работал и «в алкоголе» (писал в 16 году) и работаю сейчас «не в алкоголе», производство.

    Из моего опыта — СКБ Контур лучшее из того что я видел по поддержке, скорости реакции и реализации интеграции для 1С.

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

    Работа с разными потоками документов и с сетями (Лента, Х5, + факторинг) и с поставщиками такими как Деловые линии.

    Я потихоньку свожу все к единому провайдеру и это СКБ Контур, когда в наследство достается зоопарк.

    Гибкость настроек и маршрутизации, изменение схем на лету (когда тебе нужно выслать например INVOIC без пришедшего RECADV) все это решается штатными средствами. Отправить повторно любой документ — все это штатно без «танцев с бубном»

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

    Удачи Вам разработчики.

    Я голосую за Вас рублем 🙂

    PS Это не реклама, это мое мнение и никакого отношения к СКБ Контур я не имею.

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

    Хотя схемы обменов и требования к форматам обмена самые разные были.

    Reply
  90. MainUser1C
    Однажды мы ввели “день багов”. Это один день в неделю, когда все, преодолев собственное сопротивление, откладывают в сторону все новые фичи и занимаются исключительно исправлением таких вот мелких ошибок. Сейчас их осталось 13, это самые редкие или неуловимые.

    Наверно это и отличает людей которые разрабатывают продукт на 1С или разработчиков виндовс от разработчиков Apple

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *