|
v8: Проверка документа при открытии, был ли введен на основании, или создан заново | ☑ | ||
---|---|---|---|---|
0
Валидатор
04.04.13
✎
14:22
|
есть ли в УПП 1.3.28 метод, который позволяет узнать, каким образом был введен документ? если да, то как называется?
|
|||
1
Валидатор
04.04.13
✎
14:23
|
хочу сделать проверку к документу заказ поставщику, что если на его основании введены документы, то запрет на корректировку
|
|||
2
Лефмихалыч
04.04.13
✎
14:23
|
(0) документОснование заполнен, значит на основании введен. Не заполнен, значит введен не на основании
|
|||
3
Валидатор
04.04.13
✎
14:24
|
и в какой процедуре это задается? при открытии ведь?
|
|||
4
Flyd-s
04.04.13
✎
14:26
|
(3), обработка заполнения
|
|||
5
Фокусник
04.04.13
✎
14:28
|
(0) Интересно, как фраза из (0) связана с фразой в (1). По идее фраза в (1) должна уточнять в фразу в (0), но.... нет, они противоположны по смыслу.
Разбираем. В (0) "каким образом был введен документ?": всё кажется очевидно: требуется узнать введен "на основании" этот документ или "без основания". но... нет: В (1): "что если на его основании введены документы" оказывается нужно узнать были ли введены ДРУГИЕ документы на основании требуемого. PS неужели так трудно сначала ДЛЯ СЕБЯ сформулировать ПОЛНОСТЬЮ вопрос, а потом его вываливать на форум. Известно ведь, что правильно заданный вопрос - это половина ответа... ;) |
|||
6
Лефмихалыч
04.04.13
✎
14:29
|
(4) мимо
|
|||
7
Валидатор
04.04.13
✎
14:30
|
(5) есть документ(1), если на его основании вводились документы, нужно запретить корректировку этого документа(1)
|
|||
8
Лефмихалыч
04.04.13
✎
14:30
|
(3) при открытии заказа поставщику ищи запросом введенные на его основании документы. Если найдешь хоть один, Делай ЭтаФорма.ТолькоПросмотр = Истина;
|
|||
9
samozvanec
04.04.13
✎
14:39
|
(1) не знаю, как в УПП, но обычно у доков есть команда Структура подчиненности, использующая критерии отбора. вот на нее обрати внимание, это как раз твой случай.
|
|||
10
Валидатор
04.04.13
✎
14:46
|
(9) вот что нашел в форме документа:
РаботаСДиалогами.ПоказатьструктуруПодчиненности, из нее тащить? |
|||
11
samozvanec
04.04.13
✎
14:53
|
(10) ну можно и так сказать. под описание мое подходит? тогда тащи
|
|||
12
samozvanec
04.04.13
✎
14:53
|
(10) само собой критерий настроен должен быть на все документы, наличие которых тебе надо контролировать
|
|||
13
Фокусник
04.04.13
✎
15:09
|
(7) Вот именно, вопрос находится в (1), а правильно сначала сформулировать вопрос ПОЛНОСТЬЮ и потом уже вываливать его на всеобщее обозрение в (0) пост...
|
|||
14
Валидатор
04.04.13
✎
15:48
|
(12) запросом тащить доки? или как? не понятно
|
|||
15
Валидатор
04.04.13
✎
16:01
|
(12) как проконтролировать документы, которые попадают в структуру подчиненности?
|
|||
16
Ksandr
04.04.13
✎
16:03
|
Критерий отбора в помощь
|
|||
17
Валидатор
04.04.13
✎
16:07
|
КритерийОтбора.СвязанныеДокументы.Найти() обозначить за переменную, и потом если найдены документы то использование формы ложь?
|
|||
18
Валидатор
04.04.13
✎
16:12
|
бом бом, не получается(
|
|||
19
Валидатор
04.04.13
✎
16:36
|
в запросе выбираю КритерийОтбора, Связанные документы, но они не находятся почему то(
|
|||
20
AaNnDdRrEeYy
04.04.13
✎
16:44
|
Прикольная штука есть если начать на ctrl+shift+f1
КритерийОтбораМенеджер.<Имя критерия> (FilterCriterionManager.<Имя критерия>) Найти (Find) Синтаксис: Найти(<ЗначениеПоиска>) Параметры: <ЗначениеПоиска> (обязательный) Значение, по которому будет выполняться поиск. Тип значения должен соответствовать типу критерия отбора. Возвращаемое значение: Тип: Массив. Массив ссылок на объекты, в которых используется указанное значение отбора. Описание: Осуществляет поиск объектов базы данных, входящих в состав отбора, в которых использовано указанное значение отбора. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Состав объектов метаданных, входящих в состав отбора, задается при конфигурировании. Пример: МассивСсылок = КритерииОтбора.Контрагенты.Найти(ВыбКонтрагент); Для Каждого Ссылка Из МассивСсылок Цикл Сообщить(Ссылка); КонецЦикла; |
|||
21
Валидатор
04.04.13
✎
16:49
|
(20) а шифт зачем?
|
|||
22
Валидатор
04.04.13
✎
16:52
|
Массив =КритерииОтбора.СвязанныеДокументы.Найти(ЭтотОбъект.ДокументОснование);
и в массив ничего не попадает( |
|||
23
Валидатор
04.04.13
✎
16:52
|
Массив =КритерииОтбора.СвязанныеДокументы.Найти(ЭтотОбъект);
|
|||
24
Валидатор
04.04.13
✎
17:05
|
мужики, помогите) нужно добавить свой критерий в систему что ли или как?
|
|||
25
Валидатор
04.04.13
✎
17:27
|
КритерийОтбора.ДокументыПоКонтрагенту.Найти(Контрагент)
это найдет все документы по контрагенту, и это единственный вариант, когда хоть что то находится, все остальные типовые критерий отбора результатов не дает |
|||
26
samozvanec
04.04.13
✎
17:34
|
(25) значит нет ничего. ты сам критерий настроил как тебе надо?
|
|||
27
Валидатор
04.04.13
✎
17:36
|
(26) вот про это я и спрашиваю, нужно создать ведь новый критерий, в котором указываю документ, в котором и запрещено делать изменения, если на его основании введены другие? или как?
|
|||
28
Валидатор
05.04.13
✎
10:17
|
ап
|
|||
29
cw014
05.04.13
✎
10:18
|
Я конечно все не читал, но если глянуть в типовые то:
ПараметрОснование ПараметрОбъектКопирования Не? Не оно? |
|||
30
Валидатор
05.04.13
✎
10:21
|
(29) не подходит все равно
|
|||
31
cw014
05.04.13
✎
10:23
|
Функция МетодОпределенияКакимОбразомБылВведенДокумент(ПараметрОснование, ПараметрОбъектКопирования) Экспорт
Если ПараметрОбъектКопирования <> Неопределено тогда Возврат "Копированием"; ИначеЕсли ПараметрОснование <> Неопределено тогда Возврат "НаОсновании"; Иначе Возврат "Ручками"; КонецЕсли; КонецФункции |
|||
32
cw014
05.04.13
✎
10:25
|
+(31)
Процедура ПриОткрытии() Возврат МетодОпределенияКакимОбразомБылВведенДокумент(ПараметрОснование, ПараметрОбъектКопирования); КонецПроцедуры |
|||
33
Валидатор
05.04.13
✎
10:27
|
(32) так в процедуре не даст же он вернуть значение не?
|
|||
34
cw014
05.04.13
✎
10:29
|
(33)
Процедура ПриОткрытии() МОКОБВД = МетодОпределенияКакимОбразомБылВведенДокумент(ПараметрОснование, ПараметрОбъектКопирования); Если МОКОБВД = "Ручками" тогда Сообщить("Пользователь нажал на кнопку ""Создать новый"""); ИначеЕсли МОКОБВД = "НаОсновании" тогда Сообщить("Пользователь ткнул на документ " + ПараметрОбъектКопирования + " и нажал кноку ""Скопировать"""); Иначе Сообщить("Пользователь открыл документ " + ПараметрОснование + " и ткнул ""Ввести на основании""") КонецЕсли; КонецПроцедуры |
|||
35
cw014
05.04.13
✎
10:36
|
А, да конечно, всегда пожалуйста
|
|||
36
Валидатор
05.04.13
✎
10:39
|
(35) сейчас попробу. спс
|
|||
37
cw014
05.04.13
✎
10:39
|
(36) С тебя 200 рублев :)
|
|||
38
Валидатор
05.04.13
✎
10:42
|
можно еще мне кажется через модуль полные права функция
ПолучитьВыборкуПоПритериюОтбора |
|||
39
Валидатор
05.04.13
✎
10:44
|
и еще минивопрос, как проверить, в полученной таблице значений есть данные или нет? циклом ведь?
|
|||
40
cw014
05.04.13
✎
10:46
|
(38) И что ты этим "П"ритерием получишь?
(39) Что такое "полученная таблица значений"? |
|||
41
cw014
05.04.13
✎
10:46
|
(39) Если я хоть чуть-чуть правильно понял, то:
ТаблицаЗначений.Количество (ValueTable.Count) ТаблицаЗначений (ValueTable) Количество (Count) Синтаксис: Количество() Возвращаемое значение: Тип: Число. Описание: Получает количество строк таблицы значений. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: Количество = ТаблицаЦен.Количество(); |
|||
42
Валидатор
05.04.13
✎
10:48
|
Функция ПолучитьВыборкуПоКритериюОтбора(ИмяКритерияОтбора, ЗначениеКритерия) Экспорт
Запрос = Новый Запрос; ТекстЗапроса = ""; Для Каждого ЭлементСостава ИЗ Метаданные.КритерииОтбора[ИмяКритерияОтбора].Состав Цикл Если Не ЭлементСостава.Тип.СодержитТип(ТипЗнч(ЗначениеКритерия)) Тогда Продолжить; КонецЕсли; ПутьКДанным = ЭлементСостава.ПолноеИмя(); СтруктураПутьКДанным = ОбщегоНазначения.РазобратьПутьКОбъектуМетаданных(ПутьКДанным, ЭлементСостава.Родитель()); ЕСли НЕ ПравоДоступа("Чтение", СтруктураПутьКДанным.Метаданные) Тогда Продолжить; КонецЕсли; ИмяОбъекта = СтруктураПутьКДанным.ТипОбъекта + "." + СтруктураПутьКДанным.ВидОбъекта; ПсевдонимТаблицы = СтруктураПутьКДанным.ТипОбъекта + "_" + СтруктураПутьКДанным.ВидОбъекта + "_" + СтруктураПутьКДанным.ИмяТаблЧасти; ТекущаяСтрокаГДЕ = "ГДЕ " + ПсевдонимТаблицы + "." +СтруктураПутьКДанным.ИмяРеквизита + " = &ЗначениеКритерияОтбора"; ИмяТЧ = Лев(СтруктураПутьКДанным.ИмяРеквизита, Найти(СтруктураПутьКДанным.ИмяРеквизита, ".")-1); ИмяРеквизита = Лев(СтруктураПутьКДанным.ИмяРеквизита, Найти(СтруктураПутьКДанным.ИмяРеквизита, ".")-1); ТекстЗапроса = ТекстЗапроса + (?(ТекстЗапроса = "", "ВЫБРАТЬ", "ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ") + " |" + ПсевдонимТаблицы + ".Ссылка ИЗ " + ИмяОбъекта + "." + СтруктураПутьКДанным.ИмяТаблЧасти + " КАК " + ПсевдонимТаблицы + " |" + СтрЗаменить(ТекущаяСтрокаГДЕ, "..", ".") + " |"); КонецЦикла; Если ТекстЗапроса = "" Тогда Возврат Новый ТаблицаЗначений; КонецЕсли; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерия); Возврат Запрос.Выполнить().Выгрузить(); КонецФункции Функция ЕстьСвязанныеДокументыПоЗаказу(Ссылка) Экспорт Таблица = ПолныеПрава.ПолучитьВыборкуПоКритериюОтбора("СвязанныеДокументы", Ссылка); Для Каждого Строка Из Таблица Цикл Если Строка.Ссылка.Проведен Тогда Возврат Истина КонецЕсли; КонецЦикла; Возврат Ложь; КонецФункции Процедура ПриОткрытии() ЕстьСвязанныеДокументыПоЗаказу(Ссылка); Если ЗначениеЗаполнено(ТаблицаПоиска) Тогда Сообщить("парарам"); КонецЕсли; КонецПроцедуры |
|||
43
Валидатор
05.04.13
✎
10:49
|
Только одна фигня меня смущает, что функция ЕстьСвязанныеоДокументы возвращает истину или ложь. И когда я в нужном мне документе вызываю ее, то всегда пишется сообщение
|
|||
44
Валидатор
05.04.13
✎
10:50
|
ТаблицаПоиска = ЕстьСвязанныеДокументыПоЗаказу(Ссылка);
|
|||
45
cw014
05.04.13
✎
10:56
|
Есть еще такая фигня - если документ только создан (копированием, на основании или еще как то) - в критерий отбора он не попадает, так как еще не записан.
А есть другая фигня, на примере заказов поставщику в УПП... Если создать его новым (не копированием, не основанием) и указать в поле сделка "Заказ покупателя", то он так же попадет в критерий отбора И последняя фигня - если создать документ копированием, в критериях отбора не будет того документ, с которого скопировали текущий документ |
|||
46
Валидатор
05.04.13
✎
10:59
|
(45) вот у меня заказ поставщику документ, и если он создается новый, то можно убрать проверку на ввод на основании этого документа, но если выбрать созданный документ, на основании которого еще не вводились другие доки(структура подчиненности пустая) то все равно сообщение выводится (сообщение - текст, который выводится, если на основании нашего документа есть введеные)
|
|||
47
Валидатор
05.04.13
✎
11:01
|
все, разобрался, нефиг потому что в значение которое получает только Истина или ожь припихивать метод значениезаполнено)))
|
|||
48
Валидатор
05.04.13
✎
11:02
|
Спасибо всем, кто помогал)
|
|||
49
Валидатор
10.04.13
✎
13:09
|
и еще вопрос по данной теме: если мне нужно, чтобы некоторые реквизиты были доступны для изменения, как это сделать?
Элементыформы.НазваниеРеквизита.Доступность = Истина не помогает |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |