Сторінка 1 з 1

Загрузка из 1С вложения в документ MULTIDOC

Додано: 11 вересня 2020, 16:35
Олександр_Р
Доброго дня!
Хотелось бы создать обработку для группового создания из 1С Универсальных документов (шаблон MULTIDOC).
Читаю документацию, и не могу найти, как при создании можно передать в документ вложение.
Сохранить у себя можно через GetAppendixSign(), а вот как наоборот, передать вложение в Медок?

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 11 вересня 2020, 17:07
Inkognito
AddAppendix()

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 06 листопада 2020, 11:53
Олександр_Р
Скажите пожалуйста, а поле "ID" для ИД документа в 1С у него есть?
Или только те поля, которые видны в документе?

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 06 листопада 2020, 12:07
Inkognito
1) exdocid = Строка(Документ.УникальныйИдентификатор()); //узнать ИД документа в 1С. Далее используем его в функции создания документа (и проверки статуса).
2) Передать в Медок можно любые поля, которые в конструкторе шаблона справа (т.е. не только видимые) по имени поля.

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 06 листопада 2020, 18:30
Олександр_Р
Inkognito писав:
06 листопада 2020, 12:07
1) exdocid = Строка(Документ.УникальныйИдентификатор()); //узнать ИД документа в 1С. Далее используем его в функции создания документа (и проверки статуса).
2) Передать в Медок можно любые поля, которые в конструкторе шаблона справа (т.е. не только видимые) по имени поля.
Это понятно.
Пытаюсь заполнить контрагента.

Код: Виділити все

Если ЗначениеЗаполнено(СокрЛП(СведенияОПокупателе.КодПоЕДРПОУ)) Тогда	
			rsMain.Fields.Item("SIDE_SHORTNAME_K").Value  =  СокрЛП(Документ.Контрагент.Наименование);
			rsMain.Fields.Item("SIDE_EDRPOU_K").Value  =  СокрЛП(СведенияОПокупателе.КодПоЕДРПОУ); 
			Сообщить(СокрЛП(СведенияОПокупателе.КодПоЕДРПОУ));
		Иначе 
			rsMain.Fields.Item("SIDE_SHORTNAME_K").Value  =  СокрЛП(Документ.Контрагент.Наименование);
			rsMain.Fields.Item("SIDE_EDRPOU_K").Value  =  СокрЛП(СведенияОПокупателе.КодПоДРФО);
			Сообщить(СокрЛП(СведенияОПокупателе.КодПоДРФО));

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

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 07 листопада 2020, 10:19
Inkognito
Если в "Реестре первичных документов" в полях ЕДРПОУ/Наименование (контрагента) отображаются значения, значит передали верно, и в документе просто другие поля отображаются. А если и в "Реестре первичных документов" не отображаются данные контрагента, то это уже мистика - может метод Post() и/или Save() не вызваны в конце кода?

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 09 листопада 2020, 12:30
Олександр_Р
Вот полный код процедуры и скрин того, что заполнилось.

Код: Виділити все

Процедура Формирование_MULTIDOC (App, pd, orgId, Документ, Бланк, ИД)
	Попытка
		Doc  =  pd.OpenOrCreateDocument(orgId,  Бланк, , ,  ИД,  0);
		Попытка
			Doc.DisableScripts();
		Исключение
			Сообщить(НСТР("ru  =  'Не подключена возможность передачи данных между M.E.Doc и Вашей учетной системой. С условиями подключения можно ознакомиться в разделе «Інтеграція» в M.E.Doc'; uk  =  'Не підключено можливість передачі даних між M.E.Doc та Вашою обліковою системою. З умовами підключення можливо ознайомитись у розділі «Інтеграція» в M.E.Doc'"));
			ВызватьИсключение
		КонецПопытки;
		СведенияОПокупателе =  обПолучитьРеквизитыКонтрагента(Документ.Контрагент, Документ.Дата);
		СведенияОПоставщике =  обПолучитьРеквизитыФирмы(Документ.Фирма, Документ.Дата);
		
		
		rsMain = Doc.DataSets();     	  		  
		rsMain.Edit();              
		rsMain.Append();
		rsMain.Post();
		
		ДатаДокумента =Документ.Дата;
		rsMain.Fields.Item("DOCDATE").Value  =  ДатаДокумента;
		
		rsMain.Fields.Item("NUM").Value = ПолучитьНомерНаПечать(Документ); 
		
		rsMain.Fields.Item("FIRM_NAME").Value = СокрЛП(СведенияОПоставщике.ПолноеНаименование);
		rsMain.Fields.Item("FIRM_EDRPOU").Value  =  СокрЛП(СведенияОПоставщике.КодПоЕДРПОУ); 
		
		Если ЗначениеЗаполнено(СокрЛП(СведенияОПокупателе.КодПоЕДРПОУ)) Тогда	
			rsMain.Fields.Item("SIDE_SHORTNAME_K").Value  =  СокрЛП(Документ.Контрагент.Наименование);
			rsMain.Fields.Item("SIDE_EDRPOU_K").Value  =  СокрЛП(СведенияОПокупателе.КодПоЕДРПОУ); 
			Сообщить(СокрЛП(СведенияОПокупателе.КодПоЕДРПОУ));
		Иначе 
			rsMain.Fields.Item("SIDE_SHORTNAME_K").Value  =  СокрЛП(Документ.Контрагент.Наименование);
			rsMain.Fields.Item("SIDE_EDRPOU_K").Value  =  СокрЛП(СведенияОПокупателе.КодПоДРФО);
			Сообщить(СокрЛП(СведенияОПокупателе.КодПоДРФО));
			
		КонецЕсли;
		
		rsMain.Fields.Item("DOC_NAME").Value  =  "РН "+ПолучитьНомерНаПечать(Документ);
		rsMain.Post();
		Doc.Save();
		Исключение
	КонецПопытки
КонецПроцедуры

Безымянный.jpg
Безымянный.jpg (35.16 Кіб) Переглянуто 1526 разів
Затык именно с полем "Контрагент". Не заполняется ни в документе, ни в журнале

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 09 листопада 2020, 13:06
Олександр_Р
Если не заполнять поле SIDE_SHORTNAME_K, то перед открытием выгруженного документа код ОКПО виден в журнале электронных документов, потом исчезает

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 09 листопада 2020, 13:57
Олександр_Р
Да! В справочнике Медка такой контрагент есть, ручным поиском в справочнике по ОКПО находит

Re: Загрузка из 1С вложения в документ MULTIDOC

Додано: 09 листопада 2020, 14:48
Олександр_Р
Почему не выбирается из справочника по передаваемому значению? Вручную выбирается, через СОМ - нет.
Не тот тип? Принудительно назначал тип "Строка".... тоже не идет.
Не нравится длина строки? У меня восемь символов, поле - 10. Добавлял в конце два пробела, тоже нет.
Возможно, можно принудительно выбрать из справочника через BEFORE_SPR ?