Значение 1С8 -> ЗначениеВФайл 1C77 (ЗначениеВСтрокуВнутр, ЗначениеВСтроку)

19.04.21

Интеграция - Обмен между базами 1C

Код который помог мне передавать в платформу 7.7 такие объекты как Структура, Массив (есть возможность передавать таблицу значений)

 Для примера взял составную структуру данных:

Массив = Новый Массив; 
Массив.Добавить(1);
Массив.Добавить(2);
Массив.Добавить(3);
Массив.Добавить(4);

Структура = Новый Структура; 
Структура.Вставить("STR1", 1);
Структура.Вставить("STR2", 1);
Структура.Вставить("STR3", 3);

Значение=Новый Структура; 
Значение.Вставить("Массив",Массив);
Значение.Вставить("Структура",Структура);

Такая структура данных в 1С77 представляется в ввиде:

Массив = СоздатьОбъект("СписокЗначений"); 
Массив.ДобавитьЗначение(1);
Массив.ДобавитьЗначение(2);
Массив.ДобавитьЗначение(3);
Массив.ДобавитьЗначение(4);

Структура = СоздатьОбъект("СписокЗначений"); 
Структура.ДобавитьЗначение(1,"STR1");
Структура.ДобавитьЗначение(1,"STR2");
Структура.ДобавитьЗначение(3,"STR3");

Параметр=СоздатьОбъект("СписокЗначений"); 
Параметр.Установить("Массив", Массив);
Параметр.Установить("Структура",Структура);

Через призму функции ЗначениеВФайл

{"VL",{
{{"VL",{
{{"N","0","0","0","0","0","1"},""},
{{"N","0","0","0","0","0","2"},""},
{{"N","0","0","0","0","0","3"},""},
{{"N","0","0","0","0","0","4"},""}}},"Массив"},
{{"VL",{
{{"N","0","0","0","0","0","1"},"STR1"},
{{"N","0","0","0","0","0","1"},"STR2"},
{{"N","0","0","0","0","0","3"},"STR3"}}
},"Структура"}
}
}

1) Определил с какими типами данных и как с ними работать (Строка, Число, Булево).

Функция ЗначениеВСтроку(Значение) Экспорт
	Если ТипЗнч(Значение) = Тип("Строка") Тогда
		Возврат СтрокаВСтроку(Значение);
	ИначеЕсли ТипЗнч(Значение) = Тип("Число") Тогда
		Возврат ЧислоВСтроку(Значение);
 	ИначеЕсли ТипЗнч(Значение) = Тип("Дата") Тогда
		Возврат ДатаВСтроку(Значение);
	ИначеЕсли ТипЗнч(Значение) = Тип("Булево") Тогда
		Возврат ?(Значение, ЧислоВСтроку(1), ЧислоВСтроку(0));
        // этот участок кода сделан для ссылок где реализовал реквизит 'СсылкаНаОбъект' 
        // в которой содержится значение конкретного элемента справочника (Пример: {"O","0","0","196","0","0","   1089488M  "})
	// в данном примере не реализовано
        ИначеЕсли ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Значение)) Тогда
		ОбъектМетаданных =  Значение.Метаданные();
		Если Метаданные.Справочники.Содержит(ОбъектМетаданных) Или Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
			Возврат СсылкаВСтроку(Значение, ОбъектМетаданных);
		Иначе
			Возврат СтрокаВСтроку(Значение);
		КонецЕсли;
	Иначе
		Возврат СоставноеЗначениеВСтроку(Значение);	
	КонецЕсли;
КонецФункции

2) Конвертирую значение в простую строку (формат 1С77)

Функция Блок(Знач ТипСтрокой, 
	Знач Ячейка1 = Неопределено, 
	Знач Ячейка2 = Неопределено, 
	Знач Ячейка3 = Неопределено, 
	Знач Ячейка4 = Неопределено, 
	Знач Ячейка5 = Неопределено, 
	Знач Ячейка6 = Неопределено, 
// составной тип ввиду {x,x,x,x,x,x} не должен заключатся в кавычки
// пример {"VL", {{x,x,x,x,x,x}, "x"}} - правильно
//        {"VL", {"{x,x,x,x,x,x}", "x"}} - не правильно 
	БлокДанных = Ложь)
	
	МассивДанных = Новый Массив;
	
	Если ТипСтрокой <> Неопределено Тогда
		МассивДанных.Добавить(Ячейка(ТипСтрокой));
	КонецЕсли;
	
// на первом неопределено нужно зарубить иструкцию
	Если Ячейка1 <> Неопределено Тогда
		МассивДанных.Добавить(?(БлокДанных, Ячейка1, Ячейка(Ячейка1)));
		Если Ячейка2 <> Неопределено Тогда
			МассивДанных.Добавить(?(БлокДанных, Ячейка2, Ячейка(Ячейка2)));
			Если Ячейка3 <> Неопределено Тогда
				МассивДанных.Добавить(?(БлокДанных, Ячейка3, Ячейка(Ячейка3)));
				Если Ячейка4 <> Неопределено Тогда
					МассивДанных.Добавить(?(БлокДанных, Ячейка4, Ячейка(Ячейка4)));
					Если Ячейка5 <> Неопределено Тогда
						МассивДанных.Добавить(?(БлокДанных, Ячейка5, Ячейка(Ячейка5)));
						Если Ячейка6 <> Неопределено Тогда
							МассивДанных.Добавить(?(БлокДанных, Ячейка6, Ячейка(Ячейка6)));
						КонецЕсли;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Возврат "{" + СтрСоединить(МассивДанных, ",") + "}";
	
КонецФункции

3) Особенность каждого значение в блоке возвести все данные в кавычки (даже пустые)

Функция Ячейка(Значение)
	Если Значение = Неопределено Тогда
		Возврат Неопределено;
	ИначеЕсли Значение = "" Тогда
		Возврат """""";
	Иначе
		Возврат """" + Строка(Значение) + """";
	КонецЕсли;	
КонецФункции

4) Описываю конвертацию простых типов

Функция СтрокаВСтроку(Значение)
	Возврат Блок("S", "0", "0", "0", "0", "0", Значение);
КонецФункции

Функция ЧислоВСтроку(Значение)
	Возврат Блок("N", "0", "0", "0", "0", "0", Значение);
КонецФункции

Функция ДатаВСтроку(Значение)
	Возврат Блок("D", "0", "0", "0", "0", "0", Формат(Значение, "ДФ=yyyyMMdd"));
КонецФункции

5) Описываю составные значения (СписокЗначений в строковом представлении 1C77 имеет следующий вид: {"VL", {#Значение}})

Функция СоставноеЗначениеВСтроку(Значение)
	
	ПредставлениеЗначения = Новый Массив;
	ПредставлениеЗначения.Добавить(Ячейка("VL"));
	
	ПредставлениеДанных = Новый Массив;
	Если ТипЗнч(Значение) = Тип("Массив") Тогда
		Для Индекс = 0 по Значение.Количество() - 1 Цикл
			ПредставлениеДанных.Добавить(Блок(Неопределено, ЗначениеВСтроку(Значение.Получить(Индекс)), Ячейка(""),,,,,Истина));
		КонецЦикла
	ИначеЕсли ТипЗнч(Значение) = Тип("Структура") Тогда
		Для каждого КлючЗначение Из Значение Цикл
			ПредставлениеДанных.Добавить(Блок(Неопределено, ЗначениеВСтроку(КлючЗначение.Значение), Ячейка(КлючЗначение.Ключ),,,,,Истина));
		КонецЦикла
	ИначеЕсли ТипЗнч(Значение) = Тип("Соответствие") Тогда
	КонецЕсли;
	
	ПредставлениеЗначения.Добавить("{" + СтрСоединить(ПредставлениеДанных, ",") + "}");
	 
	Возврат "{" + СтрСоединить(ПредставлениеЗначения, ",") + "}";
КонецФункции

При выполнении функции:

ЗначениеВСтроку(Значение)

где значение - это описание составной коллекции (см. выше) должен дать результат следующего ввида:

{"VL",{
{{"VL",{
{{"N","0","0","0","0","0","1"},""},
{{"N","0","0","0","0","0","2"},""},
{{"N","0","0","0","0","0","3"},""},
{{"N","0","0","0","0","0","4"},""}}},"Массив"},
{{"VL",{
{{"N","0","0","0","0","0","1"},"STR1"},
{{"N","0","0","0","0","0","1"},"STR2"},
{{"N","0","0","0","0","0","3"},"STR3"}}},"Структура"}}
}

Что соответствует представлению в 1С77. Вызов функции ЗначениеИзФайла(<ИмяФайла>,<Объект>,<Формат>) возвратить исходное представление значения.

 

P.S. Пример структуры которую я передаю с помощью этих процедур в 1С77 для вызова УниверсальногоОбмена (Конвертация данных):

Формирую в 1С8.3

ТекстОписаниеОбмена = ТиССервер.ЗначениеВСтроку(Ответ);

 Где ответ это составная структура с описанием процесса выгрузки

{"VL",{
{{"S","0","0","0","0","0","316b3e20_a8fd_4c94_8ecf_a67a92a5abd6"},"Идентификатор"},
{{"S","0","0","0","0","0","\\...\resource1C\v7_316b3e20_a8fd_4c94_8ecf_a67a92a5abd6_proc.ert"},"ОбработчикОбмена"},
{{"S","0","0","0","0","0","\\...\resource1C\v7_316b3e20_a8fd_4c94_8ecf_a67a92a5abd6_rules.xml"},"ПравилаОбмена"},
{{"S","0","0","0","0","0","\\...\resource1C\"},"КаталогФайлов"},
{{"D","0","0","0","0","0",""},"НачалоПериода"},
{{"D","0","0","0","0","0","20210419"},"КонецПериода"},
{{"S","0","0","0","0","0","export_data"},"Команда"},
{{"S","0","0","0","0","0","refБанковскиеСчета,ref"},"ИспользуемыеПравила"},
{{"N","0","0","0","0","0","0"},"КоличествоЭлементов"},
{{"N","0","0","0","0","0","0"},"РежимРазработчика"},
{{"VL",{
   {{"VL",{
    {{"N","0","0","0","0","0","0"},"Использовать"},
    {{"S","0","0","0","0","0","ТекущийЭлемент"},"ПолеОтбора"}, 
    {{"S","0","0","0","0","0","="},"Условие"},
    {{"B","0","0","1414","0","0","        70M  "},"Значение"},
    {{"S","0","0","0","0","0","Справочник"},"ТипОбъекта"},
    {{"S","0","0","0","0","0","БанковскиеСчета"},"Объект"},
    {{"N","0","0","0","0","0","0"},"Длина"},
    {{"N","0","0","0","0","0","0"},"Точность"}}},""}}},"ТаблицаНастройкиОтбора"}}}

Конвертация данного значения в СписокЗначение 1С77 происходит простым способом

если winhttprequest.Status = 200 тогда
	значениеизфайла(winhttprequest.responsetext,результат);
	если результат = мпустоезначение тогда
		сообщить("ошибка обработки параметров get запроса");
	конецесли;
конецесли;

 

Получение информации об обмене описываю функцией след содержания:

...

записать_лог("RN(export_data)");
	        
результатобмена = "";
	
обработчикобмена = параметры.получить("ОбработчикОбмена");
Если существует_файл(обработчикобмена) = 0 Тогда
	Возврат результатобмена;
КонецЕсли; 
	
правилаобмена = параметры.получить("ПравилаОбмена"); 
Если существует_файл(правилаобмена) = 0 Тогда
	Возврат результатобмена;
КонецЕсли; 
	
каталогфайлов = параметры.Получить("КаталогФайлов");
результатобмена = каталогфайлов + "v7_" + идентификатор + "_data.xml";
	
параметрыформы = СоздатьОбъект("СписокЗначений");
параметрыформы.Установить("ИмяФайлаПравил", правилаобмена);
	
параметрыформы.Установить("ИмяФайлаДанных", результатобмена);
	
датаначала = параметры.Получить("НачалоПериода");
параметрыформы.Установить("ДатаНачала", датаначала); 
	
датаконец = параметры.Получить("КонецПериода");
параметрыформы.Установить("ДатаОкончания", датаконец); 
	
параметрыформы.Установить("ИмяКоманды", "Выгрузить"); 
	
ТаблицаНастройкиПараметров = СоздатьОбъект("СписокЗначений"); 
ТаблицаНастройкиПараметров.ДобавитьЗначение(параметры.Получить("КоличествоЭлементов"),"КоличествоОбъектов");
ТаблицаНастройкиПараметров.ДобавитьЗначение(параметры.Получить("РежимРазработчика"),"РежимРазработчика");
параметрыформы.Установить("ТаблицаНастройкиПараметров", ТаблицаНастройкиПараметров);    
	
// Конвертировать в ТЗ
МассивСтрок = параметры.Получить("ТаблицаНастройкиОтбора");
	
параметрыформы.Установить("КомментироватьВыгрузкуОбъектов", 0);
параметрыформы.Установить("ИспользуемыеПравилаВыгрузки", параметры.получить("ИспользуемыеПравила"));	
параметрыформы.Установить("ИмяАлгоритма");
	
Сообщить("Начал <" + идентификатор + ">"); 
	
ОткрытьФорму("Обработка", параметрыформы, обработчикобмена); 
	
Сообщить("Окончил <" + идентификатор + ">");

описаниеошибок = параметрыформы.получить("СписокОшибок");
	
Если описаниеошибок = ПолучитьПустоеЗначение() Тогда
	записать_лог("DSCR(Данные выгружены)");
Иначе
	записать_лог("DSCR(" + описаниеошибок + ")");
КонецЕсли; 
	
...

 

обработка алгоритмы Предприятие 77 Предпримятие 8.x

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    160386    357    268    

349

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135681    730    291    

392

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68948    181    139    

111

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    232039    126    327    

297

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20679    136    38    

95

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34499    83    58    

81

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46871    200    64    

162

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67844    41    123    

46
Оставьте свое сообщение