Обмен СДИЗ ЗЕРНО ошибка

1. zoeh 31 17.03.25 16:26 Сейчас в теме
Ошибка при вызове метода контекста (Записать)
{РегистрСведений.ИсторияПогашенийСДИЗЗЕРНО.МодульМенеджера(65)}:НаборДанных.Записать();
{Справочник.СДИЗЗЕРНО.МодульМенеджера(332)}:РегистрыСведений.ИсторияПогашенийСДИЗЗЕРНО.ОбработкаЗагрузкиПолученныхДанных(ЭлементОчереди, ПараметрыОбмена, ПолученныеДанные, ИзмененныеОбъекты);
{ОбщийМодуль.ИнтеграцияЗЕРНОСлужебный.Модуль(6472)}:МенеджерОбъекта.ОбработкаЗагрузкиПолученныхДанных(ЭлементОчереди, ПараметрыОбмена, ПолученныеДанные, ИзмененныеОбъекты);
{ОбщийМодуль.ИнтеграцияЗЕРНОСлужебный.Модуль(4369)}:ОбработкаЗагрузкиПолученныхДанных(ЭлементОчереди, ПараметрыОбмена, ИзмененныеОбъекты, ДанныеОбработки.Объект);
{ОбщийМодуль.ИнтеграцияЗЕРНОСлужебный.Модуль(4205)}:ЗапроситьРезультатОбработкиВСервисе(ЭлементОчереди, ПараметрыОбмена, НаборЗаписей, НаборЗаписейОснование);
{ОбщийМодуль.ИнтеграцияЗЕРНОСлужебный.Модуль(3461)}:ЗапроситьРезультатОбработкиВСервисеТранзакция(ЭлементОчереди, ПараметрыОбмена);
{ОбщийМодуль.ИнтеграцияЗЕРНОСлужебный.Модуль(597)}:ДатаСледующейИтерации = ОбработатьОчередьСообщений(ПараметрыОбмена);
{ОбщийМодуль.ИнтеграцияЗЕРНОВызовСервера.Модуль(159)}:ВозвращаемоеЗначение = ИнтеграцияЗЕРНОСлужебный.ВыполнитьОбменУниверсально(ПараметрыОбмена);
{ОбщийМодуль.ОбменДаннымиЗЕРНО.Модуль(22)}:ИнтеграцияЗЕРНОВызовСервера.ВыполнитьОбмен(НастройкаРегламентногоЗадания);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Запись с такими ключевыми полями существует! : ИсторияПогашенийСДИЗЗЕРНО: 773439615х/23/0313, (Регистр сведений: История погашений СДИЗ ФГИС "Зерно"; Номер строки: 3)
[ОшибкаХранимыхДанных]
{ОбщийМодуль.ИнтеграцияЗЕРНОСлужебный.Модуль(4251)}:ВызватьИсключение ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
{ОбщийМодуль.ИнтеграцияЗЕРНОСлужебный.Модуль(3461)}:ЗапроситьРезультатОбработкиВСервисеТранзакция(ЭлементОчереди, ПараметрыОбмена);
{ОбщийМодуль.ИнтеграцияЗЕРНОСлужебный.Модуль(597)}:ДатаСледующейИтерации = ОбработатьОчередьСообщений(ПараметрыОбмена);
{ОбщийМодуль.ИнтеграцияЗЕРНОВызовСервера.Модуль(159)}:ВозвращаемоеЗначение = ИнтеграцияЗЕРНОСлужебный.ВыполнитьОбменУниверсально(ПараметрыОбмена);
{ОбщийМодуль.ОбменДаннымиЗЕРНО.Модуль(22)}:ИнтеграцияЗЕРНОВызовСервера.ВыполнитьОбмен(НастройкаРегламентногоЗадания);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]
По теме из базы знаний
Найденные решения
5. user1936660 17.03.25 21:59 Сейчас в теме
Хотя на всякий случай
Функция НаборДанныхИсторияПогашенийСДИЗДляОперации(СДИЗ, Операция)
	
	НаборДанных = СоздатьНаборЗаписей();
	НаборДанных.Отбор.СДИЗ.Установить(СДИЗ);
	НаборДанных.Прочитать();
	
	ТекущиеДанные = НаборДанных.Выгрузить();
	
	НаборДанных.Очистить();
	
	Для Каждого СтрокаТаблицы Из ТекущиеДанные Цикл
		Если СтрокаТаблицы.ВидОперации = Операция Тогда
			Продолжить;
		КонецЕсли;
		НоваяСтрока = НаборДанных.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
	КонецЦикла;
	
	Возврат НаборДанных;
	
КонецФункции

Функция СтруктураОбновленияЗаписи() Экспорт
	
	ВозвращаемоеЗначение = Новый Структура();
	
	Для Каждого Ресурс Из Метаданные.РегистрыСведений.ИсторияПогашенийСДИЗЗЕРНО.Ресурсы Цикл
		ВозвращаемоеЗначение.Вставить(Ресурс.Имя);
	КонецЦикла;
	
	Для Каждого Реквизит Из Метаданные.РегистрыСведений.ИсторияПогашенийСДИЗЗЕРНО.Реквизиты Цикл
		ВозвращаемоеЗначение.Вставить(Реквизит.Имя);
	КонецЦикла;
	
	Возврат ВозвращаемоеЗначение;
	
КонецФункции
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. zoeh 31 17.03.25 17:11 Сейчас в теме
сторияПогашенийСДИЗФГИС.МодульМенеджера

//Добавил
Если стрНайти(сокрЛП(НаборДанных.Отбор),"773439615х/23/0313")=0 Тогда
//Добавил
НаборДанных.Записать();
//Добавил
КонецЕсли;
//Добавил

и в рот чих пых
3. zoeh 31 17.03.25 17:30 Сейчас в теме
Обмен выполняется и без изменений.
4. user1936660 17.03.25 21:59 Сейчас в теме
Возможно это:

Процедура ОбработкаЗагрузкиПолученныхДанных(ЭлементОчереди, ПараметрыОбмена, ПолученныеДанные, ИзмененныеОбъекты) Экспорт
	
	Операция         = ЭлементОчереди.Операция;
	ПараметрыЗапроса = ЭлементОчереди.РеквизитыИсходящегоСообщения.ПараметрыЗапроса;
	
	Если Операция = Перечисления.ВидыОперацийЗЕРНО.ЗапросПогашенийСДИЗ Тогда
		
		ДанныеДляОбработки = ИнтеграцияЗЕРНОСлужебный.МассивДанныхПоляXDTO(ПолученныеДанные.Record);
		
		Блокировка = Новый БлокировкаДанных();
		
		ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.СДИЗЗЕРНО.ПолноеИмя());
		ЭлементБлокировки.УстановитьЗначение("Идентификатор", ПараметрыЗапроса.НомерСДИЗ);
		
		Попытка
			
			Блокировка.Заблокировать();
			СДИЗ = Справочники.СДИЗЗЕРНО.СДИЗ(
				ПараметрыЗапроса.НомерСДИЗ,
				ЭлементОчереди.Организация,
				ЭлементОчереди.Подразделение,
				ЭлементОчереди.ВидПродукции, ПараметрыОбмена);
			
			БлокировкаРегистраИстории = Новый БлокировкаДанных();
			ЭлементБлокировки = БлокировкаРегистраИстории.Добавить(Метаданные.РегистрыСведений.ИсторияПогашенийСДИЗЗЕРНО.ПолноеИмя());
			ЭлементБлокировки.УстановитьЗначение("СДИЗ", СДИЗ);
			Блокировка.Заблокировать();
			УстановитьПривилегированныйРежим(Истина);
			
			ОперацияИстории    = Перечисления.ВидыОперацийЗЕРНО.ПогашениеСДИЗ;
			НаборДанных        = НаборДанныхИсторияПогашенийСДИЗДляОперации(СДИЗ, ОперацияИстории);
			ИмяПоляНомерПартии = ИмяПоляНомерПартии(ЭлементОчереди.ВидПродукции);
			
			Для Каждого ЭлементДанных Из ДанныеДляОбработки Цикл
				
				НоваяСтрока = НаборДанных.Добавить();
				НоваяСтрока.СДИЗ                = СДИЗ;
				НоваяСтрока.НомерПартии         = ЭлементДанных[ИмяПоляНомерПартии];
				НоваяСтрока.КоличествоЗЕРНО     = ЭлементДанных.amount;
				НоваяСтрока.ОписаниеПричины     = ЭлементДанных.CauseComment;
				НоваяСтрока.ВидОперации         = ОперацияИстории;
				НоваяСтрока.ИдентификаторЗаявки = Формат(ЭлементДанных.id, "ЧГ=0;");
				НоваяСтрока.ПолноеПогашение     = ЭлементДанных.fullExtinction;
				НоваяСтрока.ДатаОперации        = ЭлементДанных.dateRegistration;
				Если ЭлементДанных.WeightDiscrepancyCause <> Неопределено Тогда
					НоваяСтрока.Причина = Справочники.КлассификаторНСИЗЕРНО.КлассификаторНСИ(
						Перечисления.ВидыКлассификаторовЗЕРНО.ПричинаРасхожденияВеса,
						ЭлементДанных.WeightDiscrepancyCause,
						ЭлементОчереди.Организация,
						ЭлементОчереди.Подразделение,,
						ПараметрыОбмена);
				КонецЕсли;
				НоваяСтрока.Статус = ИнтеграцияЗЕРНОСлужебный.СтатусЗаписи(ЭлементДанных.status);
				
			КонецЦикла;
			
			Если ДанныеДляОбработки.Количество() Тогда
				ИзмененныеОбъекты.Добавить(СДИЗ);
			КонецЕсли;
			
			НаборДанных.Записать();
			
		Исключение
			ВызватьИсключение;
		КонецПопытки;
		
	ИначеЕсли Операция = Перечисления.ВидыОперацийЗЕРНО.ЗапросОтказовПогашенийСДИЗ Тогда
		
		ДанныеДляОбработки = ИнтеграцияЗЕРНОСлужебный.МассивДанныхПоляXDTO(ПолученныеДанные.Record);
		
		Блокировка = Новый БлокировкаДанных();
		
		ЭлементБлокировки = Блокировка.Добавить(Метаданные.Справочники.СДИЗЗЕРНО.ПолноеИмя());
		ЭлементБлокировки.УстановитьЗначение("Идентификатор", ПараметрыЗапроса.НомерСДИЗ);
		
		Попытка
			
			Блокировка.Заблокировать();
			СДИЗ = Справочники.СДИЗЗЕРНО.СДИЗ(
				ПараметрыЗапроса.НомерСДИЗ,
				ЭлементОчереди.Организация,
				ЭлементОчереди.Подразделение,
				ЭлементОчереди.ВидПродукции,
				ПараметрыОбмена);
			
			БлокировкаРегистраИстории = Новый БлокировкаДанных();
			ЭлементБлокировки = БлокировкаРегистраИстории.Добавить(Метаданные.РегистрыСведений.ИсторияПогашенийСДИЗЗЕРНО.ПолноеИмя());
			ЭлементБлокировки.УстановитьЗначение("СДИЗ", СДИЗ);
			Блокировка.Заблокировать();
			
			УстановитьПривилегированныйРежим(Истина);
			
			ОперацияИстории    = Перечисления.ВидыОперацийЗЕРНО.ОформлениеСДИЗОтказПогашенияСДИЗ;
			НаборДанных        = НаборДанныхИсторияПогашенийСДИЗДляОперации(СДИЗ, ОперацияИстории);
			ИмяПоляНомерПартии = ИмяПоляНомерПартии(ЭлементОчереди.ВидПродукции);
			ИмяПоляПричина     = ИмяПоляПричина(ЭлементОчереди.ВидПродукции);
			
			Для Каждого ЭлементДанных Из ДанныеДляОбработки Цикл
				
				НоваяСтрока = НаборДанных.Добавить();
				НоваяСтрока.СДИЗ                = СДИЗ;
				НоваяСтрока.НомерПартии         = ЭлементДанных[ИмяПоляНомерПартии];
				НоваяСтрока.КоличествоЗЕРНО     = ЭлементДанных.amount;
				НоваяСтрока.ОписаниеПричины     = ЭлементДанных.CauseComment;
				НоваяСтрока.ВидОперации         = ОперацияИстории;
				НоваяСтрока.ИдентификаторЗаявки = Формат(ЭлементДанных.id, "ЧГ=0;");
				НоваяСтрока.ДатаОперации        = ЭлементДанных.dateRegistration;
				Если ЭлементДанных[ИмяПоляПричина] <> Неопределено Тогда
					НоваяСтрока.Причина = Справочники.КлассификаторНСИЗЕРНО.КлассификаторНСИ(
						Перечисления.ВидыКлассификаторовЗЕРНО.ПричинаВозвратаПартии,
						ЭлементДанных[ИмяПоляПричина],
						ЭлементОчереди.Организация,
						ЭлементОчереди.Подразделение,
						ПараметрыОбмена);
				КонецЕсли;
				НоваяСтрока.Статус = ИнтеграцияЗЕРНОСлужебный.СтатусЗаписи(ЭлементДанных.status);
				
			КонецЦикла;
			
			Если ДанныеДляОбработки.Количество() Тогда
				ИзмененныеОбъекты.Добавить(СДИЗ);
			КонецЕсли;
			
			НаборДанных.Записать();
			
		Исключение
			ВызватьИсключение;
		КонецПопытки;
	
	КонецЕсли;
	
КонецПроцедуры
Показать
8. zoeh 31 18.03.25 11:01 Сейчас в теме
(4)
ИмяПоляНомерПартии
ИмяПоляПричина

можно эти функции еще если не трудно?
9. zoeh 31 18.03.25 11:04 Сейчас в теме
(8) ИнтеграцияЗЕРНОСлужебный.ИмяПоляНомерПартииСозданнойПриОтказеОтГашенияПоВидуПродукции­(ЭлементОчереди.ВидПродукции)

старый текст
5. user1936660 17.03.25 21:59 Сейчас в теме
Хотя на всякий случай
Функция НаборДанныхИсторияПогашенийСДИЗДляОперации(СДИЗ, Операция)
	
	НаборДанных = СоздатьНаборЗаписей();
	НаборДанных.Отбор.СДИЗ.Установить(СДИЗ);
	НаборДанных.Прочитать();
	
	ТекущиеДанные = НаборДанных.Выгрузить();
	
	НаборДанных.Очистить();
	
	Для Каждого СтрокаТаблицы Из ТекущиеДанные Цикл
		Если СтрокаТаблицы.ВидОперации = Операция Тогда
			Продолжить;
		КонецЕсли;
		НоваяСтрока = НаборДанных.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
	КонецЦикла;
	
	Возврат НаборДанных;
	
КонецФункции

Функция СтруктураОбновленияЗаписи() Экспорт
	
	ВозвращаемоеЗначение = Новый Структура();
	
	Для Каждого Ресурс Из Метаданные.РегистрыСведений.ИсторияПогашенийСДИЗЗЕРНО.Ресурсы Цикл
		ВозвращаемоеЗначение.Вставить(Ресурс.Имя);
	КонецЦикла;
	
	Для Каждого Реквизит Из Метаданные.РегистрыСведений.ИсторияПогашенийСДИЗЗЕРНО.Реквизиты Цикл
		ВозвращаемоеЗначение.Вставить(Реквизит.Имя);
	КонецЦикла;
	
	Возврат ВозвращаемоеЗначение;
	
КонецФункции
Показать
7. zoeh 31 18.03.25 05:10 Сейчас в теме
(5) Спасибо !!! Жестокие модули!!!
6. user1936660 17.03.25 22:01 Сейчас в теме
Или же

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

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

Функция ВыборкаДанныхСДИЗЗЕРНО(МассивСДИЗ)
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Ссылки", МассивСДИЗ);
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ОформлениеСДИЗЗЕРНОТовары.СДИЗ КАК СДИЗ,
	|	МАКСИМУМ(ОформлениеСДИЗЗЕРНОТовары.Номенклатура)   КАК Номенклатура,
	|	МАКСИМУМ(ОформлениеСДИЗЗЕРНОТовары.Характеристика) КАК Характеристика,
	|	МАКСИМУМ(ОформлениеСДИЗЗЕРНОТовары.Серия)          КАК Серия
	|ПОМЕСТИТЬ
	|	ОформлениеСДИЗЗЕРНОТовары
	|ИЗ
	|	Документ.ОформлениеСДИЗЗЕРНО.Товары КАК ОформлениеСДИЗЗЕРНОТовары
	|ГДЕ
	|	ОформлениеСДИЗЗЕРНОТовары.СДИЗ В (&Ссылки)
	|СГРУППИРОВАТЬ ПО
	|	ОформлениеСДИЗЗЕРНОТовары.СДИЗ
	|ИМЕЮЩИЕ
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОформлениеСДИЗЗЕРНОТовары.Номенклатура)     = 1
	|	И КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОформлениеСДИЗЗЕРНОТовары.Характеристика) = 1
	|	И КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОформлениеСДИЗЗЕРНОТовары.Серия)          = 1
	|;
	|
	|////////////////////////////////////////////////////////////­///////////////////////
	|ВЫБРАТЬ
	|	ПогашениеСДИЗЗЕРНОТовары.СДИЗ КАК СДИЗ,
	|	МАКСИМУМ(ПогашениеСДИЗЗЕРНОТовары.Номенклатура)   КАК Номенклатура,
	|	МАКСИМУМ(ПогашениеСДИЗЗЕРНОТовары.Характеристика) КАК Характеристика,
	|	МАКСИМУМ(ПогашениеСДИЗЗЕРНОТовары.Серия)          КАК Серия
	|ПОМЕСТИТЬ
	|	ПогашениеСДИЗЗЕРНОТовары
	|ИЗ
	|	Документ.ПогашениеСДИЗЗЕРНО.Товары КАК ПогашениеСДИЗЗЕРНОТовары
	|ГДЕ
	|	ПогашениеСДИЗЗЕРНОТовары.СДИЗ В (&Ссылки)
	|СГРУППИРОВАТЬ ПО
	|	ПогашениеСДИЗЗЕРНОТовары.СДИЗ
	|ИМЕЮЩИЕ
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПогашениеСДИЗЗЕРНОТовары.Номенклатура)     = 1
	|	И КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПогашениеСДИЗЗЕРНОТовары.Характеристика) = 1
	|	И КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПогашениеСДИЗЗЕРНОТовары.Серия)          = 1
	|;
	|
	|////////////////////////////////////////////////////////////­///////////////////////
	|ВЫБРАТЬ
	|	ЕСТЬNULL(ПогашениеСДИЗЗЕРНОТовары.СДИЗ,ОформлениеСДИЗЗЕРНОТовары.СДИЗ) КАК СДИЗ,
	|	ЕСТЬNULL(ОформлениеСДИЗЗЕРНОТовары.Номенклатура,ПогашениеСДИЗЗЕРНОТовары.Номенклатура) КАК Номенклатура,
	|	ЕСТЬNULL(ОформлениеСДИЗЗЕРНОТовары.Характеристика,ПогашениеСДИЗЗЕРНОТовары.Характеристика) КАК Характеристика,
	|	ЕСТЬNULL(ОформлениеСДИЗЗЕРНОТовары.Серия,ПогашениеСДИЗЗЕРНОТовары.Серия) КАК Серия
	|ПОМЕСТИТЬ СопоставленныеТовары
	|ИЗ ПогашениеСДИЗЗЕРНОТовары КАК ПогашениеСДИЗЗЕРНОТовары
	|	ПОЛНОЕ СОЕДИНЕНИЕ ОформлениеСДИЗЗЕРНОТовары КАК ОформлениеСДИЗЗЕРНОТовары
	|		ПО ОформлениеСДИЗЗЕРНОТовары.СДИЗ = ПогашениеСДИЗЗЕРНОТовары.СДИЗ
	|;
	|
	|////////////////////////////////////////////////////////////­///////////////////////
	|ВЫБРАТЬ
	|	ИсторияПогашенийСДИЗЗЕРНО.СДИЗ КАК СДИЗ,
	|	СУММА(ИсторияПогашенийСДИЗЗЕРНО.КоличествоЗЕРНО) КАК Количество
	|ПОМЕСТИТЬ РанееПогашено
	|ИЗ
	|	РегистрСведений.ИсторияПогашенийСДИЗЗЕРНО КАК ИсторияПогашенийСДИЗЗЕРНО
	|ГДЕ
	|	ИсторияПогашенийСДИЗЗЕРНО.СДИЗ В (&Ссылки)
	|	И ИсторияПогашенийСДИЗЗЕРНО.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаписейЗЕРНО.Подписано)
	|СГРУППИРОВАТЬ ПО
	|	ИсторияПогашенийСДИЗЗЕРНО.СДИЗ
	|;
	|
	|////////////////////////////////////////////////////////////­///////////////////////
	|ВЫБРАТЬ
	|	СДИЗЗЕРНО.Ссылка                    КАК СДИЗ,
	|	СопоставленныеТовары.Номенклатура   КАК Номенклатура,
	|	СопоставленныеТовары.Характеристика КАК Характеристика,
	|	СопоставленныеТовары.Серия          КАК Серия,
	|	СДИЗЗЕРНО.Количество - ЕСТЬNULL(РанееПогашено.Количество, 0) КАК КоличествоЗЕРНО,
	|	СДИЗЗЕРНО.ТранспортныеСредства.(
	|		ТипТранспорта КАК ТипТранспорта,
	|		НомерТранспортногоСредства КАК НомерТранспортногоСредства,
	|		НомерАвтомобильногоКонтейнера КАК НомерАвтомобильногоКонтейнера) КАК ТранспортныеСредства
	|ИЗ
	|	Справочник.СДИЗЗЕРНО КАК СДИЗЗЕРНО
	|	ЛЕВОЕ СОЕДИНЕНИЕ СопоставленныеТовары КАК СопоставленныеТовары
	|		ПО СДИЗЗЕРНО.Ссылка = СопоставленныеТовары.СДИЗ
	|	ЛЕВОЕ СОЕДИНЕНИЕ РанееПогашено КАК РанееПогашено
	|		ПО СДИЗЗЕРНО.Ссылка = РанееПогашено.СДИЗ
	|ГДЕ
	|	СДИЗЗЕРНО.Ссылка В (&Ссылки)";
	
	Возврат Запрос.Выполнить().Выбрать();
	
КонецФункции

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

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