-
Собственно есть такая задача. Есть обработка, в ней выбираются две компании.
У этих компаний есть по 20 клиентов и соотв по одному договору в котором перечислены эти клиенты.
Складывается ситуация, когда первая компания отдаёт половину (10 своих клиентов) второй компании.
Проблемы не составляет из ТЧ первой компании перенести в ТЧ второй компании эти 10 абонентов. А есть проблема в пересчёте ТЧ договоров этих двух компаний, т.к. расчёт ТЧ договора вбит в процедурах модуля договора И КАК К ЭТИМ ПРОЦЕДУРАМ обратиться из обработки чтобы выполнить пересчёт ТЧ договоров обеих компаний и соответсвенно их запись.
Может как то получать форму договора с ТЧ и программно обращаться, вообщем подскажите возможно это или нет?! -
Offline
AlexeyKh
Опытный в 1С- Регистрация:
- 27 июл 2012
- Сообщения:
- 148
- Симпатии:
- 19
- Баллы:
- 29
Один из путей.
В модуле Договора должна быть процедура с пометкой Экспортв программе обработки при переборе ТЧ с Договорами, из Договора получаете объект и через точку вызываете вашу процедуру обработки.
пример
Для каждого Стр из ТЧ ЦиклДоговорОбъект = Стр.Договор.ПолучитьОбъект();
ДоговорОбъект.ПроцедураОбработки();КонецЦикла;
примерно так.
-
а если нет варианта влезть и редактировать (дописывать экспорт) в модуль формы договора.
а если копировать процедуры к себе в обработку, там будет страниц 10, да ещё их все перелопатить под обработку и всё равно будет обращение в них к процедурам в модуле договора и тогда их ещё копировать, и будет ппц а не обработка…(
ещё есть какой либо путь?!
-
А если вот так сделать??? но чёт не могу разобраться с синтаксисом, выдает ошибку..(
договорУК1 = документы.Договор.НайтиПоРеквизиту(«КонтрАгент»,ук1выб).ПолучитьОбъект();
ФормаДокумента = договорУК1.ПолучитьФорму();
Формадокумента.УстановитьДействие(«ДействияТабличнаяЧастьЗаполнить()»,);как правильно написать УстановитьДействие??? в договоре как раз есть кнопка заполнить, которая всё пересчитает и сделает?!
вот в модуле формы договора её описание:
Процедура ДействияТабличнаяЧастьЗаполнить(Кнопка)вот такая вот ошибка:
{Обработка.ЗаменаУК.Форма.Форма.Форма(99)}: Ошибка при вызове метода контекста (УстановитьДействие)
Формадокумента.УстановитьДействие(«ДействияТабличнаяЧастьЗаполнить()»,);
по причине:
Недопустимое значение параметра (параметр номер ‘1’) -
Offline
uza
1С, VBA (EXCEL), VB (.NET + WEB)- Регистрация:
- 10 июл 2007
- Сообщения:
- 1.845
- Симпатии:
- 1
- Баллы:
- 29
Ну дык передайте туда параметр то. Процедура на вход просит параметры — дайте ей его. 1С не загоняет вас в стойло жесткой типизации, посему в качестве параметра можно передать даже строку например УстановитьДействие(«СНОВЫМГОДОМПОШЕЛНАФИГ»); Главное чтобы этот параметр в теле процедуры, если он там анализируется — не привел к сбою.
Зачем вызываете «УстановитьДействие»??? Почему нельзя вызвать саму функцию/проуедура «ХрюМуЗаполнить»?
-
потому что она не экспортная (нельзя лезть в модуль из-за поддержки).
я так понял в полученной форме в 8-ке никак нельзя программно нажать кнопку «заполнить», чтобы без пользователя всё отработало?! -
Offline
uza
1С, VBA (EXCEL), VB (.NET + WEB)- Регистрация:
- 10 июл 2007
- Сообщения:
- 1.845
- Симпатии:
- 1
- Баллы:
- 29
Можно. Можно открыть форму, откалибровать ее на экран, проверить что открытие формы производится и кнопка «ОК» встает там где надо. Далее программно открывать форму документа, и вызывать скрипт эмулирующий нажатие мыши в заданных координатах.
А если серьезно, что? Процедура заполнения такая сложная, что вы не можете ее скопировать в свою обработку и доработать натфилем?
-
ну страниц этак на 5 она и ещё в себе вызывает штуки 3 процедуры, которые в свою очередь в себе тоже вызывают какие либо процедуры или функции. и в общем итоге придётся копировать страниц 15-20 кода и их надфилем обрабатывать.
имхо ну его нах такой подход… будут пальцем тыкать..)
-
Offline
uza
1С, VBA (EXCEL), VB (.NET + WEB)- Регистрация:
- 10 июл 2007
- Сообщения:
- 1.845
- Симпатии:
- 1
- Баллы:
- 29
1) Вам каждую! строчку кода дорабатывать совсем даже не придется. Только «шероховатости», которые вам сразу покажет проверка синтаксиса.
2) На самом деле вызовов идет много, но большАя или даже бОльшая часть этих вызовов заруливается на общие модули, либо является вызовом вполне самостоятельной, практически изолированной функции в десяток строк.Практика подобных извратов еще с 1С 7.7 показывает, что перенести кусок кода из модуля формы в свою обработку, и допилить его до потребного вида занимает всего часа 4-6, учитывая что первая месага от вас поступила сегодня в 9:45, а с той поры прошло уже 9.5 часов — то засучив рукава вы бы УЖЕ сделали то, что вам нужно + осталось бы время на тестирование и поковрыться в носу почитать новости.
| программно создаю элементы управления, в данные ставлю предварительно спозиционированную строку табличного поля, но почему то во всех созданных элементах управления табличное поле, оказываются данные последней строки табличного поля, подскажите кто знает?
как установить связь элементов управления на разные строки в табличном поле? похоже они все устанавливаются на строки, на которую была установленна активность последний раз, то есть как в последнем элементе управления последней строки
наверно наоборот надо. Типа ЭлементыФормы.ПодразделыДоговора.Колонки.Раздел.ЭлементУправления = Новый ПолеВвода; тогда не нужно задавать «Данные» и лево-право верх низ само посчитается.
пардон там вот так вот: | то есть при переборе циклом устанавливаю сначало нужною строку в табличном поле, а потом задаю её в данные элемента управления, по ходу дела все так идет, но в конечном итоге во всех полях выводится данные последней спозиционированной строки
блин ! вот это не закомментированно !!! ЭлементыФормы.ПодразделыДоговора.ТекущаяСтрока = Строка;
шутите? элементы же вот так добавляются |
это вообще мне кажется не реально счас посыплются ошибки и тд. и тп.
как вариант: Форма.ТабПоле.УстановитьДействие(«ТабПолеПриАктивизацииСтроки», Новый Действие(«ПриАктивизацииСтроки»)); …. КонецПроцедуры
Exchang скажите а а при программном переборе строк будет срабатывать процедура ТабПолеПриАктивизацииСтроки ? Так как табличная часть эта не видимая и заполняется программно, задача выводить реквизиты её строк в динамически сознаваемые поля ввода для удобства редактирования пользователя и перенос их изменений обратно…
изначально осуществляется перебор строки Тч, так что процедуру надо привязывать к Тч, я ранее с этим не сталкивался и очень плаваю счас. В все работает, но значения ставятся по последней строке это не понятно(((( веть в данные я добавляю все новые значения…
Извините, но вы вообщек не в тему, что очевидно то очевидно без таких нелепостей. А если все же проблема остается то и вопросы тоже!!!
ругается: {Документ.Договора.Форма.ФормаДокумента}: Ошибка при вызове метода контекста (УстановитьДействие): Недопустимое значение параметра (параметр номер ‘1’) ЭлементыФормы.ПодразделыДоговора.УстановитьДействие(«ПодразделыДоговораПриАктивизацииСтроки», Новый Действие(«ПриАктивизацииСтроки»));
наоборот ЭлементыФормы.ПодразделыДоговора.УстановитьДействие(«ПриАктивизацииСтроки», Новый Действие(«ПодразделыДоговораПриАктивизацииСтроки»));
ну так задачи то две: 1 — отображать данные текущей строки таб поля, 2 — при изменении значения элемента, захватывать объект и записывать. Если я правильно понял..
счас: {Документ.Договора.Форма.ФормаДокумента}: Ошибка при вызове метода контекста (УстановитьДействие): Несоответствие типов (параметр номер ‘2’) ЭлементыФормы.ПодразделыДоговора.УстановитьДействие(Новый Действие(«ПриАктивизацииСтроки»), «ПодразделыДоговораПриАктивизацииСтроки»); по причине: Несоответствие типов (параметр номер ‘2’) (
вот ошибка: {Документ.Договора.Форма.ФормаДокумента}: Ошибка при вызове метода контекста (УстановитьДействие): Недопустимое значение параметра (параметр номер ‘2’) (Процедура, указанная в качестве обработчика события, имеет неверное количество параметров) ЭлементыФормы.ПодразделыДоговора.УстановитьДействие(«ПриАктивизацииСтроки», Новый Действие(«ПодразделыДоговораПриАктивизацииСтроки»)); по причине: Недопустимое значение параметра (параметр номер ‘2’) (Процедура, указанная в качестве обработчика события, имеет неверное количество параметров)
=)))) что то я мозги тебе пудрю
было верно, а ты в разделе основной программы модуля формы описал?
да верно, отображать данные текущей строки Тч в соответствующих полях ввода, при шаге цикла и потом обновлять значение поля ввода в соответствующей строке
да я писал в модуле формы
у документа одна форма, и я пишу в её модуле, до цикла | ЭлементыФормы.ПодразделыДоговора.УстановитьДействие(«ПриАктивизацииСтроки», Новый Действие(«ПодразделыДоговораПриАктивизацииСтроки»)); | ну и потом хочу описывать процедуру
тама что то про параметры пишется, может в самом деле нужен ещё параметр?
ну да, как и тут показал, скопировал из модуля
ПодразделыДоговораПриАктивизацииСтроки(элемент)
Это при объявлении самой процедуры….
ну да, только счас надо определиться что за Элемент, — ЭлементыФормы.Элемент.Значение = ЭлементыФормы.ТабПоле.ТекущаяСтрока[1]; так как я же его создавать хочу программно
элемент -это параметр.. а вот твой элемент называй по другому
то есть при переборе строк запускается процедура ПодразделыДоговораПриАктивизацииСтроки(Элемент) в ней нужно создавать программно Поле Ввода, выводить в него нужное поле строки….я правильно понимаю?
Элемент -это сама строка?
элемент.ТекущиеДанные, это строка
почему то только номер строки сразу 2 идет (((( а должен же с 0 идти !!!
не, пиши ЭлементыФормы.ПодразделыДоговоры.ТекущаяСтрока
хотя счас гляну, может у меня точка останова не там стояла…
кажется надо в начале цикла вставить вот эту строку ЭлементыФормы.ПодразделыДоговора.ТекущаяСтрока = Строка; тогда будет вызываться процедура ПодразделыДоговораПриАктивизацииСтроки(Элемент)
я что то сам уже не понимаю.. создать поле нужно при открытии формы, а при переборе только выводить
Строка, это итератор цикла Для Каждого Строка Из ПодразделыДоговора Цикл
вообще у меня привязано счас все на кнопку, при нажатии на неё открывается в отчет с разделами и подразделами, а на странице панели хочу выводить эти же разделы подразделы для необходимого редактирования
пока обнаружил что процедура ПодразделыДоговораПриАктивизацииСтроки(Элемент) вызывается при проходе строки, — ЭлементыФормы.ПодразделыДоговора.ТекущаяСтрока = Строка;
главное же это отловить, счас в процедуру перенесу установку в него поля строки, а потом видимо нужно обрабатывать ПриИзменении, как вы говорили в вообще я думал что при установки связи они автоматически будут, как в по последней строке, но видимо нет….
вот счасгеморно переписывать цикл, в то у меня все циклом шло:
это тот вариант, что не работал, загоняя в поля последнюю строку, хотя программно все нормально шли, и заносились в данные разные значения…
блин все равно ничего не работает ((((
реально это программирование с использованием методов ничего не дало ( все сводится как в переписывается все по последнему значению (
Я не могу вывести значения, ЭлементыФормы.ПодразделыДоговора.УстановитьДействие(«ПриАктивизацииСтроки», Новый Действие(«ПодразделыДоговораПриАктивизацииСтроки»)); и вызывается после строки ЭлементыФормы.ПодразделыДоговора.ТекущаяСтрока = Строка; но нифига все равно не работает, все сводится к одной последней строке((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
как мне в создаваемые поля то запихать знеачения строки???????????????????? что бы они были разные, а не переписывались под конец работы цикла на последнюю строку
| на вот это ругается так нельзя
короче переписывается на последнюю строку и все (((( | ПодразделДоговора.Данные = «ЭлементыФормы.ПодразделыДоговора.ТекущиеДанные.Подраздел»; | я там создаю элемент и мне надо задать значение в данные, в значение не могу, так как я не знаю название элемента, надоело мне этот велик крутить (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
моя тебя совсем не понимать, скажи по русски
ЗНАЧЕНИЯ Я ПОМЕЩАЮ ВОТ ТАК РазделДоговора.Данные = «ЭлементыФормы.ПодразделыДоговора.ТекущиеДанные.Раздел»; ПодразделДоговора.Данные = «ЭлементыФормы.ПодразделыДоговора.ТекущиеДанные.Подраздел»; ЦИКЛ ОТРАБАТЫВАЕТ И ВО ВСЕХ ПОЛЯХ ЗНАЧЕНИЯ ПОСЛЕДНЕЙ СТРОКИ ОБРАБАТЫВАЕМОЙ ТАБЛИЦЫ
так блин конечно же так не получится: РазделДоговора.Данные = «ЭлементыФормы.ПодразделыДоговора.ТекущиеДанные.Раздел»; он же устанавливается на текущие данные, строка поменалясь и данные тоже. храни тогда номер строки что ли.. как бы так..
да я пробовал устанавливать нужную строки и задавать, что то не догоню никак….
ну а если так? Элемент.ТекущаяСтрока.Раздел или Элемент.ТекущаяСтрока.Подраздел тоже ничего не выйдет? или надо именно через ЭлементыФормы ? можно так ЭлементыФормы.ПодразделыДоговора.ТекущаяСтрока.Раздел или ЭлементыФормы.ПодразделыДоговора.ТекущаяСтрока.Подраздел вы про это говорили?
счас посмотрю можно ли это затолкать в данные
(+57) не так не пойдет говорит не правильный путь к данным и все по новой (((( переписывается на последнюю строку (((((
как хранить номер строки???? | и что все же задавать в РазделДоговора.Данные или в ПодразделДоговора.Данные
весь вопрос в том, что запихивать в: РазделДоговора.Данные и в ПодразделДоговора.Данные | что бы не переписывалось это на последущие строки (!
1) ты странно здесь вот так идешь: а строка на одном месте стоит.. 2) создавай реквизиты, присваивай им значения текущей строки при обходе, и присваивай данным эти реквизиты. можешь использовать свойство формы «ДополнительныеСвойства»
я вызываю ЭлементыФормы.ПодразделыДоговора.ТекущаяСтрока = Строка; что бы вызывалась процедура ПодразделыДоговораПриАктивизацииСтроки(Элемент) как иначе её вызвать? почему строка на месте стоит??? она перемещается по циклу
переменных то я могу хоть сколько получать, но в «Данные» надо указывать же путь данным !!! я не знаю названия поля и в значения не могу задавать….
сорри, я не знаю что такое «ДополнительныеСвойства»
если закоментачить эту строку | | то ПодразделыДоговораПриАктивизацииСтроки(Элемент) вообще не будет вызываться (
ПодразделыДоговора а это справочник?
короче в данные можно только так пихать ((( «ЭлементыФормы.ПодразделыДоговора.ТекущиеДанные.Раздел» иначе выдает ошибки….не правильный путь к данным там, и прочее …
это табличная часть у документа
у неё 2 поля, Раздел и Подраздел если разделы повторяются то я их пропускаю выводя один, как и в отчете ну и вывожу подразделы к каждому разделу, хочу вывести это в поля ввода что бы потом изменять , редактировать …
ну тогда кажись, да, ты прав, никак! просто запоминать и по номерам строк если.. полеввода1=номерстроки1,…
что запоминать то? в данные надо прописывать путь с ТекущиеДанные и в полях везде будут одинаковые значения (((( как сделать то что нужно я не понимаю (
дело в том что я эту таблицу заполняю при смене договора на форме может тогда добавить в неё поле «ИмяПоляВвода» и создавать поле на каждую строку и тогда оно его и менять будет? что то уже никак не соображаю (
так ты же хошь сразу хранить несколько ссылок, т.е. текущих данных.. а они только одни вроде в нужный момент
да я счас вообще ничего не понимаю (
дело в том что поля эти я хочу держать динамически создавая программно так как в них можно редактировать сразу длинный текст
а сколько их будет всего это не известно, они делаются в справочниках и к каждому договору может быть привязанно несколько разделов а к каждому разделу несколько подразделов
я просто не понимаю что надо делать, все что нужно не работает как нужно, и что это за херня не понятно !!!
я короче не знаю зачем тебе это нужно редактировать сразу несколько и одновременно, редактируй по отдельности каждую отдельную текущую строку, и все будет ок!
я хочу сделать редактор таблицы, в полях подразделы договора которые желательно редактировать все вместе, такое ТЗ
я сам понимаю что занимаюсь хренью какой то но такова задача, что делать то, вот бъюсь в поисках решения! Плюнуть всегда можно будет
дело в том что в данные Элемента надо всегда прописывать ТекущиеДанные, это так? тогда ничего не будет работать и пытаться не стоит ((((
все будет переписываться на последнюю строку
генерь элементы формы при открытии, а потом после изменения перезаписывай табличную часть, и все..
смысл был в больших полях для редактирования объемных текстовых разделов договора …
что я хотел сделать через поля ввода, счас только наверное если на каждый раздел свою колонку сделать только можно наверное будет возить через .ТекущиеДанные.
не нереально потома же надо будет хранить всю эту структура а созданная программно она наверное не сохранится
хочу счас сделать большое поле для редактирования текста в строке вызываемое по клику, что то типа этого
Тэги:
Комментарии доступны только авторизированным пользователям
Содержание
- Как программно установить событие для элемента формы?
- Похожие FAQ
- Еще в этой же категории
- УстановитьДействие в расширении.
- Программное добавление колонки в ТЧ
- Привязать обработчик события к табличному полю
- Обработчик ПриИзменении для ячейки, созданной программно
Как программно установить событие для элемента формы?
Похожие FAQ
Еще в этой же категории
Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом » ДинамическийСписок» В поле » Основная табли Как установить параметр динамического списка? 17
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Заполнение списка значений в элементе поле выбора на форме 11
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Источник
УстановитьДействие в расширении.
Платформа: 1С:Предприятие 8.3 (8.3.12.1790)
Как программно установить действия для полей ввода (ПриИзмененииПеред, ПриИзмененииПосле, ПриИзмененииВместо) в расширении конфигурации?
По идеи должно быть что-то вроде этого
Но если бы это работало — вопроса бы не было.
(1)А так и не будет работать. Что за объект — Номенклатура?
Вот как у меня например работает
(2)Элементы.Номенклатура это поле ввода.
Все правильно, ваш код работает, но это не то что я спрашиваю.
Меня интересует именно как указать, директиву например «После» для событий полей ввода в расширении — программно.
Грубо говоря: что мне с этим кодом нужно сделать чтобы 1с поняла, что процедуру нужно выполнять именно после соответствующего события на форме основной конфигурации.
Или совсем по-простому: как сделать так, чтобы добиться такого-же эффекта как на скрине, пользуясь только кодом?
(5)На скрине свойства формы расширения (у основной конфигурации нет разделения событий по директориям: Перед, после и Вместо).
Мне нужно во-первых понять можно ли такое делать в принципе? Мне нужно делать такие дополнительные обработчики к элементам формы основной конфигурации, но я не хочу замещать стандартную процедуру своей.
(4) Замечательная идея — благодарю.
Из того что я начитал везде, где только можно, вот прям как я хочу — делать нельзя.
Но ваш вариант — очень хорошая альтернатива 10/10))
словил зацикливание при таком решении. Решил дополнить
Столкнулся с проблемой что не отрабатывает добавить в расширение обработчика действия как расширение метода, нарисовал костыль
При создании на сервере:
//устанавливаем действие, при этом типовой код не отработает(без наших усилий в обработке действий)
Элементы.БанковскийСчет.УстановитьДействие(«ПриИзменении», «ПИК_БанковскийСчетПриИзмененииПосле»);
//Данный реквизит нужен что бы избежать зацикливания в обработке события
ДобавляемыеРеквизиты = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы(«ПИК_Выполнено»,Новый ОписаниеТипов(«Булево»));
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
ЭтотОбъект.ПИК_Выполнено = Ложь;
&НаКлиенте
Процедура ПИК_БанковскийСчетПриИзмененииПосле(Элемент)
имяСтароеДействие = «БанковскийСчетПриИзменении(Элемент)»;
Если Не ЭтотОбъект.ПИК_Выполнено Тогда
ЭтотОбъект.ПИК_Выполнено = Истина;
Выполнить(имяСтароеДействие);
КонецЕсли;
ЭтотОбъект.ПИК_Выполнено = Ложь;
//наше действия
НастройкаВидимостиИДоступностиПриПеремещенииВ1Организации();
Источник
Программное добавление колонки в ТЧ
(3)То что они добавляются программно как то ущемляет их права?шучу )
Расширение элементов управления принадлежащих табличному документу.УстановитьДействие (Spreadsheet document controls extension.SetAction)
Расширение элементов управления принадлежащих табличному документу (Spreadsheet document controls extension)
УстановитьДействие (SetAction)
Синтаксис:
Тип: Строка.
Имя события.
(обязательный)
Тип: Действие.
Устанавливаемое действие.
Описание:
Устанавливает новую процедуру-обработчик (действие) для указанного события.
Толстый клиент.
Примечание:
Процедура должна быть экспортируемой и располагаться в модуле формы, при этом количество параметров должно совпадать с необходимым количеством параметров события, инициирующего вызов действия
(4) спасибо Вам большое, буду пробовать =) То есть будет
НоваяКолонка.УстановитьДействие(«ПриИзменении»,Колво1ПриИзменении);?
Ошибка: <ОбщийМодуль.ДоработкиКлиент.Модуль(335)>: Метод объекта не обнаружен (УстановитьДействие)
НоваяКолонка.УстановитьДействие(«ПриИзменении»,ПерерасчетРазницыФактаИПлана);
переделала через элементУправления:
НоваяКолонка.ЭлементУправления.УстановитьДействие(«ПриИзменении»,ПерерасчетРазницыФактаИПлана);
Ошибка: <ОбщийМодуль.ДоработкиКлиент.Модуль(335)>: Ошибка при вызове метода контекста (УстановитьДействие)
НоваяКолонка.ЭлементУправления.УстановитьДействие(«ПриИзменении»,ПерерасчетРазницыФактаИПлана);
В обработчике ПриИзменении есть параметр Элемент(на его отсутствие ругается)
по причине:
Процедура, указанная в качестве обработчика события, имеет неверное количество параметров
Источник
Привязать обработчик события к табличному полю
Обработчик события (последняя строка в коде) не отрабатывает.
также в строке ПолеРегистра.Данные=»ВГС_ЗамечанияПоСогласованиюДокумента»; возникает ошибка, т.е. не заполняется это свойство табл.поля.
Событие «ПриНачалеРедактирования» должно содержать три параметра:
В синтаксис помощнике описано следующее:
ТабличноеПоле (TableBox)
ПриНачалеРедактирования (OnStartEdit)
Синтаксис:
Тип: Булево.
Признак редактирования новой строки. Имеет значение Истина, если строка была добавлена или скопирована.
Тип: Булево.
Если данный параметр имеет значение Истина, то выполняется копирование строки.
По факту необходимо описывать:
ПриНачалеРедактирования( , , )
где — это элемент управления, который является источником события.
Данный обработчик для обычных форм должен находится в контексте формы.
Таким образом в модуле формы должна быть описана процедура
Что же касается строки:
ПолеРегистра.Данные=»ВГС_ЗамечанияПоСогласованиюДокумента»;
То «ВГС_ЗамечанияПоСогласованиюДокумента» должен быть реквизитом формы, либо реквизитом объекта, являющегося основным реквизитом формы, если это не так, то таких данных не существует. Но ни кто не запрещает сделать так:
ПолеРегистра.Значение = Новый (Тип(«РегистрСведенийСписок.ВГС_ЗамечанияПоСогласованиюДокумента»));
А затем далее устанавливать для этого значения отборы, обновлять и т.п., например:
ЭлементыФормы.ВГС_ЗамечанияПоСогласованиюДокумента.Значение.Обновить();
Источник
Обработчик ПриИзменении для ячейки, созданной программно
Нужно, чтобы при изменении ячейки с единицей измерения выбирались только те элементы справочника ЕдиницыИзмерения, владельцем которых выступает определённый элемент справочника номенклатура.
Я не тем путём иду?
вот код (примерно), индексы чтобы понятно было:
как сделать так, чтобы в колонке с единицей измерения при изменении в списке подбора были только те элементы справочника ЕдиницыИзмерения, у которых владелец — тот, что в нулевой колонке?
(26) Попытка номер 2.
что написано в поле «Данные» свойств табличного поля?
(30) при выборе в элементе управления, конечно, я неправильно в (24) выразился.
короче, при изменении в ячейке.
(40) хм, а в чём радость?
нужен выбор единицы измерения по владельцу при изменении именно в ячейке .ЕдиницаИзмерения
у тебя получается, что при изменении номенклатуры загружается только его базовая единица.
(43) таблица установки цен:
| Магазин 1 | Магазин 2 |
Номенклатура | Цена | Ед. изм. | Цена | Ед. изм. |
—————+——+———-+——+———-+
Marlboro | 32 | пачка | 34 | пачка |
Marlboro | 640 | блок | 680 | блок |
Яйца 1 кат. | 20 | 1 дес. | 21 | 1 дес. |
Яйца 1 кат. | 60 | 3 дес. | 63 | 3 дес. |
Нужно, чтобы когда пользователь выбирает единицу измерения в ячейке, то выбирались только те элементы справочника ЕдиницыИзмерения, у которых владелец — элемент номенклатуры в первой колонке. Т.е. чтобы для яиц не выбралась единица «блок» и т.д.
Сразу по (46): нельзя описать колонки заранее, они формируются динамически (для каждой структурной единицы), структурных единиц много, поэтому пользователь вначале при запуске обработки выбирает, для каких структурных единиц ему нужно установить/изменить/удалить цены, формируются колонки, получаются текущие цены из регистра и выводятся в таблицу.
можно ещё сделать свои формы добавления и редактирования строки табличного поля (чтобы не прямо в поле редактировать), но тоже некрасиво
но так наверное и сделаю как ты посоветовал.
Использование:
Только чтение.
Описание:
Номер элемента объекта, с которым связано по типу поле ввода. Например, если поле ввода связано со ссылкой на счет, то номер элемента будет обозначать номер вида субконто, из которого будет взят тип для отработки связи.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Нумерация начинается с 1.
(51) да это всё равно не то.
а как по данной строке объекта ТаблицаЗначений получить соответствующую строку в объекте ТабличноеПоле?
Источник
0 / 0 / 0
Регистрация: 21.12.2017
Сообщений: 15
1
Ошибка при вызове метода контекста(Добавить)
20.05.2021, 01:00. Показов 3674. Ответов 1
Здравствуйте. Необходимо было изобразить игру Сапёр в 1С, по заданию из задачника Чистова. Код ниже.
По итогу столкнулся с проблемой: {Обработка.сапер.Форма.Форма.Форма(35)}: Ошибка при вызове метода контекста (Добавить)
Группа = ЭтаФорма.Элементы.Добавить(«Ряд «+Х,Тип(«ГруппаФормы»),Элементы.ИгровоеПоле);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
Недопустимое значение параметра (параметр номер ‘1’)
как решить?
1C | ||
|
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0