Чтение группировок табличного документа

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

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

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

Есть mxl, табличный документ, в котором сделана группировка строк, и надо прочитать из него данные с учётом этих группировок, т.е. иерархически. Сам документ читаем по ячейкам, но как быть с иерархией? На помощь приходит сериализация.

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

Представленный вариант - для толстого клиента или для сервера. Желающие могут превратить таблицу и дерево значений в коллекции или данные формы, сути это не меняет. Суть очень проста - сериализовать в XDTO, через XML в DOM и прочитать сведения об иерархии по нужным узлам-тегам. Производительность на больших объёмах будет, естественно, не ахти, что надо учитывать; ну и если построитель DOM не потянет, придётся копать последовательным чтением XML. Мысль публикации лишь в том, что, хотя во встроенном языке нет возможности выяснить уровень области, данные об этом любой табличный документ хранит. Я поработал с группировками строк, нечто подобное можно сделать и для группировок колонок - это, к примеру, для любителей курочить выходной таб.документ СКД.

Итак:

// вспомогательная к ПрочитатьТабДокументСГруппировкамиВДерево
Процедура ЗаполнитьДеревоПоТаблицеРекурсивно(рРодитель,тДанных)
	Для каждого рВетка Из рРодитель.Строки Цикл
		ЗаполнитьДеревоПоТаблицеРекурсивно(рВетка,тДанных);
		мстро=тДанных.НайтиСтроки(Новый Структура("НомерПозицииРодителя",рВетка.НомерПозиции));
		Для каждого стро Из мстро Цикл
			ЗаполнитьЗначенияСвойств(рВетка.Строки.Добавить(),стро);
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры

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

P.S.  Если это баян, киньте в меня тапочком ссылкой.

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

Комментарии
Избранное Подписка Сортировка: Древо
1. json 20.11.16 14:41 Сейчас в теме
Есть замечания к оформлению кода:
1. Процедуры и функции более верхнего уровня обычно располагаются выше, а используемые в них - под ними. Это логично и проще воспринимается. В вашем случае экспортная функция является методом более верхнего уровня и должна быть первой, а все неэкспортные под ней. (см. рекомендации по оформлению кода "Чистый код" Р.Мартин, либо можно открыть практически любой модуль в типовой конфигурации, и увидеть, что сначала идет секция ПрограммныйИнтерфейс, потом СлужебныйПрограммныйИнтерфейс и лишь в конце СлужебныеПроцедурыИФункции)
2. Также полезно было бы ознакомиться с рекомендациями образования имен переменных на диске ИТС (http://its.1c.ru/db/v8std#content:2149184103:hdoc). См. пункт 2 Пример некорректных имен переменных
3. Неужели так трудно давать переменным имена без сокращений? (Например в публикации на текущий момент вижу такие имена: мстро, рВетка, стро, знч) Я бы не хотел оказаться на месте разработчиков, которым придется поддерживать такое в продакшене!

Вообще мне кажется, что кода не так уж и много, чтобы причесать его перед тем, как публиковать. А по хорошему, причесывать надо каждый раз перед помещением в продуктив.
olegol; kaa_erpcentr; CyberCerber; a.kuznetsov; WaterSmith; Chif13; trntv; Sun_Storm; premierex; shalimski; +10 3 Ответить
2. Yashazz 3058 20.11.16 14:47 Сейчас в теме
(1) yurii_host, вы далеко не первый, кто мне это говорит)))
1. Расскажите это разработчикам типовых конфигураций)
2. Имена промежуточных и вспомогательных переменных не обязательно должны быть говорящими. Классический код на общепринятых языках программирования спокойно рассматривает "i" "j" "k" в качестве итераторов. Так что не довод) Опять же, сравните стандарты 1С и реальный код 1С, посмеётесь. И, думаете, я, автор тиражных решений, не знаю эти стандарты?))
3. См.п2, понять и так можно, и это несложно.

Вообще, это мой стиль и служит своеобразным "авторским клеймом". Я всегда отличу свой код от чужого, особенно бывает удобно, если его скопирайтили против моей воли. Считайте это авторским почерком и некоей обфускацией. Так что "причёсывать" тут, равно как и в других публикациях, не считаю нужным.
По делу есть замечания?
10. json 23.11.16 11:59 Сейчас в теме
(1) меня удивил минус к первому моему посту. Уважаемый Корум, не могли бы пояснить свою точку зрения с каким именно пунктом Вы не согласны?) Я вроде все обосновал и мало того привел еще и ссылки на рекомендации. Вы не согласны с тем, что код - вырвиглазный?

Позиция автора мне абсолютно понятна, она субъективна и направлена на отстаивание собственной правоты. Причем автор в своей манере отвечает общими фразами без конкретных фактов:
- так и не привел конкретные примеры про типовые конфигурации. Что именно по его мнению не соответствует рекомендациям, в каком модуле/процедуре можно увидеть это несоблюдение. Вместо этого привел зачем-то версию конфигурации. Если он слабо знаком с Системой стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8, то как он может отследить такое несоблюдение?
- я указал на сокращения переменных, а он начал объяснять про итераторы. Это вроде как не одно и то же. Если посмотреть на ссылку, которую я привел в посту 1, то там явно сказано, что "Использование коротких имен допускается только для счетчиков циклов" и к этому у меня нет претензий.
- кроме того, сокращения крайне затрудняют командную разработку. Ведь это же очевидно. Смотрите, по поводу сокращений у каждого человека свой набор правил, кто-то вообще любит сокращать на гласную букву (см. в публикации переменная мстро). И даже если можно догадаться из контекста что именно означает сокращение, то все равно читать чужой код, который пестрит сокращениями - очень неприятное занятие. Голова очень быстро перегружается, т.к. она должна помнить, что означает каждое сокращение. Спросите у коллеги, который будет поддерживать ваш код, хочет ли он, чтобы вы использовали сокращения. Или сами подумайте, хотите ли разбираться в чужом коде, в котором все переменные построены через сокращения? Ответ здорового человека может быть только один - "нет"
- про авторское клеймо - кому-нибудь еще кроме автора нужно это клеймо? Есть ли в нем какая-либо логическая целесообразность, которая бы давала преимущества и упрощала работу другим программистам? Ответ - "нет". Это просто такая своеобразная "причуда", которая скорее вредна, чем полезна.
- также автор стал приводить примеры из других языков программирования (при чем тут они), хотя читаемость кода зависит ведь не от языка программирования, а от программиста!!! Практически все современные языки программирования имеют средства для написания читаемого кода. Та же самая упомянутая автором Java. Ведь именно разработчики из этого языка внесли огромный вклад в построение читаемого и расширяемого кода

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

Я повторю свой вопрос, Корум, не могли бы обосновать свою точку зрения, очень любопытно было бы услышать/прочитать с чем вы не согласны
astrallight; kaa_erpcentr; a.kuznetsov; unichkin; +4 Ответить
11. shard 251 23.11.16 12:58 Сейчас в теме
(1) yurii_host, не скажу за Корума, но поясню свое мнение:
1) ссылки на закрытые форумы и статьи выглядят неуважительно по отношению к не имеющим подписку ИТС.
2) требование размещать функции по порядку напомнило одного "специалиста" одной весьма крупной структуры, связанной с оказанием услуг в финансовой сфере, который высказывал весьма громкое "фи" касательно отсутствия пробелов в коде (при этом согласно рекомендациям пробелы отсутствовали только между // и текстом комментария), но незнакомого с иерархией элементов справочника.
user1194102; Yashazz; json; +3 1 Ответить
12. json 23.11.16 13:20 Сейчас в теме
(11) shard, Ваша претензия по поводу ссылок на ИТС - абсолютно справедлива. Я этот нюанс выпустил из вида.
Но к сожалению, 1С не выкладывает их в общий доступ, а копировать полный текст и выкладывать на общем ресурсе - нарушение авторских прав.

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

По моему скромному мнению, рекомендации формулируют требования, продиктованные здравым смыслом. В них другими словами перечислены основные моменты, которые описаны и в других книгах по написанию кода. Для тех, у кого нет доступа на ИТС, я бы рекомендовал прочитать книгу, упомянутую в первом посте. По моему мнению (и не только по моему) в ней собраны самые основные правила по построению читаемого кода, при этом автор приводит вполне убедительные аргументы. Эта книжка - меняет программистов, я наблюдал это примере своих коллег. При этом рекомендации, описанные в ней согласуются с рекомендациями, описанными в "Системе стандартов и методик..."

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

В любом случае благодарю за конструктивную обратную связь!
20. PLAstic 225 14.10.19 16:58 Сейчас в теме
(11) (12) Позволю себе в корне не согласиться. Если человек называет себя программистом, то он обязан иметь доступ к ИТС.
Если ты во франче, у тебя есть доступ к ИТС автоматом. Если ты в конторе, то ей надо поддерживать используемые продукты 1С и у них тоже должна быть подписка. Стоит она не так дорого для организации, а новые версии ПП и поддержка нужны всем.
Да и невозможно поддерживать свой уровень без доступа к документации.
21. shard 251 14.10.19 23:09 Сейчас в теме
(20) про фри Вы благополучно забыли. Из Вашего утверждения можно сделать вывод что программисты - это либо фра, либо фикс; остальные - унтерменши.

К тоже же сильно бросаются в глаза штампы "надо поддерживать используемые продукты 1С", "обязан иметь доступ к ИТС" (по сути - "обязан платить налог 1с"), штамп "стоит...не так дорого" (по сути - "ну купите, что вам стоит, или совсем нищеброды?"). Отвечу: если доступ к документации "не так дорог", тогда может это 1с его открыть надо?

Про невозможность поддерживать уровень без доступа к документации - истина, но как много Вы можете назвать контор не ИТ-профиля, которые могут выделить время программиста/сисадмина на повышение квалификации? Не знаю ни одной, в лучшем случае - "можешь взять отгул без сохранения", но обычно: "лучше иди квартал Мариванне закрой, или Танечке поступления вбей. Кстати ты уже сделал систему прогнозирования курса доллара, которую мы тебя уже с начала года просим?".
user1194102; +1 Ответить
22. PLAstic 225 15.10.19 08:36 Сейчас в теме
(21) Фри я не забыл, это не программист по моей терминологии. :) Далее в своём посте вы соглашаетесь, что уровень поддерживать нельзя без доступа к свежим обновлениям, к БСП и метод.материалам. Значит, это простой любитель.
Про ИТС можно сколько угодно спорить и взывать кому что надо сделать, но "собака лает, караван идёт" - вы ничего не измените. И я тоже когда-то называл ИТС налогом 1С. Если говорить беспристрастно, у вас должна быть подписка ИТС, если вы считает себя программистом.
Всё, что выкладывается на ресурсах, включая ИС - это добрая воля авторов, поэтому притязать на "неуважительно по отношению к не имеющим подписку ИТС" - ну, это сродни "вы должны мне всё выложить здесь и сейчас, т.к. я не хочу/не могу купить подписку ИТС". Вам никто ничего не должен. Есть регламентированный фирмой 1С информационный ресурс и ссылки на него, наоборот, должны приветствоваться для желающих пруфов или расширения представленных в статьях со ссылками знаний.
Про обучение - это ваш личный выбор. Не пускают на работе даже за свой счёт? Зачем вам такая работа? Я каждые 5 лет хожу за свой счёт на пачку курсов просто чтобы быть в теме, что появилось нового.
19. BenGunn 179 27.12.18 11:23 Сейчас в теме
(1) Меня все чаще и чаще стал удивлять подход я-ля критиков к чужой работе: вместо того, чтобы оценить новизну решения задачи, они пытаются искать субъективные причины, чтобы занизить профессиональные качества кодера. А, собственно, зачем это надо и кому? Не нравится стиль написания кода - перепиши под себя. Все просто, как мычание коровы
user1194102; +1 Ответить
3. json 20.11.16 15:21 Сейчас в теме
1. Насколько я замечал, в типовых обычно соблюдают свои же рекомендации. Отклонение от рекомендаций - обычно редкость, которая связана либо с обоснованной необходимостью, либо с тем, когда недоглядели за автором кода. Буду признателен, если приведете конкретные примеры, вместо общих фраз.

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

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

4. Понять - да можно. Доработать в продуктиве такой код - скорее всего нет.

5. Неужели вы считаете так часто ваш код кто-то копирайтит?

6. Выкладываете код - значит отвечаете за него. Это по делу. Если он нечитаемый - какие-то ошибки в нем визуально найти очень сложно. Приведите сначала в читаемый вид, а потом будут вам замечания "по делу"
PLAstic; mivari; pavlov_dv; klinval; qwe_QWE; +5 Ответить
9. Dementor 638 23.11.16 10:30 Сейчас в теме
(3) yurii_host, ваши слова - прямо танец по моим больным мозолям. В последнюю неделю помогал навести порядок в конфигурации, где в реализацию к типовым Количество и Количество мест добавили реквизиты - Колво, Колмест, Кмест (и еще парочку сокращений, которые не имели отношения к количествам). Прежде чем вообще начинать что-либо делать нужно было пройти квест "угадай что это и зачем его сюда влепили" с беганьем по интерфейсу формы и анализом доработок в проведении документа. А что бы работа была не скучной, предыдущий разработчик удалил конфигурацию поставщика и затер в свойствах версию конфигурации - видимо это элемент фирменного стиля :)
13. Yashazz 3058 23.11.16 21:31 Сейчас в теме
(9) За такие имена реквизитов действительно надо убивать, согласен. Но, повторюсь, вспомогательные служебные переменные совершенно не требуют нотации в духе ЭлементМассиваИзСтруктурыСоответствийГдеХранятсяДанныеДляОбр­аботки. Ну вот совсем это лишнее. Меру знать надо. Давеча тоже копался в конфе с реквизитами вроде "СпВопОтнос".
Комментарии - вещь строго обязательная, каковые и делаю)

А любителям говорить об уважении к, могу посоветовать посмотреть на БП 3.0 - я не знаю, как надо соблюдать чистоту разработки и испытывать уважение к тем, кто будет потом иметь с ней дело, если даже реквизиты в документах по алфавиту не отсортированы. Ломайте глаза, господа. Так? Никто не хочет пару баллонов на Фогеля накатить?
23. user1194102 19.01.20 16:09 Сейчас в теме
(9) это частный случай, в любой сфере есть люди на своем месте и не на своем, но бить себя в грудь, что у тебя есть подписка ИТС и ты по правилам 1С расставляешь переменные, еще не значит, что ты хороший программист, скорее наоборот. В любом коде главное это алгоритм как решение задачи и правильность/оптимальность кода, стиль тоже важен, но стиль это вторично. О чем вообще сыр бор? Все согласны что на стиль надо обращать внимание и по возможности писать код понятный другим. Еще мне не понятны принципы самого форума, плюсы ставить можно в темах , а минусы нельзя, если баллов меньше 30. Похоже правила на форуме писали тоже те, для кого важнее чистота кода, чем сам код. Сочувствую вам.
4. Yashazz 3058 20.11.16 16:11 Сейчас в теме
1. УТ 11.2 нескольких первых поколений. Многие места в БСП от лета прошлого года (релиз не помню).
2. Может быть)
3. Найдёте кривизну кода - приму с удовольствием и постараюсь исправить. Если это решение не интересное и не простое - обоснуйте. Если этот алгоритм некрасив - укажите, в чём)
4. Не согласен.
5. Были прецеденты, в т.ч. на ИС, были))
6. Если такой код лично для Вас нечитаемый - радуйтесь, что не работали на Паскале или PL, а уж тем паче на Фортране) Ну и что не работаете на Java, например. Переменная "е" привела бы Вас в негодование)))
5. Yashazz 3058 20.11.16 16:22 Сейчас в теме
Я уж молчу про гнуснейшую манеру называть переменные зарезервированными именами и ключевыми словами, которая, имхо, гораздо более вредна и опасна. Но нет, написать БлокировкаДанных=Новый БлокировкаДанных - это нормально. А назвать рБлокировка, чтобы не огрести щастья в некоторых релизах (как, например, 8.3.7) - это низя, это нихарашё. Ну, кому эстетика, а кому прагматика.
корум; +1 Ответить
6. vikad 115 20.11.16 19:06 Сейчас в теме
7. Yashazz 3058 21.11.16 12:47 Сейчас в теме
(6) vikad, ага, проблема упоминалась. Решение - нет. Я не уверен, что фиксин, при всех его понтах навроде "был найден хитрый трюк", делал именно так. Я предложенный вариант хитрым трюком бы не назвал бы))
8. Dementor 638 23.11.16 10:23 Сейчас в теме
Код как я вижу имеет смысл для MXL полученного со стороны, в котором сделали группировки не отступами, а с помощью НачатьГруппуСтрок(). Очевидно, что для своего MXL, который делается на коленке намного проще самостоятельно оставить "хлебные крошки", что бы потом героически не парсить результат.

А у СКД (который вы совершенно не в тему статьи вспомнили) есть расшифровки (тип ЭлементРасшифровкиКомпоновкиДанныхПоля) с замечательным методом ПолучитьРодителей(). Поэтому когда я делаю свои обработчики расшифровок, то мне получить значение ячеек и значение группировочных полей - занятие простое, а вот для получения дополнительных параметров из соседних ячеек отчета уже приходится анализировать адрес активной ячейки и двигаться по табличному документу.
14. Vasja-k 21.09.17 11:15 Сейчас в теме
Скорректировал на случай нескольких подряд идущих группировок. Комментировать (=флудить) лень. Код рабочий.
Скрытый текст
ovasiliev; acanta; andryandry; Chif13; +4 Ответить
18. andryandry 84 27.10.18 11:57 Сейчас в теме
(14) Вот это годный код! А комментаторам "по поводу именования переменных" не так как им нравится - для вас в аду отдельный котел ?
15. WKBAPKA 215 21.04.18 15:47 Сейчас в теме
Автору респект. Для одной своей задачи сушил голову, как... спасибо
16. WKBAPKA 215 21.04.18 18:22 Сейчас в теме
Реально выручил... спасибо)
17. ABIZYAEV 18.10.18 17:38 Сейчас в теме
24. ivanchai 154 20.02.20 16:04 Сейчас в теме
Интересное решение, но у меня не работает. Похоже что алгоритм косячный. На файле который прикрепил вообще дерево кривое получается.
Прикрепленные файлы:
nomenclatures_10.09.2019_16.15.37_0.34187400 1568121337 Без заголовка шапки.mxl
26. Yashazz 3058 20.02.20 18:31 Сейчас в теме
(24)
Похоже что алгоритм косячный

Не исключено. Я мог не учесть какой-то вариант.
27. ivanchai 154 20.02.20 20:10 Сейчас в теме
(26) Могу вас попросить посмотреть загрузку на файле который я приложил, в чем косяк. В отладчике смотрел но смысл механизма с DOM так и не понял
28. Yashazz 3058 20.02.20 20:57 Сейчас в теме
(27) ОК, но не раньше вечера субботы. И лучше продолжим в личке.
25. ivanchai 154 20.02.20 16:05 Сейчас в теме
Оставьте свое сообщение

См. также

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

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

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

27.01.2020    5830    ids79    26       

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

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

16450 рублей

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

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

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

15.01.2020    7660    John_d    21       

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

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

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

02.12.2019    9493    YPermitin    72       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

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

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

6500 рублей

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

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

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

05.09.2019    25319    ids79    50       

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

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

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

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

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

03.09.2019    16301    YPermitin    78       

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

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

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

17.08.2019    18531    ids79    16       

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

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

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

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

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

08.08.2019    34246    ids79    36       

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

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

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

02.08.2019    18653    avalakh    21       

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

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

4900 рублей

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

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

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

26.07.2019    27820    ids79    10       

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

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

5 500

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

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

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

17.07.2019    19936    ids79    27       

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

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

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

09.07.2019    15063    YPermitin    12       

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

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

5500 рублей

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

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

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

04.07.2019    12191    SeiOkami    49       

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

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

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

25.06.2019    32206    ids79    17       

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

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

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

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

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

11.06.2019    17070    dmurk    144       

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

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

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

16.05.2019    27610    YPermitin    30       

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

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

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

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

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

11.05.2019    17488    Eret1k    23       

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

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

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

25.04.2019    9413    m-rv    2       

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

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

от 13000 рублей

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

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

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

16.04.2019    12553    m-rv    16       

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

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

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

07.04.2019    23683    ellavs    125       

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

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

от 1500 руб.

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

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

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

28.03.2019    18724    ellavs    83       

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

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

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

14.03.2019    20622    YPermitin    53