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

Публикация № 402490

Разработка - Практика программирования

Рефакторинг командная разработка GIT EDI интеграция Контур

“Система - больше, чем просто совокупность ее элементов”; “Несколько разработчиков - это еще не команда разработки”. Расскажу, как мы прочувствовали эти очевидные утверждения на своей шкуре.

Исходные данные

Вкратце о EDI: это передача документов между организациями в виде структурированных файлов.  Подробнее написано здесь. Активнее всего в России EDI используется при взаимодействии проводольственных сетей (Магнит, Ашан, ...) и их поставщиков. Они обмениваются заказами, подтверждениями, счетами и прочими рабочими сообщениями для поставки товаров. Вот этим всем мы и занимаемся.

Наша команда разрабатывает модуль интеграции EDI для 1С. По ссылке доступна демо-база со встроенным модулем. Также есть короткое видео о том, как оно все работает. За термином “модуль интеграции” скрывается обычная внешняя обработка.

Изначально обработка должна была выполнять 4 действия:

  1. По существующим в системе документам формировать сообщения (файлы определенного формата).

  2. Отправлять эти сообщения по каким-то каналам связи.

  3. Получать по этим же каналам новые сообщения.

  4. Из принятых сообщений создавать новые документы в 1С.

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


Проблемы предметной области

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

Чем же нас порадовал российский EDI?

  1. Покупатель может прислать заказ, а потом отменить его следующим сообщением.

  2. Поставщик в это время может уже успеть отправить машину с товаром.

  3. Покупатель может прислать один и тот же заказ 30 раз. Абсолютно одинаковый.

  4. Покупатель может прислать заказ с одним и тем же номером несколько раз с разными данными. В первом заказе 200 куриных тушек, во втором - 150. Сколько куриц убивать в итоге? А если 200 уже полегло, и тут прилетает заказ на 150?

  5. Уведомления о приемке товара очень часто НЕ СОДЕРЖАТ идентификатор отгрузки. Т.е. покупатель сообщает, что не досчитался 5 бутылок доброго виски при приемке машины, но не говорит, по какой накладной.

  6. Один покупатель может заказать 60 коробок вина по 20 бутылок в каждой. Другой может заказать 60 бутылок по 20 в коробке. При этом сообщения могут выглядеть одинаково. А у поставщика вообще учет в литрах. Хорошо, это не курицы, но сколько же вина привезти?

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

  8. Сообщений может быть ОЧЕНЬ много. По 300 заказов в день одному поставщику  от одной сети - не редкость. Обрабатывать их поштучно при таком объеме уже нереально. А теперь давайте добавим сюда предыдущий пункт с делением заказов.

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

  10. У покупателей постоянно меняются точки доставки и юр.лица. Например, торговая сеть X5 открывает/закрывает магазины несколько раз в неделю. Поставщик должен обладать актуальной информацией о том, куда везти товар. А модуль должен как-то предоставлять эти данные.

  11. Заполнить товары документа по сообщению очень просто? Получаем в сообщении код товара, находим по нему номенклатуру и закидываем в документ? Не торопитесь. Один и тот же товар покупателя (“Булочки в ассортименте”) может быть заведен у поставщика разными позициями (“Булочки с маком”, “Булочки с повидлом” и т.д.). Или наоборот.

И далее в том же духе.


Проблемы кода

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

За плечами у нас были франчи, ИТ-отделы компаний разных масштабов, фриланс. Каждый работал в одиночку, как это обычно и бывает с 1С-никами.

И понеслось.

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

Общее владение кодом падало.

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

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

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

Средства командной разработки от 1С нам не подошли. “Хранилище Конфигурации” решает другую задачу: оно в буквальном смысле хранит конфигурацию. И все. Ветвление и объединение веток, режим “blame” и возможность построчного комментирования кода отсутствуют. Да, в последних версиях 8.3 разработчики платформы дали возможность разложить конфигурации на исходники в виде текстовых файлов, которые уже можно хранить в современных системах контроля версий. И скомпилировать конфигурацию из этих исходников, разумеется. Нас эти возможности очень радуют, но воспользоваться мы ими не можем. Причина проста - нам приходится поддерживать версию для 8.2.

Итого, мы имели около 85 тысяч строк кода в 2 разных обработках, длинные запутанные методы, проблемы с объединением наработок. Тяжелее всего было объединять изменения двух разработчиков в рамках одной функции.


Как выживать?

Я не открою здесь Америку, многое давным-давно описано в учебниках ООП. Можно почитать  Фаулера. Если вы, как и я, не знаете Java, то пойдет эта статья. Но 1С8 - не совсем ООП, и мы долгое время писали по принципу “лишь бы работало” (и работало, конечно, до поры до времени).

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


Технические решения

  1. Рефакторинг - наше всё

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

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

Например, встречаются такие нагромождения:

"Если ...

<170 строк чего-то>

ИначеЕсли...

<250 строк чего-то>

…(в том же духе)

КонецЕсли" (несколько экранов спустя).

И где-то там еще есть вложенные “Если”. Эти конструкции работают ровно до тех пор, пока в них не придется что-либо поменять (например, исправить ошибку, которая там наверняка встретится). Три-четыре уровня вложенности "Если" попахивают неприятностями. Пять-шесть уровней практически гарантируют баги. Больше всего времени при исправлении ошибок нами было убито именно на то, чтобы понять, да как же, черт возьми, попасть в эту ветку. Начали раскладывать такие нагромождения в линейные конструкции вроде

Если ДальшеДелатьНечего Тогда

Возврат

КонецЕсли;

И жить стало легче.

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

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

  1. Чем меньше кода, тем лучше

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

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

  • Забросили развитие модуля для УФ, в который до этого вложили кучу сил, и стали вписывать управляемые формы в модуль для ОФ, сэкономив десятки тысяч строк кода.
  • Прекратили поддержку хранения данных в типовых объектах системы (справочник “Хранилище дополнительной информации” + регистр сведений “Значения свойств объектов” на конфигурациях вроде УТ). Сейчас все данные модуля (сообщения, настройки,...) хранятся непосредственно в текущей базе данных - для этого в базу добавляется 3 справочника и 3 регистра сведений. Альтернативой “Типовым объектам” стало хранение данных модуля “снаружи” текущей БД. Т.е. модуль разворачивает вспомогательную базу с почти такой же конфигурацией, и работает с ней через COM-соединение. За счет близкой структуры данных мы здорово сэкономили на коде и текстах запросов.
  • Написали с нуля новый интерфейс главного окна (и шесть раз переписали движок почти полностью). В последнем варианте удалось сделать построение списков документов максимально гибким, скоростным и универсальным. При этом кода стало меньше.

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

Полтора года назад у нас было 2 обработки и 85 000 строк кода в сумме. Сейчас одна обработка и 70 000 строк кода. Разумеется, эти полтора года мы не только уничтожали код, но и писали много нового.

  1. Декомпозиция методов

Это тоже часть рефакторинга, но о ней я расскажу чуть подробнее.

Чем меньше разных действий выполняет метод, тем он читабельнее. Например, если в одной процедуре/функции встречается чтение файла с FTP и заполнение какого-либо документа, логичнее разбить его на два разных метода. Методу, который парсит XML, незачем знать, как устроена текущая конфигурация. Еще есть управляемые формы, где интерактивные действия недоступны на сервере.

Это аналог старых добрых классов в ООП и немного закос под mvc.

Мы стали делить длинные портянки кода на логические блоки, и средний размер одного метода упал с 40 до 30 строк кода. Стало гораздо проще объединять код разных веток перед релизом. Вероятность конфликтов свелась к минимуму, а их разрешение упростилось в разы.

Да, у нас еще остаются портянки строк на 300. Придет время - и их по возможности раскидаем.

  1. Автоматизированное тестирование

Мы внедрили 2 системы тестов: сценарные тесты и юнит-тесты на основе xUnitFor1c. Каждый коммит в системе контроля версий подхватывается скриптом и автоматически отправляется на тестирование в нескольких типовых конфигурациях 1С. Релиз не выпускаем до тех пор, пока все тесты не позеленеют, и пока тестировщики не скажут "ок", разумеется. (Да, у нас есть тестировщики, нет, они не программисты).

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

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

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

  1. Система контроля версий

Изначально использовали SVN с клиентом от Tortoise. Использовали его для блокировки предрелизной версии в момент заливки изменений и для хранения истории коммитов и релизов.

Затем на коленке собрали собственную систему контроля версий на 1С. Выглядит примерно так:

Король версий.png

Автотесты интегрированы с этой системой и зеленеют/краснеют прямо на коммитах. Столбец с зелеными кружками и заголовком “U” - юнит-тесты. Столбец правее с заголовком “F” - интеграционные тесты.

Иногда встречаются такие цепочки коммитов:


Сюда же встроен V8Reader с возможностью сравнить 2 произвольных коммита без открытия конфигуратора. Получается очень удобно.

Здесь же автоматизированы действия при выпуске релиза: формирование RSS, закрытие задач в трекере, расчет контрольной суммы файла и т.д.

Почитав статьи про современные системы контроля версий (раз, два), захотели перейти на связку Git+Precommit1c с компиляцией обработки из исходников. Увы, в платформе 8.x есть не очевидная особенность: при сохранении файла внешней обработки некоторые формы (не управляемые) хаотично перекодируются, выдавая совершенно другой файл, даже если вы просто пробел в коде добавили. Мы пытались как-то обмануть платформу, чтобы можно было объединять изменения разных веток и компилировать исходники обратно во внешнюю обработку. В конце концов пришлось смириться с реальностью и оставить эти попытки. Однако используем Git+Precommit1c для “ленивого” Code Review: каждый участник команды получает уведомления о новых коммитах и может оставить комментарии к любой строке изменившегося кода. В precommit1c внесли изменения:

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

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

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

Кто не знает, режим Blame в Git отвечает на вопрос:

Кто это накодил.jpg

Но делает это более корректно:

blame.png

  1. Работа в нестандартных конфигурациях

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

Изначально модуль 8.х разрабатывался на УТ 10.3. Весь код был пронизан конструкциями вида Заказ = Реализация.Сделка, например.

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

Был период, когда мы целенаправленно брали вне очереди задачи на настройку модуля в самописных конфигурациях и смотрели, в какие участки кода приходится вносить правки. Начинали с простого: с замены конструкций “Заказ = Реализация.Сделка” на функции-обертки: “Заказ = ПолучитьЗаказ (Реализация)”. В итоге получился довольно мощный инструмент, основная идея которого, надеюсь, будет понятна. Большую часть описания конфигураций удалось оформить декларативно (макеты, тексты запросов, без кода).

Получилось примерно так:

Шаблоны запросов.png

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


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

Эти вещи позволили нам легко выполнять 90% работы по кастомизации обработки.

После этого провели боевой тест на полностью самописной конфигурации, вот фрагмент метаданных для наглядности :

Снимок.PNG

Модуль взлетел быстро, большую часть изменений удалось вынести “сбоку”, что дает возможность с минимальной болью обновляться в будущем.

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

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

Организационные решения

  1. Code Review

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

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

Пример “ленивого” Code Review:

git - holywar.png

  1. “Митинги” (Daily Scrum meeting)

Это  часть технологии “SCRUM”. Каждый день в 15:45 встаем возле доски и двигаем листочки с задачами, рассказывая друг другу, что сделали и что собираемся делать. Это здорово помогает быть в курсе того, куда вообще двигается продукт, и заодно позволяет избегать проблем с объединением кода.

  1. Циклы разработки

Изначально мы выпускали релизы по такой схеме:

  • Добавили новую фичу

  • Отправили в продакшн.

Сейчас действуем так:

  • Набираем задач на ближайшую неделю
  • Разрабатываем и тестируем в своих ветках
  • Проводим Code Review всех крупных изменений
  • Сливаем в предрелизную ветку, она же версия для тестирования
  • Тестировщики говорят свое "фи", исправляем баги
  • Когда тестировщики говорят "ок", готовим описание релиза для rss, выпускаем релиз (обычно это 2-3 недели от начала итерации, бывает и больше).
  • Критичные баги в случае их появления лечим в промежуточных релизах, дублируя фикс в предрелизную ветку.

Получается около 3-4 недель на итерацию. Если перед релизом есть ощущение, что что-то не так, значит, что-то действительно не так. Откладываем релиз и ищем причины неприятных ощущений, интуиция иногда спасает.

  1. Работа с багами.

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

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

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

  1. Подбор задач из очереди

Были времена, когда мы лихорадочно пытались закрыть как можно больше задач за минимальное время — сказывался опыт работы во франчах и ИТ отделах компаний.

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

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

  1. Делаю, что попросили.

  2. Получаю оплату.

  3. Клиент просит "сделать обратно". Делаю.

  4. Получаю оплату.

Так вот, в тиражном продукте такой способ не подходит. Поток входящих задач всегда гораздо больше, чем способна переварить разработка. Со временем очередь задач выросла настолько, что нам пришлось привыкнуть к мысли: многие из этих хотелок мы будем делать только тогда, когда более важные закончатся. То есть никогда. Совсем. Было очень грустно это понимать, поскольку за каждой задачей обычно стоит какой-то клиент, которому без нее, возможно, будет плохо. Такова обратная сторона “массовости” продукта.

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

  • Потенциальная польза от выполнения задачи.

  • Соответствие ее общей стратегии развития.

  • Целесообразность выполнения ее именно в эту итерацию (например, задача требует предварительного рефакторинга, который запланирован в следующую итерацию).

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

Это дало интересный эффект: некоторые задачи мы стали выполнять еще до того, как они к нам поступали от отдела внедрения или от клиентов. Забавно на вопрос “ребята, нужна такая-то возможность, ее долго делать?” отвечать “мы 15 минут назад ее в релиз включили, скачивай”.


Что сейчас?

Не скажу, что год-два назад мы прямо ощущали какой-то большой дискомфорт. Нет, мы занимались разработкой в привычном для 1С-ника режиме (ну, вы понимаете, в каком именно). Более того, казалось, что по-другому и не бывает. Это как с курением: пока куришь, не понимаешь что что-то не так. Понимаешь только тогда, когда уже бросил.

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


Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. pavlov_dv 17.11.15 06:23 Сейчас в теме
Достаточно интересная статейка получилась!

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

Кстати, настолько плавно и органично в статье осуществлен переход от темы "EDI" к теме про "командную работу" - читабельность поразительная! :-)

Спасибо!
Andy_NTG; dronprog; Lacoste4life; Antonov.AV; Numme; kstukov; kiros; dj_serega; kuzyara; pt_olga; +10 Ответить
16. skif47 323 17.11.15 12:23 Сейчас в теме
(1) pavlov_dv, спасибо, статью тоже рефакторили )

У вас EDI в какой отрасли? Продуктовый ритейл или что-то другое?
21. pavlov_dv 18.11.15 08:58 Сейчас в теме
(16) торговля электронными компонентами, автоматикой, КИП и т.д.

Используем EDIFACT... Хотя слово "используем" -это за уши притянуто :-)
Кастомизация практически под каждого конкретного поставщика. От стандарта остается только заголовок :-)

Зато зарубежные (особенно стоки) с удовольствием соглашаются, но с ними тяжеловато работать - этапов тестирования не будет :-) Тренируемся на кошках на маленьких посылках.
Отечественные же при слове "Едиай" смотрят мутными глазами, переспрашивают "А шо это?" и отказываются: "Ышшо деды работали безо всяких буржуйских извращений, и мы не будем".
2. artbear 1180 17.11.15 09:46 Сейчас в теме
Интересная статья, спасибо!

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

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

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

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

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

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

И по V8Reader можно ли также получить pull-request?
aduyunov_2015; kuntashov; Evil Beaver; +3 Ответить
3. skif47 323 17.11.15 09:58 Сейчас в теме
(2) artbear, Pull request на самом деле уже есть, мы списывались несколько месяцев назад:
https://github.com/xDrivenDevelopment/v8Reader/pull/30
Но ту идею я в конце концов забросил.
Сам V8Reader мы почти не меняли, только убрали в каком-то месте переименование макетов и добавили вызов нашего обработчика, который проводит дальнейшее разбиение разобранного модуля. Лежит здесь: https://github.com/volodkindv/v8Reader/tree/develop (скорее всего, устарело, давно не обновлял). Могу отправить на почту то и другое.
И спасибо за эти разработки, нам очень помогло!
4. artbear 1180 17.11.15 10:02 Сейчас в теме
(3) Было бы удобно получить последние версии с описанием доработок.
Можно и на почту.
Жду
спасибо за эти разработки

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

Предлагай свое, я вижу, что также интересные вещи делаете.
5. PrinzOfMunchen 75 17.11.15 10:03 Сейчас в теме
Приходилось часто работать с этой штукой...Столько приходилось дописывать/переписывать, столько там "хорошего" кода, с кучей комментариев разных разработчиков, которые из одних косяков делают другие...Но в целом продукт годный и крайне полезный. Надеюсь избавитесь от мелких недочетов, если уже не избавились. ))
6. Evil Beaver 6705 17.11.15 10:18 Сейчас в теме
(5) PrinzOfMunchen, речь про xUnit, если я правильно понял? Есть статья про эволюцию этого инструмента, поясняющая почему там такой код и версия 4.0, в которой legacy-код из прототипа был удален.

Ну и сами же пишете:
в целом продукт годный и крайне полезный

А внутри может быть и страшно, но это называется инкапсуляция :)
7. PrinzOfMunchen 75 17.11.15 10:47 Сейчас в теме
(6) Evil Beaver, нет, я про модуль интеграции EDI<->1С. Там внутри был ад перфекциониста, по крайней мере раньше. Как с текущими версиями дела обстоят, к сожалению не знаю. )
В целом-то продукт хороший, но когда надо заглядывать внутрь...
8. bolshakov_2015 17.11.15 11:02 Сейчас в теме
(7) PrinzOfMunchen, а как давно заглядывали?
10. PrinzOfMunchen 75 17.11.15 11:10 Сейчас в теме
(8) bolshakov_2015, довольно таки давно, если честно. Где-то с полгода назад.
27. sea123 13 18.11.15 13:25 Сейчас в теме
(8) bolshakov_2015, заглядывали буквально только что
комментарии в стиле
Если Стр.СуммаНДС=0 Тогда //самый важный блок вроде бы
Если Стр.СуммаБезНДС<>0 Тогда
Стр.СуммаНДС=Окр(Стр.СуммаБезНДС*КоэффНДС,2);
ИначеЕсли Стр.СуммаСНДС<>0 Тогда
Стр.СуммаНДС=Окр(Стр.СуммаСНДС*КоэффНДС/(1+КоэффНДС),2);
ИначеЕсли Стр.ЦенаСНДС<>0 Тогда
Стр.СуммаНДС=Окр(Окр(Стр.ЦенаСНДС*Стр.Количество,2)*КоэффНДС/(1+КоэффНДС),2);//адовы округления детектед
ИначеЕсли Стр.ЦенаБезНДС<>0 Тогда
Стр.СуммаНДС=Окр(Окр(Стр.ЦенаБезНДС*Стр.Количество,2)*КоэффНДС,2);//адовы округления детектед
КонецЕсли;
КонецЕсли;

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

31. skif47 323 18.11.15 14:28 Сейчас в теме
(27) sea123, раз уж вы добрались до этого кода, то вы прочитали также и комментарий в начале метода, где этот код расположен.
Изначально я описывал этот случай в разделе "Проблемы предметной области", но потом решил, что как-то много получается.
В общем случае сеть может "забыть" указать любые поля в сообщении, в любой комбинации. В сообщении есть 6 числовых полей: цена с/без НДС, сумма с/без НДС, сумма НДС, ставка НДС. Теперь вычеркните любые из них в случайном порядке и попробуйте придумать алгоритм, который рассчитает недостающие.
Мы пытаемся их рассчитать за торговую сеть хоть как-то. Мне пока известен только один случай, когда этот алгоритм кому-то не подходил. Там, насколько я помню, мы сделали небольшой чит и использовали событие подключаемого модуля "ПринятьВходящееСообщение" не совсем по назначению, зато сработало на ура.
Конкретно по вашему случаю мне хотелось бы больше деталей. Вы можете обратиться к вашему внедренцу или на техподдержку, чтобы они зарегистрировали этот инцидент. Он рано или поздно попадет к нам. Или можете отправить мне в ЛС ссылку на подобное сообщение в мониторинге и скриншоты загруженного документа - как загрузил модуль и как должно быть. Постараемся смоделировать это у себя, если это действительно общий случай, то включим в коробку. Если он возникает только у вас, попробуем решить подключаемым модулем.
36. sea123 13 18.11.15 15:19 Сейчас в теме
(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
Все, приехали, сумма НДС не совпала
CratosX; k268kk; D-masterrr; sevushka; +4 Ответить
38. skif47 323 18.11.15 22:38 Сейчас в теме
(36) sea123, все не так однозначно. Ставка НДС далеко не всегда выбирается из карточки номенклатуры. У кого-то она вообще не заполнена в справочнике. У кого-то есть ИП на УСН и рядом же ООО на ОСНО. Порядок расчета цен у каждой сети свой и иногда даже прописывается в договоре поставки. Одни считают суммы от цен, другие - цены от суммы, кто-то включает НДС в сумму, кто-то нет.
По вашему примеру - кусок XML файла мне было бы удобнее проанализировать. В любом случае, на нашем трекере сегодня появился тикет с таким же содержанием, и, видимо, это как раз ваш. Так что будем с вами связываться.
32. skif47 323 18.11.15 14:29 Сейчас в теме
(27) sea123, этому коду, кстати, года полтора примерно.
11. skif47 323 17.11.15 11:22 Сейчас в теме
(5) PrinzOfMunchen, Да, у нас там в комментариях иногда шекспировские страсти разыгрываются ))
Избавляемся постепенно.
Интересно было бы узнать подробнее, что вам приходилось переписывать/исправлять. Возможно, что-нибудь в коробку возьмем. Ну и если есть какие-то баги, о которых мы еще не знаем, то тоже будем работать. Если скинете вашу версию модуля, проанализируем.
13. PrinzOfMunchen 75 17.11.15 12:00 Сейчас в теме
(11) как у многих ))
То что избавляетесь, крайне радует. Судя по статье идеал не за горами. )))
Переписывал пока во франче работал, для разных конфигураций под разные нужды. Где-то адреса доставки некорректно заполнялись, где-то с единицами мест беды были при пересчете, сейчас все не упомню. Попробую поискать дописки. Не из багов, дописывал параметризацию проставления некоторых реквизитов, например складов. Что бы для каждого контрагента свои склады проставлялись.
9. pumbaE 634 17.11.15 11:10 Сейчас в теме
(0) тесты прогоняете на всех версиях различных видов конфигурации? Отдельные виртуалочки для 8.3, 8.2 ? На скольких версиях 1с запускаете тесты?
12. skif47 323 17.11.15 11:34 Сейчас в теме
(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 не трогаем. Это все в планах.
14. maleshov.maxim 76 17.11.15 12:08 Сейчас в теме
Можно узнать поподробнее про собственный инструмент контроля версий на 1С?
hohaspb; aduyunov_2015; +2 Ответить
15. pumbaE 634 17.11.15 12:11 Сейчас в теме
(14) maleshov.maxim, это больше не инструмент контроля версий, а инструмент для запуска тестов, т.к. в дальнейшем скрины показаны стандартного gitlab.
17. skif47 323 17.11.15 14:00 Сейчас в теме
(14) maleshov.maxim, (15) pumbaE, это смесь СКВ и автотестов. Отдельная база на 1С, которая хранит все "дерево разработки" и версии модулей.
Основной сценарий такой: разработчик хочет внести изменения в модуль. Для этого он создает отдельную ветку. На его машине в определенной папке появляется файл с обработкой, которую он может править. Время от времени он "коммитит" - файл обработки сохраняется в базе и становится виден всем, при этом запускаются автоматические тесты. После окончания работ он блокирует предрелизную ветку. На его машине появляется второй файл с предрелизной версией модуля. Затем он вручную переносит свои изменения и сливает ветки. В git публикуются его изменения, снова запускаются автотесты, на машинах тестировщиков автоматически обновляется модуль для тестирования. В нее же встроена автоматизация выпуска релиза: обновление архива модулей, расчет контрольной суммы файла, обновление RSS и прочее.
В эту же базу ради интереса встроили интеграцию с YouTrack, чтобы работать с задачами в одном месте и привязывать их к коммитам.
Git и его веб-интерфейс Gitlab используем для Code Review, там очень удобно комментировать. Храним там только тексты модулей.
18. lustin 17.11.15 23:00 Сейчас в теме
(0) один вопрос меня волнует - кто этот волшебный маг семерочник ;-). Можете озвучить никнейм - чувствую я, что никнейм будет известным.
22. skif47 323 18.11.15 09:48 Сейчас в теме
(18) lustin, (19) lustin, Матвей Новоселов, он сказал, что вряд ли его кто знает )
52. artbear 1180 19.11.15 13:45 Сейчас в теме
(22)
Матвей Новоселов, он сказал, что вряд ли его кто знает )

Спасибо!
а какой ник он использует?
54. nma 19.11.15 15:03 Сейчас в теме
(52) artbear, Здесь я под этим ником.
57. nma 20.11.15 05:46 Сейчас в теме
(56) lustin, Там я не зарегистрирован.
19. lustin 17.11.15 23:05 Сейчас в теме
(0) (18) имеется ввиду вот эта цитата

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


очень хочется узнать обладателя черного пояса ;-).
Evil Beaver; artbear; +2 Ответить
20. Red_Devil 159 18.11.15 08:04 Сейчас в теме
Пользуюсь вашей обработкой, молодцы! За подключаемый модуль отдельный +
23. skif47 323 18.11.15 09:57 Сейчас в теме
(20) Red_Devil, Спасибо, приятно слышать.
24. qazaz2 12 18.11.15 11:24 Сейчас в теме
Спасибо автору, интересно и даже как-то мотивирует на хорошую работу)
25. vakham 13 18.11.15 12:03 Сейчас в теме
Притча.
Лет десять назад настроили с магазинами электронные заявки. Быстро, дёшево и сердито.
Спустя годы появились EDI-провайдеры с откровенно глючным сырьём и невменяемыми ценами за воздух. Посему все "выгодные мля буду" идеи были посланы в топку.
И вдруг... Буквально пару лет назад все крупные сети как с цепи сорвались. В ультимативном порядке сети потребовали всех подключить к своему EDI-провайдеру, которые разгубастились трясти деньги за каждый чих. Ниточка потянулась в Вашингтон. Погуглив "ху из ху", а так же "кто такие", "чё такие борзые", "с какого району", выяснилось, что по крайней мере один из "независимых" EDI-провайдеров был очень даже зависим от сети, которая требовала заявок через этот провайдер.
Итого: крупные торговые сети не только навели порядок со своими поставщиками и клиентами (что само по себе не плохо), но и хорошо нагрели руки, продавая воздух. Суки. Из-за них сломали что итак отлично работало, так ещё и деньги платим хер знает за что.
VladC#; texosn; darkmessiahan; CratosX; raider-rec@ya.ru; D-masterrr; terkin; vawd; sevushka; +9 Ответить
41. sevushka 279 19.11.15 08:37 Сейчас в теме
Спасибо за статью, читать было интересно. Увидел некоторые не очевидные для меня (как для пользователя вашей системы) моменты, даже немного "посочувствовал" программистам.
Хотелось бы уточнить некоторые нюансы (не все по данной статье). 4.03.004.03, сильно переделанная УТ на УФ.

1. При небольшом количестве заявок - с системой работать можно. Когда сетей становится несколько, и число заявок за день от одной сети измеряется сотнями - Контур.EDI это очень медленная и неудобная система. В (25) правильно написали, что до ЕДИ все отлично работало, было вылизано и работало годами. Когда мои пользователи в первый раз увидели Контур.EDI, то единственное впечатление которое было "как же это все безумно медленно работает, давай вернемся к тому, что было". И эта точка зрения не изменилась за последние полгода, в обработку стараются заходить как можно реже (хотя надо признать, что тормозов стало меньше). Скажите, а переделку логики работы для большого количества заказов вообще планируют? Выделение цветом измененных и отмененных заявок? Информирование работников о том, что при автообмене что-то не сработало и не провелось? Информация о том, что текущая версия документа не совпадает с той, что была отправлена заказчику? Какие-то механизмы информирования заказчика, что "извините, но заявки данному поставщику должны быть сделаны до 20:00, и ваша заявка или не будет принята, или перенесется на следующий день" и т.п.
Я понимаю, что это часть из этого можно сделать (и делается) в подключаемом модуле, но... Каков вектор развития системы, к чему вы движетесь?
2. От ваших конкурентов (название не принципиально, но в силу некоторых причин пользуемся и ими) время от времени приходят письма, что "в нашей программе добавились новые фичи, текущий номер релиза хххх, скачать можете по прямой ссылке". Когда-нибудь у Контура это планируется?
3. Хочется получить рид-онли доступ на вашу вики (или что там у вас используется). Далеко не всегда очевидно, в какой момент какими функциями подключаемого модуля надо пользоваться. От внедренцев этого не добиться, помогает только отладчик. Ну или хотя бы что-то типа best practices.
4. Нахожу некие мелкие баги в программе. Пишу внедренцам. Получаю: "спасибо, Ваша информация передана разработчикам". Все. То, что некоторые из этих багов исправили, я узнаю только через несколько релизов, когда мне присылают новую версию. Хотелось бы обратную связь (пусть и не через внедренцев, а что-то типа otrs или любой другой тикет-системы), что ваш баг исправлен в релизе ххх, скачивайте и пользуйтесь на здоровье.
4а. Хочется видеть хотя бы примерный список работы на квартал. Т.е. - что именно планируют разработчики выпустить в ближайшее время. Если моя задача входит в этот список - я могу и подождать, если нет - я четко понимаю, что быстрее ее реализовать самостоятельно.
Раз уж у вас все так технологично сделано внутри - ну сделайте что-то полезное для сторонних программистов, которые внедряют ваши системы, тот же форум и вики, хотя бы.

И еще. Спасибо вашим внедренцам, отвечают быстро и по теме. Спасибо тому, кто реализовал подключаемый модуль, с ним реально удобно. Спасибо вашим продажникам (или не знаю кому), что у вас есть нормальные тарифы.
kstukov; zumik3; skif47; +3 Ответить
42. skif47 323 19.11.15 09:26 Сейчас в теме
(41) sevushka, спасибо за подробный комментарий. Я надеялся как раз вот такую развернутую обратную связь получить.
Буду отвечать постепенно.

1. Логика работы с большим количеством заказов в интерфейсе была заложена изначально: Ctrl+A, "Выполнить действия". Большую часть действий рекомендуем выполнять именно в таком ключе, т.е. не заходя в каждый документ по отдельности.
Измененные заявки отражаются в статусе "Обработать новую версию", вам это разве не подходит? Если нет, то почему, как бы вы хотели это видеть?
Информирование работников о том, что при автообмене что-то не сработало и не провелось?
: что именно не сработало?
Не срабатывать могут в большинстве случаев 2 вещи:
1) Перебои со связью, например. В этом случае вы, разумеется, не увидите новых заказов. Как бы вы хотели видеть сообщения об этом? Автообмен у вас выполняется регламентным заданием? Если да, то какого пользователя информировать?
2) Не провелись автоматически некоторые заказы. Например, нет остатков, не заполнены какие-то поля, не заданы соответствия для новых товаров.
Все это вы увидите в основном интерфейсе. Мы стараемся показывать пользователю именно то, что ему надо сделать в текущий момент времени. Непроведенные заказы - да, показываем. Непринятые сообщения (нет соответствий, например) - да, показываем. Пока не понимаю, чего именно вам не хватает, напишите, пожалуйста, в ЛС поподробнее.

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

Какие-то механизмы информирования заказчика, что "извините, но заявки данному поставщику должны быть сделаны до 20:00, и ваша заявка или не будет принята, или перенесется на следующий день" и т.п.

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

Каков вектор развития системы, к чему вы движетесь?
О, векторов много. Например, сейчас мы продумываем автоматическое сопоставление товаров между поставщиком и торговой сетью. Заканчиваем объединение логики работы обычных и управляемых форм. Подумываем сделать третий вариант хранения данных - SQLite, чтобы можно было ставить его и поставщикам на базовых поставках 1С. Перевод работы с сообщениями на XDTO. Визуальный маппинг полей EDI<->1C для сильно кастомных конфигураций. И много других. Вам что было бы интересно? (можете предложить свои варианты).

Ну и насчет медленной работы. Более 90% случаев медленной работы модуля связаны с обновлением списка задач пользователя. Посмотрите по замерам время выполнения метода "ПостроитьСписокЗадач_Сервер". Вы говорите, что у вас сильно кастомная конфигурация. Проверьте, индексируются ли у в ней поля связи между документами (Заказ и Реализация, Реализация и СФ). Попробуйте добавить индексы на поля "Контрагент" в этих документах. В большинстве случаев это дает дикий прирост скорости работы.
Да, и проверьте интервал отбора в интерфейсе. Понятно, что список сообщений/документов за полгода будет строиться дольше, чем за неделю.

Если это не поможет, пишите в ЛС, будем думать дальше.
51. bolshakov_2015 19.11.15 12:09 Сейчас в теме
(42) (41) sevushka,
Проблема УФ в том, что перестроение списка задач действительно затратная штука. Нам надо ходить за результатами анализа сделок на сервер, т.к. оперативные изменения происходят там. При этом на сервере мы толком ничего не можем закэшировать - это все протухнет сразу как только мы уйдем оттуда (это модуль внешней обработки все-же, можно пытаться кэш как-то сохранять, мы думали над этим, но оказалось что он постоянно норовит испортиться + часто обновить кэш ненамного дольше чем достать его откуда-то ). Выливается это в действительно неприятное подлагивание у пользователя даже на не очень больших периодах анализа задач.
Мы над этим подумали и уже зарелизили крутую штуку: мы не будем обновлять весь список при воздействии только на 1 строку - мы её "зачеркиваем" - вот прямо берем и перечеркиваем пользователю, а список задач заново не обновляем. Его можно обновить 1 раз после обработки всех задач. Кажется что это как раз то, что Вам нужно! Механизм появился в окончательном виде с релиза 4.03.004.01.
Мы даже подумали что можно засекать время обновления и если оно слишком велико - сразу пользователю предлагать попробовать новый режим. Так и сделали. Таймер там сейчас стоит на 10 секунд, но видимо это много, верное значение должно быть в районе 2 сек.
В любом случае, вы можете зайти в настройки и воткнуть этот флажок самостоятельно. называется он "Обновлять данные в списке документов полностью".

С этой штукой даже у клиентов с очень большим количеством заказов (500+ в день) удалось достичь вполне приятного быстродействия.
58. sevushka 279 20.11.15 05:51 Сейчас в теме
(42) отвечаю в ЛС, здесь это вряд ли интересно, оффтопик же.
43. skif47 323 19.11.15 09:42 Сейчас в теме
(41) sevushka,
2. От ваших конкурентов (название не принципиально, но в силу некоторых причин пользуемся и ими) время от времени приходят письма, что "в нашей программе добавились новые фичи, текущий номер релиза хххх, скачать можете по прямой ссылке". Когда-нибудь у Контура это планируется?


В интерфейсе для обычных форм в меню ("шестеренка") есть пункт "Новое в релизе". Туда можно иногда посматривать, важную информацию выкладываем там.
На УФ это еще не перетягивали, было полно других задач. Со временем и туда прикрутим.
Можем приделать RSS, вам это насколько удобно будет?
44. skif47 323 19.11.15 09:54 Сейчас в теме
(41) sevushka,

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


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

Насчет подключаемого модуля. У нас когда-то были развернутые инструкции, примеры, как его писать и какими событиями пользоваться. Они уже безнадежно устарели. Мы пошли другим путем: в сам шаблон ПМ выкладываем примеры обработчиков событий, их можно раскомментировать и настроить под себя. Там есть примеры для большей части событий.
Там же есть простенькая возможность трассировки событий, посмотрите по коду, где-то в самом начале.
45. skif47 323 19.11.15 10:07 Сейчас в теме
(41) sevushka,

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


В 4.03.004 мы добавляли прямо на интерфейсе ссылку "Отправить отзыв", вверху посередине. Письмо уходит в ящик, который мы периодически мониторим. Правда, пока почти никто не пишет.
OTRS добавит нам вторую точку входа инцидентов. Это будет уже довольно тяжело обрабатывать. Сейчас инциденты регистрируются через внедренцев и техподдержку, они многие вещи решают сами, что сильно разгружает нас для продуктовой разработки. Тут такое противоречие: если мы будем напрямую работать со всеми конечными пользователями, то коробка перестанет развиваться. А если совсем не будем контактировать, то коробка будет развиваться совсем не туда )) Мы пытаемся балансировать посередине.
Давайте пока что остановимся на ссылке "Отправить отзыв". Я не обещаю, что у нас будут ресурсы для того, чтобы отвечать всем и сразу. Но мы будем стараться. Насчет OTRS пока планов нет, возможно, организуем в будущем.
46. skif47 323 19.11.15 10:15 Сейчас в теме
(41) sevushka,

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


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

Но вы запросто можете спрашивать у внедренцев по конкретным задачам, которые хотели бы видеть. Они обычно в курсе, если что, уточнят у нас.
47. skif47 323 19.11.15 10:16 Сейчас в теме
(41) sevushka,

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


Обязательно всем передам, спасибо за позитив!
68. zumik3 15.01.16 09:43 Сейчас в теме
(41) sevushka,
полностью согласен с 1 пунктом.

У нас ~600 заказов в день только от 1 сети. Обрабатывать их этой обработкой просто невозможно.
Решение: выпилил куски общего модуля, где идет обмен через API. Спокойно забираю заказы, сам распознаю, сам пишу в базу. также с DESADV'ами и RECADV'ами.
Работает быстро.
70. skif47 323 15.01.16 13:46 Сейчас в теме
(68) zumik3, в (41) с sevushka вопрос порешали. У нас есть клиенты с таким количеством заявок - и работают нормально. Есть торговые сети, у которых документов еще больше.
Хотелось бы подробностей от вас: в чем заключается невозможность? Скорость работы, недостаточно данных в интерфейсе, еще что-то?
Контакты есть в моем профиле, пишите, отвечу.
26. Ibrogim 1144 18.11.15 13:15 Сейчас в теме
(0) Статья Супер.
Очень интересует это
Данные запросы разбираются на части и собираются заново в нужном виде. И не говорите, что СКД для этого не предназначена. Знаю, согласен.

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

Был бы признателен примерам этих собираний разбираний
29. skif47 323 18.11.15 13:51 Сейчас в теме
(26) Ibrogim,
Если вкратце, то за основу связей между документами и типами сообщений мы берем запрос такого вида:
ВЫБРАТЬ
	докЗаказПокупателя.Ссылка КАК PORDERS,
	докЗаказПокупателя.Ссылка КАК ORDERS,
	докЗаказПокупателя.Ссылка КАК ORDRSP,
	докРеализацияТоваровУслуг.Ссылка КАК DESADV,
	докРеализацияТоваровУслуг.Ссылка КАК RECADV,
	СчетФактураВыданныйДокументыОснования.Ссылка КАК INVOIC
ИЗ
	(ВЫБРАТЬ
		1 КАК Поле1) КАК Заглушка
		{ПОЛНОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
			{ПОЛНОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК докРеализацияТоваровУслуг
				{ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК докЗаказПокупателя
				ПО докРеализацияТоваровУслуг.Сделка = докЗаказПокупателя.Ссылка}
			ПО СчетФактураВыданныйДокументыОснования.ДокументОснование = докРеализацияТоваровУслуг.Ссылка}
		ПО (ИСТИНА)}
Показать

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

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

Это довольно долго рассказывать, проще будет в коде глянуть, вверху есть ссылка на демо-базу с модулем.
30. Ibrogim 1144 18.11.15 14:04 Сейчас в теме
(29)
вверху есть ссылка на демо-базу с модулем.

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

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

Я подобную штуку использую и в своих разработках.
34. skif47 323 18.11.15 14:37 Сейчас в теме
(30) Ibrogim, будет интересно посмотреть, что у вас в конечном итоге получится и какие сложности возникали. Возможно, что-то возьмем в коробку, облегчим обновление модуля вам и тем, у кого подобные кастомы.
35. bolshakov_2015 18.11.15 14:54 Сейчас в теме
(30) Ibrogim, УТ 11 - как много в этом звуке
Вот только их 3 разных версии и изменения (11.0-11.1-11.2)там отнюдь не косметические. И даже в пределах 11.0 реквизиты того же заказа от релиза к релизу волшебным образом исчезали и появлялись вновь. ))
Доля сильно кастомизированных УТ 11 сейчас в природе крайне мала (боятся все-таки 1С ники УФ всё ещё)

и да, очень хотелось бы услышать фидбек по возникавшим проблемам.
28. Crazy_kz 19 18.11.15 13:44 Сейчас в теме
Я не гуру 1С, с нового года перешли на эту систему, кучу времени потратил что бы вставить свои костыли, потому что просто не работает что то или работает но криво.
33. skif47 323 18.11.15 14:35 Сейчас в теме
(28) Crazy_kz, было бы интересно узнать, что именно не работало и с чем возникали сложности. Сможете выслать получившийся у вас модуль с доработками на почту?
Как раз в начале этого года мы начали работать над облегчением кастомизации модуля. Брали реальные примеры кастомов и искали общие места, которые чаще всего приходится костылить. Возможно, в вашем варианте есть что-то, чего мы еще не учли.
Смотрю историю версий, у вас, скорее всего, 4.02.001.02 или где-то рядом?
37. kraynev-navi 456 18.11.15 17:50 Сейчас в теме
Приятно читать то, что написано человеком, который имеет талант к творческому изображению довольно-таки сухих технических тем )) спасибо
А к диадоку (http://www.diadoc.ru/integrations/1c) вы отношение имеете как разработчик?
39. skif47 323 18.11.15 22:53 Сейчас в теме
(37) kraynev-navi, спасибо )
Диадок - это другой проект, у него своя команда разработки, лично я в нее не вхожу. Но мы часто общаемся и обмениваемся идеями, а иногда и кодом (а иногда даже сотрудниками )) ). Например, для группового подписания счетов-фактур мы используем компоненту Диадока. Архитектура модуля изначально была позаимствована у них, и лишь потом мы выстроили ту, которая больше подходила именно под специфику EDI. Диадок тоже иногда перенимает кое-какие наработки из EDI. Мир очень тесен.
40. vawd 19.11.15 08:12 Сейчас в теме
Как поставщик, "Проблемы предметной области" - абсолютная истина! Конфигурация полностью кастомная, основана на древней БП 1.6, потому "Подключаемый модуль" ОЧЕНЬ помогает.
48. comol 4300 19.11.15 10:38 Сейчас в теме
После декомпиляции удаляем файлы обычных форм, чтобы не засорять коммиты.

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


А можно мне тоже на почту? Я правильно понимаю что вы удаляете весь мусор который генерится для обычных форм и макетов?
49. skif47 323 19.11.15 11:20 Сейчас в теме
(48) comol, мы на самом деле мы добавили в .git\info\exclude наворотов вроде

*.orig
src/*/Form/*/form
*/managedForm.bareForm.txt
*.txt
src/*/und/*

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

Скиньте почту в ЛС, отправлю сборку целиком.
50. comol 4300 19.11.15 11:42 Сейчас в теме
(49) О, может этого и хватит. спс. Но сборку закинь всё равно если не трудно... e-mail кинул в личку...
53. artbear 1180 19.11.15 13:56 Сейчас в теме
(49)
comol, мы на самом деле мы добавили в .git\info\exclude наворотов вроде

*.orig
src/*/Form/*/form
*/managedForm.bareForm.txt
*.txt
src/*/und/*

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

это тот же файл, что я на почту получил, верно?
55. skif47 323 19.11.15 15:05 Сейчас в теме
59. Ibrogim 1144 26.11.15 13:08 Сейчас в теме
(0)
сделайте переменную ИмяРеквизитаОрганизация глобальной, чтобы можно было в одном месте в ПМ ее инициализировать под себя
60. skif47 323 26.11.15 14:26 Сейчас в теме
(59) Ibrogim, мы сейчас разрабатываем инструмент для маппинга полей документов и сообщений. Эта переменная, скорей всего, будет уже не нужна. Потерпите немного.
Можете пока выслать получившийся у вас модуль (вместе с подключаемым) и файл конфигурации?
61. Ibrogim 1144 26.11.15 15:09 Сейчас в теме
(60)
Можете пока выслать получившийся у вас модуль (вместе с подключаемым) и файл конфигурации?

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

Исправленный под нас ваш модуль можем выслать. Куда?
62. skif47 323 26.11.15 15:36 Сейчас в теме
63. dgolovanov 06.12.15 14:24 Сейчас в теме
А к разработе Диадок вы имеете отношение?
64. skif47 323 07.12.15 08:41 Сейчас в теме
(63) dgolovanov, отвечал в (38). Разработкой модуля Диадок занимается другая команда. В данный момент мы подумываем объединить с ними усилия.
65. dgolovanov 07.12.15 14:50 Сейчас в теме
(64) понял, спасибо. В Диадоке код совсем не дружелюбный для допиливания. Странно, что два продукта настолько отличаются.
66. skif47 323 08.12.15 11:22 Сейчас в теме
(65) Буквально сегодня, кстати, в модуль Диадока протянули подключаемый модуль, примерно как в EDI.
Можете написать в ЛС свое видение идеального модуля Диадока? Чего не хватает, что удобно/неудобно, что хотелось бы видеть, любые соображения.
Лично я этими вопросами не заведую, но ребятам передам, они как раз плотно взялись за облегчение кастомизации модуля.
67. jerokee 14.01.16 11:51 Сейчас в теме
Добротно все расписано. С 2010 года занимаемся чем-то подобным - сбор заявок от торговых с КПК и передача их дистрибьюторам для осуществления продаж на торговые точки. Но кроме этого в нашей системе учитываются еще складские остатки и движения "нашей" продукции и ДЗ точек перед дистрибьюторами. Также используем разделение интерфейса (как мы его называем) на шаблонную часть и специфику дистрибьютора. Но есть несколько отличий:
1. Поддерживаем платформы 7.7 (хватает еще и таких дистров) и 8.Х. Причем для 8-ки используется единая обработка для ОФ и УФ - при переходе на УФ нам ничего менять не надо (в теории, но могут быть нюансы)
2. Специфика дистрибьютора вынесена в отдельные обработки - слишком много "хотелок" по формам формирования документов + не всегда тривиальное получение данных о продажах, движениях, ценообразовани и ДЗ.
3. с 2015 года для обмена используется SFTP-сервер(а) - пришлось "наваять" свой транспорт на Питоне.
И также столкнулись со многими проблемами, как в предметной области, так и в вопросе реализации (а теперь и развитии) самого интерфейса.
69. skif47 323 15.01.16 13:37 Сейчас в теме
(67) jerokee, у нас 7.7 тоже есть, ОФ и УФ тоже в уже едином модуле. Транспорт там же, на 1С (нам проще, поскольку нет необходимости лезть на SFTP). Вот вставок на Питоне нет ))
А как ваш проект называется? Интересно было бы посмотреть.
71. jerokee 15.01.16 14:22 Сейчас в теме
(69) Здесь долго и много описывать... В ЛС почему-то ничего написать Вам не могу.
72. serg_info 116 18.05.16 20:46 Сейчас в теме
А как же поставщики Алкоголя, не побоюсь этого слова с большой буквы :-)
К ним требования по EDI еще более изощренные, причем у каждой сети свои.
А в их конфигурациях информация по алкореквизиитам и лицензиям у кого где хранится.....
Что-то ничего не написано про DESADVALCO - он у вас не поддерживается?

Я так понял у Вас все в одной системе и EDI и ЮЗД (юридически значимые документы) документы?
Подписывается сразу все из обработки для ЮЗД документов или лезть на сайт?
Обработка квитанций по счетам-фактурам, аннулирование, счета-фактуры исправительные, корректировочные?

Все что отправляется через обработку видно и в WEB интерфейсе?
Единый сайт для ЕДИ и ЭДО (ЮЭД) документов?

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

Я даже раза 3 писал Вашим продажникам запросы со списком сетей и документов - говорил, что если обеспечите обмен по всем - то мы рассмотрим более удобный для нас вариант централизации с более грамотным интеграционным решением.
Но они игнорят такие письма - ответов нет, только рекламные звонки (и это не смотря на платежи от 70+ тыс. руб в месяц за трафик).

73. skif47 323 19.05.16 09:20 Сейчас в теме
(72) serg_info, DESADVALCO у нас называется ALCRPT. Есть еще вариант, когда прямо в DESADV сведения о лицензиях/производителях добавляются, это, наколько помню, от требований сетей зависит.
Для алко есть конфигурации УТАП и КАТАП, и я пока еще ни разу не видел, чтоб клиенты пользовались им прямо так, как задумывали разработчики. Самописок еще больше, все верно.
Поэтому алкопоставщикам в подключаемом модуле настраиваем заполнение всех этих полей в отдельном событии. Есть несколько шаблонов кода, которые наши внедренцы потом уже допиливают до конкретной конфигурации.
EDI и ЮЗДО - пока отдельные проекты. Но в EDI есть немного ЮЗДО: когда цепочка EDI сообщений доходит до INVOIC, из него автоматом генерируется ЭСФ (+ТОРГ12, если надо), и модуль EDI после этого выдает "а давай-ка теперь все это сертификатом подпишем". Ctrl+A, "Подписать", выбрать сертификат и подождать.
ИСФ/КСФ где-то в начале года прикрутили, дальше была долгая тишина и отсутствие обратной связи. Недавно тема наконец начала набирать обороты, появились некоторые замечания/хотелки, обрабатываем. А так клиенты пользуются.
Аннулирование ЭСФ: в самом модуле EDI не предусмотрено, возможно только посмотреть статусы по отправленным ЭСФ: какие подписаны, по каким сеть отказала/запросила аннулирование. Полный набор плюшек на эту тему - в Диадоке.
Сайты Диадока и EDI - разные. Но туда можно попадать по одной учетной записи, если привязать ее к обоим сервисам. Собственно, и сервисы то разные изначально.
То, что отправлено интеграцией, в мониторинге отражается точно. Попадает ли в веб-интерфейс поставщика, точно не скажу, поскольку не пользуюсь им.
Странно, что продажники не ответили. Переправьте письмо на мой ящик, попингую их, они тут через стенку сидят ))
В самом начале статьи есть ссылка на демо базу с модулем. С тех пор многое поменялось/добавилось/отрефакторилось, но для общего представления должно хватить.
74. mvv_nv 13.12.16 08:16 Сейчас в теме
День добрый!
Замечательная статья и хорошее решение.
Есть у меня один вопрос по поводу данного продукта.
По ряду причин мы переходим на облачный сервис. Использовать измененную конфигурацию (в частности, дополнительные справочники, регистры) нет возможности.
Можете предложить какое-то решение в этом случае?
Заранее спасибо за ответ.
75. skif47 323 23.12.16 23:35 Сейчас в теме
Добрый день!
Благодарю за отзыв.
Увы, в данном случае решения предложить не могу.
Разве что попробовать договориться с владельцем сервиса об изменении конфигурации в облаке. Кажется, был один похожий прецедент. Напомните на следующей неделе в личке - постараюсь узнать.
76. skif47 323 25.12.16 22:12 Сейчас в теме
Оказывается, я давно сюда не заходил.
Коллеги, кто-то из вас спрашивал про Диадок, на что я отвечал, что это другая команда разработки.
Так вот, этой осенью я официально перешел в проект Диадок и вместе с его командой занимаюсь разработкой соответствующего модуля интеграции.
Поэтому, если будут вопросы/пожелания по этой теме, пишите.
77. mvv_nv 26.12.16 08:30 Сейчас в теме
(76) День добрый! Не получается написать в личку - не уходит сообщение. Переходим в облако. 1sfresh.com. Им писал - пока ответа нет. Самому писать с нуля - не быстро. Переходить к другому оператору - тоже не панацея. Тот же самый СБИС не использует дополнительных объектов, но есть другие моменты... В частности традиционное "бухгалтера привыкли". Так что - прошу совета. Думаю, мы не единственные и не уникальные. В облако люди будут переходить. Может как-то централизовано попытаться порешать? Хотя, это тоже, наверное, не быстро... С другой стороны это стратегически выгодно - будет конкурентное преимущество перед другими операторами EDI.
78. skif47 323 27.12.16 10:34 Сейчас в теме
(77) Согласен с вами, стратегически это выгодно.
Мы какое-то время ждали выпуск механизма расширений в 8.3. Но поскольку оказалось, что таблицы расширениями не изменяются, этот вариант отпал.
Второй вариант - договариваться с поставщиками сервиса (кроме 1cfresh.com есть еще несколько организаций, предоставляющих такие услуги). Пока непонятно, насколько это возможно. Прецедентов, оказывается, пока все-таки не было.
Третий вариант - пересматривать механизмы хранения данных в модуле. У нас довольно много зависимостей в коде от текущей подсистемы хранения данных. Теоретически мы можем переключиться на кое-что другое, но это довольно трудоемко и не быстро.
Пока приоритет данной задачи низкий, со временем, возможно, будет повышаться. Когда он перевесит трудоемкость, займемся.
Если будут какие-то новости, я напишу.
79. mvv_nv 27.12.16 13:53 Сейчас в теме
(78) Да уж. Ситуация патовая. Перейти на другого оператора мы не можем - одна из сетей работает _только_ через Контур и роуминговых соглашений с другими операторами нет.
Фреш - вопрос политический и поменять это тоже проблематично если не сказать - не возможно.
Видится одно решение, пусть и кривое, но реализуемое.
В облаке у нас БП3.0
Формируем АРМ, синхронизируем с облаком.
Разворачиваем локальную БП3.0, в которую заводим только EDI.
Между АРМ и базой с EDI настраиваем обмен - в сторону АРМа документы Реализация и Счет-Фактура, в сторону базы с EDI - НСИ.
Ну и АРМ с облаком обменивается полностью.
Криво, громоздко, но других вариантов навскидку я не вижу.
Подскажите, если есть еще какой вариант...
80. skif47 323 29.12.16 12:54 Сейчас в теме
(79) Костыли с обменами, пожалуй, сработают.
Есть еще такой вариант:
http://www.scloud.ru/tariffs_arenda_1c/
Это не fresh, это просто виртуалка с терминалом и 1С внутри. (но можно и снаружи через веб-клиента подключаться).
Разумеется, там есть конфигуратор.
Такое вам подойдет?
81. mvv_nv 30.12.16 09:01 Сейчас в теме
(80) Fresh - вопрос, скорее, политический. Попробуем костыли.
Прикладная ортопедия на новогодние праздники - хорошая альтернатива бытовому алкоголизму. :-)
82. skif47 323 12.06.17 12:21 Сейчас в теме
(81) тут не за горами "Расширение данных" в 8.3.11
https://wonderland.v8.1c.ru/blog/rasshirenie-dannykh/
Выглядит очень заманчиво
83. OpKc 22.06.17 06:15 Сейчас в теме
Доброго времени суток!

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

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

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

Спасибо за работу и за статью, так держать!
dronprog; kstukov; +2 Ответить
84. skif47 323 22.06.17 11:43 Сейчас в теме
(83) Добрый день! Спасибо за отзыв. Мы правда старались ))
85. savostin.alex 73 09.09.19 15:26 Сейчас в теме
Добрый день. Тоже являюсь "пользователем" модуля интеграции. И, когда появляется нужда открыть его в конфигураторе, мой мозг ломается от слова напрочь. Форма для хранения кода? Вэлкам. Форма-разделитель форм в списке - тут же. Читабельность - неа, это не про нас.Отладка? А зачем? Как вы это вообще разрабатываете?
86. zykov_vitaliy 47 26.09.19 02:13 Сейчас в теме
У нас в компании куплен модуль интеграции EDI (Обработка) версия 4.03.031.02. Обработка очень глючная, постоянные лаги, стандартную обработку к стандартной УТ 11 пытаемся внедрить уже несколько месяцев, только по моим заявкам в контур были исправлены некоторые глюки обработки. За все время общения с контуром складывается впечатление, что они на нас обкатывают обработку. Менеджеры отвечают не охотно, на рабочем месте их никогда нет. Ответ на письмо получаем спустя полдня в лучшем случае. Это очень неудобно, потому что мы находимся в другом часовом поясе и выходит что ответ на один вопрос мы ждем сутки. Вопросов много, линия техподдержки на некоторые важные вопросы не может них ответить. Пока что один негатив, нет такого, что поставил обработку и все заработало. Инструкция только общая, нюансы опущены.

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

Резюмирую:
Контур на мой взгляд выглядит молодой компанией, которая еще не до конца доработала свой продукт. Обработки других провайдеров я не тестировал, как Контур выглядит на фоне других аналогичных компания я не могу сказать
87. barbaroy 27.09.19 10:19 Сейчас в теме
(86) Я из команды 1С проекта Контур.EDI. Напишите в личку с чем возникли трудности. Если есть номера обращений в техподдержку, то это поможет быстрее разобраться.
EarlyBird; +1 Ответить
88. zykov_vitaliy 47 30.09.19 07:24 Сейчас в теме
(87)Пытаюсь вам написать в личку, не получается, пишет "Сообщение не отправлено. Отложенная группа". Предлагаю вам написать мне, чтобы я мог вам ответить. Сегодня очередной раз столкнулся с глюком обработки, пытаясь отклонить заказ.
89. serg_info 116 07.11.19 19:12 Сейчас в теме
Я работал с разными провайдерами Корус, ЛераДата, Эдисофт, СБИС=Тензор и СКБ Контур EDI + ЭДО.
Работал и "в алкоголе" (писал в 16 году) и работаю сейчас "не в алкоголе", производство.

Из моего опыта - СКБ Контур лучшее из того что я видел по поддержке, скорости реакции и реализации интеграции для 1С.
Все что нам нужно можно сделать в подключаемом модуле, при этом при обновлениях все было норм с нашим кодом и переписывать особо не приходилось.
Работа с разными потоками документов и с сетями (Лента, Х5, + факторинг) и с поставщиками такими как Деловые линии.
Я потихоньку свожу все к единому провайдеру и это СКБ Контур, когда в наследство достается зоопарк.

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

Удачи Вам разработчики.
Я голосую за Вас рублем :-)

PS Это не реклама, это мое мнение и никакого отношения к СКБ Контур я не имею.
Наверное есть и неудачные примеры, но у меня с ними все складывалось лучше чем с другими провайдерами, может мне везло.
Хотя схемы обменов и требования к форматам обмена самые разные были.
bolshakov_2015; skif47; Merc; user821733; kstukov; EarlyBird; +6 1 Ответить
90. MainUser1C 1 13.12.19 18:59 Сейчас в теме
Однажды мы ввели “день багов”. Это один день в неделю, когда все, преодолев собственное сопротивление, откладывают в сторону все новые фичи и занимаются исключительно исправлением таких вот мелких ошибок. Сейчас их осталось 13, это самые редкие или неуловимые.


Наверно это и отличает людей которые разрабатывают продукт на 1С или разработчиков виндовс от разработчиков Apple
91. PavleG29 26.12.19 12:06 Сейчас в теме
У вас в модуле есть неплохая возможность доработки без внесения изменений в саму обработку - система расширений и подключаемая обработка. Но вот нормального описания этого достаточно мощного и удобного функционала к сожалению нет. Понимаю, это долго и не в стиле 1С, документировать хорошие и полезные инструменты, но вы бы все-таки уделили десяток часов на это. Сильно бы облегчило задачу при доработке хотелок от поставщиков.

PS Интересно, легендарный Игорь еще работает в вашей команде? Кстати, при вводе его имени в строке поиска теперь выдает ошибку, потому что картинку с его довольным лицом из макета вы убрали, а код из ОФ - нет )))
94. mihel-s 28.04.20 22:51 Сейчас в теме
(91) Абсолютно поддерживаю.
Разработчики - опишите пожалуйста.
Возможность доработки обалденная. Документации нет от слова "совсем". Даже то, что есть на сайте писалось, видимо, очень давно и не похоже на то, что есть сейчас.
По факту, для быстрого запуска работы с сетью, пришлось тупо изменить модуль в самой обработке, а потом уже неделю, в свободное от основной работы время, раскуривать код и пытаться понять как же этот удобный механизм работает и как заставить выполниться код по событию.
Хотя я понимаю откуда дует ветер. БМ и Акселератор испортили руководство. Зачем делать описание - они же всё допишут сами, лучше содрать с них еще денег. Хотя, когда за такие деньги покупаешь тиражный продукт - он, как правило, очень хорошо документирован.
92. VladC# 63 07.04.20 14:56 Сейчас в теме
Эта штуковина работает из коробки и наверное это устраивает большинство, отлично, но иногда возникает необходимость залезать "под капот" этого монстра чтобы "допилить" и тут начинается лютый п..ц. Модуль объекта на 60 с лишним тысяч строк, гора форм в одной обработке, куча макетов, часть функционала скрыта в обработках, которые сидят в макетах, посмотреть отладчиком что там творится и откуда берется - задача не для слабонервных. Красивые слова про рефакторинг, тестирование и прочее - не более чем фикция, продукт ужасен с точки зрения доработки, если кому-то взбредет в голову взять его и доработать под себя - НЕ РЕКОМЕНДУЮ, поберегите свои нервы, время и деньги.
93. superspy2008 27.04.20 14:03 Сейчас в теме
"Сообщений может быть ОЧЕНЬ много. По 300 заказов в день одному поставщику от одной сети"
хахаха. 5000 в среднем в день не хотите ли. Ручной труд в нашем EDI в принципе не приемлем
Оставьте свое сообщение

См. также

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г. Промо

Практика программирования v8 Бесплатно (free)

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    3194    23    infostart    2    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    15027    0    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    15632    0    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    10750    0    kuzyara    33    

Обмен данными. Консистентность vs Многопоточность Промо

Интеграция v8 1cv8.cf Бесплатно (free)

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    10487    0    m-rv    1    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    25385    0    Yashazz    45    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    34787    0    rpgshnik    59    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    36961    0    ids79    52    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    34173    0    unichkin    45    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    21620    0    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

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

03.09.2019    21840    0    YPermitin    80    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    10570    0    ildarovich    19    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    26148    0    tormozit    100    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

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

17.08.2019    25720    0    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    56066    0    ids79    37    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    26418    0    avalakh    21    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    73670    0    tormozit    129    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    42529    0    ids79    11    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    35540    4    AlbinaAAA    25    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    14627    0    Stepa86    33    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    44763    0    tormozit    38    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    28541    0    ids79    27    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    16467    0    SeiOkami    50    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    42291    0    ids79    19    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    40518    0    tormozit    72    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    21397    0    dmurk    144    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    35405    0    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    24234    0    Eret1k    23    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

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

25.04.2019    14161    0    m-rv    2    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    29309    0    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования Разработка v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    23045    0    ellavs    86    

RabbitMQ + Конвертация Данных 3.0

Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

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

21.03.2019    22755    0    barelpro    82    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    17768    0    m-rv    17    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    26458    0    YPermitin    53    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    31424    0    ids79    9    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    27423    0    m-rv    21    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    35101    0    ids79    72    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    37465    0    Unk92    21    

Планы обмена 1С

Перенос данных из 1C8 в 1C8 Интеграция v8 Бесплатно (free)

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

10.09.2018    49943    0    zhichkin    27    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    25720    0    itriot11    34    

Произвольный код в фоновом режиме

Практика программирования v8 1cv8.cf Бесплатно (free)

Задача: реализовать выполнение произвольного кода в фоновом режиме без изменения конфигурации, т.е. во внешней обработке.

03.09.2018    23949    0    nikita0832    42    

Основные понятия и механизмы оптимизации клиент-серверного взаимодействия в 1C

Математика и алгоритмы Практика программирования v8 Россия Бесплатно (free)

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

23.08.2018    34831    0    Rain88    46    

Тестер: частые вопросы

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    26241    0    grumagargler    26    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    71049    0    Serginio    108    

Повышаем эффективность разработки правил обмена

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    26132    0    olegtymko    47    

На что действительно способны HTTP-сервисы

WEB Интеграция v8 Бесплатно (free)

В статье я собираюсь не только рассказать вам про HTTP-сервисы 1С, но и показать много прикольных слайдов с картинками. Я думаю, будет весело, и вы найдете для себя что-то полезное.

14.06.2018    33168    0    dalgaso2010    45    

Введение в механизм представлений в ЗУП ред. 3

Практика программирования v8 v8::СПР ЗУП3.x Бесплатно (free)

В нашей организации на первом же телефонном собеседовании на должность разработчика по ЗУП ред. 3 вас обязательно спросят о том, что такое "Представления".

04.06.2018    34111    0    xrrg    82    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    30599    0    ids79    40    

Строим графы средствами 1С (без GraphViz)

Практика программирования v8 Бесплатно (free)

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    22873    0    slozhenikin_com    20    

Распределение расходов пропорционально продажам

Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Практика программирования Финансовый учет и бюджетирование (FRP) Учет доходов и расходов v8 v8::ОУ УТ10 УУ Бесплатно (free)

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    17003    0    Rustig    9    

Просмотр временных таблиц запроса в отладчике без изменения кода

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

Данный способ можно использовать для просмотра содержимого временных таблиц запросов (менеджеров временных таблиц) без внесения изменений в код.

24.04.2018    42869    0    avfed@rambler.ru    26    

[ВсеПросто] "Оперативный" информатор из 1С за 5 мин.

Практика программирования v8 Бесплатно (free)

Быть всегда в курсе дел, даже в дороге!

22.02.2018    25301    0    DarkAn    25