Конструктор дерева/таблицы значений в режиме предприятия

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

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

9
Генерация строки кода создания таблицы/дерева значений, удобно использовать с конструктором коллекции ИР

Когда-то пользовался скриптом для openconf - конструктор таблицы значений: в формочке указывается структура ТЗ, на выходе код. Работая с ИР, вдруг подумал, что было бы удобно сделать нечто похожее: в консоли кода ИР описываем структуру ТЗ, и генерим код для ее создания с помощью языка 1С. Что получилось - выкладываю сюда, наглядно на видео:

Сам код:

	тз = ИсходнаяТЗ.СкопироватьКолонки();
	
	#Область Описание_соответствий_имен_типов
	
	СтруктураСоответствиеИменТипов = Новый Структура;
	
	//Простые
	СтруктураСоответствиеИменТипов.Вставить("boolean", "Булево");
	СтруктураСоответствиеИменТипов.Вставить("decimal", "Число");
	СтруктураСоответствиеИменТипов.Вставить("string", "Строка");
	СтруктураСоответствиеИменТипов.Вставить("dateTime", "Дата");
	
	// Ссылочные
	СтруктураСоответствиеИменТипов.Вставить("CatalogRef", "СправочникСсылка");
	СтруктураСоответствиеИменТипов.Вставить("DocumentRef", "ДокументСсылка");	
	СтруктураСоответствиеИменТипов.Вставить("BusinessProcessRoutePointRef", "ТочкаМаршрутаБизнесПроцессаСсылка");
	СтруктураСоответствиеИменТипов.Вставить("ChartOfCalculationTypesRef", "ПланВидовРасчетаСсылка");
	СтруктураСоответствиеИменТипов.Вставить("BusinessProcessRef", "БизнесПроцессСсылка");
	СтруктураСоответствиеИменТипов.Вставить("ChartOfAccountsRef", "ПланСчетовСсылка");
	СтруктураСоответствиеИменТипов.Вставить("EnumRef", "ПеречислениеСсылка");
	СтруктураСоответствиеИменТипов.Вставить("ChartOfCharacteristicTypesRef", "ПланВидовХарактеристикСсылка");
	СтруктураСоответствиеИменТипов.Вставить("TaskRef", "ЗадачаСсылка");	
	СтруктураСоответствиеИменТипов.Вставить("ExchangePlanRef", "ПланОбменаСсылка");	
	
	// Коллекции
	СтруктураСоответствиеИменТипов.Вставить("ValueTree", "ДеревоЗначений");
	СтруктураСоответствиеИменТипов.Вставить("ValueTable", "ТаблицаЗначений");
	СтруктураСоответствиеИменТипов.Вставить("ValueListType", "СписокЗначений");
	СтруктураСоответствиеИменТипов.Вставить("Array", "Массив");  
	
	// Прочие
	СтруктураСоответствиеИменТипов.Вставить("StandardBeginningDate", "СтандартнаяДатаНачала");
	СтруктураСоответствиеИменТипов.Вставить("UUID", "УникальныйИдентификатор");
	СтруктураСоответствиеИменТипов.Вставить("StandardPeriod", "СтандартныйПериод");
	СтруктураСоответствиеИменТипов.Вставить("PointOfTime", "МоментВремени");
	СтруктураСоответствиеИменТипов.Вставить("Null", "Null");	
	СтруктураСоответствиеИменТипов.Вставить("Type", "Тип");
	СтруктураСоответствиеИменТипов.Вставить("Bound", "Граница");
	СтруктураСоответствиеИменТипов.Вставить("Field", "ПолеКомпоновкиДанных");	
	СтруктураСоответствиеИменТипов.Вставить("TypeDescription", "ОписаниеТипов");
	
	// Системные перечисления	
	СтруктураСоответствиеИменТипов.Вставить("AccumulationRecordType", "ВидДвиженияНакопления");
	СтруктураСоответствиеИменТипов.Вставить("AccountingRecordType", "ВидДвиженияБухгалтерии");
	СтруктураСоответствиеИменТипов.Вставить("AccountType", "ВидСчета");
	
	#КонецОбласти 	
	
	СтрокаКода = ИмяПеременной + " = Новый ТаблицаЗначений;";
	Для Каждого Колонка Из тз.Колонки Цикл
		
		//скк - строка кода конструктора
		скк_ОписанияТипов = "";
	    скк_МассивТипов = "";
		
#Область Генерация_строки_описания_типов
		
		МассивТипов = Колонка.ТипЗначения.Типы();
		
		// Если колонка несоставного типа, то воспользуюсь быстрым конструктором 
		// описания типов, иначе - через массив		
		Счетчик = 0; ВсегоТипов = МассивТипов.Количество();
		ЕстьОписание = ВсегоТипов > 0;
		
		Если ЕстьОписание Тогда
			ЭтоПростоеОписаниеТипов = ВсегоТипов = 1;
			
			скк_МассивТипов = "";
			
	#Область Генерация_строки_массива_типов
			Для каждого Тип Из МассивТипов Цикл	
				
				Счетчик = Счетчик + 1;
				
				ТипXML = СериализаторXDTO.XMLТип(Тип);	
				
				поз = Найти(ТипXML.ИмяТипа, ".");
				Если поз > 0 Тогда
					ТипМетаданногоАнгл = Лев(ТипXML.ИмяТипа, поз - 1);	
					ИмяМетаданного = Сред(ТипXML.ИмяТипа, поз + 1);
					ТипМетаданногоРус = СтруктураСоответствиеИменТипов[ТипМетаданногоАнгл];
					скк_ТекущийТип = ТипМетаданногоРус + "." + ИмяМетаданного;
				Иначе
					скк_ТекущийТип = СтруктураСоответствиеИменТипов[ТипXML.ИмяТипа];
				КонецЕсли; 				
				
				Если ЭтоПростоеОписаниеТипов Тогда
					скк_ПараметрОписания = """" + скк_ТекущийТип + """";	
				Иначе	
					скк_ПараметрОписания = "МассивТипов";
					Если Счетчик = 1 Тогда
						скк_МассивТипов = "МассивТипов = Новый Массив();"					
					КонецЕсли; 
					скк_МассивТипов = скк_МассивТипов + Символы.ПС + "МассивТипов.Добавить(Тип(""" + скк_ТекущийТип+ """));";
				КонецЕсли; 
				
			КонецЦикла;
	#КонецОбласти 		
			
		
	#Область Генерация_строки_квалификаторов
			скк_Квалификаторы = ",КвЧисла,КвСтроки,КвДаты";
			скк_квДаты = ""; скк_квЧисла = ""; скк_квСтроки = "";
			Если Колонка.ТипЗначения.СодержитТип(Тип("Дата")) Тогда
				
				Если Колонка.ТипЗначения.КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Время Тогда
					скк_ЧастиДаты = "Время";
					
				ИначеЕсли Колонка.ТипЗначения.КвалификаторыДаты.ЧастиДаты = ЧастиДаты.Дата Тогда
					скк_ЧастиДаты = "Дата";
					
				ИначеЕсли Колонка.ТипЗначения.КвалификаторыДаты.ЧастиДаты = ЧастиДаты.ДатаВремя Тогда
					скк_ЧастиДаты = "ДатаВремя";				
					
				КонецЕсли; 
				
				скк_квДаты = " Новый КвалификаторыДаты(ЧастиДаты."+ скк_ЧастиДаты +")"; 	
			КонецЕсли; 
			
			Если Колонка.ТипЗначения.СодержитТип(Тип("Строка")) Тогда
				скк_ДлинаСтроки = Колонка.ТипЗначения.КвалификаторыСтроки.Длина;
				скк_ДопустимаяДлина = "" + Колонка.ТипЗначения.КвалификаторыСтроки.ДопустимаяДлина;
				
				скк_квСтроки = " Новый КвалификаторыСтроки("+ скк_ДлинаСтроки +", " +
				"ДопустимаяДлина." + скк_ДопустимаяДлина +")";
			КонецЕсли; 
			
			Если Колонка.ТипЗначения.СодержитТип(Тип("Число")) Тогда
				скк_ЧислоРазрядов = "" + Колонка.ТипЗначения.КвалификаторыЧисла.Разрядность;
				скк_ЧислоРазрядовДробнойЧасти = "" + Колонка.ТипЗначения.КвалификаторыЧисла.РазрядностьДробнойЧасти; 
				скк_ДопустимыйЗнак = "" + Колонка.ТипЗначения.КвалификаторыЧисла.ДопустимыйЗнак;
				
				скк_квЧисла = " Новый КвалификаторыЧисла("+ скк_ЧислоРазрядов + ", " +
				скк_ЧислоРазрядовДробнойЧасти + 
				", ДопустимыйЗнак." + скк_ДопустимыйЗнак +")";
			КонецЕсли; 
			
			скк_Квалификаторы = СтрЗаменить(скк_Квалификаторы, "КвДаты", скк_квДаты);	
			скк_Квалификаторы = СтрЗаменить(скк_Квалификаторы, "КвСтроки", скк_квСтроки);
			скк_Квалификаторы = СтрЗаменить(скк_Квалификаторы, "КвЧисла", скк_квЧисла);
			
			//Удалю запятые с конца
			Пока Прав(скк_Квалификаторы, 1) = "," Цикл
				скк_Квалификаторы = Лев(скк_Квалификаторы, СтрДлина(скк_Квалификаторы) - 1);				
			КонецЦикла; 
	#КонецОбласти 

			скк_ОписанияТипов = "Новый ОписаниеТипов("+ скк_ПараметрОписания + скк_Квалификаторы +")";
		Иначе
			скк_ОписанияТипов = "";			
		КонецЕсли; 
		
#КонецОбласти 		
		
		скк_ПараметрыКолонки = 
		"""" + Колонка.Имя + """," +  // ИмяКолонки
		?(ПустаяСтрока(скк_ОписанияТипов), "", " " + скк_ОписанияТипов) + "," + // Описание типов
		?(ПустаяСтрока(Колонка.Заголовок), "", " """ + Колонка.Заголовок + """") + "," + // Заголовок
		?(Колонка.Ширина = 0, "", " "+ Колонка.Ширина); // Ширина
		
		//Удалю запятые с конца
		Пока Прав(скк_ПараметрыКолонки, 1) = "," Цикл
			скк_ПараметрыКолонки = Лев(скк_ПараметрыКолонки, СтрДлина(скк_ПараметрыКолонки) - 1);				
		КонецЦикла; 
				
		//Генерация кода создания колонки:
		СтрокаКода = СтрокаКода + Символы.ПС +
		скк_МассивТипов + ?(ПустаяСтрока(скк_МассивТипов), "", Символы.ПС) +
		ИмяПеременной + ".Колонки.Добавить("+ скк_ПараметрыКолонки +");" 
		+ ?(ПустаяСтрока(скк_МассивТипов), "", Символы.ПС);
		
	КонецЦикла;
	
	Сообщить(СтрокаКода);

 

 

9

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

Комментарии
Избранное Подписка Сортировка: Древо
1. tormozit 5595 10.07.16 13:17 Сейчас в теме
На будущее. При записи ролика лучше запускать приложение без проверки модальности. Будет красивее.
German_Tagil; +1 Ответить
2. unichkin 1200 10.07.16 15:58 Сейчас в теме
(1) tormozit, это да. Для тестов взял что под рукой было - БП 3.0, показалось что долго коряжить - а на деле еще с видео провозился полчаса почти))
3. Yashazz 2859 11.07.16 12:21 Сейчас в теме
Товарисч, ну ты что. Работаешь с XDTO, а для соответствия русских и английских имён такой ужас нагородил. Это ж проще можно, вроде СокрЛП(СериализаторXDTO.XMLСтрока(рЗначение)) где Значение, например, системного типа, на выходе будет англоязычным. Или фабрики самой 1С почитай.
4. unichkin 1200 11.07.16 12:56 Сейчас в теме
(3) Yashazz, копался час с этим не нашел другого способа. В т. ч. и СериализаторXDTO.XMLСтрока("CatalogRef.Контрагенты") пробовал - возвращает "CatalogRef.Контрагенты". Может чего-то недопонимаю.
Оставьте свое сообщение

См. также

Приватный блокчейн и 1С популярно 5

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

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

02.09.2019    1537    mkalimulin    140       

Кодогенерация и метагенерация в 1С 24

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

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

26.08.2019    4004    kirovsbis    28       

Интеграция сценарного тестирования в процесс разработки 81

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

Разработчик системы «Тестер» Дмитрий Решитко в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION показывает, что процесс тестирования можно очень плотно интегрировать в процесс разработки, что внедрение тестирования – это возможность развития программиста как такового, позволяющая ему упорядочивать ход мыслей и оставаться «в фокусе». Навыки построения процесса кодирования на стыке с тестированием сокращают время на концентрацию, освобождают от страха перед изменениями и улучшают память разработчика.

08.07.2019    4449    grumagargler    7       

Управляй качеством кода 1С с помощью SonarQube 221

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

Управляй техническом долгом проектов 1С с помощью SonarQube. В статье рассматривается пример применения SonarQube при разработке.

07.07.2019    16231    olegtymko    191       

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

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

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

25.04.2019    4878    m-rv    2       

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

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

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

16.04.2019    7420    m-rv    16       

О времени и 1С 206

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

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

01.04.2019    15330    YPermitin    58       

Пример создания bridge (http api - tcp) для ККТ "Касса №1" ("К1-Ф") 5

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

Пример создания bridge (http api - tcp) для ККТ "Касса №1" ("К1-Ф"). Данная статья будет полезна интеграторам, программистам, тем кто работает (интегрирует, разрабатывает) различное ТО либо железки. Версия и релиз технологической платформы не имеет значения.

17.03.2019    2994    dmarenin    0       

Быстрее чем INSERT! BULK-операции и примеры использования 112

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

Microsoft SQL Server поддерживает так называемые BULK-операции, используемые для быстрого изменения больших объемов данных в базе. В статье пойдет речь о практических примерах их использования. Все примеры сделаны в контексте платформы 1С (а как иначе).

09.03.2019    9837    YPermitin    38       

Как писать понятные коммиты 67

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

Как писать сообщения коммитов так, чтобы потом не было мучительно больно.

06.03.2019    7844    Scorpion4eg    34       

Расширяем свой багаж 2

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

Алгоритм решения возможной нетиповой задачи на собеседовании.

29.01.2019    3312    scientes    15       

Подготовка ребёнка* к ЕГЭ по информатике. Часть четвертая 4

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

Решение систем логических уравнений повышенного уровня сложности.

25.01.2019    3070    vasilev2015    0       

Подготовка ребенка* к ЕГЭ по информатике. Часть вторая 2

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

Примеры на Паскале. Если сам родитель* - поддержи ! Если сам водила - посигналь !

19.01.2019    3331    vasilev2015    0       

Подготовка к ЕГЭ сына - школьника (по информатике) 9

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

Примеры на Паскале. Если сам отец - поддержи ! Если сам водила - посигналь !

17.01.2019    3825    vasilev2015    50       

Быстрая отладка экранных форм документов и справочников 19

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

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

18.12.2018    4609    milkers    19       

1С + asterisk (автоматический обзвон) часть 1 38

Статья Системный администратор Программист Нет файла Россия Бесплатно (free) Практика программирования WEB Телефония, SIP

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

29.11.2018    7281    dmarenin    9       

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

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

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

10.11.2018    20925    ids79    40       

Развитие 1С программиста 51

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

Делюсь своим опытом и видением развития 1С программиста.

17.10.2018    13618    pashamak    62       

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

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

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

15.10.2018    20537    tormozit    100       

Записки про metadata.js 53

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

Отличительные особенности разработки на metadata.js

31.07.2018    9141    1c-intelligence    59       

Учебный курс. Повышение качества разработки. Ошибки программы 97

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Лекции № 3,4,5. Эти лекции посвящены ошибкам программ, их классификации и способам исправления

10.07.2018    15816    Артано    92       

Автоматизируй это! 149

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

Здравствуйте. Меня зовут Виталий Онянов. Я работаю в компании ФТО. Мы занимаемся внедрением и поддержкой ERP-систем, в том числе и на 1С. Сегодня я хотел бы поделиться нашим опытом автоматизации своих задач и рассказать о том, какие регламентные задания мы настраиваем на серверах наших клиентов. Возможно, кому-то покажется, что это совсем простые и очевидные вещи, но я в своей работе периодически вижу разработчиков, которые делают какие-то задачи руками изо дня в день, и мне бы хотелось донести до них мысль о том, что многие из этих задач можно и нужно автоматизировать.

02.07.2018    16164    Tavalik    12       

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

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

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

25.06.2018    19358    olegtymko    47       

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

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

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

01.06.2018    21246    m-rv    21       

Учебный курс. Повышение качества разработки. Вводная лекция, часть 2 49

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

Учебный курс по теории и практике программирования. Бесплатно. В виде структурированного текста. Лекция №2. Эта лекция посвящена абстракциям, их свойствами и практическому применению в рамках классических парадигм программирования.

24.05.2018    10729    Артано    36       

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

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

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

23.05.2018    17025    slozhenikin_com    19       

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

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

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

13.05.2018    11391    Rustig    9       

Велостыли: Регламентные задания 15

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

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

09.05.2018    10285    dsdred    28       

Веб-разработка на 1Script. Глава 2 64

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

Продолжение учебника по веб-разработке с помощью фреймворка Oscript.Web. Структура приложения, основные объекты, URL-маршрутизация, универсальная консоль серверов 1С.

22.04.2018    12100    Evil Beaver    27       

Доброе программирование, или сказки для программистов 8

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

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

03.03.2018    6221    Gladkov_Anton    9       

Минимализмы 3 352

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

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    35714    ildarovich    44       

Веб-разработка на 1Script. Глава 1 250

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

Разрабатывать веб-приложения должно быть просто. И для этого 1С-ник не должен страдать, изучая десятки и сотни побочных технологий. В конце прошлого года я анонсировал разработку движка веб-приложений на языке 1С. Я планирую выпустить серию статей, оформленных в виде книги, или серии блог-постов, в которых постепенно будут описаны методики разработки сайтов на нашем любимом языке программирования – 1С.

12.02.2018    25607    Evil Beaver    97       

Версионирование правил обмена в Git 64

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

Статья рассказывает о принципах работы скриптов, позволяющих применять систему контроля версий git и подход gitflow для версионирования правил обмена.

15.12.2017    12981    bforce    22