Картинки в строках дерева значений по условию (8.3)

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

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

картинка картинки в строках дерево значений картинка в строке дерева значений

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

Доброго всем времени! Статья для новичков. Хотел бы выложить на мой взгляд простой и удобный способ добавления картинок в строках Дерева значений по условию. Изложенный вариант будет простым примером навскидку. 

// Элементы.ДеревоОбъектовКартинка.КартинкаЗначений
// ПутьКДаннымКартинкиСтроки и КартинкаСтрок 
// установку по ИндексуКартинки использовать мы не будем

Уже имеем форму, на ней ДеревоЗначений с колонками и реквизитами, а также Вашими процедурами и функциями для заполнения дерева значений. В моем случае эта форма, на которой выводится список Документов и Справочников. 

Итак.

Имеем Реквизит ДеревоОбъектов с типом ДеревоЗначений.

Помимо имеющихся колонок в дереве (если таковые имеются), добавляем колонку с именем Картинка и типом Картинка

Далее если хотим, чтобы Картинка была в одной колонке, например, с Наименованием, необходимо добавить на форму группу колонок, добавляем и помещаем в группу наши колонки. (в моем примере колонки дерева, Картинка и ИдентификаторОбъекта).

Настраиваем группу колонок, чтобы наши две колонки (в данном случае ИдентификаторОбъекта и Картинка) были в одной ячейке

На форме поле Картинки будет следующим, устанавливаем положение заголовка - Нет

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

Как видим, картинок нет. Все верно, потому что мы настроили только внешнее оформление, теперь добавим сами картинки в строки нашего реквизита ДеревоОбъектов.

Давайте для примера реализуем следующее:

Если тип значения документ (строковый параметр, к примеру равен "Документ"), тогда картинка будет выбираться из стандартной библиотеки картинок - Документ, если Справочник, соответственно картинка справочника, иначе ничего не выводим (в смысле саму картинку не выводим).

Создадим простейшую функцию, которая будет возвращать Картинку из стандартной библиотеки по условию, как описали выше:

&НаСервере
Функция ЗаполнитьКартинкуВСтрокуДерева(УсловноеЗначение = Неопределено) 
	СтроковоеЗначение = Строка(УсловноеЗначение);
	Если СтроковоеЗначение = "Документы" Тогда
		Картинка = БиблиотекаКартинок.Документ;
	ИначеЕсли СтроковоеЗначение = "Справочники" Тогда  
		Картинка = БиблиотекаКартинок.Справочник;
	Иначе
		Картинка = "";
	КонецЕсли;
	
	Возврат Картинка;
КонецФункции

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

//В данном случае в обработке в значении НовыйОбъект.ИдентификаторОбъекта.Родитель - будет Документы не строкового типа
// далее это значение преобразуется в Строку в Функции ЗаполнитьКартинкуВСтрокуДерева()   

НовыйОбъект = СтрокаДерева.Добавить();
НовыйОбъект.Картинка = ЗаполнитьКартинкуВСтрокуДерева(НовыйОбъект.ИдентификаторОбъекта.Родитель);

При добавлении строки в поле колонки Картинка, которое мы добавляли в ДеревоОбъектов с типом ДеревоЗначений, будет добавлена картинка.

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

 

Если все описать кратко:

  1. Добавляем в реквизит с типом ДеревоЗначений колонку реквизита с типом Картинка.
  2. Размещаем реквизит колонки на форме
  3. В функции или процедуре при добавлении строк в ДеревоЗначений в свойство реквизита колонки присваиваем картинку.

 

P.S.

Вот вроде бы и все, вроде ничего сложного. Если кому помог, буду рад!

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 2325 22.01.19 17:28 Сейчас в теме
А зачем так извращаться-то? Проще надо быть - и люди к вам потянутся!

У дерева на форме есть свойства "ПутьКДаннымКартинкиСтроки" и "КартинкаСтрок". В поле, куда указывает путь, нужно установить путь, а в поле картинки - просто выбрать картинку с кучей всего на свете (например, "ПиктограммыЭлементов"). Дальше помещать индекс картинки в установленное поле картинки. Профит!

И вообще, пиктограмму в колонку нужно устанавливать запросом. Т.е. конструкция "ВЫБОР КОГДА Условие1 ТОГДА 1 КОГДА Условие2 ТОГДА 2 ИНАЧЕ 3 КОНЕЦ КАК Картинка" спасет отцов и детей русской демократии от западного ига!
Прикрепленные файлы:
SergVB; oyeah; adamst; vladimirmatancev; sam441; gelmoriel; sorb; VooDOOPRo; kote; skalex; mivari; Krio2; markers; mirco; WizaXxX; Plotks2017; karpik666; awk; ivanov660; CSiER; user774630; wowik; ABudnikov; Shmell; kolya_tlt; Soloist; rpgshnik; json; _Sedoy; fancy; dsdred; Bazil; Diversus; pm74; +34 1 Ответить
2. pm74 194 22.01.19 17:37 Сейчас в теме
3. gubar 23.01.19 03:18 Сейчас в теме
(1)
Элементы.ДеревоОбъектовКартинка.КартинкаЗначений
// ПутьКДаннымКартинкиСтроки и КартинкаСтрок
// установку по ИндексуКартинки использовать мы не будем


Имхо мне больше нравится именно мой способ, но спасибо за вариант. )
15. user774630 23.01.19 14:57 Сейчас в теме
(1) +1
А кому интересно - посмотреть рабочий пример можно в 1С:СППР. Там как раз дерево метаданных так и визуализировано (т.е. справочник, представляющий метаданные конфигураций.
21. markers 256 24.01.19 05:04 Сейчас в теме
Простите, не удержался. Мне забавно смотреть на такой код, который за любой мелочью лезет на сервер да ещё и с контекстом! Простите, зачем тут контекст?
&НаСервере
Функция ЗаполнитьКартинкуВСтрокуДерева(УсловноеЗначение = Неопределено) 
	СтроковоеЗначение = Строка(УсловноеЗначение);
	Если СтроковоеЗначение = "Документы" Тогда
		Картинка = БиблиотекаКартинок.Документ;
	ИначеЕсли СтроковоеЗначение = "Справочники" Тогда  
		Картинка = БиблиотекаКартинок.Справочник;
	Иначе
		Картинка = "";
	КонецЕсли;
	
	Возврат Картинка;
КонецФункции
Показать

А потом удивляются, почему их код тормозит при клиент-серверном взаимодействии, особенно если клиент удаленно разнесен с сервером и не говоря уже о том, что у клиента может быть слабый интернет... Этим даже сама 1С порой страдает...
Пожалуйста, прочитайте замечательную статью про клиент-серверное взаимодействие https://infostart.ru/public/682305/
Так-же, вы прекрасно можете кешировать картинку на клиенте, получив с сервера только нужный набор картинок для группы и элемента, а затем на клиенте уже вставляя картинку куда надо.
Но вообще, как и сказали в (1) правильней использовать ПутьКДаннымКартинкиСтроки, и при таком варианте появляется действительно крутая возможность, определять картинку сразу в запросе не производя ни-каких постобработок результатов запроса.
Старайтесь думать не о быстроте работы на тестовом компьютере,а том как это будет лучше, и не будут эти места, точкой тормозов при клиент-серверном взаимодействии. Я вот тоже давиче выкатил в прод не оптимальный запрос, у меня всё работало как положено, в центральной базе на сервере с SQL тоже всё было хорошо, но вот РИБ узлы, "оценили" этот кривой запрос. Но то моя вина (поспешил, не проверил обстоятельно).
Собственно на ошибках учатся, я очень надеюсь в этом на вас!
adamst; Artem-B; vladimirmatancev; VooDOOPRo; A_Max; rpgshnik; mivari; pavlov_dv; Krio2; +9 Ответить
28. adamst 2 05.11.20 21:24 Сейчас в теме
(21)хорошее замечание, без контекста ... правильнее тем более что без него прекрасно работать будет, правда не понятно что плохого будет если эту процедуру вызывать из серверной другой процедуры, если заполнение дерева проходит на сервере.
23. w.r. 595 24.01.19 11:43 Сейчас в теме
(1)
олонку нужно устанавливать запросом. Т.е. конструкция "ВЫБОР КОГДА Условие1 ТОГДА 1 КОГДА Условие2 ТОГДА 2 ИНАЧЕ 3 КОНЕЦ КАК Картинка" спасет отцов и детей русской демократии от западного ига!


Для примера автора я бы сделал через СКД внешнюю функцию ОбщегоНазначения.ВидОбъектаПоТипу и дерево значений примерно так

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ТекстЗапросаКомпоновки= 
	   "ВЫБРАТЬ
	   |	АктОбОказанииУслуг.Ссылка КАК Ссылка
	   |ИЗ
	   |	Документ.АктОбОказанииУслуг КАК АктОбОказанииУслуг
	   |
	   |ОБЪЕДИНИТЬ ВСЕ
	   |
	   |ВЫБРАТЬ
	   |	Номенклатура.Ссылка
	   |ИЗ
	   |	Справочник.Номенклатура КАК Номенклатура";
	
	ДеревоРезультата = Новый ДеревоЗначений;
	
	СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
	
	ИсточникДанных=СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
	ИсточникДанных.Имя="ИсточникДанных";
	ИсточникДанных.ТипИсточникаДанных="Local";
	
	НаборДанныхЗапрос=СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
	НаборДанныхЗапрос.Имя="НаборДанных1";
	НаборДанныхЗапрос.Запрос=ТекстЗапросаКомпоновки;
	НаборДанныхЗапрос.ИсточникДанных="ИсточникДанных";
	
	ПолеСсылка=НаборДанныхЗапрос.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
	ПолеСсылка.Поле="Ссылка";
	ПолеСсылка.ПутьКДанным="Ссылка";
	
	ПолеКартинка = СхемаКомпоновкиДанных.ВычисляемыеПоля.Добавить();
	ПолеКартинка.ПутьКДанным = "Картинка";                                                                
	ПолеКартинка.Выражение = "выбор 
							 |когда ОбщегоНазначения.ВидОбъектаПоТипу(ТипЗначения(Ссылка)) = ""Документ"" тогда 0 
							 |когда ОбщегоНазначения.ВидОбъектаПоТипу(ТипЗначения(Ссылка))  = ""Справочник"" тогда 1 
							 |конец";
	
	ПолеОбъект = СхемаКомпоновкиДанных.ВычисляемыеПоля.Добавить();
	ПолеОбъект.ПутьКДанным = "Объект";
	ПолеОбъект.Выражение = "ОбщегоНазначения.ВидОбъектаПоТипу(ТипЗначения(Ссылка))";
	
	НастройкаКомпоновки=СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	ГруппировкаОбъект=НастройкаКомпоновки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
	
	ПолеОбъект=ГруппировкаОбъект.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеОбъект.Поле=Новый ПолеКомпоновкиДанных("Объект");	
	ГруппировкаОбъект.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

	ГруппировкаВложеная = ГруппировкаОбъект.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
	ПолеСсылка=ГруппировкаВложеная.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеСсылка.Поле=Новый ПолеКомпоновкиДанных("Ссылка");
	ПолеКартинка=ГруппировкаВложеная.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
	ПолеКартинка.Поле=Новый ПолеКомпоновкиДанных("Картинка");
	ГруппировкаВложеная.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	
    КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкаКомпоновки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,,,Истина);
    ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ДеревоРезультата);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
	
	ЗначениеВРеквизитФормы(ДеревоРезультата, "Дерево");
	
КонецПроцедуры
Показать
Olenevod; +1 Ответить
25. rpgshnik 2568 25.01.19 04:19 Сейчас в теме
Предлагаю автору статьи отметить первый комментарий кнопкой "ЛУЧШИЙ".
4. json 2884 23.01.19 11:41 Сейчас в теме
Резюме данной статьи:
Чтобы вывести картинку в строке таблицы - используй тип Картинка.
(с) Кэп
5. gubar 23.01.19 11:43 Сейчас в теме
24. Alien_job 179 24.01.19 16:04 Сейчас в теме
(4) Как бы хотелось, чтобы это было смешно. Но иногда чтобы вывести картинку нужно использовать хранилище и строку.
6. w.r. 595 23.01.19 12:32 Сейчас в теме
Это получается каждую строку дерева нужно обработать функцией ЗаполнитьКартинкуВСтрокуДерева? А если строк в дереве 50-100 тыс или больше?
9. rpgshnik 2568 23.01.19 13:01 Сейчас в теме
(6) выше сказано что это ИМХО %)
17. gubar 23.01.19 16:09 Сейчас в теме
(6)

В чем проблема заполнить картинку 16х16 - 50 тыс строк?
7. alex15650 196 23.01.19 12:56 Сейчас в теме
На самом деле, зачем изобретать велосипед. Это делается штатными механизмами без написания кода. В дереве значений (или таблице) делаем специальный реквизит числового типа с индексом картинки в коллекции, когда этот реквизит переносим на форму, ставим ему вид "Поле картинки" и заполняем свойство "Картинка значений". А сам индекс картинки заполняем любым удобным способом в зависимости от условий. Всё. Тут главное иметь в наличии нужную коллекцию картинок.
adamst; robix; PitonTBs; kote; +4 Ответить
8. gubar 23.01.19 13:00 Сейчас в теме
(7)

Вот дело в том что в наличии коллекции картинок нет, но нужно вывести картинку (один из способов). Так конечно штатными средствами. Это для пример и ничего больше).
10. karpik666 3296 23.01.19 13:48 Сейчас в теме
Как-то даже грустно, что такие вещи пользуются популярностью, или сейчас видимо на Инфостарте дефицит статей для программистов, и засисилие графомании, а на безрыбье...
robix; kote; rpgshnik; json; gzharkoj; +5 1 Ответить
11. Evg-Lylyk 3441 23.01.19 13:50 Сейчас в теме
Поддержу автора, описанный способ более удобен по сравнению с коллекцией картинок.
Работа с картинками происходит более рационально.
Примеры: Добавить в коллекцию картинку из библиотеки проблемно, нельзя использовать картинку коллекции как отдельную.
gubar; frkbvfnjh; +2 Ответить
12. starik-2005 2325 23.01.19 14:28 Сейчас в теме
(11)
нельзя использовать картинку коллекции как отдельную
Можно. Просто заполните индекс этой картинки в соответствующем реквизите.
rpgshnik; +1 Ответить
13. Evg-Lylyk 3441 23.01.19 14:41 Сейчас в теме
(12) А если это картинка декорация на форме, картинка кнопки или элемент другой коллекции
или ее нужно вставить в справку.
14. starik-2005 2325 23.01.19 14:47 Сейчас в теме
(13) а что, у вас на компьютере удалили паинт? Не совсем понятен также контекст - с какой целью элемент коллекции нужно отображать в виде декорации? У большинства элементов приведенной мной коллекции есть отдельные картинки. А по поводу справки, то лучше копировать часть интерфейса, а не отдельную картинку. И уже описывать эту часть словами. Но т.к. пользователи все меньше понимают слова, то вместо встроенной в 1С справки лучше записать видео - тогда проблем с картинками в справке вообще не будет.
rpgshnik; +1 Ответить
19. Evg-Lylyk 3441 23.01.19 17:04 Сейчас в теме
(14) Еще раз поподробнее.
Публикация уместна при этом проста. Сам я где то около года назад столкнулся с новым методом. Судя по комментариям и плюсам много староверов.

КоллекцияКартинок и Индекс картинки такой подход использовался только Таблицы и Дерева и не знаю где еще, а вот картинка повсеместно. Теперь же можно за него забыть.
В новом подходе плюс что не нужно использовать коллекции не происходит дублирования картинки одиночной и внутри коллекции.
Лично для меня состовляет проблему сделать корректную картинку с прозрачностью внутри коллекции иногда негде взять иногда прозрачность краев на глаз.
Сейчас 1с начинает использовать картинки zip когда внутри картинки для разных размеров в старом подходе с этим проблемы.
Когда таблица имеет 3 колонки с картинками в старом подходе проблемы
Новый подход более читабелен прямо в коде написано
Если Документ.ПометкаУдаления Тогда
Картинка = БиблиотекаКартинок.ДокументПомеченныйНаУдаление
КонецЕсли;
в старом подходе
Если Документ.ПометкаУдаления Тогда
Индекс = 15;
КонецЕсли;

"с какой целью элемент коллекции нужно отображать в виде декорации"
Нужно достаточно часто. В бух.3 есть в форме документа картинка Проведен, НеПроведен, ПомеченНаУдаление

"У большинства элементов приведенной мной коллекции есть отдельные картинки." дублирование картинок

Новый подход удобнее в разработке для себя не заметил плюсов старого похода.
Gorus; unichkin; gubar; +3 Ответить
18. gubar 23.01.19 16:09 Сейчас в теме
(11)

Спасибо добрый человек.
16. androgin 23.01.19 15:41 Сейчас в теме
20. AlexKo84 23.01.19 17:56 Сейчас в теме
Можно получать картинку из макета двоичных данных

&НаСервере
Функция ПолучитьКартинкуИзМакетаНаСервере(ИмяМакета)
	обк = РеквизитФормыВЗначение("Объект");
	Макет = обк.ПолучитьМакет(ИмяМакета);
	
	Картинка = Новый Картинка(Макет);
	
	Возврат Картинка;
КонецФункции
Показать
Olenevod; +1 Ответить
22. Evg-Lylyk 3441 24.01.19 10:21 Сейчас в теме
(0) Автор исправьте функцию получения картинки можно сделать чтобы работала на клиенте с учетом сообщения 21
А то опять начинается что лучше ПутьКДаннымКартинки )
26. rwn_driver 8 25.01.19 10:12 Сейчас в теме
Добрый день.
Куда исчезло сообщение 21?
27. adamst 2 05.11.20 21:18 Сейчас в теме
чего все ругаются, рабочий вариант :) если вызывать процедуру "на сервере без контекста" то работает совсем не плохо, тем более если вызывать из процедуры которая уже выполняется на сервере, с клиента я бы не рискнул.
Тем более только благодаря автору статьи я прочитал комментарии как правильно делать:
из первого комментария: "... хотя этот способ "У дерева на форме есть свойства "ПутьКДаннымКартинкиСтроки" и "КартинкаСтрок". В поле, куда указывает путь, нужно установить путь, а в поле картинки - просто выбрать картинку с кучей всего на свете (например, "ПиктограммыЭлементов")."
понятно что этот вариант более эффективный, и наверняка сделан для наиболее быстрого выполнения, действительно в запросе можно его отработать и будет вообще очень производительный вариант.
29. FatPanzer 13 05.11.20 21:33 Сейчас в теме
Кто-то серьезно решил под каждое уникальное дерево рисовать отдельную функцию для установки картинки? Под дерево метаданных - одну функцию, под дерево связанных документов - другую, под статусы задач - третью...
Серьезно?
Или написать одну метаглобальную функцию с тысячей ИНАЧЕЕСЛИ по количеству имеющихся в конфигурации картинок? И запускать в нее таблицу с тысячей строк?

Ну ребята, ну вы даёте... И все из-за того, что кому-то жалко пару килобайт на коллекцию картинок в дереве метаданных... Дублирование, видите, ли...
30. GlebBR 27 13.11.20 19:49 Сейчас в теме
спасибо автору за статью, узнал несколько способов как это сделать.
Оставьте свое сообщение

См. также

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

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

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

27.01.2016    80810    Serginio    113    

Обзор полезных методов БСП 3.1.4

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

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

25.03.2021    22208    rayastar    49    

Звуковое управление в 1С 8.3

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    4033    velemir    31    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    5953    comol    31    

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    65217    user700211_a.straltsou    29    

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

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

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

27.01.2020    49855    ids79    26    

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

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

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

15.01.2020    35633    John_d    22    

Шпаргалка (БСП). Добавление в новый документ механизма печати дополнительных печатных форм

Печать БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

10.10.2019    24942    John_d    19    

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

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

15.01.2019    31467    itriot11    27    

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

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

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

07.10.2019    35637    HostHost    41    

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

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

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

01.10.2019    45715    Yashazz    50    

Самый примитивный HTTP-сервис в мире

WEB v8 Бесплатно (free)

Пошаговый пример создания простейшего HTTP-сервиса, который генерирует HTML-страницу для поиска товара, а также реализует асинхронное получение данных из базы.

12.09.2019    24066    YPermitin    27    

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

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

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

10.12.2016    39290    unichkin    74    

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

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

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

06.09.2019    80677    rpgshnik    70    

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

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

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

05.09.2019    65962    ids79    55    

Обмен данными. Консистентность vs Многопоточность

Интеграция v8 1cv8.cf Бесплатно (free)

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

03.09.2019    14200    m-rv    1    

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

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

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

15.10.2018    33581    tormozit    105    

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

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

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

08.08.2019    125383    ids79    73    

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

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

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

26.07.2019    88862    ids79    14    

Обработчики событий при записи объектов. Зачем и что за чем?

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

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    88976    AlbinaAAA    33    

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

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

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

20.09.2012    80567    tormozit    131    

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

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

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

25.06.2019    66952    ids79    27    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    50933    YPermitin    55    

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

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

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

25.04.2019    16873    m-rv    3    

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

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

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

11.07.2007    51606    tormozit    51    

Как настроить правильную техподдержку (helpdesk, service desk на коленке)

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени v8 УУ Бесплатно (free)

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

24.04.2019    25780    siddy    0    

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

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

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

16.04.2019    21569    m-rv    17    

Excel vs 1С: битва с неожиданным исходом

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    39717    bolefirenko    121    

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

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

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

10.09.2017    48289    tormozit    74    

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

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

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

07.04.2019    40022    ellavs    130    

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

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

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

28.03.2019    29871    ellavs    90    

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

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

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

03.02.2019    54827    ids79    11    

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

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

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

14.12.2018    48859    ids79    81    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    125114    GeterX    129    

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

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

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

10.11.2018    40494    ids79    44    

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Инструментарий разработчика Управление проектом v8 1cv8.cf Бесплатно (free)

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    84955    stas_ganiev    83    

Планы обмена 1С

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

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

10.09.2018    77735    zhichkin    32    

Из Excel в 1С запросом

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

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

14.08.2018    21191    m-rv    5    

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

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

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

25.07.2018    30786    grumagargler    31    

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

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

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

25.06.2018    29630    olegtymko    48    

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

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

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

01.06.2018    33969    m-rv    22    

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

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

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

23.05.2018    25266    slozhenikin_com    20    

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

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

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

13.05.2018    18682    Rustig    9    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    24447    V.Stavinsky    11    

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

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

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

19.02.2018    48865    ildarovich    47