|
КД можно ли отменить выгрузку (или загрузку) после выгрузки объектов | ☑ | ||
---|---|---|---|---|
0
5jam
31.07.13
✎
11:39
|
КД 2.1.5.1
Из БП в УАТ пользователь выгружает номенклатуру. Чтобы пользователь по ошибке не выгрузил весь справочник хотелось бы установить ограничение: если количество выгружаемой за раз номенклатуры больше 30, то не выгружать (или хотябы не загружать). Добавил Параметры.ТаблицаНоменклатуры и заносил туда Номенклатуру ПослеВыгрузки затем считаю ее там и пытаюсь как то предотвратить выгрузку или хотя бы загрузку. Если сделать Отказ = Истина ПослеВыгрузкиДанных или ПослеВыгрОбъекта, то выгрузка прерывается, но выгруженные до этого объекты все же загружаются в Приемник. Передавал параметр в Приемник, так они доступны только ПослеЗагрузкиДанных (когда они уже нафиг не нужны) Что подскажите? |
|||
1
5jam
31.07.13
✎
11:45
|
По моему в КД сделать не получится. Придется переделывать обработку выгрузки.
|
|||
2
GenV
31.07.13
✎
11:46
|
(0) Жуть задача. Как пользователь отбор накладывает? Или он никогда не сможет выгрузить номенклатуру с номером п/п 31?
|
|||
3
5jam
31.07.13
✎
11:52
|
(0) Отбор стандартный, в табличном поле ПостроительОтбор.
Надо чтобы выгрузка (или загрузка) отменялась, если выгружено более 30 элементов спр Номенклатура Можно попробовать ПередВыгрузкой получить выборку запросом. Надо туда отбор передать... |
|||
4
Naumov
31.07.13
✎
11:54
|
добавь числовой параметр и инкрементируй его, как превысится лупи отказы
|
|||
5
GenV
31.07.13
✎
11:55
|
4+ в обработчике ПВД "Перред выгрузкой". Он последовательно вызывается при выгрузке каждого объекта. После достижения значения Отказ = Истина;
|
|||
6
5jam
31.07.13
✎
11:58
|
(4)(5) Да, но пользователь несмотря на сообщения при выгрузке попробует загрузить файл. При загрузке возникает ошибка, но перед этим загружается все, что успело выгрузиться до Отказа.
|
|||
7
GenV
31.07.13
✎
11:58
|
(6) В файле будет только 30 номенклатур ...
|
|||
8
5jam
31.07.13
✎
12:00
|
(7) выгруженных юзером по ошибке. А желательно полностью предотвратить загрузку ошибочных данных.
|
|||
9
dk
31.07.13
✎
12:01
|
прикольно будет, если попадется документ с более 30 товарами
|
|||
10
5jam
31.07.13
✎
12:01
|
Не пойму зачем 1с сделали в КД, что Параметры доступны только ПослеЗагрузкиДанных
|
|||
11
5jam
31.07.13
✎
12:01
|
(9) ПВД одно - Номенклатура
|
|||
12
Жан Пердежон
31.07.13
✎
12:02
|
в ПВД код пиши какой хочешь
|
|||
13
GenV
31.07.13
✎
12:02
|
98) :) Так ему нужно не больше 30 выгружать или что? Или другое хотел? Например, вообще не выгружать, если номенклатур больше 30?
|
|||
14
Naumov
31.07.13
✎
12:03
|
Ну для гарантии добавь параметр передаваемый в загрузку, его после превышение возводи в какое-то значение, по которому перед загрузкой будешь в отказ уходить
|
|||
15
Naumov
31.07.13
✎
12:03
|
Я вот одно не пойму: это ж все на поверхности, неужели так трудно?
|
|||
16
GenV
31.07.13
✎
12:05
|
(14) Т.е. он хотел не загружать больше 30?
ЗЫ Я так понял ты догадался |
|||
17
5jam
31.07.13
✎
12:05
|
Уточню задачу: надо, чтобы вообще не было загрузки, если польз попытался выгрузить больше 30 Номенклатур
|
|||
18
Naumov
31.07.13
✎
12:05
|
(17) Читай (14)
|
|||
19
Naumov
31.07.13
✎
12:06
|
хотя параметры надо до выгрузки инициализировать.
ну тогда можешь после предела дописать кривой XML-кусок, чтобы файл стал нечитаемым :) |
|||
20
5jam
31.07.13
✎
12:07
|
(18) :) так ведь Параметры ПередЗагрузкой недоступны. Только ПослеЗагрузкиДанных
|
|||
21
Aleksey
31.07.13
✎
12:07
|
(66)
написать а=20/0; и тогда будет ошибка и файл не сформируется |
|||
22
Aleksey
31.07.13
✎
12:09
|
посмотри в пко номенклатуры параметр ВыгруженныеОбъекты
Обработчики "Правила конвертации объектов" Перед выгрузкой Условия возникновения события Событие выполняется перед выгрузкой каждого объекта в файл обмена, не зависимо от того как выгружается объект по правилу выгрузки данных либо потому что на него есть ссылки. Событие вызывается, когда узел объекта приемника еще не создан и недоступен. Возможен отказ от выгрузки, например, в случае невыполнения каких-либо условий. Параметры: ВыгруженныеОбъекты - Соответствие. Содержит перечень выгруженных по данному правилу объектов. Ключом соответствия является параметр КлючВыгружаемыхДанных, значением - число-номер объекта в файле. Может использоваться для проверки - выгружен ли объект по ссылкам из других объектов. В целях оптимизации, при выгрузке больших массивов данных, значение параметра может быть очищено - например в обработчике ПослеОбработкиПравилаВыгрузкиДанных |
|||
23
5jam
31.07.13
✎
12:09
|
(19) Интересная идея. Пробовал ПослеВыгрузкиДанных УдалитьФайлы(ИмяФайлаОбмена);
Но похоже файл заблокирован |
|||
24
GenV
31.07.13
✎
12:09
|
По идее при стандартном алгоритме при выгрузке ссылок в "Перед выгрузкой" ПВД должна быть доступна переменная "ВыборкаДляВыгрузкиДанных" с типом выборка из результата запроса. А у неё есть метод количество
|
|||
25
Aleksey
31.07.13
✎
12:10
|
(23) да заблокирован, приходилось дописывать выгрузку чтобы можно было работать с файлом
|
|||
26
Aleksey
31.07.13
✎
12:10
|
(24) там будет список документов
|
|||
27
GenV
31.07.13
✎
12:12
|
(26) У него же только один справочник
|
|||
28
Naumov
31.07.13
✎
12:12
|
(0) А как пользователь может по ошибке назначить к выгрузке весь справочник? Убери это ПВД и его не выберут.
|
|||
29
GenV
31.07.13
✎
12:13
|
24+ В любом случае это можно решить на этапе выгрузке. Хоть самому отбор программно наложить на выборку. Код же есть.
|
|||
30
5jam
31.07.13
✎
12:29
|
(21) а=20/0;
Не пашет, это все равно, что Отказ = Истина. Ошибка вываливается, но то, что до ошибки выгружено в файл обмена успешно загружается в базу приемник (19) как это "после предела дописать кривой XML-кусок"? |
|||
31
5jam
31.07.13
✎
12:41
|
(24) В ПВД ПередВыгрузкой ВыборкаДляВыгрузкиДанных доступна, но ТипЗнч(ВыборкаДляВыгрузкиДанных): Не определено
|
|||
32
GenV
31.07.13
✎
12:42
|
Для типовой обработки УниверсальныйОбменДаннымиXML можно сделать так:
Если НЕ ЗначениеЗаполнено(Параметры.КоличествоЭлементов) Тогда Если Правило.ИспользоватьОтбор Тогда Параметры.КоличествоЭлементов = ПостроительОтчета.Результат.Выбрать().Количество(); Сообщить("Всего элементов: " + Параметры.КоличествоЭлементов); Иначе Сообщить("Выгрузка без отбора"); КонецЕсли; КонецЕсли; Если Параметры.КоличествоЭлементов > 30 Тогда Отказ = Истина; КонецЕсли; Сообщить(Объект); |
|||
33
Naumov
31.07.13
✎
12:50
|
(32) Этот отказ не отменит выгруженное до этого, а автор хочет именно всю выгрузку отменить.
|
|||
34
GenV
31.07.13
✎
12:52
|
(0) При выгрузке первого элемента определяется их общее количество. Если их общее количество больше 30, то не выгрузится не первый, не любой другой элемент выборки ...
|
|||
35
GenV
31.07.13
✎
12:52
|
(34)-(33)
|
|||
36
Naumov
31.07.13
✎
12:59
|
(34) У тебя есть способ встроить медиума в выгрузку?
|
|||
37
GenV
31.07.13
✎
13:02
|
(36) В смысле, я тебя не понял?
Автор выгружает только справочник номенклатура (11). Соотв. этот код не даст при установленном отборе выгрузить больше 30 позиций. Без отбора - пусть решает как поступать автор. |
|||
38
GenV
31.07.13
✎
13:03
|
37+ если позиций при отборе будет больше 30 - не выгрузиться ничего. Если меньше - каждая
|
|||
39
Naumov
31.07.13
✎
13:05
|
(37) Это откуда у тебя такая гипотеза по поводу того, что выгружается только справочник номенклатуры?
|
|||
40
GenV
31.07.13
✎
13:06
|
(39) Хм. Я в уже написал - (11)
|
|||
41
Naumov
31.07.13
✎
13:11
|
(40) НУ пропустил я этот пост.
Если код из (32) рабочий, то может сработать |
|||
42
GenV
31.07.13
✎
13:12
|
(41) Понятно. Код протестил сначала )
|
|||
43
Aprobator
31.07.13
✎
14:02
|
(0) в кд делается это на раз. Вон только что прописал выгрузку по 10000 элементов.
|
|||
44
5jam
01.08.13
✎
10:33
|
(32) Спасибо, магистр GenV
ПередВыгрузкой ПВД Номенклатура прописал следующий код и все удалось. Когда отбор отключен или количество номенклатуры превышает 30, выдается предупреждение, а в файл обмена не записывается ничего, кроме правил. КоличЭлементов = 0;
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |