Картинка в таблице СКД (управляемое приложение) на примере УТ11, простое решение "в лоб" или легкая модификация стандартного отчета Прайс-Лист

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

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

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

Итоговая задача: построить прайс-лист с изображениями номенклатур для УТ (т.е. в прайсе предполагается выводить изображения, которые показываются в карточке номенклатуры)

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

Будем дорабатывать стандартный отчет УТ 11.0.9.15 Прайс-лист, для удобства сохраним его в качестве внешнего.  

Порядок действий для вывода картинок в печатной форме СКД:

1. К запросу СКД добавляем поле со ссылкой на справочник НоменклатураПрисоединенныеФайлы, соответствущей элементу номенклатуры.

2. При выводе соответствующего элемента макета читаем информацию о картинке и выводим её в соответствующей ячейке:

   2.1. Получаем ячейку табличного документа, в которой предполагается вывести кртинку.

   2.2. Преобразуем бинарную информацию по ссылке, полученной в п.1. в картинку и выводим её в ячейке, полученной в п.2.1.

   2.3. Производим дополнительное оформление ячейки и картинки (меняем размер, цвет линии и тд.)

 

Итак по вышеописанному плану:

Добавим в запрос СКД новое поле Изображение:

ЦеныНоменклатурыСрезПоследних.Номенклатура.ФайлКартинки КАК Изображение

Поле в Запрос СКД

Видоизменим варианты настроек (добавим группировку по Изображению):

Изменение настроек СКД 

Добавим новый параметр ШиринаКолонкиИзображения, через который будем регулировать размер изображения:

Параметры СКД

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

СтандартнаяОбработка = Ложь;
ИмяКолонкиИзображения = "Изображение";
ДокументРезультат.Очистить();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Получаем параметр отчета ШиринаКолонкиИзображения, и устанавливаем ширину колонки, в которой предполагаем выводить изображение
ШиринаКолонкиИзображения = ВернутьЗначениеПараметраНастройкиСКД(КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы, "ШиринаКолонкиИзображения", 20); //В средних символах

ПолеИзображения = СхемаКомпоновкиДанных.НаборыДанных.ПрайсЛист.Поля.Найти(ИмяКолонкиИзображения);
Если Не ПолеИзображения = Неопределено Тогда
     ОформлениеМинимальнойШириныКолонки = СхемаКомпоновкиДанных.НаборыДанных.ПрайсЛист.Поля.Найти(ИмяКолонкиИзображения).Оформление.Элементы.Найти("МинимальнаяШирина");
     ОформлениеМинимальнойШириныКолонки.Использование = Истина;
     ОформлениеМинимальнойШириныКолонки.Значение = ШиринаКолонкиИзображения;
КонецЕсли;
 

//Выводим макет, здесь все почти стандартно.

Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.НачатьВывод();
Пока Истина Цикл
     ЭлементРезультата = ПроцессорКомпоновки.Следующий();
     Если ЭлементРезультата = Неопределено Тогда Прервать;КонецЕсли;
     ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
     Если ЭлементРезультата.ЗначенияПараметров.Количество() = 0 Тогда Продолжить; КонецЕсли;
 
     Для Каждого ЭлементПараметра Из ЭлементРезультата.ЗначенияПараметров Цикл
         Если ТипЗнч(ЭлементПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
             Поля = ДанныеРасшифровки.Элементы[ЭлементПараметра.Значение].ПолучитьПоля();
             Для Каждого Поле Из Поля Цикл
                 Если ТипЗнч(Поле.Значение) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") Тогда
                     Если Поле.Значение.Пустая() Тогда Продолжить; КонецЕсли;
                     //Поиск номера колонки, с нужным именем ИмяКолонкиИзображения, для таки вывода изображения
                     Для НомерКолонки = 1 По ДокументРезультат.ШиринаТаблицы Цикл
                         Расшифровка = ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, НомерКолонки, ДокументРезультат.ВысотаТаблицы, НомерКолонки).Расшифровка;
                         Если Расшифровка = Неопределено Тогда Продолжить; КонецЕсли;
                         Поля = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
                         Если Поля.Найти(ИмяКолонкиИзображения) = Неопределено Тогда Продолжить; КонецЕсли;
                         ОбластьИзображения = ДокументРезультат.Область(ДокументРезультат.ВысотаТаблицы, НомерКолонки);
                         ВывестиИзображениеЭлементаНоменклатуры(ДокументРезультат, Поле.Значение, ОбластьИзображения, ШиринаКолонкиИзображения);
                     КонецЦикла;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();

Для удобства процедура вывода изображения выделена в отдельную, эта процедура просто получает данные для вывода рисунка, выводит его (используя функцию), настраивает его оформление.

Процедура ВывестиИзображениеЭлементаНоменклатуры(ТД, ЭлементСправочника, Область, ШиринаКолонкиИзображения)
     Если ЭлементСправочника.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
         СтуктураРег = РегистрыСведений.ПрисоединенныеФайлы.Получить(Новый Структура("ПрисоединенныйФайл", ЭлементСправочника));
         ДанныеКартинки = СтуктураРег.ХранимыйФайл.Получить();
     Иначе
         ДанныеКартинки = ?(ЗначениеЗаполнено(ЭлементСправочника.Том.ПолныйПутьWindows), ЭлементСправочника.Том.ПолныйПутьWindows, ЭлементСправочника.Том.ПолныйПутьLinux)
         + ЭлементСправочника.ПутьКФайлу;
     КонецЕсли;
     Рисунок = ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область);
     Область.АвтоВысотаСтроки = Ложь;
     Область.ВысотаСтроки = ШиринаКолонкиИзображения * 1.31 / 0.3759;// Среднее значение пункта 1 пункт = 0.3759 мм (по Wiki)
     Область.Расшифровка = ЭлементСправочника;
     Рисунок.ЦветЛинии = Область.ЦветРамки;
КонецПроцедуры 

Из предыдущей процедуры вызывается функция, которая непосредственно выводит изображение в заданной области табличного документа 

Функция ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область)
     Изображение = ТД.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
     Изображение.РазмерКартинки = РазмерКартинки.АвтоРазмер;
     Индекс = ТД.Рисунки.Индекс(Изображение);
     ТД.Рисунки[Индекс].Картинка = Новый Картинка(ДанныеКартинки, Истина);
     ТД.Рисунки[Индекс].Расположить(Область);
     Возврат ТД.Рисунки[Индекс];
КонецФункции

Кроме того при компоновке используется процедура извлечения параметра из СКД:

Функция ВернутьЗначениеПараметраНастройкиСКД(КоллекцияЭлементовНастройки, ИмяНастройки, ЗначениеПоУмолчанию = Неопределено)

     Настройка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяНастройки);
     Если Настройка = Неопределено Тогда Возврат ЗначениеПоУмолчанию; КонецЕсли;
     НастрокаПоИД = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Настройка.ИдентификаторПользовательскойНастройки);
     Если Не ЗначениеЗаполнено(НастрокаПоИД.Значение) Тогда
         Если Не ЗначениеПоУмолчанию = Неопределено Тогда
             НастрокаПоИД.Значение = ЗначениеПоУмолчанию;
         КонецЕсли;
     КонецЕсли;
     Возврат ?(НастрокаПоИД.Использование, НастрокаПоИД.Значение, ЗначениеПоУмолчанию);
КонецФункции

Готовый отчет доступен к скачиванию. 

Сформированный отчет выглядит приблизительно так:

ПрайсЛист

ЗЫ: Существует некоторое незначительное развитие данного отчета: Прайс лист с картинками для УТ11 (добавление логотипа и свободных текстовых полей)

 

Скачать файлы

Наименование Файл Версия Размер
ПрайсЛист000.erf

.erf 12,93Kb
281
.erf 12,93Kb 281 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. @lexandr 173 08.04.13 12:02 Сейчас в теме
Пришлось немного эту функцию переделать, а то ошибки иногда выдает, а так очень помогло, вывел в прайс на ут 11.1.1.13 картинку.

Функция ВернутьЗначениеПараметраНастройкиСКД(КоллекцияЭлементовНастройки, ИмяНастройки, ЗначениеПоУмолчанию = Неопределено)

Настройка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяНастройки);
Если Настройка = Неопределено Тогда Возврат ЗначениеПоУмолчанию; КонецЕсли;
НастрокаПоИД = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Настройка.ИдентификаторПользовательскойНастройки);
Если НастрокаПоИД = Неопределено Тогда
Возврат ЗначениеПоУмолчанию;
Конецесли;
Если Не ЗначениеЗаполнено(НастрокаПоИД.Значение) Тогда
Если Не ЗначениеПоУмолчанию = Неопределено Тогда
НастрокаПоИД.Значение = ЗначениеПоУмолчанию;
КонецЕсли;
КонецЕсли;
Возврат ?(НастрокаПоИД.Использование, НастрокаПоИД.Значение, ЗначениеПоУмолчанию);
КонецФункции
Nigelist; +1 Ответить
2. mxm2 1198 08.04.13 13:26 Сейчас в теме
(1) @lexandr, Странно, у меня вообще ошибок не возникало никогда, причем во всех трех версиях отчета, даже здесь http://infostart.ru/public/178422/, возможно проблема в том, что какое-либо поле исключено из пользовательских настроек.
30. Nigelist 09.03.19 03:53 Сейчас в теме
3. tolyan_ekb 188 11.06.13 08:16 Сейчас в теме
Отличное решение без доп. макета. На основе публикации сделал похожее для картинок из внешних файлов. Огромное спасибо.
4. tolyan_ekb 188 11.06.13 09:35 Сейчас в теме
Почему-то у меня не получается изменить высоту строки с изображением. Пробовал и явно, и с помощью изменения в коде
Область.ВысотаСтроки = ШиринаКолонкиИзображения * 134.31 / 0.3759;
5. mxm2 1198 11.06.13 10:00 Сейчас в теме
(4) tolyan_ekb,

вот здесь: http://infostart.ru/public/178422/

Upd 07.04.2013: Добавлена возможность подгонки строки прайса по высоте отображаемой картинки (устанавливается в параметрах), использует стандартную библиотеку wiaaut.dll, доступную, например в windows 7, и не будет работать, если сервер вертится на linux системе (файл ПрайсЛистХX)


родной адекватно работающей функции - не нашел.
6. mxm2 1198 11.06.13 10:12 Сейчас в теме
(4) tolyan_ekb, смотрите пятый комментарий.
8. tolyan_ekb 188 13.06.13 11:22 Сейчас в теме
(6) спасибо. Но я установил высоту напрямую в условном оформлении, после чего она изменилась. Возможно, программно чего-то не доуказал.
9. varovinm 25.10.13 13:35 Сейчас в теме
(6) Спасибо!
Не срабатывает инициализация ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки)
Дело в том, что у меня в СКД есть параметры в которых задано выражение, например, Справочники.Валюты.НайтиПоКоду("156"). Может быть подскажете как получить значение у этих параметров????
Прикрепленные файлы:
10. mxm2 1198 25.10.13 15:35 Сейчас в теме
(9) varovinm, попробуйте
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки, Истина);

вообще лучше либо задавать валюту в параметрах (неявно), либо получать её в запросе, например из констант.
7. mxm2 1198 11.06.13 13:12 Сейчас в теме
(4) tolyan_ekb, еще возможно в Вашем макете стоИт ограничение минимальной высоты строки или автовысота.
11. killexx 16.12.13 23:47 Сейчас в теме
Реально ли сделать такой прайс для 1С 8.1, "Управление торговлей для Украины", редакция 2.3 ?
Прикрепленные файлы:
12. mxm2 1198 17.12.13 08:05 Сейчас в теме
(11) killexx, Реально всё. Если Ваша конфигурация на управляемых формах то за образец можете использовать текущую разработку. Если же на обычных формах - то, например вот эту http://infostart.ru/public/151012/.
13. MarryJane 28 24.11.14 14:13 Сейчас в теме
Коллеги, а скажите может есть мысли при выведении отчета с картинками уж больно долго выводится. Может у кого нить есть мысли куда копать. (Я попробывал выводить в УПР интерфейсе и в простом, так вот в простом интерфейсе выводится быстрее на порядок). может начать смотреть размеры картинок.
14. ReSY 115 04.12.14 12:10 Сейчас в теме
Понравилась реализация, автору плюс! На примере публикации создал отчет. Большое спасибо.
15. Graf71 04.06.15 14:24 Сейчас в теме
Спасибо автору за публикацию. Очень помогло в собственной разработке.
16. sergiowood 2 08.06.15 01:06 Сейчас в теме
Попробовал сделать по данной схеме отчёт, выдаёт ошибку
"Поле изображение не может быть использовано в группировке номенклатура, упаковка, характеристика"
Подскажите пожалуйста в чём может быть проблемка?
Делал на УТ 11.1.4.14 , на основе типового отчёта "Прайс"
Если "изображение" как ресурс, то ошибку не выдаёт но и поле "изображение" не выводит вообще
18. Lev292 35 22.11.16 23:43 Сейчас в теме
В последних версиях УТ11 этот отчет уже не работает!!!
Ребята из 1С сами задействовали Процедуру ПриКомпоновкеРезультата и если там поставить СтандартнаяОбработка = Ложь. то отчет перестает работать
19. ssn5810 80 25.03.17 00:37 Сейчас в теме
Да отчет не работает
Метод объекта не обнаружен ПолучитьПараметр
Jack_off; Aquashop; +2 Ответить
20. Margo_X 05.04.17 14:26 Сейчас в теме
В версии УТ 11 _11.3.2.207 отчет не работает

Метод объекта не обнаружен ПолучитьПараметр
Jack_off; ewgeniy1000; Aquashop; +3 Ответить
21. Orchild 08.08.17 11:23 Сейчас в теме
Функция ПоучитьПараметр находится в общем модуле КомпоновкаДанныхКлиентСервер.
22. waol 275 10.10.17 10:29 Сейчас в теме
прекрасно - работает )
спасибо!
23. bad_wag 36 17.11.17 14:59 Сейчас в теме
На небольших объемах все это хорошо работает, но когда в отчете тысячи строк и в каждой картинка время ожидание неприемлемо велико. Есть у кого нибудь идеи как оптимизировать этот нюанс? Очень бы хотелось без изменения конфигурации
24. RocKeR_13 913 30.05.18 11:42 Сейчас в теме
Хм, делал по аналогии и такая получается штука: в файловой базе 550 строк с картинками выводит за 3-4 минуты, перевожу базу на SQL - спустя полчасатак никаких результатов и не видно... Пока отладку не включал, вставил записи в ЖР: в процедуре "ПриКомпоновкеРезультата" строку "ПроцессорВывода.ЗакончитьВывод();" успешно проходит... Картинки пробовал и в базе размещать, и в каталогах
UPD: спустя 40 минут все-таки вывел
27. Els11 17 13.10.18 21:30 Сейчас в теме
(24) Самое узкое место в выводе отчета с картинками это передача его обратно с сервера на клиента, При передаче платформа сериализует табличный документ и передает таким образом в разы больше информации , чем нужно. А на клиенте съедаются в это время Гигабайты.дискового постранства. У меня при выводе отчета продаж за месяц отчет вообще падал с ошибкой формата потока. Нашел следующий выход:
Если отчет не в типовом решении, то в обработку на сервер не надо передавать табличный документ.
При окончании обработки на сервере созданный табличный документ помещается во временной хранилище. Адрес временного хранилища можно задать или в реквизите формы или передать с клиента. А на клиенте уже из временного хранилища создается табличный документ. Что-то типа следующего:
&НаКлиенте
Процедура Сформировать(Команда)
	Адрес = "";
	СформироватьОтчетНаСервере(Адрес, Период);
	
	ТабДок = ПолучитьИзВременногоХранилища(Адрес);
	ТабДок.Показать();
КонецПроцедуры

&НаСервере
Процедура СформироватьОтчетНаСервере(Адрес, Период);
	ТабДок = Новый ТабличныйДокумент;
	ОбъектОтчет = РеквизитФормыВЗначение("Отчет");
	ОбъектОтчет.СформироватьОтчет(ТабДок, Период);
	
	Адрес = ПоместитьВоВременноеХранилище(ТабДок,ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры
Показать

Если про типовое решение, то в отчете по себестоимости и выручке продаж сделал так:
1) скопировал и создал из типового отчета свой отчет ОтчетПродажиСИзображением
2) Скопировал общую форму отчета и поместил ее в новый отчет
3) Выбрал форму отчета - новую форму отчета
4) в новой форме отчета добавил реквизит АдресН Тип строка неограниченной длины
5) в форме отчета в процедуре ФоновоеЗаданиеЗагрузитьРезультат закомментировал стандартную передачу результата табличного документа и добавил строку по помещению табличного документа во временное хранилище
	//ОтчетТабличныйДокумент = РезультатФормирования.ТабличныйДокумент;
	АдресН = ПоместитьВоВременноеХранилище(РезультатФормирования.ТабличныйДокумент,ЭтаФорма.УникальныйИдентификатор);

6) в процедуре ПослеФормирванияНаКлиенте добавил строку в начале процедуры
	ОтчетТабличныйДокумент = ПолучитьИзВременногоХранилища(АдресН);

Отчет из полутора тысяч строк вводится за 3 минуты. Отчет за месяц, который ранее не выводился вообще, выводится менее 15 минут. Работает в фоне, при условии, что отчет в конфигурации, а не внешний. Все сделанные доработки тоже касаются варианта, что отчет встроенный. Если внешний, то возможно алгоритмы идут по другим веткам и потребуются доработки.
Serj1C; RocKeR_13; acanta; +3 Ответить
25. Els11 17 25.09.18 12:52 Сейчас в теме
Для текущих версий ЕРП и УТ11 в процедуре ВывестиИзображениеНоменклатуры вместо обращения к РС Присоединенные файлы необходимо прописать следующее (Сначала закомментированный код):
//Если ЭлементСправочника.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
// СтуктураРег = РегистрыСведений.ПрисоединенныеФайлы.Получить(Новый Структура("ПрисоединенныйФайл", ЭлементСправочника));
// ДанныеКартинки = СтуктураРег.ХранимыйФайл.Получить();
//Иначе
// ДанныеКартинки = ?(ЗначениеЗаполнено(ЭлементСправочника.Том.ПолныйПутьWindows), ЭлементСправочника.Том.ПолныйПутьWindows, ЭлементСправочника.Том.ПолныйПутьLinux)
// + ЭлементСправочника.ПутьКФайлу;
//КонецЕсли;

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

ДанныеКартинки = ПолучитьИзВременногоХранилища(РаботаСФайлами.ДанныеФайла(ЭлементСправочника).СсылкаНаДвоичныеДанныеФайла);

P.s. Если кто кинет ссылку на инструкцию как в комментариях красиво код оформлять, буду благодарен. (Чтобы красненькое красненьким было, синенькое сининьким).
ba2000; alexruzh67; +2 Ответить
26. RocKeR_13 913 25.09.18 17:30 Сейчас в теме
(25)
Вот так))
Прикрепленные файлы:
28. user771753 24.10.18 21:12 Сейчас в теме
Айайай братюня затащил вообще молодец, все работает, даже без допиливания))) красавчик вообще, лукаснул тебе)))
29. Serj1C 480 21.02.19 12:15 Сейчас в теме
В 8.3.14 вывод картинок в СКД появится из коробки!

Для системы компоновки данных реализована возможность отображения картинок, расположенных в информационной базе. В отчете могут отображаться картинки, заданные в качестве навигационной ссылки на картинку и собственно картинкой, размещенной в реквизите типа ХранилищеЗначения.
Для объектов ОформлениеКомпоновкиДанных и ОформлениеЯчейкиТаблицыОбластиКомпоновкиДанных реализованы свойства ВыводитьКартинку, РазмерКартинки, ПоложениеТекстаОтносительноКартинки, ГоризонтальноеПоложениеКартинки, ВертикальноеПоложениеКартиинки.

В режиме совместимости с версией 8.3.13 поведение по умолчанию не изменилось.

Источник: https://dl04.1c.ru/content/Platform/8_3_14_1565/1cv8upd_8_3_14_1565.htm#a06301e2-a9ff-11e8-a3f7-0050569f678a
igee12; YPermitin; Spacer; +3 Ответить
31. notka 115 09.10.19 18:52 Сейчас в теме
Добрый день, может кто подскажет ((( Бьюсь с выводом картинок и вроде все норм, кроме того что картинка пустая. Картинки хранятся и в томах и в информационной базе. База УТ 11.3, платформа 8.3.10. Неделю уже всеми способами ковыряюсь, все равно пустые(
32. Clio24 06.02.20 15:15 Сейчас в теме
Увы и Ах! Все написанное выше уже не актуально для УТ 11.4.8.
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    4658    19    huxuxuya    11    

Свойства общих модулей

Практика программирования Прочие инструменты разработчика v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

14.04.2021    844    1    kuzyara    3    

Отчет с настройкой роли поля СКД со свойством период

Практика программирования Работа с интерфейсом v8 v8::СКД Платформа 1C v8.2 1cv8.cf УУ Абонемент ($m)

Отчёт демонстрирует правильную настройку роли СКД со свойством «Период», по которой рассчитывается остаток. Этот отчет тестировался на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Может работать на любой конфигурации, если имеется регистр накопления «ТоварыНаСкладах».

1 стартмани

01.04.2021    907    0    softmaker    0    

Расшифровка СКД. Фильтр отчета по диапазону чисел. Переопределение обработки расшифровки. Не модальный режим

Практика программирования v8::УФ v8::СКД 8.3.14 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2021    1347    1    denmon88    1    

Вам нравятся запросы в 1С? Промо

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    24207    6    m-rv    90    

Создание заказов на перемещение с сохранением резервов по заказам клиентов в УТ 11.4

Обработка документов Практика программирования Оптовая торговля v8::ОУ УТ11 УУ Абонемент ($m)

В статье разберу вопрос подготовки отгрузки по заказу с одного склада при резерве на нескольких складах.

5 стартмани

26.10.2020    2035    4    malikov_pro    8    

Простой пример отчета на СКД. Программное формирование, расшифровка, работа с параметрами и отборами

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

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

1 стартмани

15.10.2020    3366    6    Stivens    10    

Интерактивная справка по объектам 1С (подключаемое расширение)

Практика программирования Работа с интерфейсом v8 ERP2 Абонемент ($m)

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

3 стартмани

29.09.2020    10531    64    sapervodichka    43    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    33427    88    m-rv    58    

Быстрое формирование наборов данных Объект схемы СКД

Практика программирования v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

05.07.2020    5710    5    Алексей Воробьев    16    

Построение графика в диапазоне изменений без точек

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

График изменений каких-либо величин во всем диапазоне и в области изменения, без точек.

1 стартмани

30.05.2020    2502    3    yc_2011    4    

Метод восстановления битых ссылок в настройках СКД при консольно-конфигураторной разработке отчетов

Практика программирования Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

30.04.2020    5752    0    zaxarovsky    4    

Заполняем по шаблону (по умолчанию) Промо

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    31424    20    mvxyz    17    

Задачка: Список всех документов за заданный период, используя СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Вывести все документы за заданный период, используя СКД.

2 стартмани

11.03.2020    3642    6    MaxxiMiliSan    9    

Получение курса валюты за период с помощью СКД

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

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

1 стартмани

04.02.2020    3637    1    KawaNoNeko    2    

Преобразование объекта Отбор компоновки данных в Запрос

Практика программирования Прочие инструменты разработчика v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m)

Преобразует объект Отбор компоновки данных в объект Запрос (с заполнением текста и параметров).

1 стартмани

20.12.2019    5039    6    okon-teh    2    

Нечеткий поиск одним запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

Использование механизма полнотекстового поиска в 1С не всегда оправдано, т.к. построение индекса и поддержание его в актуальном состоянии может значительно нагружать систему. Предлагаемая реализация нечеткого поиска методом N-грамм выполняется одним запросом, что позволяет производить поиск в любой таблице и не требует предварительного построения индекса.

1 стартмани

28.12.2015    31059    72    vasvl123    9    

Конвейер проверки качества кода

Инструментарий разработчика Практика программирования Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    30790    27    Stepa86    46    

Проверка несуществующих полей в настройках СКД

Практика программирования Работа с интерфейсом Разработка v8 v8::СКД ERP2 УТ11 КА2 Абонемент ($m)

Обработка находит все поля настроек СКД, которые утратили свою актуальность Подходит для УТ 11, ERP, КА 2.

1 стартмани

20.06.2019    5842    3    MuI_I_Ika    2    

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

Инструментарий разработчика Практика программирования v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Разрабатывалась на 1С:Зарплата и управление персоналом в кредитных организациях, редакция 3.1 (3.1.5.407), поэтому использует типовой отчет Состояние штатного расписания, но технология работает для любой конфигурации. Пример внешней обработки с вызовом типового отчета на СКД "Состояние штатного расписания" и передачей ему настроек, изменения имен колонок после выполнения на имена указанные в "Пользовательских полях" или "заголовках" и вывода результата в таблицу значений.

1 стартмани

21.03.2019    7550    14    pavel_pss    0    

Работа с публикациями "Инфостарт" Промо

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    24946    13    RocKeR_13    16    

Фильтр по адресному складу в виде дерева

Практика программирования Универсальные обработки Работа с интерфейсом Учет ТМЦ Учет ТМЦ Разработка v8 v8::ОУ УТ11 УУ Абонемент ($m)

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

1 стартмани

06.03.2019    5944    0    Kutuzov    3    

Вывод характеристик и их значений в динамический список

Практика программирования Разработка v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Если в запросе динамического списка используется конструкция {ХАРАКТЕРИСТИКИ ...}, то как вывести на форму колонки с характеристиками?

1 стартмани

22.02.2019    7549    3    kasper076    3    

Модуль, реализующий хранение настроек отчетов СКД в типовом регистре "Сохраненные настройки"

Практика программирования v8 v8::СКД КА1 БП2.0 ЗУП2.5 УТ10 БП1.6 Абонемент ($m)

Модуль, обеспечивающий хранение настроек отчетов на СКД в типовом регистре "Сохраненные настройки", присутствующем в конфигурациях УПП 1.2, 1.3, УТ 10.3, БП 2.0 и т.д.

1 стартмани

12.01.2019    7432    0    lunjio    0    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции Промо

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    32005    28    informa1555    26    

История реквизитов организаций (печати, факсимиле, КПП, телефон)

Практика программирования v8::ОУ v8::УФ УТ11 Абонемент ($m)

Решение задачи по хранению истории изменений КПП организации, дополнительных печатей, бланков и факсимиле ответственных лиц организаций, контактной информации организаций типа телефон.

1 стартмани

11.01.2019    5400    4    da_1c    0    

Задача 1.13. 1С: Специалист по платформе 8.3

Практика программирования Решение задач на 1С:Специалист v8 v8::ОУ Абонемент ($m)

Вариант решения задачи 1.13 с комментарием основных моментов (тестировалось на релизе 8.3.9.2170).

1 стартмани

05.01.2019    11479    3    user913680    8    

Передача набора данных типа Объект в отчет СКД

Практика программирования v8 v8::УФ v8::СКД 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

12.11.2018    34495    8    evgen7938    4    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    51500    36    Demanoidos    60    

HTTP Сервисы: Путь к своему сервису. Часть 3

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    45724    64    dsdred    17    

Примеры программной работы с СКД, а также программного создания управляемой формы

Практика программирования v8 v8::УФ v8::СКД Абонемент ($m)

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

1 стартмани

12.08.2018    7500    29    MaxCreator    0    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    35921    11    SITR-utyos    13    

Работа с данными выбора Промо

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    57780    22    kalyaka    16    

Условное оформление дерева значений на управляемой форме

Практика программирования Работа с интерфейсом v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

28.04.2018    19334    31    Kutuzov    1    

Пользовательские макеты для внешних печатных форм (обработок)

Практика программирования Универсальные печатные формы v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Расширение БСП по реализации механизма пользовательских макетов для обработок внешних печатных форм.

2 стартмани

05.03.2018    22262    21    simy4    14    

Альтернатива ОтборуСтрок() с возможностями условий отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Типовой ОтборСтрок() использует только условия на равенство. Для таблицы формы, источником которой является "ДеревоЗначений" возможность отбора вообще отсутствует. Но есть возможность использовать всю широту возможностей отборов СКД.

1 стартмани

04.02.2018    7874    4    mszsuz    5    

Быстрое определение интервалов в запросе Промо

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    56352    35    ildarovich    41    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    29873    56    kwazi    6    

Паузы при исполнении кода (Sleep для 1С)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

28.11.2017    57485    15    swimdog    46    

Макет в СКД - пример всех возможных типовых вариантов

Практика программирования Инструментарий разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Макет СКД: наглядное представление того, что, как и куда выводится при типовых настройках.

1 стартмани

09.11.2017    24656    77    freelancer    4    

Хранение файлов в томах на диске (для УПП 1.3) Промо

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    62656    11    wowik    32    

Telegram-боты

Практика программирования v8 Абонемент ($m)

Описание теории, разбор архитектуры и пример реализации telegram-ботов. Сразу скажу, со структурированием изложения мало что могу поделать. :) редакция от 18.07.2018 Правки последней редакции выделены жирным.

1 стартмани

01.09.2017    37895    141    PLAstic    66    

Умный дом на 1С + ардуино

Практика программирования v8 Абонемент ($m)

Конфигурация для автоматизации быта программиста 1C и не только. В данной статье будет рассказано, как можно использовать 1С для задач, не входящих в стандартные рамки этой платформы. Например, управление домом. В качестве периферии для подключения будет использован микроконтроллер (МК) Ардуино, но на нём не будет никакой логической нагрузки, весь процесс будет проходить на сервере 1С. Работа с пинами ввода/вывода происходит напрямую из 1С.

1 стартмани

07.08.2017    25673    21    sasha777666    64    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

30.05.2017    149825    13    signum2009    48    

СКД. Использование встроенного макета, разделителя страниц Промо

Практика программирования v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

31.03.2017    17118    18    Vin_Tik    0