Картинка в таблице СКД (управляемое приложение) на примере УТ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
15.03.13
282
.erf 12,93Kb 282 Скачать

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

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

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

Настройка = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяНастройки);
Если Настройка = Неопределено Тогда Возврат ЗначениеПоУмолчанию; КонецЕсли;
НастрокаПоИД = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Настройка.ИдентификаторПользовательскойНастройки);
Если НастрокаПоИД = Неопределено Тогда
Возврат ЗначениеПоУмолчанию;
Конецесли;
Если Не ЗначениеЗаполнено(НастрокаПоИД.Значение) Тогда
Если Не ЗначениеПоУмолчанию = Неопределено Тогда
НастрокаПоИД.Значение = ЗначениеПоУмолчанию;
КонецЕсли;
КонецЕсли;
Возврат ?(НастрокаПоИД.Использование, НастрокаПоИД.Значение, ЗначениеПоУмолчанию);
КонецФункции
Nigelist; +1 Ответить
2. mxm2 1175 08.04.13 13:26 Сейчас в теме
(1) @lexandr, Странно, у меня вообще ошибок не возникало никогда, причем во всех трех версиях отчета, даже здесь http://infostart.ru/public/178422/, возможно проблема в том, что какое-либо поле исключено из пользовательских настроек.
30. Nigelist 09.03.19 03:53 Сейчас в теме
3. tolyan_ekb 176 11.06.13 08:16 Сейчас в теме
Отличное решение без доп. макета. На основе публикации сделал похожее для картинок из внешних файлов. Огромное спасибо.
4. tolyan_ekb 176 11.06.13 09:35 Сейчас в теме
Почему-то у меня не получается изменить высоту строки с изображением. Пробовал и явно, и с помощью изменения в коде
Область.ВысотаСтроки = ШиринаКолонкиИзображения * 134.31 / 0.3759;
5. mxm2 1175 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 1175 11.06.13 10:12 Сейчас в теме
(4) tolyan_ekb, смотрите пятый комментарий.
8. tolyan_ekb 176 13.06.13 11:22 Сейчас в теме
(6) спасибо. Но я установил высоту напрямую в условном оформлении, после чего она изменилась. Возможно, программно чего-то не доуказал.
9. varovinm 25.10.13 13:35 Сейчас в теме
(6) Спасибо!
Не срабатывает инициализация ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки)
Дело в том, что у меня в СКД есть параметры в которых задано выражение, например, Справочники.Валюты.НайтиПоКоду("156"). Может быть подскажете как получить значение у этих параметров????
Прикрепленные файлы:
10. mxm2 1175 25.10.13 15:35 Сейчас в теме
(9) varovinm, попробуйте
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки, Истина);

вообще лучше либо задавать валюту в параметрах (неявно), либо получать её в запросе, например из констант.
7. mxm2 1175 11.06.13 13:12 Сейчас в теме
(4) tolyan_ekb, еще возможно в Вашем макете стоИт ограничение минимальной высоты строки или автовысота.
11. killexx 16.12.13 23:47 Сейчас в теме
Реально ли сделать такой прайс для 1С 8.1, "Управление торговлей для Украины", редакция 2.3 ?
Прикрепленные файлы:
12. mxm2 1175 17.12.13 08:05 Сейчас в теме
(11) killexx, Реально всё. Если Ваша конфигурация на управляемых формах то за образец можете использовать текущую разработку. Если же на обычных формах - то, например вот эту http://infostart.ru/public/151012/.
13. MarryJane 25 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 34 22.11.16 23:43 Сейчас в теме
В последних версиях УТ11 этот отчет уже не работает!!!
Ребята из 1С сами задействовали Процедуру ПриКомпоновкеРезультата и если там поставить СтандартнаяОбработка = Ложь. то отчет перестает работать
19. ssn5810 79 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 268 10.10.17 10:29 Сейчас в теме
прекрасно - работает )
спасибо!
23. bad_wag 29 17.11.17 14:59 Сейчас в теме
На небольших объемах все это хорошо работает, но когда в отчете тысячи строк и в каждой картинка время ожидание неприемлемо велико. Есть у кого нибудь идеи как оптимизировать этот нюанс? Очень бы хотелось без изменения конфигурации
24. RocKeR_13 783 30.05.18 11:42 Сейчас в теме
Хм, делал по аналогии и такая получается штука: в файловой базе 550 строк с картинками выводит за 3-4 минуты, перевожу базу на SQL - спустя полчасатак никаких результатов и не видно... Пока отладку не включал, вставил записи в ЖР: в процедуре "ПриКомпоновкеРезультата" строку "ПроцессорВывода.ЗакончитьВывод();" успешно проходит... Картинки пробовал и в базе размещать, и в каталогах
UPD: спустя 40 минут все-таки вывел
27. Els11 53 13.10.18 21:30 Сейчас в теме
(24) Самое узкое место в выводе отчета с картинками это передача его обратно с сервера на клиента, При передаче платформа сериализует табличный документ и передает таким образом в разы больше информации , чем нужно. А на клиенте съедаются в это время Гигабайты.дискового постранства. У меня при выводе отчета продаж за месяц отчет вообще падал с ошибкой формата потока. Нашел следующий выход:
Если отчет не в типовом решении, то в обработку на сервер не надо передавать табличный документ.
При окончании обработки на сервере созданный табличный документ помещается во временной хранилище. Адрес временного хранилища можно задать или в реквизите формы или передать с клиента. А на клиенте уже из временного хранилища создается табличный документ. Что-то типа следующего:
&НаКлиенте
Процедура Сформировать(Команда)
	Адрес = "";
	СформироватьОтчетНаСервере(Адрес, Период);
	
	ТабДок = ПолучитьИзВременногоХранилища(Адрес);
	ТабДок.Показать();
КонецПроцедуры

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

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

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

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

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

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

P.s. Если кто кинет ссылку на инструкцию как в комментариях красиво код оформлять, буду благодарен. (Чтобы красненькое красненьким было, синенькое сининьким).
ba2000; alexruzh67; +2 Ответить
26. RocKeR_13 783 25.09.18 17:30 Сейчас в теме
(25)
Вот так))
Прикрепленные файлы:
28. user771753 24.10.18 21:12 Сейчас в теме
Айайай братюня затащил вообще молодец, все работает, даже без допиливания))) красавчик вообще, лукаснул тебе)))
29. Serj1C 479 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.
Оставьте свое сообщение

См. также

Безопасная работа с транзакциями во встроенном языке Промо

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

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

1 стартмани

25.03.2019    28388    9    tormozit    44    

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

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

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

1 стартмани

30.05.2020    251    1    yc_2011    2    

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

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

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

1 стартмани

30.04.2020    1314    0    zaxarovsky    4    

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

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

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

1 стартмани

03.07.2019    16511    4    m-rv    86    

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

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

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

1 стартмани

11.03.2020    1132    0    MaxxiMiliSan    7    

СКД: штрихкоды в несколько колонок

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

СКД. Ресурсы в несколько колонок, на примере РС Штрихкоды номенклатуры.

1 стартмани

02.03.2020    1339    1    shetill    0    

СКД: красивые надписи в заголовках колонок

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

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

2 стартмани

27.02.2020    7737    7    wowik    36    

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

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

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

1 стартмани

01.06.2018    26675    86    m-rv    57    

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

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

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

1 стартмани

04.02.2020    1730    0    KawaNoNeko    2    

Отчет на СКД с выводом остатков по всем датам периода для УТ 10.3 (обычные формы)

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

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

1 стартмани

23.12.2019    2063    1    jump0    0    

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

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

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

1 стартмани

20.12.2019    2427    2    okon-teh    2    

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

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

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

1 стартмани

08.02.2018    24145    19    mvxyz    17    

Программное добавление параметров редактирования СКД

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

В данной публикации приводится пример программного добавления параметров редактирования для поля выборки в СКД.

1 стартмани

25.11.2019    4283    1    Isonic    7    

Организация функционала наценок по позициям либо сегментам номенклатуры в УТ 11.4

Ценообразование, анализ цен Практика программирования Ценообразование, анализ цен Разработка v8::ОУ v8::УФ УТ11 Россия УУ Абонемент ($m)

В статье описан один из методов реализации задачи установки скидок/наценок в соответствии с заданным процентом по позициям/сегментам номенклатуры. Так-же продемонстрирован принцип создания произвольного запроса к ИБ в виде цен. Протестировано на релизе Управление торговлей, редакция 11.4.8.92.

1 стартмани

07.08.2019    3405    1    cheiser1982    2    

Расчет сложных итогов СКД

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

Малоизвестный прием для расчета итогов в отчетах на СКД.

1 стартмани

05.08.2019    13328    11    masterkio    9    

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

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

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

1 стартмани

28.12.2015    23809    61    vasvl123    9    

Многоуровневая нумерация в отчете СКД (программный вывод)

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

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

1 стартмани

01.07.2019    5861    6    lmnlmn    7    

Иерархическая нумерация в отчете СКД с помощью макета поля

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

Представляю Вашему вниманию вариант решения задачи нумерации строк иерархического отчета на СКД.

1 стартмани

28.06.2019    6072    5    Isonic    14    

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

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

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

1 стартмани

20.06.2019    3549    3    MuI_I_Ika    2    

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

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

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

1 стартмани

13.09.2018    17191    12    RocKeR_13    16    

Простые примеры сложных отчетов на СКД

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

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

1 стартмани

12.06.2019    25048    19    Hatson    22    

Картинки во внешней печатной форме (Шапка и табличная часть)

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

Способы вывести на печать картинку в шапке и в табличной части внешней печатной формы. Управление торговлей, редакция 11 (11.4.7.150).

1 стартмани

27.05.2019    7549    7    Povinger    1    

Поле "Отбор" в управляемой форме используя СКД

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

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

1 стартмани

17.05.2019    6476    6    artms    0    

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

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

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    24476    8    wowik    3    

Вывод вариантов СКД в таблицы на управляемой форме

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

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

05.04.2019    9030    3    artkor    1    

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

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

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

1 стартмани

21.03.2019    4797    10    pavel_pss    0    

Легкий "тюнинг" УТ 10.3

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

Вариант программной реализации изменения форм типовых объектов для конфигурации Управление торговлей 10.3.

1 стартмани

15.03.2019    3856    0    pm74    6    

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

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

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

5 стартмани

09.08.2018    24199    25    informa1555    26    

Пример использования СКД и данных расшифровки на мобильной платформе

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

СКД в мобильном приложении и меню действий на основе данных расшифровки (отчет, совместимый с мобильной платформой 8.3.13.45).

1 стартмани

12.03.2019    4668    3    majoram    0    

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

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

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

1 стартмани

06.03.2019    4551    0    Kutuzov    3    

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

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

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

1 стартмани

22.02.2019    4532    2    kasper076    3    

Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример Промо

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

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

1 стартмани

19.01.2018    51511    60    rpgshnik    26    

Раскрашенный log-файл без HTML и СМС (используем Форматированный документ в личных целях)

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

Иногда пользователям отдается на откуп загрузка каких то данных, результат загрузки которых желательно раскрасить если и не всеми цветами радуги, то хотя бы светофором. Один из вариантов – это использовать Форматированную строку. Следите за руками:

1 стартмани

08.02.2019    2896    1    kembrik    2    

Сквозной рейтинг по иерархии в отчете на СКД

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

Сквозная нумерация (рейтинг) по группам и элементам справочника в отчете СКД согласно убыванию количества/суммы и т.д.

1 стартмани

07.02.2019    5157    0    MaxxiMiliSan    2    

Особенность встроенной функции Представление() в СКД [поход на грабли]

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

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

1 стартмани

15.01.2019    8798    0    Dementor    6    

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

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

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

1 стартмани

14.08.2016    43904    36    Demanoidos    60    

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

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

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

1 стартмани

12.01.2019    5130    0    lunjio    0    

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

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

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

1 стартмани

11.01.2019    3584    2    da_1c    0    

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

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

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

1 стартмани

05.01.2019    7660    1    user913680    8    

Как нарисовать граф на 1С Промо

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

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

1 стартмани

09.08.2013    68068    206    ildarovich    117    

Отладка сложных отчетов на СКД

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

Расширение для отладки сложных отчетов на СКД (в т.ч. для собираемых программно "на лету") и быстрого перехода к отладке таких отчетов в консоли запросов и отчетов на СКД.

1 стартмани

28.12.2018    23208    83    maxx    58    

Шаблон кросс-таблицы с иерархией на СКД

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

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

1 стартмани

22.12.2018    7810    8    wizard.ilmir02    3    

СКД. Сортировка

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

Показана реализация сортировки по двойному щелчку на заголовке колонки отчета и отображение направления сортировки в заголовках колонок.

1 стартмани

03.12.2018    8014    5    slimper    21    

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

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

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

1 стартмани

17.07.2018    36831    17    kalyaka    16    

Альтернативный пересчет упаковок товаров в типовых конфигурациях

Практика программирования Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ v8 v8::ОУ УТ11 КА2 Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

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

1 стартмани

24.11.2018    9069    8    ifal    7    

Объединение нескольких печатных форм в один табличный документ

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

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

1 стартмани

17.11.2018    10664    6    echo77    4    

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

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

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

1 стартмани

12.11.2018    22772    5    evgen7938    3    

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

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

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

1 стартмани

01.10.2015    46910    32    ildarovich    41    

Отчет для демонстрации работы с программной расшифровкой СКД

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

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

1 стартмани

08.11.2018    5906    6    budidich    0    

Группировка измерений в заголовках СКД

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

Методика создания общей шапки над измерениями в таблице созданной при помощи СКД. Без всякого кода. Только штатными средствами.

1 стартмани

07.11.2018    15803    60    dusha0020    11    

И снова группировка столбцов в СКД

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

В публикации описано создание отчета "Остатки по складам" с группировкой по строкам и столбцам.

1 стартмани

23.10.2018    9348    1    vasilievil    9    

Параметризованные заголовки полей СКД

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

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

2 стартмани

21.09.2018    7243    3    echo77    3