Заблокирован |
|
1 |
|
1C 8.x (тонкий) Открытие формы (Ошибка при вызове метода контекста)07.07.2014, 17:02. Показов 10967. Ответов 5
открываю форму методом открытьФорму(«имяФормы.через точку.из подсказки.все правильно»)
0 |
19 / 19 / 4 Регистрация: 13.04.2014 Сообщений: 276 |
|
07.07.2014, 17:12 |
2 |
процедура вызова в том же документе,что и форма?
0 |
Заблокирован |
|
07.07.2014, 18:05 [ТС] |
3 |
да?
0 |
StaLL1n 19 / 19 / 4 Регистрация: 13.04.2014 Сообщений: 276 |
||||
07.07.2014, 19:08 |
4 |
|||
я бы сделал так
0 |
211 / 204 / 15 Регистрация: 29.05.2014 Сообщений: 1,056 |
|
08.07.2014, 01:29 |
5 |
Смотри установлен или нет основной реквизит, смотри на настройки отборов в динамических списках. смотри что происходит при создании формы
0 |
Заблокирован |
|
08.07.2014, 11:14 [ТС] |
6 |
кароч оказалось — основной реквизит мозга ипал
0 |
не удается открыть форму справочника |
Я |
07.09.18 — 08:07
Создал форму справочника, открываю её по кнопке из документа.
Выдается ошибка
{Документ.ИзменениеПараметровЗемельногоУчастка.Форма.ФормаДокумента.Форма(16)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму(«Справочник.ОбъектыЭксплуатации.ФормаПодбораПараметровЗемельногоУчастка», , Элементы.ЗемельныеУчастки);
по причине:
Неизвестное имя формы. Имя: «Справочник.ОбъектыЭксплуатации.ФормаПодбораПараметровЗемельногоУчастка»
1 — 07.09.18 — 08:08
(0+) Как она может быть не известна если она есть?
2 — 07.09.18 — 08:09
Подскажите пожалуйста, почему не получается открыть форму?
3 — 07.09.18 — 08:11
Справочники.ОбъектыЭксплуатации.ФормаПодбораПараметровЗемельногоУчастка.ОткрытьФорму(<ИмяФормы>)
4 — 07.09.18 — 08:11
Форма есть, почему не открывается?
http://joxi.ru/DmB8nRGCwBVYbA
5 — 07.09.18 — 08:12
(0). Попробуй так:
«Справочник.ОбъектыЭксплуатации.Форма.ФормаПодбораПараметровЗемельногоУчастка»
6 — 07.09.18 — 08:12
(3) То есть это по стилю интерфейса Такси?
А код (4) устарел что ли?
В этой же базе так же формы открываются по коду видел.
Не мог он устареть. От чего это тогда? Все же правильно написано!
7 — 07.09.18 — 08:15
В (4) же все верно написано, от чего ошибка?
8 — 07.09.18 — 08:18
Новая ошибка, как все же нужно?
{Документ.ИзменениеПараметровЗемельногоУчастка.Форма.ФормаДокумента.Форма(16)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму(«Справочник.ОбъектыЭксплуатации.Форма.ФормаПодбораПараметровЗемельногоУчастка», , Элементы.ЗемельныеУчастки);
по причине:
Неправильное условие отбора
9 — 07.09.18 — 08:21
(8) Ну так форма уже пытается открыться. То есть с открытием все правильно. Теперь оно ругается на то, что в форме установлен неправильный отбор.
Я бы попытался отбор отключить.
10 — 07.09.18 — 08:23
(9) Я не задавал никакого отбора. А где он включен?
Отбор, фильтр то есть задать нужно, но пока я хочу открыть форму.
11 — 07.09.18 — 08:25
(10) Ну ты же форму скопировал? Вот и скопировал вместе с прописанным там отбором.
12 — 07.09.18 — 08:26
Вот так вот, другая форма открылась без проблем.
ОткрытьФорму(«Справочник.ОбъектыЭксплуатации.ФормаВыбора», , Элементы.ЗемельныеУчастки);
Почему же эта не открывается?
13 — 07.09.18 — 08:28
(12) Потому что «там» устанавливается некорректный отбор. Отбор, который в исходнике был «в контексте», а в копии стал «не в контексте». Вот и все.
Пока удал отбор вообще.
14 — 07.09.18 — 08:31
(13) О какой копии речь?
15 — 07.09.18 — 08:31
Я создал новую форму выбора, и хочу её открыть. Не получается!!!!
16 — 07.09.18 — 08:34
(15) Удали отбор в своей форме.
17 — 07.09.18 — 08:50
(16) Извините что туплю, но какой отбор?
Вот этот нельзя удалить.
http://joxi.ru/12MzBxdtMGVJqA
18 — 07.09.18 — 09:05
19 — 07.09.18 — 09:06
+(18) Начинать со свойств реквизита. (на картинке справа).
20 — 07.09.18 — 09:08
21 — 07.09.18 — 09:13
(20) Я сделал источником данных произвольный запрос.
Задаю там параметр. А как в него передать организацию из документа? Где установить сам параметр?
22 — 07.09.18 — 09:13
(21+)
ВЫБРАТЬ
РегистрацияЗемельныхУчастков.ОсновноеСредство КАК ОсновноеСредство,
РегистрацияЗемельныхУчастков.КБК КАК КБК,
РегистрацияЗемельныхУчастков.КодКатегорииЗемель КАК КодКатегорииЗемель,
РегистрацияЗемельныхУчастков.НалоговаяСтавка КАК НалоговаяСтавка,
РегистрацияЗемельныхУчастков.НалоговаяЛьготаПоНалоговойБазе КАК НалоговаяЛьготаПоНалоговойБазе,
РегистрацияЗемельныхУчастков.КадастроваяСтоимость КАК КадастроваяСтоимость
ИЗ
РегистрСведений.РегистрацияЗемельныхУчастков КАК РегистрацияЗемельныхУчастков
ГДЕ
РегистрацияЗемельныхУчастков.Организация = &ОрганизацияИзДокумента
23 — 07.09.18 — 09:19
Форма открылась. Но как сейчас в этот запрос передать параметр организация из шапки документа?
http://joxi.ru/Y2LzyDWt9GkaDr
24 — 07.09.18 — 09:20
(21) С отбором уже совладал?
«Где установить сам параметр?» Сам параметр устанавливается :
1. При открытии формы в процедуре ПриСозданииНаСервере
2. При изменении интерактивном изменении в процедуре ПриИзменении. ЗЫ. Это чаще всего так. Но могут быть варианты.
Устанавливаются кодом :
<ИдентификаторДС>.Параметры.УстановитьЗначениеПараметра(<ИмяПараметра>, ЗначениеПараметра);
25 — 07.09.18 — 09:20
26 — 07.09.18 — 09:21
(24) Я удалил то что было. Делаю произвольный запрос источник данных.
27 — 07.09.18 — 09:22
(23) Птля… У тебя же ОрганизацияИзДокумента — параметр запроса. Нафига он еще и в отборе? Оставь что-то одно. Лучше всего в отборе. Если умеешь его настроить программно.
28 — 07.09.18 — 09:22
(24) Но а если сам запрос тут http://joxi.ru/KAxBVMwTMLza3m
куда мне задавать то параметры? параметры чего?
29 — 07.09.18 — 09:26
(28) В запросе ДС есть такой текст
»
ГДЕ
РегистрацияЗемельныхУчастков.Организация = &ОрганизацияИзДокумента
»
Вот это вот «&ОрганизацияИзДокумента» и есть параметр запроса. Устанавливается он как написано в (24)
30 — 07.09.18 — 09:29
(29) Если в тексте запроса удалить предложение «ГДЕ…» — тогда запрос выберет данные по всем организациям. И нужно будет настраивать отбор уже на клиенте в настройках отбора.
Это можно делать программно. Пример здесь : Как программно добавить отбор в динамический список на УФ 8.3? посты 7, 8
31 — 07.09.18 — 09:29
(29) У меня эта форма открывается из документа.
&НаКлиенте
Процедура Подбор2(Команда)
ОткрытьФорму(«Справочник.ОбъектыЭксплуатации.Форма.ФормаПодбораПараметровЗемельногоУчастка», , Элементы.ЗемельныеУчастки);
КонецПроцедуры
Нужно то есть как то в процедуре ОткрытьФорму передать туда параметры?
32 — 07.09.18 — 09:31
(31) Вторым параметром метода ОткрытьФорму. У тебя он пустой.
ИЗ СП :
<Параметры> (необязательный)
Тип: Структура.
Параметры формы. Ключ структуры — имя параметра, а значение — значение параметра формы. Имя элемента должно совпадать с именем параметра структуры.
П = Новый Структура(«Ключ», Поставщик);
Форма = ПолучитьФорму(«Справочник.Контрагенты.ФормаОбъекта», П);
Форма.Открыть();
33 — 07.09.18 — 09:33
(32) Да спасибо, большое! Продвигаюсь!!!
34 — 07.09.18 — 09:44
(32) Подскажите пожалуйста а какому объекту
задавать параметр? Нужно же передать произвольному запросу.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство(«ОрганизацияИзДокумента») Тогда
Запрос.УстановитьПараметр(«ОрганизацияИзДокумнета», Параметры.ОрганизацияИзДокумента);
КонецЕсли;
КонецПроцедуры
35 — 07.09.18 — 09:48
Как задать что параметр я передаю произвольному запросу
динамического списка.
36 — 07.09.18 — 09:50
Похоже так, —
Если Параметры.Свойство(«ОрганизацияИзДокумента») Тогда
РегистрацияЗемельныйУчастков.Параметры.УстановитьЗначениеПараметра(УстановитьПараметр(«ОрганизацияИзДокумнета», Параметры.ОрганизацияИзДокумента);
КонецЕсли;
37 — 07.09.18 — 09:54
(36+) Прошу прощения, вот так, —
Если Параметры.Свойство(«ОрганизацияИзДокумента») Тогда
РегистрацияЗемельныйУчастков.Параметры.УстановитьЗначениеПараметра(«ОрганизацияИзДокумента», Параметры.ОрганизацияИзДокумента);
КонецЕсли;
38 — 07.09.18 — 09:59
Странно но все равно идет такая ошибка.
http://joxi.ru/vAWz4ext1Ep1R2
Параметр передался.
39 — 07.09.18 — 10:08
(38) Убери уже все отборы в настройках ДС.
40 — 07.09.18 — 10:11
(38) Отладчик тебе для чего?
41 — 07.09.18 — 10:21
1. Запрос лучше сделать так
ВЫБРАТЬ
РегистрацияЗемельныхУчастков.ОсновноеСредство КАК ОсновноеСредство,
РегистрацияЗемельныхУчастков.КБК КАК КБК,
РегистрацияЗемельныхУчастков.КодКатегорииЗемель КАК КодКатегорииЗемель,
РегистрацияЗемельныхУчастков.НалоговаяСтавка КАК НалоговаяСтавка,
РегистрацияЗемельныхУчастков.НалоговаяЛьготаПоНалоговойБазе КАК НалоговаяЛьготаПоНалоговойБазе,
РегистрацияЗемельныхУчастков.КадастроваяСтоимость КАК КадастроваяСтоимость
ИЗ
РегистрСведений.РегистрацияЗемельныхУчастков КАК РегистрацияЗемельныхУчастков
{ГДЕ
РегистрацияЗемельныхУчастков.Организация = &ОрганизацияИзДокумента}
42 — 07.09.18 — 10:34
затем
передаешь в параметрах организацию,
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СписокЧегототам.Параметры.УстановитьЗначениеПараметра(«ОрганизацияИзДокумента», Параметры.Организация);
…
Вот как-то так
43 — 07.09.18 — 10:46
(39) Спасибо! Сейчас да дошло. Я его сам там сделал в этот раз. В тот там просто не было ничего кажется.
(42) Ну я подобно делаю. Хочется наконец увидеть его в деле, как это заработает!!!!!
А почему в условии фигурные скобки, в чем тут преимущество?
44 — 07.09.18 — 10:55
Подскажите что я не так сделал?
1. Я сделал форму выбора справочника.
2. источник данных произвольный запрос, передаю ему параметр.
2. Открываю форму выбора из документа
&НаКлиенте
Процедура Подбор2(Команда)
П = Новый Структура;
// пара ключ (имя переменной) — значение (произв. типа)
П.Вставить(«ОрганизацияИзДокумента», Объект.Организация);
//П.Вставить(«Имя», «Иван»);
//П.Вставить(«ДатаРождения», ‘19800802’);
ОткрытьФорму(«Справочник.ОбъектыЭксплуатации.Форма.ФормаПодбораПараметровЗемельногоУчастка», П, Элементы.ЗемельныеУчастки);
КонецПроцедуры
В форме выбора
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство(«ОрганизацияИзДокумента») Тогда
РегистрацияЗемельныйУчастков.Параметры.УстановитьЗначениеПараметра(«ОрганизацияИзДокумента», Параметры.ОрганизацияИзДокумента);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Элементы.ЗемельныеУчастки.ДобавитьСтроку();
Элементы.ЗемельныеУчастки.ТекущиеДанные.ЗемельныйУчасток = ВыбранноеЗначение;
КонецПроцедуры
Сейчас открывается по нажатию кнопки форма выбора, но по двойному щелчку переходит на документ, и ничего не добавляется в Тч документа. Что я не так сделал?
45 — 07.09.18 — 11:00
По двойному клику открываются докумнеты
46 — 07.09.18 — 11:03
(44) Естественно ничего не будет. Пиши «ОписаниеОповещенияОЗакрытии»
47 — 07.09.18 — 11:06
(46) Я понял, я вот это не там написал, —
Элементы.ЗемельныеУчастки.ДобавитьСтроку();
Элементы.ЗемельныеУчастки.ТекущиеДанные.ЗемельныйУчасток = ВыбранноеЗначение;
Это нужно в форме документа, в свойстве табличной части, куда добавляются значения или значение.
А это, ОписаниеОповещенияОЗакрытии как зачем?
48 — 07.09.18 — 11:09
Да ничего не происходит не понятно почему ((( Сейчас же все правильно сделал. Почему не срабатывает?
49 — 07.09.18 — 11:10
(46) Я делал по примеру с ИТС там не было про ОписаниеОповещенияОЗакрытии
50 — 07.09.18 — 11:11
(45) Патамучта.
ОбработкаВыбора должна быть в форме откуда вызывается подбор. В твоем случае в форме документа. И привязано к событиям твоего Элементы.ЗемельныеУчастки. Но это фиговый вариант. Лучше событие привязывать к всей форме. Примерно так :
ОткрытьФорму(«Справочник.ОбъектыЭксплуатации.Форма.ФормаПодбораПараметровЗемельногоУчастка», П, ЭтаФорма);
В форме подбора должно быть ОповеститьОВыборе.
В твоем случае в Обработчике события «Выбор» элемента «ЗемельныеУчастки»
Типа такого :
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТД = Элемент.ТекущиеДанные;
Если НЕ ТД.ЭтоГруппа Тогда
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(ТД.Ссылка);
КоецЕсли;
КонецПроцедуры
51 — 07.09.18 — 11:11
Тут даже точка останова не срабатывает. Должно же передаваться значение из формы выбора. И я его принимаю в табличной части документа, —
&НаКлиенте
Процедура ЗемельныеУчасткиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Элементы.ЗемельныеУчастки.ДобавитьСтроку();
Элементы.ЗемельныеУчастки.ТекущиеДанные.ЗемельныйУчасток = ВыбранноеЗначение;
КонецПроцедуры
52 — 07.09.18 — 11:12
(50) Да я не там сделал это.
Но я же переделал. Вот (51). Тут же правильно?!
Все равно не работае. Сейчас то почему?
53 — 07.09.18 — 11:13
(51) Чтобы вызвалась ОбработкаВыбора нужно, чтобы кто-то сделал ОповеститьОВыборе.
54 — 07.09.18 — 11:15
ОповеститьОВыборе должно сделаться из «ФормаПодбора». Чаще всего для этого используют обработку события Выбор элемента в котором отображается ДС. см. (50).
55 — 07.09.18 — 11:15
(53) Ок, сделаю. Странно что про это не написали в ИТС.
Но где делать процедуру (50) в моем случае?
56 — 07.09.18 — 11:19
(53) Вот тебе простейший вариант
&НаКлиенте
Процедура Подбор2(Команда)
П = Новый Структура;
Оп = Новый ОписаниеОповещения(«ВыполнитьПослеЗакрытияВыбора», ЭтотОбъект);
ОткрытьФорму(«Справочник.Номенклатура.ФормаВыбора», П, ЭтаФорма,,,, Оп);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПослеЗакрытияВыбора(ВыбранноеЗначение, ИсточникВыбора) Экспорт
КонецПроцедуры
57 — 07.09.18 — 11:19
(54) Событие выбор есть у таблицы документа, для которой я
и делаю подбор. Но нде все же делать ОповеститьОВыборе ?
58 — 07.09.18 — 11:20
(56) То есть что то передается в параметр, режим закрытия окна. И это поможет?
59 — 07.09.18 — 11:20
(57) В «формеПодпора». В обработчике события «выбор» твоего ДС.
60 — 07.09.18 — 11:20
61 — 07.09.18 — 11:22
(58) Ну у тебя же «формавыбора» (надеюсь), то естественно она должна передавать автоматически выбранное.
62 — 07.09.18 — 11:22
(56)
У меня ОткрытьФорму(«Справочник.ОбъектыЭксплуатации.Форма.ФормаПодбораПараметровЗемельногоУчастка», П, Элементы.ЗемельныеУчастки);
А У вас
ОткрытьФорму(«Справочник.Номенклатура.ФормаВыбора», П, ЭтаФорма,,,, Оп);
63 — 07.09.18 — 11:22
(56) Это не будет «Подбор».
Не сможешь таким способом из формы выбрать последовательно несколько значений. Поскольку для передачи в вызывающую форму значения вызываемую нужно будет каждый раз закрывать.
64 — 07.09.18 — 11:23
(62+) Имеет ли значение Элменты.ЗемельныеУчастки или ЭтаФорма. Думаю да.
65 — 07.09.18 — 11:24
(64) Это указывает на то, кто получит «ОповеститьОВыборе». Элемент ЗемельныеУчастки или ЭтаФорма.
66 — 07.09.18 — 11:27
(65) Я вот приготовил процедуру в форме выбора,
подскажите пожалуйста как будет правильно. Если вам не трудно. А то вижу у меня голова что то отказывает ((
&НаКлиенте
Процедура РегистрацияЗемельныйУчастковВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
// Вставить содержимое обработчика.
КонецПроцедуры
67 — 07.09.18 — 11:27
(63) Не написано что это вообще подбор.
(64) Это владелец, данной открытой формы.
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)
68 — 07.09.18 — 11:29
(66) Это правильно.
Внутри процедуры (простейший вариант):
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(ВыбраннаяСтрока);
69 — 07.09.18 — 11:29
(66) Что вы хотите в итоге сделать? Опишите последовательность.
Выбрать десяток другой и добавить их или выбрать один элемент справочника?
70 — 07.09.18 — 11:29
(65) Так будет?
ТД = Элемент.ТекущиеДанные;
Если НЕ ТД.ЭтоГруппа Тогда
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(ТД.Ссылка);
КоецЕсли;
(67) Да я делаю подбор. Раздвоилась тема. Извините.
(67) Ну да владелец. То есть в вашем примере тоже будет
за место ЭтаФорма, Элементы.ЗемельныеУчастки ?
71 — 07.09.18 — 11:31
(69) Есть документ. На нем создал кнопку подбор.
У справочника делаю форму выбора с динамическим списком.
Источник значений произвольный запрос.
Нужно открывать форму подбора с данными из регистра сведений
и по двойному щелчку, заносить выбранные значения в Тч документа.
72 — 07.09.18 — 11:33
(70) Ну не дословно.
Вот здесь :
ТД = Элемент.ТекущиеДанные;
Вместо Элемент нужно написать
Элементы.<ТвойДС>.ТекущиеДанные;
73 — 07.09.18 — 11:35
(72) Понял. Пробую!
74 — 07.09.18 — 11:38
(69) Множественный выбор хотелось бы.
75 — 07.09.18 — 11:39
+ (72) И вообще… Проверку на группы нужно проводить, если это действительно нужно. Может твой ДС групп вообще не отображает? Зачем проверка? Или нужна возможность выбрать группу наряду с элементом. Тогда тоже проверка не имеет смысла.
Пробуй сначала без проверок. Что выбрал — о том и оповестил.
76 — 07.09.18 — 11:46
(75) выдало ошибку
{Справочник.ОбъектыЭксплуатации.Форма.ФормаПодбораПараметровЗемельногоУчастка.Форма(11)}: Поле объекта не обнаружено (РегистрацияЗемельныхУчастков)
ТД = Элементы.РегистрацияЗемельныхУчастков.ТекущиеДанные;
а поле то это есть!!!!
77 — 07.09.18 — 11:48
Сделай пока
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(ВыбраннаяСтрока);
78 — 07.09.18 — 11:55
(77) Подбор добавляет строку, с выпадающим списком. Но пустую. То есть, без значения. Это наверное вот тут нужно
смотреть?
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Элементы.ЗемельныеУчастки.ДобавитьСтроку();
Элементы.ЗемельныеУчастки.ТекущиеДанные.ЗемельныйУчасток = ВыбранноеЗначение;
КонецПроцедуры
79 — 07.09.18 — 11:56
(78) Йес. Смотреть там. И переписать все нафик.
текСтрока = Элементы.ЗемельныеУчастки.ДобавитьСтроку();
текСтрока.ЗемельныйУчасток = ВыбранноеЗначение;
80 — 07.09.18 — 12:04
(79) Вроде что то пошло.
&НаКлиенте
Процедура ЗемельныеУчасткиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Элементы.ЗемельныеУчастки.ДобавитьСтроку();
Элементы.ЗемельныеУчастки.ТекущиеДанные.ЗемельныйУчасток = ВыбранноеЗначение.ОсновноеСредство;
КонецПроцедуры
А не подскажете ли как делается множественный выбор?
Сложно ли расширить функционал имеющийся до этой возможности.
81 — 07.09.18 — 12:04
Посмотри в типовой БП 3.0 как сделан подбор Номенклатуры в документах Поступления и Реализации.
1. Открываешь формы выбора списка.
2. При закрытии должен выбранное куда пометить (структура возврата).
3. Оповестить форму владельца, что выбор сделан.
3. У формы есть событие «ОбработкаВыбора», там вот и обрабатывай выбранное.
82 — 07.09.18 — 12:05
(0) Пройди курсы и не тупи:
https://xn—-1-bedvffifm4g.xn--p1ai/courses/
И недавно в 1С был набор на 4 курса !..
83 — 07.09.18 — 12:05
ТоварисчЪ!!! В взялись лепить подбор не имея понятия об :
1. Передаче параметров между формами?
2. О работе с динамическими списками?
3. О работе с табличными частями?
4. Не имея представления о методах и событиях управляемых форм?
На что вы рассчитываете?
84 — 07.09.18 — 12:09
(80)
«как делается множественный выбор?».
Разрешить множественный выбор в «формеПодбора». (В свойствах ДС установить соответствующий флажок). Изменить процедуру ОбработкаВыбора. Поскольку туда будет прилетать не одиночное значение, а список выбранных значений.
«Сложно ли расширить функционал…»
Кому как.
85 — 07.09.18 — 12:10
(83) Наверное рассчитывает, что мы ему на блюдечке всё принесём.
86 — 07.09.18 — 12:11
(80) Перепиши вот так :
текСтрока = Элементы.ЗемельныеУчастки.ДобавитьСтроку();
текСтрока.ЗемельныйУчасток = ВыбранноеЗначение.ОсновноеСредство;
87 — 07.09.18 — 12:15
(85) Не не рассчитываю. Я лишь спрашиваю. И сам рою все.
Так получилось множественный выбор:
&НаКлиенте
Процедура Подбор2(Команда)
П = Новый Структура;
// пара ключ (имя переменной) — значение (произв. типа)
П.Вставить(«ОрганизацияИзДокумента», Объект.Организация);
П.Вставить(«ЗакрыватьПриВыборе», Ложь);
88 — 07.09.18 — 12:17
Не всё вы как хотите, но я уже не могу объяснять. Всё в (82)
89 — 07.09.18 — 12:20
(88) Ну работает подбор! Спасибо вам!!!!
TolstiyBeremenniy
90 — 07.09.18 — 12:21
Только сил пока нет тестировать.
Но с вашей помощью все развязки учтены были вроде как.
В конце множественный сделал, как в (87). Галку у списка не ставил.
Форма
Автор morph1991, 28 июл 2014, 16:32
0 Пользователей и 1 гость просматривают эту тему.
Доброго всем дня. Столкнулся с проблемой: во внешней обработке по нажатию на кнопку открывается форма. На этой форме также есть кнопка, которая должна открывать еще одну форму. Но по нажатию кнопки пишет: «{Форма.Форма1.Форма(3)}: Ошибка при вызове метода контекста (ОткрытьФорму)
Форма = ОткрытьФорму(«Форма2»);
по причине:
Неизвестное имя формы. Имя: «Форма2»
Помогите решить проблему
Цитата: morph1991 от 28 июл 2014, 16:32
Доброго всем дня. Столкнулся с проблемой: во внешней обработке по нажатию на кнопку открывается форма. На этой форме также есть кнопка, которая должна открывать еще одну форму. Но по нажатию кнопки пишет: «{Форма.Форма1.Форма(3)}: Ошибка при вызове метода контекста (ОткрытьФорму)
Форма = ОткрытьФорму(«Форма2»);
по причине:
Неизвестное имя формы. Имя: «Форма2»Помогите решить проблему
Попробуй так:
Форма = ПолучитьФорму("Форма2");
Форма.Открыть();
Цитата: Kironten от 28 июл 2014, 18:30
Цитата: morph1991 от 28 июл 2014, 16:32
Доброго всем дня. Столкнулся с проблемой: во внешней обработке по нажатию на кнопку открывается форма. На этой форме также есть кнопка, которая должна открывать еще одну форму. Но по нажатию кнопки пишет: «{Форма.Форма1.Форма(3)}: Ошибка при вызове метода контекста (ОткрытьФорму)
Форма = ОткрытьФорму(«Форма2»);
по причине:
Неизвестное имя формы. Имя: «Форма2»Помогите решить проблему
Попробуй так:
Форма = ПолучитьФорму("Форма2");
Форма.Открыть();
Не прокатило:(
Вы уверены, что Форма2 имеет именно такое имя?
Теги:
- Форум База
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
Форма
Похожие темы (5)
Поиск
Решение вопроса:
1) Войдите на сервер 1С (т.е где базы 1С) с правами администратора. 2. Зайти в Пуск>Панель управления>Администрирование>Службы> Найти в списке служб службу «Агент сервера 1С:Предприятия 8.3» / «1C:Enterprise 8.3 Server Agent» и остановить её. 2) Найдите папку reg_1541 или ввести в адресной строке «%ProgramFiles%1cv8srvinforeg_1541» (расположение зависит от разрядности установленного сервера 1С) . 3) Откройте каталог snccntx / (пример C:Program Files1cv8srvinforeg_1541snccntx9ea019eb-ccdd-41c3-ac92-75661dfadd19). 4) Удалите файлы snccntx.00000000 и snccntx с расширением *.dat — как раз искомые сеансовые данные. 5) Зайти в Пуск>Панель управления>Администрирование>Службы> Найти в списке служб службу «Агент сервера 1С:Предприятия 8.3» / «1C:Enterprise 8.3 Server Agent» и запустить службу! Дополнительно почистить кэш пользователя зайдя в каталоги C:ПользоватетьИмя_ПользователяAppDataRoaming1C1cv8 или C:ПользоватетьИмя_ПользователяAppDataLocal1C1Cv8 удалить в каталогах буквенно циферные папки. Всё готово к работе.
-
Вот программа обработчик
&НаКлиенте
Процедура ТабличнаяЧасть1КоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ТабличнаяЧасть1.ТекущиеДанные;
//при вызове этой функции появляется ошибка см.в.конце Элементы.ТабличнаяЧасть1.ТекущиеДанные.Сумма=РаботаСДокументами.ВычислениеСуммы(СтрокаТабличнойЧасти);
КонецПроцедурыСерверная часть
&НаСервере
Функция ВычислениеСуммы(Элемент) Экспорт
ЗначениеСуммы=Элемент.Количество*Элемент.Цена;
Сообщить(ЗначениеСуммы);
Возврат ЗначениеСуммы;
КонецФункцииТекст Ошибки:
Ошибка отображения типов:
Отсутствует отображение для типа «ДанныеФормыЭлементКоллекции»Кто знает, что не так пишите. Буду рад.
-
Поиск
Решение вопроса:
1) Войдите на сервер 1С (т.е где базы 1С) с правами администратора. 2. Зайти в Пуск>Панель управления>Администрирование>Службы> Найти в списке служб службу «Агент сервера 1С:Предприятия 8.3» / «1C:Enterprise 8.3 Server Agent» и остановить её. 2) Найдите папку reg_1541 или ввести в адресной строке «%ProgramFiles%1cv8srvinforeg_1541» (расположение зависит от разрядности установленного сервера 1С) . 3) Откройте каталог snccntx / (пример C:Program Files1cv8srvinforeg_1541snccntx9ea019eb-ccdd-41c3-ac92-75661dfadd19). 4) Удалите файлы snccntx.00000000 и snccntx с расширением *.dat — как раз искомые сеансовые данные. 5) Зайти в Пуск>Панель управления>Администрирование>Службы> Найти в списке служб службу «Агент сервера 1С:Предприятия 8.3» / «1C:Enterprise 8.3 Server Agent» и запустить службу! Дополнительно почистить кэш пользователя зайдя в каталоги C:ПользоватетьИмя_ПользователяAppDataRoaming1C1cv8 или C:ПользоватетьИмя_ПользователяAppDataLocal1C1Cv8 удалить в каталогах буквенно циферные папки. Всё готово к работе.
-
Вот программа обработчик
&НаКлиенте
Процедура ТабличнаяЧасть1КоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ТабличнаяЧасть1.ТекущиеДанные;
//при вызове этой функции появляется ошибка см.в.конце Элементы.ТабличнаяЧасть1.ТекущиеДанные.Сумма=РаботаСДокументами.ВычислениеСуммы(СтрокаТабличнойЧасти);
КонецПроцедурыСерверная часть
&НаСервере
Функция ВычислениеСуммы(Элемент) Экспорт
ЗначениеСуммы=Элемент.Количество*Элемент.Цена;
Сообщить(ЗначениеСуммы);
Возврат ЗначениеСуммы;
КонецФункцииТекст Ошибки:
Ошибка отображения типов:
Отсутствует отображение для типа «ДанныеФормыЭлементКоллекции»Кто знает, что не так пишите. Буду рад.
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
Дело в том, что ТекущуюСтроку из ТЗ нельзя передавать на сервер. (У типа «ДанныеФормыЭлементКоллекции» отсутствует свойство «Возможен обмен с сервером»). Для того чтобы передать строку на сервер ее надо выгрузить в структуру, передать на сервер эту структуру, с этой структурой сделать то что надо, и вернуть ее на клиент, и заполнить из нее ТЧ.
В вашем же конкретном примере — на сервер можно вообще ничего не передавать. Можно ведь все на клиенте выполнить.
-
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
{Обработка.медАРМПриёмкиТовара.Форма.Форма.Форма(1022)}: Ошибка при вызове метода контекста (ОткрытьФорму) ОткрытьФорму("Обработка.медАРМПриёмкиТовара.Форма.ВыборНоменклатуры",ПараметрыФормы,ЭтаФорма,,,, ОбработчикОповещения, Режим); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'cr': форма: Элемент имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'
Ребята всё понимаю, но не понимаю какую я ему коллекцию сую? Передаю Структуру.. На что может ругаться?
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
-
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
ПараметрыФормы Структура Структура
АдресТоваровВХранилище «e1cib/tempstorage/ed0e045f-6c9a-43b2-a363-086808153749» Строка
ТоварыДокумента «e1cib/tempstorage/61c0f15a-394e-4551-ab4a-4fffd87c3d74» Строка -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Ничего не понял. Попробуй тоже самое, только вместо своих параметров что-нибудь по-проще типа
«Новый структура(«пар1″,»пар1″)».
Если тут проблем не будет — смотри еще раз свой отбор, может там не просто строки?
Если проблема сохранится — возможно еще в обработчике оповещения что-то. -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
В ПараметрахФормы два значения, оба типа строка.. передаётся адрес на временное хранилище..
В ОбработкеОповещения передается структура в структуре, во внутренней структуре один параметр, тоже адрес типа строка. -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Ну поэкспериментируй:
1. Убери нафиг свои параметры =)
2. Убери нафиг свой обработчик оповещения =) -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
Самое интересное что падает при завершение процедуры создания.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры"); ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище)); СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка; ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента)); Если Параметры.Свойство("ПередаватьШтрихкод") Тогда ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод; КонецЕсли; Если Параметры.Свойство("ОтображатьОстатки") Тогда Элементы.ТаблицаТоваровОстаток.Видимость = Истина; КонецЕсли; ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХарактеристикиДокумента.Характеристика |ПОМЕСТИТЬ ХарактеристикиДокумента |ИЗ | &ХарактеристикиДокумента КАК ХарактеристикиДокумента |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НайденныеХарактеристики.Характеристика |ПОМЕСТИТЬ НайденныеХарактеристики |ИЗ | &НайденныеХарактеристики КАК НайденныеХарактеристики |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХарактеристикиДокумента.Характеристика |ИЗ | ХарактеристикиДокумента КАК ХарактеристикиДокумента | ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики | ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика"; Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить()); Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить()); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество()>0 Тогда Выборка.Следующий(); Характеристика = Выборка.Характеристика; ПараметрыПоиска = Новый Структура; ПараметрыПоиска.Вставить("Характеристика",Характеристика); МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска); ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0]; КонецЕсли; КонецПроцедуры
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Это в каком случае?
Попробуй просто форму открыть без всего — может она вообще не откроется =) -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Неужели вот это работает:
ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0];
или «1» — это опечатка?
Оставь свои параметры, но убери обработчик оповещения, что будет? -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
Ошибка, уже исправил, сейчас попробую… Но параметр не мой, он был, я просто в него добавил еще одно значение, адрес временного хранилища.
— Объединение сообщений, 22 дек 2015 —
Переписал процедуру ПриСозданииНаСервере
// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры"); ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище)); СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка; Если Параметры.Свойство("ПередаватьШтрихкод") Тогда ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод; КонецЕсли; Если Параметры.Свойство("ОтображатьОстатки") Тогда Элементы.ТаблицаТоваровОстаток.Видимость = Истина; КонецЕсли; ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров; Если Параметры.Свойство("ТоварыДокумента") Тогда ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента)); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХарактеристикиДокумента.Характеристика |ПОМЕСТИТЬ ХарактеристикиДокумента |ИЗ | &ХарактеристикиДокумента КАК ХарактеристикиДокумента |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НайденныеХарактеристики.Характеристика |ПОМЕСТИТЬ НайденныеХарактеристики |ИЗ | &НайденныеХарактеристики КАК НайденныеХарактеристики |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХарактеристикиДокумента.Характеристика |ИЗ | ХарактеристикиДокумента КАК ХарактеристикиДокумента | ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики | ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика"; Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить()); Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить()); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество()>0 Тогда Выборка.Следующий(); Характеристика = Выборка.Характеристика; ПараметрыПоиска = Новый Структура; ПараметрыПоиска.Вставить("Характеристика",Характеристика); МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска); ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0]; КонецЕсли; КонецЕсли;
И закоментировал добавление в структуру ТоварыДокумента.. Работает.. т.е. проблема внутри условия получается?
Мне кажется ему всё таки вот это не нравится ка кто?
ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0];Последнее редактирование: 22 дек 2015 -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Если у вас «Элементы.ТаблицаТоваров» — это дин.список, то в тек. строку нужно передать ссылку, а если таблица формы — тогда идентификатор строки.
У вас похоже массивСтрок[0]- это и есть то самое «ДанныеФормыЭлементКоллекции» на которое 1с и орет -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
Респект и уважуха.. да ТаблицаТоваров это таблица формы.. а МассивСтрок это данные коллекции.
Возникает вопрос как получить идентификатор…
Т.е. необходимо следующее.. ТаблицаТоваров это список номенклатуры с характеристиками и есть ТЗ основной формы, где есть характеристика из этой таблицы.. на ней нужно позиционировать при открытии. -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Значит нужно присвоить идентификатор.
Можно глянуть в синтакс-помощник — там должно быть «ПолучитьИдентификатор»
http://www.forum.mista.ru/topic.php?id=550120 -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
Вот «Огонь». -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Ага! Еще «Огонь» есть — ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.Вывести();
А у вас можно по-короче наверное: Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
без «ЭтотОбъект»