пометка на удаление элементов подчиненного справочника #371758


#0 by Малиночка
Привет.подскажите пожалуйста как сделать чтобы при отменен проведения документа помечались на удаление записи подчиненного спавочника ШтатноеРасписание (он подчинен справочнику Подразделение) КонецПроцедуры     и как сделать запрет на повторный ввод должности, уже существующей в выбранном подразделении
#1 by TM
Пока СпрШтатноеРасписание.ПолучитьЭлемент=1, наверное, а не Пока СпрШтатноеРасписание.ТекущийЭлемент=1
#2 by Малиночка
нет, не в этом ошибка
#3 by Малиночка
это я описалась((
#4 by TM
Ну, значит Вы лучше меня знаете, в чем ошибка. Но я, например, не вижу цикла, по элементам подчиненного справочника. А Вы видите?
#5 by Asmody
даже с учетом поправки вот это СпрШтатноеРасписание.НайтиПоРеквизиту("Должность",ТекущийДокумент,)=1 разрушает весь цикл напрочь
#6 by Малиночка
а где он должен быть?
#7 by Малиночка
ну как я понимаю мне надо найти должность? или я неправа?
#8 by TM
До этого мы еще не добрались :). Мне вообще непонятно, что нужно сделать. И для чего Вопрос в якобы цикле. И почему реквизит "Должность" имеет тип "Документ".   Но не будем перепрыгивать через несколько квестов основной сюжетной линии.
#9 by Малиночка
а сделать надо при отменен проведения пометить в справочнике штатное расписание все то что было введено текущем документом
#10 by TM
Боюсь разочаровать. Термос не знает, какая температура на улице. Справочник не знает, каким документом (и документом ли) вводили строку (за исключением значений переодических реквизитов, изменяемых документам, но это не наш случай).
#11 by Asmody
я думаю, что без описания структур справочника ШтатноеРасписание telepat.dll дальше работать не сможет
#12 by Михей
ужасный код, замечания: 1. При проведении нельзя создаваить новые элементы справочника, можно менять периодичесие значения это да. 2. Нельзя задавать при отмене Вопросы так как вывполняется транзакция, ты блокируешь всех! 3. Нельзя юзать метод Записать без Попытки Исключения, а то и транзакцию заюзать при необходимости, вдруг кто то проводит такой же документ с тобой параллельно.
#13 by TM
Да понятно всё. Воссерманаъ звать не нужно. Коллега програмно в модуле дока создает элементы справочника. И хочет програмно же при отмене проведения поудалять их. Но вот как ей помочь не плодя лишних сущностей, как то ссылка в элементе справочника на док или ссылка в ТЧ дока на элемент справочника я не знаю, увы.
#14 by Asmody
[1. При проведении нельзя создаваить новые элементы справочника] - это почему еще? [транзакцию заюзать] - сам же сказал, что [вывполняется транзакция]. Вложенные транзакции в 1С конечно возможны, но толку от них никакой.
#15 by Малиночка
в документе в ТЧ Должность ссылается на справочник Должности
#16 by Asmody
когда я вижу строку типа такой, какая в , то я обычно надеюсь на адекватность ее писавщего в плане использования синтаксиса хотя бы. Но реквизит "Должность" типа "Документ" меня очень сильно смущает...
#17 by Михей
Транзакцию в смысле есе у тебя 52000 строк в доке, ты начинаешь его проводить, у тебя создаеться 51999 элементов а на последнем у тебя вылетает ошибка. И что получаеццо? Недоделанный док.
#18 by Михей
+ и пользователь начинает опять нажимать Провести
#19 by Asmody
т.е. я правильно понимаю, что в документе в ТЧ есть реквизит "Должность" типа Справочник.Должности, и при этом в справочнике ШтатноеРасписание есть реквизит "Должность" тоже типа Справочник.Должности? Что будет, если я создам документ, как-то заполню его ТЧ, проведу, потом сделаю "Скопировать документ", и полученную копию снова проведу? Точнее, не что будет (это и так понятно), а как _должно_быть_?
#20 by Малиночка
нет ссылки на документ которым была введена эта должность в справочник, правильно?
#21 by Asmody
нет. можно добавить реквизит, тогда проще будет.
#22 by Злобный Фей
Не-не-не-не-не. При таких познаниях автора сабжа в 1С как раз 100% прав
#23 by Asmody
но я вообще-то не на это намекал. если я проведу скопированный документ, то в штатном расписании появятся по две одинаковые должности. я думаю, это не совсем то, что задумывалось, так?
#24 by Asmody
+ ой, прочитал еще раз , оказывается это последняя строка вопроса :)
#25 by Малиночка
да,мне по две одинаковые должности не надо
#26 by Малиночка
исправила код на
#27 by Малиночка
но что должно быть вместо этой строки не понимаю Если СпрШтатноеРасписание.НайтиПоРеквизиту("Должность",ТекущийДокумент,)=1  Тогда
#28 by Злобный Фей
Неее, опять фигня
#29 by Злобный Фей
#30 by Малиночка
точно фигня, так должно быть Процедура ОбработкаУдаленияПроведения
#31 by Малиночка
(((так тоже неверно(((
#32 by Злобный Фей
Стоп. Что в документе есть должность? У тебя в есть строчка: А в У тебя это уже ТекущийДокумент; Где правда? И не надо СпрПодразделения. Убери оно вообще отсюда. И вопрос убери, ибо в транзакции вопрос не уместен, доки можно проводить/распроводить и не интерактивно, а обработкой, например
#33 by Малиночка
да, в в первой процедуре так СпрШтатноеРасписание.Должность=Должность; счас исправила на
#34 by Малиночка
а когда Подразделения убираю он мне ошибку выдает
#35 by Малиночка
э-эх...пометку на удаление все равно не ставит((
#36 by Злобный Фей
Код из пробовала?
#37 by Малиночка
да, вот счас его по второму разу гоняю
#38 by Злобный Фей
Может СпрШтатноеРасписание.Должность и Должность в документе - разные сущности?
#39 by Малиночка
у обоих тип Справочник.Должности
#40 by Малиночка
я значит записала должности в справочник Должности, в документе выбираю из справочника. провожу. все ок, а когда отменяю проведение. то пометку не ставит
#41 by Злобный Фей
Все должно работать. Мадам, вы что-то недоговариваете..
#42 by Малиночка
ну как? еще разок: справочник штатное расписание должность тип справочник.должности документ                      должность тип справочник.должности код: СпрШтатноеРасписание=СоздатьОбъект("Справочник.ШтатноеРасписание");
#43 by Злобный Фей
1. Открой справочник Подразделения. 2. Найди подразделение из твоего тестового документа. 3. Открой подчиненный справочник ШтатноеРасписание для этого элемента 4. Найди там элемент, где Должность = твоей должности из документа
#44 by Filin396
Что это? ИспользоватьВладельца(Подразделение.ТекущийЭлемент) Чему подчинен справочник ШтатноеРасписание?
#45 by Малиночка
ну, нашла, открывается спавочник должности потом
#46 by Малиночка
справочнику Подразделения
#47 by Filin396
А зачем тогда перебирать подразделения? Я так понял у тебя в доке оно уже указано?
#48 by Злобный Фей
??
#49 by Filin396
Кроме того - если уж он подчиненный, то одна должность штатного расписания может присутствовать в разных подразделениях. И ты их все убъеш.
#50 by Малиночка
, да, в доке указано.а как тогда, справочник то подчиненный
#51 by Filin396
в все было правильно с подразделением.
#52 by Малиночка
ну а как мне тогда сделать чтобы действие документа отменялось, соответственно как я понимаю вводимые строки должны удаляться или я неправа?
#53 by Filin396
Както так
#54 by Filin396
Окромя того надо при проведении проверять, нет ли уже такого элемента в справочнике. А то разными доками можно дублировать. Насколько я понял этого недолжно быть.
#55 by Filin396
Ой, про тз убери, это не отсюда -)))
#56 by Малиночка
я так делала без верхних строк, у меня вот такая ошибка Пока СпрШтатноеРасписание.ПолучитьЭлемент<<?>>)=1 Цикл       {Документ.ВводШтатнойДолжности.Модуль Документа}: Выражение должно иметь логический тип При проверке модуля обнаружены синтаксические ошибки!
#57 by Filin396
Строчки не нужны.
#58 by Filin396
Скобочка лишняя, сорри.
#59 by Cthulhu
Нет слов - одни слюни... 1) создали и провели документ - создались элементы справочника; 2) поюзали эти элементы справочника в других объектах данных, ну типа заполнили штатное расписание; 3) распровели документ из п.1... если по-вашему за подобный код не нужно убивать на месте из рогатки - то вы глубоко и безвовзвратно добрый мякиш.. хотя в принципе я наверное тоже мякиш... если таки припекло, делайте так: 1) добавляете в многострочную часть реквизит "ПозицияШтатногоРасписания" типа "Справочник.ШтатноеРасписание". 2) модуль документа, в процедуре "ОбработкаПроведения": после каждого "СпрШтатноеРасписание.Записать;" делайте "ПозицияШтатногоРасписания=СпрШтатноеРасписание.ТекущийЭлемент;" 3) модуль документа, в процедуре "ОбработкаУдаленияПроведения": перебирайте строки, и по каждой строке: "Если СпрШтатноеРасписание.НайтиЭлемент(ПозицияШтатногоРасписания)=1 Тогда СпрШтатноеРасписание.Удалить; ПозицияШтатногоРасписания=""; КонецЕсли;" --- и пользуйтесь на здоровье этой корректной реализацией вопиюще некорректного решения невнятно сформулированной и совсем не проработанной проблемы.. ЗЫ: я тут подумал.. я наверное не от доброты это, а исключительно в злобных целях... ))))
#60 by Злобный Фей
А еще у нее в из-за отсутствия отступов не заметно, что там вообще ТЧ есть
#61 by Filin396
Дауж, добрый ты -))) Пока человек не споткнется сам, толком не поймет. Задача была конкретная, мысль понятна, спросили про реализацию - реализовали. Пусть пробует -)))
#62 by Малиночка
да,я уж и не знаю больше как пробовать(((а как в 59 нельзя мне так
#63 by Filin396
Как в непошло?
#64 by Малиночка
нет
#65 by Cthulhu
: тебе - можно.
#66 by Filin396
Зачем вобще такая байда? Создавать справочники в документах - это, как уже доходчиво объяснил    Cthulhu, не есть хорошо. Может както по другому?
#67 by Малиночка
у меня задание такое
#68 by Filin396
Прям так и задали - сделать документ, чтобы создавать элементы справочника?
#69 by Малиночка
Для каждого подразделения (следовательно, нужно создать справочник Подразделения) необходимо вести список вакантных и занятых должностей (создать справочник Должности) с указанием количества вакантных и занятых ставок (создать справочник Штатное расписание, подчиненный справочнику Подразделения, с реквизитами Должность (тип - справочник Должности), Количество ставок, Количество вакантных ставок, Количество занятых ставок). Для ввода новой штатной должности в штатное расписание и для изменения штатного расписания необходимо разработать специальные документы (Ввод штатной должности и Изменение штатного расписания). Документ "Ввод штатной должности" должен только вводить в справочник Штатное расписание новую должность с изначальным общим количеством ставок, при этом должен заполняться тем же количеством ставок реквизит Количество вакантных ставок. В модуле документа должен быть реализован запрет на повторный ввод должности, уже существующей в выбранном подразделении. В случае отмены проведения документа - добавленные строки должны удаляться
#70 by Малиночка
да
#71 by Cthulhu
: нет.
#72 by Filin396
Ужос. Вобще для этого есть регистры там всякие, для хранения разных количеств в разных разрезах. Ктож тебе такое задал? А что не заработало в ?
#73 by Cthulhu
: "нет" - в смысле не удалять... а, я понял. я теперь тоже если буду давать задание - то только такое, которое вразрез противоречит правилам здорового рассудка и корректности. чтобы не подсказывали тут некоторые, застревая понималкой на тупом "з-а-ч-е-ммм???" )))
#74 by Санта Клаус
полдня уж эту хрень мусолите, не надоело?
#75 by Filin396
Ну вот видиш, оказывается именно так и надо человеку, куда деваться -)))
#76 by Малиночка
странно, глюк что ль был?а счас работает в 1с по новой зашла когда
#77 by Filin396
Да ладно, три часа всего. Щас к сотке подберемся - народ подтянется -))
#78 by Малиночка
заработало наверное потому что Санта Клаус пришел
#79 by Малиночка
спасибо вам всем за помощь
#80 by Filin396
Рано радуешся. Теперь тебе проверок тьму втыкать в проведение. На предмет присутствия уже в справочнике, пометки уже на удаление и т.д.
#81 by Малиночка
теперь буду думать как поставить запрет на ввод должности
#82 by Filin396
Правильно, надо прийти, всех построить - и все заработает -))
#83 by Filin396
+ запрет на смену подразделения в проведенном документе, и фиг знает на что еще. Плохое у тебя задание короче.
#84 by Санта Клаус
на работы на три строчки, атакую демагогию развели
#85 by Filin396
Народ от таких задач плющит, долго втыкали -)
#86 by Малиночка
надеюсь что получится у меян завтра остальное, а то опять придется за помощью к вам обращаться
#87 by Filin396
Удачи !-)
#88 by Малиночка
спасибо
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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