Создаю документ ,не заполняется реквизит ,хотя другое значение заполняется

1. byshchenko 5 11.10.24 21:15 Сейчас в теме
Доброго времени суток ,не могу разобраться не заполняется значение реквизита прочие доходы ,а оплата поставщику заполняется ,создаю документ програмно ,как сделать чтобы значение реквизита заполнялось ?Отладчиком смотрю значение есть ,помогите разобраться
Управляемые формы

Сама процедура создания документа

&НаСервере
Процедура СформироватьВыпискиСервер()
	
	Для Каждого Строка Из Объект.тчИмпорт Цикл
		
		Если Строка.Флаг Тогда
			
			// надо импортировать эту строку 
			// статус "СуществующийПлатеж" не трогаем, остальные пытаемся записать и при 
			// установленных настройках провести
			Если Строка.Статус = СтатусыСтрокИмпорта.СуществующийПлатеж Тогда
				Продолжить;
			КонецЕсли;
			
			Если Строка.Статус = СтатусыСтрокИмпорта.СуществующийПлатежНеобходимоОплатить Тогда
				// для документа проставим флаг оплаты и дату оплаты, остальное - не трогаем
				докОб = Строка.Документ.ПолучитьОбъект();
				
				докОбМетаданные = докОб.Метаданные();
				
				докОб.Дата 			= Объект.ДатаВыписки;	
				
				// пытаемся записать
				Попытка
					докОб.Записать();
					// записали - поменяем сразу статус на существующий платеж
					//Строка.Статус = СтатусыСтрокИмпорта.СуществующийПлатеж;
				Исключение
					// 	
				КонецПопытки;
				
				// если установлена соответствующая настройка - пытаемся и провести
				Если Объект.НастройкаПытатьсяПроводитьСозданныеДокументы Тогда
					
					//^Попытка
					//^	докОб.Записать(РежимЗаписиДокумента.Проведение);
					//^Исключение
					//^ // 
					//^КонецПопытки;
					Если Строка.Статус = СтатусыСтрокИмпорта.НеобходимоЗаполнитьРеквизиты Тогда
					Сообщить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Документ ""%1"" не будет проведен! Не заполнены все необходимые реквизиты!';uk='Документ ""%1"" не буде проведений! Не заповнені всі необхідні реквізити!'"), докОб));
					Иначе
						Попытка
							докОб.Записать(РежимЗаписиДокумента.Проведение);
						Исключение
						// 
					КонецПопытки;
					КонецЕсли;
					//^>> 
				КонецЕсли;
				
				Продолжить;
			КонецЕсли;
			
			НовыйДокумент = Истина;
			Если НЕ ЗначениеЗаполнено(Строка.Документ) Или НЕ ЗначениеЗаполнено(Строка.Документ.Номер) Тогда //вторая проверка в случае, если документ удалён физически
				// создаем новый документ
				
				ТипДокумента = Строка.ВидДокумента;
				Если ПустаяСтрока(ТипДокумента) Тогда
					Сообщить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Для строки ""%1"" не выбран вид документа!';uk='Для рядка ""%1"" не вибраний вид документу!'"), Строка.НомерСтроки));
					Продолжить;
				КонецЕсли;	
				Док = Документы[ТипДокумента];
				
				докОб = Док.СоздатьДокумент();
			Иначе  
				// перезаписываем измененный старый документ
				докОб = Строка.Документ.ПолучитьОбъект();
				НовыйДокумент = Ложь;
			КонецЕсли;	
			
			
			// заполняем реквизиты документа
			
			докОбМетаданные = докОб.Метаданные();

			докОб.Контрагент 			= Строка.Контрагент;
			докОб.СуммаДокумента 		= ?(Строка.Приход > 0, Строка.Приход, Строка.Расход);
			
			
			//^докОб.БанковскийСчет		= Объект.БанковскийСчет;
			Если клЕстьРеквизит("БанковскийСчет",докОбМетаданные) Тогда
				докОб.БанковскийСчет  = Объект.БанковскийСчет;
			ИначеЕсли клЕстьРеквизит("СчетОрганизации",докОбМетаданные) Тогда	
				докОб.СчетОрганизации = Объект.БанковскийСчет;
			КонецЕсли;	
			//^>> 
			
			докОб.Организация			= Объект.Организация;
			
			
			//^докОб.БанковскийСчетКонтрагента		= Строка.СчетКонтрагента;
			Если клЕстьРеквизит("БанковскийСчетКонтрагента",докОбМетаданные) Тогда
				докОб.БанковскийСчетКонтрагента	= Строка.СчетКонтрагента;
			КонецЕсли;	

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

			Если клЕстьРеквизит("НазначениеПлатежа",докОбМетаданные) Тогда
				докОб.НазначениеПлатежа		= Строка.Содержание;
			Иначе	
				докОб.Комментарий 			= Строка.Содержание;
			КонецЕсли;	
			
			// вид операции
			
			
			Если Объект.Конфигурация = "УТ" Тогда
			//^>> 	
				докОб.ТипПлатежногоДокумента = Строка.ТипДокумента;
				докОб.ХозяйственнаяОперация = Строка.ВидОперации;
			КонецЕсли; 
			//^>> 
			
			// СтатьяДвиженияДенежныхСредств
			докОб.СтатьяДвиженияДенежныхСредств = Строка.СтатьяДДС;
			
			// пытаемся записать
			Попытка
				докОб.ОбменДанными.Загрузка = Истина; // в противном случае номер ПП перезаписывается
				докОб.Записать();
				докОб.ОбменДанными.Загрузка = Ложь; 
				// записали - поменяем сразу статус на существующий платеж
				//Строка.Статус = СтатусыСтрокИмпорта.СуществующийПлатеж;
				Строка.Статус = СтатусыСтрокИмпорта.СуществующийПлатежНеобходимоОплатить;
			Исключение
				Сообщить(ОписаниеОшибки());
			КонецПопытки;
			
			// если установлена соответствующая настройка - пытаемся и провести
			// но только если строка не со статусом - "НеобходимоЗаполнитьРеквизиты" 
			// так как они все равно не смогут провестися
			Если Объект.НастройкаПытатьсяПроводитьСозданныеДокументы Тогда
				Если Строка.Статус = СтатусыСтрокИмпорта.НеобходимоЗаполнитьРеквизиты Тогда
					Сообщить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Документ ""%1"" не будет проведен! Не заполнены все необходимые реквизиты!';uk='Документ ""%1"" не буде проведений! Не заповнені всі необхідні реквізити!'"), докОб));
				Иначе
					Попытка
						
						//^докОб.Записать(РежимЗаписиДокумента.Проведение);
						Если докОб.ПроверитьЗаполнение() Тогда
							докОб.Записать(РежимЗаписиДокумента.Проведение);
						КонецЕсли;
						//^>> 
					Исключение
						// 
					КонецПопытки;
				КонецЕсли;
			КонецЕсли;
			
			// запишем в строку ссылку на созданный документ
			Строка.Документ = докОб.Ссылка;
			
		КонецЕсли;
	КонецЦикла;	
	
	// применим сортировку по настройкам
	СортировкаТчИмпорт();
	
КонецПроцедуры
Показать


// вид операции
Вот реквизит какой не заполняет именно прочие доходы
докОб.ХозяйственнаяОперация = Строка.ВидОперации;

Забыл сказать документ создается СписаниеБезналичныхДенежныхСредств
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
7. byshchenko 5 18.10.24 19:48 Сейчас в теме +0.5 $m
Разобрался ,спасибо всем за помощь
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. polax 11.10.24 22:28 Сейчас в теме
ХозяйственнаяОперация в создаваемом документе и Строка.ВидОперации имеют разный тип значения
3. byshchenko 5 11.10.24 23:09 Сейчас в теме
Смотрю отладчиком тип совпадает с тем значением что заполняется и тем что нет. Я так понимаю документ записывается и значение "прочие доходы" не сохраняется
4. byshchenko 5 12.10.24 20:02 Сейчас в теме
Помогите пожалуйста разобраться....так до сих пор загадка почему не заполняет.
5. starjevschik 12.10.24 20:33 Сейчас в теме
Отладка на сервере есть? Запускаешь отладчик, в табло выводишь значение нужного реквизита и смотришь, когда оно заполнено, когда перестает быть заполнено. Или нанимай программиста...
6. user1880116 12.10.24 20:41 Сейчас в теме
(1) Очередной любитель глухих попыток. Удачной отладки, что.
7. byshchenko 5 18.10.24 19:48 Сейчас в теме +0.5 $m
Разобрался ,спасибо всем за помощь
Оставьте свое сообщение

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