Проблемы про переносе документов, которые не могу решить

1. mukilka 11.12.14 11:20 Сейчас в теме
Добрый день В своем первом переносе данных столкнулся вот с какими проблемами: Переношу справочники и все документы из Бухгалтерия для Украины В УТП для Украины. Справочники вроде перенес, остались некоторые документы.
По мере решения проблем, буду просить помочь решить следующие. Буду благодарен за помощь.
Вот первая проблема:
В источнике есть справочник Подразделения, в приемнике два справочника: Подразделения и ПодразделенияОрганизации. Приемник перенес в два приемника, вроде нормально. Теперь во многих документах появился новый реквизит: Подразделение ( тип. Подразделение). Как его заполнить в обработчиках? Например, значением елемента Администрация (он не предопределенный!). Пробовал в обработчике ПередВыгрузкой: Значение = Справочники.Подразделение.НайтиПоКоду("0002") Но так выдает ошибку((
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Bukaska 140 11.12.14 11:41 Сейчас в теме
Источник у вас один: справочник Подразделения
Приемник: Подразделения и ПодразделенияОрганизаций
В документах Тип: Подразделение?
Конвертация реквизита в документе: Источник-пусто, а приемник - Подразделение?
Пробовали писатьв приемнике так: Значение = Источник?
3. mukilka 11.12.14 12:24 Сейчас в теме
(2) Bukaska, Не очень понял как єто должно сработать? Конвертация реквизита в документе: Источник-пусто, а приемник - Подразделение( тип Подразделения). Так и есть. В приемнике в справочнике Подразделения уже есть элемент Администрация. Необходимо чтобы он попал в реквизит документа.
Значение = Источник не работает! (может я не в том обработчике делаю)
4. Bukaska 140 11.12.14 13:21 Сейчас в теме
(3) mukilka,
Если
Источник-пусто, а приемник - Подразделение( тип Подразделения).

Тогда
Пробовали писатьв приемнике так: Значение = Источник? .

Ой.. Я сказала глупость.

Приемник перенес в два приемника
Пробовал в обработчике ПередВыгрузкой: Значение = Справочники.Подразделение.НайтиПоКоду("0002")

Поняла что ничего не поняла.
Справочник источника переносили в приемник конвертацией типа: Один в несколько?
если значение нужно в документе заполнить из приемника, то почему используете обработчик: ПередВыгрузкой?
Мне кажется, тут правильнее использовать обработчик: ПослеЗагрузки();
Подразделений много надо заполнять? Или только заполнить значением: Администрация.. Если везде нужно проставить одно значение, тогда проще. если несколько значений.. то тут надо ещё подумать.. скорее всего писать дополнительную веточку Если..с поиском по строке
5. mukilka 11.12.14 13:31 Сейчас в теме
Справочник источника переносили в приемник конвертацией типа: Один в несколько? Перенес
если значение нужно в документе заполнить из приемника, то почему используете обработчик: ПередВыгрузкой? Заполнять из приемника, можно и в этом обработчике.
Мне кажется, тут правильнее использовать обработчик: ПослеЗагрузки(); В обработчике ПередВыгрузкой для ВСЕГО ДОКУМЕНТА я провожу документ, в документе уже должен бить заполнено Подразделение. Наверное нужно в "ПередВыгрузкой".
Подразделений много надо заполнять? Или только заполнить значением: Администрация. Нужно заполнить одним "Администрация".
Я просто не знаю как правильно прописать? НайтиПоКоду или как?
6. Bukaska 140 11.12.14 13:52 Сейчас в теме
Попробуйте тогда так: Значение = "Администрация"; Тут два варианта обработчика.. Есть Значение() и есть Выражение()

И почему вы ПередВыгрузкой проводите документ, не проще ли документ проводить, когда данные уже загружены?
У вас документы в источнике не проведены разве, что вы их в обработчике проводите?
7. mukilka 11.12.14 14:01 Сейчас в теме
(6) Bukaska, В источнике документы проведенные, но в приемнике больше регистров где документ может участвовать и цель стоит перенести максимум информации, документы в приемнике я должен провести. Вручную их слишком много. Значить проводить уже в ПослеЗагрузки? НО тогда там нет параметров РежимЗаписи И РежимПроведения, которые использую при проведении.
Если Значение = "Администрация" тогда нужно ведь будет еще и код, родитель и всё остальное заполнить? вроде да?
8. Bukaska 140 11.12.14 14:38 Сейчас в теме
Вы сами говорите, что в источнике документы проведенные, а в приемнике вы их хотите провести.
Факт то, что обработчик ПередВыгрузкой работает вроде как на стороне источника, поэтому я малясь и не врубилась, а зачем второй раз это делать.
Значение = "Администрация" - это лучше написать в ПКС
Проведение документа делайте в обработчике ПослеЗагрузки.
СтрокаДокумент = Параметры.ДокументыДляПроведения.Добавить();
//Отбираете нужные вам документы...

...

СтрокаДокумент.РежимЗаписи = ?(ПараметрыОбъекта.Получить("Проведен"), 
				РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.ОтменаПроведения);


Хотя.. в приемнике разве нет групповой обработки проведения документов? было бы наверное проще.
9. mukilka 11.12.14 14:56 Сейчас в теме
(8) Bukaska, про проведение документы Вы правы. А вот для реквизита не работает. Конечно, что я делаю в ПКС: Источник - пустой, приемник - реквизит Подразделение. если пишу в ПКС ПерезВыгрузкой: Значение = "Администрация" то ругается что значение не является значение объектного типу (Код).
Задаче вроде простая. Возможно просто я плохо объясняю :(((
10. Bukaska 140 11.12.14 15:09 Сейчас в теме
(9) mukilka, Дайте скриншот всех ПКС..
Скорее всего.. у вас включено какое-нить ненужное правило.
11. mukilka 11.12.14 15:52 Сейчас в теме
(10) Bukaska, Вы правы!!! Для ПКС было выбрано ПКО. Убрал его - не выдает ошибки. Но если только пишу в обработчике ПКС ПередВыгрузкой Значение = "Администрация" то реквизит в документе не заполняется. (Пробовал уже и в ПослеВыгрузки Значение = Справочники.Подразделения.НайтиПоКоду(.....).
Не заполняет( наверное скорее для меня будет написать обробку и заполнить путые подразделение администрацией чем разобраться в правилах конвертации:(
12. Bukaska 140 11.12.14 15:58 Сейчас в теме
Я вам писала два варианта: Значение(); и Выражение();
Выражение = "Ваше значение"; тоже не покатил?
13. mukilka 11.12.14 16:12 Сейчас в теме
(12) Bukaska, Если в ПКС пишу Выражение = "Администрация" то при загрузке в источник ошибка компеляции: переменная Администрация не определена.
Если Выражение =Справ.Подр.НайтиПоКоду не заполняет((( Ну вы же наверно знаете, как при конвертации значение реквизита в приемнике заполнить значением из приемника.
14. Bukaska 140 11.12.14 16:53 Сейчас в теме
(13) mukilka, При загрузке в Источник?
Короче я запуталась..
Вы говорите, что когда вы отключили правило, у вас пропала ошибка.
Если у вас ПКС подразделение с пустым источником.. возможно что не конвертируется, так как нет соответствующего ПКО.
По организациям у вас только одно ПКО, которым конвертировали один в несколько?
Может сделать ПКО с пустым источником(новое ПКО) и данным приемником.. чтобы специально для этого документа?
И там уже назначить и значение.. и ключ выгружаемых данных..
Только в ПКС оставить поиск по наименованию.. чтобы не было включено поиск по коду и прочее.. иначе опять будет ругань)))
Далее.. мне бы лучше было попрактиковаться с базами.. тяжеловато как -то телепатом работать.. не видя правил)
15. mukilka 11.12.14 17:40 Сейчас в теме
(14) Bukaska, Большое спасибо за помощь! :) Это моя первая конвертация, поэтому и так трудно объясняю)) Я попробую и отпишусь по результатам. Просто еще не совсем разобрался что можно передавать и в каких данных (Источник,Приемник, Значение, выражение, выгружаемые данные и тд....))
16. Bukaska 140 11.12.14 17:43 Сейчас в теме
(15) mukilka, Вы когда сидите в обработчике: жмите сверху есть кнопочка: Информация по обработчикам - и вам выскочит информация именно по тому обработчику, который у вас открыт. Что там можно и что нельзя)
17. mukilka 12.12.14 10:34 Сейчас в теме
20. mukilka 15.12.14 12:11 Сейчас в теме
(16) Bukaska, (18) vlasin, Чтобы не далел, постоянно ошибка:
Объект = Авансовий отчет 00000000001 від 05.02.2014 12:00:00 (Авансовий отчет)
СвойствоПриемника = Организация (СправочникСсылка.Организации)
ОписаниеОшибки = Получения элемента за индексом для значения не определенно !!!!!!!!!!!
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8220)
КодСообщения = 68

ну никак не могу найти как для подразделения просто установить значение "Администрация" и всё!
22. vlasin 15.12.14 13:09 Сейчас в теме
(20), дайте скришот ПКС для Авансового отчета. Там на организацию ругается, не на подразделение.
Или выложите правила обмена. Загружу в свою КД, посмотрю.
23. mukilka 15.12.14 13:23 Сейчас в теме
(22) vlasin, то же самое нужно сделать и для организации. Вот скриншоты:

24. vlasin 15.12.14 13:48 Сейчас в теме
(23) да, в этом правиле ошибка.
Вы определяете Значение в ПКС (1-1), присваиваете ему строковой тип с названием организации. Затем эта строка идет в правило конвертации объекта (1-2). А там источник не строка, там ожидается ссылочный тип, у которого есть реквизит Название и по этому реквизиту будет осуществляться поиск. Т.к. у строки никакого реквизита нет, ничего не работает.
Если ПКО Организации сейчас используется для переноса организаций, то можно передать ему на обработку структуру (в 1-1) (имитировать ссылочный объект).
Значение = Новый Структура ("Наименование", "Bicko КГ"); 

ПКО Организации примет эту структуру в качестве источника, обратится к свойству Наименование и подствит его в поиск в приемнике.
Если ПКО Организации нужен только для синхронизации данных (новые организации переноситься не планируется), то лучше пометить на удаление весь этот ворох бесполезных свойств, очистить Источник от ссылочного типа и оставить только те ПКС, по которым осуществляется поиск (только Наименование). Тогда 1-1 оставить без изменений. В ПКО Организации зайти в ПКС Наименование и прописать
Значение = Источник;
. В этом случае в качестве источника будет строка, ее значение присвоится свойству Наименование, и по нему будет осуществлен поиск.
mukilka; Bukaska; +2 Ответить
25. mukilka 15.12.14 14:01 Сейчас в теме
(24) vlasin, (Нужно переносить организации) Большое спасибо за ответ!!! Сейчас попробую!
И еще один вопрос об "подразделение": А как прописать значение для подразделение. как писал раньше, Подразделение в документе должно быть Администрация, есть в приемнике? Аналогично тому, как Вы написали?
26. vlasin 15.12.14 14:36 Сейчас в теме
(25), можете сделать по аналогии с организацией - так тоже будет работать.
27. mukilka 15.12.14 15:07 Сейчас в теме
(26) vlasin,Может не так сделал, но и дальше на организацию ругается. Когда прописал: Значение = Новый Структура ("Наименование", "Bicko КГ"); У меня ПКС Организация поис идеет только по полю "Наименование" при выгрузке:
Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = Организации (Справочник: Организации)
ПКС = 1 (Код --> Код)
Объект = Структура (Структура)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Поле об`єкту не виявлено (Код)
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(8220)
КодСообщения = 13
29. vlasin 15.12.14 15:40 Сейчас в теме
(27), да, ПКО пытается получить все свойства. Одного Наименования все же не достаточно. Очистите правило конвертации для этого свойства и вместо Значение = "имя организации" напишите ИмяПредопределенногоЭлемента = "<код организации в базе приемнике>";
30. mukilka 15.12.14 15:50 Сейчас в теме
(29) vlasin, ПОЛУЧИЛОСЬ!!! УРА! так долго страдал!) Еще раз большое спасибо! Теперь хочу спросить еще об одной проблеме. если мне нужно заполнить реквизит предопределеным значением. Тогда писать Значение = "Статья такая то" или использовать тот же метод что выше? И можел ли быть, что в синхронизации свойств не видит один из реквизитов приемника? сейчас сделаю скриншоты
31. mukilka 15.12.14 15:57 Сейчас в теме
(29) vlasin, Документ: РеализацияТоваровУслуг. В конфигураторе в приемнике есть реквизит ВидПередачи (ПеречислениеСсылка.ВидыПередачиТоваров) но в конвертации такого свойства документа не могу найти. Синхронизация пустая( все свойства синхронизированны) Этот реквизит объязательный для заполнения в документе. В чем может быть проблема?
32. vlasin 15.12.14 16:14 Сейчас в теме
(31), автоматом сопоставляются только совпадающие свойства в Приемнике и Источнике. Скорее всего, в Источнике такого свойство отсутствует, поэтому его не с чем было сопоставить у Приемника. Если в Источнике есть подходящее по смыслу свойство (Перечисление с другим названием), можете добавить ПКС вручную или через мастер (кнопка Синхронизация свойств), или через Добавить. Мастер удобен тем, что можно увидеть все несопоставленные свойства - на форму их могли не вывести, а на проведение их незаполненность влияет.
Если в Источнике нет ничего подходящего, то да, через Имя предопределенного можно назначить нужное значение перечисления. Имя перечисления подставлять так, как оно задано в конфигураторе.
33. mukilka 15.12.14 16:18 Сейчас в теме
(32) vlasin, Просто я и вручную не могу найти свойство приемника: ВидПередачи ! Можно как то прописсать его значение в обработчике? типа Значение.ВидПередачи = "НаСклад" ???
34. vlasin 15.12.14 16:29 Сейчас в теме
(33), в ПКС для перечисления можно просто написать Значение = "НаСклад";
правило конвертации назначать не нужно
35. mukilka 15.12.14 16:29 Сейчас в теме
(32) vlasin, Дорогой vlasin, почему для организации всё работает ( отключил правило, ИмяПредопределенногоЭлемента = "000000001"; ) а для подразделения - нет! хотя сделал аналогично ( ИмяПредопределенногоЭлемента = ...)
36. Bukaska 140 15.12.14 16:44 Сейчас в теме
(35) mukilka, Опять же.. смотрите структуру правил.. наверняка для ПКС организации есть ПКО организации, а для ПКС подразделения есть ПКО?
Сопоставьте набор правил для одной нужды и для второй.
37. mukilka 15.12.14 16:53 Сейчас в теме
(36) Bukaska, Всё аналогично (для ПКС отключены правила КО, в обработчике :ИмяПредопределенногоЭлемента = "000000001";) Но Организацию находит, а вот подразделение - нет
38. vlasin 15.12.14 17:14 Сейчас в теме
(37) mukilka, пришлите мне правила обмена. Эл. почту отправил в личку
39. mukilka 15.12.14 17:40 Сейчас в теме
40. mukilka 16.12.14 16:38 Сейчас в теме
(38) vlasin, (36) Bukaska, как при переносе элементов справочников сразу из записывать. А именно, когда переношу справочник Номенклатура то элементы переносит. Но правильно 1С начинает работать только когда открою данную номенклатуру и нажму -"Записать" . Пробовал в обработчике ПередЗагрузкой: РежимЗаписи = "Запись"; но не работает.
41. vlasin 16.12.14 16:45 Сейчас в теме
(40), Выгрузить только Номенклатуру, при загрузке в обработке Универсальный обмен данными снимите флаг Загружать данные в режиме обмена (ОбменДанными.Загрузка = Истина).
42. mukilka 16.12.14 17:05 Сейчас в теме
(41) vlasin, Ругается, что значение "Код" не уникальное!
44. vlasin 16.12.14 17:19 Сейчас в теме
(42), значит справочник уже подправили - перенесли что-то в другую группу, название исправили. Оставляйте флаги поиска у Кода и ЭтоГруппа, с остальных свойств снимайте. В ПКС Наименование установите флаг Не замещать значение свойства у существующих объектов.
Или групповой обработкой перезапишите все элементы справочника Номенклатура.
45. mukilka 16.12.14 17:25 Сейчас в теме
(44) vlasin, Проблема осталась. При переносе номенклатуры обрезает коды! из строки в 12 символов делает 9, оставляет только нули и тогда не дает записать элементы (коды не уникальны). Пробовал Значение = Прав(Источник,9) но не работает (
43. mukilka 16.12.14 17:11 Сейчас в теме
(41) vlasin, Причину нашел! В Источнике код длиной 12 символов, в приемнике -9! при переносе наверное видит что коды элементов одни нули и ругается.
Решение ПередВыгрузкой: Источник = Прав(Источник,9)? Или как то иначе?
46. Bukaska 140 16.12.14 17:35 Сейчас в теме
(43) mukilka,
Источник = Прав(Источник,9)? Или как то иначе?

Нет.. это вы обрубите на 9 символов справа.. а точнее
Описание:

Выбирает последние справа символы строки.
КодРегиона = Прав(ОсновноеСредство.ГосНомер, 2);

А вам надо:
СокрП
Описание:

Отсекает незначащие символы, стоящие справа от последнего значащего символа в строке.

То есть вам нужно как-то так
Источник = СокрП(Источник,3)


Попробуйте так.
47. mukilka 16.12.14 17:38 Сейчас в теме
(46) Bukaska, Спасибо, хотя мне наверное надо СокрЛ? Например, в источнике код: 000000000001, в приемнике делает 000000000. Мне надо тогда Сокр(Источник,3)?
28. mukilka 15.12.14 15:17 Сейчас в теме
(16) Bukaska, (26) vlasin, Может я выложу правила? а то никак толком не объясню(
18. vlasin 12.12.14 12:08 Сейчас в теме
Если вы хотите заполнить реквизит каким то конкретным не предопределенным значением справочника используйте переменную
ИмяПредопределенногоЭлемента = "<код элемента в базе приемнике>"; 
19. mukilka 15.12.14 11:59 Сейчас в теме
(18) vlasin, А где именно и как прописать? Просто ИмяПредопределенногоЭлемента = "00001" ? Или как? Стыдно за такой вопрос(((
21. vlasin 15.12.14 13:06 Сейчас в теме
(19), да, все верно - в ПКС добавить ИмяПредопределенногоЭлемента = "00001"; и все. ПКО назначать не надо.
В обработке Универсальный обмен данными в формате XML Есть такой код:
	ИначеЕсли Свойство = "{ИмяПредопределенногоЭлемента}" Тогда
		
		Попытка
			
			Ссылка = Менеджер[Значение];
			
		Исключение
			
			Ссылка = Менеджер.НайтиПоКоду(Значение);
			
		КонецПопытки;
		
		Возврат Ссылка;
		
	Иначе 
Показать

Т.е. сначала попытка получить предопределенный элемент, в случае неудачи - поиск по коду.
48. Bukaska 140 17.12.14 09:39 Сейчас в теме
Ну тогда слева пробуйте урезать.. То есть СокрЛ()
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот