К знатокам Конвертации данных )) Теперь вопрос к знатокам конвертации данных 2.1 Данные ходят из чужой перепесанной ТИС в БП 2.0 Надо разделить табличную часть документа-источника на 2 табличные части приемника (товары и услуги). Путешествие в обе табличные части БП я сделал, но вот в каком обработчике вырезать нужные позиции для каждой табличной части? Все облазил, никак не пойму |
Может просто "после загрузки" удалить из каждой табличной части лишнее? |
Становишься на группу свойств, представляющую ТЧ в КД и давишь на карандаш в панели управления над табличным полем. Откроется форма редактирования группы свйств, для нее определены свои обработчики - не помню как называется дословно, там есть обработчик, срабатывающий перед конвертацией строки ТЧ, в котором можно проверить условие и отказаться от конвертации строки. |
Вот пример. ПКС ПередОбработкой для группы свойств табличной части. КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений"); Источник.ВыгрузитьТабличнуюЧасть(КоллекцияОбъектов); н = 0; Пока н < КоллекцияОбъектов.КоличествоСтрок() Цикл н = н + 1; Если КоллекцияОбъектов.Всего = 0 Тогда КоллекцияОбъектов.УдалитьСтроку(н); н = н - 1; КонецЕсли; КонецЦикла; Я отбираю только строки с Всего > 0. У тебя будет отбор по виду номенклатуры. |
(2)вот это я и не пойму в каком месте сделать ? в настройке правил обмена я не могу добраться до группы свойств ТЧ, она просто сворачивается и разворачивается ) Не имел дел с КД ) (3) Где открыть эту группу свойств?) |
В списке ПКС добавляешь группу (папку). В качетсве приемника указываешь соответствующую табличную часть. Т.е. у тебя будут две папки: Товары и Услуги. Внутри папки нужно создать ПКС для каждого из (нужных) реквизитов ТЧ. Указываешь только приемник. |
+(5) Возьми типовые правила перехода 7.7->8. Хоть ТиС, хоть БП. И там посмотри правила для РТиУ или ПТиУ. |
да я в ПКС создал и табличную часть, добавил все реквизиты. Они нормально ходят. И типовую конвертацию смотрю. Не пойму как попасть в обработки табличной части |
Нужно стать на папку. И нажать "карандашик". Или F2. |
7-USSR >Сверни папку |
Спасибо, коллеги) Не знал что надо спозиционироваться именно на папку ) Когда курсор просто в строке, ни F2, ни каранадаш не реагировали) Я КД вижу первую неделю, никакого опыта. Но вещь достаточно крутая и в принципе легко осваиваемая. |
В обработчике "Перед выгрузкой" сформировать список значений "Входящие данные", табличную часть выгрузить в две таблицы значений, поделив как надо, и добавить в список значений с именами соответствующих табличных частей. у табличных частей указать получать данные "из входящих данных" 3-Климов Сергей >Сергей, зачем плохому учите? надо делать структуру со значением для поиска и использовать НайтиСтроки() 0-USSR >в данном конкретном случае лучше выгрузить все в одну табличную часть, а поделить уже ПослеЗагрузки, на связываясь с правилами. будет быстрее работать |
(11)спасибо ) Приму к сведению. А в первом приближении все получилось, работает. Всем огромное спасибо |
2(11) [b]Управление Торговлей 11 [/b][em]3-Климов Сергей >Сергей, зачем плохому учите? надо делать структуру со значением для поиска и использовать НайтиСтроки()[/em] Спасибо за науку. Я так не умею. |
13-Климов Сергей >примерно так: КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений"); Источник.ВыгрузитьТабличнуюЧасть(КоллекцияОбъектов); Отбор=новый структура("Количество",0); Строки=КоллекцияОбъектов.НайтиСтроки(Отбор); Для каждого Стр из Строки цикл КоллекцияОбъектов.УдалитьСтроку(Стр); КонецЦикла; |
(14)При обмене между 7-кой и БП такое не прокатит ) |
2(14) Понял, спасибо! 2(15) Ага! Значит я не совсем плохому учу! :-) |
15-USSR >да, что-то я затупил а в 7.7 я так делаю: КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений"); Источник.ВыгрузитьТабличнуюЧасть(КоллекцияОбъектов ); КоллекцияОбъектов.Сортировать("Всего+"); Пока КоллекцияОбъектов.КоличествоСтрок() >0 Цикл КоллекцияОбъектов.ПолучитьСтрокуПоНомеру(1); Если КоллекцияОбъектов.Всего > 0 Тогда прервать; иначе КоллекцияОбъектов.УдалитьСтроку(1); конецесли; КонецЦикла; КоллекцияОбъектов.Сортировать("НомерСтрокиДокумента+"); |
Текущее время: 17:08. Часовой пояс GMT +3. |