Сравнение значений топа из Exel с базой.
Добрый день. Начинающий программист. Подскажите пожалуйста. Мне нужно сравнить значение топов номенклатуры из Exel документа с базой 1с и те значения, которые будут не совпадать (с базой) вывести в обычный табличный документ. Результат у меня выходит не корректно, так как не важно, совпадают значения или нет, выводятся данные Exel документа. Я так понимаю, что у меня проблема где то в запросе, но сам не могу найти ошибку. Подскажите пожалуйста.
Процедура КнопкаВыполнитьНажатие(Кнопка)
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТело = Макет.ПолучитьОбласть("Тело");
ТабДок.Вывести(ОбластьШапка);
ТЗНоменклатуры = Новый ТаблицаЗначений;
ТЗНоменклатуры.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТЗНоменклатуры.Колонки.Добавить("ТопПрогноз", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.СвойстваОбъектов"));
ТЗНоменклатуры.Колонки.Добавить("ЗначениеТопаПрогноз", Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"));
Для Каждого Строка ИЗ ТабличноеПоле Цикл
НоменклатураДокументаТекст = СокрЛП(Строка[0]);
НоменклатураДокумента = Справочники.Номенклатура.НайтиПоНаименованию(НоменклатураДокументаТекст);
Если НоменклатураДокумента.Пустая() ИЛИ НоменклатураДокумента.ЭтоГруппа ИЛИ НоменклатураДокументаТекст = "" Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = ТЗНоменклатуры.Добавить();
НоваяСтрока.Номенклатура = НоменклатураДокумента;
ТопПрогнозДокумента = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000467");
НоваяСтрока.ТопПрогноз = ТопПрогнозДокумента;
ЗначениеТопаПрогнозДокументаТекст = СокрЛП(Строка[8]);
ЗначениеТопаПрогнозДокумента = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеТопаПрогнозДокументаТекст);
Если ЗначениеТопаПрогнозДокумента.Пустая() Тогда
Продолжить;
КонецЕсли;
НоваяСтрока.ЗначениеТопаПрогноз = ЗначениеТопаПрогнозДокумента;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
| ТЗНоменклатуры.ТопПрогноз КАК ТопПрогнозДокумента,
| ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеTOPGPДокумента
|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
|ИЗ
| &ТЗНоменклатуры КАК ТЗНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
| ТЗНоменклатурыДокумента.ТопПрогнозДокумента КАК ТопПрогнозДокумента,
| ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента КАК ЗначениеTOPGPДокумента
|ИЗ
| ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
| ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = ЗначенияСвойствОбъектов.Объект
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
| И ЗначенияСвойствОбъектов.Значение <> ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента";
Запрос.УстановитьПараметр("ТЗНоменклатуры", ТЗНоменклатуры);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьТело.Параметры.Номенклатура = Выборка.НоменклатураДокумента;
ОбластьТело.Параметры.ЗначениеТопаПрогноз = Выборка.ЗначениеTOPGPДокумента;
ТабДок.Вывести(ОбластьТело);
КонецЦикла;
Если НЕ Результат.Пустой() Тогда
ТабДок.Показать();
Сообщить("Обработка завершена.", СтатусСообщения.Информация);
Иначе
Сообщить("Обработка завершена.", СтатусСообщения.Информация);
КонецЕсли;
КонецПроцедуры
ПоказатьНайденные решения
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТело = Макет.ПолучитьОбласть("Тело");
ТабДок.Вывести(ОбластьШапка);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки(100));
ТЗНоменклатуры = Новый ТаблицаЗначений;
ТЗНоменклатуры.Колонки.Добавить("Номенклатура", ОписаниеТиповСтрока);
ТЗНоменклатуры.Колонки.Добавить("ЗначениеТопаПрогноз", ОписаниеТиповСтрока);
Для Каждого Строка ИЗ ТабличноеПоле Цикл
НоменклатураДокументаТекст = СокрЛП(Строка[0]);
Если НоменклатураДокументаТекст = "" ИЛИ НоменклатураДокументаТекст = "Номенклатура" Тогда
Продолжить;
КонецЕсли;
НаименованиеЗначенияТопаПрогнозДокумента = СокрЛП(Строка[8]);
НоваяСтрока = ТЗНоменклатуры.Добавить();
НоваяСтрока.Номенклатура = НоменклатураДокументаТекст;
НоваяСтрока.ЗначениеТопаПрогноз = НаименованиеЗначенияТопаПрогнозДокумента;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
| ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеТопаПрогноз
|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
|ИЗ
| &ТЗНоменклатуры КАК ТЗНоменклатуры
|
|ИНДЕКСИРОВАТЬ ПО
| НоменклатураДокумента
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Объект.Наименование КАК Номенклатура,
| ЗначенияСвойствОбъектов.Значение.Наименование КАК ЗначениеТопаНаименование
|ПОМЕСТИТЬ РСНоменклатуры
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
| ВЫБОР
| КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
| И ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз = """"
| ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
| КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
| И ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз <> """"
| ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
| КОГДА РСНоменклатуры.ЗначениеТопаНаименование <> ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
| ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
| КОНЕЦ КАК ЗначениеТопаПрогноз,
| ВЫБОР
| КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
| ТОГДА ""NULL""
| КОНЕЦ КАК ЗначениеТопаНаименование
|ИЗ
| ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РСНоменклатуры КАК РСНоменклатуры
| ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = РСНоменклатуры.Номенклатура";
Запрос.УстановитьПараметр("ТЗНоменклатуры", ТЗНоменклатуры);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ЗначениеТопаНаименование = "NULL" И Выборка.ЗначениеТопаПрогноз = "" Тогда
Продолжить;
ИначеЕсли Выборка.ЗначениеТопаПрогноз <> Выборка.ЗначениеТопаНаименование Тогда
ОбластьТело.Параметры.Номенклатура = Выборка.НоменклатураДокумента;
ОбластьТело.Параметры.ЗначениеТопаПрогноз = Выборка.ЗначениеТопаПрогноз;
ТабДок.Вывести(ОбластьТело);
КонецЕсли;
КонецЦикла;
ТабДок.Показать();
Сообщить("Обработка завершена.", СтатусСообщения.Информация);
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Такой вариант попробуйте:
Запрос.Текст =
"ВЫБРАТЬ
| ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
| ТЗНоменклатуры.ТопПрогноз КАК ТопПрогнозДокумента,
| ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеTOPGPДокумента
|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
|ИЗ
| &ТЗНоменклатуры КАК ТЗНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
| ТЗНоменклатурыДокумента.ТопПрогнозДокумента КАК ТопПрогнозДокумента,
| ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента КАК ЗначениеTOPGPДокумента
|ИЗ
| ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
| ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = ЗначенияСвойствОбъектов.Объект
| И ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
|ГДЕ
| (ЗначенияСвойствОбъектов.Значение IS NULL)
| ИЛИ (ЗначенияСвойствОбъектов.Значение <> ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента)";
Показать
Хорошо.
Тогда давайте такой диагностический запрос выполним, посмотрим, что получится:
Тогда давайте такой диагностический запрос выполним, посмотрим, что получится:
Запрос.Текст =
"ВЫБРАТЬ
| ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
| ТЗНоменклатуры.ТопПрогноз КАК ТопПрогнозДокумента,
| ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеTOPGPДокумента
|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
|ИЗ
| &ТЗНоменклатуры КАК ТЗНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
| ТЗНоменклатурыДокумента.ТопПрогнозДокумента КАК ТопПрогнозДокумента,
| ТЗНоменклатурыДокумента.ЗначениеTOPGPДокумента КАК ЗначениеTOPGPДокумента,
| ЗначенияСвойствОбъектов.Значение КАК ЗначениеСвойстваИзБазы
|ИЗ
| ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
| ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = ЗначенияСвойствОбъектов.Объект
| И ТЗНоменклатурыДокумента.ТопПрогнозДокумента = ЗначенияСвойствОбъектов.Свойство
|
|";
Показать
(4) Нашёл проблему, пытаюсь её корректно исправить. Как минимум проблема в том, что у меня в базе есть характеристики TOP и TOP(GP). Следовательно, у них разные значения (для TOP одни, для TOP(GP) другие). Но по сути наименования у них одинаковые (например у характеристики TOP есть значение с наименованием "E" и у характеристики TOP(GP) есть значение с наименованием "E"), а вот коды у них разные. Получается когда я формирую ТЗ и выполняю у меня присваиваются коды характеристики TOP. Вот и запрос верно отрабатывает, так как код значения характеристики TOP <> коду значения характеристики TOP(GP).
ЗначениеТопаПрогнозДокументаТекст = СокрЛП(Строка[8]);
ЗначениеТопаПрогнозДокумента = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеТопаПрогнозДокументаТекст);
(6)
Возможно, но я к тому, что я изначально не совсем верные данные в ТЗ передаю.
Только в запросе не коды элементов сравниваются между собой, а внутренние идентификаторы элементов. Это строка длиной 36 символов, состоящая из цифр от 0 до 9 и букв от А до F формата UUID.
Возможно, но я к тому, что я изначально не совсем верные данные в ТЗ передаю.
(6) Сделал так:
Но теперь нужно добавить ещё часть, в которой будет проверяться, что если нет записей в РС, то нужно выводить ту номенклатуру и значение топа, которые указаны в документе Exel. То есть нужна проверка на отсутствие записей в регистре.
Процедура КнопкаВыполнитьНажатие(Кнопка)
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТело = Макет.ПолучитьОбласть("Тело");
ТабДок.Вывести(ОбластьШапка);
ТЗНоменклатуры = Новый ТаблицаЗначений;
ТЗНоменклатуры.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТЗНоменклатуры.Колонки.Добавить("ЗначениеТопаПрогноз", Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"));
Для Каждого Строка ИЗ ТабличноеПоле Цикл
НоменклатураДокументаТекст = СокрЛП(Строка[0]);
НоменклатураДокумента = Справочники.Номенклатура.НайтиПоНаименованию(НоменклатураДокументаТекст);
Если НоменклатураДокумента.Пустая() ИЛИ НоменклатураДокумента.ЭтоГруппа ИЛИ НоменклатураДокументаТекст = "" Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = ТЗНоменклатуры.Добавить();
НоваяСтрока.Номенклатура = НоменклатураДокумента;
ЗначенияТопаПрогнозДокументаТекст = СокрЛП(Строка[8]);
TOPGP = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("000000467");
ЗначенияТопаПрогнозДокумента = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначенияТопаПрогнозДокументаТекст, Истина,, TOPGP);
Если ЗначенияТопаПрогнозДокумента.Пустая() Тогда
Продолжить;
КонецЕсли;
НоваяСтрока.ЗначениеТопаПрогноз = ЗначенияТопаПрогнозДокумента;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
| ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеТопаПрогноз
|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
|ИЗ
| &ТЗНоменклатуры КАК ТЗНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Объект КАК Номенклатура,
| ЗначенияСвойствОбъектов.Значение КАК ЗначениеТопа
|ПОМЕСТИТЬ РСНоменклатуры
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
| ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз КАК ЗначениеTOPGPДокумента
|ИЗ
| ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РСНоменклатуры КАК РСНоменклатуры
| ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = РСНоменклатуры.Номенклатура
|ГДЕ
| РСНоменклатуры.ЗначениеТопа <> ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз";
Запрос.УстановитьПараметр("ТЗНоменклатуры", ТЗНоменклатуры);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьТело.Параметры.Номенклатура = Выборка.НоменклатураДокумента;
ОбластьТело.Параметры.ЗначениеТопаПрогноз = Выборка.ЗначениеTOPGPДокумента;
ТабДок.Вывести(ОбластьТело);
КонецЦикла;
Если НЕ Результат.Пустой() Тогда
ТабДок.Показать();
Сообщить("Обработка завершена.", СтатусСообщения.Информация);
Иначе
Сообщить("Обработка завершена.", СтатусСообщения.Информация);
КонецЕсли;
КонецПроцедуры
ПоказатьНо теперь нужно добавить ещё часть, в которой будет проверяться, что если нет записей в РС, то нужно выводить ту номенклатуру и значение топа, которые указаны в документе Exel. То есть нужна проверка на отсутствие записей в регистре.
(6) Не могли бы помочь с этим?
Но теперь нужно добавить ещё часть, в которой будет проверяться, что если нет записей в РС, то нужно выводить ту номенклатуру и значение топа, которые указаны в документе Exel. То есть нужна проверка на отсутствие записей в регистре.
Это тем же самым запросом делается и в том же самом одном цикле обе Ваши части нужно выводить в табличный документ.
Нужно внутреннее соединение заменить на левое. А в селект добавить еще одно поле в виде кейс-конструкции: если любое поле второй таблицы есть нулл, то это вторая часть, иначе первая.
Нужно внутреннее соединение заменить на левое. А в селект добавить еще одно поле в виде кейс-конструкции: если любое поле второй таблицы есть нулл, то это вторая часть, иначе первая.
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Макет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьТело = Макет.ПолучитьОбласть("Тело");
ТабДок.Вывести(ОбластьШапка);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповСтрока = Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки(100));
ТЗНоменклатуры = Новый ТаблицаЗначений;
ТЗНоменклатуры.Колонки.Добавить("Номенклатура", ОписаниеТиповСтрока);
ТЗНоменклатуры.Колонки.Добавить("ЗначениеТопаПрогноз", ОписаниеТиповСтрока);
Для Каждого Строка ИЗ ТабличноеПоле Цикл
НоменклатураДокументаТекст = СокрЛП(Строка[0]);
Если НоменклатураДокументаТекст = "" ИЛИ НоменклатураДокументаТекст = "Номенклатура" Тогда
Продолжить;
КонецЕсли;
НаименованиеЗначенияТопаПрогнозДокумента = СокрЛП(Строка[8]);
НоваяСтрока = ТЗНоменклатуры.Добавить();
НоваяСтрока.Номенклатура = НоменклатураДокументаТекст;
НоваяСтрока.ЗначениеТопаПрогноз = НаименованиеЗначенияТопаПрогнозДокумента;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЗНоменклатуры.Номенклатура КАК НоменклатураДокумента,
| ТЗНоменклатуры.ЗначениеТопаПрогноз КАК ЗначениеТопаПрогноз
|ПОМЕСТИТЬ ТЗНоменклатурыДокумента
|ИЗ
| &ТЗНоменклатуры КАК ТЗНоменклатуры
|
|ИНДЕКСИРОВАТЬ ПО
| НоменклатураДокумента
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Объект.Наименование КАК Номенклатура,
| ЗначенияСвойствОбъектов.Значение.Наименование КАК ЗначениеТопаНаименование
|ПОМЕСТИТЬ РСНоменклатуры
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Свойство.Код = ""000000467""
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТЗНоменклатурыДокумента.НоменклатураДокумента КАК НоменклатураДокумента,
| ВЫБОР
| КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
| И ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз = """"
| ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
| КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
| И ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз <> """"
| ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
| КОГДА РСНоменклатуры.ЗначениеТопаНаименование <> ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
| ТОГДА ТЗНоменклатурыДокумента.ЗначениеТопаПрогноз
| КОНЕЦ КАК ЗначениеТопаПрогноз,
| ВЫБОР
| КОГДА РСНоменклатуры.ЗначениеТопаНаименование ЕСТЬ NULL
| ТОГДА ""NULL""
| КОНЕЦ КАК ЗначениеТопаНаименование
|ИЗ
| ТЗНоменклатурыДокумента КАК ТЗНоменклатурыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ РСНоменклатуры КАК РСНоменклатуры
| ПО ТЗНоменклатурыДокумента.НоменклатураДокумента = РСНоменклатуры.Номенклатура";
Запрос.УстановитьПараметр("ТЗНоменклатуры", ТЗНоменклатуры);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ЗначениеТопаНаименование = "NULL" И Выборка.ЗначениеТопаПрогноз = "" Тогда
Продолжить;
ИначеЕсли Выборка.ЗначениеТопаПрогноз <> Выборка.ЗначениеТопаНаименование Тогда
ОбластьТело.Параметры.Номенклатура = Выборка.НоменклатураДокумента;
ОбластьТело.Параметры.ЗначениеТопаПрогноз = Выборка.ЗначениеТопаПрогноз;
ТабДок.Вывести(ОбластьТело);
КонецЕсли;
КонецЦикла;
ТабДок.Показать();
Сообщить("Обработка завершена.", СтатусСообщения.Информация);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот