|
Конвертация данных: выгрузка ТЧ | ☑ | ||
---|---|---|---|---|
0
Sun125
19.03.15
✎
13:54
|
Загрузил в КД типовые правила обмена Управление небольшой фирмой-Бухгалтерия.
В документе-Источнике и документе-Приемнике есть ТЧ Продукция. Нужно в документ-Приемник выгрузить не все строки ТЧ, а только определенные,удовлетворяющие условию. В типовых правилах для ТЧ в обработчике "Перед обработкой" такой код: Запрос = Новый Запрос; Запрос.УстановитьПараметр("Документ", Источник.Ссылка); Запрос.УстановитьПараметр("Дата", Источник.Дата); Запрос.УстановитьПараметр("РегВалюта", Параметры.НациональнаяВалюта); Запрос.УстановитьПараметр("УпрВалюта", Параметры.ВалютаУчета); Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(СборкаЗапасовПродукция.НомерСтроки) КАК НомерСтроки, | СборкаЗапасовПродукция.Ссылка КАК Документ, | СборкаЗапасовПродукция.Номенклатура, | СборкаЗапасовПродукция.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, | СборкаЗапасовПродукция.Спецификация, | СУММА(СборкаЗапасовПродукция.Количество) КАК КоличествоМест, | СУММА(ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(СборкаЗапасовПродукция.ЕдиницаИзмерения) = ТИП(Справочник.ЕдиницыИзмерения) | И СборкаЗапасовПродукция.ЕдиницаИзмерения.Коэффициент > 0 | ТОГДА СборкаЗапасовПродукция.Количество * СборкаЗапасовПродукция.ЕдиницаИзмерения.Коэффициент | ИНАЧЕ СборкаЗапасовПродукция.Количество | КОНЕЦ) КАК Количество, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ СборкаЗапасовПродукция.ЕдиницаИзмерения | КОНЕЦ КАК ЕдиницаИзмерения, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения.Коэффициент | ИНАЧЕ 1 | КОНЕЦ КАК Коэффициент |ПОМЕСТИТЬ ВременнаяТаблицаПродукция |ИЗ | Документ.СборкаЗапасов.Продукция КАК СборкаЗапасовПродукция |ГДЕ | СборкаЗапасовПродукция.Ссылка = &Документ | |СГРУППИРОВАТЬ ПО | СборкаЗапасовПродукция.Спецификация, | СборкаЗапасовПродукция.Номенклатура, | СборкаЗапасовПродукция.Ссылка, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения.Коэффициент | ИНАЧЕ 1 | КОНЕЦ, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ СборкаЗапасовПродукция.ЕдиницаИзмерения | КОНЕЦ, | СборкаЗапасовПродукция.Номенклатура.НоменклатурнаяГруппа |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | Запасы.Регистратор, | Запасы.КоррНоменклатура КАК Продукция, | Запасы.КоррСпецификация КАК СпецификацияПродукции, | СУММА(Запасы.Сумма * ВЫБОР | КОГДА &РегВалюта <> &УпрВалюта | ТОГДА ВЫБОР | КОГДА ЕСТЬNULL(КурсыВалютыЦены.Кратность, 0) > 0 | И ЕСТЬNULL(КурсыВалютыЦены.Курс, 0) > 0 | И ЕСТЬNULL(КурсыВалюты.Кратность, 0) > 0 | И ЕСТЬNULL(КурсыВалюты.Курс, 0) > 0 | ТОГДА КурсыВалютыЦены.Курс * КурсыВалюты.Кратность / (КурсыВалюты.Курс * КурсыВалютыЦены.Кратность) | ИНАЧЕ 0 | КОНЕЦ | ИНАЧЕ 1 | КОНЕЦ) КАК СуммаЗатрат |ПОМЕСТИТЬ ВременнаяТаблицаЗатраты |ИЗ | РегистрНакопления.Запасы КАК Запасы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &УпрВалюта) КАК КурсыВалютыЦены | ПО (ИСТИНА) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &РегВалюта) КАК КурсыВалюты | ПО (ИСТИНА) |ГДЕ | Запасы.Регистратор = &Документ | И Запасы.ЗатратыНаВыпуск | И Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | |СГРУППИРОВАТЬ ПО | Запасы.КоррНоменклатура, | Запасы.КоррСпецификация, | Запасы.Регистратор |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблицаПродукция.Номенклатура КАК Номенклатура, | ВременнаяТаблицаПродукция.Спецификация КАК Спецификация, | ВременнаяТаблицаПродукция.КоличествоМест КАК КоличествоМест, | ВременнаяТаблицаПродукция.Количество КАК Количество, | ВЫБОР | КОГДА ВременнаяТаблицаЗатраты.СуммаЗатрат ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ВременнаяТаблицаЗатраты.СуммаЗатрат / ВременнаяТаблицаПродукция.Количество | КОНЕЦ КАК ПлановаяСтоимость, | ВременнаяТаблицаЗатраты.СуммаЗатрат КАК СуммаПлановая, | ВременнаяТаблицаПродукция.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, | ВременнаяТаблицаПродукция.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ВременнаяТаблицаПродукция.Коэффициент КАК Коэффициент |ИЗ | ВременнаяТаблицаПродукция КАК ВременнаяТаблицаПродукция | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаЗатраты КАК ВременнаяТаблицаЗатраты | ПО ВременнаяТаблицаПродукция.Документ = ВременнаяТаблицаЗатраты.Регистратор | И ВременнаяТаблицаПродукция.Номенклатура = ВременнаяТаблицаЗатраты.Продукция | И ВременнаяТаблицаПродукция.Спецификация = ВременнаяТаблицаЗатраты.СпецификацияПродукции | |УПОРЯДОЧИТЬ ПО | ВременнаяТаблицаПродукция.НомерСтроки"; Если Источник.ВидОперации = Перечисления.ВидыОперацийСборкаЗапасов.Разборка Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.СборкаЗапасов.Продукция", "Документ.СборкаЗапасов.Запасы"); КонецЕсли; КоллекцияОбъектов = Запрос.Выполнить().Выгрузить(); Меняю значения полей выборки запроса на цифры из головы, Вставляю такой код: Запрос = Новый Запрос; Запрос.УстановитьПараметр("Документ", Источник.Ссылка); Запрос.УстановитьПараметр("Дата", Источник.Дата); Запрос.УстановитьПараметр("РегВалюта", Параметры.НациональнаяВалюта); Запрос.УстановитьПараметр("УпрВалюта", Параметры.ВалютаУчета); Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(СборкаЗапасовПродукция.НомерСтроки) КАК НомерСтроки, | СборкаЗапасовПродукция.Ссылка КАК Документ, | СборкаЗапасовПродукция.Номенклатура, | СборкаЗапасовПродукция.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, | СборкаЗапасовПродукция.Спецификация, | СУММА(10) КАК КоличествоМест, | СУММА(20) КАК Количество, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ СборкаЗапасовПродукция.ЕдиницаИзмерения | КОНЕЦ КАК ЕдиницаИзмерения, | 30 КАК Коэффициент |ПОМЕСТИТЬ ВременнаяТаблицаПродукция |ИЗ | Документ.СборкаЗапасов.Продукция КАК СборкаЗапасовПродукция |ГДЕ | СборкаЗапасовПродукция.Ссылка = &Документ | |СГРУППИРОВАТЬ ПО | СборкаЗапасовПродукция.Спецификация, | СборкаЗапасовПродукция.Номенклатура, | СборкаЗапасовПродукция.Ссылка, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ СборкаЗапасовПродукция.ЕдиницаИзмерения | КОНЕЦ, | СборкаЗапасовПродукция.Номенклатура.НоменклатурнаяГруппа |; | |//////////////////////////////////////////////////////////////////////////////// | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблицаПродукция.Номенклатура КАК Номенклатура, | ВременнаяТаблицаПродукция.Спецификация КАК Спецификация, | 10 КАК КоличествоМест, | 20 КАК Количество, | 40 КАК ПлановаяСтоимость, | 50 КАК СуммаПлановая, | ВременнаяТаблицаПродукция.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, | ВременнаяТаблицаПродукция.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | 60 КАК Коэффициент |ИЗ | ВременнаяТаблицаПродукция КАК ВременнаяТаблицаПродукция | |УПОРЯДОЧИТЬ ПО | ВременнаяТаблицаПродукция.НомерСтроки"; Если Источник.ВидОперации = Перечисления.ВидыОперацийСборкаЗапасов.Разборка Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.СборкаЗапасов.Продукция", "Документ.СборкаЗапасов.Запасы"); КонецЕсли; КоллекцияОбъектов = Запрос.Выполнить().Выгрузить(); В результате после обмена все равно значения полей как в источнике. Если в запросе прописать условие строк ТЧ, то тоже никакой реакции, все равно вся ТЧ выгружается. Помогите,пожалуйста,разобраться, что не так делаю? |
|||
1
Sun125
19.03.15
✎
14:07
|
Вставляю такой код:
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Документ", Источник.Ссылка); Запрос.УстановитьПараметр("Дата", Источник.Дата); Запрос.УстановитьПараметр("РегВалюта", Параметры.НациональнаяВалюта); Запрос.УстановитьПараметр("УпрВалюта", Параметры.ВалютаУчета); Запрос.Текст = "ВЫБРАТЬ | 0 КАК Номенклатура, | 0 КАК Спецификация, | 10 КАК КоличествоМест, | 20 КАК Количество, | 40 КАК ПлановаяСтоимость, | 50 КАК СуммаПлановая, | 0 КАК НоменклатурнаяГруппа, | 0 КАК ЕдиницаИзмерения, | 60 КАК Коэффициент"; КоллекцияОбъектов = Запрос.Выполнить().Выгрузить(); Все равно ТЧ выгружается как полложено. Где это может быть прописано? |
|||
2
Sun125
19.03.15
✎
14:33
|
Опытным путем пришел к тому, что любой текст (даже такой "ыавапвп"), помещенный в обработчик "Перед обработкой" приводит к нормальной конвертации ТЧ, один в один.
Стоит текст убрать, при обмене программа ругается: Ошибка получения значения свойства подчиненного объекта (по имени свойства приемника) ПКО = ОтчетПроизводстваЗаСмену (Документ: Сборка запасов) ПКС = 9 ( --> КоличествоМест) Объект = Производство 2 от 11.03.2015 (Документ объект: Производство) СвойствоПриемника = КоличествоМест (Число) ОписаниеОшибки = Поле объекта не обнаружено (КоличествоМест) ПозицияМодуля = Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10284) КСообщенияОбОшибках = 17 Как такое может быть? |
|||
3
Sun125
19.03.15
✎
14:52
|
Вот скриншот настроек.
https://yadi.sk/i/DLzwDQlCfMvEf Как при таких настройках может нормально выгружаться ТЧ? |
|||
4
Sun125
19.03.15
✎
15:25
|
up
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |