Имя: Пароль:
1C
1C 7.7
v7: 1cv7 Проблема с вводом данных подчиненного справочника.... подробнее внутри
,
0 Джордж1
 
11.08.21
18:48
Имеются 3 справочника - Товар, Спецификации, НормыРасхода

Спецификации подчинена Товарам, а НормаРасхода Спецификациям


Проблема в чем. Встаем на существующий товар (Товар1) с существующей спецификацией (Спец1). В подчиненных справочниках все ОК.

Переходим на другой товар (Товар2) у которого спецификация не заведена.

Проблема что в этом случае справочник Владелец справочника НормыРасхода остается спозиционирован на спецификации Спец1 Товара1

Пользователи начинают заводить нормы - они привязываются непойми к какому элементу

Как отловить такую ситуацию?
1 серый КТУЛХУ
 
11.08.21
18:50
сверять "ИспользоватьВладельца()" с нужным значением в форме списка (или элемента) подчиненного справочника. устанавливать нужного.
2 серый КТУЛХУ
 
11.08.21
18:50
наверное можно и через контекст "снаружи"...
3 Джордж1
 
11.08.21
18:51
(1)как внутри формы понять какой нужный? счас картинку покажу
4 Джордж1
 
11.08.21
18:52
5 серый КТУЛХУ
 
11.08.21
19:12
охохонюшки. костылями только тогда. в "предпоследнем" справочнике.
открывать подчиненный только своей кнопкой - с сохранением его контекста в переменную модуля (например, мКонтекстФормыСпискаПодчиненногоСправочника) в процедуре, прописанной в формуле кнопки.
на морду - текстовый реквизит с функцией в формуле, в которой (в модуле формы) закодировать:
мКонтекстФормыСпискаПодчиненногоСправочника.Форма.ТолькоПросмотр(?(мКонтекстФормыСпискаПодчиненногоСправочника.ИспользоватьВладельца()=ТекущийЭлемент(),0,1))
6 серый КТУЛХУ
 
11.08.21
19:15
ЗЫ: хотя хз оно успеет обновиться или нет - тогда еще один костыль придумывать придется...
7 acanta
 
11.08.21
19:31
Нормы расхода в последних версиях были документами.
8 Смотрящий
 
11.08.21
19:36
(4) список открытых форм справочников в глобальную переменную (при закрытии удалять из списка)
при изменении строки справоника владельца смотреть список форм из глобальной переменной и переоткрывать форму
в форме ловить владельца в ПриПовторномОткрытии
9 Mikeware
 
11.08.21
19:50
А чего б не переписать по нормальному, без кучи окон?
10 серый КТУЛХУ
 
11.08.21
21:13
Только что проверил - (5) отлично работает.
11 Джордж1
 
11.08.21
21:41
(5)спасибо, попробую
(9)без кучи окно - это с ТЗ на форме чтоли?
12 HawkEye
 
11.08.21
22:24
(11) можно обработку с ТЗ на форме, можно документ сделать служебный, можно модально открыть...
но вообще сейчас пощелкал.. отображение в третьем справочнике меняется при изменении в первом, а описанный тобой эффект проявляется только если в третьем начать редактировать и перейти на первый, тогда да в третьем будет не родной потомок, но это все пока строка в редактировании...
13 Джордж1
 
11.08.21
22:28
(12)"отображение в третьем справочнике меняется при изменении в первом," - а вы попробуйте вариант когда во втором справочнике нет элемента

"а описанный тобой эффект проявляется только если в третьем начать редактировать и перейти на первый," - у меня иногда вообще записи в 3-м справочнике получаются без владельца. Сэмулировать пока не смог

А вот с модальностью интересный вариант
14 серый КТУЛХУ
 
11.08.21
23:48
(13): а ты попробуй в третьем в списке при пустом вротоп - добавить но не завершать редактирование строки - вернуться во второй и в нем добавить и сохранить - вернуться в третий и там закончить редактирование нового элемента с сохранением..
(с режимом "редактировать в списке")
15 HawkEye
 
12.08.21
00:04
(13) на скорую руку набросал, пару раз протестил, вроде норм.. если во втором пусто, то третье закрывается, если во втором есть чё, то по новый открывается...

во втором пишешь:
Процедура ПриВыбореВладельца(вхЭлемент)  
   ОткрытьФорму("Справочник.Спр3", вхЭлемент);
КонецПроцедуры    


в третьем пишешь:
Перем НужнаПроверка;

Процедура ПриПовторномОткрытии()  
    НужнаПроверка = 1;
КонецПроцедуры

Процедура ПриОткрытии()  
    НужнаПроверка = 0;
КонецПроцедуры  

Функция ПроверкаВладельца()
    Если НужнаПроверка = 1 Тогда
        Если форма.параметр <> ИспользоватьВладельца().Владелец Тогда  
            Спр = СоздатьОбъект("Справочник.Спр2");
            Спр.ИспользоватьВладельца(форма.параметр);
            Если Спр.ВыбратьЭлементы(1) = 0 Тогда
                Форма.Закрыть();
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    Возврат "";    
КонецФункции


и на форму третьего кидаешь функцию ПроверкаВладельца()
16 Mikeware
 
12.08.21
08:07
(11) зачем с ТЗ - можно и с табличным полем. точнее, с двумя (для спецификации и нормы расхода).
можно дерево сделать, корень- номенклатура, 1-й уровень спецификации, 2-й - нормы.
17 Джордж1
 
12.08.21
08:16
(16)нет в 7-ке табличного поля
18 Андрей_Андреич
 
naïve
12.08.21
08:25
(17) Тут у каждого своя семерка
19 Mikeware
 
12.08.21
08:28
(16) у нормальных семерочников - есть.
20 ADirks
 
12.08.21
08:30
Лучше таки свою форму слепить. Пожалей бедных юзеров.  С этими подчиненными формами вынос мозга сплошной.
21 HawkEye
 
12.08.21
08:38
(17) в 1срр есть..
22 tgu82
 
12.08.21
08:40
(0) Если нет Спецификации у товара закрыть справочник норм. Создал спецификацию и тогда нормы появились на экране.
С нормами понятно - они нужны и могут быть периодическими, но зачем куча спецификаций на один и тот же товар - думаю это лишнее.
23 Mikeware
 
12.08.21
08:44
(22) затем, что нормы расхода - состав спецификации. спецификация утверждается на определенный период.
24 tgu82
 
12.08.21
08:49
(23) Где как. Норсы расхода могут быть периодическими как в ПУБ 7.7
25 Mikeware
 
12.08.21
08:51
(24) это чрезжопица.
в нормальных организациях утверждают/переутверждают рецептуру (по сути - документ)
26 Джордж1
 
12.08.21
08:55
(22)чем куча спецификаций на один и тот же товар - это не товар, это продукция - кулинария/выпечка. Но мысли сделать 1 товар = 1 спецификация есть
(25)в моем случае ненормальная
27 Джордж1
 
12.08.21
09:02
(24)Учитывая как реализовано хранение периодических сведений в 7-ке - лучше не надо
28 Джордж1
 
12.08.21
09:03
А может кто-то помнит

Был же в 7-ке вариант "эмуляции" регистров сведений на регистрах 7-ке. Без ресурсов что ли. Не могу вспомнить
29 Mikeware
 
12.08.21
09:04
(26) у тебя утверждают "изменения"?
вы и меню, небось, один раз пишете, на 01 января, а потом изменения - " с 01.03 в супе грибном п.1.1 грибы заменить на соленые огурцы, цену уменьшить на 7 копеек","в каше рисовой рис заменить на гречку из расчета  1:1.2" ? и вывешиваете рядом с меню список изменений, да? посетитель заказывает по меню салат, грибной супчик и кашу рисовую с котлетой, а "в связи с изменениями, внесенными  приказами 1, 7, 12, 18, и 26" получает яичницу, рассольник и гречку с рыбой...
30 Mikeware
 
12.08.21
09:05
(28) не надо. сделай на справочниках, и прямых запросах
31 Джордж1
 
12.08.21
09:06
(29)да ничего нет, даже цены толком не отслеживают. Каждый повар по своей спецификации работает.
Вот вчера выяснилось что в голубцы ленивые идет 800 гр. мяса на кг. готового продукта. Как правильно никто не знает
32 Mikeware
 
12.08.21
09:08
(31) весело... в одной ленивой конторе ленивый повар лениво делал ленивые голубцы...
33 Mikeware
 
12.08.21
09:14
(31) сейчас нет ничего типа советского "сборника рецептур блюд дл япредприятий общественного питания на предприятиях и в учебных заведениях"?  там же все описывалось, стандартно, вплоть до замен...
я умудрился в свое время даже экзамены сдать нахаляву по ней, хотя и не учился...
34 Злопчинский
 
12.08.21
09:16
в одной ленивой конторе ленивый повар лениво ленился делать ленивые голубцы...
35 Андрей_Андреич
 
naïve
12.08.21
09:25
У меня спецификация это документ. И их действительно несколько на каждую продукцию потому что нормы меняются, комплектующие могут меняться. Регистр делать не стал, как и периодику - создал свою табличку и читаю прямым запросом.
Ах да - еще документ доп.спецификация. Используют когда нормы править не надо, комплектующих нет - надо заменить разово.
36 Джордж1
 
12.08.21
15:35
В общем нашел вариант сделать проще

Делаем глобальную переменную ТекЭелементСпр2

На форме справочника 2 вешаем на форму невидимую функцию Обработка()

Функция Обработка()
   ТекЭлементСпр2 = ТекущийЭлемент();
КонецФункции

Ну и в справочнике 3 проста проверочка при вводе строки

Процедура ПриВводеСтроки()
    Если ИспользоватьВладельца()<>ТекЭлементСпр2 Тогда
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
КонецПроцедуры
37 HawkEye
 
12.08.21
15:38
(36) глобальные переменные - это пошло )))
38 Джордж1
 
12.08.21
15:39
(37)Ага, в этой конфе это первая глобальная переменная получилась
39 acanta
 
12.08.21
22:10
(37) в начале 7ки нормально было глобальная переменная, содержащая тз со всеми спецификациями и нормами расхода для выбора вместо ТМЦ как формы списка с отбором по типу продукция.
40 acanta
 
12.08.21
22:15
Тз заполнялась при начале работы системы и по кнопке обновить в справочнике. Теоретически, архитектура при такой работе принципиально не имеет значения.
41 Джордж1
 
12.08.21
22:34
(40)так это надо обработчики ТЗ на форме писать + работать с ТЗ не так удобно как со справчоником
42 acanta
 
12.08.21
22:37
(41) если ТЗ на форме выбора одна, то всем все удобно..
43 HawkEye
 
13.08.21
00:45
(39) глобальные переменные являющиеся аналогами константы - это одно и использовались они не только в начале 7-ки, но и сейчас.... а глобальные переменные как переменные, даже в начале 7-ки не использовались...
44 HawkEye
 
13.08.21
00:45
(41) сделай документ ))
45 Злопчинский
 
13.08.21
00:50
(43) ну... не совсем...
в 77 глРасшифровка - самая что ни на есть глобальная...
ну и целый блок глобальных переменных для работы с МФ
хотя может я чего и не понял