Загрузка с XML в орп

1. user2109808 28.02.25 07:33 Сейчас в теме
подскажите есть ли какая та краткая форма проверки товаров и чеков чтобы определять в какую тч записывать?
допустим, у нас есть данные чеков, загруженные в 1с с xml файла. теперь нужно создать документ орп и подставить все чеки в нужные тч: тч товары, услуги, возврат товаров/услуг, оплата безналом и туда товары впихнуть
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. nomad_irk 81 28.02.25 09:58 Сейчас в теме
(1) типовой скорее всего нет, программировать надо
9. user2109808 28.02.25 10:09 Сейчас в теме
(7) так я и пишу код. только не пойму как лучше написать чтоб одно и то же не прописывать десятки раз
11. nomad_irk 81 28.02.25 10:11 Сейчас в теме
(9) обычно такие задачи решаются с помощью:
1. Цикл
2. Процедуры/функции, содержащие многократно исполняемый код, зависящий от входных данных
3. рекурсии - частного случая п.1 + п.2
12. user2109808 28.02.25 10:13 Сейчас в теме
(11)
(11)
Процедуры/функции

вот это подходит . однако я встрял на месте что передавать в эту процедуру ? чтобы заполнить тем что загрузилось с файла
13. nomad_irk 81 28.02.25 10:14 Сейчас в теме
(12) пока можно сказать так:
передавайте то, что нужно, что не нужно - передавать не нужно.
user1936660; Al3x; orakool; user2109808; user2107191; +5 Ответить
16. user2109808 28.02.25 10:19 Сейчас в теме
17. user2107191 28.02.25 10:20 Сейчас в теме
(16) Тебя это как-то фрустрирует?
19. nomad_irk 81 28.02.25 10:21 Сейчас в теме
(16) судя по 15 сообщениям ветки, вы уверены, что тут кружок телепатов разного уровня мастерства и у нас происходит соревнования "самый догадливый на диком западе"?
20. user2107191 28.02.25 10:25 Сейчас в теме
(19) Угадай мелодию Выкопай яму:
- Я выкопаю эту яму за 7 минут!
- Копай...
Та-да-дадам-та-да-дам!
nomad_irk; +1 Ответить
2. user2109808 28.02.25 07:39 Сейчас в теме
и еще вопрос , почему создается 2 документа и в одном заполняется только шапка, во тором же только тч?
Прикрепленные файлы:
6. nomad_irk 81 28.02.25 09:57 Сейчас в теме
(2) Так напрограммировали механизм формирования документов из файлов.
10. user2109808 28.02.25 10:11 Сейчас в теме
(6) 1с?
у меня пока такое заполнение

&НаКлиенте
Процедура СоздатьРеализацию(Команда)
	
	Если НЕ ЗначениеЗаполнено(Объект.ДанныеФайлаРеализации)  Тогда 
		Сообщить("Заполните табличную часть!");
		Возврат;
	Иначе
		СсылкаНаРозничныеПродажи = СоздатьРеализациюНаСервере();
		ПараметрыФормы = Новый Структура("Ключ", СсылкаНаРозничныеПродажи);
		ОткрытьФорму("Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента", ПараметрыФормы);
	КонецЕсли;

КонецПроцедуры

&НаСервере
функция СоздатьРеализациюНаСервере()    

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

				// если группа товары и оплата безналом истина = записывать в тч.возвраты 
			//	Строка.СчетСебестоимости = СчетаУчетаНоменклатуры.СчетРасходов;
			//	Строка.СтатьяДоходов 	 =  СчетаУчетаНоменклатуры.СтатьяДоходов;
			//	Строка.СчетРасходовНДС   = СчетаУчетаНоменклатуры.СтатьяРасходов;
			//	Строка.СчетДоходов 		 = СчетаУчетаНоменклатуры.СчетДоходов;    
				
			КонецЕсли;

		КонецЦикла;  
		
		
	Иначе 
		Сообщить("Настройте параметры учета - розничные продажи");
	КонецЕсли;
	НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);  
	Возврат НовыйДокумент.Ссылка;
КонецФункции
Показать
14. nomad_irk 81 28.02.25 10:18 Сейчас в теме
(10) а где заполнение шапки, кроме указания даты документа?
18. user2107191 28.02.25 10:21 Сейчас в теме
(14) Ну ты еще спроси - что является результатом кода, и что в нем не устраивает автора.
А то он написал код, вывалил на нас, а что его не устраивает - не сообщил.
21. nomad_irk 81 28.02.25 10:25 Сейчас в теме
(18) в первом приближении код рабочий и вроде как возвращает ссылку на созданный документ, форма которого затем открывается

но мы ж должны догадываться о месте проблемы, иначе - не интересно
22. user2107191 28.02.25 10:28 Сейчас в теме
(21)
но мы ж должны догадываться о месте проблемы,
Ну ты же опытный дядька. Ветеринары же как-то лечат молчаливых оленей. Причем успешно.
nomad_irk; +1 Ответить
24. user2109808 28.02.25 11:58 Сейчас в теме
(18)
(18)
а что его не устраивает - не сообщил.

ну вы даёте...
(2)
23. user2109808 28.02.25 11:56 Сейчас в теме
(14) у это уже сам пользователь должен заполнить на какой склад от кого и какой договор + касса. однако еще проблема в ом что создается 2 документа.
когда на форме загрузки нажимаем "создать документ" переходим в форму документа орп и он почему-то пустой. лааааадно, заполним его проведем или запишем не суть. идем в орп форма списка видим два дока - в одном вся тч заполнена только , в другом лишь шапка. вот как это исправить?
25. nomad_irk 81 28.02.25 12:19 Сейчас в теме
(23) т.е. пользователь получает новый документ, заполняет его(шапку его) и записывает вместо открытия созданного документа?

СсылкаНаРозничныеПродажи - это реквизит формы?
26. user2109808 28.02.25 12:41 Сейчас в теме
(25) я уже решил. однако , как же открыть все документы если в чеке были разные магазины, или несколько смен?. как разом их всех открыть?
27. nomad_irk 81 28.02.25 12:45 Сейчас в теме
(26) а это точно нужно делать? представим себе ситуацию: создалось 150 документов, все их надо показать прям сразу? зачем так делать?
28. user2109808 28.02.25 12:57 Сейчас в теме
(27) ))))) я понял что это бессмыслица..
как тогда проверить на предыдущее значение магазина и смены?
29. nomad_irk 81 01.03.25 12:01 Сейчас в теме
(28) а не проще сделать так, чтобы пользователь на форме обработки указывал нужные значения магазина/смены и все загруженные из файлов документы формировались бы с этими данными?
30. user2109808 02.03.25 12:00 Сейчас в теме
(29)
(29)
нужные значения магазина/смены

это еще про какие значения вы говорите?
31. user1936660 02.03.25 12:51 Сейчас в теме
(30)
это еще про какие
Про значения магазина и смены. Которые указывает пользователь. Чтобы сформировать документы с учетом этих данных.
32. user2107191 02.03.25 16:22 Сейчас в теме
(31) Всю неделю молчал, бросил всех, а тут в выходной приперся и умничает теперь!
33. user1936660 02.03.25 16:30 Сейчас в теме
(32) Я что, дурак - по выходным и праздникам на работе работать? По выходным и праздникам я работаю дома!
user2107191; +1 Ответить
35. user2109808 03.03.25 07:31 Сейчас в теме
(33) ну ты даешь. в праздник и работать?
34. user2109808 03.03.25 07:30 Сейчас в теме
(32)
(31) нету там никаких значений, это загрузка xml файла, реализация товара, которая потом создает документ(ы) (в зависимости от кол-ва магазинов и/или смен в файле) орп
36. nomad_irk 81 03.03.25 08:07 Сейчас в теме
(30)
допустим, у нас есть данные чеков, загруженные в 1с с xml файла. теперь нужно создать документ орп и подставить все чеки в нужные тч: тч товары, услуги, возврат товаров/услуг, оплата безналом и туда товары впихнуть


Каким чудесным образом происходит формирование XML?
Каким чудесным образом происходит загрузка чеков из XML?
Каким чудесным образом происходит формирование ОРП?
37. user2109808 03.03.25 08:17 Сейчас в теме
(36)
формирование XML? загрузка чеков из XML?

&НаСервере
Процедура ПрочитатьРеализациюНаСервере()
	Объект.ДанныеФайлаРеализации.Очистить();
	Попытка
	    ПарсерРеализации = Новый ЧтениеXML;
	    ПарсерРеализации.ОткрытьФайл(Объект.ПутьКФайлуРеализация); 
	Исключение 
		Сообщить("При открытии файла произошла ошибка. Операция прервана!");
		Сообщить(ОписаниеОшибки());         
		Возврат;
	КонецПопытки;  
	
	ПостроительРеализация = Новый ПостроительDOM;
	ДокументРеализация = ПостроительРеализация.Прочитать(ПарсерРеализации);  
	
	Для Каждого Элемент1 Из ДокументРеализация.ЭлементДокумента.ДочерниеУзлы Цикл
		Если Элемент1.ИмяУзла = "doc_hd" Тогда
			
			Док_НД_Релиз = Элемент1;
            Для Каждого Элемент2 Из Элемент1.ДочерниеУзлы Цикл  
				Если Элемент2.ИмяУзла = "doc_det" Тогда
					Док_Дет_Релиз = Элемент2;
					
					СТР = Шапка.Добавить();
					Стр.ФиксНомер =  Док_НД_Релиз.Атрибуты[5].ЗначениеУзла;
					Стр.НомерМагазина  = Док_НД_Релиз.Атрибуты[1].ЗначениеУзла; 
					Стр.НомерСмены 	  = Док_НД_Релиз.Атрибуты[6].ЗначениеУзла;     
					Стр.ОплатаБезналом = ?(Док_НД_Релиз.Атрибуты[7].ЗначениеУзла = "0", истина, ложь); 
					Стр.ВидОплаты	  = Док_НД_Релиз.Атрибуты[8].ЗначениеУзла; 
					Стр.ЭтоВозврат = ?(Док_НД_Релиз.Атрибуты[4].ЗначениеУзла = "1", истина, ложь);
					Стр.ДатаПродажи    = Док_НД_Релиз.Атрибуты[2].ЗначениеУзла; 
					
					СтрШапки = РеквизитыШапки.Добавить();
					СтрШапки.Номенклатура   = Справочники.Номенклатура.НайтиПоКоду(Док_Дет_Релиз.Атрибуты[0].ЗначениеУзла);
					СтрШапки.Количество     = Док_Дет_Релиз.Атрибуты[1].ЗначениеУзла;
					СтрШапки.Цена 		  = Док_Дет_Релиз.Атрибуты[2].ЗначениеУзла;
					СтрШапки.Сумма 	      = СтрШапки.Цена * СтрШапки.Количество; 
					СтрШапки.НомерМагазина  = Док_НД_Релиз.Атрибуты[1].ЗначениеУзла; 
					СтрШапки.НомерСмены 	  = Док_НД_Релиз.Атрибуты[6].ЗначениеУзла;     					
					
					НоваСтрока = Объект.ДанныеФайлаРеализации.Добавить(); 
                    НоваСтрока.ФиксНомер 	  = Стр.ФиксНомер;
					НоваСтрока.НомерМагазина  = Стр.НомерМагазина; 
					НоваСтрока.НомерСмены 	  = Стр.НомерСмены;     
					НоваСтрока.ДатаПродажи    = Стр.ДатаПродажи; 
					НоваСтрока.ОплатаБезналом = Стр.ОплатаБезналом; 
					НоваСтрока.ВидОплаты	  = Стр.ВидОплаты;
					НоваСтрока.ЭтоВозврат     = Стр.ЭтоВозврат;    	
					НоваСтрока.Номенклатура   = СтрШапки.Номенклатура;
					НоваСтрока.Количество     = СтрШапки.Количество ;
					НоваСтрока.Цена 		  = СтрШапки.Цена;
				    НоваСтрока.Сумма 		  = СтрШапки.Сумма;      
					
				КонецЕсли;
			КонецЦикла; 
		КонецЕсли;
	КонецЦикла;
	
	ПарсерРеализации.Закрыть(); 
	
КонецПроцедуры  
Показать



(36)
формирование ОРП?

&НаКлиенте
Процедура СоздатьРеализацию(Команда)
	
	Если НЕ ЗначениеЗаполнено(Объект.ДанныеФайлаРеализации)  Тогда 
		Сообщить("Заполните табличную часть!");
		Возврат;
	Иначе
		СсылкаНаРозничныеПродажи = СоздатьРеализациюНаСервере();
		ПараметрыФормы = Новый Структура("Ключ", СсылкаНаРозничныеПродажи);
		ОткрытьФорму("Документ.ОтчетОРозничныхПродажах.Форма.ФормаДокумента", ПараметрыФормы);
	КонецЕсли;

КонецПроцедуры

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

			Конеццикла;
		конеццикла;
		новыйдокумент.Записать(режимзаписидокумента.Запись);	
		Иначе 
		Сообщить("Настройте параметры учета - розничные продажи");
	КонецЕсли;
	
	//НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);  
	Возврат НовыйДокумент.Ссылка; 
	
КонецФункции   
Показать


вот таким. чтение файла может и коряво написано, но было удобнее так
39. nomad_irk 81 03.03.25 08:22 Сейчас в теме
(37) это все в какой-то же обработке происходит? как пользователь понимает, какие файлы нужно загружать, а какие нет?

Видно, что номера смены/магазина есть в файле, в чем сложность сделать их список и сформировать документы по этому списку, если уж пользователь в этом процессе не участвует?
41. user2109808 03.03.25 08:35 Сейчас в теме
(39)
это все в какой-то же обработке происходит?

внешняя обработка.
пользователю просто кнопочки нажимать и всё.

(39)
как пользователь понимает, какие файлы нужно загружать, а какие нет?

для этого в чтение файла установлен фильтр.


(39)
Видно, что номера смены/магазина есть в файле, в чем сложность сделать их список и сформировать документы по этому списку,

я вам код показал где синим по белому прописано сворачивать по номеру магазина и смене
однако я теперь в тупике - поставив не там новыйокумент.записать() происходит дублирование и половина документов даже не правильно формируются
42. user2107191 03.03.25 08:39 Сейчас в теме
(41)
поставив не там новыйокумент.записать()
Зачем?
45. user2109808 03.03.25 08:42 Сейчас в теме
(42)
(42) я проверял как записываться будут
47. user2107191 03.03.25 08:46 Сейчас в теме
(45) Проверил? Записывается неправильно? Ну так значит не делай больше так. Не ставь не там. Ставь там.
43. nomad_irk 81 03.03.25 08:39 Сейчас в теме
(41)
я вам код показал где синим по белому прописано сворачивать по номеру магазина и смене
однако я теперь в тупике - поставив не там новыйокумент.записать() происходит дублирование и половина документов даже не правильно формируются


У вас какие-то сложности с запуском обработки в режиме отладки?
46. user2109808 03.03.25 08:43 Сейчас в теме
(43) проверять муторно. в файле написано не наименование , код номенклатуры , проверяю по цене - дольше выходит. чуть
48. nomad_irk 81 03.03.25 08:53 Сейчас в теме
(46)
Прикрепленные файлы:
38. user2109808 03.03.25 08:19 Сейчас в теме
(36)
(36)
допустим, у нас есть данные чеков, загруженные в 1с с xml файла. теп

если я вас затуманил этими словами и вы подумали , что человек кому придет файл реально знает откуда / с каких магазинов и смен - то извините, это не так. я хотел сказать, что просто файл прочитан и нужно правильно распределить товары по тч в доке орп
40. nomad_irk 81 03.03.25 08:31 Сейчас в теме
(38) судя по коду - у вас все распределяется, либо нужно использоватль отладку, разбираться более детально, что происходит с документами
44. user2109808 03.03.25 08:41 Сейчас в теме
(40) смотрел по отладке , запутываешься
сам уже в блокнот по файлу выписал что и как должно быть. по итогу 3 из 6 верно заполняются. остальные отрабатывают неправильно - либо в другом магазине такой же номер смены и добавляет и получается не 11 , а 14 товаров либо еще как-то . бывает дублирует просто непонятным образом, товары в первом доке записаны правильно, потом такой же документ дублируется , но товары могут записаться либо в возврат, либо все вместе в тч товары. в общем путаница большая
49. nomad_irk 81 03.03.25 08:53 Сейчас в теме
(44)
Прикрепленные файлы:
user2109808; +1 Ответить
50. user2107191 03.03.25 08:55 Сейчас в теме
(49) "Я умею печатать со скоростью 1000 знаков в минуту"
51. nomad_irk 81 03.03.25 08:58 Сейчас в теме
(50) да, да........я прям не могу приличных слов подобрать в сложившейся ситуации....
55. user2109808 03.03.25 10:21 Сейчас в теме
(54)
(51)
вот как условия здесь подставить чтобы записывалось верно, имею ввиду если в чеках есть товары и допустим 1 возврат ,то - он запишет все товары в тч Товары и возврат он запишет в тч Товары и в тч Возврат товаров?

	Для Каждого СтрокаДанных Из Выборка Цикл
			НовыйДокумент = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
			НовыйДокумент.Дата = ТекущаяДата();  
			НовыйДокумент.Касса = Справочники.Кассы.НайтиПоРеквизиту("НомерМагазина", СтрокаДанных.НомерМагазина);  
			
			СтрокиТЧ = Объект.ДанныеФайлаРеализации.НайтиСтроки(Новый Структура("НомерМагазина, НомерСмены", СтрокаДанных.НомерМагазина, СтрокаДанных.НомерСмены));
			Для каждого СтрокаТЧ из СтрокиТЧ Цикл
				Если СтрокаТЧ.номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Товары") тогда //и СтрокаТЧ.ЭтоВозврат Тогда   
					//Строка = НовыйДокумент.Возвраты.Добавить(); 
					Строка = НовыйДокумент.Товары.Добавить(); 
					НовыйДокумент.НомерСмены = строкатч.номерсмены;
					//Строка.НомерФискальногоЧека = СтрокаТЧ.ФиксНомер;
					ЗаполнитьСчетаУчета(Строка);      
					ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ); 
					Если СтрокаТЧ.этовозврат  Тогда 
						//Строка = НовыйДокумент.Товары.Добавить();
						Строка = НовыйДокумент.Возвраты.Добавить(); 
						ЗаполнитьСчетаУчета(Строка);     
						Строка.НомерФискальногоЧека = СтрокаТЧ.ФиксНомер;      
						ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ); 
					КонецЕсли;
					Если СтрокаТЧ.ОплатаБезналом = Истина Тогда 
						Строка = НовыйДокумент.Оплата.Добавить();
						Строка.СуммаОплаты = СтрокаТЧ.Сумма;
						Строка.ВидОплаты = СтрокаТЧ.ВидОплаты;
					Конецесли;
							
				ИначеЕсли СтрокаТЧ.номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Услуги") тогда //и СтрокаТЧ.ЭтоВозврат Тогда
					//Строка = НовыйДокумент.ВозвратУслуг.Добавить();   
					Строка = НовыйДокумент.Услуги.Добавить(); 
					НовыйДокумент.НомерСмены = строкатч.номерсмены;
					ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ);
					Если  СтрокаТЧ.этовозврат  Тогда
						Строка = НовыйДокумент.ВозвратУслуг.Добавить(); 
						ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ);  
					КонецЕсли;      
					Если СтрокаТЧ.ОплатаБезналом = Истина Тогда 
						Строка = НовыйДокумент.Оплата.Добавить();  
						Строка.СуммаОплаты = СтрокаТЧ.Сумма;
						Строка.ВидОплаты = СтрокаТЧ.ВидОплаты;
					Конецесли;
				КонецЕсли;
				новыйдокумент.Записать(режимзаписидокумента.Запись);
			Конеццикла; 
Показать
56. nomad_irk 81 03.03.25 10:27 Сейчас в теме
(55)
вот как условия здесь подставить чтобы записывалось верно, имею ввиду если в чеках есть товары и допустим 1 возврат ,то - он запишет все товары в тч Товары и возврат он запишет в тч Товары и в тч Возврат товаров?


Товары должны заполнится в любом случае, заполнять возвраты нужно только в случае, когда есть возврат, не?
57. user2109808 03.03.25 10:40 Сейчас в теме
(56)
(56)
сть возврат, не?

тогда документ же не правильным получиться, не?
ну у меня по крайней мере такая логика , если в чеке указано что это возврат значит все товары из чека заполняются в тч возвратов. если в таком же магазине за эту же смену есть чек с товаром и это не возврат - значит заполняем все эти товары в тч товары
59. user2107191 03.03.25 10:43 Сейчас в теме
(56) Сейчас он додумается, что вряд ли в одном чеке будет и продажа и возврат одного товара. Разные чеки - разные строчки в ОРП. Потерпи.
61. user2109808 03.03.25 10:44 Сейчас в теме
(59)
(59) нет, не в одном чеке , а в разных чеках просто совпадают номер магазина и смены
60. user2109808 03.03.25 10:43 Сейчас в теме
(56) вот пример привожу.
<doc_hd ID_ARTIX_DOCUMENT="628985373" SHOP_NUMBER="5489" DAT_SALE="2025-02-20" CASH_CODE="1" IS_RETURN="1" FISCALIDENTIFIER="74317380440801149824" NOM_SHIFT="1111" CASHLESS="0" VID_OPL="MIR Credit">
<doc_det ID_GOOD="00-00000040" KOL_GOOD="1" PRICE="199.00" STO_GOOD="224.00" />
<doc_det ID_GOOD="00-00000041" KOL_GOOD="1" PRICE="4.00" STO_GOOD="33.00" />
</doc_hd>
<doc_hd ID_ARTIX_DOCUMENT="628985374" SHOP_NUMBER="5489" DAT_SALE="2025-02-20" CASH_CODE="1" IS_RETURN="0" FISCALIDENTIFIER="74327380440801149824" NOM_SHIFT="1111" CASHLESS="0" VID_OPL="MIR Credit">
<doc_det ID_GOOD="00-00000048" KOL_GOOD="1" PRICE="199.50" STO_GOOD="299.25" />
</doc_hd>


здесь 2 возврата и 1 товар в документе должно отразиться 1 товар в тч товары с безналичными 200, а 22 товара в тч возврат с суммой 203
Прикрепленные файлы:
58. user2107191 03.03.25 10:42 Сейчас в теме
(55)
он запишет все товары в тч Товары и возврат он запишет в тч Товары и в тч Возврат товаров?
А зачем ты пишешь ВСЕ в Товары? Не пиши.
Ты же как-то определяешь, что это возврат? Логично предположить, что если не Возврат, тогда Товары.
62. user2109808 03.03.25 10:47 Сейчас в теме
(58)
(58)
Для каждого СтрокаТЧ из СтрокиТЧ Цикл
				Если СтрокаТЧ.номенклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Товары") Тогда   
					Строка = НовыйДокумент.Товары.Добавить(); 
					НовыйДокумент.НомерСмены = строкатч.номерсмены;
					ЗаполнитьСчетаУчета(Строка);      
					ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ); 
					Если СтрокаТЧ.этовозврат  Тогда 
						Строка = НовыйДокумент.Возвраты.Добавить(); 
						ЗаполнитьСчетаУчета(Строка);     
						Строка.НомерФискальногоЧека = СтрокаТЧ.ФиксНомер;      
						ДобавитьпозициюНоменклатуры(Строка, СтрокаТЧ); 
					КонецЕсли;
					Если СтрокаТЧ.ОплатаБезналом = Истина Тогда 
						Строка = НовыйДокумент.Оплата.Добавить();
						Строка.СуммаОплаты = СтрокаТЧ.Сумма;
						Строка.ВидОплаты = СтрокаТЧ.ВидОплаты;
					Конецесли;
Показать


вот код где это делается, твои предложения ,как ?
63. user2107191 03.03.25 11:01 Сейчас в теме
(62) А ты сам не видишь в каком добавляется строка в Товары, а в каком в Возвраты?
64. user2109808 03.03.25 11:18 Сейчас в теме
(63)
(63) я не разговариваю с тобой
65. user2107191 03.03.25 11:23 Сейчас в теме
(64) А с кем ты разговариваешь? Да ты даже ДВА раза со мной разговариваешь.
Прикрепленные файлы:
66. user1936660 03.03.25 11:38 Сейчас в теме
(62)
твои предложения ,как ?
Отойти от компьютера и позвать программиста
67. user2107191 03.03.25 11:42 Сейчас в теме
(66) Думаешь, с тобой будет разговаривать?
68. user1936660 03.03.25 12:20 Сейчас в теме
(67) А есть еще кто-то?

На соседнем форуме его тоже не понимают
52. user2107191 03.03.25 09:02 Сейчас в теме
(44) Может надо смотреть не что получается, а что заходит на вход в каждый из отдельных конструктов алгоритма? Не думал об этом?
53. user2109808 03.03.25 09:11 Сейчас в теме
(52)
(52) не представляешь, но как раз этим я сейчас и занимаюсь
54. user2107191 03.03.25 09:13 Сейчас в теме
(53)
не представляешь,
Конечно, не представляю. Более того - даже боюсь представлять это.
3. user2109808 28.02.25 09:41 Сейчас в теме
4. user2107191 28.02.25 09:49 Сейчас в теме
5. user2109808 28.02.25 09:51 Сейчас в теме
(4) ой, здрасьте. давно не виделись
8. user2109808 28.02.25 10:08 Сейчас в теме
15. user2107191 28.02.25 10:19 Сейчас в теме
Оставьте свое сообщение

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