КД можно ли отменить выгрузку (или загрузку) после выгрузки объектов #675110


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

В этой группе 1С