academgorodok

Не отображается значение реквизита на форме 1с

Цитата: Rasty от 19 апр 2016, 17:14
посмотрите его видимость в конец процедуры ПриОткрытии()

Вот процедура модуля формы ПриОткрытии
&НаКлиенте
Процедура ПриОткрытии(Отказ)

      // МеханизмВнешнегоОборудования
   Если ИспользоватьПодключаемоеОборудование
      И МенеджерОборудованияКлиент.ОбновитьРабочееМестоКлиента() Тогда

            ОписаниеОшибки = «»;

            ПоддерживаемыеТипыВО = Новый Массив();
      ПоддерживаемыеТипыВО.Добавить(«СканерШтрихкода»);

            Если Не МенеджерОборудованияКлиент.ПодключитьОборудованиеПоТипу(УникальныйИдентификатор, ПоддерживаемыеТипыВО, ОписаниеОшибки) Тогда
         ТекстСообщения = НСтр(«ru = ‘При подключении оборудования произошла ошибка:
                               |»»%ОписаниеОшибки%»».'»);
         ТекстСообщения = СтрЗаменить(ТекстСообщения, «%ОписаниеОшибки%», ОписаниеОшибки);
         ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
      КонецЕсли;

         КонецЕсли;
   // Конец МеханизмВнешнегоОборудования

   КонецПроцедуры // ПриОткрытии()

похоже здесь ничего нет…

Добавлено: 19 апр 2016, 17:36


&НаКлиенте
Процедура ПриОткрытии(Отказ)

// МеханизмВнешнегоОборудования
Если ИспользоватьПодключаемоеОборудование
И МенеджерОборудованияКлиент.ОбновитьРабочееМестоКлиента() Тогда

ОписаниеОшибки = "";

ПоддерживаемыеТипыВО = Новый Массив();
ПоддерживаемыеТипыВО.Добавить("СканерШтрихкода");

Если Не МенеджерОборудованияКлиент.ПодключитьОборудованиеПоТипу(УникальныйИдентификатор, ПоддерживаемыеТипыВО, ОписаниеОшибки) Тогда
ТекстСообщения = НСтр("ru = 'При подключении оборудования произошла ошибка:
                      |""%ОписаниеОшибки%"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%", ОписаниеОшибки);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;

КонецЕсли;
// Конец МеханизмВнешнегоОборудования

КонецПроцедуры // ПриОткрытии()

похоже так будет лучше

alexey980

0 / 0 / 0

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

Сообщений: 14

1

Не отображаются изменения на форме после заполнения табличной части реквизита

15.04.2016, 17:10. Показов 20603. Ответов 4

Метки нет (Все метки)


Пишу внешнюю обработку для заполнения табличной части документа Реализация товаров и услуг в Конфигурации УТ 11. Суть в том, что нужно скорректировать количество для каждой позиции номенклатуры в зависимости от того, сколько данного товара есть на складе.

Код модуля объекта самой обработки:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    МассивНазначений = Новый Массив;
    МассивНазначений.Добавить("Документ.РеализацияТоваровУслуг");
    ПараметрыРегистрации.Вставить("Вид", "ЗаполнениеОбъекта");
    ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
    ПараметрыРегистрации.Вставить("Наименование", "Корректировка количества товара в РТУ");
    ПараметрыРегистрации.Вставить("Версия", "1.0");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
    ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка для корректировки количества товара в табличной части документа Реализация товаров и услуг");
    ТаблицаКоманд = ПолучитьТаблицуКоманд();
    ДобавитьКоманду(ТаблицаКоманд, "Корректировка количества по остаткам", "КорректировкаКоличестваПоОстаткам", "ВызовКлиентскогоМетода", Истина);
    ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    Возврат ПараметрыРегистрации;
КонецФункции
 
Функция ПолучитьТаблицуКоманд()
  Команды = Новый ТаблицаЗначений;
  Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
  Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
  Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
  Возврат Команды;
КонецФункции
 
Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
  НоваяКоманда = ТаблицаКоманд.Добавить();
  НоваяКоманда.Представление = Представление;
  НоваяКоманда.Идентификатор = Идентификатор;
  НоваяКоманда.Использование = Использование;
  НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
  НоваяКоманда.Модификатор = Модификатор;
КонецФункции

Здесь вопросов нет. При подключении обработки в форме документа добавляется кнопка «Заполнение / Корректировка количества по остаткам».

Дальше создаю в обработке форму и в модуле формы пишу следующий код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
    ДанныеФормыРТУОбъект = ВладелецФормы.Объект;
    ЗаполнитьОбъектНаСервере(ДанныеФормыРТУОбъект);
    КопироватьДанныеФормы(ДанныеФормыРТУОбъект, ВладелецФормы.Объект);        
    ВладелецФормы.Модифицированность = Истина;
КонецПроцедуры
 
&НаСервере
Процедура ЗаполнитьОбъектНаСервере(ДанныеФормыОбъект)
    ТЧ = ДанныеФормыОбъект.Товары;
    Для Каждого Строка Из ТЧ Цикл
        // здесь будет запрос к регистру накопления ТоварыНаСкладахОстатки, чтобы узнать остатки товара
        // пока для наглядности пусть в документе будет каждого товара по одной штуке
        Строка.Количество = 1; 
    КонецЦикла;
КонецПроцедуры

Собственно и всё, а пользователь пусть сам решает сохранять ему документ или продолжить редактирование.

Вопрос лишь в том, что изменение количества в реквизите «Товары» никак не отображается на форме документа, то есть в данном конкретном случае пользователь после изменения объекта увидит не единички в поле «Количество», а прежнее количество. Кроме того, если нажать кнопку «Записать объект», закрыть и заново открыть документ, то там по-прежнему будет старое количество, а не единички.

Как это исправить?



0



Эксперт 1С

3051 / 1998 / 524

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

Сообщений: 6,964

15.04.2016, 17:31

2

alexey980, а зачем строка КопироватьДанныеФормы()?



0



0 / 0 / 0

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

Сообщений: 14

15.04.2016, 23:20

 [ТС]

3

без копирования данных формы тоже ничего не выходит

Добавлено через 5 часов 8 минут
На самом деле, первоначальный код, можно сказать, полностью рабочий, и все-таки без КопироватьДанныеФормы() не обойтись. Просто изначально какая-то подстава вышла с колонкой таблицы Количество, в которой почему-то отображается не количество штук, а количество упаковок. Поскольку я менял значения поля Количество (а не КоличествоУпаковок), то на экране табличная часть для меня оставалась неизменной. В общем, дальше нужно разбираться именно с логикой отображения количества штук и количества упаковок табличной части реквизита Товары в форме документа РеализацияТоваровУслуг, но это уже, как говорится, другая история.



0



Модератор

Эксперт 1С

3708 / 2905 / 572

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

Сообщений: 11,442

Записей в блоге: 1

19.04.2016, 18:44

4

alexey980, Сначала ДанныеФормыВЗначение() — преобразование данных формы в объект прикладного типа
Изменяем полученную ТЗ

А потом ЗначениеВДанныеФормы() — преобразуем прикладной объект обратно в данные формы

Добавлено через 6 минут
У всех элементов объектного типа есть три состояния

1. Данные на клиенте (экземпляр объекта №1)
2. Данные на сервере (экземпляр объекта №2)
3. Данные в БД (экземпляр объекта №3)

На форме ты видишь №1 — меняешь №2 — реально сейчас в базе №3

Как работает:
Когда ты открываешь форму объекта происходит
1. считывание объекта из БД (№3)
2. конструирование объекта на сервере (№2)
3. передача данных с сервера на клиент (№1)

Когда нажимаешь кнопку записать:
1. Данные формы на клиенте переходят на сервер (№1)
2. На сервере происходит перезапись серверных данных (№2) данными (№1)
3. Серверные данные сохраняются в БД(№3)

нужно учитывать это при разработке и станет гараздо проще понять что делать и почему так происходит

Добавлено через 2 минуты
контекстный серверный вызов автоматом при изменении данных на сервере обновляет данные на клиенте, но когда ты это делаешь вне контекста формы изменяемого объекта
ты должен сам позаботиться об обновлении данных формы после изменения серверных данных

Добавлено через 5 минут
З.Ы. это я очень обобщенно написал. Где то в просторах интернета есть литература по УФ.
На самом деле там более запутанно все и еще куча нюансов с оптимизацией по передаче, перезаписи и т.д.



2



0 / 0 / 0

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

Сообщений: 14

25.04.2016, 11:19

 [ТС]

5

ещё немного полезной, на мой взгляд, информации в продолжение темы:

мне тут подсказали, что в новых конфигурациях, использующих БСП, можно для внешних обработок вида «ЗаполениеОбъекта» указывать тип команды использования «ЗаполнениеФормы» (вместо «ВызовКлиентскогоМетода»). это позволяет сразу на сервере работать непосредственно с контекстом формы самих документов, из которых вызывается обработка через передаваемый параметр ПараметрыВыполнения.ЭтаФорма. мало того, что задача заполнения документов упрощается в разы, потому что не нужно ни КопироватьДанныеФормы(), ни преобразовывать ДанныеФормыВЗначение() — так еще можно сходу менять и добавлять новые реквизиты и элементы формы на стандартные документы типовой конфигурации прямо из внешней обработки. при использовании ВызовКлиентскогоМетода это было невозможно сделать, так как на сервере нельзя было получить контекст формы владельца (то есть не формы обработки, а формы документа, из которого эта обработка вызывается) и можно было работать лишь с объектом формы владельца.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

25.04.2016, 11:19

5

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

В предприятии с формой игрались? Изменяли ее структуру (не в конфигураторе). На форме в предприятии «Все действия — Установить стандартные настройки».

Нет, в конфигураторе, добавил реквизит, по-идее должна появиться табличная часть, но не появилась. Реквизит на форму добавился, но форма не изменилась.

Почистил, ничего не изменилось.

Связь поля и реквизита есть? Тоесть «ПутьКДанным»? На форме отображаются только те элементы, у которых есть связь с реквизитами (формы или объекта).

Хм, попробовал удалить и снова поставить после очистки кеша, все появилось. Спасибо!

Да, все есть, видимо проблема все-таки была в кеше.

да не факт :) Сначала создали элемент на форме потом реквизит?

Нет :) Я сначала создал реквизит, только потом пернес его на форму :)

Перетягивали или добавляли?

Ну тогда пусть будет кэш =). Хотя я о таком впервые слышу. Как-то в УП проблем с ним еще не было.

Да я сам впервые с таким столкнулся :) Обычно тоже никаких проблем не было, а тут добавляю, а оно не добавяется :)

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

  1. Здравствуйте!Есть обработка.У нее на форме добавил реквизит Машрут(тип документСсылка.маршруты). после того в пользовательском режиме как выбираю значение реквизита документа, на форму он не отображается!

    Вложения:

    • Ссылка.jpg

  2. XXL

    Offline

    XXL
    Профессионал в 1С
    Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.281
    Симпатии:
    25
    Баллы:
    54

    Ничего не понятно, в чём проблема.


  3. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    Вы не видите на форме после запуска обработки? Если да то надо проверить сохранились ли изменения — часто забывал ;)

  4. проблема в том что в ользовательском режиме я выбираю реквизит машрут и после выбора он не отобразится на форме


  5. ТехБухПривет

    Offline

    ТехБухПривет
    Профессионал в 1С
    Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    825
    Симпатии:
    89
    Баллы:
    54

    хммм..) я понимаю конец рабочего дня, но можно более внятно? в кофигураторе добавили — это понятно, потом запускаете в предприятии и там не отображается данный реквизит или он чудесным образом пропадает после того как вы его выбираете или база взрывается матом, хватает ластик и нагло начинает стирать его с формы, а вы сделать ничего не можете?))))


  6. saha25

    Offline

    saha25
    Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    99
    Симпатии:
    3
    Баллы:
    29

    Проверьте процедуру обработки выбора, может там стоит какой-то фильтр

  7. процедур нет вообще, видимо глюк какой


  8. saha25

    Offline

    saha25
    Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    99
    Симпатии:
    3
    Баллы:
    29

    А выбираете через кнопку с тремя точками? И ни за что не поверю, что «процедур вообще нет». Покажите код формы

  9. я имел ввиду в событиях у маршрута нет процедур


  10. saha25

    Offline

    saha25
    Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    99
    Симпатии:
    3
    Баллы:
    29

    Ну а общая процедура «Обработка выбора» есть?

  11. нет,вот обработка

    Вложения:

    • Обмен.epf
      Размер файла:
      15,6 КБ
      Просмотров:
      6

  12. saha25

    Offline

    saha25
    Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    99
    Симпатии:
    3
    Баллы:
    29

    А попробуйте переименовать свой реквизит «Маршрут», скажем в «Маршрут1» А может просто нет права на просмотр?

    Последнее редактирование: 21 окт 2014


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

Доброго дня, коллеги!

Механизм расширений постоянно развивается и принципы работы с расширениями могут существенно меняться. Так произошло и с принципами заимствования формы в расширение. Если не следить за изменениями при каждом выходе новой версии платформы 1С, то можно “споткнуться” на простом примере!

Вопрос

Добрый день. У меня платформа 8.3.16.1296, в расширении в табличной части документа добавил реквизит Расш1_ПроцентСкидки, но в реквизитах формы расширения он не появляется. А мне нужно разместить его в элементах формы расширения. Что делаю неправильно? Даже если сохранить расширение, то все рано реквизит не появляется.

Расш1_ПроцентСкидки

(нажмите, чтобы увеличить картинку)

Ответ

Добрый день! Для этого необходимо выполнить явное добавление реквизита формы Объект в расширение:

Добавление реквизита формы Объект

Это нужно делать, начиная с версии платформы 8.3.14. Ранее (в версиях платформы до 8.3.14) при заимствовании формы заимствовались все объекты, необходимые для отображения формы. Теперь при заимствовании формы выполняется заимствование только элементов формы. Реквизиты, команды, параметры не заимствуются, отображаются светло-коричневым цветом (как на Вашем скриншоте) и недоступны для редактирования. Реквизиты, команды и параметры необходимо заимствовать явным образом при помощи указанной кнопки на командной панели.

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

Как же решить возникшую проблему обычному пользователю? Все просто! Давайте по порядку выполним следующий ряд действий:

  1. Перестать паниковать! Как писал Лукьяненко С. в книге «Черновик»: «Ничего так не спасает от паники, как простые и внятные действия», поэтому берем себя в руки и переходим к следующему пункту!

  2. Войти в 1С: Предприятие и перейти на ту форму, на которой не отобразился нужный нам реквизит.

  3. Вернуть форме исходный вид, то есть сбросить все пользовательские настройки для данной формы.

Для сброса пользовательских настроек сделаем следующее:

  • Откроем нужную нам форму, на которой не отобразился реквизит, в углу формы нажмем кнопку «Ещё» и выберем пункт «Настройки формы».

Возврат к стандартным настройкам

  • В открывшемся окне в правом верхнем углу нажмем по кнопке «Ещё» и в выпавшем списке выберем пункт «Установить стандартные настройки», после чего нажмем кнопку «Ок».

Установить стандартные настройки

После проделанных манипуляций с формой появится наш долгожданный реквизит (в нашем случае это поле «Основная номенклатура»).

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

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

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


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

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

Нужна помощь с 1С?

Специалисты компании «Легасофт» помогут Вам выбрать необходимое программное обеспечение и современное торговое оборудование, которое будет отвечать всем потребностям Вашего бизнеса. Торговая автоматизация помогает вести учет и контроль товара, гарантирует улучшение уровня обслуживания покупателей и повышает скорость работы персонала! Чтобы получить бесплатную консультацию по автоматизации своего бизнеса Вы можете пообщаться с нашими специалистами в офисе компании или позвонив по телефону: 8-800-707-01-02.

Мне нужна консультация

Наш специалист

Ирина Иванова

Специалист отдела разработки


Чем мы можем быть вам полезны?

Не отображается элемент формы

1С программа которая есть абсолютно в каждой организации. Как и все в нашем мире она не совершенна. Типовые конфигурации не всегда отвечают всем требованиям предприятий. Поэтому очень часто их дорабатывают дописывают сторонние программисты. Вот после таких доработок можно столкнуться с проблемой. Когда на форме не видно какого либо элемента. Давайте расскажу вам как можно исправить данную ситуацию и сделать так чтобы все элементы отображались.

И так что делать если у пользователей не отображается какой либо элемент на форме. Для начала нужно войти в 1С под администратором и если у него все ОК, проверяем настройки видимости.

На форме не видно элемент

Для примера возьму один самописный документ. Пользователь открывает его и не видит поле «Подразделение».

1C не видно элемент

Вот это.

Не видны элементы управления на форме

Открываем конфигуратор, ищем этот документ, открываем его форму и кликаем на элементе который не отображается ПКМ и выбираем «Свойства».

В форме не видно добавленного элемента управления

В окне свойств ищем пункт «Пользовательская видимость» открываем. В настройка видимость отмечаем пункт «Видимость».

Настройка видимости элементов формы

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

Понравилась статья? Поделить с друзьями:

Другие крутые статьи на нашем сайте:

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии