Перенести значение с типом СправочникСсылка в строку.

1. user1008893 06.05.19 09:25 Сейчас в теме
Дописываю обработку переноса данных из самописной erp в бухгалтерию.
В erp вариантИсполнения-справочникссылка,а в создала бухгалтерии реквизит документа ВариантИсполнения-строка.
Для Каждого СтрокаТаблТЧ Из _ТаблТЧ Цикл
		
		СпрС_Номен  = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, ?(мПараметрыЗагрузки.ЗагружатьВариантыИсполнения, "ВариантИсполнения", "Номенклатура"));;
		
		Если НЕ СпрС_Номен.Услуга Тогда // товары
			СтрокаТЧ                     = ДокО.Товары.Добавить();
			СтрокаТЧ.ЕдиницаИзмерения    = СпрС_Номен.БазоваяЕдиницаИзмерения;
			СтрокаТЧ.Коэффициент	     = 1;
			
			_СтранаПроисхождения         = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "СтранаПроисхождения");
			_НомерГТД                    = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "НомерГТД");
			СтрокаТЧ.СтранаПроисхождения = НайтиСоздатьСтрануПроисхожднния(_СтранаПроисхождения);
			СтрокаТЧ.НомерГТД		     = НайтиСоздатьНомерГТД(_НомерГТД);
			
			
			СтрокаТЧ.СкидкаПроцент	= ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "ПроцентСкидки");
			СтрокаТЧ.СкидкаИтог		= ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "СуммаСкидки");
			
	       
		Иначе // услуга	
			СтрокаТЧ 			= ДокО.Услуги.Добавить();
			СтрокаТЧ.Содержание = СокрЛП(ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, ?(мПараметрыЗагрузки.ЗагружатьВариантыИсполнения, "ВариантИсполнения", "Номенклатура")));
		КонецЕсли;
		
		СтрокаТЧ.Номенклатура 	= СпрС_Номен;
		
		_ИсхКол    				= ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "Кол");
		_ИсхКоэф                = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "Коэффициент");
		_ИсхКол                 = ?(_ИсхКол  = "", 1, Число(_ИсхКол));
		_ИсхКоэф                = ?(_ИсхКоэф = "", 1, Число(_ИсхКоэф));

		СтрокаТЧ.Количество	 	= _ИсхКол * _ИсхКоэф;
		
		
		СтрокаТЧ.ВариантИсполнения= СтрокаТаблТЧ.Значение;
		
		
		СтрокаТЧ.СуммаНДС		=ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение,"НДС");
Показать
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 06.05.19 09:33 Сейчас в теме
(1)
бухгалтерии реквизит документа ВариантИсполнения-строка.
- использовать наименование
3. user1008893 06.05.19 09:34 Сейчас в теме
4. alex-l19041 8 06.05.19 09:35 Сейчас в теме
(3)В erp вариантИсполнения-справочник - значит есть Наименование
5. azanas 06.05.19 09:39 Сейчас в теме
(3) СтрокаТЧ.ВариантИсполнения= ?(ЗначениеЗаполнено(СтрокаТаблТЧ.Значение),СтрокаТаблТЧ.Значение.Наименование,"");
6. user1008893 06.05.19 09:41 Сейчас в теме
(5) {ВнешняяОбработка.ЗагрузкаДанныхXMLизПСУМФБП82.МодульОбъекта(2143)}: Поле объекта не обнаружено (Наименование)
СтрокаТЧ.ВариантИсполнения= ?(ЗначениеЗаполнено(СтрокаТаблТЧ.Значение),СтрокаТаблТЧ.Значение.Наименование,"");
7. azanas 06.05.19 09:43 Сейчас в теме
(6) Что передается сюда "СтрокаТаблТЧ.Значение"?
alex-l19041; +1 Ответить
8. user1008893 06.05.19 09:45 Сейчас в теме
(7)
Прикрепленные файлы:
9. azanas 06.05.19 09:47 Сейчас в теме
(8) СтрокаТЧ.ВариантИсполнения= ?(ЗначениеЗаполнено(СтрокаТаблТЧ.Номенклатура),СтрокаТаблТЧ.Номенклатура.Наименование,"");
попробуй так
11. azanas 06.05.19 09:53 Сейчас в теме
(8)СтрокаТЧ.ВариантИсполнения= ?(ЗначениеЗаполнено(СпрС_Номен),СпрС_Номен.Наименование,""); вот так правильнее
13. user1008893 06.05.19 09:54 Сейчас в теме
(11)мне не надо номенклатуру получать,надо вариант исполнения
14. azanas 06.05.19 09:57 Сейчас в теме
(13) Пардон,не в те дебри занесло)
СтрокаТЧ.ВариантИсполнения= ?(ЗначениеЗаполнено(СтрокаТаблТЧ.ВариантИсполнения),СтрокаТаблТЧ.ВариантИсполнения.Наименование,"");
15. user1008893 06.05.19 09:58 Сейчас в теме
(14) опять ошибка,такая же
10. alex-l19041 8 06.05.19 09:49 Сейчас в теме
(1)
ПолучитьЗначениеИзТаблРекв
- код этой функции ?
12. user1008893 06.05.19 09:54 Сейчас в теме
(10)
Функция ПолучитьЗначениеИзТаблРекв(ВхТаблРекв, ВхИмяРеквизита, ВхДопПризнак = "", ВхСоздаватьЕслиНеНайден = ИСТИНА)
	
	Если НЕ ЗначениеЗаполнено(ВхТаблРекв) Тогда
		Возврат "";
	КонецЕсли;
	
	_СтрТаблРекв = ВхТаблРекв.Найти(ВхИмяРеквизита, "ИмяРеквизита");
	
	Если _СтрТаблРекв = Неопределено Тогда
		
		Возврат "";  //Такого реквизита с таким именем нет
	
	ИначеЕсли Лев(_СтрТаблРекв.ТипРеквизита, 16) = "СправочникСсылка"
		ИЛИ Лев(_СтрТаблРекв.ТипРеквизита, 16) = "СправочникОбъект" Тогда
		
		Возврат ПолучитьСсылкуСпр(_СтрТаблРекв.Значение, _СтрТаблРекв.ТипРеквизита, ВхДопПризнак); 
		
	ИначеЕсли Лев(_СтрТаблРекв.ТипРеквизита, 14) = "ДокументСсылка" 
		ИЛИ Лев(_СтрТаблРекв.ТипРеквизита, 14) = "ДокументОбъект" Тогда
		
		Возврат ПолучитьСсылкуДок(_СтрТаблРекв.Значение, _СтрТаблРекв.ТипРеквизита, ВхДопПризнак); 
		
	ИначеЕсли Лев(_СтрТаблРекв.ТипРеквизита, 18) = "ПеречислениеСсылка" Тогда
		
		Возврат _СтрТаблРекв.Значение;
		
	ИначеЕсли _СтрТаблРекв.ТипРеквизита = "Булево" Тогда
		
		Возврат ?(_СтрТаблРекв.Значение = "Да", Истина, Ложь);
		
	ИначеЕсли _СтрТаблРекв.ТипРеквизита = "Число" Тогда 
		
		_ЗначениеСтр = СтрЗаменить(_СтрТаблРекв.Значение, " ", "");
		Возврат ?(_ЗначениеСтр = "", 0, Число(_ЗначениеСтр));
		
	Иначе 
		
		Возврат _СтрТаблРекв.Значение;
		
	КонецЕсли;
	
КонецФункции
Показать
16. alex-l19041 8 06.05.19 09:59 Сейчас в теме
(12)
ПолучитьСсылкуСпр
- код ?
17. user1008893 06.05.19 10:02 Сейчас в теме
(16)я не хочу в бухгалтерии в справочниках хранить вариант исполнения.Эта функция создает элемент справочника и потом возвращает значение
18. azanas 06.05.19 10:05 Сейчас в теме
(17)
ВариантИсполнения = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "ВариантИсполнения");
СтрокаТЧ.ВариантИсполнения= ?(ЗначениеЗаполнено(ВариантИсполнения),ВариантИсполнения.Наименование,"");
а так?
user1008893; +1 Ответить
19. user1008893 06.05.19 10:10 Сейчас в теме
(18)
Прикрепленные файлы:
20. user1008893 06.05.19 10:12 Сейчас в теме
(19)как бы создает ВИ которого нет
21. azanas 06.05.19 10:15 Сейчас в теме
(20)этот код выполняется на стороне бух? покажи структуру _ТаблТЧ
23. user1008893 06.05.19 10:20 Сейчас в теме
(21)да,на стороне бух,
Прикрепленные файлы:
24. user1008893 06.05.19 10:25 Сейчас в теме
(21)
ВариантИсполнения = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "ВариантИсполнения"); 

Вот это создает,номенклатуру в справочник номенклатура.
25. azanas 06.05.19 10:27 Сейчас в теме
(24) в _ТаблТЧ только 1 строка с "ВариантИсполнения" или может быть несколько строк?
26. user1008893 06.05.19 10:28 Сейчас в теме
(25)у каждой номенклатуры свой ВИ,поэтому может быть несколько
27. azanas 06.05.19 10:33 Сейчас в теме
(26) покажи _ТаблТЧ какие данные там в момент отладки.
28. user1008893 06.05.19 10:35 Сейчас в теме
(27)
Прикрепленные файлы:
29. azanas 06.05.19 10:38 Сейчас в теме
(28) Провались глубже,и покажи что там в "Значение"
31. user1008893 06.05.19 10:41 Сейчас в теме
(29)
Прикрепленные файлы:
32. azanas 06.05.19 10:48 Сейчас в теме
33. user1008893 06.05.19 10:57 Сейчас в теме
(32)
Прикрепленные файлы:
34. azanas 06.05.19 11:03 Сейчас в теме
(33)
Отбор = Новый Структура;
Отбор.Вставить("ИмяРеквизита","ВариантИсполнения");

Строки = СтрокаТаблТЧ.Значение.НайтиСтроки(Отбор);
//Посмотри отладкой что туда попало.
Если Строки.Количество() > 0 Тогда
ВариантИсполнения = Строки[0].Значение;
СтрокаТЧ.ВариантИсполнения = ВариантИсполнения;
Конецесли;
user1008893; +1 Ответить
35. user1008893 06.05.19 11:12 Сейчас в теме
(34)где то создает ви
Прикрепленные файлы:
40. azanas 06.05.19 12:47 Сейчас в теме
(35) Врядли создает,скорее всего с ERP такая тч идет, причем наименования нет.Вначале на стороне ERP проверь что выгружается в "ВариантИсполнения".Если нет наименования,добавь.
Отбор = Новый Структура;
Отбор.Вставить("ИмяРеквизита","ВариантИсполнения");

Строки = СтрокаТаблТЧ.Значение.НайтиСтроки(Отбор);
//Посмотри отладкой что туда попало.
Если Строки.Количество() > 0 Тогда
ВариантИсполнения = Строки[0].Значение;
//тут получили тз,при условии что в ерп первой строкой всегда выгружается наименование(сейчас там код),можем по индексу вытянуть его.
СтрокаТЧ.ВариантИсполнения = ВариантИсполнения[0].Значение;
Конецесли;
41. user1008893 06.05.19 12:55 Сейчас в теме
(40)В функции ПолучитьЗначениеИзТаблРекв,он проверяет,что ВИ-справочник и начинает создавать номенклатуру(типо ВИ)
42. user1008893 06.05.19 13:00 Сейчас в теме
(40)Вот насоздавал
Прикрепленные файлы:
44. azanas 06.05.19 13:15 Сейчас в теме
(42) Убери этот код.

Вместо :

"СтрокаТЧ.ВариантИсполнения= СтрокаТаблТЧ.Значение;" из (1)

Вставь вот это:

Отбор = Новый Структура;
Отбор.Вставить("ИмяРеквизита","ВариантИсполнения");

Строки = СтрокаТаблТЧ.Значение.НайтиСтроки(Отбор);
Если Строки.Количество() > 0 Тогда
ВариантИсполнения = Строки[0].Значение;
//тут получили тз,при условии что в ерп первой строкой всегда выгружается наименование(сейчас там код),можем по индексу вытянуть его.
СтрокаТЧ.ВариантИсполнения = ВариантИсполнения[0].Значение;
Конецесли;
user1008893; +1 Ответить
45. user1008893 06.05.19 13:19 Сейчас в теме
(44)получает строку,но все равно берет код из созданного ВИ
Прикрепленные файлы:
46. azanas 06.05.19 13:28 Сейчас в теме
(45) Вначале на стороне ERP проверь что выгружается в "ВариантИсполнения".Если нет наименования,добавь.
user1008893; +1 Ответить
48. user1008893 06.05.19 15:20 Сейчас в теме
(46)Нашла,то где он понимает,что это номенклатура и создает ее
ИначеЕсли (ВхИсхТипОбъекта = "СправочникОбъект.ВариантыИсполнения") или (ВхИсхТипОбъекта = "СправочникСсылка.ВариантыИсполнения") Тогда	
		Возврат "Номенклатура";
49. azanas 06.05.19 15:26 Сейчас в теме
(48) после (44) все равно создаются лишние номенклатуры?Скинь код который у тебя сейчас.
user1008893; +1 Ответить
50. user1008893 06.05.19 15:46 Сейчас в теме
(49)да,создаются.но,блин когда я что то добавляю в обработку,на стороне ERP пишет Ошибка подключения обработки загрузки в БП,вот разбираюсь
Функция НайтиСоздать_ДокОтгрузкаПокупателю(ТипОбъекта, ТаблРекв)     // РеализацияТоваровУслуг
	
	ДокС = ПолучитьЗначениеИзТаблРекв(ТаблРекв, "Ссылка"); // возвращает ссылку на док-т (если не найден, то тут же создается)
	
	Если ДокС = 0 Тогда
		Возврат 0;
	КонецЕсли;

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

	// ТЧ очистим заранее, чтобы у системы не было вопросов с перезаполнением их параметров при обработке выбора договора
	ДокО.Товары.Очистить();
	ДокО.Услуги.Очистить();
	
	МессагаПоОбъекту(ДокО, ?(_ТолькоЧтоСоздан, "Загрузка", "Обновление"));
	
	// заполнение шапки
	ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокО, м_ТекПользователь, м_ВалютаРеглУчета, "Продажа");
	
	ДокО.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПродажаКомиссия;
	ДокО.ТипЦен      = ТипЦенПродажи;
	
	ДокО.Организация		= ПолучитьЗначениеИзТаблРекв(ТаблРекв, "Фирма");

	ДокО.УстановитьНовыйНомер();


	//ДокО.Контрагент		    	= ПолучитьЗначениеИзТаблРекв(ТаблРекв,"Контрагент");
	ДокО.Контрагент		    	= ПолучитьЗначениеИзТаблРекв(ТаблРекв,"Контрагент", "Покупатель");

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

	

	ПС_ЗаполнитьКомментарий(ДокО, ТаблРекв);

	
	// обработка изменения договора (ПриИзмененииДоговора()):
	СпособЗаполненияЦен          = ""; //Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры;
	СтруктураРеквизитовДокумента = Ценообразование.ПолучитьСтруктуруРеквизитовДокументаДляЦенообразования(ЭтотОбъект);
	

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

	ДокО.ЗаполнитьСчетаУчетаРасчетов(СчетаУчета);		
	
	
	//ДокО.Склад              = СкладДляДокументов;
	ДокО.Склад              = ПолучитьЗначениеИзТаблРекв(ТаблРекв, "Склад");

	
	ДокО.Ответственный      = м_ТекПользователь;
	
	
	
	//Заполнение Табл частей:
	
	_ТаблТЧ = ТаблРекв.Найти("ТЧ", "ИмяРеквизита").Значение;
	Для Каждого СтрокаТаблТЧ Из _ТаблТЧ Цикл
		
		СпрС_Номен  = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, ?(мПараметрыЗагрузки.ЗагружатьВариантыИсполнения, "ВариантИсполнения", "Номенклатура"));;
		
		Если НЕ СпрС_Номен.Услуга Тогда // товары
			СтрокаТЧ                     = ДокО.Товары.Добавить();
			СтрокаТЧ.ЕдиницаИзмерения    = СпрС_Номен.БазоваяЕдиницаИзмерения;
			СтрокаТЧ.Коэффициент	     = 1;
			
			_СтранаПроисхождения         = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "СтранаПроисхождения");
			_НомерГТД                    = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "НомерГТД");
			СтрокаТЧ.СтранаПроисхождения = НайтиСоздатьСтрануПроисхожднния(_СтранаПроисхождения);
			СтрокаТЧ.НомерГТД		     = НайтиСоздатьНомерГТД(_НомерГТД);
			
		
			СтрокаТЧ.СкидкаПроцент	= ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "ПроцентСкидки");
			СтрокаТЧ.СкидкаИтог		= ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "СуммаСкидки");
			
	
		Иначе // услуга	
			СтрокаТЧ 			= ДокО.Услуги.Добавить();
			СтрокаТЧ.Содержание = СокрЛП(ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, ?(мПараметрыЗагрузки.ЗагружатьВариантыИсполнения, "ВариантИсполнения", "Номенклатура")));
		КонецЕсли;
		
		СтрокаТЧ.Номенклатура 	= СпрС_Номен;
		
		_ИсхКол    				= ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "Кол");
		_ИсхКоэф                = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "Коэффициент");
		_ИсхКол                 = ?(_ИсхКол  = "", 1, Число(_ИсхКол));
		_ИсхКоэф                = ?(_ИсхКоэф = "", 1, Число(_ИсхКоэф));

		СтрокаТЧ.Количество	 	= _ИсхКол * _ИсхКоэф;
		 //ВИ
		Отбор = Новый Структура; 
Отбор.Вставить("ИмяРеквизита","ВариантИсполнения"); 

Строки = СтрокаТаблТЧ.Значение.НайтиСтроки(Отбор); 
Если Строки.Количество() > 0 Тогда 
ВариантИсполнения = Строки[0].Значение; 

СтрокаТЧ.ВариантИсполнения = ВариантИсполнения[0].Значение; 
Конецесли;
		 //ВИ
		СтрокаТЧ.СуммаНДС		= ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение,"НДС");

		Если ДокО.СуммаВключаетНДС Тогда // сумма включает НДС - в зависимости от флажка
			СтрокаТЧ.Сумма	    = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "Сумма");
		Иначе
			СтрокаТЧ.Сумма	    = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "Сумма") - СтрокаТЧ.СуммаНДС;
		КонецЕсли;
		
		//СтрокаТЧ.Цена           = СтрокаТЧ.Сумма / СтрокаТЧ.Количество;
		СтрокаТЧ.Цена           = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "Цена");
	
		
		_ИсхСтавкаНДС 		    = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "СтавкаНДС");
		СтрокаТЧ.СтавкаНДС	    = ПолучитьЛокСтавкуНДС(_ИсхСтавкаНДС);
				
	КонецЦикла;
	

	//Сворачиваем по номенклатуре
	_ТЧ_ТоварыСвернуто = ПС_СвернутьТЧ(ДокО.Товары, "ЕдиницаИзмерения, Коэффициент, СтранаПроисхождения, НомерГТД, Номенклатура, СтавкаНДС, Цена", "Количество, СуммаНДС, Сумма, СкидкаИтог", "СкидкаПроцент");
	ДокО.Товары.Загрузить(_ТЧ_ТоварыСвернуто);
	
	_ТЧ_УслугиСвернуто = ПС_СвернутьТЧ(ДокО.Услуги, "Номенклатура, СтавкаНДС, Цена", "Количество, СуммаНДС, Сумма");
	ДокО.Услуги.Загрузить(_ТЧ_УслугиСвернуто);
	
	
	ДокО.ЗаполнитьСчетаУчетаВТабЧасти(ДокО.Товары, "Товары", Истина);
	ДокО.ЗаполнитьСчетаУчетаВТабЧастиУслуги(Истина);

	Если ЗаписатьЗаполненныйОбъект(ДокО)=Ложь Тогда
		Возврат 0;
	КонецЕсли;
	
	//добавим в табл документ к проведению:
	_Проведен = Булево(ПолучитьЗначениеИзТаблРекв(ТаблРекв, "Проведен"));
	ДобавитьВТаблДокДляПроведения(ДокО, _Проведен);  
	
	
	// --------------------------- Создаем сч-ф --------------------------
	
	Отбор = Новый Структура;
	Отбор.Вставить("Организация", ДокО.Организация);
	УчетнаяПолитикаОрганизации = РегистрыСведений.УчетнаяПолитикаОрганизаций.ПолучитьПоследнее(ДокО.Дата, Отбор);
	Если УчетнаяПолитикаОрганизации.УпрощенныйУчетНДС Тогда
		Возврат 1;
	КонецЕсли;
	
	Мессага("  создание/обновление счета-фактуры выданного");
	
	
	//Создание СФ только для Орг. Юрлиц
	Если ДокО.Организация.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
		
		//Попытаемся найти счет-фактуру
		ДокС_СчФ = УчетНДС.НайтиПодчиненныйСчетФактуру(ДокО.Ссылка, "СчетФактураВыданный");
		
		//Если не нашли - создаем новый док
		Если Не ЗначениеЗаполнено(ДокС_СчФ) Тогда
			
			ДокО_СчФ = Документы.СчетФактураВыданный.СоздатьДокумент();
			
			ДокО_СчФ.Заполнить(ДокО.Ссылка); // заполнение на основании текущего дока реализации
			ДокО_СчФ.Номер       = ДокО.Номер;
			ДокО_СчФ.Дата        = ДокО.Дата;
			ДокО_СчФ.КодВидаОперации = "01";
			ДокО_СчФ.ОпределениеПараметровСчетаФактуры();
			ДокО_СчФ.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию;
			
			Если ЗаписатьЗаполненныйОбъект(ДокО_СчФ)=Ложь Тогда
				Возврат 0;
			КонецЕсли;
			
			//добавим в табл документ к проведению
			_Проведен = Булево(ПолучитьЗначениеИзТаблРекв(ТаблРекв, "Проведен"));
			ДобавитьВТаблДокДляПроведения(ДокО_СчФ, _Проведен, 2); // приоритет 2 (чтобы проводились позже отгрузок, имеющих приоритет = 1)
			
		КонецЕсли;
		
	КонецЕсли;

		
	Возврат 1;
	
КонецФункции
Показать
51. azanas 06.05.19 15:58 Сейчас в теме
(50) это:

СпрС_Номен = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, ?(мПараметрыЗагрузки.ЗагружатьВариантыИсполнения, "ВариантИсполнения", "Номенклатура"));

поменяй на:

СпрС_Номен = ПолучитьЗначениеИзТаблРекв(СтрокаТаблТЧ.Значение, "Номенклатура");
user1008893; +1 Ответить
52. user1008893 06.05.19 16:07 Сейчас в теме
(51)вот так выгружает,надо бы наименование ВИ получить и все
Прикрепленные файлы:
53. azanas 06.05.19 16:24 Сейчас в теме
(52) Чтобы получить наименование надо выгрузку в ERP править,найди там кусок кода где заполняются данные по "ВариантИсполнения" и добавь туда наименование,в зависимости как добавишь надо будет тут:
СтрокаТЧ.ВариантИсполнения = ВариантИсполнения[0].Значение;
правильный индекс указать.(0,1,2,3)
user1008893; +1 Ответить
54. user1008893 06.05.19 16:43 Сейчас в теме
(53)не могу найти пока что.
57. user1008893 07.05.19 08:43 Сейчас в теме
(53)Сейчас не создает ВИ,но как то генерирует код
59. azanas 07.05.19 09:04 Сейчас в теме
(57) он ее не генерирует,это данные которые пришли из ерп,скрин в (35) вот все данные которые пришли по варианту исполнения.
61. user1008893 07.05.19 09:07 Сейчас в теме
(59)да,да,но этот код не сходится с кодом ВИ из ERP
55. Oldsad 07.05.19 04:11 Сейчас в теме
Судя по обсуждению в (10) тут одно из двух: либо криво написанная обработка выгрузки/загрузки и проще написать новую, чем исправлять эту
либо полное непонимание откуда какие данные берутся и как это искать в коде
56. user1008893 07.05.19 08:42 Сейчас в теме
(55)Новую писать не вариант,найти не получается.Пользовалась даже глобальным поиском
58. Oldsad 07.05.19 08:59 Сейчас в теме
(56)
не понял про глобальный поиск
разве у вас не отдельная обработка для загрузки данных?
60. user1008893 07.05.19 09:06 Сейчас в теме
(58)В erp в общем модуле есть процедура которая,соединяется с внешней обработкой
62. Oldsad 07.05.19 09:12 Сейчас в теме
(60)
я правильно понимаю, что обработка запускается в бухгалтерии
подключается по ком к ерп
потом вызывает процедуру из глобального модуля в ерп, и та возвращает данные для загрузки?
но в самом ерп такой процедуры нету?
63. user1008893 07.05.19 09:16 Сейчас в теме
(62)В ерп при создании нового элемента,устанавливается подключение к бп,а затем создается выгрузка.
64. Oldsad 07.05.19 09:41 Сейчас в теме
(63)
если да это ответ на оба моих вопроса
то скорее всего отсутствует исходник модуля в ерп и изменить его вы не сможете
как следствие данную выгрузку до ума не доведете самостоятельно
тут надо пообщаться с тем у кого исходник этого модля
65. user1008893 07.05.19 09:44 Сейчас в теме
(64) посмотрите (62),посмотрела еще раз просто
66. user1008893 07.05.19 09:52 Сейчас в теме
(64)Зашла в файл xml,вот тут нашла ВИ
<Свойство Имя="ВариантИсполнения" Тип="СправочникСсылка.ВариантыИсполнения">
<Ссылка>
<Свойство Имя="Код" Тип="Строка">
<Значение>ПСВИ0000093</Значение>
</Свойство>
<Свойство Имя="Услуга" Тип="Булево">
<Значение>Нет</Значение>
</Свойство>
<Свойство Имя="ЭтоГруппа" Тип="Булево">
<Значение>Нет</Значение>
</Свойство>
</Ссылка>
</Свойство>
Вот,теперь вопрос,где это может формироваться?
67. Oldsad 07.05.19 10:41 Сейчас в теме
(66)
очень похоже на результат универсального обмена данными
если покажите начало файла то, точно скажу
68. user1008893 07.05.19 10:58 Сейчас в теме
(67)я нашла где это в erp?вот поправляю
69. user1008893 07.05.19 11:31 Сейчас в теме
(67)Все разобралась)Спасибо,всем)
43. user856012 13 06.05.19 13:03 Сейчас в теме
(1)
В erp вариантИсполнения-справочникссылка,а в создала бухгалтерии реквизит документа ВариантИсполнения-строка.
Только я не вижу тут постановку задачи? Как соотносится значение элемента справочника в ERP и значение строки, которая должна быть в Бухгалтерии?

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

Поэтому подскажу только самый общий способ: дополнить справочник вариантИсполнения в ERP текстовым реквизитом СтрокаВБухгалтерии, и пусть пользователи его заполняют так, как надо.

Ну, а вытащить потом это значение по ссылке - элементарно.
47. Vitaly1C8 06.05.19 14:32 Сейчас в теме
(1) Могу предложить такой вариант:
из ERP выгружаем
ВариантИсполнения.УникальныйИдентификатор()

в бухгалтерию загружаем его в виде строки он выглядит так:
de5be7c7-6803-11e9-814e-00155d73060f
22. Oldsad 06.05.19 10:16 Сейчас в теме
Похоже вам необходимо изменить заполнение _ТаблТЧ
30. Trotter_NN 06.05.19 10:39 Сейчас в теме
36. user1008893 06.05.19 11:44 Сейчас в теме
37. rudnitskij 06.05.19 12:24 Сейчас в теме
СтрокаТЧ.ВариантИсполнения= ?(ЗначениеЗаполнено(ВариантИсполнения),СокрЛП(Строка(ВариантИсполнения)),"");
а так?
38. user856012 13 06.05.19 12:41 Сейчас в теме
М-да. Почему-то вспомнилась старая шутка про морских свинок и девушек-программистов...
70. lililop 07.05.19 22:49 Сейчас в теме
39. Trotter_NN 06.05.19 12:42 Сейчас в теме
СтрокаТЧ.ВариантИсполнения= СокрЛП(?(ЗначениеЗаполнено(ВариантИсполнения),ВариантИсполнения,""));
Но скорее всего тут будет "Таблица значений". Если нужен элемент из таблицы тогда с помощью [] выдрать его, например код [0]
Хотя я не понял задачу...
71. user778014 9 10.05.19 02:12 Сейчас в теме
Сегодня смотрел видео по КД2. Понравилась фраза преподавателя. Смысл в том что все кто пишут свои велосипеды по обмену данных не пользуясь КД теряют свое время и бюджет клиента ))
72. user1218675 10.05.19 16:00 Сейчас в теме
Зашла на тему, потому что была интересна проблема. Похожее случалась, благо в колледже, поэтому имели возможность переписать и спросить преподу.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот