Автоматическая интеграция внешних обработок в конфигурацию 1C

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

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

Jenkins CI Автоматическая интеграция.

26
Вот уже некоторое время мы ведем разработку через git-flow. Все очень нравится. Но есть один момент - когда выходит релиз и ветка develop мигрирует в ветку master, очень лень подключать новые внешние обработки к базе вручную. Вот поэтому я решил немного подковырять Jenkins для небольшой автоматизации процесса.

Итак, что нам нужно:

  1. Конфигурация с поддержкой БСП.
  2. Jenkins который выведен «наружу».
  3. Python.
  4. Три или четыре кружки кофе(шутка)

Задумка следующая: у нас исходники хранятся на bitbucket, значит нужно интегрировать его из Jenkins, чтобы когда мы делали merge ветки develop в master, CI подхватывал все это добро и самостоятельно подключал к базе.

ШАГ 1. ОБРАБОТКА-ИНТЕГРАТОР НА 1С.

Данная обработка вызывается CI в пакетном режиме. Как параметр запуска передается список полных путей к файлам которые нужно подключить к базе. Многие штуки (интеграция из чатом Slack, подключение внешней обработки/отчета) у нас уже интегрированы в конфигурацию. Обработка парсит параметры запуска и подключает файлики к базе. После подключения приходит сообщение в корпоративный чат о результатах. Если файлика еще нет в базе – его необходимо подключить вручную. Вот небольшие фрагменты кода.

Код который парсит параметры запуска и помещает файлы во временное хранилище.

&НаКлиенте
Функция ПоместитьВнешниеОбработкиВХранилище(ПараметрЗапуска)

   
МассивСтрок     = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПараметрЗапуска, ";");
   
МассивОшибок    = Новый Массив;
   
МассивАдресов   = Новый Массив;

    Для каждого
СтрокаИзМассива Из МассивСтрок Цикл

       
Сообщить(СтрокаИзМассива);

       
Файл = Новый Файл(СтрокаИзМассива);
        Если Не
Файл.Существует() Тогда
           
СообщениеОбОшибке = НСтр("ru='Файл не найден.'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка());
           
МассивОшибок.Добавить(Новый Структура("Сообщение, ПутьКФайлу", СообщениеОбОшибке, СтрокаИзМассива));
            Продолжить;
        КонецЕсли;

       
АдресФайла = "";
        Если НЕ
ПоместитьФайл(АдресФайла, СтрокаИзМассива, , Ложь, УникальныйИдентификатор) Тогда
           
СообщениеОбОшибке = НСтр("ru='Не удалось загрузить файл на сервер.'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка());
           
МассивОшибок.Добавить(Новый Структура("Сообщение, ПутьКФайлу", СообщениеОбОшибке, СтрокаИзМассива));
            Продолжить;
        КонецЕсли;

       
МассивАдресов.Добавить(Новый Структура("ПутьКФайлу, АдресФайла, ИмяФайла, РасширениеФайла", СтрокаИзМассива, АдресФайла, Файл.ИмяБезРасширения, Файл.Расширение));

    КонецЦикла;

    Возврат Новый
Структура("МассивАдресов, МассивОшибок", МассивАдресов, МассивОшибок);

КонецФункции
// ПоместитьВнешниеОбработкиВХранилище()

Здесь также происходит заполнение служебных структур и массив (МассивАдресов, МассивОшибок) для последующей обработки данных.

А вто код, который подключает обработки к базе с помощтью функционала БСП.

&НаСервере
Функция ВыполнитьПодключениеДоступныхОбработок(МассивАдресов)

   
ТекстСообщения = "";

    Для каждого
АдресОбработки Из МассивАдресов Цикл

       
ИмяВнОбработки  = ВнешниеОбработки.Подключить(АдресОбработки.АдресФайла, , Ложь);
       
СозданныйОбъект = ВнешниеОбработки.Создать(ИмяВнОбработки);

        Попытка
           
СведенияОВнешнейОбработке = СозданныйОбъект.СведенияОВнешнейОбработке();
        Исключение
           
ШаблонСообщения = "Внешняя обработка _%1_ имеет неправильный формат данных.";
           
ШаблонСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, АдресОбработки.ПутьКФайлу);
           
ТекстСообщения  = ТекстСообщения + ШаблонСообщения + Символы.ПС;
            Продолжить;
        КонецПопытки;

       
ОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(СведенияОВнешнейОбработке.Наименование);
        Если
ОбработкаСсылка.Пустая() Тогда
           
ШаблонСообщения = "Внешняя обработка _%1_ еще не подключена к базе. Первый раз обработку нужно подключить вручную.";
           
ШаблонСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, АдресОбработки.ПутьКФайлу);
           
ТекстСообщения  = ТекстСообщения + ШаблонСообщения + Символы.ПС;
            Продолжить;
        КонецЕсли;

       
ПараметрыРегистрации = ПолучитьПараметрыРегистрацииОбработки();

        Если
ВРег(АдресОбработки.РасширениеФайла) = ".ERF" Тогда
           
ПараметрыРегистрации.ЭтоОтчет = Истина;
        ИначеЕсли
ВРег(АдресОбработки.РасширениеФайла) = ".EPF" Тогда
           
ПараметрыРегистрации.ЭтоОтчет = Ложь;
        Иначе
           
ШаблонСообщения = "Внешняя обработка _%1_ не может быть подключена к базе. Расширение файла не соответствует расширению внешнего отчета (ERF) или обработки (EPF).";
           
ШаблонСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, АдресОбработки.ПутьКФайлу);
           
ТекстСообщения  = ТекстСообщения + ШаблонСообщения + Символы.ПС;
            Продолжить;
        КонецЕсли;

       
ПараметрыРегистрации.ИмяФайла = АдресОбработки.ИмяФайла;
       
ПараметрыРегистрации.АдресДанныхОбработки = АдресОбработки.АдресФайла;

       
ОбработкаОбъект = ОбработкаСсылка.ПолучитьОбъект();

        Попытка
           
ДополнительныеОтчетыИОбработки.ЗарегистрироватьОбработку(ОбработкаОбъект, ПараметрыРегистрации);
        Исключение
           
ШаблонСообщения = "Обработку _%1_ не удалось автоматически подключить к базе.";
           
ШаблонСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, АдресОбработки.ПутьКФайлу);
           
ТекстСообщения  = ТекстСообщения + ШаблонСообщения + Символы.ПС;
        КонецПопытки;

       
ОбработкаОбъект.Записать();

       
ШаблонСообщения = "Обработка _%1_ успешно автоматически подключена к базе.";
       
ШаблонСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, АдресОбработки.ПутьКФайлу);
       
ТекстСообщения  = ТекстСообщения + ШаблонСообщения + Символы.ПС;

    КонецЦикла;

    Возврат
ТекстСообщения;

КонецФункции
// ВыполнитьПодключениеДоступныхОбработок()

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

Шаг 2. Скрипт на Python.

Идея скрипта состоит в том, чтобы через команду git diff сравнить локальный master и master удаленный, а файлы которые изменились – записать в базу. Скрипт состоит из нескольких логических блоков. Первый блок делает пресловутый git diff и получает список измененных файлов.

def getStringWithChangedFiles(gitexepath, branchtocompare, repopath):

    try:
        fileList = subprocess.check_output([gitexepath, 'diff', branchtocompare, '--name-only']).decode("utf-8")
    except subprocess.CalledProcessError:
        raise Exception('Не удалось выполнить команду получения списка измененных файлов.')

    stringWithChangedFiles = ''

    print(fileList)

    for fileName in fileList.split("\n"):
        if not ('epf' in fileName or 'erf' in fileName):
            continue
        if not stringWithChangedFiles:
            stringWithChangedFiles = repopath + "\\" + fileName
        else:
            stringWithChangedFiles += ';' + repopath + "\\" + fileName

    return stringWithChangedFiles

Участок кода который запускает 1С в пакетном режиме и передает на вход обработки из шага №1 список измененных файлов.

def getStringWithChangedFiles(gitexepath, branchtocompare, repopath):

    try:
        fileList = subprocess.check_output([gitexepath, 'diff', branchtocompare, '--name-only']).decode("utf-8")
    except subprocess.CalledProcessError:
        raise Exception('Не удалось выполнить команду получения списка измененных файлов.')

    stringWithChangedFiles = ''

    print(fileList)

    for fileName in fileList.split("\n"):
        if not ('epf' in fileName or 'erf' in fileName):
            continue
        if not stringWithChangedFiles:
            stringWithChangedFiles = repopath + "\\" + fileName
        else:
            stringWithChangedFiles += ';' + repopath + "\\" + fileName

    return stringWithChangedFiles

В скрипте есть еще некоторые служебные процедуры, но в рамках данной статьи приводить их не будем.

ШАГ 3. КОНФИГУРИРУЕМ JENKINS.

 Перейдем к самому вкусному - конфигурированию нашего job-а. Для начала укажем репозиторий откуда тянем изменения.

Указываем репозиторий

Далее необходимо указать что удаленный мастер будет копироваться в локальную ветку localmaster (в конце мы делаем merge).

Настройка веткиСледующая настройка – самая важная для интеграции из bitbucket, а именно – генерирование токена аутентификации. Он нам нужен чтобы bitbucket мог запускать jobs на нашем CI удаленно. Токен должен быть сверхсекретным ;)

Authentication token

Ну и следующая настройка – непосредственный вызов скрипта через пункт Execute Windows batch command.

Запуск скрипта

ШАГ 4. НАСТРОЙКИ BITBUCKET HOOK.

Чтобы bitbucket мог дергать наш CI нам нужно настроить так называемый Jenkins Hook. Перейдем в настройки репозитория в раздел Integrations подраздел Hooks. В меню Select a hook выберем пункт Jenkins.

Bitbucket hook

Нам нужно заполнить всего три поля. Endpoint – сюда пишем адрес нашего CI сервера в формате http|s://username:password@domain:port/path, где username - User ID, а password - API Token. Посмотреть данные настройки можно если пойти в меню People, далее выбрать пользователя и открыть секцию API Token из настроек.

API Token

Project name – имя проекта, который мы выбрали в Jenkins. Здесь нужно заметить, что имена job-ам нужно стараться давать без пробелов, а если у вас установлен плагин для каталогов в списке проектов, путь к проекту будет выглядеть так Auto_deploy/job/Auto_deploy_test, где Auto_deploy – имя каталога, Auto_deploy_test – имя проекта.

Поле Token содержит наш токен аутентификации, который мы сгенерировали на шаге №3.

Вот собственно и все. Результаты работы будут примерно таковы

Результаты работы

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

Оригинал статьи. Happy Coding :-)



26

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

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение

См. также

Полезные процедуры и функции для программиста 160

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

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

07.10.2019    11927    HostHost    23       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Вакансия Автор новостных обзоров на тему 1С и бухучета, По совместительству Промо

Редакция Infostart.ru будет рада сотрудничеству с 1С-специалистом, умеющим и любящим излагать свои мысли в письменной форме. Если вы работали в IT-изданиях или имеете опыт ведения технологического блога/канала/группы, если сможете сделать обзор обработок из каталога infostart.ru/public/all/, то у вас большое преимущество.

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

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

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

05.09.2019    15837    ids79    44       

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

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

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

03.09.2019    10693    YPermitin    69       

С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо

Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.

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

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

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

17.08.2019    13082    ids79    16       

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

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

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

08.08.2019    18352    ids79    31       

Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо

Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).

29700 руб.

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

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

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

02.08.2019    12862    avalakh    21       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

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

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

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

26.07.2019    16504    ids79    8       

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

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

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

17.07.2019    13726    ids79    27       

Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо

Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.

29700 руб.

Регистры сведений. За кулисами 129

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

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    10944    YPermitin    12       

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

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

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

04.07.2019    9799    SeiOkami    49       

Онлайн-интенсив "Бизнес-процессы для подготовки к экзамену 1С:Специалист по платформе" 12 декабря 2019 г. Промо

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

777 рублей

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

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

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

25.06.2019    23991    ids79    17       

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

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

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

11.06.2019    13674    dmurk    134       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

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

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

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

16.05.2019    21469    YPermitin    27       

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

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

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

11.05.2019    13386    Eret1k    23       

Онлайн-курс "Технология выполнения проектов ERP-класса – процессный подход". Третий поток. Курс проходит с 21 января по 18 марта 2020 года. Промо

Курс разработан Внедренческим центром «Раздолье». Курс предназначен для подготовки аналитиков, архитекторов и руководителей проектов автоматизации процессов управления с использованием комплексных ИТ-систем (1С:ERP, 1С:УХ, 1С:КА, 1С:УТ). В основе курса лежит методика применения процессного подхода.

9000 рублей

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

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

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

25.04.2019    7709    m-rv    2       

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

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

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

16.04.2019    10211    m-rv    16       

Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо

Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.

24700 руб.

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

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

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

07.04.2019    18953    ellavs    125       

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

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

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

28.03.2019    15438    ellavs    83       

Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо

Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.

29700 руб.

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

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

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

14.03.2019    16334    YPermitin    53       

Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо

Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!

29700 руб.

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

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

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

03.02.2019    19371    ids79    9