Получаем уровень группировки ячейки табличного документа

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

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

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

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

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

Попытался найти что-то уже кем-то разработанное решение, но обычно все обсуждения сводились к альтернативным  способам, например, анализировать  настройки СКД или значения расшифровок  в ячейки.  Мне же не хотелось концентрироваться на том как был сформирован табличный документ, а просто взять сформированный табличный документ даже просто из файла *.mxl и определять уровень группировки любой ячейки.

Единственное, что я нашёл подходящее для моей задачи, это была вот эта статья: //v8book.ru/public/182115/. В данной разработке использовалась функция определения уровня ячейки. Но при использовании обнаружил следующее:

  •  в ней нет функции определении уровня группировок колонок, а только функция определения уровня группировки строк;
  •   при наличии в табличном документе группировок колонок функция определения уровня строк перестаёт работать.

Далее я натолкнулся на хорошую статья //v8book.ru/public/562724/, где используется сериализация и разбор структуры табличного документа. И мне захотелось просто сделать функции, куда передаёшь координаты ячейки и получаешь уровни колонок и строк группировок.

Итак, у вас есть форма обработки и на ней размещен  реквизит формы табличный документ (ТабДок), далее становимся на любую ячейку и нажимаем кнопку "ПолучитьУровниТекущейЯчейки". Выводятся сообщения с номерами уровней группировки  строк и колонок ячейки.  Если ячейка не входят в группировки, то её уровень равен. 1 (единица).

Вот код: 

&НаКлиенте
Процедура ПолучитьУровниТекущейЯчейки(Команда)
	
	//ТабДок - рекизит на форме (Табличный документ)
	//и вынесен на форму в элемент "ТабДок"
	НомерСтроки = Элементы.ТабДок.ТекущаяОбласть.Верх;
	НомерКолонки = Элементы.ТабДок.ТекущаяОбласть.Лево;
	
	УровеньЯчейки = ПолучитьУровеньГруппировкиЯчейки(ТабДок,НомерСтроки,НомерКолонки);
	
	Сообщить("Уровни группировок ячейки (" + НомерСтроки + "," + НомерКолонки + "," + НомерСтроки +"," + НомерКолонки + ")");
	Сообщить(Символы.Таб + "Уровень строки: " + УровеньЯчейки.УровеньСтроки);
	Сообщить(Символы.Таб + "Уровень колонки: " + УровеньЯчейки.УровеньКолонки);
	
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьУровеньГруппировкиЯчейки(ТабДок, НомерСтроки,НомерКолонки)
	
	Перем УровеньЯчейки;
	
	УровеньЯчейки = Новый Структура("УровеньСтроки,УровеньКолонки",1,1);
	
	мЗапись = Новый ЗаписьXML;
	мЗапись.УстановитьСтроку("UTF-8");
	
	СериализаторXDTO.ЗаписатьXML(мЗапись,ТабДок);
	
	ТекстXML = мЗапись.Закрыть();
	
	мЧтение = Новый ЧтениеXML;
	мЧтение.УстановитьСтроку(ТекстXML);
	ПострDOM = Новый ПостроительDOM;
	ДанныеDOM = ПострDOM.Прочитать(мЧтение);
	
	//уровни строк
	ТаблицаУровнейПоСтрокам = ПолучитьТаблицуУровнейПоСтрокам(ДанныеDOM);
	строкаУровняПоСтрокам = ТаблицаУровнейПоСтрокам.Найти(НомерСтроки,"Номер");
	Если строкаУровняПоСтрокам <> Неопределено Тогда
		УровеньЯчейки.УровеньСтроки = строкаУровняПоСтрокам.Уровень;
	КонецЕсли;	
	
    //уровни колонок
	ТаблицаУровнейПоКолонкам = ПолучитьТаблицуУровнейПоКолонкам(ДанныеDOM);
	строкиУровнейКолонокПоНомерамСтрок = ТаблицаУровнейПоКолонкам.НайтиСтроки(Новый Структура("НомерСтроки,ЕстьУровни", НомерСтроки,Истина));
	Если строкиУровнейКолонокПоНомерамСтрок.Количество() > 0 Тогда
		ТаблицаКолонок = строкиУровнейКолонокПоНомерамСтрок[0].ТаблицаКолонок;
		строкаУровняКолонки = ТаблицаКолонок.Найти(НомерКолонки, "Номер");
		Если строкаУровняКолонки <> Неопределено Тогда
			УровеньЯчейки.УровеньКолонки = строкаУровняКолонки.Уровень;
		КонецЕсли;	
	КонецЕсли;
	
	Возврат УровеньЯчейки;
	
КонецФункции	

&НаСервереБезКонтекста
Функция ПолучитьТаблицуУровнейПоСтрокам(ДанныеDOMТабДок)
	
	ТаблицаУровней = Новый ТаблицаЗначений;
	ТаблицаУровней.Колонки.Добавить("Номер",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0))); 
	ТаблицаУровней.Колонки.Добавить("Уровень",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0))); 
	
	УзлыУровнейDOMТабДок =  ДанныеDOMТабДок.ПолучитьЭлементыПоИмени("vg");
	ПредКонецГруппировки = 0;
	Для инд = 0 по УзлыУровнейDOMТабДок.Количество() - 1 Цикл
		
		УзелГруппы = УзлыУровнейDOMТабДок[инд];
		
		НачалоГруппировки = 0;
		КонецГруппировки = 0;
		
		Для н = 0 По УзелГруппы.ДочерниеУзлы.Количество() - 1 Цикл
			ПодУзел =  УзелГруппы.ДочерниеУзлы[н];
			Если ПодУзел.ИмяУзла = "b" Тогда
				НачалоГруппировки = Число(СокрЛП(ПодУзел.ТекстовоеСодержимое));
			ИначеЕсли ПодУзел.ИмяУзла = "e" Тогда
				КонецГруппировки = Число(СокрЛП(ПодУзел.ТекстовоеСодержимое));
			КонецЕсли;
		КонецЦикла;
		
		Если НачалоГруппировки = 0 Тогда Продолжить КонецЕсли;
		
		// если конца группировки не оказалось, то одна позиция в подгруппе
		Если КонецГруппировки = 0 Тогда
			КонецГруппировки = НачалоГруппировки
		КонецЕсли; 
		
		//конец область увеличить нужно на 1 
		КонецГруппировки = КонецГруппировки + 1; 
		РодительскийУровень = 0;
		Для Номер = НачалоГруппировки по КонецГруппировки Цикл
				
			строкаТаблицы = ТаблицаУровней.Найти(Номер, "Номер");
			Если строкаТаблицы = Неопределено Тогда
				строкаТаблицы = ТаблицаУровней.Добавить();
				строкаТаблицы.Номер = Номер;
				строкаТаблицы.Уровень = РодительскийУровень + 1;
				Если Номер = НачалоГруппировки Тогда
					РодительскийУровень = 1;
				КонецЕсли;	
			Иначе
				Если Номер = НачалоГруппировки Тогда
					РодительскийУровень = строкаТаблицы.Уровень
				Иначе
					строкаТаблицы.Уровень = РодительскийУровень + 1;	
				КонецЕсли;	
				
			КонецЕсли;
				
		КонецЦикла;	
		
	КонецЦикла;
	
	Возврат ТаблицаУровней;
	
КонецФункции

&НаСервереБезКонтекста
Функция ПолучитьТаблицуУровнейПоКолонкам(ДанныеDOMТабДок)
	
	ТаблицаУровней = Новый ТаблицаЗначений;
	ТаблицаУровней.Колонки.Добавить("НомерСтроки",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0))); 
	ТаблицаУровней.Колонки.Добавить("columnsID",Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки(36))); 
	ТаблицаУровней.Колонки.Добавить("ТаблицаКолонок"); 
	ТаблицаУровней.Колонки.Добавить("Уровень",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0))); 
	ТаблицаУровней.Колонки.Добавить("ЕстьУровни",Новый ОписаниеТипов("Булево")); 
	
	//Определяем сколько строк
	//и идентификатор колонок columnsID, которые будут заполнены в тех строках
	//где своё количество колонок (новый формат строк)
	УзлыУровнейDOMТабДок =  ДанныеDOMТабДок.ПолучитьЭлементыПоИмени("rowsItem");
	Для инд = 0 по УзлыУровнейDOMТабДок.Количество() - 1 Цикл
		УзелГруппы = УзлыУровнейDOMТабДок[инд];
		

		строкаТаблицыНомерСтроки = ТаблицаУровней.Добавить();
		
		ТаблицаКолонок = Новый ТаблицаЗначений;
		ТаблицаКолонок.Колонки.Добавить("Номер",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0))); 
		ТаблицаКолонок.Колонки.Добавить("Уровень",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(10,0))); 
		
		строкаТаблицыНомерСтроки.ТаблицаКолонок = ТаблицаКолонок;
		
		Для н = 0 По УзелГруппы.ДочерниеУзлы.Количество() - 1 Цикл
			ПодУзел =  УзелГруппы.ДочерниеУзлы[н];
			Если ПодУзел.ИмяУзла = "index" Тогда
				строкаТаблицыНомерСтроки.НомерСтроки = Число(ПодУзел.ТекстовоеСодержимое) + 1;
			ИначеЕсли ПодУзел.ИмяУзла = "row" Тогда
				ПодУзел2 = ПодУзел.ДочерниеУзлы;
				Для м = 0 по ПодУзел.ДочерниеУзлы.Количество() - 1 Цикл
					ПодУзел2 = ПодУзел.ДочерниеУзлы[м];
					Если ПодУзел2.ИмяУзла = "columnsID" Тогда
						строкаТаблицыНомерСтроки.columnsID = СокрЛП(ПодУзел.ТекстовоеСодержимое);
						Прервать;
					КонецЕсли;	
				КонецЦикла;	
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;	
	
	УзлыУровнейDOMТабДок =  ДанныеDOMТабДок.ПолучитьЭлементыПоИмени("hg");
	
	Для инд = 0 по УзлыУровнейDOMТабДок.Количество() - 1 Цикл
		
		УзелГруппы = УзлыУровнейDOMТабДок[инд];
		
		columnsID = Неопределено;
		НачалоГруппировки = 0;
		КонецГруппировки = 0;
		
		Для н = 0 По УзелГруппы.ДочерниеУзлы.Количество() - 1 Цикл
			ПодУзел =  УзелГруппы.ДочерниеУзлы[н];
			Если ПодУзел.ИмяУзла = "columnsID" Тогда
				columnsID = СокрЛП(ПодУзел.ТекстовоеСодержимое);
			ИначеЕсли ПодУзел.ИмяУзла = "b" Тогда
				НачалоГруппировки = Число(СокрЛП(ПодУзел.ТекстовоеСодержимое));
			ИначеЕсли ПодУзел.ИмяУзла = "e" Тогда
				КонецГруппировки = Число(СокрЛП(ПодУзел.ТекстовоеСодержимое));
			КонецЕсли;
		КонецЦикла;
		
		Если НачалоГруппировки = 0 Тогда Продолжить КонецЕсли;
		
		// если конца группировки не оказалось, то одна позиция в подгруппе
		Если КонецГруппировки = 0 Тогда
			КонецГруппировки = НачалоГруппировки
		КонецЕсли; 
		
		//конец область увеличить нужно на 1 
		КонецГруппировки = КонецГруппировки + 1;
		
		строкиКолонки = ТаблицаУровней.НайтиСтроки(Новый Структура("columnsID", columnsID));
		ПредКонецГруппировки = 0;
		Для НомерСтроки = 0 по строкиКолонки.Количество()  - 1 Цикл
			
			строкиКолонки.Получить(НомерСтроки).ЕстьУровни = Истина;
		    ТаблицаКолонок = строкиКолонки.Получить(НомерСтроки).ТаблицаКолонок;
			РодительскийУровень = 0;
			Для Номер = НачалоГруппировки по КонецГруппировки Цикл
				
				строкаТаблицы = ТаблицаКолонок.Найти(Номер, "Номер");
				Если строкаТаблицы = Неопределено Тогда
					строкаТаблицы = ТаблицаКолонок.Добавить();
					строкаТаблицы.Уровень = РодительскийУровень  + 1;
					строкаТаблицы.Номер = Номер;
					Если Номер = НачалоГруппировки Тогда
						РодительскийУровень = 1;
					КонецЕсли;	
				Иначе
					Если Номер = НачалоГруппировки Тогда
						РодительскийУровень = строкаТаблицы.Уровень
					Иначе
						строкаТаблицы.Уровень = РодительскийУровень + 1;	
					КонецЕсли;	
				КонецЕсли;
				
			КонецЦикла;	
			
		КонецЦикла;
		
	КонецЦикла;
	
	Возврат ТаблицаУровней;
	
КонецФункции

 

Проверял работает на 8.3, 8.2, должно работать и на 8.1. 

Не претендую на лаконичность кода, хотелось, чтобы бы всё было понятно.

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

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Rustig 1487 23.03.20 12:12 Сейчас в теме
(0) решение обратных задач всегда сложнее. а потому более ценно.
Спасибо за решение!
2. Diakr 13.05.20 11:19 Сейчас в теме
Спасибо за решение!
Помогло в создании собственной системы оформления отчетов.
5. maxx 905 13.05.20 12:26 Сейчас в теме
3. Rustig 1487 13.05.20 12:02 Сейчас в теме
(0) Максим, заберите пож-та себе вознаграждение :) Висит и висит тут...
4. maxx 905 13.05.20 12:26 Сейчас в теме +1 $m
(3) а я и не знаю как забирать, все равно спасибо раз такое дело
6. Rustig 1487 13.05.20 13:25 Сейчас в теме
(4) найдите под публикацией любой свой комментарий, отметьте его Лучшим (справа внизу комментария кнопка есть), далее найдите рядышком кнопку - Передать вознаграждение.
Передайте автору лучшего комментария - то есть себе
Оставьте свое сообщение

См. также

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

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

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

22.04.2020    4631    23    Infostart    2    

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

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

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

27.01.2020    19156    0    ids79    26    

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

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

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

15.01.2020    18526    0    John_d    22    

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

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

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

30.12.2019    13462    0    kuzyara    33    

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

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

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

10.12.2016    35505    0    unichkin    45    

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

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

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

02.12.2019    14634    0    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

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

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    6808    0    Sibars    19    

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

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

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

01.10.2019    28223    0    Yashazz    45    

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

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

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

15.10.2018    27942    0    tormozit    100    

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

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

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

06.09.2019    39758    0    rpgshnik    62    

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

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

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

05.09.2019    41892    0    ids79    54    

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

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

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

05.09.2019    24429    0    YPermitin    24    

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

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

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

20.09.2012    75423    0    tormozit    129    

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

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

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

03.09.2019    23144    0    YPermitin    80    

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

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

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

17.08.2019    28290    0    ids79    16    

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

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

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

08.08.2019    65325    0    ids79    40    

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

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

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

11.07.2007    46322    0    tormozit    38    

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

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

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

02.08.2019    29323    0    avalakh    22    

Разбираемся с параметрами редактирования СКД

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

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    19771    0    json    12    

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

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

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

26.07.2019    48937    0    ids79    11    

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

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

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

10.09.2017    42346    0    tormozit    74    

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

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

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

17.07.2019    31518    0    ids79    27    

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

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

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

09.07.2019    23818    0    YPermitin    13    

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

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

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

04.07.2019    17709    0    SeiOkami    50    

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

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

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

25.04.2019    15410    0    m-rv    2    

Работа с настройками системы компоновки данных

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

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

02.07.2019    38525    0    ids79    10    

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

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

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

25.06.2019    46003    0    ids79    25    

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

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

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

11.06.2019    22833    0    dmurk    144    

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

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

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

16.04.2019    19177    0    m-rv    17    

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

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

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

16.05.2019    38435    0    YPermitin    30    

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

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

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

11.05.2019    26600    0    Eret1k    23    

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

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

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

07.04.2019    32073    0    ellavs    126    

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

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

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

01.06.2018    28827    0    m-rv    21    

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

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

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

28.03.2019    25283    0    ellavs    88    

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

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

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

14.03.2019    28886    0    YPermitin    53    

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

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

В статье собраны наиболее распространенные ошибки при работе с хранилищем конфигурации и способы их обхода и решения.

01.03.2019    33731    0    Смешной 1С    27    

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

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

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

05.12.2017    26865    0    itriot11    34    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

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

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    20129    0    Vladimir Litvinenko    27    

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

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

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

03.02.2019    34625    0    ids79    9    

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

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

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

27.01.2016    73427    0    Serginio    108    

EnterpriseData – часть 2. Процесс выгрузки данных

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

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    24795    0    ids79    31    

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

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

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

14.12.2018    37862    0    ids79    72    

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

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

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

10.11.2018    32423    0    ids79    40    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

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

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    34270    0    ids79    40    

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

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

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

13.11.2018    41379    0    Unk92    21    

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

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

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

25.07.2018    27537    0    grumagargler    26