Открыть форму записи в регистр сведений программно |
Я |
18.05.18 — 12:46
&НаКлиенте
Процедура НазначитьЯчейку(Команда)
Пустышка=Пустышка();
КлючЗаписи = Новый Структура;
КлючЗаписи.Вставить(«Номенклатура», Номенклатура);
КлючЗаписи.Вставить(«Склад», Склад);
КлючЗаписи.Вставить(«Помещение»,Пустышка.Помещение);
КлючЗаписи.Вставить(«Ячейка»,Пустышка.Ячейка );
МассивКлюча = Новый Массив;
МассивКлюча.Добавить(КлючЗаписи);
КлючЗаписиРегистра = Новый(«РегистрСведенийКлючЗаписи.РазмещениеНоменклатурыПоСкладскимЯчейкам», МассивКлюча);
П = Новый Структура(«Ключ», КлючЗаписиРегистра);
ОткрытьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи», П);
КонецПроцедуры
Выдает ошибку:
{Документ.ПриходныйОрдерНаТовары.Форма.ФормаДокумента.Форма(3047)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи», П);
по причине:
Объект не найден
Помогите решить.
1 — 18.05.18 — 12:59
подозреваю, что нет такой записи.
а зачем ты передаешь Массив в параметры, когда там должна быть структура?
2 — 18.05.18 — 13:04
(1) ОткрытьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи», П);
если убираю П то работает, но параметры не передает.
ОткрытьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи», КлючЗаписи );
так тоже открывается но параметры не передает
3 — 18.05.18 — 13:10
КлючЗаписиРегистра = Новый(«РегистрСведенийКлючЗаписи.РазмещениеНоменклатурыПоСкладскимЯчейкам», КлючЗаписи);
так не работает?
4 — 18.05.18 — 13:41
(0) «Объект не найден» — значит нет такой записи
5 — 18.05.18 — 13:44
А в типовых есть удобная функция ОткрытьФормуЗаписиРегистраСведенийПоОтбору()
6 — 18.05.18 — 13:53
Установи нормальное имя переменной, а не П.
7 — 18.05.18 — 13:56
(4) запись 100% есть, но такой код как в (0) выдает «Объект не найден»
8 — 18.05.18 — 13:57
(6) чем тебе имя не нравится?) Так весь СП написан
9 — 18.05.18 — 14:15
(5) пишет нет такой
10 — 18.05.18 — 14:24
Попробуй глобальным поиском, может товарищ говорит про БСП
11 — 18.05.18 — 14:35
(7) » запись 100% есть» — тогда не было бы ругани
Проверь еще раз отбор и типы значений
12 — 18.05.18 — 14:36
А если регистр периодический, то должен быть и период в отборе.
13 — 18.05.18 — 14:43
(12) все перепроверил
я думаю, если у меня как и у ТС одно и тоже, на разных база, то дело именно в коде
14 — 18.05.18 — 14:44
(12) РС не периодический
15 — 18.05.18 — 14:46
Мне открыть открыть форму создания новой записи независимого регистра сведений, с переданными в него реквизитами.
16 — 18.05.18 — 14:46
(15) получитьФорму -> заполнитьРеквизиты
на сервер
Открыть форму
17 — 18.05.18 — 14:47
чеж сразу не сказал?
18 — 18.05.18 — 14:47
(17) к (15)
19 — 18.05.18 — 15:19
(15) Тогда поменять:
П = Новый Структура(«ЗначенияЗаполнения», КлючЗаписи);
Это если у измерений включена галка «Заполнять из данных заполнения»».
Если нет, то тоже просто:
Форма = ПолучитьФорму(«РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ФормаЗаписи»);
ЗаполнитьЗначенияСвойств(Форма, КлючЗаписи);
Форма.Открыть();
p.s. КлючЗаписи — как у тебя, т.е. структура
20 — 22.05.18 — 07:58
(20) и всёже интересно, почему не работает код из (0), в интернете фигурирует только такой
21 — 22.05.18 — 08:31
(19) второй способ не заполнит Ключ, возможны интересные фокусы
22 — 22.05.18 — 08:56
(21) Можно подробнее? И как правильно в том случае, если не включено «Заполнять из данных заполнения»?
FIXXXL
23 — 22.05.18 — 12:11
(22) если не заполнен параметр Ключ, форма(платформа) не понимает, что это существующая запись и ведет себя неадекватно, данные не сохраняет с первого раза и т.п.
ну как если при открытии формы документа вместо Ключа-ссылки просто набить форму данными по существующему документу только в случае документа получим копию, а в случае РС копии не допустимы
Заблокирован |
|
1 |
|
1C 8.x (тонкий) Открытие формы (Ошибка при вызове метода контекста)07.07.2014, 17:02. Показов 9649. Ответов 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 |
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;
Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;
1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.
В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
Сергей Сыч Заглянувший Сообщений: 29 |
Добрый день! Управление небольшой фирмой для Украины, ред. 1.4+ CRM СТАНДАРТ для Украины, редакция 1.0 Разработка совместной конфигурации:(1.4.6.20) . Платформа 8.2.19.80. 2.Документ «Заказ покупателя», табличная часть «Товары, услуги» по кнопке «Подобрать» выдает ошибку: {Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(2073)}: Ошибка при вызове метода контекста (ОткрытьФорму) http://v8.1c.ru/8.2/managed-application/logform/layouter }FormChangesRemovedItem Прикрепленные файлы |
Добрый вечер, Сергей! Передала описание Вашей проблемы разработчикам украинской версии спарки. Ожидайте, пожалуйста, их ответ. |
|
Добрый день. Для решения возникших у Вас вопросов необходима база. Вы можете разместить ее на файлообменник и ссылку выслать на электронный адрес crmukr@rarus.ru. Также необходимы более подробные разъяснения от Вас: 1. Поэтапное описание с приложением скриншотов, так как в документе «Заказ покупателя» нет поля «Документ-основание». Правильно ли понимаем, что на этапе «Заказ покупателя» выбран именно этот «Вид создаваемого документа»? 2. По порядку описанных Вами действий ошибка не воспроизводится. |
|
Сергей Сыч Заглянувший Сообщений: 29 |
Добрый день! |
Валентина Кузнецова Администратор Сообщений: 505 |
#5
05.09.2014 16:42:30 Ваше обращение зарегистрировано под № С0000003125 и передано разработчикам: 1. Исправят ориентировочно в середине следующей недели. Файл обновления с исправлениями направим Вам на электронную почту. 2. На Вашей базе в наших условиях по-прежнему не воспроизводится. Опишите подробно условия работы конфигурации: вариант работы (клиент-серверный, файловый), условия запуска. Ответ направьте на адрес crmukr@rarus.ru. |
-
Вот программа обработчик
&НаКлиенте
Процедура ТабличнаяЧасть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].ПолучитьИдентификатор();
без «ЭтотОбъект»