|
КД 2. Перегрузка с проведением | ☑ | ||
---|---|---|---|---|
0
live in sky dreams
11.01.18
✎
02:15
|
Как задать в КД проведение документа при перегрузке?
Есть где-либо пример? Ткните носом в ссылку плиз. БП 3. Задача - перегрузить доки за определенный период. Если все оставить по умолчанию - доки перегружаются, выглядят проведенными, но движений нет. Как указать системе проводить их? Интуитивно понимаю, что нужно использовать глобальное "После загрузки данных". Но что там написать не понимаю. Какие переменные доступны и т.д. |
|||
1
Franchiser
гуру
11.01.18
✎
02:31
|
После загрузки объекта Объект.Записать(режим записи.проведение)
Или же как рекомендуют 1с создать параметр конвертации куда писать список объектов, которые требуется провести после загрузки, обойти эту коллекцию и провести документы. |
|||
2
live in sky dreams
11.01.18
✎
02:32
|
После загрузки объекта он уже заполнен данными разве?
|
|||
3
live in sky dreams
11.01.18
✎
02:34
|
Я пытался так делать. сразу же ошибка - не заполнено что то в ведомостях, хотя там должно быть все заполнено - иначе бы они не провелись.
я так понял - после загрузки объекта сам объект загружен, но данными еще не заполнен и рановато его проводить... нет? |
|||
4
live in sky dreams
11.01.18
✎
02:51
|
(1) а можно подробнее? Как и где рекомендуют? Это сайт какой то или статья? Где можно ознакомиться с подробным разбором этого вопроса?
|
|||
5
igorPetrov
11.01.18
✎
07:25
|
(3) Ну, так заполни чего не хватает. В чем вопрос?
|
|||
6
azt-yur
11.01.18
✎
08:13
|
http://1clancer.ru/article/provedenie_dokumentov_v_baze-priemnike_pri_perenose_konvertatsiya_dannykh_640
одна из первых ссылок в яндексе |
|||
7
Asakra
11.01.18
✎
09:06
|
в ПКО ПередЗагрузкой
РежимЗаписи = "Проведение"; |
|||
8
Asakra
11.01.18
✎
09:07
|
(0)
Условия возникновения события Только для платформы V8. Событие выполняется перед загрузкой объекта. Возможен отказ от загрузки, например, в случае невыполнения каких-либо условий. Загружаемый в БД объект еще не инициализирован. Параметры: Отказ - Булево - Если Истина, то объект загружен не будет. Нпп - Число. Уникальный порядковый номер объекта в файле. Источник - Строка. Представление объекта источника. Пустая строка, если представление объекта источника не выгружалось. ИмяПравила - Строка. Имя правила конвертации. Пустая строка, если правила конвертации не используются. Правило – строка таблицы значений. Ссылка на правило конвертации объекта. ГенерироватьНовыйНомерИлиКодЕслиНеУказан – Булево. Если Истина и номер или код объекта не заданы, то перед записью будет сгенерирован новый номер или код. ТипОбъектаСтрокой - Строка. Тип загружаемого объекта. Например: СправочникСсылка.Номенклатура или РегистрСведенийЗапись.ЦеныТоваров ТипОбъекта - Значение типа Тип. Тип загружаемого объекта. НеЗамещатьОбъект - Если для данного параметра установить значение Истина, то объект идентифицированный при загрузке (т.е. найденный в информационной базе приемнике по значению синхронизирующих полей) не будет изменен/замещен. РежимЗаписи - Строка. Режим записи документа. Имеет смысл только если тип объекта приемника "Документ". Возможные значения "Запись", "Проведение", "ОтменаПроведения" РежимПроведения - Строка. Режим проведения документа. Имеет смысл только если тип объекта приемника "Документ". Возможные значения "Неоперативный", "Оперативный" Пример: РежимЗаписи = "ОтменаПроведения"; |
|||
9
Сияющий Асинхраль
11.01.18
✎
09:41
|
(7) Хороший совет, но не очень работоспособный, любая проблема с проведением документа (например, он находится в закрытом периоде, не хватает прав, не хватает остатков, превышено ограничение по кредиту) приводит к прерыванию загрузки ВСЕХ объектов, поэтому вариант с параметр из (1) самый работоспособный...
|
|||
10
Мандалай
11.01.18
✎
10:05
|
http://v8.1c.ru/metod/books/book.jsp?id=121
Ищи эту книгу на просторах рунета. Если будет она - ничего другого и не надо. |
|||
11
Asakra
11.01.18
✎
10:29
|
(9) без транзакций не будет прерываний.
тут все зависит от конкретной задачи... сколько объектов, разовая загрузка или нет, что за пользователь будет грузить и т.п. |
|||
12
Сияющий Асинхраль
11.01.18
✎
22:35
|
(11) Ты сам лично пробовал? Или исключительно теорией руководствуешься? То бишь как должно быть, а не как есть на самом деле? Так вот на самом деле, повторю еще раз, любая проблема с проведением документа, который должен провестить вырубает дальнейшую загрузку. Если бы было иначе народ не придумывал варианты из (1), а они, увы, придуманы не от того, что народу поизвращаться хочется, а потому что это дает вариант устойчивой загрузки, даже в том случае, если какой-то документ не может быть проведен...
|
|||
13
Franchiser
гуру
14.01.18
✎
23:24
|
(4) точно не помню где встречал, возможно в курсе Гилева
|
|||
14
Franchiser
гуру
14.01.18
✎
23:25
|
Во многих типовых переносах так тоже сделано
|
|||
15
Сияющий Асинхраль
15.01.18
✎
01:07
|
Вот так это делается для обычных форм:
http://catalog.mista.ru/public/21069/ Подозреваю, что для управляемых для случая КД2 надо делать не таблицу значений, а массив, единственно, массив придется сортировать самому, в этом случае с ТЗ проще, а так все должно быть примерно также |
|||
16
Сияющий Асинхраль
15.01.18
✎
01:09
|
+(13) У Гилева в одном из курсов был еще один способ, но он мне не понравился, Гилев предлагал наваять отдельную обработку и ей проводить, что чисто по-моему конечно решением является, но решением кривоватым...
|
|||
17
d4rkmesa
15.01.18
✎
08:32
|
(0)
Конвертация_ПослеЗагрузкиОбъекта: Если ИмяТипаОбъекта = "Документ" Тогда //ДатаВводаОстатков = РегистрыСведений.ДатыВводаНачальныхОстатков.ДатаВводаНачальныхОстатков(Параметры.Организация); Если Параметры.ПроводитьДокументы И Объект.Проведен И (Объект.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить) Тогда ИмяОбъектаМетаданных = Объект.Метаданные().Имя; Если ИмяОбъектаМетаданных = "ВводНачальныхОстатков" Тогда Приоритет = 0; ИначеЕсли (ИмяОбъектаМетаданных = "СчетФактураВыданный")или(ИмяОбъектаМетаданных = "СчетФактураПолученный") Тогда Приоритет = 2; Иначе Приоритет = 1; КонецЕсли; Если НЕ ОбъектНайден Тогда Объект.Проведен = Ложь; УстановитьОбменДаннымиЗагрузка(Объект, Истина); Объект.Записать(РежимЗаписиДокумента.Запись); ОбъектМодифицирован = Ложь; КонецЕсли; Если Приоритет <> 2 Тогда НоваяСтрока = Параметры.ТаблицаДокументов.Добавить(); НоваяСтрока.Документ = Объект.Ссылка; НоваяСтрока.ДатаВремя = Объект.Дата; НоваяСтрока.Приоритет = Приоритет; КонецЕсли; КонецЕсли; КонецЕсли; Конвертация_ПослеЗагрузкиДанных: ВсегоСтрок = Параметры.ТаблицаДокументов.Количество(); Если ВсегоСтрок > 0 Тогда Параметры.ТаблицаДокументов.Свернуть("Документ,ДатаВремя,Приоритет"); Параметры.ТаблицаДокументов.Сортировать("Приоритет,ДатаВремя Возр"); Ин = 0; Для каждого Строка из Параметры.ТаблицаДокументов Цикл Объект = Строка.Документ.ПолучитьОбъект(); Объект.ОбменДанными.Загрузка = Ложь; Попытка Объект.Записать(РежимЗаписиДокумента.Проведение); Мсг = Новый СообщениеПользователю; Мсг.Текст = "Документ проведен: " + Строка(Объект.Ссылка); Мсг.КлючДанных = Объект.Ссылка; Мсг.Сообщить(); Ин = Ин + 1; Исключение Мсг = Новый СообщениеПользователю; Мсг.Текст = "Документ НЕ Проведен : " + Строка(Объект.Ссылка) + "" + ОписаниеОшибки(); Мсг.КлючДанных = Объект.Ссылка; Мсг.Сообщить(); КонецПопытки; КонецЦикла; Мсг = Новый СообщениеПользователю; Мсг.Текст = "Из "+СокрЛП(Параметры.ТаблицаДокументов.Количество())+" документов проведено " + СокрЛП(Ин) +" объектов"; Мсг.Сообщить(); Иначе Мсг = Новый СообщениеПользователю; Мсг.Текст = "Из "+СокрЛП(Параметры.ТаблицаДокументов.Количество())+" документов проведено 0 объектов"; Мсг.Сообщить(); КонецЕсли; Параметры.Удалить("ТаблицаДокументов"); Топорно, но работает. |
|||
18
Asakra
16.01.18
✎
10:48
|
(12) Конечна. Оба способа использую. Все зависит от ситуации!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |