Пример обработки загрузки данных из XML-файла в облаке 1С:Fresh

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

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

Fresh сценарии внешние обработки

Внешняя обработка, адаптированная для работы в УНФ, размещенной в облаке 1С:Fresh (легко редактируется под любую другую конфигурацию)
В обработке использованы следующие механизмы (их варианты при работе в безопасном режиме):
1. Механизм выполнения сценариев дополнительных обработок.
2. Механизм отложенной записи объектов.
3. Механизм клиент-серверной передачи файлов.
4. Механизм чтения XML в безопасном режиме.
5. Механизм создания и поиска элементов с помощью UID.

Обработка загрузки прайс-листа поставщика из файла XML в конфигурацию 1С:Управление Небольшой Фирмой. Работает в файловом, клиент-серверном варианте, а также в безопасном режиме исполнения дополнительных обработок технологии 1С:Fresh.

Обработка разрабатывалась под конкретного клиента, здесь выкладывается с целью поделиться принципами работы с файлами, объектами при исполнении кода в базах 1С:Fresh.

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

Суть данного механизма в том, что вся обработка представляет собой набор этапов исполнения. Каждый этап - вызов процедуры либо функции как внешней обработки, так и объектов конфигурации. При этом, передача параметров в функцию происходит не в явном виде, а с помощью своеобразного API, который представляется некоторыми общими модулями. Отличить общие модули можно по их наименованию вида "ДополнительныеОтчетыИОбработкиВБезопасномРежиме*".

Пример сценария исполнения:

        Конструктор = ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс;
	
	Сценарий = Конструктор.НовыйСценарий();
	
	Этап = Конструктор.ДобавитьМетодКонфигурации(Сценарий,
			"ДополнительныеОтчетыИОбработкиВБезопасномРежиме.ЧтениеXMLИзДвоичныхДанных", // Имя метода
			"ЧтениеXML" // Сохранение результата в переменную
		);
	Конструктор.ДобавитьЗначение(Этап, АдресФайлаДанных);
	
	Если ОтлаживатьКакВстроенную Тогда
		ИмяОбработки = Метаданные().Имя;
		Если Метаданные.НайтиПоПолномуИмени("Обработка." + ИмяОбработки) = Неопределено Тогда
			
			ТекстСообщенияОбОшибке = 
			НСтр("ru = 'Эта обработка предназначена для использования только в подсистеме ""Дополнительные отчеты и обработки"".
                  |Запускать ее на выполнение как внешюю обработку через главное меню (Файл - Открыть) нельзя.
                  |Для проверки работы необходимо:
                  |1. Добавить эту обработку в справочник ДополнительныеОтчетыИОбработки
                  |2. Запустить ее через командный интерфейс соответствующей подсистемы.
                  |Для отладки необходимо:
                  |1. Включить эту обработку в состав конфигурации
                  |2. Отладить обработку, запуская через меню ""Все функции""
                  |3. Сохранить обработку как внешнюю
                  |4. Удалить отлаженную обработку из состава конфигурации
                  |5. Использовать отлаженную внешнюю обработку в подсистеме ""Дополнительные отчеты и обработки"".'");
			ВызватьИсключение ТекстСообщенияОбОшибке;
			
		КонецЕсли;
		Этап = Конструктор.ДобавитьМетодКонфигурации(Сценарий,
				"Обработки." + ИмяОбработки + ".Создать().ЗагрузитьДанныеИзXMLФайла", // Имя метода
				"ДокументДОМ"
		);
	Иначе
		Этап = Конструктор.ДобавитьМетодОбработки(Сценарий,
				"ЗагрузитьДанныеИзXMLФайла", // Имя метода
				"ДокументДОМ"
				);
	КонецЕсли;
	
	Конструктор.ДобавитьСохраняемоеЗначение(Этап, "ЧтениеXML");
	
	Конструктор.ДобавитьЗначение(Этап, ВидЦены);
		
	Конструктор.ДобавитьПараметрВыполненияКоманды(Этап, "РезультатВыполнения");
	
	Если ОтлаживатьКакВстроенную Тогда
		ИмяОбработки = Метаданные().Имя;
		Если Метаданные.НайтиПоПолномуИмени("Обработка." + ИмяОбработки) = Неопределено Тогда
			
			ТекстСообщенияОбОшибке = 
			НСтр("ru = 'Эта обработка предназначена для использования только в подсистеме ""Дополнительные отчеты и обработки"".
                  |Запускать ее на выполнение как внешюю обработку через главное меню (Файл - Открыть) нельзя.
                  |Подробнее в справочной информации.'");
			ВызватьИсключение ТекстСообщенияОбОшибке;
			
		КонецЕсли;
		Этап = Конструктор.ДобавитьМетодКонфигурации(Сценарий,
				"Обработки." + ИмяОбработки + ".Создать().ЗагрузитьГруппы", // Имя метода
				"МассивГрупп"); // Сохранение результата
	Иначе
		Этап = Конструктор.ДобавитьМетодОбработки(Сценарий,
				"ЗагрузитьГруппы", // Имя метода
				"МассивГрупп"); // Сохранение результата
	КонецЕсли;
	Конструктор.ДобавитьСохраняемоеЗначение(Этап, "ДокументДОМ");
    	
	Этап = Конструктор.ДобавитьМетодКонфигурации(Сценарий, "ДополнительныеОтчетыИОбработкиВБезопасномРежиме.ЗаписатьОбъекты");
	Конструктор.ДобавитьКлючСессии(Этап);
	Конструктор.ДобавитьСохраняемоеЗначение(Этап, "МассивГрупп");
	Конструктор.ДобавитьЗначение(Этап, Неопределено);

Обращу внимание на вызовы 

Конструктор.ДобавитьСохраняемоеЗначение(Этап, "МассивГрупп");
Конструктор.ДобавитьЗначение(Этап, Неопределено);

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

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

После формирования сценария с помощью вызова процедуры

ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера.ВыполнитьСценарийВБезопасномРежиме(
		КлючСессии,
		АдресСценария,
		Результат
	);

сценарий начинает исполняться.

Данный метод рекомендуем специалистами 1С для написания внешних обработок. 

 

2.    С недавнего времени в облаке нельзя напрямую записать объект(будь то документ, справочник или набор записей) с помощью метода Записать().

Вместо этого необходимо добавить этап с вызовом процедуры

ДополнительныеОтчетыИОбработкиВБезопасномРежиме.ЗаписатьОбъекты

 В качестве параметра (через вызов метода ДобавитьСохраняемоеЗначение) туда передается массив объектов для записи.

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

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

ДополнительныеОтчетыИОбработкиВБезопасномРежиме.ЧтениеXMLИзДвоичныхДанных

5.    В связи с тем, что в настоящее время в облаке действует ограничение из п.2, при загрузке данных справочника номенклатуры возникла задача, как за один обход дерева корректно загрузить всю иерархию групп справочника.

Так как в момент обработки каждого отдельного элемента его родитель, в общем случае, еще не записан в базу, то пользоваться стандартными методами НайтиПоКоду(), НайтиПоНаименованию(), НайтиПоРеквизиту() не получится. В данном случае был использован механизм создания объектов на основе UID(благо, в загружаемом XML-файле каждому элементу был присвоен свой идентификатор). Данный механизм позволил устанавливать ссылку на родительский элемент, который еще не загружен в базу, но при этом ссылка на него уже хранится в памяти.

Пример:

                НоваяСсылка = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(Ид));
		Номенклатура = НоваяСсылка.ПолучитьОбъект();
		
		Если Номенклатура = Неопределено И МассивСсылок.Найти(НоваяСсылка) = Неопределено Тогда
			Номенклатура = Справочники.Номенклатура.СоздатьЭлемент();
			Номенклатура.УстановитьСсылкуНового(НоваяСсылка);
			Если СтруктураДопРеквизитов.Свойство("НаименованиеКраткое") Тогда
				Номенклатура.Наименование = СтруктураДопРеквизитов.НаименованиеКраткое;
			Иначе
				Номенклатура.Наименование = Наименование;
			КонецЕсли; 
			Если СтруктураДопРеквизитов.Свойство("НаименованиеПолное") Тогда
				Номенклатура.НаименованиеПолное = СтруктураДопРеквизитов.НаименованиеПолное;
			Иначе
				Номенклатура.НаименованиеПолное = Номенклатура.Наименование;
			КонецЕсли; 
			Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Запас;
			Номенклатура.СтавкаНДС = Справочники.СтавкиНДС.НайтиПоНаименованию(Ставка);
			Номенклатура.Родитель = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ГруппаРодительИд));
			Номенклатура.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(БазоваяЕдиница);
			Если Характеристика <> Неопределено Тогда
				Номенклатура.ИспользоватьХарактеристики = Истина;
			КонецЕсли; 
			МассивЦен.Добавить(Номенклатура);
			МассивСсылок.Добавить(НоваяСсылка);
		КонецЕсли;

 Буду рад ответить на ваши вопросы и учесть замечания.

UPD 04.02.2016: 
v 1.0.2 
    - Новый механизм вывода оповещения в связи с переходом на БСП 2.3(конфигурация УНФ 1.6.* и выше)

UPD 21.10.2015:
v 1.0.1 
    - Почищен код
    - Добавлена передача в процедуру записи объектов параметров записи. 
 

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

Наименование Файл Версия Размер
Обработка загрузки XML в 1С:Fresh (1.0.1)

.epf 15,29Kb
17
.epf 1.0.1 15,29Kb 17 Скачать
Обработка загрузки XML в 1С:Fresh (1.0.2)

.epf 15,27Kb
42
.epf 1.0.2 15,27Kb 42 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. waryg 20.10.15 12:42 Сейчас в теме
Полезная тема, спасибо :)
2. Samarin 96 20.10.15 20:04 Сейчас в теме
Тема новая и мало вообще про нее где можно почитать. ИТС не поспевает за всеми изменениями БСП (БТС).
На первых парах тем, кто с облаками столкнется, пригодились бы такие шаблоны выполнения таких сценариев:
- загрузка данных из файла.
- выгрузка данных в файл.
- запись объектов.

Опять все изменили в механизме сценариев - пришлось опять переписывать внешнюю обработку.
В обработке после создания объектов - отправлял оповещение, в котором параметром передавал на клиент список ссылок на созданные объекты, о чем и уведомлялись пользователи.
Теперь это дело перестало работать и как его опять наладить - пока без понятия :(
3. laperuz 48 21.10.15 04:00 Сейчас в теме
(2) Samarin,

- загрузка данных из файла.


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

- выгрузка данных в файл.

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

- запись объектов.

Это тоже есть, и там тоже вызов одного метода, куда передается массив - список объектов для записи.

В обработке после создания объектов - отправлял оповещение, в котором параметром передавал на клиент список ссылок на созданные объекты, о чем и уведомлялись пользователи.
Теперь это дело перестало работать и как его опять наладить - пока без понятия :(


Вызовом
Конструктор.ДобавитьПараметрВыполненияКоманды(Этап, "РезультатВыполнения");
? У меня на последнем этапе в переменной РезультатВыполнения формируется сообщение для показа на клиенте. Как вариант, через
ДобавитьСохраняемоеЗначение
туда передать массив ссылок и сформировать текст показа, который записать в РезультатВыполнения, он отобразится на клиенте.
4. Samarin 96 23.10.15 14:41 Сейчас в теме
Скачал обработку - посмотрел: у меня примерно так и работало до новой БСП.
Теперь такой функции "СтандартныеПодсистемыКлиентСервер.НовыйРезультатВыполнения()" - нет и чем оно заменилось - я не знаю.
5. laperuz 48 26.10.15 13:04 Сейчас в теме
(4) Samarin,
Посмотрел сейчас как в новой БСП.

Там вот такой код:
ПараметрыВыполнения = Новый Структура("РезультатВыполнения", Новый Структура);


Т.е. просто новая структура, без вызова процедуры.

Ну и далее
ПоказатьРезультатВыполненияОбработки(ПараметрыВыполнения);
6. Samarin 96 26.10.15 14:52 Сейчас в теме
Вот к этой структуре и вопросы - как сделать так, чтобы оно все заработало.
Старый код обработки результата - не работает:
Результат.ВыводПредупреждения.Использование = Истина;
Результат.ВыводПредупреждения.Заголовок = НСтр("ru = 'Обработка завершена успешно'");

Конкретное место проблемы - это отработка процедуры вывода результата, которая теперь не отрабатывается и вываливается с ошибкой.
СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ВладелецФормы, Результат.РезультатВыполнения);

Там теперь ничего подобного нет, теперь там используются "Шаги". Вот что пишет справка к процедуре вывода:

// * Шаги - СписокЗначений - Информация, которую необходимо вывести на клиенте.
// Шаги добавляются только при помощи процедур:
// ** СтандартныеПодсистемыКлиентСервер.ОповеститьДинамическиеСписки()
// ** СтандартныеПодсистемыКлиентСервер.ОповеститьОткрытыеФормы()
// ** СтандартныеПодсистемыКлиентСервер.РазвернутьУзлыДерева()
// ** СтандартныеПодсистемыКлиентСервер.ВывестиПредупреждение()
// ** СтандартныеПодсистемыКлиентСервер.ВывестиСообщение()
// ** СтандартныеПодсистемыКлиентСервер.ВывестиОповещение()
// ** СтандартныеПодсистемыКлиентСервер.ВывестиФорму()
7. Samarin 96 26.10.15 15:03 Сейчас в теме
Все, разобрался, работает!
Теперь все через эти чертовы шаги работает.

В процедуре ОформитьРезультат(МассивОбъектов, Результат) появляется примерно такое:

СтандартныеПодсистемыКлиентСервер.ОповеститьОткрытыеФормы(
Результат,
"СозданиеДокументов",
ПоместитьВоВременноеХранилище(МассивОбъектов));

СтандартныеПодсистемыКлиентСервер.ВывестиОповещение(Результат, ЗаголовокОповещения, "ru = 'Данные успешно записаны'",, СсылкаНаДокумент);
8. laperuz 48 27.10.15 04:13 Сейчас в теме
(7) Samarin,
Молодец!
Теперь буду ждать, когда УНФ на новую БСП переведут, придется переделывать.
9. Serg1980 28.07.16 15:53 Сейчас в теме
Как работать с объектом XBASE? На веб клиенте он недоступен, а на сервере недоступны операции с файлами в безопасном режиме. Кроме как через файл, XBASE заполнить не могу.
10. tolyan_ekb 179 22.06.17 10:56 Сейчас в теме
загрузка файла XML для БП 3.0.47 на платформе 8.3.8.2027. сценарий загрузки такой же, чтение файла проходит при загрузке такая ошибка.

Значение не является значением объектного типа (ЗагрузитьДанныеИзXMLФайла)
ИсполняемыйОбъект.ЗагрузитьДанныеИзXMLФайла(СохраняемыеПараметры.ЧтениеXML, ПараметрыВыполнения.РезультатВыполнения)

В чем может быть причина?
11. laperuz 48 27.06.17 05:13 Сейчас в теме
(10)
Так тяжело сказать. Судя по всему, в ИсполняемыйОбъект что-то типа Неопределено.
Попробуйте отладчиком посмотреть.
12. laperuz 48 28.06.17 04:17 Сейчас в теме
(10)
Сейчас столкнулся с той же ситуацией.
Причина - незаполненный реквизит формы КлючСессии.
Проверьте:
1. Что обработка запускается через справочник дополнительных обработок, а не через Файл-Открыть.
2. Что в процедуре ПриСозданииНаСервере есть код
Параметры.Свойство("КлючСессии",КлючСессии);
и этот код исполняется.

Я делал обработку, процедуру перенес из другой обработки, а привязать к событию формы забыл, поэтому КлючСессии не инициализировался и выдавалась та же ошибка.
13. tolyan_ekb 179 28.06.17 08:00 Сейчас в теме
(12) спасибо, получилось. Почему-то кодировка в файле изменилась на нечитаемые символы. Когда читал файл без сценария все было правильно.
У вас такое было?
14. laperuz 48 29.06.17 03:58 Сейчас в теме
15. tolyan_ekb 179 29.06.17 10:00 Сейчас в теме
(14) У вас нет примера заполнения реквизита таблицы на форме и его обновления, после заполнения в модуле объекта.
Что-то не могу придумать как обновить таблицу на форме.
16. laperuz 48 30.06.17 11:59 Сейчас в теме
(15)
У меня сделано так:
ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера.ВыполнитьСценарийВБезопасномРежиме(
			КлючСессии,
			АдресСценария,
			Результат
		);


Вот здесь в переменной "Результат" хранится то, что мы передали из модуля объекта.

В модуле объекта делаем последний этап сценария, у меня примерно так:
Если ОтлаживатьКакВстроенную Тогда
		Этап = Конструктор.ДобавитьМетодКонфигурации(Сценарий,
				"Обработки." + ИмяОбработки + ".Создать().ОформитьРезультат", // Имя метода
				);
	Иначе
		Этап = Конструктор.ДобавитьМетодОбработки(Сценарий,
				"ОформитьРезультат", // Имя метода
				);
	КонецЕсли;
	Конструктор.ДобавитьСохраняемоеЗначение(Этап, "АдресТабличногоДокумента");
	Конструктор.ДобавитьПараметрВыполненияКоманды(Этап, "СтруктураДокумента");
Показать
17. kuld 427 11.02.18 12:09 Сейчас в теме
Вот это

После формирования сценария с помощью вызова процедуры
ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера.ВыполнитьСценарийВБезопасномРежиме(
        КлючСессии,
        АдресСценария,
        Результат
    );

сценарий начинает исполняться.

Работает в демо БСП 2.4.4.64, но в УНФ 1.6.12.4 нет даже такого общего модуля "ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера­"

Переменная не определена (ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера)
<<?>>ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервер­а.ВыполнитьСценарийВБезопасномРежиме( (Проверка: Тонкий клиент)


Что-то поменялось и нигде не могу найти описания как оно теперь работает
Прикрепленные файлы:
18. laperuz 48 11.02.18 16:34 Сейчас в теме
(17) 1С убрали этот механизм из БСП, теперь все это нужно делать через расширения.
19. o.nikolaev 203 02.01.21 01:11 Сейчас в теме
А есть где-то разъяснение про то для чего родной конторой весь этот цирк с конями придуман для простой по сути операции - пишем данные из xml файла в табличку?

Статья отличная, спасибо!
Оставьте свое сообщение

См. также

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

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

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

5 стартмани

21.12.2020    2904    14    huxuxuya    11    

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

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

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

3 стартмани

04.09.2019    28586    23    Stepa86    46    

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

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

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

1 стартмани

03.07.2019    22774    6    m-rv    88    

Редактор объектов информационной базы 8.3

Универсальные обработки Обмен через XML v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.53 от 22.02.2021

2 стартмани

23.01.2019    33789    373    ROL32    41    

Выгрузка данных из УТ 11.3/11.4 в БП 3.0 (перенос документов и справочной информации из "Управление торговлей" ред. 11.3/11.4 в "Бухгалтерия предприятием" ред. 3.0). Обновлен до УТ 11.3.4.х/11.4.7х и БП 3.0.7х.х Промо

Обмен через XML Перенос данных из 1C8 в 1C8 v8 БП3.0 УТ11 Абонемент ($m)

Данная обработка предназначена для выгрузки в формате XML данных из программы «Управление торговлей» ред. 11.3/11.4 по основным группам документов (документы покупки/продажи товаров и услуг, складские документы, счета-фактуры, ценообразование), а также набор основных справочников. Загрузка данных в БП ред. 3.0 через обработку «Универсальный обмен данными XML». Основная цель обработки – оптимизация работы бухгалтеров во время обмена данными между программами, а также выборочная корректировка загруженных ранее документов.

04.03.2016    58877    0    SEOAngels    62    

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

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

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

1 стартмани

13.09.2018    23488    13    RocKeR_13    16    

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

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

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

1 стартмани

01.06.2018    32062    88    m-rv    57    

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

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

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

1 стартмани

27.08.2018    42504    63    dsdred    17    

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

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

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

5 стартмани

09.08.2018    30304    26    informa1555    26    

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

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

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

1 стартмани

17.07.2018    54241    20    kalyaka    16    

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

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

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

1 стартмани

28.12.2015    29619    71    vasvl123    9    

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

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

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

1 стартмани

22.05.2018    33861    11    SITR-utyos    13    

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1

Обмен через XML Зарплата Перенос данных из 1C8 в 1C8 Зарплата v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Абонемент ($m)

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1. Позволяют вести параллельную работу в базах ЗУП редакций 2,5 и 3.1.

10 стартмани

06.03.2018    42079    141    kostya_whiskas    24    

Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3

Перенос данных из 1С7.7 в 1C8.X Обмен через XML v7.7 v8 1cv7.md Россия Абонемент ($m)

Воспользоваться современным средством переноса данных "Конвертация данных 3.0.5.3" можно только выгрузив из системы - источника данных XML в формате обмена данными EnterpriseData. В этой публикации можно скачать приемы выгрузки из 1С 7.7 универсального формата обмена для Конвертации данных 3. Выполняем перенос данных из «1С:Предприятие 7.7» в «1С:Предприятие 8.3». Используем Конвертацию данных КД 3.0 из 1c 7.7 --> 1С 8.3. На первой стадии еще не опубликовано иного способа подложить файл для Конвертации данных 3 кроме как сформировать его вручную, постараемся решить данную проблему.

1 стартмани

26.02.2018    42115    58    ksnik    3    

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

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

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

1 стартмани

08.02.2018    30076    20    mvxyz    17    

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

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

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

1 стартмани

06.12.2017    28539    54    kwazi    6    

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

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

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

1 стартмани

28.11.2017    52970    14    swimdog    44    

Telegram-боты

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

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

1 стартмани

01.09.2017    35780    137    PLAstic    59    

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

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

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

1 стартмани

30.05.2017    142946    13    signum2009    48    

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

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

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

1 стартмани

13.03.2017    33508    117    romasna    49    

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

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

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

1 стартмани

08.02.2017    32311    136    kiv1c    18    

Обмен данными онлайн через Веб-сервис с использованием обработки "Универсальный обмен данными XML"

Обмен через XML v8 1cv8.cf Абонемент ($m)

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

2 стартмани

28.10.2016    46633    261    linkov    55    

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

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

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

1 стартмани

03.10.2016    38327    96    json    25    

Редактор движений документа. Сохранение в XML, обмен между базами, замена регистратора.

Обработка документов Универсальные обработки Обмен через XML v8 Абонемент ($m)

Редактор набора записей движений документа. Позволяет сохранить набор записей в XML, в настройки пользователя, прочитать сохраненный XML в другой идентичной базе, заменить регистратор. Можно изменять порядок записей, менять активность, как массово, так и по одной и др. Тонкий клиент, управляемые формы.

1 стартмани

07.09.2016    44018    158    Aphanas    4    

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

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

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

2 стартмани

30.08.2016    28803    143    Stepa86    15    

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

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

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

1 стартмани

14.08.2016    50027    36    Demanoidos    60    

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

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

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

2 стартмани

05.06.2016    60588    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    65747    194    rozer    66    

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

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

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

1 стартмани

26.04.2016    64601    19    arakelyan    20    

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

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

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

1 стартмани

24.04.2016    36416    51    ildarovich    23    

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

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

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

1 стартмани

22.03.2016    85765    163    igo1    54    

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

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

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

1 стартмани

03.03.2016    19572    1    Alexander.Shvets    5    

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

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

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

1 стартмани

17.02.2016    52786    54    yuraos    18    

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

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

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

1 стартмани

17.02.2016    59447    194    balanton    23    

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

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

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

1 стартмани

16.02.2016    24685    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    40952    20    milkers    4    

1С:Интеграция ЕГАИС + Инвентаризация на ТСД

Обработка справочников Обмен через XML Оптовая торговля Оптовая торговля v8 1cv8.cf Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Абонемент ($m)

Интеграция ЕГАИС модуля для 1С: 8.3 + модуль WMS контура для инвентаризации алкогольных марок на ТСД.

1 стартмани

10.12.2015    38316    27    JetBrain    5