|
v7: Периодический в соседнем справочнике | ☑ | ||
---|---|---|---|---|
0
sunnmas
08.04.14
✎
11:42
|
Есть 2 справочника ЭКЛЗ и СписокККМ
У справочника СписокККМ реквизит периодический. Пытаюсь определить в какой кассе установлена ЭКЛЗ Функция ГдеУстановлена() Результат = ПолучитьПустоеЗначение("Справочник.СписокККМ"); Кассы = СоздатьОбъект("Справочник.СписокККМ"); Кассы.ОбратныйПорядок(1); Кассы.ВыбратьЭлементы(0);//Без иерархии Пока Кассы.ПолучитьЭлемент() = 1 Цикл Касса = Кассы.ТекущийЭлемент(); ЭК = Касса.ЭКЛЗ.Получить(); Если ПустоеЗначение(ЭК) = 1 Тогда Продолжить; КонецЕсли; Период = СоздатьОбъект("Периодический"); Период.ИспользоватьОбъект(,ЭК.ТекущийЭлемент()); Период.ОбратныйПорядок(1); Период.ВыбратьЗначения(); Пока Период.ПолучитьЗначение()=1 Цикл Если Период.Значение = Касса.ЭКЛЗ Тогда сообщить("здесь"); КонецЕсли; КонецЦикла; КонецЦикла; КонецФункции В ЭК пусто, не могу получить доступ к периодическому реквизиту справочника СписокККМ. Помогите пожалуйста. Использовать владельца не буду. |
|||
1
sunnmas
08.04.14
✎
11:44
|
Кстати, ГдеУстановлена() вызывается из модуля справочника ЭКЛЗ
|
|||
2
vinogradъ
08.04.14
✎
11:54
|
После ЭК = Касса.ЭКЛЗ.Получить() ЭК.ТекущийЭлемент() не прокатит, по-моему.
Сделай периодическим реквизит с типом Справочник.СписокККМ у справочника ЭКЛЗ. |
|||
3
viktor_vv
08.04.14
✎
12:13
|
На всякий случай в явном виде датц поставь.
Касса.ЭКЛЗ.Получить(ТекущаяДата()); Какие траблы у меня были, если дату не указывать. |
|||
4
viktor_vv
08.04.14
✎
12:13
|
*дату
|
|||
5
Ujcnm99
08.04.14
✎
12:29
|
Касса.ЭКЛЗ - будет работать, если было "Касса.ИспользоватьДату"
Период.ИспользоватьОбъект(,Касса) Зачем вообще Период Может так? ЭКЛЗ = ТекущийЭлемент(); Кассы = СоздатьОбъект("Справочник.Кассы"); Кассы.ИспользоватьДату('08.04.2014'); Кассы.ВыбратьЭлементы(); Пока Кассы.ПолучитьЭлемент() = 1 Цикл Если Кассы.ЭКЛЗ = ЭКЛЗ Тогда Возврат; КонецЕсли; КонецЦикла; |
|||
6
sunnmas
08.04.14
✎
12:49
|
Ujcnm99, спасибо, заманчиво и красиво но не то что мне нужно. Я хочу знать все ЭКЛЗ которые были когда либо установлены в ККМ (их меняют каждый год). Потом смотрим ЭКЛЗ лежит. Шеф: че блят* за ЭКЛЗ. А я ГдеУстановлена() и говорю это ИП Пупкина В.В. старая 2011 года выпуска и т.д. и т.п.
ВОбщем нужно чтобы реквизит ЭКЛЗ был периодическим, а ГдеУстановлена() проверяла бы всю историю для каждой кассы. На текущий момент дело такое. Программа проигрывается до строки Пока Период.ПолучитьЗначение()=1 Цикл и вылетает с ошибкой {Справочник.ЭКЛЗ.Форма.Модуль(35)}: Перед выполнением операции нужно вызвать 'ИспользоватьОбъект'! Пробывал такие вариации: Период.ИспользоватьОбъект(,ЭК.ТекущийЭлемент()); Период.ИспользоватьОбъект(,ЭК); Период.ИспользоватьОбъект("",ЭК); Период.ИспользоватьОбъект("Справочник.СписокККМ.ЭКЛЗ",ЭК); Период.ИспользоватьОбъект("ЭКЛЗ",ЭК); Вообще справка по этой функции очень размыта. Я не понимаю 1 параметр. Написано <ИмяРеквизита> - строка с названием периодического реквизита справочника или периодической константы; Если из контекста самого справочника то реквизит ЭКЛЗ, а если из контекста справочника ЭКЛЗ я пробовал бредовый вариант "Справочник.СписокККМ.ЭКЛЗ". Кто разобрался с данной функцией проясните пожалуйста ситуацию. А еще она не ругается непосредственно на стоку с вызовом ИспользоватьОбъект, а вылетает уже после. |
|||
7
Builder
08.04.14
✎
12:59
|
(6) Чего не понятного с ИспользоватьОбъект ?
ИспользоватьОбъект("Имя твоего реквизита","Твой текущий элемент справочника"). У тебя похоже будет что то типа Период.ИспользоватьОбъект("ЭКЛЗ",Касса); |
|||
8
Builder
08.04.14
✎
13:02
|
И дальше перебираешь все ЭКЛЗ на твоей кассе.
Период.ИспользоватьОбъект("ЭКЛЗ",Касса); Период.ВыбратьЗначения(); Пока Период.ПолучитьЗначение()=1 Цикл сообщить(""+Период.Значение); КонецЦикла; |
|||
9
Builder
08.04.14
✎
13:10
|
+(8) Но это ты получишь все ЭКЛЗ на кассе. Если тебе надо на какой кассе был данный ЭКЛЗ, будет что то типа этого:
ВыбЭКЛЗ - элемент на форме, либо передавай в функцию. Функция ГдеУстановлена() Кассы = СоздатьОбъект("Справочник.СписокККМ"); Кассы.ВыбратьЭлементы(); Пока Кассы.ПолучитьЭлемент() = 1 Цикл Касса = Кассы.ТекущийЭлемент(); Период = СоздатьОбъект("Периодический"); Период.ИспользоватьОбъект("ЭКЛЗ",Кассы.ТекущийЭлемент()); Период.ВыбратьЗначения(); Пока Период.ПолучитьЗначение()=1 Цикл Если Период.Значение = ВыбЭКЛЗ Тогда сообщить("здесь - "+Кассы); КонецЕсли; КонецЦикла; КонецЦикла; // Ну и вернуть надо что то, функция же... Возврат ""; КонецФункции |
|||
10
sunnmas
08.04.14
✎
13:20
|
Чуваки, вы все просто супер! Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |