|   |   | 
| 
 | Конвертация данных: выгрузка ТЧ документа | ☑ | ||
|---|---|---|---|---|
| 0
    
        Sun125 19.03.15✎ 22:56 | 
        Нужно выгрузить ТЧ одного документа в ТЧ другого документа.
 В ТЧ Приемника есть реквизит "Количество мест", которого нет в Источнике. В КД в Правилах конвертации свойств "Количество мест" в обработчике "Перед выгрузкой" пишу: Значение = 1; При обмене программа все равно ругается: Ошибка в обработчике события ПередВыгрузкой (свойства) ПКО = ОтчетПроизводстваЗаСмену (Документ: Сборка запасов) ПКС = 9 (--> КоличествоМест) Объект = Производство 8 от 19.03.2015 (Документ объект: Производство) СвойствоПриемника = КоличествоМест (Число) Обработчик = ПередВыгрузкойСвойства ОписаниеОшибки = Метод объекта не обнаружен (ПКС_ОтчетПроизводстваЗаСмену_Продукция_КоличествоМест_ПередВыгрузкойСвойства_9_24) ПозицияМодуля = (1) КСообщенияОбОшибках = 55 Подскажите,пожалуйста, в чем ошибка? | |||
| 1
    
        welwel 19.03.15✎ 23:04 | 
        В ОбъектКоллекции менять нужно     | |||
| 2
    
        Sun125 19.03.15✎ 23:10 | 
        (1) Подскажите,пожалуйста,где это находится ОбъектКоллекции?     | |||
| 3
    
        Sun125 19.03.15✎ 23:12 | 
        Смотрю в типовых правилах, зачем-то же заполняют значение в обработчике "Перед выгрузкой":
 Выполнить(Алгоритмы.ЗаполнитьКоличествоВТабличнойЧасти); ЗаполнитьКоличествоВТабличнойЧасти: Если ТипЗнч(ОбъектКоллекции.ЕдиницаИзмерения) = Тип("СправочникСсылка.ЕдиницыИзмерения") Тогда Коэффициент = ОбъектКоллекции.ЕдиницаИзмерения.Коэффициент; Если Коэффициент > 0 Тогда Значение = ОбъектКоллекции.Количество * Коэффициент; КонецЕсли; Иначе Значение = ОбъектКоллекции.Количество; КонецЕсли; | |||
| 4
    
        iHell 19.03.15✎ 23:15 | 
        В ПКС перед выгрузкой только это: Значение = 1;  ?     | |||
| 5
    
        iHell 19.03.15✎ 23:16 | 
        "Количество мест" - числовой ?     | |||
| 6
    
        Sun125 19.03.15✎ 23:17 | 
        (5) Да, Количество мест - это Число.
 Пишу: Значение=1; В ТипПриемника указано, что Число | |||
| 7
    
        welwel 19.03.15✎ 23:17 | 
        Можно в послевыгрузки 1 присвоить во всех строках и не заморачиваться с пкс     | |||
| 8
    
        iHell 19.03.15✎ 23:18 | 
        (2) ОбъектКоллекции - доступен как раз в пкс реквизитов твоей тч, посмотри справку по обработчикам, там описано что это.     | |||
| 9
    
        Sun125 19.03.15✎ 23:22 | 
        (7) Указал в ПослеВыгрузки, теперь на этот обработчик ругается:
 Ошибка в обработчике события ПослеВыгрузки (свойства) ПКО = ОтчетПроизводстваЗаСмену (Документ: Сборка запасов) ПКС = 9 (--> КоличествоМест) Объект = Производство 8 от 19.03.2015 (Документ объект: Производство) СвойствоПриемника = КоличествоМест (Число) КонвертируемоеЗначение = 5 000 (Число) Обработчик = ПослеВыгрузкиСвойства ОписаниеОшибки = Метод объекта не обнаружен (ПКС_ОтчетПроизводстваЗаСмену_Продукция_КоличествоМест_ПослеВыгрузкиСвойства_9_24) ПозицияМодуля = (1) КСообщенияОбОшибках = 57 | |||
| 10
    
        iHell 19.03.15✎ 23:26 | 
        (9) Невидя твоих правил сложно что-то сказать, передача значения должна работать. Попробуй в ПКО "после загрузки" обойти нужные тч.     | |||
| 11
    
        welwel 19.03.15✎ 23:26 | 
        (9) в послевыгрузки объекта и перебрать тч     | |||
| 12
    
        welwel 19.03.15✎ 23:27 | 
        Пардон.. Послезагрузки конечно     | |||
| 13
    
        Sun125 19.03.15✎ 23:30 | 
        (10) https://yadi.sk/d/mddQ14XcfNdJw
 Вот скриншот выложил,как примерно выглядит | |||
| 14
    
        iHell 19.03.15✎ 23:36 | 
        (13) Ванга из меня плохая. Если у тебя  в ПВД свой алгоритм или в ПКГС коллекцию собираешь, то там должно быть поле "КоличествоМест".     | |||
| 15
    
        Sun125 19.03.15✎ 23:38 | 
        В "ПослеЗагрузки" самого документа есть такой код:
 Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда УзелОбменаЗагрузкаДанных = Параметры.УзелОбменаЗагрузкаДанных; Выполнить(Алгоритмы.ОбработатьОтчетПроизводстваЗаСмену ); КонецЕсли; Захожу в этот алгоритм, дописываю: Для каждого ТекСтрока Из Объект.Продукция Цикл ..... ТекСтрока.КоличествоМест = 10; Теперь при обмене не ругается, но КоличествоМест не заполняется указанным значением... | |||
| 16
    
        Sun125 19.03.15✎ 23:42 | 
        Может я неправильно правила создаю?..
 1.Захожу в Базу-Источник, в ПланОбмена "ОбменУправлениеНебольшойФирмойБухгалтерия30". 2.Открываю макет "ПравилаОбмена", сохраняю в xml. 3.Загружаю правила в КД, правлю, выгружаю. 4.Меняю содержимое макета. 5. Запускаю базу, захожу в Синхронизацию. 6. Нажимаю "Загрузить правила", выбираю из конфигурации. Пишет: правила обновлены в инф.базу. 7. Меняю документ, чтобы попал в регистрацию. Выполняю синхронизацию. Может что не так делаю? | |||
| 17
    
        Sun125 19.03.15✎ 23:46 | 
        (16) Сомнения возникают, потому что все, что ни меняю типовых правилах, пытаюсь подставить свое значение, при обмене никакой реакции. Но зато как залезу в "Перед выгрузкой",например, программа начинает ругаться.     | |||
| 18
    
        welwel 19.03.15✎ 23:49 | 
        Если Сообщить в интересуемых местах?     | |||
| 19
    
        Sun125 19.03.15✎ 23:51 | 
        Даже удалил текст из Алгоритмы.ОбработатьОтчетПроизводстваЗаСмену.
 Там заполняются как раз оставшиеся реквизиты, которых нет в Источнике. Например, счет затрат. При обмене все равно все заполнилось...странно | |||
| 20
    
        Sun125 19.03.15✎ 23:55 | 
        Так нельзя делать?
 <ПередВыгрузкой>Сообщить("111111");</ПередВыгрузкой> Опять ругается: Ошибка в обработчике события ПередВыгрузкой (объекта коллекции) | |||
| 21
    
        Sun125 20.03.15✎ 00:17 | 
        Может кто знает, в какую обработку залезть отладчиком, чтобы поймать обработчик?
 Хочу узнать, попадает программа в обработчик или нет. В ПКГС ТЧ документа в обработчике "ПередОбработкой" собирается коллекция объектов, в т.ч. и поле "КоличествоМест",которое поменять не получается никак. Но ощущение, что программа туда не попадает, потому что могу "абракадабру" там написать и обмен пройдет. | |||
| 22
    
        Stim 20.03.15✎ 00:23 | 
        а что мешает после загрузки документа обойти табличную часть и проставить 1 в колонку?     | |||
| 23
    
        yanikolay 20.03.15✎ 03:56 | 
        (0)
 В данном случае ПередВыгрузкой() текст модуля нужно прописать в выгружаемой конфигурации в обработке "ОбработчикВыгрузкиВ...", а ПослеЗагрузки() в конфигурации загружаемой конфигурации в обработке "ОбработчикЗагрузкиИз..." | |||
| 24
    
        VladZ 20.03.15✎ 06:14 | 
        Выгрузка из 8 в 8? Или из 7.7 в 8?     | |||
| 25
    
        VladZ 20.03.15✎ 06:14 | 
        (24) -> (0)     | |||
| 26
    
        hhhh 20.03.15✎ 06:23 | 
        (16) не надо менять макет. в п.6 просто делаешь загрузить из файла и пишешь файл, который выгрузил из кд.     | |||
| 27
    
        SleepyHead гуру 20.03.15✎ 06:43 | 
        Очень похоже, что автор выгружает из 1с77, и при этом не выгрузил обработчики и не записал их в модуль формы v77exp     | |||
| 28
    
        Sun125 20.03.15✎ 08:31 | 
        (24) Выгрузка из 8.3 в 8.3     | |||
| 29
    
        Sun125 20.03.15✎ 08:33 | 
        (26) В БП 3.0 программа просит архив загрузить с компа. В нем кроме правил обмена еще правила регистрации и правила обмена корреспондента нужно запаковать. Долго это, проще скопировать в макет в конфигураторе и F5     | |||
| 30
    
        Sun125 20.03.15✎ 08:39 | 
        (26) сейчас другим способом смотрю, через обработку "УниверсальнаяЗагрузкавыгрузка", подставляю туда правила из КД и выгружаю. Вот что заметил в отладчике:
 В КД В ПКГС ТЧ ТЧПродукция в обработчике "Перед загрузкой" собирается коллекция объектов: Запрос = Новый Запрос; Запрос.УстановитьПараметр("Документ", Источник.Ссылка); Запрос.УстановитьПараметр("Дата", Источник.Дата); Запрос.УстановитьПараметр("РегВалюта", Параметры.НациональнаяВалюта); Запрос.УстановитьПараметр("УпрВалюта", Параметры.ВалютаУчета); Запрос.Текст = "ВЫБРАТЬ | МАКСИМУМ(СборкаЗапасовПродукция.НомерСтроки) КАК НомерСтроки, | СборкаЗапасовПродукция.Ссылка КАК Документ, | СборкаЗапасовПродукция.Номенклатура, | СборкаЗапасовПродукция.Номенклатура.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, | СборкаЗапасовПродукция.Спецификация, | СУММА(СборкаЗапасовПродукция.Количество) КАК КоличествоМест, | СУММА(ВЫБОР | КОГДА ТИПЗНАЧЕНИЯ(СборкаЗапасовПродукция.ЕдиницаИзмерения) = ТИП(Справочник.ЕдиницыИзмерения) | И СборкаЗапасовПродукция.ЕдиницаИзмерения.Коэффициент > 0 | ТОГДА СборкаЗапасовПродукция.Количество * СборкаЗапасовПродукция.ЕдиницаИзмерения.Коэффициент | ИНАЧЕ СборкаЗапасовПродукция.Количество | КОНЕЦ) КАК Количество, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ СборкаЗапасовПродукция.ЕдиницаИзмерения | КОНЕЦ КАК ЕдиницаИзмерения, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения.Коэффициент | ИНАЧЕ 1 | КОНЕЦ КАК Коэффициент |ПОМЕСТИТЬ ВременнаяТаблицаПродукция |ИЗ | Документ.СборкаЗапасов.Продукция КАК СборкаЗапасовПродукция |ГДЕ | СборкаЗапасовПродукция.Ссылка = &Документ | |СГРУППИРОВАТЬ ПО | СборкаЗапасовПродукция.Спецификация, | СборкаЗапасовПродукция.Номенклатура, | СборкаЗапасовПродукция.Ссылка, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения.Коэффициент | ИНАЧЕ 1 | КОНЕЦ, | ВЫБОР | КОГДА СборкаЗапасовПродукция.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения | ТОГДА СборкаЗапасовПродукция.Номенклатура.ЕдиницаИзмерения | ИНАЧЕ СборкаЗапасовПродукция.ЕдиницаИзмерения | КОНЕЦ, | СборкаЗапасовПродукция.Номенклатура.НоменклатурнаяГруппа |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | Запасы.Регистратор, | Запасы.КоррНоменклатура КАК Продукция, | Запасы.КоррСпецификация КАК СпецификацияПродукции, | СУММА(Запасы.Сумма * ВЫБОР | КОГДА &РегВалюта <> &УпрВалюта | ТОГДА ВЫБОР | КОГДА ЕСТЬNULL(КурсыВалютыЦены.Кратность, 0) > 0 | И ЕСТЬNULL(КурсыВалютыЦены.Курс, 0) > 0 | И ЕСТЬNULL(КурсыВалюты.Кратность, 0) > 0 | И ЕСТЬNULL(КурсыВалюты.Курс, 0) > 0 | ТОГДА КурсыВалютыЦены.Курс * КурсыВалюты.Кратность / (КурсыВалюты.Курс * КурсыВалютыЦены.Кратность) | ИНАЧЕ 0 | КОНЕЦ | ИНАЧЕ 1 | КОНЕЦ) КАК СуммаЗатрат |ПОМЕСТИТЬ ВременнаяТаблицаЗатраты |ИЗ | РегистрНакопления.Запасы КАК Запасы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &УпрВалюта) КАК КурсыВалютыЦены | ПО (ИСТИНА) | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &РегВалюта) КАК КурсыВалюты | ПО (ИСТИНА) |ГДЕ | Запасы.Регистратор = &Документ | И Запасы.ЗатратыНаВыпуск | И Запасы.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) | |СГРУППИРОВАТЬ ПО | Запасы.КоррНоменклатура, | Запасы.КоррСпецификация, | Запасы.Регистратор |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВременнаяТаблицаПродукция.Номенклатура КАК Номенклатура, | ВременнаяТаблицаПродукция.Спецификация КАК Спецификация, | ВременнаяТаблицаПродукция.КоличествоМест КАК КоличествоМест, | ВременнаяТаблицаПродукция.Количество КАК Количество, | ВЫБОР | КОГДА ВременнаяТаблицаЗатраты.СуммаЗатрат ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ВременнаяТаблицаЗатраты.СуммаЗатрат / ВременнаяТаблицаПродукция.Количество | КОНЕЦ КАК ПлановаяСтоимость, | ВременнаяТаблицаЗатраты.СуммаЗатрат КАК СуммаПлановая, | ВременнаяТаблицаПродукция.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, | ВременнаяТаблицаПродукция.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ВременнаяТаблицаПродукция.Коэффициент КАК Коэффициент |ИЗ | ВременнаяТаблицаПродукция КАК ВременнаяТаблицаПродукция | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаЗатраты КАК ВременнаяТаблицаЗатраты | ПО ВременнаяТаблицаПродукция.Документ = ВременнаяТаблицаЗатраты.Регистратор | И ВременнаяТаблицаПродукция.Номенклатура = ВременнаяТаблицаЗатраты.Продукция | И ВременнаяТаблицаПродукция.Спецификация = ВременнаяТаблицаЗатраты.СпецификацияПродукции | |УПОРЯДОЧИТЬ ПО | ВременнаяТаблицаПродукция.НомерСтроки"; Если Источник.ВидОперации = Перечисления.ВидыОперацийСборкаЗапасов.Разборка Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.СборкаЗапасов.Продукция", "Документ.СборкаЗапасов.Запасы"); КонецЕсли; КоллекцияОбъектов = Запрос.Выполнить().Выгрузить(); Я меняю значения полей выборки: |ВЫБРАТЬ | ВременнаяТаблицаПродукция.Номенклатура КАК Номенклатура, | ВременнаяТаблицаПродукция.Спецификация КАК Спецификация, | 10 КАК КоличествоМест, //!!!!!!! | 20 КАК Количество, | ВЫБОР | КОГДА ВременнаяТаблицаЗатраты.СуммаЗатрат ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ ВременнаяТаблицаЗатраты.СуммаЗатрат / ВременнаяТаблицаПродукция.Количество | КОНЕЦ КАК ПлановаяСтоимость, | ВременнаяТаблицаЗатраты.СуммаЗатрат КАК СуммаПлановая, | ВременнаяТаблицаПродукция.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, | ВременнаяТаблицаПродукция.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ВременнаяТаблицаПродукция.Коэффициент КАК Коэффициент |ИЗ | ВременнаяТаблицаПродукция КАК ВременнаяТаблицаПродукция | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаЗатраты КАК ВременнаяТаблицаЗатраты | ПО ВременнаяТаблицаПродукция.Документ = ВременнаяТаблицаЗатраты.Регистратор | И ВременнаяТаблицаПродукция.Номенклатура = ВременнаяТаблицаЗатраты.Продукция | И ВременнаяТаблицаПродукция.Спецификация = ВременнаяТаблицаЗатраты.СпецификацияПродукции | |УПОРЯДОЧИТЬ ПО | ВременнаяТаблицаПродукция.НомерСтроки"; Если Источник.ВидОперации = Перечисления.ВидыОперацийСборкаЗапасов.Разборка Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.СборкаЗапасов.Продукция", "Документ.СборкаЗапасов.Запасы"); КонецЕсли; КоллекцияОбъектов = Запрос.Выполнить().Выгрузить(); Смотрю в отладчике: В коллекцию объектов попадают первоначальные значения. Поэтому в итоге при обмена не вижу своих изменений. | |||
| 31
    
        Sun125 20.03.15✎ 08:40 | 
        Как такое может быть? Может, еще откуда-то собирается коллекция объектов?     | |||
| 32
    
        VladZ 20.03.15✎ 13:12 | 
        (31) Что-то не так делаешь.  
 Отвлекись. Займись чем-нибудь другим минут на пятнадцать. Вернешься к этой задаче и быстро найдешь свой косяк. :) | |||
| 33
    
        Sun125 20.03.15✎ 22:57 | 
        (32) Понял по отладчику,откуда собирается КоллекцияОбъектов.
 Оказалось, есть ПравилоВыгрузкиДанных. Там в процедуре "ПереОбработкой" документа написано "ВыгрузитьПоПравилу(Объект,,,, "ПеремещениеПродукции");" И обработчики брались из другого правила. И коллекция собиралась в другом месте. Исправил коллекцию объектов в том месте, где она собирается. Теперь другая проблема: Когда я выгружаю данные в xml через "УниверсальныйОбменДаннымиXML" и смотрю файл, там все правильно, я вижу свои изменения. Но когда я провожу Синхронизацию, то в файле выгрузки, я опять не вижу своих изменений. | |||
| 34
    
        Sun125 20.03.15✎ 23:01 | 
        В чем может быть ошибка?     | |||
| 35
    
        Sun125 20.03.15✎ 23:05 | 
        Может, еще какие-то правила подключаются при синхронизации?
 В плане обмена в макетах есть еще "Правила корреспонденции" и "Правила регистрации" | |||
| 36
    
        Sun125 20.03.15✎ 23:08 | 
        в обработке "УниверсальныйОбменДанныхXML" я хоть могу отладчиком посмотреть, что выгружается и почему. А при синхронизации как отследить?     | |||
| 37
    
        Sun125 20.03.15✎ 23:28 | 
        И еще заметил такое:
 В обработчике "Перед выгрузкой" реквизита ТЧ пишу: Значение=999. Выгружаю через УниверсальныйОбмен = все ок. В Файле значение=999. Выгружаю через ПланОбмена - программа ругается. | |||
| 38
    
        Sun125 20.03.15✎ 23:44 | 
        up     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |