Здравствуйте,
есть правило выгрузки остатков ТМЦ через правило обмена, в параметрах выгрузки есть код, в котором указывается какую папку ТМЦ нужно игнорировать в выгрузке
остатки ТМЦ отбираются в запросе:
в запрос ставлю
идет выгрузка отстатков, но моя папка с тмц которую не надо выгружать тоже выгружается, ткните носом плиз...
есть правило выгрузки остатков ТМЦ через правило обмена, в параметрах выгрузки есть код, в котором указывается какую папку ТМЦ нужно игнорировать в выгрузке
<Параметр Имя="Группа1ОстаткиНеВыгружать " Наименование="1Остатки Не Выгружать " ИспользуетсяПриЗагрузке="false" УстанавливатьВДиалоге="true" ТипЗначения="СправочникСсылка.Номенклатура" ПередаватьПараметрПриВыгрузке="false" ПравилоКонвертации="Номенклатура "/>
остатки ТМЦ отбираются в запросе:
ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Организация");
ВыборкаДанных.НоваяКолонка("Товары");
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНачала по ДатаОкончания;
|Организация = Регистр.ОстаткиТМЦ.Фирма;
|Товар = Регистр.ОстаткиТМЦ.Номенклатура;
|Склад = Регистр.ОстаткиТМЦ.Склад;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка Организация все;
|Группировка Товар без групп;
|"//}}ЗАПРОС
;
Если ПустоеЗначение(Параметры.Организация)=0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Организация = Параметры.Организация);";
КонецЕсли;
Если ПустоеЗначение(Параметры.Склад)=0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Склад <> Параметры.Склад);";
КонецЕсли;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
//Возврат;
КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
// Группировка Организация
ВыборкаДанных.НоваяСтрока();
ВыборкаДанных.Организация = Запрос.Организация;
Товары = СоздатьОбъект("ТаблицаЗначений");
Товары.НоваяКолонка("Товар");
Товары.НоваяКолонка("ЕдиницаИзмерения");
Товары.НоваяКолонка("Количество");
Товары.НоваяКолонка("ХарактеристикиНоменклатуры");
Товары.НоваяКолонка("Склад");
Пока Запрос.Группировка(2) = 1 Цикл
//Группировка Товар
Товары.НоваяСтрока();
Товары.Товар = Запрос.Товар;
Товары.ЕдиницаИзмерения = Запрос.Товар.ОсновнаяЕдиница;
Товары.Количество = Запрос.КоличествоКонОст;
Товары.Склад = Запрос.Склад;
КонецЦикла;
ВыборкаДанных.Товары = Товары;
КонецЦикла;
Показатьв запрос ставлю
Если (Объект.ПометкаУдаления() = 1) ИЛИ (Объект.Родитель = Параметры.Группа1ОстаткиНеВыгружать)
ИЛИ (Объект.Родитель.Родитель = Параметры.Группа1ОстаткиНеВыгружать) ИЛИ (Объект.ТекущийЭлемент() = Параметры.Группа1ОстаткиНеВыгружать) Тогда
Отказ = 1;
КонецЕсли;
идет выгрузка отстатков, но моя папка с тмц которую не надо выгружать тоже выгружается, ткните носом плиз...
По теме из базы знаний
- Отладка правил обмена 7.7, 8
- Выгрузка данных из УТ (Управления торговлей) 10.3 / 10.2 в БП (Бухгалтерию предприятия), ред. 3.0 (Версия 3.7.11)
- Выгрузка и загрузка настроек выгрузки данных для обмена данными (обычные формы)
- EnterpriseData – часть 2. Процесс выгрузки данных
- Ускорение чтения правил обмена в УПП 1.3 в 20 раз!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
таким же образом выгружаю весь справочник номенклатуры и работает
а дальше что с ним, с Отказом, происходит?
Функция ПВД_ПередОбработкойПравила_ОстаткиТоваров(
ИмяПКО, Правило, ИсходящиеДанные, ВыборкаДанных)
Отказ = 0;
Попытка
ВыборкаДанных = СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Организация");
ВыборкаДанных.НоваяКолонка("Товары");
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНачала по ДатаОкончания;
|Организация = Регистр.ОстаткиТМЦ.Фирма;
|Товар = Регистр.ОстаткиТМЦ.Номенклатура;
|Склад = Регистр.ОстаткиТМЦ.Склад;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Функция КоличествоКонОст = КонОст(Количество);
|Группировка Организация все;
|Группировка Товар без групп;
|"//}}ЗАПРОС
;
Если ПустоеЗначение(Параметры.Организация)=0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Организация = Параметры.Организация);";
КонецЕсли;
Если ПустоеЗначение(Параметры.Склад)=0 Тогда
ТекстЗапроса = ТекстЗапроса + "Условие(Склад <> Параметры.Склад);";
КонецЕсли;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
//Возврат;
КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
// Группировка Организация
ВыборкаДанных.НоваяСтрока();
ВыборкаДанных.Организация = Запрос.Организация;
Товары = СоздатьОбъект("ТаблицаЗначений");
Товары.НоваяКолонка("Товар");
Товары.НоваяКолонка("ЕдиницаИзмерения");
Товары.НоваяКолонка("Количество");
Товары.НоваяКолонка("ХарактеристикиНоменклатуры");
Товары.НоваяКолонка("Склад");
Пока Запрос.Группировка(2) = 1 Цикл
//Группировка Товар
Товары.НоваяСтрока();
Товары.Товар = Запрос.Товар;
Товары.ЕдиницаИзмерения = Запрос.Товар.ОсновнаяЕдиница;
Товары.Количество = Запрос.КоличествоКонОст;
Товары.Склад = Запрос.Склад;
КонецЦикла;
ВыборкаДанных.Товары = Товары;
КонецЦикла;
Если (Товары.Товар.ПометкаУдаления() = 1) ИЛИ (Товары.Товар.Родитель = Параметры.Группа1НоменклатурыНеВыгружать)
ИЛИ (Товары.Товар.Родитель.Родитель = Параметры.Группа1ОстаткиНеВыгружать) ИЛИ (Товары.Товар.ТекущийЭлемент() = Параметры.Группа1ОстаткиНеВыгружать) ИЛИ (Товары.Товар.Родитель = Параметры.Группа2ОстаткиНеВыгружать)
ИЛИ (Товары.Товар.Родитель.Родитель = Параметры.Группа2ОстаткиНеВыгружать) ИЛИ (Товары.Товар.ТекущийЭлемент() = Параметры.Группа2ОстаткиНеВыгружать) Тогда
Отказ = 1;
КонецЕсли;
Исключение
Сообщить("Ошибка исполнения обработчика: ПВД_ПередОбработкойПравила_ОстаткиТоваров", "!!!");
Сообщить(" - " + ОписаниеОшибки());
ЗафиксироватьОшибку("Ошибка исполнения обработчика: ПВД_ПередОбработкойПравила_ОстаткиТоваров" + ": " + ОписаниеОшибки());
КонецПопытки;
Возврат Отказ;
КонецФункции // ПВД_ПередОбработкойПравила_ОстаткиТоваров()
Показатьтаким же образом выгружаю весь справочник номенклатуры и работает
Функция ПВД_ПередВыгрузкойОбъекта_Номенклатура(
ИмяПКО, Правило, Объект, ИсходящиеДанные, ВходящиеДанные)
Отказ = 0;
Попытка
Если (Объект.ПометкаУдаления() = 1) ИЛИ (Объект.Родитель = Параметры.Группа1НоменклатурыНеВыгружать)
ИЛИ (Объект.Родитель.Родитель = Параметры.Группа1НоменклатурыНеВыгружать) ИЛИ (Объект.ТекущийЭлемент() = Параметры.Группа1НоменклатурыНеВыгружать) ИЛИ (Объект.Родитель = Параметры.Группа2НоменклатурыНеВыгружать)
ИЛИ (Объект.Родитель.Родитель = Параметры.Группа2НоменклатурыНеВыгружать) ИЛИ (Объект.ТекущийЭлемент() = Параметры.Группа2НоменклатурыНеВыгружать) Тогда
Отказ = 1;
КонецЕсли;
Исключение
Сообщить("Ошибка исполнения обработчика: ПВД_ПередВыгрузкойОбъекта_Номенклатура", "!!!");
Сообщить(" - " + ОписаниеОшибки());
ЗафиксироватьОшибку("Ошибка исполнения обработчика: ПВД_ПередВыгрузкойОбъекта_Номенклатура" + ": " + ОписаниеОшибки());
КонецПопытки;
Возврат Отказ;
КонецФункции // ПВД_ПередВыгрузкойОбъекта_Номенклатура()
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот