Как установить одно значение реквизита документа

Очень часто при создании различных документов отчетов требуется устанавливать для различных объектов значения по умолчанию. В первую очередь это требуется для ускорения заполнения документов и удобства пользователей. Например, если какой-то реквизит практически всегда должен иметь одно значение зачем его постоянно заполнять вручную. Установить значение по умолчанию можно разными способами, в сегодняшней статья рассмотрим реквизит с типом поле ввода, и посмотрим как для него можно установить какое либо значение по умолчанию. Все это делается достаточно просто, главное нужно знать где и как это делается.

Поле ввода как задать значение по умолчанию

И так для примера я сделал документ с одним реквизитом и типом поле ввода, допустим необходимо что-бы при создании документа данное поле заполнялось автоматически.

1C Значение по умолчанию

Сделать это можно двумя способами, первый, в свойствах реквизита нужно найти раздел «Представление» и пункт «Значение заполнения» вот в нем и необходимо указать значение которое будет подставляться по умолчанию.

Как в 1С установить значение по умолчанию для поле ввода

В результате при создании нового документа сразу будет заполняться поле установленным значением.

Как в 1С установить значение по умолчанию

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

установить значение по умолчанию для поле ввода

И написать в нем вот такую строчку кода.

Объект.ПолеВвода = "0001"
Как в  установить значение по умолчанию для поле ввода 1с

Результат будет тот же самый.

1С Поле ввода как установить значение по умолчанию

Как видите все достаточно просто. Вообще ситуации могут быть разные поэтому если что-то не получается обязательно напишите об этом.

Конвертация данных как задать конкретное значение реквизиту документа

Я
   Magnetic

12.11.13 — 12:42

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

Что делаю: в ПКС документа добавил этот реквизит в качестве источника Перед выгрузкой написал: Значение = «ОдноИзНаименованийПеречисления» создал новое правило там поставил источником строку прие мником соответствующее перечисление. И в обработчике при загрузке:

Значение = ПеречислениеСсылка.СпособыБлаБла.НайтиПоНаименованию(Источник)

Что не так? Я уже запутался кажется…

  

Партнерская программа EFSOL Oblako

   mikecool

1 — 12.11.13 — 12:43

при загрузке ничего писать не надо

   Wobland

2 — 12.11.13 — 12:44

обработчик при загрузке

   mikecool

3 — 12.11.13 — 12:44

+1 и чтобы корректно конвертировалось свойство в значение нужно передавать значение того типа, которое конвертируется указанным пко

   Magnetic

4 — 12.11.13 — 12:44

(1) так ведь там тип ссылка а я строку ставлю как же не писать то?

   mikecool

5 — 12.11.13 — 12:45

Значение = Перечисления.Моеперечисление.Значение

   Magnetic

6 — 12.11.13 — 12:46

(5) я с этого начинал но в источнике вообще нет такого перечисления

   mikecool

7 — 12.11.13 — 12:47

(6) тогда у тебя должно быть пко строка-перечисление

по идее

   Magnetic

8 — 12.11.13 — 12:47

(5) (6) мне это самым первым делом в голову пришло но не прокатило … мож не там писал где писать то ?

   Wobland

9 — 12.11.13 — 12:47

(4) ты удивишься, если узнаешь, что XMLка — это вообще своего рода текстовый файл?

   Magnetic

10 — 12.11.13 — 12:48

(7) да так и сделал ПКО строка перечисление и в ПКО при загрузке написал поиск

   mikecool

11 — 12.11.13 — 12:48

(9) да я бы даже просто сказал — текстовый файл )))

   Magnetic

12 — 12.11.13 — 12:49

(9) представь себе нет я писал обработку с нуля чтоб алкоголь выгружали в не 1С прогу которую присли и требовали сдавать отчетность по ней работают люди пашет

   mikecool

13 — 12.11.13 — 12:49

(10) у тебя есть пко строка-перечисление, где перечислены пкз

у тебя есть пкс, в котором ты указываешь это пко, в перед выгрузкой пкс пишешь значение = «СтрокаИмениПеречисления»

все, больше ничего не надо

   Magnetic

14 — 12.11.13 — 12:49

(11) в курсе я ребята что это такое

   Wobland

15 — 12.11.13 — 12:49

(12) ну и пускай твоё перечисление строкой ездит

   mikecool

16 — 12.11.13 — 12:49

(12) а у меня 22 см

   Magnetic

17 — 12.11.13 — 12:50

(16) круто наверно жаль я не женщина не оценю

   Magnetic

18 — 12.11.13 — 12:51

(13) Хмм.. сча проверю так вроде не пробовал

   Magnetic

19 — 12.11.13 — 12:59

(13) Упс СтрокаИмениПеречисления это не просто наименование а ПеречислениеСсылка.СпособыБлаБла.ОдноИзНаименованийПеречисления

   Magnetic

20 — 12.11.13 — 13:02

Ссылка на несуществующий объект метаданных в правилах обмена

    Объект                 =  Строка

    ОписаниеОшибки         =  Значение не является значением объектного типа (ПКО)

    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML(2071)

    КодСообщения           =  11

   Magnetic

21 — 12.11.13 — 13:03

хоть просто наименование хоть ссылку текстом пишу

   ЧеловекИзПрошлого

22 — 12.11.13 — 13:04

(0) в пко в обработчике после загрузки Объект.МойРеквизит = Перечисления.МоёПеречисление.ВотОНО;

   Lev292

23 — 12.11.13 — 13:06

Или в ПКС в обработчике Перед выгрузкой Значение = «ВотОНО»;

   Gray776

24 — 12.11.13 — 13:07

(23) см (13) (20)

   Gray776

25 — 12.11.13 — 13:13

(7) ругается на это ПКО я так понял из-за того что строка в перечисление как я понимаю

   DexterMorgan

26 — 12.11.13 — 13:20

(23) +1

(25) Пишет значит не там или не то, перечисления строкой устанавливаются

   Gray776

27 — 12.11.13 — 13:26

(22) тоже не прокатило:

    Обработчик             =  ПослеЗагрузкиОбъекта

    ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,30)}: Переменная не определена (Перечисление)

    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(7450)

    КодСообщения           =  21

   Зойч

28 — 12.11.13 — 13:28

ПеречислениЯ

   Lev292

29 — 12.11.13 — 13:30

(28)+1 С буквой «Я» прокатило надеюсь)

   Magnetic

30 — 12.11.13 — 13:31

(28) (29) у меня все прокатило :)

   Magnetic

31 — 12.11.13 — 13:31

(27) у него незнаю

   Magnetic

32 — 12.11.13 — 13:32

:)))

   Magnetic

33 — 12.11.13 — 15:31

А вот еще вопрос:

У меня никак не стыкуются РеализацияТоваровУслуг и СчетФактураВыданный. В счете не переносится ВидСчетаФактуры. Может из-за этого быть или еще чего там завязано?

   Bisenes

34 — 15.11.13 — 13:05

Если Объект.ЭтоГруппа  = 0 Тогда

    Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду(«200»)

КонецЕсли;

Вот оно решение !!!!

Спасибо всем учавствующим, действительно помогло..

   Bisenes

35 — 15.11.13 — 13:06

(33) Именно из-за этого бросил вчера, просто реально ручник вулбючался

   Magnetic

36 — 24.11.13 — 13:45

Эммм Спасибо тем кто подсказал конечно же.

А у меня тут еще вопрос по этой теме только с таким моментом:

в Источнике нет такого реквизита в приемнике есть тип перечисление (Опять же перечисление) Но реквизит табличной части.

Как передать конкретное значение из перечисления приемника?

  

Magnetic

37 — 24.11.13 — 13:46

(36) ЗЫ если короче то ситуация один в один только в приемнике реквизит в тбличной части

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

1C
1
2
3
4
5
6
7
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
............................................................................................................
Если Условие Тогда
ТекущийОбъект.Комментарий = ТекущийОбъект.Контрагент.РегНомер; // значение "123"
ЭтотОбъект.Объект.Комментарий = ТекущийОбъект.Контрагент.РегНомер; ;
КонецЕсли;

И вот ничерта не пойму. Почему

1C
1
ТекущийОбъект.Комментарий = ТекущийОбъект.Контрагент.РегНомер;

устанавливает нужное значение Комментарий текущего объекта = «123», а комментарий ЭтотОбъект.Объект.Комментарий остается прежним, не меняется.
И так же, оставляю в коде только

1C
1
ЭтотОбъект.Объект.Комментарий = ТекущийОбъект.Контрагент.РегНомер;

так же устанавливает нужное значение «123» у Объект.Комментарий, но не меняет его у Текущего объекта.
Получается ТекущийОбъект и ЭтотОбъект.Объект это не одно и тоже????? В голове не укладывается, но каждая строка установленная в коде по одной в итоге НИЧЕГО не меняет, Комментарий в документе остается прежним как до записи и лишь сочетание двух строк, как в приведенном коде, дает результат, Комментарий записывается так как надо (устанавливает значение «123»).
Помогите разобраться как-то шарики за ролики уже убежали, никак не пойму

Добавлено через 7 минут
Перечитал, уточняю, чтобы не было кривотолков. Прекрасно понимаю, что ТекущийОбъект — это ДокументОбъект, а ЭтотОбъект.Объект — ДанныеФормыСтруктура. Но почему, чтобы вывести новое значение недостаточно установить его только в одном месте?

На чтение 6 мин. Просмотров 2.6k. Опубликовано 15.12.2019

Содержание

  1. Как изменить значение реквизита документа 1С?
  2. Изменение команд формы
  3. Изменение реквизитов формы
  4. Изменение элементов формы
  5. Документы
  6. Документы в языке 1С 8.3, 8.2 (в примерах)

Как изменить значение реквизита документа 1С?

Как изменить значение реквизита документа 1С?
Часто возникает потребность изменить какое-то значение в отдельном реквизите. И не в одном документе, в в нескольких документах. Возможно использовать запрос.
Например:

В статье был рассмотрен вопрос:
Как изменить значение реквизита документа 1С?

Платформа 1С:Предприятие позволяет программно добавлять и изменять элементы управляемой формы. Разберемся для чего это может потребоваться.

Программная модификация формы может потребоваться в нескольких случаях:

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

В управляемой форме можно программно добавить, изменить и удалить:

Все указанные операции возможны только на сервере.

Программное изменение формы имеет ограничения:

  • Удалить можно только программно добавленные реквизиты/команды/элементы. Нельзя программно удалить объекты, созданные в конфигураторе.
  • Нельзя назначить реквизит основным.

Изменение команд формы

Для управления составом команд у объекта УправляемаяФорма есть коллекция Команды . У коллекции есть несколько методов:

Коллекция Команды доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Добавить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере.

В качестве примера работы с командами формы создадим новую команду ИсторияИзменений с заголовком «История изменений…», которая будет вызвать обработчик ОтобразитьИсторию () . Создание выполняется при открытии формы.

&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
Команда = Команды . Добавить ( «ИсторияИзменений» );
Команда . Действие = «Подключаемый_ОтобразитьИсторию» ;
Команда . Заголовок = «История изменений…» ;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтобразитьИсторию ( Команда )
// действия команды
КонецПроцедуры

Обработчик команды должен располагаться в форме и иметь директиву компиляции &НаКлиенте .

Изменение реквизитов формы

Чтение состава реквизитов формы выполняется функцией ПолучитьРеквизиты ( Путь >) , возвращающей массив типа РеквизитФормы . Параметр функции указывает путь к родительскому реквизиту (в виде строки). Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.

Изменение реквизитов выполняется методом ИзменитьРеквизиты ( ДобавляемыеРеквизиты >, УдаляемыеРеквизиты >) объекта УправляемаяФорма . В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы .

Внимание!

Процесс изменения состава реквизитов является достаточно ресурсоемким. Фактически выполняется пересоздание формы. В связи с этим работа с реквизитами формы выполняется в пакетном режиме.

Создадим новый реквизит формы с именем Покупатель:

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив ;
ДобавляемыеРеквизиты . Добавить(Новый РеквизитФормы («Покупатель», Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));

// Изменения состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );

Изменение элементов формы

Для управления составом элементов у объекта УправляемаяФорма есть коллекция Элементы . У коллекции есть несколько методов:

Коллекция Элементы доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Вставить () , Добавить () , Переместить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере. Элементами коллекции могут быть:

Элементам формы можно программно назначить обработчики событий. Для этих целей предназначен метод УстановитьДействие ( ИмяСобытия >, Действие >) .

Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.

Добавление команды и связанной с ней кнопки:

// Создание команды
Команда = Команды . Добавить ( «ИсторияИзменений» );
Команда . Действие = «Подключаемый_ОтобразитьИсторию» ; // В форме должна быть процедура с указанным наименованием
Команда . Заголовок = «История изменений…» ;
// Создание кнопки и связь ее с командой
Элемент = Элементы . Добавить ( «ИсторияИзменений» , Тип ( «КнопкаФормы» ));
Элемент.ИмяКоманды = «ИсторияИзменений» ;

Добавление реквизита и связанного с ним поля ввода:

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты . Добавить (Новый РеквизитФормы ( «Покупатель» , Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));
// Изменение состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );
// Создание поля ввода и связь с реквизитом
Элемент = Элементы . Добавить ( «Покупатель» , Тип ( «ПолеФормы» ));
Элемент . Вид = ВидПоляФормы . ПолеВвода ;
Элемент . ПутьКДанным = «Покупатель» ;

Назначение элементу формы обработчика события:

ЭлементПокупатель . УстановитьДействие ( «ПриИзменении» , «Подключаемый_ПокупательПриИзменении» );

&НаКлиенте
Процедура Подключаемый_ПокупательПриИзменении ( Элемент )
// Действия события
КонецПроцедуры

Внимание!

Процедурам, которые устанавливаются в качестве обработчиков событий из кода с помощью метода УстановитьДействие () , рекомендуется задавать префикс Подключаемый_.

Внимание!

Скачать обработку с примерами программного поиска и изменения реквизитов, команд и элементов управляемой формы можно ЗДЕСЬ.

Остались вопросы?
Спросите в комментариях к статье.

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Документы

Описание:

Документ — одно из основных понятий системы 1С:Предприятие. При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и корректировка.

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

Структура каждого конкретного вида документа определяется при его создании в конфигураторе. У любого вида документа существуют реквизиты, которые создаются автоматически — это «Дата» и «Номер». Номер создается, если при конфигурировании длина номера указана больше 0. Другие реквизиты документа определяются в конфигураторе отдельно для каждого создаваемого вида документа.

Документы в языке 1С 8.3, 8.2 (в примерах)

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ


1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш


1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей.


Google maps : вывод точек на карту и режим панорамы 8
В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора


Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута:
* Географические координаты объектов, которые хранятся в базе;
* Координаты начальной и коне


Посмотреть все результаты поиска похожих

1.    Создание на форме дополнительных реквизитов в 1С 8.3 и их функции

Механизм дополнительных реквизитов в 1С 8.3 позволяет пользователю самостоятельно добавлять реквизиты к объектам, не меняя при этом конфигурации. После добавления и настройки реквизит отобразится на форме, пользователь сможет заполнить его и значения будут сохраняться в базе.

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

Имена значений дополнительных реквизитов на форме

Из-за этого возникают сложности с программным обращением к дополнительным реквизитам в 1С 8.3.

Дополнительные реквизиты на форме создаются типовой процедурой УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме:


Создание дополнительных реквизитов на форме

Посмотрим отладчиком, как выглядит форма с созданными на ней дополнительными реквизитами для программного обращения:

Форма с созданными на ней дополнительными реквизитами в 1С 8.3  

2.     Установка значения дополнительного реквизита в 1С 8.3 с помощью обращения к нему по имени

Чтобы иметь возможность программного обращения к созданным дополнительным реквизитам, нужно знать их имена на форме. Помочь разработчику узнать имена дополнительных реквизитов может специальный реквизит Свойства_ОписаниеДополнительныхРеквизитов. Его автоматически создает система, когда используется механизм дополнительных реквизитов. Тип этого служебного реквизита ДанныеФормыКоллекция. Он содержит список всех дополнительных реквизитов объекта и все сведения о них. Теперь, мы сможем найти нужный дополнительный реквизит в 1С 8.3 по имени, или по соответствующему ему свойству плана видов характеристик. Итак, обращаясь по имени к доп.реквизиту можно присвоить ему нужное значение, либо, наоборот, получить его значение и, например, как-то проверить.

Найти в плане видов характеристик интересующий нас реквизит можно по имени для разработчиков. Имя дополнительного реквизита для разработчиков видно в пользовательском режиме в нижней части формы характеристики, в разделе Для разработчиков:

Раздел Для разработчиков в нижней части формы характеристики

Вот вариант процедуры, которая получает поле доп. реквизита по его имени:

Параметры функции: форма и имя дополнительного реквизита

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

Так может выглядеть код, вызывающий процедуру и устанавливающий значение дополнительному реквизиту:

Код, вызывающий процедуру и устанавливающий значение дополнительному реквизиту в 1С 8.3

Главное преимущество использования механизма дополнительных реквизитов состоит в том, что у нас нет необходимости вносить изменения в типовую конфигурацию. При этом, зная несколько тонкостей обращения с дополнительными реквизитами в 1С 8.3, мы получаем возможность работать с ними так же свободно, как и с основными реквизитами объекта.

Специалист компании «Кодерлайн»

Екатерина Редько

Главная страница » Каталог » Программистам » 1С Предприятие 8 » Как изменить значение реквизита, при проведении документа?

Как изменить значение реквизита, при проведении документа?

Изменить значение реквизита, при проведении документа, можно следующим образом.

В Процедуре ПередЗаписью пишем такой код:

Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Не Проведен Тогда


Вконтакте

Facebook

Twitter

Google+

Одноклассники

Мой мир

E-mail

Понравилась статья? Поделить с друзьями:
  • Как установить пин код на бизнес карту сбербанка
  • Какой бензонасос поставить на газель бизнес 4216
  • Какие транспортные компании есть в невинномысске
  • Какие отчеты должна сдавать управляющая компания
  • Как установить приложение сбер бизнес на андроид