Ошибка при вызове метода контекста открытьформу

Открыть форму записи в регистр сведений программно

Открыть форму записи в регистр сведений программно

Я
   tatoshka0403

18.05.18 — 12:46

&НаКлиенте

Процедура НазначитьЯчейку(Команда)

    Пустышка=Пустышка();

    КлючЗаписи = Новый Структура;

    КлючЗаписи.Вставить(«Номенклатура», Номенклатура);

    КлючЗаписи.Вставить(«Склад», Склад);

    КлючЗаписи.Вставить(«Помещение»,Пустышка.Помещение);

    КлючЗаписи.Вставить(«Ячейка»,Пустышка.Ячейка );

    
    МассивКлюча = Новый Массив;

    МассивКлюча.Добавить(КлючЗаписи);

    
    КлючЗаписиРегистра = Новый(«РегистрСведенийКлючЗаписи.РазмещениеНоменклатурыПоСкладскимЯчейкам», МассивКлюча);

    
    П = Новый Структура(«Ключ», КлючЗаписиРегистра);

    
    ОткрытьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи», П);

КонецПроцедуры

Выдает ошибку:

{Документ.ПриходныйОрдерНаТовары.Форма.ФормаДокумента.Форма(3047)}: Ошибка при вызове метода контекста (ОткрытьФорму)

   ОткрытьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи», П);

по причине:

Объект не найден

Помогите решить.

   Buster007

1 — 18.05.18 — 12:59

подозреваю, что нет такой записи.

а зачем ты передаешь Массив в параметры, когда там должна быть структура?

   tatoshka0403

2 — 18.05.18 — 13:04

(1) ОткрытьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи», П);

если убираю П то работает, но параметры не передает.

ОткрытьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи», КлючЗаписи );

так тоже открывается но параметры не передает

   Buster007

3 — 18.05.18 — 13:10

КлючЗаписиРегистра = Новый(«РегистрСведенийКлючЗаписи.РазмещениеНоменклатурыПоСкладскимЯчейкам», КлючЗаписи);

так не работает?

   ptiz

4 — 18.05.18 — 13:41

(0) «Объект не найден» — значит нет такой записи

   ptiz

5 — 18.05.18 — 13:44

А в типовых есть удобная функция ОткрытьФормуЗаписиРегистраСведенийПоОтбору()

   Мандалай

6 — 18.05.18 — 13:53

Установи нормальное имя переменной, а не П.

   Nikoss

7 — 18.05.18 — 13:56

(4) запись 100% есть, но такой код как в (0) выдает «Объект не найден»

   Nikoss

8 — 18.05.18 — 13:57

(6) чем тебе имя не нравится?) Так весь СП написан

   tatoshka0403

9 — 18.05.18 — 14:15

(5) пишет нет такой

   Мандалай

10 — 18.05.18 — 14:24

Попробуй глобальным поиском, может товарищ говорит про БСП

   ptiz

11 — 18.05.18 — 14:35

(7) » запись 100% есть» — тогда не было бы ругани

Проверь еще раз отбор и типы значений

   ptiz

12 — 18.05.18 — 14:36

А если регистр периодический, то должен быть и период в отборе.

   Nikoss

13 — 18.05.18 — 14:43

(12) все перепроверил

я думаю, если у меня как и у ТС одно и тоже, на разных база, то дело именно в коде

   tatoshka0403

14 — 18.05.18 — 14:44

(12) РС не периодический

   tatoshka0403

15 — 18.05.18 — 14:46

Мне открыть открыть форму создания новой записи независимого регистра сведений, с переданными в него реквизитами.

   Nikoss

16 — 18.05.18 — 14:46

(15) получитьФорму -> заполнитьРеквизиты

на сервер

Открыть форму

   Nikoss

17 — 18.05.18 — 14:47

чеж сразу не сказал?

   Nikoss

18 — 18.05.18 — 14:47

(17) к (15)

   ptiz

19 — 18.05.18 — 15:19

(15) Тогда поменять:

П = Новый Структура(«ЗначенияЗаполнения», КлючЗаписи);

Это если у измерений включена галка «Заполнять из данных заполнения»».

Если нет, то тоже просто:

Форма = ПолучитьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи»);

ЗаполнитьЗначенияСвойств(Форма, КлючЗаписи);

Форма.Открыть();

p.s. КлючЗаписи — как у тебя, т.е. структура

   Nikoss

20 — 22.05.18 — 07:58

(20) и всёже интересно, почему не работает код из (0), в интернете фигурирует только такой

   FIXXXL

21 — 22.05.18 — 08:31

(19) второй способ не заполнит Ключ, возможны интересные фокусы :)

   ptiz

22 — 22.05.18 — 08:56

(21) Можно подробнее? И как правильно в том случае, если не включено «Заполнять из данных заполнения»?

  

FIXXXL

23 — 22.05.18 — 12:11

(22) если не заполнен параметр Ключ, форма(платформа) не понимает, что это существующая запись и ведет себя неадекватно, данные не сохраняет с первого раза и т.п.

ну как если при открытии формы документа вместо Ключа-ссылки просто набить форму данными по существующему документу :) только в случае документа получим копию, а в случае РС копии не допустимы

Gokusa

Заблокирован

1

1C 8.x (тонкий)

Открытие формы (Ошибка при вызове метода контекста)

07.07.2014, 17:02. Показов 9649. Ответов 5


открываю форму методом открытьФорму(«имяФормы.через точку.из подсказки.все правильно»)
но не открывает, пишет
«{Документ.Накладная.Форма.ФормаДокумента.Форма(11 3)}: Ошибка при вызове метода контекста (ОткрытьФорму)
Открытьформу(«Документ.Накладная.Форма.УпрФормаРИТ П»);
по причине:
Неправильное условие отбора
«
причем форма обычная, никакого отбора в ней нет.
открываю на клиенте.
в чем может быть ошибка?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



19 / 19 / 4

Регистрация: 13.04.2014

Сообщений: 276

07.07.2014, 17:12

2

процедура вызова в том же документе,что и форма?



0



Gokusa

Заблокирован

07.07.2014, 18:05

 [ТС]

3

да?



0



StaLL1n

19 / 19 / 4

Регистрация: 13.04.2014

Сообщений: 276

07.07.2014, 19:08

4

я бы сделал так

1C
1
2
форма=ЭтотОбъект.ПолучитьФорму("НужнаяФорма");
      форма.Открыть();



0



211 / 204 / 15

Регистрация: 29.05.2014

Сообщений: 1,056

08.07.2014, 01:29

5

Смотри установлен или нет основной реквизит, смотри на настройки отборов в динамических списках. смотри что происходит при создании формы



0



Gokusa

Заблокирован

08.07.2014, 11:14

 [ТС]

6

кароч оказалось — основной реквизит мозга ипал



0



В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник
Рис.3 Синтакс-помощник

В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

 

Сергей Сыч

Заглянувший

Сообщений: 29
Авторитет:

0

Регистрация: 22.05.2013

Добрый день!

      Управление небольшой фирмой для Украины, ред. 1.4+ CRM СТАНДАРТ для Украины, редакция 1.0 Разработка совместной конфигурации:(1.4.6.20) . Платформа 8.2.19.80.
   1. В документе «Продажа», вкладка «Содержание» зафиксирован «Первичный интерес» — номенклатура, которой интересовался заказчик. При создании документа этапа «Заказ покупателя» указываю документ-основание «Текущая продажа», но, табличная часть «Товары, услуги» не заполняется автоматически товарами, указанными в «Первичном интересе».
     Вопрос: каким образом можно автоматически заполнить табличную часть заказа покупателя, чтобы не подбирать повторно товары. На основании созданного «Счета на оплату» также нет возможности ввести документ «Заказ покупателя».

  2.Документ «Заказ покупателя», табличная часть «Товары, услуги» по кнопке «Подобрать» выдает ошибку:

{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(2073)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму(«ОбщаяФорма.ФормаПодбора», ПараметрыПодбора, ЭтаФорма);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
КонецСвойства: item Форма: Элемент Тип: {

http://v8.1c.ru/8.2/managed-application/logform/layouter

}FormChangesRemovedItem

Прикрепленные файлы

 

Добрый вечер, Сергей!

Передала описание Вашей проблемы разработчикам украинской версии спарки.

Ожидайте, пожалуйста, их ответ.

 

Добрый день.

Для решения возникших у Вас вопросов необходима база. Вы можете разместить ее на файлообменник и ссылку выслать на электронный адрес crmukr@rarus.ru. Также необходимы более подробные разъяснения от Вас:

1. Поэтапное описание с приложением скриншотов, так как в документе «Заказ покупателя» нет поля «Документ-основание». Правильно ли понимаем, что на этапе «Заказ покупателя» выбран именно этот  «Вид создаваемого документа»?

2. По порядку описанных Вами действий ошибка не воспроизводится.

 

Сергей Сыч

Заглянувший

Сообщений: 29
Авторитет:

0

Регистрация: 22.05.2013

Добрый день!
1. Да, верно, «Вид создаваемого документа» —  «Заказ покупателя».
2. Кнопка «Подобрать» не работает и в других документах.

 

Валентина Кузнецова

Администратор

Сообщений: 505
Авторитет:

20

Регистрация: 24.02.2014

#5



0


05.09.2014 16:42:30

Ваше обращение зарегистрировано под № С0000003125 и передано разработчикам:

1. Исправят ориентировочно в середине следующей недели. Файл обновления с исправлениями направим Вам на электронную почту.

2. На Вашей базе в наших условиях по-прежнему не воспроизводится. Опишите подробно условия работы конфигурации: вариант работы (клиент-серверный, файловый), условия запуска. Ответ направьте на адрес crmukr@rarus.ru.

  1. Вот программа обработчик

    &НаКлиенте
    Процедура ТабличнаяЧасть1КоличествоПриИзменении(Элемент)
    СтрокаТабличнойЧасти=Элементы.ТабличнаяЧасть1.ТекущиеДанные;
    //при вызове этой функции появляется ошибка см.в.конце Элементы.ТабличнаяЧасть1.ТекущиеДанные.Сумма=РаботаСДокументами.ВычислениеСуммы(СтрокаТабличнойЧасти);
    КонецПроцедуры

    Серверная часть
    &НаСервере
    Функция ВычислениеСуммы(Элемент) Экспорт
    ЗначениеСуммы=Элемент.Количество*Элемент.Цена;
    Сообщить(ЗначениеСуммы);
    Возврат ЗначениеСуммы;
    КонецФункции

    Текст Ошибки:
    Ошибка отображения типов:
    Отсутствует отображение для типа «ДанныеФормыЭлементКоллекции»

    Кто знает, что не так пишите. Буду рад.


  2. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

    Дело в том, что ТекущуюСтроку из ТЗ нельзя передавать на сервер. (У типа «ДанныеФормыЭлементКоллекции» отсутствует свойство «Возможен обмен с сервером»). Для того чтобы передать строку на сервер ее надо выгрузить в структуру, передать на сервер эту структуру, с этой структурой сделать то что надо, и вернуть ее на клиент, и заполнить из нее ТЧ.

    В вашем же конкретном примере — на сервер можно вообще ничего не передавать. Можно ведь все на клиенте выполнить.


  3. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    {Обработка.медАРМПриёмкиТовара.Форма.Форма.Форма(1022)}: Ошибка при вызове метода контекста (ОткрытьФорму)
            ОткрытьФорму("Обработка.медАРМПриёмкиТовара.Форма.ВыборНоменклатуры",ПараметрыФормы,ЭтаФорма,,,, ОбработчикОповещения, Режим);
    по причине:
    Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
    по причине:
    Ошибка преобразования данных XDTO:
    Запись значения свойства 'cr':
        форма: Элемент
        имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr
    по причине:
    Ошибка отображения типов:
    Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'

    Ребята всё понимаю, но не понимаю какую я ему коллекцию сую? Передаю Структуру.. На что может ругаться?


  4. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104


  5. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    ПараметрыФормы Структура Структура
    АдресТоваровВХранилище «e1cib/tempstorage/ed0e045f-6c9a-43b2-a363-086808153749» Строка
    ТоварыДокумента «e1cib/tempstorage/61c0f15a-394e-4551-ab4a-4fffd87c3d74» Строка


  6. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ничего не понял. Попробуй тоже самое, только вместо своих параметров что-нибудь по-проще типа
    «Новый структура(«пар1″,»пар1″)».
    Если тут проблем не будет — смотри еще раз свой отбор, может там не просто строки?
    Если проблема сохранится — возможно еще в обработчике оповещения что-то.


  7. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    В ПараметрахФормы два значения, оба типа строка.. передаётся адрес на временное хранилище..
    В ОбработкеОповещения передается структура в структуре, во внутренней структуре один параметр, тоже адрес типа строка.


  8. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ну поэкспериментируй:
    1. Убери нафиг свои параметры =)
    2. Убери нафиг свой обработчик оповещения =)


  9. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Самое интересное что падает при завершение процедуры создания.

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
       
        // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
        Если Параметры.Свойство("АвтоТест") Тогда
            Возврат;
        КонецЕсли;
       
        ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры");
       
        ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище));
        СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка;
        ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента));   
        Если Параметры.Свойство("ПередаватьШтрихкод") Тогда
            ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод;
        КонецЕсли;
       
        Если Параметры.Свойство("ОтображатьОстатки") Тогда
            Элементы.ТаблицаТоваровОстаток.Видимость = Истина;
        КонецЕсли;
       
        ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров;
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ХарактеристикиДокумента.Характеристика
                       |ПОМЕСТИТЬ ХарактеристикиДокумента
                       |ИЗ
                       |    &ХарактеристикиДокумента КАК ХарактеристикиДокумента
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    НайденныеХарактеристики.Характеристика
                       |ПОМЕСТИТЬ НайденныеХарактеристики
                       |ИЗ
                       |    &НайденныеХарактеристики КАК НайденныеХарактеристики
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ХарактеристикиДокумента.Характеристика
                       |ИЗ
                       |    ХарактеристикиДокумента КАК ХарактеристикиДокумента
                       |        ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики
                       |        ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика";
        Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить());
        Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить());
       
        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Количество()>0 Тогда
            Выборка.Следующий();
            Характеристика = Выборка.Характеристика;
            ПараметрыПоиска = Новый Структура;
            ПараметрыПоиска.Вставить("Характеристика",Характеристика);
            МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска);
            ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0];
        КонецЕсли;   
       
    КонецПроцедуры

  10. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Это в каком случае?
    Попробуй просто форму открыть без всего — может она вообще не откроется =)


  11. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54


  12. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Неужели вот это работает:
    ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0];
    или «1» — это опечатка?
    Оставь свои параметры, но убери обработчик оповещения, что будет?


  13. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Ошибка, уже исправил, сейчас попробую… Но параметр не мой, он был, я просто в него добавил еще одно значение, адрес временного хранилища.

    — Объединение сообщений, 22 дек 2015

    Переписал процедуру ПриСозданииНаСервере

        // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
        Если Параметры.Свойство("АвтоТест") Тогда
            Возврат;
        КонецЕсли;
       
        ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры");
       
        ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище));
        СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка;
        Если Параметры.Свойство("ПередаватьШтрихкод") Тогда
            ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод;
        КонецЕсли;
       
        Если Параметры.Свойство("ОтображатьОстатки") Тогда
            Элементы.ТаблицаТоваровОстаток.Видимость = Истина;
        КонецЕсли;
       
        ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров;
        Если Параметры.Свойство("ТоварыДокумента") Тогда
        ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента));   
    
            Запрос = Новый Запрос;
            Запрос.Текст = "ВЫБРАТЬ
            |    ХарактеристикиДокумента.Характеристика
            |ПОМЕСТИТЬ ХарактеристикиДокумента
            |ИЗ
            |    &ХарактеристикиДокумента КАК ХарактеристикиДокумента
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    НайденныеХарактеристики.Характеристика
            |ПОМЕСТИТЬ НайденныеХарактеристики
            |ИЗ
            |    &НайденныеХарактеристики КАК НайденныеХарактеристики
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    ХарактеристикиДокумента.Характеристика
            |ИЗ
            |    ХарактеристикиДокумента КАК ХарактеристикиДокумента
            |        ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики
            |        ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика";
            Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить());
            Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить());
           
            Выборка = Запрос.Выполнить().Выбрать();
            Если Выборка.Количество()>0 Тогда
                Выборка.Следующий();
                Характеристика = Выборка.Характеристика;
                ПараметрыПоиска = Новый Структура;
                ПараметрыПоиска.Вставить("Характеристика",Характеристика);
                МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска);
                ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0];
            КонецЕсли;   
        КонецЕсли;
       
    

    И закоментировал добавление в структуру ТоварыДокумента.. Работает.. т.е. проблема внутри условия получается?

    Мне кажется ему всё таки вот это не нравится ка кто?
    ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0];

    Последнее редактирование: 22 дек 2015

  14. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Если у вас «Элементы.ТаблицаТоваров» — это дин.список, то в тек. строку нужно передать ссылку, а если таблица формы — тогда идентификатор строки.
    У вас похоже массивСтрок[0]- это и есть то самое «ДанныеФормыЭлементКоллекции» на которое 1с и орет


  15. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    Респект и уважуха.. да ТаблицаТоваров это таблица формы.. а МассивСтрок это данные коллекции.

    Возникает вопрос как получить идентификатор…
    Т.е. необходимо следующее.. ТаблицаТоваров это список номенклатуры с характеристиками и есть ТЗ основной формы, где есть характеристика из этой таблицы.. на ней нужно позиционировать при открытии.


  16. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Значит нужно присвоить идентификатор.
    Можно глянуть в синтакс-помощник — там должно быть «ПолучитьИдентификатор»
    http://www.forum.mista.ru/topic.php?id=550120


  17. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.271
    Симпатии:
    98
    Баллы:
    54

    ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
    Вот «Огонь».


  18. Dem0lisher

    Offline

    Dem0lisher
    Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.266
    Симпатии:
    102
    Баллы:
    104

    Ага! Еще «Огонь» есть — ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.Вывести();
    А у вас можно по-короче наверное: Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
    без «ЭтотОбъект»


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Понравилась статья? Поделить с друзьями:
  • Ошибка представления яндекс контест
  • Ошибка при вызове ifcplugin signhashsimple ошибка не определена
  • Ошибка при вызове метода контекста открытьфайл
  • Ошибка при воспроизведении песни вк
  • Ошибка представления python