Имя: Пароль:
1C
1С v8
Документы у которых реквизит "Проведен" всегда ложь. (Ну не проводят их)
,
0 Magnetic
 
19.11.13
22:55
В общем сейчас надумал обработчик перед выгрузкой сделать и не выгружать документы других организаций (тока НашаОрганизация ХД ) Не выгружать помеченные на удаление и непроведенные ... вот если первыми двумя пунктами разобрался то как отсеять непроведенные от тех которые в принципе непредусматривают чтоб их проводили не соображу реквизит "проведен" у всех ведь есть...
1 vde69
 
модератор
19.11.13
22:57
методанные тебе в помощь
2 Magnetic
 
19.11.13
23:01
(1) Краткость сестра таланта конечно, но блин немного подробнее можно: А именно различия там искать чтоль?
4 Magnetic
 
19.11.13
23:33
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
    Если Источник.ПометкаУдаления Тогда
        Отказ = Истина;
    ИначеЕсли Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено И (Параметры.Организация <> Объект.Организация) Тогда
        Отказ = Истина;
    ИначеЕсли (Объект.Проведен = Ложь)
        И (ТипЗнч(Объект) <> ТипЗнч(Документ.Доверенность))
        И (ТипЗнч(Объект) <> ТипЗнч(Документ.ПлатежноеПоручение))
        И (ТипЗнч(Объект) <> ТипЗнч(Документ.АвансовыйОтчет))
        И (ТипЗнч(Объект) <> ТипЗнч(Документ.ИнвентаризацияТМЦ))
    Тогда
        Отказ = 1;
    КонецЕсли;
КонецЕсли;
5 Magnetic
 
19.11.13
23:34
Вот так сойдет? (4)
6 Magnetic
 
19.11.13
23:35
Блин наверно Источник на Объект надо поменять в первом условии...
7 Magnetic
 
19.11.13
23:38
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
    Если Объект.ПометкаУдаления Тогда
        Отказ = Истина;
    ИначеЕсли Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено И (Параметры.Организация <> Объект.Организация) Тогда
        Отказ = Истина;
    ИначеЕсли (НЕ Объект.Проведен)
        И (ТипЗнч(Объект) <> ТипЗнч(Документ.Доверенность))
        И (ТипЗнч(Объект) <> ТипЗнч(Документ.ПлатежноеПоручение))
        И (ТипЗнч(Объект) <> ТипЗнч(Документ.АвансовыйОтчет))
        И (ТипЗнч(Объект) <> ТипЗнч(Документ.ИнвентаризацияТМЦ))
    Тогда
        Отказ = 1;
    КонецЕсли;
КонецЕсли;

Или так лучше? и вообще только так перечисляя виды документов можно исключить непроводимые документы?
8 GenV
 
20.11.13
00:18
Сначала проверяешь, что документ может проводится:
Док.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить
9 Magnetic
 
20.11.13
00:49
(8) Та уже разродился отчасти (1) помогло
10 Magnetic
 
20.11.13
00:49
(9) (8)
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
    Если Объект.ПометкаУдаления Тогда
        Отказ = Истина;
    ИначеЕсли Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено И (Параметры.Организация <> Объект.Организация) Тогда
        Отказ = Истина;
    ИначеЕсли Объект.Метаданные().Движения.Количество() <> 0 И (НЕ Объект.Проведен) Тогда
        Отказ = Истина;
    КонецЕсли;
КонецЕсли;
11 Magnetic
 
20.11.13
00:53
Интересно а Вот так работать будет:
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
        Отказ = Объект.ПометкаУдаления;
        Отказ = Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено И (Параметры.Организация <> Объект.Организация);
        Отказ = Объект.Метаданные().Движения.Количество() <> 0 И (НЕ Объект.Проведен);
КонецЕсли;
12 Magnetic
 
20.11.13
00:54
Условий меньше но незнай наглядней ли получается?
13 Magnetic
 
20.11.13
01:03
В (11) какая могла вкрасться ошибка такая и вкралась.
Вот Такой код на мой взгляд абсолютно идентичен (10)

Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
        Отказ = Объект.ПометкаУдаления;
        Отказ = Объект.Метаданные().Движения.Количество() <> 0 И (НЕ Объект.Проведен);
        Отказ = Объект.Метаданные().Реквизиты.Найти("Организация") <> Неопределено И (Параметры.Организация <> Объект.Организация);
КонецЕсли;  

А вот (11) этот пропускает доки других организаций
14 GenV
 
20.11.13
01:08
(13) Как думаешь, что произойдет, если документ будет помечен на удаление, но у него будет правильная организация?
15 Magnetic
 
20.11.13
01:26
(14) Чего чего выгрузится такой
Значит надо через ИЛИ все условия задатьтипа

Отказ = Услови1 ИЛИ Услови2 ИЛИ Условие3
Так ниче не проскользнет
16 Magnetic
 
20.11.13
01:29
(14) Но в обработчике через если все оставил а логические построения эт так академический интерес :)
17 Mikhail Volkov
 
20.11.13
05:57
(6) Если перед выгрузкой, то Источник
18 Magnetic
 
20.11.13
10:34
(17) Я в ПередВыгрузкойОбъекта но ниче вроде работает...
19 Magnetic
 
20.11.13
10:35
(18) (17) ну то есть работает так как в (10) написано...
20 Михаил Козлов
 
20.11.13
10:36
"Не выгружать помеченные на удаление и непроведенные".
А если сначала был проведен, а потом отменили/пометили, как собираетесь поддерживать соответствие информации?
21 Maxus43
 
20.11.13
10:43
по метаданным так

ОбъектМетаданных: Документ (MetadataObject: Document)
Проведение (Posting)
Использование:

Только чтение.
Описание:

Тип: Проведение.
Определяет, разрешено ли проведение документа при записи.
22 Magnetic
 
20.11.13
10:45
(20) А я уверен что там такие есть. НО если сначала провели а потом отменили/пометили а потом сдали отчетность то этот док там участия и не принимал... А вообще у меня не есть цель полностью источник в приемник залить ... Просто несколько видов документов за определенный период.
23 Magnetic
 
20.11.13
10:48
(20) Кстати я именно и только документы так проверяю справочники таки даже помеченные на удаление выгружаю. Потому как любят помечать элементы справочника на удаление которые присутствуют в  паре тройке сотен тысяч документов, ну за прошедшие периоды...
24 acsent
 
20.11.13
10:50
Что то я не увидел в коде проверку на возможность проведения
25 Aleksey
 
20.11.13
10:50
Есть такой документ, операция, который всю картину будет портить

Кстити, имхо сабж вреден, потому что
1. Проводим Документ А
2. Выгружаем его в базу Б
3. Помечаем на удаления документ А.
4. Выгружаем его в базу Б (он не выгрузится, отсеится по условию)
5...
6. Profit - т.е. расхождения данных


Имхо правильнее при загрузки, если ОбъектНеНайлен тогда отказ = истина
26 Magnetic
 
20.11.13
10:57
(24)         Отказ = Объект.Метаданные().Движения.Количество() <> 0
Документы у которых количество движений = 0 не проводятся ... или есть такое чудо проводимое с 0 движениями?
27 Magnetic
 
20.11.13
10:59
(25) Выгрузка разовая тоесть выгрузил и забыл работать начинаем типа только в переброшеной базе ... так что что там будут в приемнике творить пофиг хоть вообще все на удаление пометят больше выгрузок не будет...
28 Serg_1960
 
20.11.13
11:01
(27) Ха-ха. Два раза. Светит тебе в перспективе взаимный обмен писать.

(25) +1 Я бы и помеченные на удаление объекты обрабатывал - отправлял удаление объекта. На всякий случай.
29 Magnetic
 
20.11.13
11:05
(28) Ну нет точно обратно не станут ничего просить загрузить. Источник верной дорогой идет в архив.... Ну рар или зип я еще не решил... :)))
30 Magnetic
 
20.11.13
11:10
Вообще там всего то пока надо коекакие виды документов перебросить(конечно потянули эти "коекакие виды" за собой  всякого) в пустую базу чтоб бухи помотрели пощупали так сказать. А потом возможно только справочники им перекину чтоб с первого января в новой базе работать начали ну пока отчетность не сдадут в рар закатыват источник не буду :)