Имя: Пароль:
1C
1C 7.7
v7: работа с подчиненными документами
,
0 e-9
 
13.08.14
12:51
Коллеги, подскажите: можно ли метод документов "Выбрать" как-то так настроить, чтобы он работал аналогично пункту меню Действия - Подчиненные документы? Дело в том, что у меня при таком:
//подсказываем парсеру мисты, что код начинается именно тут, а не раньше;)
ДокПодчиненные = СоздатьОбъект("Документ");
Если ДокПодчиненные.Выбрать("Приказы на оплату по среднему","Журнал.Подчиненные",ТекущийДокумент())>0 Тогда
    //работаем
КонецЕсли;

- открывается выборка, но никакие операции не доступны - тулбар пустой! (точнее, есть две недоступные иконки - Интервал и Найти по номеру).
Можно только выбрать какой-то док, и обработать потом программно.
А вот при "ручном" варианте, через меню, в тулбаре куча иконок доступных действий...
1 e-9
 
13.08.14
12:55
и почему-то, если я даже пытаюсь программно открыть выбранный юзером подчиненый док - форма не открывается:
//тут код
Если ОткрытьФорму(ДокПодчиненные,,0)=1 Тогда
    сообщить("открыли"); //ничего не сообщается и не открывается - хотя в отладчике вижу, что ДокПодчиненные задан правильно
КонецЕсли;
2 e-9
 
13.08.14
12:57
(код из (1) вставлен в (0) вместо строки "//работаем")
3 Chum
 
13.08.14
13:02
ДокПодчиненные.ТекущийДокумент() ?

+ можно указать конкретную форму, иначе берется та, что задана по умолчанию для выбора
4 Ёпрст
 
13.08.14
13:14
если нужны кнопочки и прочий хлам, то ОткрытьПодбор - далее, лепи че хошь, отборы и т.дд.
5 NS
 
13.08.14
13:14
Если ДокПодчиненные.Выбрать("Приказы на оплату по среднему"
Это что такое?
6 NS
 
13.08.14
13:15
Виноват, торможу.
7 NS
 
13.08.14
13:18
Можно через ОткрытьФормуМодально()
8 e-9
 
13.08.14
13:49
(3) точно!! сенкс) (увы, сказывается не систематичность изучения платформы)
(4) помучаю
(7) одно...то есть, аналогично не модальному варианту - тоже надо указать .ТекущийДокумент() (см. (3))
9 e-9
 
14.08.14
11:10
туповатый вопросик (даже отдельную тему заводить не буду): а как ГРАМОТНО ПОВТОРНО перебрать выборку документов???....
Вот я ее открыл: "ДокПодчиненные.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент())"
потом пробежался "Пока (ДокПодчиненные.ПолучитьДокумент() = 1) Цикл", глянул - если есть среди них проведенные "Если ДокПодчиненные.Проведен() = 1 Тогда", прервал выполнение, сообщив, что родительский док уже нельзя изменять/удалять, не разорвав связь.
А если нет ни одного проведенного среди подчиненных - то всех их надо удалить. Т.е., надо еще раз пробежаться по выборке. Это что, снова .ВыбратьПодчиненныеДокументы(...)??? Не нашел никакого "reset" среди методов документов....
10 ДенисЧ
 
14.08.14
11:10
(9) при обходе сразу пихай в список.
Если не понадобится - потом очистишь.
11 e-9
 
14.08.14
11:11
(10) так и думал.... но надеялся, что можно без мусорного списка обойтись можно.
спс
12 e-9
 
14.08.14
11:23
...а вообще, если рассуждать общефилософски - поделитесь, профессионалы, как вы выкручиваетесь в аналогичной ситуации?
То есть, в общем виде: имеем док (КП - "кадровое перемещение"), при проведении которого создается один или более (по числу захваченных месяцев в указанном там интервале С-ПО) подчиненных доков (ОС - "приказ на оплату по среднему") - записываются, но не проводятся! Потом, когда приходит время (конец месяца), расчетчик смотрит в один из этих подчиненных доков, что-то там довводит и проводит. При этом в Журнал Зарплата вводится запись.
До этого момента, кадровик, в принципе, может править КП - и при перепроведении, ранее созданные подчиненные ОС просто удаляются, процедура создания подчиненных доков повторяется.
А вот с момента проведения какого-то подчиненного ОС, понятно, просто так править КП нельзя - либо делать проводку суперинтеллектуальной, либо вообще запретить.
Лично меня все эти грабли напрягают - но я не придумал пока иной модели перепроведения родительского дока....