Имя: Пароль:
1C
1С v8
КД2. Провести после загрузки
0 Альбатрос
 
14.06.13
07:07
Соббсно, сабж. Не получается.
В обработчике "После загрузки" Пишу так:

Если Объект.Проведен тогда
   Объект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;

Как нужно правильно?
1 ZanderZ
 
14.06.13
07:10
раз книжки нет - есть справка "Информация по обработчикам"
2 echo77
 
14.06.13
07:12
Лучше составить таблицу документов, отсортировать по дате и в одном из обработчиков конвертации пройтись по таблице
3 Флудер
 
14.06.13
07:14
(2) +100500
4 Альбатрос
 
14.06.13
07:17
(1) Ну я посмотрел эту информацию.
Более того, условие выполняется, а объект не проводится... (2) Поясните плиз. Как составить такую таблицу?
5 Aleksey
 
14.06.13
07:28
(4) Создаем новый параметр "СписокДокументов"

В документе после загрузке дописываем добавлением ссылки в этот список
Как вариант можно заюзать глобальный обработчик "После загрузки объекта", но там нужно проверять тип ссылки

Далее в глобальном обработчики "После загрузки данных" пишем
Выполнить(Алгоритмы.ПровестиДокументы);

Ну и создаем алгоритм который по списку проведет документы
6 Альбатрос
 
14.06.13
07:29
(5) Спс, сейчас попробую.
7 ZanderZ
 
14.06.13
07:32
(4) в обработчике "перед загрузкой" есть параметр "РежимЗаписи "
8 kosts
 
14.06.13
07:32
Возможно в этот момент в объекте установлено свойство ОбменДанными.Загрузка = Истина, и это как-то препятствует нормальному проведению...
9 Aleksey
 
14.06.13
07:34
У себя я сабж писал вот так

Если объект.Товары.Количество()=0 тогда
  Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
Иначе
  Если  объект.Проведен тогда
     Если не ОбъектНайден тогда
        Объект.Проведен=ложь;//иначе типовые механизмы ругаются
     КонецЕсли;            
     Объект.Записать(РежимЗаписиДокумента.Проведение);
  Иначе
     Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
  КонецЕсли;
КонецЕсли;
10 Альбатрос
 
14.06.13
07:36
(5) Тааак, а какой тип у параметра указать? СЗ я не могу указать. ХЗ что ли?
(7) Сейчас попробую.
(8) А могу я написать так, и будет ли это правильно:
Если Объект.Проведен тогда
   Объект.ОбменДанными.Загрузка = ложь;
   Объект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
11 kosts
 
14.06.13
07:38
(10) > А могу я написать так, и будет ли это правильно
Напиши, протестируй...
12 kosts
 
14.06.13
07:39
Зачем нужно насильное проведение, обработка загрузки и сама вроде проводит документы...
13 Альбатрос
 
14.06.13
07:39
(9) Ну так у меня также в (0), только условий нет. А он не проводит, гад
14 Aleksey
 
14.06.13
07:39
(10) у меня типовая БП ругалась, если документ новый, поэтому пришлось заглушку ставить
15 Aleksey
 
14.06.13
07:40
(13)
1. вставить сообщить в код, дабы проверить, а он вообще выполняется
2. провести документ вручную, чтобы проверить а документ вообще проводится
16 vicof
 
14.06.13
07:41
(13) Отладчик в руки и смотри, почему не проводит.
17 Альбатрос
 
14.06.13
07:49
(15) Так и сделал. Вставил в (0) сообщить(), и он "сообщал". Значит, в условие заходит. Вручную док проводится без проблем.
(7) Так не пройдет. Перед загрузкой я не нашел как определить, проведен или нет загружаемый объект.
(16) Отладчиком смотреть проведение самого дока? я пробовал отлаживать обработчики, как на ИТС описано, у меня ошибки валит.
18 Aleksey
 
14.06.13
07:52
(17)

Обработчики "Правила конвертации объектов"
Перед загрузкой
Условия возникновения события
Только для платформы V8.
Событие выполняется перед загрузкой объекта. Возможен отказ от загрузки, например, в случае невыполнения каких-либо условий. Загружаемый в БД объект еще не инициализирован.

Параметры:

РежимЗаписи - Строка. Режим записи документа. Имеет смысл только если тип объекта приемника "Документ". Возможные значения "Запись", "Проведение", "ОтменаПроведения"

РежимПроведения - Строка. Режим проведения документа. Имеет смысл только если тип объекта приемника "Документ". Возможные значения "Неоперативный", "Оперативный"

Пример:
РежимЗаписи = "ОтменаПроведения";
19 Альбатрос
 
14.06.13
07:57
(18) Ну так мне нужно не все документы проводить, а только проведенные в базе источнике. Есть еще и просто записаные, их проводить не надо. А через этот обработчик я могу проведение только для всех указать
20 kosts
 
14.06.13
07:59
(19) Типовая обработка сама должна проводить документы. Не проводит сама что-ли?
21 Defender aka LINN
 
14.06.13
08:00
(19) "я могу проведение только для всех указать" - указать только для проведенных религиозные убеждения не позволяют?
22 Альбатрос
 
14.06.13
08:02
(20) нет.
(21) Так вот как? из инфы по обработчику:
Источник - Строка. Представление объекта источника. Пустая строка, если представление объекта источника не выгружалось.
Я не могу проверить у "Источник" свойство "Проведен".
23 ZanderZ
 
14.06.13
08:03
(17) на сколько я помню и в после загрузки должен параметр отрабатывать попробуй:
Если Объект.Проведен тогда
   РежимЗаписи = "Проведение";
КонецЕсли;
24 Aleksey
 
14.06.13
08:06
(23) не должен, ну или это уже будет недокументированной фичей
25 Альбатрос
 
14.06.13
08:06
(23) Ну попробую, конечно, но этот параметр не описан в обработчике
26 Альбатрос
 
14.06.13
08:11
Тут еще подозрения, что это из-за отложенных движений. Щас проверю
27 Defender aka LINN
 
14.06.13
08:13
(22) Это откуда такой бред про представление?
28 Aleksey
 
14.06.13
08:19
(27) из описания
29 Defender aka LINN
 
14.06.13
08:24
(28) А можно я не поверю?
30 Aleksey
 
14.06.13
08:26
(29) можно даже разрешения не спрашивать, ваше права верить или не верить во что-то и ущемлять вас  в этом праве я не намерен. Могу только процитировать встроенную справку

Обработчики "Правила конвертации объектов"
Перед загрузкой
Условия возникновения события
Только для платформы V8.
Событие выполняется перед загрузкой объекта. Возможен отказ от загрузки, например, в случае невыполнения каких-либо условий. Загружаемый в БД объект еще не инициализирован.

Параметры:

Источник - Строка. Представление объекта источника. Пустая строка, если представление объекта источника не выгружалось.
31 Defender aka LINN
 
14.06.13
08:34
(30) Нормальные люди проверяют данные базы-источника в базе-источнике, а не в приемнике
32 Aleksey
 
14.06.13
08:35
(31) а вот "выдирать слова из контекста" не надо
33 Defender aka LINN
 
14.06.13
08:36
(32) Вопрос на внимательность: в какой базе вызывается событие "Перед загрузкой"?
Вопрос на догадливость: нет ли возможности задать режим записи в каком-нибудь другом событии?
34 Aleksey
 
14.06.13
08:37
речь идет о том что режим проведения устанавливается в обработчики перед загрузкой, но в этом обработчики объект еше не проинициализирован и какой у него будет свойство проведен - непонятно, источника тоже нет, и поэтому у него тоже нельзя усзнать что было
35 Defender aka LINN
 
14.06.13
08:39
(34) Нет, речь идет о том, что ты уставился в одну точку и даже пытаться думать не хочешь, ждешь, пока тебе все на блюдечке принесут.
36 Aleksey
 
14.06.13
08:39
(33) Первый вопрос не понял? в данном контексте речь как раз и о том, что источника нет, есть параметр Источник в виде строки, поэтому никто и не пытается при загрузки получить реквищиты источника


По второму вопросу - задать режим записи можно только в перед загрузки. В остальных обработчиках можно принудительно записать/провести
37 Aleksey
 
14.06.13
08:40
(35) я не автор
у меня такой проблемы нет
В моей КД всё прекрасно записывается и проводится


Выпад в мою сторону не понял.
38 Defender aka LINN
 
14.06.13
08:41
(36) "задать режим записи можно только в перед загрузки" - врать нехорошо
39 Aleksey
 
14.06.13
08:42
(38) Простите а можно и я вам не поверю
40 Defender aka LINN
 
14.06.13
08:42
(37) У вас ники похожие :)
41 Defender aka LINN
 
14.06.13
08:42
(39) Нельзя, т.к. я истинно прав
42 Aleksey
 
14.06.13
08:45
40) ники похожу у нас с @Alekseyy

(41) цитату из справки или ссылку можно где еще можно задать режим

Судя по справки режим задается в двух местах это перед загрузкой объекта в локальном и глобальном обработчике
43 Defender aka LINN
 
14.06.13
08:47
(42) Смотрю, намек про то, что это надо делать там, где выгружаешь, не уловлен...
44 Aleksey
 
14.06.13
08:50
(43) Нет, не уловил, ибо не понимаю как в ситочнике, которые ничего не знает об объекте приемника можно задать режим проведения.
45 Aleksey
 
14.06.13
08:50
* режим хаписи
46 Defender aka LINN
 
14.06.13
08:51
(44) Че это не знает? Объект именно там формируется.
47 Aleksey
 
14.06.13
08:51
К примеру после загрузки у меня есть "ПараметрыОбъекта" - Соответствие, в котором хранятся дополнительные параметры переденные для данного объекта из источника в приемник.

Но ведь после загрузки нельзя задать режим записи
48 Альбатрос
 
14.06.13
08:52
(43)(44) Да, при выгрузке тоже можно задать режим записи.
И источник доступен как объект. Проверяю.
49 Альбатрос
 
14.06.13
08:52
+(48) *Перед выгрузкой
50 Aleksey
 
14.06.13
08:52
(46) чего?

После загрузки
Условия возникновения события
Только для платформы V8.
Событие выполняется после прочтения и установки атрибутов объекта из файла, но до его записи в информационную базу. Возможна модификация загруженного объекта.
51 Defender aka LINN
 
14.06.13
08:56
(50) Того. В источнике идет запись в XML-файл объекта. При этом он может как таковой даже не существовать, программист его может сам собрать из говна и палок. В приемнике оббъект тупо считывается и заполняется. Да, модифицировать его при загрузке можно, но основное формирование происходит при выгрузке.
52 ZanderZ
 
14.06.13
08:59
(49) попробуй (23) должно взлететь..
53 Aleksey
 
14.06.13
09:01
Речь вроде бы о режиме запуска, а не о формирования файла
54 Альбатрос
 
14.06.13
09:08
Вообщем, в Перед Выгрузкой вот так не пошло:
Если Источник.Проведен тогда
    РежимЗаписи = "Проведение";
КонецЕсли;
55 kosts
 
14.06.13
09:18
(54) Разбирайся с отложенным проведением, т.к. проведение сразу при записи по любому не делается.
Вот код из обработки обмена

Если НужноЗаписатьОбъект Тогда

   Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
       
       ЗаписатьИнформациюОбОтложенныхДвижениях(Объект.Ссылка, Объект.Дата);
                                                       
   Иначе
       
       УдалитьСсылкуНаДокументИзОтложенныхДвижений(Объект.Ссылка);    
                               
   КонецЕсли;
   
КонецЕсли;
56 sttt
 
14.06.13
09:39
еще можно через Подключаемые обработки
после загрузки данных
ДопОбработки.Перепроведение...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой