Сравнение значений топа из Exel с базой.

1. Jovi 30.04.20 16:59 Сейчас в теме
Добрый день. Начинающий программист. Подскажите пожалуйста. Мне нужно сравнить значение топов номенклатуры из Exel документа с базой 1с и те значения, которые будут не совпадать (с базой) вывести в обычный табличный документ. Результат у меня выходит не корректно, так как не важно, совпадают значения или нет, выводятся данные Exel документа. Я так понимаю, что у меня проблема где то в запросе, но сам не могу найти ошибку. Подскажите пожалуйста.

Процедура КнопкаВыполнитьНажатие(Кнопка) 
	
	ТабДок = Новый ТабличныйДокумент;
	Макет = ПолучитьМакет("Макет");
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьТело = Макет.ПолучитьОбласть("Тело"); 
	ТабДок.Вывести(ОбластьШапка);
	
	ТЗНоменклатуры = Новый ТаблицаЗначений;
	ТЗНоменклатуры.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
	ТЗНоменклатуры.Колонки.Добавить("ТопПрогноз", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.СвойстваОбъектов"));
	ТЗНоменклатуры.Колонки.Добавить("ЗначениеТопаПрогноз", Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"));
	
	Для Каждого Строка ИЗ ТабличноеПоле Цикл
						
		НоменклатураДокументаТекст = СокрЛП(Строка[0]);
		НоменклатураДокумента = Справочники.Номенклатура.НайтиПоНаименованию(НоменклатураДокументаТекст);
		
		Если НоменклатураДокумента.Пустая() ИЛИ НоменклатураДокумента.ЭтоГруппа ИЛИ НоменклатураДокументаТекст = "" Тогда 			
			Продолжить;
		КонецЕсли;
		
		НоваяСтрока = ТЗНоменклатуры.Добавить();
		НоваяСтрока.Номенклатура = НоменклатураДокумента;
		
		ТопПрогнозДокумента = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000467");
		НоваяСтрока.ТопПрогноз = ТопПрогнозДокумента;
		
		ЗначениеТопаПрогнозДокументаТекст = СокрЛП(Строка[8]);
		ЗначениеТопаПрогнозДокумента = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеТопаПрогнозДокументаТекст);
		
		Если ЗначениеТопаПрогнозДокумента.Пустая() Тогда 			
			Продолжить;
		КонецЕсли;
		
		НоваяСтрока.ЗначениеТопаПрогноз = ЗначениеТопаПрогнозДокумента;		
		
	КонецЦикла;  
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
	|	ТЗНоменклатуры.ТопПрогноз КАК ТопПрогнозДокумента,
	|	ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеTOPGPДокумента
	|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
	|ИЗ
	|	&ТЗНоменклатуры КАК ТЗНоменклатуры
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
	|	ТЗНоменклатурыДокумента.ТопПрогнозДокумента КАК ТопПрогнозДокумента,
	|	ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента КАК ЗначениеTOPGPДокумента
	|ИЗ
	|	ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	|		ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = ЗначенияСвойствОбъектов.Объект
	|ГДЕ
	|	ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
	|	И ЗначенияСвойствОбъектов.Значение <> ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента";
	 		  		
	Запрос.УстановитьПараметр("ТЗНоменклатуры", ТЗНоменклатуры);
	Результат = Запрос.Выполнить();      	
	Выборка = Результат.Выбрать();
	
	Пока Выборка.Следующий() Цикл 		
		
		ОбластьТело.Параметры.Номенклатура = Выборка.НоменклатураДокумента;
		ОбластьТело.Параметры.ЗначениеТопаПрогноз = Выборка.ЗначениеTOPGPДокумента;
		ТабДок.Вывести(ОбластьТело);    
		
	КонецЦикла;
	
	Если НЕ Результат.Пустой() Тогда
		ТабДок.Показать();
		Сообщить("Обработка завершена.", СтатусСообщения.Информация);
	Иначе
		Сообщить("Обработка завершена.", СтатусСообщения.Информация);
	КонецЕсли;	
	
КонецПроцедуры
Показать
Найденные решения
11. Jovi 07.05.20 12:16 Сейчас в теме
ТабДок = Новый ТабличныйДокумент;
	Макет = ПолучитьМакет("Макет");
	ОбластьШапка	= Макет.ПолучитьОбласть("Шапка");
	ОбластьТело		= Макет.ПолучитьОбласть("Тело"); 
	ТабДок.Вывести(ОбластьШапка);
		
	Массив = Новый Массив;
	Массив.Добавить(Тип("Строка"));
		
	ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки(100));
	
	ТЗНоменклатуры = Новый ТаблицаЗначений;
	ТЗНоменклатуры.Колонки.Добавить("Номенклатура", ОписаниеТиповСтрока);
	ТЗНоменклатуры.Колонки.Добавить("ЗначениеТопаПрогноз",  ОписаниеТиповСтрока);
	
	Для Каждого Строка ИЗ ТабличноеПоле Цикл  		
		
		НоменклатураДокументаТекст = СокрЛП(Строка[0]);  		
		Если НоменклатураДокументаТекст = "" ИЛИ НоменклатураДокументаТекст = "Номенклатура" Тогда 			
			Продолжить;
		КонецЕсли;
		
		НаименованиеЗначенияТопаПрогнозДокумента = СокрЛП(Строка[8]);
		
		НоваяСтрока = ТЗНоменклатуры.Добавить(); 		
		НоваяСтрока.Номенклатура				= НоменклатураДокументаТекст;		 
		НоваяСтрока.ЗначениеТопаПрогноз 	= НаименованиеЗначенияТопаПрогнозДокумента; 		
		
	КонецЦикла;  
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	
	"ВЫБРАТЬ
	|	ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
	|	ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеТопаПрогноз
	|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
	|ИЗ
	|	&ТЗНоменклатуры КАК ТЗНоменклатуры
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	НоменклатураДокумента
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ЗначенияСвойствОбъектов.Объект.Наименование КАК Номенклатура,
	|	ЗначенияСвойствОбъектов.Значение.Наименование КАК ЗначениеТопаНаименование
	|ПОМЕСТИТЬ РСНоменклатуры
	|ИЗ
	|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	|ГДЕ
	|	ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
	|	ВЫБОР
	|		КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
	|				И ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз = """"
	|			ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
	|		КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
	|				И ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз <> """"
	|			ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
	|		КОГДА РСНоменклатуры.ЗначениеТопаНаименование <> ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
	|			ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
	|	КОНЕЦ КАК ЗначениеТопаПрогноз,
	|	ВЫБОР
	|		КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
	|			ТОГДА ""NULL""
	|	КОНЕЦ КАК ЗначениеТопаНаименование
	|ИЗ
	|	ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
	|		ЛЕВОЕ СОЕДИНЕНИЕ РСНоменклатуры КАК РСНоменклатуры
	|		ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = РСНоменклатуры.Номенклатура";
	
	Запрос.УстановитьПараметр("ТЗНоменклатуры", ТЗНоменклатуры); 	
	Выборка = Запрос.Выполнить().Выбрать(); 	     
	
	Пока Выборка.Следующий() Цикл
		
		Если Выборка.ЗначениеТопаНаименование = "NULL" И Выборка.ЗначениеТопаПрогноз = "" Тогда
			Продолжить;	
			
		ИначеЕсли Выборка.ЗначениеТопаПрогноз <> Выборка.ЗначениеТопаНаименование Тогда
			
			ОбластьТело.Параметры.Номенклатура 				= Выборка.НоменклатураДокумента;
			ОбластьТело.Параметры.ЗначениеТопаПрогноз 	= Выборка.ЗначениеТопаПрогноз;	
			ТабДок.Вывести(ОбластьТело);
			
		КонецЕсли;
		
	КонецЦикла;    	
	                             	
	ТабДок.Показать();	 	
	Сообщить("Обработка завершена.", СтатусСообщения.Информация);
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ab_initio 95 01.05.20 13:57 Сейчас в теме
Такой вариант попробуйте:
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
    |    ТЗНоменклатуры.ТопПрогноз КАК ТопПрогнозДокумента,
    |    ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеTOPGPДокумента
    |ПОМЕСТИТЬ ТЗНоменклатурыДокумента
    |ИЗ
    |    &ТЗНоменклатуры КАК ТЗНоменклатуры
    |;
    |
    |////////////////////////////////////////////////////////////­­////////////////////
    |ВЫБРАТЬ
    |    ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
    |    ТЗНоменклатурыДокумента.ТопПрогнозДокумента КАК ТопПрогнозДокумента,
    |    ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента КАК ЗначениеTOPGPДокумента
    |ИЗ
    |    ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |        ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = ЗначенияСвойствОбъектов.Объект
    |        И ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
    |ГДЕ
    |    (ЗначенияСвойствОбъектов.Значение IS NULL)
    |    ИЛИ (ЗначенияСвойствОбъектов.Значение <> ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента)";

Показать
3. Jovi 04.05.20 09:11 Сейчас в теме
(2) К сожалению, такой вариант тоже не верный, так как всё равно выводятся одинаковые позиции.
4. ab_initio 95 04.05.20 09:51 Сейчас в теме
Хорошо.
Тогда давайте такой диагностический запрос выполним, посмотрим, что получится:
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
    |    ТЗНоменклатуры.ТопПрогноз КАК ТопПрогнозДокумента,
    |    ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеTOPGPДокумента
    |ПОМЕСТИТЬ ТЗНоменклатурыДокумента
    |ИЗ
    |    &ТЗНоменклатуры КАК ТЗНоменклатуры
    |;
    |
    |////////////////////////////////////////////////////////////­­////////////////////
    |ВЫБРАТЬ
    |    ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
    |    ТЗНоменклатурыДокумента.ТопПрогнозДокумента КАК ТопПрогнозДокумента,
    |    ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента КАК ЗначениеTOPGPДокумента,
    |    ЗначенияСвойствОбъектов.Значение КАК ЗначениеСвойстваИзБазы
    |ИЗ
    |    ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |        ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = ЗначенияСвойствОбъектов.Объект
    |        И ТЗНоменклатурыДокумента.ТопПрогнозДокумента = ЗначенияСвойствОбъектов.Свойство
    |   
    |";
 
Показать
5. Jovi 04.05.20 10:03 Сейчас в теме
(4) Нашёл проблему, пытаюсь её корректно исправить. Как минимум проблема в том, что у меня в базе есть характеристики TOP и TOP(GP). Следовательно, у них разные значения (для TOP одни, для TOP(GP) другие). Но по сути наименования у них одинаковые (например у характеристики TOP есть значение с наименованием "E" и у характеристики TOP(GP) есть значение с наименованием "E"), а вот коды у них разные. Получается когда я формирую ТЗ и выполняю
ЗначениеТопаПрогнозДокументаТекст = СокрЛП(Строка[8]);
        ЗначениеТопаПрогнозДокумента = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеТопаПрогнозДокументаТекст);
у меня присваиваются коды характеристики TOP. Вот и запрос верно отрабатывает, так как код значения характеристики TOP <> коду значения характеристики TOP(GP).
6. ab_initio 95 04.05.20 10:07 Сейчас в теме
(5) Ну да, по сути Вы правы. Только в запросе не коды элементов сравниваются между собой, а внутренние идентификаторы элементов. Это строка длиной 36 символов, состоящая из цифр от 0 до 9 и букв от А до F формата UUID.
7. Jovi 04.05.20 10:09 Сейчас в теме
(6)
Только в запросе не коды элементов сравниваются между собой, а внутренние идентификаторы элементов. Это строка длиной 36 символов, состоящая из цифр от 0 до 9 и букв от А до F формата UUID.


Возможно, но я к тому, что я изначально не совсем верные данные в ТЗ передаю.
8. Jovi 04.05.20 12:58 Сейчас в теме
(6) Сделал так:
Процедура КнопкаВыполнитьНажатие(Кнопка) 
	
	ТабДок = Новый ТабличныйДокумент;
	Макет = ПолучитьМакет("Макет");
	ОбластьШапка	= Макет.ПолучитьОбласть("Шапка");
	ОбластьТело		= Макет.ПолучитьОбласть("Тело"); 
	ТабДок.Вывести(ОбластьШапка);
	
	ТЗНоменклатуры = Новый ТаблицаЗначений;
	ТЗНоменклатуры.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
	ТЗНоменклатуры.Колонки.Добавить("ЗначениеТопаПрогноз",  Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"));
		
	Для Каждого Строка ИЗ ТабличноеПоле Цикл
		
		НоменклатураДокументаТекст = СокрЛП(Строка[0]);
		НоменклатураДокумента = Справочники.Номенклатура.НайтиПоНаименованию(НоменклатураДокументаТекст);
		
		Если НоменклатураДокумента.Пустая() ИЛИ НоменклатураДокумента.ЭтоГруппа ИЛИ НоменклатураДокументаТекст = "" Тогда 			
			Продолжить;
		КонецЕсли;
		
		НоваяСтрока = ТЗНоменклатуры.Добавить();
				
		НоваяСтрока.Номенклатура = НоменклатураДокумента; 
						
		ЗначенияТопаПрогнозДокументаТекст = СокрЛП(Строка[8]);
		TOPGP = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000467");
		ЗначенияТопаПрогнозДокумента = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначенияТопаПрогнозДокументаТекст, Истина,, TOPGP);
		Если ЗначенияТопаПрогнозДокумента.Пустая() Тогда
			Продолжить;
		КонецЕсли;
		НоваяСтрока.ЗначениеТопаПрогноз = ЗначенияТопаПрогнозДокумента;

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


Но теперь нужно добавить ещё часть, в которой будет проверяться, что если нет записей в РС, то нужно выводить ту номенклатуру и значение топа, которые указаны в документе Exel. То есть нужна проверка на отсутствие записей в регистре.
9. Jovi 04.05.20 16:13 Сейчас в теме
(6) Не могли бы помочь с этим?
Но теперь нужно добавить ещё часть, в которой будет проверяться, что если нет записей в РС, то нужно выводить ту номенклатуру и значение топа, которые указаны в документе Exel. То есть нужна проверка на отсутствие записей в регистре.
10. ab_initio 95 04.05.20 19:55 Сейчас в теме
Это тем же самым запросом делается и в том же самом одном цикле обе Ваши части нужно выводить в табличный документ.
Нужно внутреннее соединение заменить на левое. А в селект добавить еще одно поле в виде кейс-конструкции: если любое поле второй таблицы есть нулл, то это вторая часть, иначе первая.
11. Jovi 07.05.20 12:16 Сейчас в теме
ТабДок = Новый ТабличныйДокумент;
	Макет = ПолучитьМакет("Макет");
	ОбластьШапка	= Макет.ПолучитьОбласть("Шапка");
	ОбластьТело		= Макет.ПолучитьОбласть("Тело"); 
	ТабДок.Вывести(ОбластьШапка);
		
	Массив = Новый Массив;
	Массив.Добавить(Тип("Строка"));
		
	ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки(100));
	
	ТЗНоменклатуры = Новый ТаблицаЗначений;
	ТЗНоменклатуры.Колонки.Добавить("Номенклатура", ОписаниеТиповСтрока);
	ТЗНоменклатуры.Колонки.Добавить("ЗначениеТопаПрогноз",  ОписаниеТиповСтрока);
	
	Для Каждого Строка ИЗ ТабличноеПоле Цикл  		
		
		НоменклатураДокументаТекст = СокрЛП(Строка[0]);  		
		Если НоменклатураДокументаТекст = "" ИЛИ НоменклатураДокументаТекст = "Номенклатура" Тогда 			
			Продолжить;
		КонецЕсли;
		
		НаименованиеЗначенияТопаПрогнозДокумента = СокрЛП(Строка[8]);
		
		НоваяСтрока = ТЗНоменклатуры.Добавить(); 		
		НоваяСтрока.Номенклатура				= НоменклатураДокументаТекст;		 
		НоваяСтрока.ЗначениеТопаПрогноз 	= НаименованиеЗначенияТопаПрогнозДокумента; 		
		
	КонецЦикла;  
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	
	"ВЫБРАТЬ
	|	ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
	|	ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеТопаПрогноз
	|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
	|ИЗ
	|	&ТЗНоменклатуры КАК ТЗНоменклатуры
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	НоменклатураДокумента
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ЗначенияСвойствОбъектов.Объект.Наименование КАК Номенклатура,
	|	ЗначенияСвойствОбъектов.Значение.Наименование КАК ЗначениеТопаНаименование
	|ПОМЕСТИТЬ РСНоменклатуры
	|ИЗ
	|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	|ГДЕ
	|	ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
	|	ВЫБОР
	|		КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
	|				И ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз = """"
	|			ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
	|		КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
	|				И ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз <> """"
	|			ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
	|		КОГДА РСНоменклатуры.ЗначениеТопаНаименование <> ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
	|			ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
	|	КОНЕЦ КАК ЗначениеТопаПрогноз,
	|	ВЫБОР
	|		КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
	|			ТОГДА ""NULL""
	|	КОНЕЦ КАК ЗначениеТопаНаименование
	|ИЗ
	|	ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
	|		ЛЕВОЕ СОЕДИНЕНИЕ РСНоменклатуры КАК РСНоменклатуры
	|		ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = РСНоменклатуры.Номенклатура";
	
	Запрос.УстановитьПараметр("ТЗНоменклатуры", ТЗНоменклатуры); 	
	Выборка = Запрос.Выполнить().Выбрать(); 	     
	
	Пока Выборка.Следующий() Цикл
		
		Если Выборка.ЗначениеТопаНаименование = "NULL" И Выборка.ЗначениеТопаПрогноз = "" Тогда
			Продолжить;	
			
		ИначеЕсли Выборка.ЗначениеТопаПрогноз <> Выборка.ЗначениеТопаНаименование Тогда
			
			ОбластьТело.Параметры.Номенклатура 				= Выборка.НоменклатураДокумента;
			ОбластьТело.Параметры.ЗначениеТопаПрогноз 	= Выборка.ЗначениеТопаПрогноз;	
			ТабДок.Вывести(ОбластьТело);
			
		КонецЕсли;
		
	КонецЦикла;    	
	                             	
	ТабДок.Показать();	 	
	Сообщить("Обработка завершена.", СтатусСообщения.Информация);
Показать
Оставьте свое сообщение

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