Имя: Пароль:
1C
1С v8
Конвертация 8.2 -> 7.7 ПометкаУдаления() и Проведен()
0 Vigor06
 
06.11.12
17:05
Возникла необходимость перенести некоторые документы из 8.2 УТ в 7.7 Учет и отчетность предпринимателя

Создал правила,возникла необходимость уточнить перенос свойств "пометка удаления" и "проведен",так как в 8ке это булевый тип,а в 7.7 - число со значениями 1 или 0
В правилах конвертации свойств "ПометкаУдаления" прописываю следующее:

Если Источник.ПометкаУдаления Тогда
 Значение = 1;
Иначе
 Значение = 0;
КонецЕсли;

Аналогично и в "Проведении"

Все выгружается,но при загрузке в 7ку получаю снача ошибки типа:

"Неверное имя реквизита: Документ.СчетФактураВыданный.ПометкаУдаления
Порядковый номер объекта в файле: 2
Неверное имя реквизита: Документ.СчетФактураВыданный.ПометкаУдаления
Порядковый номер объекта в файле: 2"
и т.д.

А в самом конце еще и ошибку
"Объект.Записать();
{\\1C-TEST\Самсонов\V77IMP.ERT(101)}: Номер не уникальный!"

Очень прошу вашей помоши)
1 hhhh
 
06.11.12
17:15
а длина поля номера в документе 7.7 точно у тебя 11 символов?
2 Guk
 
06.11.12
17:20
вроде в 7.7 у документа нет свойства ПометкаУдаления. там это метод...
3 Vigor06
 
06.11.12
17:38
()Да,метод
Попытки сделать так:
Если Источник.пометкаУдаления ТОгда
   Приемник.ПометкаУдаления() = 1;
Иначе
   Приемник.ПометкаУдаления() = 0;
КонецЕсли;

дают

Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1672)}: Ошибка в обработчике события ПриВыгрузке (свойства)
   ПКО                    =  СчетФактураВыданный  (Документ: Счет-фактура выданный)
   ПКС                    =  5  (ПометкаУдаления --> ПометкаУдаления)
   Объект                 =  Счет-фактура выданный 01-01/02 от 01.02.2011 12:00:00  (Счет-фактура выданный)
   СвойствоПриемника      =  ПометкаУдаления  (Число)
   КонвертируемоеЗначение =  Нет  (Булево)
   Обработчик             =  ПриВыгрузкеСвойства
   ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(2,29)}: Неопознанный оператор
   ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9103)
   КодСообщения           =  56


И тд.Уже не понимаю,с какой стороны подступиться
4 lxndr
 
06.11.12
17:44
(3) хитрО ты его вызвать пытаешься, однако ))
Делай так:
Приемник.ПометкаУдаления(1);
5 Aleksey
 
06.11.12
17:51
я делал общий реквизит в 7-ке  "пометка удаления" и "проведен" и уже после загрузки анализировал их
6 Vigor06
 
07.11.12
11:31
(5) А по конкретнее можно?
7 floody
 
07.11.12
11:39
(6) вообще не переноси пометку удаления и проведен, нафиг?
8 Vigor06
 
07.11.12
11:44
(7)а потом вручную их отслеживать?и проводить?
9 PCcomCat
 
07.11.12
11:46
(5) +100!
10 floody
 
07.11.12
11:46
можно не переносить непроведенные документы, получается после загрузки проводить нужно все
11 Vigor06
 
07.11.12
11:51
(10) А если потом их захотят провести в 7ке? А их нет
(5),(9) поясните,пожалуйста,смысл
12 PCcomCat
 
07.11.12
11:55
В конфигурации есть ветка Общие реквизиты в ветке Документы. Туда Добавляешь реквизиты с Идентификатором ПометкаУдаления и Проведен типа число 1.0 для Документы. И всё. А потом - после конвертации - своей обработкой пробегаешь по всем документам, пемечаешь на удаление или снимаешь пометку удаления, проводишь или снимаешь с проведения.
13 Aleksey
 
07.11.12
11:59
(11) Смысл такой чтобы перенести из 8-ки признак проведен и пометка удаления.
14 Vigor06
 
07.11.12
12:02
(13)да,это то я понял)Мне не совсем реализация понятна)
(12) Извиняюсь,но помучаю еще немного:
Я конвертирую из 8.2 в 7.7,а общие реквизиты только в 7ке.
Не пойму,как можно в 7ке будет пробежать по документам и из 8ки взять данные.
15 Vigor06
 
07.11.12
12:06
Так,стоп
Долой тупость.
В конфигурации,в конвертации,создаем общие реквизиты.
Но как потом реализовать - не пойму,хоть убей
16 floody
 
07.11.12
12:07
да хоть в комментарий пиши "помечен" или "проведен", после загрузки помечай или проводи
17 Vigor06
 
07.11.12
12:11
(16) блин,все же просто
Спасибо большое,сейчас попробую реализовать)
18 Сияющий Асинхраль
 
07.11.12
12:13
Проводятся документы после загрузки примерно так:

http://infostart.ru/public/21069/

По аналогии можно сделать и с пометкой на удаление, хотя я, как правило, помеченные на удаление доки просто тупо не переношу...
19 Aleksey
 
07.11.12
12:31
(14) Что тебе не понятно? Как создать общий реквизит в 7-ке?

После этого в конвертации тупо настраиваешь соответствие
Проведен (в 8-ке) = Проведен (реквизит в 7-ке)
Пометка (в 8-ке) = Пометка (реквизит в 7-ке)


После загрузки документа смотришь, если проведен = 1, значит нужно провести документ, если Пометка = 1, значит нужно удалить

И не забывай, что удаленный не проведешь, нужно сначала снять пометку удаления
20 Vigor06
 
07.11.12
12:54
(19) ну если мы про дефолтные реквизиты - то в 7ке это даже не реквизиты,а методы
А если про общие - то я и действительно решил помеченные на удаление не переносить
(Кстати,какой код тут будет верен? "Отказ = Источник.ПометкаУдаления"?)
А будет ли корректно работать метод "Провести()",которым мы будем проводить необходимые документы в 7ке - это,имхо,уже другой вопрос)
21 Vigor06
 
07.11.12
13:05
Так
Создал в 7ке общий реквизит ПометкаПроведен. Тип - число.
В Правиле Конвертации Свойств у свойства "Проведен" пишу:
Если Источник.Проведен ТОгда
   Приемник.ПометкаПроведен = 1;
Иначе
   Приемник.ПометкаПроведен = 0;
КонецЕсли;    
   
После этого в "Правилах обмена данными" в процедуре "После Загрузки Объекта" пишу:
Если Объект.ПометкаПроведен = 1 ТОгда
   Объект.Провести();
КонецЕсли;    


В итоге при выгрузке из 7ки получаю ошибку:
Ошибка в обработчике события ПередВыгрузкой (свойства)
   ПКО                    =  СчетФактураВыданный  (Документ: Счет-фактура выданный)
   ПКС                    =  6  (Проведен --> Проведен)
   Объект                 =  Счет-фактура выданный 01-01/02 от 01.02.2011 12:00:00  (Счет-фактура выданный)
   СвойствоПриемника      =  Проведен  (Число)
   Обработчик             =  ПередВыгрузкойСвойства
   ОписаниеОшибки         =  Поле объекта не обнаружено (ПометкаПроведен)
   ПозицияМодуля          =  (2)
   КодСообщения           =  55
22 Aleksey
 
07.11.12
13:08
(21) <htl yt gbib
23 Aleksey
 
07.11.12
13:09
(21) Бред не пиши
24 Vigor06
 
07.11.12
13:09
(23) Опыта работы с конвертацией до этого не было
Что не так?
25 Aleksey
 
07.11.12
13:09
"В Правиле Конвертации Свойств у свойства "Проведен" пишу:
Если Источник.Проведен ТОгда
   Приемник.ПометкаПроведен = 1;
Иначе
   Приемник.ПометкаПроведен = 0;
КонецЕсли;    "

Ничего писать не надо, просто сопоставить реквизиты и точка
26 Aleksey
 
07.11.12
13:12
(24) всё не так. У тебя источник и приемник не видят друг друга. Тебе нужно просто сопоставить реквизит Проведен в 8-ке и в 7-ке

Ну или

"В Правиле Конвертации Свойств у свойства "Проведен" пишу:
Если Источник.Проведен ТОгда
   Значение =1;
Иначе
   Значение = 0;
КонецЕсли;    "
27 Aleksey
 
07.11.12
13:12
Ну или для любителей коротких кодов

Значение=?(Источник.Проведен,1,0);
28 Aleksey
 
07.11.12
13:13
Либо просто
Значение=Источник.Проведен

так как булева она сконвертирует как 0 или 1
29 Vigor06
 
07.11.12
13:32
(26)(27)(28)Но тогда ж получается бага при загрузке в 7ку.
Куча таких сообщений
"Порядковый номер объекта в файле:  842
Неверное имя реквизита:Документ.СчетФактураВыданный.Проведен
Порядковый номер объекта в файле::  842
Неверное имя реквизита:Документ.СчетФактураВыданный.Пометка удаления"

и в конце

Объект.Записать();
{\\1C-TEST\1C_Базы\Шаблон\CONVERSION\2_1_6_4\V77IMP.ERT(101)}: Номер не уникальный!
30 Aleksey
 
07.11.12
13:47
Номер не уникальный! - это значит что уже есть документ с таким номером
31 Aleksey
 
07.11.12
13:47
скинь правило
32 Vigor06
 
07.11.12
13:51
(31) Да я уже и так все тут прописал,что делаю. И как то все все равно не так
Сейчас пользовался Вашим (27)
33 leonidkorolev
 
07.11.12
13:56
(0) Создай ПКС Проведен и ПометкаУдаления. У этих ПКС установи Передавать данные в параметр. Обязательно задай имя параметра. Далее в ПКО в обработчике ПослеВыгрузки обращайся к параметрам примерно так

Если ПараметрыОбъекта["Проведен"] Тогда

 Объект.???

КонецЕсли;
34 Aleksey
 
07.11.12
13:58
(32) правила скинь
35 Vigor06
 
07.11.12
14:09
(33) у меня бокс "Передавать данные в параметр" неактивен ни в  существующем правиле, ни во вновь создаваемом((

(34) В ПКС "Пометка удаления" ПередВыгрузкой
"Отказ = Источник.ПометкаУдаления;"

В ПКС "Проведен" ПередВыгрузкой
"Значение=?(Источник.Проведен,1,0);"
36 Aleksey
 
07.11.12
14:14
(35) Опять бред пишешь

В ПКС "Пометка удаления" ПередВыгрузкой
"Отказ = Источник.ПометкаУдаления;"

Он просто не будет выгружать реквизит, а документ выгрузит
37 Vigor06
 
07.11.12
14:24
(33) видимо потому что оно активно только тогда,когда мы из 7.7 в 7.7 переносим)По крайней мере по коду именно так

(36) А как правильно тогда?
38 Vigor06
 
07.11.12
14:34
(36) Значит стоит этот код запихать непосредственно в "Правила обмена Данными" в процедуру "Перед выгрузкой объекта") Как то так)
А вот с проведением еще потрахаемся
39 Vigor06
 
07.11.12
14:42
Извините за выражения,был неправ
Что-то я ничего не могу понять.Гугл больше ничего хорошего не говорит,в книжке тоже не нашел.
Ну думаю,что все должно быть так сложно,но решения не вижу
40 Vigor06
 
08.11.12
12:01
Очень интересная ситуация сейчас получается:

В ПКС "Проведен - ПометкаПроведен" следующий код:

Если Источник.Проведен ТОгда
   ПометкаПроведен = 1;
Иначе
   ПометкаПроведен = 0;
КонецЕсли;    

В поиске по по файлу выгрузки Notepad++ выдает мне 1600 документов СчетФактураВыданный,у которых свойство ПометкаПроведен = 1 и еще 300 с ПометкаПроведения=0
Но после загрузки в 7ку,при подсчете количества документов через обработку, узнаю,что вообще в 7ке чуть более 900 документов стало.Где остальные?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.