Загрузка списка значений в стандартных отчетах (Обычное приложение)

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

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

Список значений Отчеты Стандартные отчеты Табличный документ Excel

Загрузка данных из табличного документа в список значений для отбора в стандартных отчетах (в режиме Обычного приложения системы 1С: Предприятие 8). Назначение - быстрое копирование списков значений для отборов.

 

Постановка задачи

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

Решение задачи

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

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

Для простоты модификации и поддержки при обновлениях лучше использовать общий модуль и осуществлять вызовы процедур модификации расположенные в нём. Назовем подобный модуль, скажем "Модуль_ПодборСпискаЗначений". Содержимое модуля примерно следующее (полный текст модуля имеется в прилагаемой конфигурации): 

// *************  УниверсальныйОтчет *************

// Добавлено в обработчик "ТабличноеПолеОтборЗначениеНачалоВыбора" формы настройки, 
// а также дополнительно в модуль "БухгалтерскиеОтчеты" - обработчик "ОбработатьВыборДляСтрокиОтбораБухОтчетов",
//                       в модуль "ТиповыеОтчеты" - обработчик "ОбработкаНажатияКнопкиПодбор"
// Назначение: Вызов дополнительной обработки выбора списка значений

&НаКлиенте
Процедура ДополнительнаяОбработкаПодбораЗначения(ЗначениеЭлемента, СтандартнаяОбработка, МассивТипов = Неопределено) Экспорт
	Попытка                                                                                     
		ИмяФайла = ПолучитьИмяВременногоФайла("epf");
		ДвоичныеДанные = Справочники.ВнешниеОбработки.НайтиПоНаименованию("Подбор списка значений", истина).ХранилищеВнешнейОбработки.Получить();
		ДвоичныеДанные.Записать(ИмяФайла);
		ВнешняяОбработка = ВнешниеОбработки.Создать(ИмяФайла);
		ВнешняяОбработка.ПодборСпискаЗначений(ЗначениеЭлемента, МассивТипов);
		ВнешняяОбработка = Неопределено;
		УдалитьФайлы(ИмяФайла);
		СтандартнаяОбработка = Ложь;
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
КонецПроцедуры

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

Модификация поведения отчетов на основе построителя отчетов 

Осталось лишь разместить вызов данной процедуры. Например вот так:

Процедура ТабличноеПолеОтборЗначениеНачалоВыбора(Элемент, СтандартнаяОбработка)

	// Отборы по свойствам и категориям должны быть обработаны специальным образом
	// Они определяются по представлению 
	Если Найти(НРег(ЭлементыФормы["ТабличноеПолеОтбор" + СтрЗаменить(Панель.ТекущаяСтраница.Имя, "СтраницаНастройка", "")].ТекущаяСтрока.Представление), "св-во") Тогда

		Свойство = мСоответствиеНазначений.Получить(ЭлементыФормы["ТабличноеПолеОтбор" + СтрЗаменить(Панель.ТекущаяСтраница.Имя, "СтраницаНастройка", "")].ТекущаяСтрока.Представление);
		УправлениеОтчетами.ОсуществитьВыборСвойства(Элемент, Свойство, ЭтаФорма, СтандартнаяОбработка);
		
	ИначеЕсли Найти(НРег(ЭлементыФормы["ТабличноеПолеОтбор" + СтрЗаменить(Панель.ТекущаяСтраница.Имя, "СтраницаНастройка", "")].ТекущаяСтрока.Представление), "(категории)") Тогда
		
		Назначение = мСоответствиеНазначений.Получить(ЭлементыФормы["ТабличноеПолеОтбор" + СтрЗаменить(Панель.ТекущаяСтраница.Имя, "СтраницаНастройка", "")].ТекущаяСтрока.Представление);
		УправлениеОтчетами.ОсуществитьВыборКатегории(Элемент, Назначение, ЭтаФорма, СтандартнаяОбработка);
		
	//*************************************** Модуль_ПодборСпискаЗначений *****************************************//		
	ИначеЕсли ТипЗнч(Элемент.Значение)=Тип("СписокЗначений") Тогда	

		Модуль_ПодборСпискаЗначений.ДополнительнаяОбработкаПодбораЗначения(Элемент.Значение, СтандартнаяОбработка);
		
	//****************************************************************************************//		
	КонецЕсли;
		
КонецПроцедуры // ТабличноеПолеОтборЗначениеНачалоВыбора()

Вот и всё - теперь все отчеты построенные на основе отчета "УниверсальныйОтчет" (например "Продажи", "Закупки" и пр.) будут вызывать нашу обработку при попытке выбрать список значений в отборах. Правда отчет при этом должен пользоваться стандартной формой настройки отчета.

 Настройка Универсального отчета

Бухгалтерские отчеты имеют другие формы настройки, но используют процедуры общего модуля "Бухгалтерские отчеты". Что позволяет также произвести следующую модификацию:

Процедура ОбработатьВыборДляСтрокиОтбораБухОтчетов(СтрокаОтбора, Элемент, СтандартнаяОбработка, ОбъектОтчет) Экспорт
	
	Если СтрокаОтбора = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Попытка
		
		Если СтрокаОтбора.ТипЗначения.Типы().Количество() = 1
		 И СтрокаОтбора.ТипЗначения.СодержитТип(Тип("СправочникСсылка.Субконто")) Тогда
			
			Если ОбъектОтчет.ИмяРегистраБухгалтерии = "Хозрасчетный" 
			 ИЛИ ОбъектОтчет.ИмяРегистраБухгалтерии = "Налоговый" Тогда
				НайденноеЗначение = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НайтиПоНаименованию(СтрокаОтбора.Представление, Истина);
			ИначеЕсли ОбъектОтчет.ИмяРегистраБухгалтерии = "Международный"
			 И Метаданные.ПланыВидовХарактеристик.Найти("ВидыСубконтоМеждународные") <> Неопределено Тогда
				НайденноеЗначение = ПланыВидовХарактеристик.ВидыСубконтоМеждународные.НайтиПоНаименованию(СтрокаОтбора.Представление, Истина);
			КонецЕсли;
			
			Если НайденноеЗначение <> Неопределено Тогда
				СтандартнаяОбработка = Ложь;
				ФормаВыбора = Справочники.Субконто.ПолучитьФормуВыбора(,Элемент,);
				ФормаВыбора.ПараметрОтборПоВладельцу = НайденноеЗначение;
				ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Владелец.Доступность = Ложь;
				ФормаВыбора.Открыть();
				Возврат;
			КонецЕсли;
			
		КонецЕсли;
		
	Исключение
	КонецПопытки;
	
	// Принятая в конфигурации обработка работает только для равенства/неравенства
	Если СтрокаОтбора.ВидСравнения = ВидСравнения.Равно
	 ИЛИ СтрокаОтбора.ВидСравнения = ВидСравнения.НеРавно Тогда
		
		ТипЗначенияПоля = СтрокаОтбора.ТипЗначения;
		ОбъектОтчет.НачалоВыбораЗначенияСубконто(Элемент, СтандартнаяОбработка, ТипЗначенияПоля);
		
	КонецЕсли;	
	
	//***************************************  Модуль_ПодборСпискаЗначений  *****************************************//		
	Если ТипЗнч(Элемент.Значение)=Тип("СписокЗначений") Тогда	
		 Модуль_ПодборСпискаЗначений.ДополнительнаяОбработкаПодбораЗначения(СтрокаОтбора.Значение, СтандартнаяОбработка);
	КонецЕсли;
	//****************************************************************************************//		
	
	
КонецПроцедуры

Настройка Бухгалтерских отчетов

Примечание: Абсолютно ничего не мешает использовать процедуру "ДополнительнаяОбработкаПодбораЗначения " для изменения поведения любого поля ввода с типом "СписокЗначений" - достаточно разместить вызов в обработчике "НачалоВыбора".

Модификация поведения отчетов на основе механизма шаблон типового отчета (система компоновки данных)

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

Ещё одна особенность в том, что нам нужен обработчик в форме отчета, а так как мы не имеем доступа к форме, то нам следует воспользоваться вместо обработчика методом формы с двумя параметрами (поскольку ровно столько должен иметь обработчик "НачалоВыбора") и ОБЯЗАТЕЛЬНО! вызывающим какую-либо процедуру или функция из модуля "ТиповыеОтчеты". Я использовал процедуру "ОбработкаВыбора" (она обязана присутствовать в модуле формы отчета для функционирования логики формирования шаблона типового отчета), которая вызывает процедуру "ОбработкаВыбораФормыОтчета" из модуля "ТиповыеОтчеты". Естественно нужно предоставить возможность нормального исполнения, а случай использования в качестве обработчика обрабатывать отдельно:

// Добавлено в обработчик "ОбработкаВыбораФормыОтчета" 

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

Вызов процедуры из модуля "ТиповыеОтчеты"  происходит в процедуре " ОбработкаВыбораФормыОтчета": 

Процедура ОбработкаВыбораФормыОтчета(ОтчетОбъект, ФормаОтчета, ЗначениеВыбора, Источник) Экспорт  
  
  //********************************** Модуль_ПодборСпискаЗначений ******************************************// 
  Если Модуль_ПодборСпискаЗначений.ОбработкаВыбораСпискаЗначенийИзТабличногоДокумента( ОтчетОбъект, ФормаОтчета, ЗначениеВыбора, Источник) Тогда 
    Возврат; 
  КонецЕсли; 
  //************************************************************************************// 
... 

Наконец назначение обработчика выполняется так:

// Добавлено в обработчик  "УправлениеОтображениемПанелиПользователя"

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

Вызов подключения в модуле "ТиповыеОтчеты" происходит в процедуре "УправлениеОтображениемПанелиПользователя":

Процедура УправлениеОтображениемПанелиПользователя(ФормаОтчета) Экспорт
		
  ЭлементыФормы = ФормаОтчета.ЭлементыФормы;
  //************************************  Модуль_ПодборСпискаЗначений  *************************************//  
  Модуль_ПодборСпискаЗначений.ПодключитьОбработчикВыбораСпискаИзТабличногоДокумента(ЭлементыФормы.Отбор);
  //*********************************************************************************//
...

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

 Типовой отчет 

Внешняя обработка "Подбор списка значений"

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

Для удобства также добавлена возможность получать данные из произвольного запроса к базе данных:

Произвольный запросРезультат произвольного запроса

 

 

Заключение

В качестве заключения следует отметить, что описанный алгоритм стал возможен лишь из-за стандартизированного подхода компании 1С к разработке стандартных отчетов для конфигураций. Печально то, что технологическая платформа не предоставляет возможность указания произвольной формы для редактирования списков значений. Это означает, что если Вам потребуется изменить поведение формы выбора списка значений в произвольном месте, то так или иначе придется вызвать и/или назначить обработчик для события "НачалоВыбора".  Но что делать когда его нет? Только изменить модуль формы... а если до него нет доступа, то ничего сделать уже нельзя  !!!

Прилагаемая конфигурация (выполнена на основе конфигурации "Универсальный отчет", редакция 1.0) позволяет более подробно изучить описанный алгоритм (точки вызова указаны в комментариях процедур и функций общего модуля "Модуль_ПодборСпискаЗначений" ), а также демонстрирует один из подходов к изменению типовых конфигураций - использованию общего модуля в качестве хранилища модификаций. При обновлении можно будет воспользоваться отчетом об изменении конфигурации и проконтролировать наличие вызовов процедур и функций из общего модуля в необходимых местах кода конфигурации. Просматривать отчет об изменении, где все модификации обозначены лишь вызовами процедур общего модуля гораздо удобнее, чем видеть абсолютно весь программный код этих модификаций. Кроме того, модификации стандартных форм прикладных объектов (добавление кнопок, полей и пр.) также можно оформить в виде процедур общего модуля (при этом их вызов как правило осуществляется в обработчике формы "ПриОткрытии"), но обсуждение данной темы выходит за рамки данной публикации.

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

  • Преобразование данных табличного документа (используется алгоритм из обработки  "ЗагрузкаДанныхИзТабличногоДокумента" ( диска ИТС));
  • Загрузка данных в поле табличного документа из файла Excel; 
  • Скрытие/Отображение панели с разделителем (обратите внимание на порядок установки привязок для элементов).

Выгрузка информационной базы (.dt) предоставляет возможность ознакомиться с работой рассмотренного алгоритма без внедрения его в существующую конфигурацию.

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

Наименование Файл Версия Размер
Внешняя обработка "Подбор списка значений"

.epf 32,60Kb
41
.epf 1.1 32,60Kb 41 Скачать
Конфигурация

.cf 923,38Kb
20
.cf 923,38Kb 20 Скачать
Выгрузка

.dt 968,71Kb
21
.dt 968,71Kb 21 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Evgeniy 86 22.11.18 15:06 Сейчас в теме
Обработка помогла, как раз нужно была возможность загружать из эксель в отборы отчета большой список артикулов.
Но по тестировании вылезли сразу же явные косяки.
Скачивал файл "Выгрузка" - там где база данных, возможно в файле Внешняя обработка "Подбор списка значений" таких ошибок нет, не проверял.

Список выявленных ошибок:
1) почему обработка внешняя? Гораздо проще было её загрузить внутрь конфигурации и обращаться к ней напрямую, что я и сделал.
2) ошибка кода когда найдено несколько значений - при таком случае выводилось сообщение что ничего не найдено, пришлось исправлять.
3) Ошибка загрузки с типом Строка
а) полученная строка трансформируется в дату
б) в списке значений не предусмотрены простейшие типы данных (число, булево, дата, строка) и в итоге при загрузке строк загружаются пустые строки.
4) Если возникает ошибка по этой нестандартной обработке перенаправил обращение к стандартной процедуре.
2. alexkutuzov 30 23.11.18 06:59 Сейчас в теме
Да, действительно обработку давно не обновлял.... описанные ошибки уже были исправлены, файлы обновил. Обработка внешняя для того чтобы можно было обновить её без необходимости обновления информационной базы, ну и плюс если она вдруг более не нужна то просто переименовываете её в справочнике внешних обработок и все работает как прежде....

Касательно опыта применения обработки - как правило её используют для отбора в отчетах по результатам других отчетов. Например, получают список заказов из отчета Продажи и переносят список этих заказов в отбор отчета... ну например Валовая прибыль. Значения уникально описывают заказ - всё прекрасно работает, но что если требуется загрузить не уникальные значения - номенклатуру, единицы измерения и прочее... да будет найдено несколько значений и обработка выдаст список для выбора значения, но если список огромный пользователь устанет выбирать значение для каждого элемента. Именно поэтому возникла необходимость сделать загрузку не из одной, а из двух колонок например "Код" и "Наименование". В общем случае отдельную колонку с кодом в любом отчете получить достаточно просто и её значения позволяют легко решить проблему с загрузкой не уникальных значений.
3. ipoloskov 138 24.04.20 14:36 Сейчас в теме
Для управляемых форм такое есть?
4. alexkutuzov 30 25.04.20 18:42 Сейчас в теме
5. ipoloskov 138 26.04.20 05:35 Сейчас в теме
(4) сделал для Бухгалтерии 3.0 в простом виде https://infostart.ru/public/1228575/
Оставьте свое сообщение

См. также

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

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

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

5 стартмани

21.12.2020    2965    14    huxuxuya    11    

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

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

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

3 стартмани

29.09.2020    8893    52    sapervodichka    43    

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

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

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

3 стартмани

04.09.2019    28706    24    Stepa86    46    

Алгоритмы поиска пути в графе

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

Реализуем алгоритмы поиска пути в графе на платформе 1С 8.3, такие как алгоритм А*, поиск в ширину, жадный поиск, алгоритм Дейкстры и вконце волновой.

1 стартмани

09.07.2019    19272    12    RonX01    10    

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

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

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

1 стартмани

03.07.2019    22836    6    m-rv    88    

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

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

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

1 стартмани

13.09.2018    23530    13    RocKeR_13    16    

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

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

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

1 стартмани

27.08.2018    42642    63    dsdred    17    

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

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

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

5 стартмани

09.08.2018    30362    26    informa1555    26    

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

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

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

1 стартмани

01.06.2018    32115    88    m-rv    57    

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

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

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

1 стартмани

17.07.2018    54475    20    kalyaka    16    

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

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

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

1 стартмани

22.05.2018    33949    11    SITR-utyos    13    

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

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

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

1 стартмани

06.12.2017    28606    54    kwazi    6    

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

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

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

1 стартмани

08.02.2018    30124    20    mvxyz    17    

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

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

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

1 стартмани

28.11.2017    53254    14    swimdog    44    

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

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

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

1 стартмани

09.11.2017    23482    77    freelancer    4    

Telegram-боты

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

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

1 стартмани

01.09.2017    35890    137    PLAstic    59    

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

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

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

1 стартмани

28.12.2015    29672    71    vasvl123    9    

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

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

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

1 стартмани

07.08.2017    24526    21    sasha777666    64    

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

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

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

1 стартмани

30.05.2017    143429    13    signum2009    48    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

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

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

1 стартмани

13.03.2017    33563    117    romasna    49    

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

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

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

1 стартмани

14.08.2016    50087    36    Demanoidos    60    

Распознавание текста с помощью нейросетей Google Cloud Vision и 1С

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

Возможности Google Cloud Vision в распознавании текста.

1 стартмани

08.02.2017    32397    136    kiv1c    18    

Графическая схема. Управление при помощи XDTO.

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

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

2 стартмани

16.01.2017    24599    109    Alxby    23    

Простой редактор плана помещения JavaScript

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

На ресурсе сейчас очень много решений, которые позволяют редактировать карты, используя географические схемы. Так же много решений, которые позволяют редактировать объекты онлайн веб-карт. Мне же нужно было простое решение, для того чтобы расставить квадратные объекты на плане, показать их пользователю. Ну и распечатать, опять же. Я решил написать простенький редактор на JavaScript с использованием библиотеки Raphael.

1 стартмани

23.11.2016    22811    99    igel9780    22    

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

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

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

1 стартмани

01.10.2015    54559    35    ildarovich    41    

Работа с двоичными данными на примере чтения файлов изображений. Новые возможности 8.3.9

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

В статье приводятся новые функции по работе с двоичными данными, появившимися в версии платформы 8.3.9 , на примере анализа формата и размера изображений. А также пример отправки изображения через API ВКонтакте с помощью новых объектов (без использования ОбъединитьФайлы())

1 стартмани

14.11.2016    29002    16    Anton64    22    

Загрузка файлов на сервер с прогрессом и докачкой

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

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

1 стартмани

04.10.2016    14561    53    mrstomak    21    

Несколько шаблонов для доработки типовых конфигураций

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

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

1 стартмани

03.10.2016    38374    96    json    25    

HTTP-сервис: отчеты [Расширение]

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

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    28875    143    Stepa86    15    

Недокументированное использование стандартных форм Upd.

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

Вам не хватает возможностей в платформе 1С или у Вас нет времени на углубленное изучение платформы 1С? Рассмотрены возможности использования стандартных форм, вызываемых из платформы.

1 стартмани

26.07.2016    30131    90    ZhokhovM    64    

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

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

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

2 стартмани

05.06.2016    60665    11    wowik    32    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

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

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    65898    194    rozer    66    

Остатки на каждый день в запросе

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

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    64807    19    arakelyan    20    

Еще один способ расчета остатков на каждый день в запросе

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

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

1 стартмани

24.04.2016    36467    51    ildarovich    23    

Вывод печатных форм с запросом данных в форму "Печать документов" из подсистемы БСП "Печать".

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

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

1 стартмани

29.03.2016    98691    191    lopatin    14    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

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

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    85922    164    igo1    54    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

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

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

1 стартмани

03.03.2016    19607    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

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

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

1 стартмани

17.02.2016    52872    54    yuraos    18    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

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

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

1 стартмани

17.02.2016    59627    196    balanton    23    

Яндекс.Деньги "Благотворительность"

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

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

1 стартмани

16.02.2016    24719    8    Tatitutu    5    

Мастер рассылки e-mail 2.2 для управляемых форм

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

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    41054    20    milkers    4