"Выполнятор" – как я породил монстра и лишился сна!

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

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

HTTP-сервис API JSON http web apache сервис Линк PAPI Pretty Безопасность Терминатор Троянский конь Выполнить Вычислить https

Реальная история о разработке, которой не горжусь…

Стал замечать подобные решения давно, но у меня не было особого желания вступать в дискуссию, да и времени особо нет. С другой стороны, вижу, как безжалостно отдают чертежи бомб и с этим что-то надо делать. Затевал написать данную статью 2-3 года назад и вот выдался свободный денек, поэтому каюсь в содеянном… Надеюсь моя история кому-то послужит уроком.

О чем пойдет речь? 

Речь пойдет о связке «Универсальных решений по обмену на http\web-сервисах» и методах «Выполнить\Вычислить». Хотя использование данных методов в файловых вариантах считаю еще большим злом (камень в огород конвертации данных).

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

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

1] Я за то, чтобы подобные решения были созданы как минимум после прочтения вот этой статьи: https://its.1c.ru/db/v8std#content:770:hdoc

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

2] Автор должен предупредить о возможных последствиях использования его решения!

Немного истории.

В начале 2017 года устроился в фирму, где очень долго экономили на IT, но поняли, что пора что-то менять, ибо движение пошло не вперед, а назад. Первым делом они решили спрыгнуть с франча(на то было масса причин) и набрать свой отдел 1С программистов и отдел администраторов. До этого момента я успел поучаствовать в двух проектах (УПП+Документооборот и ERP+Документооборот) и присоединился к команде замыкающим. Это была команда «Мечты» (я про отдел программистов имею ввиду), я рад что мне удалось поработать с такими людьми, хоть и всего полтора года. Был выполнен просто сумасшедший объем работы, был обмен опыта, в общем команда «Мечты». Потом вся команда разбежалась и в этом году удалось опять собрать часть этой команды на новый проект, я выхожу завтра, предвкушаю (Но это уже начало другой истории).

Какие были проблемы в 2017 году?

-Денег на расширения хранилища данных не выделяли, что привело к тому, что в основном каждый из команды тащил определенный проект. Грубо говоря 1 рабочая база и 1 тестовая, и так с каждой конфигурацией. Кто бухгалтерию переводил с 2 на 3, кто готовил УТ 10 к переходу на ERP, мне досталась розница для франшизы и написание http-сервисов для себя и вебера (надеюсь, мне удастся рассказать про данный проект, но не буду загадывать).

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

-Популярность УТ привела к эффекту «Макдональдса».

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

Мне пришла в голову мысль «Спасение утопающего дело рук утопающего»…

Реализация или как я изобрел динамит.

Первый вариант «Выполнятора» был накидан минут за 5-10, и я кайфовал, через неделю был добавлен «Выполнятор» второй версии, и я был доволен как удав. Вот оно! Легкое решение, облегчающее жизнь.

Я еще не знал, что через месяц проснусь по средь ночи с мыслями: -Что же ты натворил!!!

Так же как Нобель изобрел динамит и возненавидел свое изобретение, так и я отношусь к «Выполнятору»

Принцип работы.

Собственно, все просто как автомат Калашникова…

Посылаешь код и параметры в определенной структуре JSON и на стороне базы с данной структурой работает Выполнить()…

Плюсы есть, но минусов в разы больше!

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

Шаблон http-сервиса: /{ВхДанные}

Метод: POST

 
 Код обработчика метода:
Функция HTTPServPOST(Запрос)
	//Тут получаем имя метода, в нашем случае "Completer" или "CompleterParam"
	перИмяМетода  = Запрос.ПараметрыURL["ВхДанные"];
	
	//Тут получаем код для выполнения и параметры
	ЗапросОтКлиентаJSON = Запрос.ПолучитьТелоКакСтроку();	
	
	СтруктураОтвет = HTTPСервисыPOST.ОбработкаВходящихДанныхHTTP(ЗапросОтКлиентаJSON,перИмяМетода);
	
	//Готовим ответ
	Ответ = Новый HTTPСервисОтвет(СтруктураОтвет.КодОтвета);

	Если СтруктураОтвет.Отработало Тогда 
	    Ответ.УстановитьТелоИзСтроки(СтруктураОтвет.ДанныеОтвета,КодировкаТекста.UTF8);
	Иначе
	    Ответ.УстановитьТелоИзСтроки(СтруктураОтвет.ТекстОшибки,КодировкаТекста.UTF8);
	КонецЕсли;	
		
	Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
	Возврат Ответ;
КонецФункции

 Чтение запроса и возврат ответа

 
 Код модуля HTTPСервисыPOST:
Функция ОбработкаВходящихДанныхHTTP(ЗапросОтКлиентаJSON,перИмяМетода) Экспорт
	СтруктураОтвет = Новый Структура("ДанныеОтвета,Отработало,ТекстОшибки,КодОтвета","",Истина,"",200);
	
	Если ВРег(перИмяМетода) = ВРег("Completer") Тогда	
		
		ЯВыполнятор(СтруктураОтвет,ЗапросОтКлиентаJSON);
		
	ИначеЕсли ВРег(перИмяМетода) = ВРег("CompleterParam") Тогда  
        
		ЯВыполнятор_Параметры(СтруктураОтвет,ЗапросОтКлиентаJSON);
		

//... еще методы

	Иначе
		
		СтруктураОтвет.КодОтвета 	= 404;
		СтруктураОтвет.ТекстОшибки	= "Неизвестный метод!!!";
		СтруктураОтвет.Отработало	= Ложь;
		СтруктураОтвет.ДанныеОтвета = "";
		
	КонецЕсли;	
		
	Возврат СтруктураОтвет;
	
КонецФункции	

//Сервис Выполнятор предназначен для получения данных, необходимо подавать код всего модуля.
Процедура ЯВыполнятор(СтруктураОтвет,ЗапросОтКлиентаJSON)
	Попытка
		
		//ЗапросОтКлиентаJSON = ЗапросОтКлиентаJSON + "
		//| ЗаполнитьСтруктуруОтвета(СтруктураОтвет,200,"""",Истина,СтрокаJSON);";	
		Выполнить(ЗапросОтКлиентаJSON);
		
	Исключение
		
		перТекстОшибки = "Ошибка: "+ОписаниеОшибки();
		ЗаполнитьСтруктуруОтвета(СтруктураОтвет,404,перТекстОшибки,Ложь,"X");
		
	КонецПопытки;
КонецПроцедуры	

//ЯВыполнятор_Параметры
Процедура ЯВыполнятор_Параметры(СтруктураОтвет,ЗапросОтКлиентаJSON)
    //Читаем JSON
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ЗапросОтКлиентаJSON);
    Попытка
        ВХ_Структура = ПрочитатьJSON(ЧтениеJSON);
    Исключение
        ЗаполнитьСтруктуруОтвета(СтруктураОтвет,404,"Неудалось получить данные! Возможно не в JSON передаете!",Ложь,"X");
        Возврат;
    КонецПопытки;

    Если ТипЗнч(ВХ_Структура) = Тип("Структура") Тогда 
        Если не ВХ_Структура.Свойство("ТекстКоманды") Тогда 
            ЗаполнитьСтруктуруОтвета(СтруктураОтвет,404,"В структуре отсутствует свойство ""ТекстКоманды""!",Ложь,"X");
            Возврат;    
        КонецЕсли;    
        
        Если не ВХ_Структура.Свойство("вхПараметры") Тогда 
            вхПараметры = Новый Структура;
        Иначе
            вхПараметры = ВХ_Структура.вхПараметры;
        КонецЕсли;
    Иначе
        ЗаполнитьСтруктуруОтвета(СтруктураОтвет,404,"Передана не структура!",Ложь,"X");
        Возврат;    
    КонецЕсли;    
    
    
    Попытка
        
        Выполнить(ВХ_Структура.ТекстКоманды);
        
    Исключение
        
        перТекстОшибки = "Ошибка: "+ОписаниеОшибки();
        ЗаполнитьСтруктуруОтвета(СтруктураОтвет,404,перТекстОшибки,Ложь,"X");
        
    КонецПопытки;
КонецПроцедуры

Процедура ЗаполнитьСтруктуруОтвета(СтруктураОтвет,КодОтвета,ТекстОшибки,Отработало,ДанныеОтвета)
	СтруктураОтвет.КодОтвета 	= КодОтвета;
	СтруктураОтвет.ТекстОшибки	= ТекстОшибки;
	СтруктураОтвет.Отработало	= Отработало;
	СтруктураОтвет.ДанныеОтвета = ДанныеОтвета;	
КонецПроцедуры

 Вот так я лишился сна!

Аргументы за и против.

+ Легко встроить и использовать.

+ Можно дорабатывать, не трогая головную конфигурацию.

- Постоянно пересылаешь весь код и параметры при работе с методом.

- Меняя, добавляя код в куче мест, не трогая главную конфигурацию, создается риск замены кода не везде где нужно.

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

- Определенные сложности с оптимизацией процессов.

- Невозможность отладки такого кода
- Невозможность замера производительности такого кода
- Невозможность определять свои методы

- Вы вдруг уволитесь, переедете или не дай бог… Обслуживать будет кто-то другой. Поставьте себя на его место! Представьте, как ему потом разгребать ваш костыль.

- Есть вариант, что кто-то узнает про ваше решение и будет использовать в свое благо. Можно получать данные или передавать бомбы в виде неоптимального кода. А если у вас еще и не защищенное соединение, тогда посмотрите мультик «Трое из Простоквашино» про подмену посылки.

Можно еще нарисовать минусов, с плюсами сложнее…

Итог.

Дом нужно строить на нормальном фундаменте, а не на песке! Можно сделать универсальное решение и спать спокойно, но путь, который предполагает возить код для выполнения через транспорт – может испортить Вам сон!

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

Комментарии
Избранное Подписка Сортировка: Древо
1. YPermitin 7378 10.02.20 09:49 Сейчас в теме
(0) Весь мир борется с выполнением произвольного кода :)
Но не мы! :)))

P.S. Это шутка, конечно. Но проблема выполнения произвольного кода правда очень актуальна.
За труды спасибо.
dsdred; Natain14; +2 Ответить
2. for_sale 844 10.02.20 10:00 Сейчас в теме
- Вы вдруг уволитесь, переедете или не дай бог… Обслуживать будет кто-то другой. Поставьте себя на его место! Представьте, как ему потом разгребать ваш костыль.

Это про любой код нужно думать, не только про такой.
Sla; 3vs; dsdred; +3 Ответить
3. tormozit 5685 10.02.20 10:00 Сейчас в теме
Еще в минусы стоит добавить врожденные спутники метода Выполнить(Код)
- невозможность отладки такого кода
- невозможность замера производительности такого кода
- невозможность определять свои методы
Drivingblind; АлександрЯрославичъ; Natain14; Rustig; Evg-Lylyk; +5 Ответить
7. dsdred 1319 10.02.20 12:14 Сейчас в теме
(3) пытался эти вещи уместить -> Определенные сложности с оптимизацией процессов.

Но Вы правы. С Вашего позволения добавлю к минусам статьи.
4. AlX0id 10.02.20 10:58 Сейчас в теме
- Вы вдруг уволитесь, переедете или не дай бог… Обслуживать будет кто-то другой. Поставьте себя на его место! Представьте, как ему потом разгребать ваш костыль.

Это минус не выполнятора, а отсутствия документации к чему-либо.
lefthander; dsdred; +2 Ответить
5. pm74 163 10.02.20 11:08 Сейчас в теме
(0)
Плюсы есть, но минусов в разы больше!

не пойму я вашей рефлексии по этому поводу
по мне так все удобно
забавно но сегодня как раз залил предрелиз своего "выполнятора" на https://github.com/pm74/_37583

функционал http вовсю используется в проде ( примеры есть на скринах
в https://infostart.ru/public/728511/)
8. dsdred 1319 10.02.20 12:19 Сейчас в теме
(5)Петр к Вашему решению данная статья не относится.
На сколько я помню у Вас был отдельный справочник алгоритмов.

Я против возможности добавлять алгоритмы всеми в подряд и против того чтобы код гоняли транспортом.
10. pm74 163 10.02.20 12:29 Сейчас в теме
(8)
справочник алгоритмов

я думал у вас нечто подобное ,
разве нет ?
тогда сорри не разобрался в теме
13. dsdred 1319 10.02.20 13:06 Сейчас в теме
(10)нет нет, я про запущенные случаи ))
6. Rustig 1346 10.02.20 11:30 Сейчас в теме
для служебных целей точно пойдет, пользователям про такой механизм необязательно знать
9. dsdred 1319 10.02.20 12:20 Сейчас в теме
(6)Вот люблю я те конторы где собственники(пользователи) говорят у нас с IT все отлично.
Посмотришь и поседеешь.
11. Rustig 1346 10.02.20 12:42 Сейчас в теме
(9) раскройте смысл ответа :) не понял вас :) ...
12. dsdred 1319 10.02.20 13:05 Сейчас в теме
(11)Вот допустим я создал такой механизм. Никому не поведал и ушел.
Пользователь об этом механизме не знает, а он есть. Как суслик в ДМБ.
И все довольны. Но дыра в безопасности есть и ее можно использовать.

Был у меня случай, когда я пришел в малый бизнес где собственники говорили, что у них в плане IT все норм, их два аутсорсера обслуживали. Им нужен человек по 1С и администрированием заниматься не придется.
Я провел аудит и выяснилось, что они сидят на пороховой бочке. Они занимались скоропортом, из вне к ним зайти не может только ленивый... Времени переделать на нормально нет. В итоге взвесив все за и против я ушел даже денег не взял за то время, что отработал и рассказывать не стал. Смысла рассказывать не было, так как не поверили бы, с аутсорсом они работали дольше чем со мной. Старый друг лучше новых двух.
Пару лет назад искал данную контору ради интереса, вроде больше нет их, наверное отучались.
14. Rustig 1346 10.02.20 13:19 Сейчас в теме
(12) ясно,
я другой смысл вложил в свой комментарий - вы по своему его поняли :)
создайте константу, которую всегда можно отключить, включайте доступ по веб-серверу - когда вам нужно - для служебных целей такой подход подойдет - в любом случае занят конфигуратор разработчиками или пользователи работают в базе - конфигурацию не обновить. Поэтому я увидел в вашем решении механизм пригодный для служебных целей. Запустили ряд процессов, отключили доступ к веб-серверу, отключились сами.
Так безопасно.
SirAlexIT; dsdred; +2 Ответить
15. alexsey777 13.02.20 11:13 Сейчас в теме
Основной минус сего механизма - гонять код через сервисы. Так реально запутаешься...

Я писал специально универсальный механизм алгоритмов, чтобы была возможность более гибко расширять функционал без обновлений конфы.
Но я делал специальный справочник с алгоритмами. Который доступен только под админскими правами.
Тут главное в крайность не впадать и не использовать это всегда и везде.
16. dsdred 1319 16.02.20 19:08 Сейчас в теме
(15)
Я писал специально универсальный механизм алгоритмов, чтобы была возможность более гибко расширять функционал без обновлений конфы.
Но я делал специальный справочник с алгоритмами. Который доступен только под админскими правами.

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

См. также

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

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

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

27.01.2020    5497    ids79    25       

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

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

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

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

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

15.01.2020    7415    John_d    21       

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    9317    YPermitin    72       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Сдача регламентированной отчетности из программ 1С Промо

Сдача регламентированной отчетности из программ "1С" во все контролирующие органы без выгрузок и загрузок в другие программы. Для групп компаний действуют специальные предложения.

от 1500 руб.

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

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

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

05.09.2019    24120    ids79    45       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

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

16450 рублей

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

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

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

03.09.2019    15968    YPermitin    78       

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

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

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

17.08.2019    18284    ids79    16       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

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

4900 рублей

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

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

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

08.08.2019    33356    ids79    36       

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

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

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

02.08.2019    18383    avalakh    21       

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

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

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

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

26.07.2019    27231    ids79    9       

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

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

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

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

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

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

17.07.2019    19643    ids79    27       

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

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

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

09.07.2019    14855    YPermitin    12       

INFOSTART MEETUP Kazan. 13 марта 2020 г. Промо

Инфостарт продолжает путешествие по России. Следующая остановка - Казань. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Ждем всех: докладчиков и участников! Стоимость участия - 5 500 рублей. Цена действительна до 30.01.2020

5 500

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

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

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

04.07.2019    12104    SeiOkami    49       

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

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

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

25.06.2019    31798    ids79    17       

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

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

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

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

11.06.2019    16938    dmurk    144       

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

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

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

16.05.2019    27297    YPermitin    27       

Базовый курс по управлению ИТ-проектами. Курс проходит с 26 февраля по 22 апреля 2020 года. Промо

Отличительная черта курса - органичное сочетание трех вещей: 1.Теория проектного управления (PMI®+Agile Alliance+Российские ГОСТ+Методологии от 1С); 2. Опыт внедрения продуктов 1С (опыт франчайзи и успешных компаний + тренды Infostart Event и Agile Days); 3. Разбор реальных проблем и рекомендации экспертов по проектам слушателей. Мы будем фиксироваться на тех инструментах, которые реально оказываются полезными в практике руководителей проектов внедрения. Ведущая курса - Мария Темчина.

от 11000 рублей

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

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

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

11.05.2019    17291    Eret1k    23       

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

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

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

25.04.2019    9301    m-rv    2       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

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

6500 рублей

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

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

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

16.04.2019    12437    m-rv    16       

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

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

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

07.04.2019    23434    ellavs    125       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

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

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

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

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

28.03.2019    18579    ellavs    83       

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

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

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

14.03.2019    20446    YPermitin    53