Дополнительные реквизиты без изменения конфигурации.

30.09.10

Разработка - Механизмы типовых конфигураций

Данная статья предназначена для начинающих программистов 1с. Конфигурация Бухгалтерия предприятия, редакция 2.0 (2.0.14.5) . Платформа 8.2 (8.2.11.236).

Скачать исходный код

Наименование Файл Версия Размер
ДопРеквизит.epf
.epf 7,46Kb
115
.epf 7,46Kb 115 Скачать

В качестве примера рассмотрим документ «Счет на оплату покупателю». Просмотреть доп. реквизиты можно нажав кнопку на панели (см рис 1). Создадим реквизит с наименованием «Примечание к счету» и типом «Строка». Заполним значение произвольным текстом. В результате получим... (см рис 2).  Этот доп. реквизит будет во всех документах «Счет на оплату покупателю». Ниже приведен пример кода (скопирован из конфигурации) с помощью которого можно получить реквизит и его значение.

НазначениеСвойств      = ОбщегоНазначения.ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке(ДокументСсылка);
ОбъектОтбораЗначений   = ДокументСсылка;
ОбъектОтбораНазначений = ДокументСсылка;

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

Записать значение программно

Процедура ОсновныеДействияФормыЗаписатьНовоеЗначение(Кнопка)
    НазначениеСвойств      = ОбщегоНазначения.ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке(ДокументСсылка);
    ОбъектОтбораЗначений   = ДокументСсылка;
    ОбъектОтбораНазначений = ДокументСсылка;
 
    Запрос = Новый Запрос();
 
    Запрос.УстановитьПараметр("НазначениеСвойств",       ?(НазначениеСвойств = Неопределено, ОбщегоНазначения.ПолучитьСписокНазначенийСвойствКатегорийОбъектовПоСсылке(ОбъектОтбораЗначений), НазначениеСвойств));
    Запрос.УстановитьПараметр("ОбъектОтбораЗначений",    ОбъектОтбораЗначений);
 
    Запрос.Текст = "
    |ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
    | СвойстваОбъектов.Наименование                               КАК СвойстваОбъектовНаименование,
    | СвойстваОбъектов.ПометкаУдаления                            КАК ПометкаУдаления,
    | СвойстваОбъектов.Ссылка                                     КАК Свойство,
    | РегистрСведений.ЗначенияСвойствОбъектов.Значение            КАК Значение
    |
    |ИЗ
    |// Отбираются свойства, предназначенные для заданного типа объектов.
    | (
    | ВЫБРАТЬ
    |  ПланВидовХарактеристик.СвойстваОбъектов.Ссылка          КАК Ссылка,
    |  ПланВидовХарактеристик.СвойстваОбъектов.Наименование    КАК Наименование,
    |  ПланВидовХарактеристик.СвойстваОбъектов.ПометкаУдаления КАК ПометкаУдаления
    |
    | ИЗ
    |  ПланВидовХарактеристик.СвойстваОбъектов
    |
    | ГДЕ
    |  ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства В ( &НазначениеСвойств )
    |
    | )                                                           КАК СвойстваОбъектов
    |
    |ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
    |// Присоединяются значения свойств, назначенные для заданного объекта.
    | РегистрСведений.ЗначенияСвойствОбъектов
    |ПО
    | РегистрСведений.ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка
    | И
    | РегистрСведений.ЗначенияСвойствОбъектов.Объект = &ОбъектОтбораЗначений
    |
    |УПОРЯДОЧИТЬ ПО
    | СвойстваОбъектовНаименование
    |";
 
    ТабЗн = Запрос.Выполнить().Выгрузить();
    ТабЗн.Колонки.Удалить(0);
 
    Для Каждого СтрокаТабЗнач  Из ТабЗн Цикл
        //Сообщить(""+СтрокаТабЗнач.Свойство +"   "+ СтрокаТабЗнач.Значение);
        Если СтрокаТабЗнач.Свойство.Наименование = "Примечание к счету"  Тогда
            НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
  
            Запись = НаборЗаписейЗначенияСвойств.Добавить();
  
            Запись.Объект   = ДокументСсылка;
            Запись.Свойство = СтрокаТабЗнач.Свойство;
            Запись.Значение = НовоеЗначение;
  
            НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(ОбъектОтбораЗначений);
  
            Попытка
                НаборЗаписейЗначенияСвойств.Записать();
                Сообщить("Успех!!!");
            Исключение
                #Если Клиент Тогда
                     Предупреждение("Не удалось записать значения свойств:" + Символы.ПС + ОписаниеОшибки());
                #КонецЕсли
            КонецПопытки;
        КонецЕсли;
    КонецЦикла;
 
КонецПроцедуры

Доп. реквизиты можно использовать в стандартных отчетах.

См. также

Ценовая власть. Выносим из цикла схему СКД

Механизмы типовых конфигураций Ценообразование, анализ цен Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

11.04.2024    499    tango    0    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    385    tango    5    

3

Ценовая власть. Второй сезон

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Бесплатно (free)

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    637    tango    0    

2

Ценовая власть (УТ 11.5) - 2

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

В прошлый раз специальной обработкой мы выбрали объекты УТ 1.5, группируя по подсистемам. Оказалось, что состав подсистем не вполне корректно отображает функциональную структуру, но зато мы нашли процедуру, которая, вроде бы, должна содержать в себе всё, что нас интересует. Обновление цен должно ведь следовать выбранной стратегии ценообразования, верно? Иначе что она обновляет...

06.04.2024    446    tango    1    

1

Ценовая власть или Управление ценообразованием (УТ 11.5)

Ценообразование, анализ цен Механизмы типовых конфигураций Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    534    tango    12    

2

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2607    YA_418728146    11    

43

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1150    8    2ncom    6    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    4972    mrXoxot    11    

100
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. БорисН 30.09.10 15:56 Сейчас в теме
А как можно программно создать свойство, если его нет, а также изменить существующее свойство документа?
Buntar79; Tsprogrammist1; +2
2. Tsprogrammist1 85 01.10.10 08:45 Сейчас в теме
(1) В ближайшее время дополню статью. :D
+
3. maxx 991 03.10.10 01:06 Сейчас в теме
ввел в карточку "Номенклатура" новое свойство "Артикул", его в Бухгалтерии нет, заполнил, начал вводить документ а "ввод по строке" по артикулу (свойство) не работает , как в Управление торговлей (где он как реквизит). Разачорован в доп.свойствах!!!!
+
4. Tsprogrammist1 85 06.10.10 07:30 Сейчас в теме
(3) Зря :D .В 1с есть «Дополнительные внешние обработки табличных частей документов». Дает большие возможности... вот пример. Как Работает читай здесь - http://www.infostart.ru/public/17140/
Прикрепленные файлы:
ДополнительныеВнешниеОбработкиТабличныхЧастейДокументов.epf
+
5. Tsprogrammist1 85 06.10.10 07:32 Сейчас в теме
В 1с есть «Дополнительные внешние обработки табличных частей документов». Дает большие возможности... вот пример. Как Работает читать здесь - http://www.infostart.ru/public/17140/
Прикрепленные файлы:
ДополнительныеВнешниеОбработкиТабличныхЧастейДокументов.epf
+
6. Buntar79 10.02.12 15:15 Сейчас в теме
БорисН 30.09.10 15:56 URL ↓Ответить
А как можно программно создать свойство, если его нет, а также изменить существующее свойство документа?

хороший вопрос, тоже хочется услышать ответ либо дополнение статьи....
+
7. dour-dead 271 17.02.12 11:56 Сейчас в теме
только в процедуре записи если необходимо записать несколько значений св-в надо создание "НаборЗаписейЗначенияСвойств" определять до цикла

НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
+
8. Максим2 9 10.08.12 17:17 Сейчас в теме
Как раз из начинающих программистов, которым адресована публикация. Сделал запрос проще:
+
9. Максим2 9 10.08.12 17:18 Сейчас в теме
ЗапросДопРеквизитов.Текст = "ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Свойство.Наименование,
| ЗначенияСвойствОбъектов.Значение.Наименование
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Объект.Ссылка = &Ссылка";

ЗапросДопРеквизитов.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

и так тоже всё работает (реквизиты и их значения получались для внешней печатной формы). Может я что и не учитываю, но сильно проще...
+
10. AlexO 135 21.09.12 11:54 Сейчас в теме
(9) Максим2,
этим запросом вы получаете только ЗАПОЛНЕННЫЕ свойства объекта (называемые 1с и здесь, в данной статье, реквизитами - хотя это совсем не так: с настоящему реквизиту даже в 1С можно обращаться напрямую, и его значения не ограничены значениями типов ПВХ).
Чтобы получить все ВОЗМОЖНЫЕ свойства объекта (и заполненные, и не заполненные) - то надо обратится и к пвхСвойстваОбъектов.
Т.е. сравнение данных из РС и из ПВХ между собой дает максимальную информацию о свойствах объекта.
+
11. buval 65 30.03.13 11:45 Сейчас в теме
Поддерживаю автора в использовании свойств объект. Результат простейшее обновление конфигурации у пользователя в дальнейшем.
+
12. dyak84 04.04.13 12:05 Сейчас в теме
Спасибо за Вашу работу она меня натолкнула на одну очень и очень нужную вещь. Так держать
+
13. WWWolfy 132 28.11.16 04:24 Сейчас в теме
В качестве ответа на вопрос:
А как можно программно создать свойство?



// -- примеры вызова --
1. Запрос.УстановитьПараметр("Свойство1", НайтиСоздатьКатегорию( "ЕстьДокументКопия" ) );
2. УстановитьКатегориюОбъекта("ЕстьДокументКопия", текФл_Копия, текДок);


// -- вспомогательные процедуры --

// Устанавливает доп.реквизит  Документа
//
// Параметры
//  НазвКат  – – Наименование устанавливаемой Категории
//  ТекЗнКат  – – Значение устанавливаемой Категории
//
Процедура УстановитьКатегориюОбъекта(НазвКат, ТекЗнКат=Истина, текОбъект, флСоздавать=Истина, текНазначениеКатегории=Неопределено ) Экспорт
		ТекСвойство = НайтиСоздатьКатегорию(НазвКат, флСоздавать, текНазначениеКатегории );
		Если Не ЗначениеЗаполнено(ТекСвойство) Тогда
			Возврат;
		КонецЕсли;

	КатОбъ=РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
	КатОбъ.Отбор.Объект.Значение=текОбъект.Ссылка;
	КатОбъ.Отбор.Объект.Использование = Истина;
	КатОбъ.Отбор.Свойство.Значение=ТекСвойство;
	КатОбъ.Отбор.Свойство.Использование = Истина;
	КатОбъ.Прочитать();
	// когда есть запись - значит Истина
	Если КатОбъ.Количество()>0 И Не ТекЗнКат Тогда// Категория Установлена, надо удалить
		КатОбъ.Очистить();
		КатОбъ.Записать();
	ИначеЕсли КатОбъ.Количество()=0 И ТекЗнКат Тогда // Категория отсутствует, надо создать
		НовЗапись=КатОбъ.Добавить();
		НовЗапись.Объект=текОбъект.Ссылка;
		НовЗапись.Свойство=ТекСвойство;
		НовЗапись.Значение=Истина;
		КатОбъ.Записать();
	Иначе// Категория актуальна
		//Ничего не меняем
	КонецЕсли;
КонецПроцедуры// Установка Категории

Функция НайтиСоздатьКатегорию( НазвКат, флСоздавать=Истина, текНазначениеКатегории=Неопределено ) Экспорт
	пвхСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НазвКат,Истина); 
	Если ЗначениеЗаполнено(пвхСвойство) Тогда
		Возврат пвхСвойство;
	КонецЕсли;
	
	Если Не флСоздавать Тогда
		Возврат ПланыВидовХарактеристик.СвойстваОбъектов.ПустаяСсылка();
	Иначе
		// создаём 
		пвхСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.СоздатьЭлемент(); 
		пвхСвойство.Наименование			= НазвКат; 
		пвхСвойство.НазначениеСвойства	= ?(текНазначениеКатегории<>Неопределено, текНазначениеКатегории, ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Документы );

		пвхСвойство.ТипЗначения = Новый ОписаниеТипов("Булево");
		пвхСвойство.Категория = Истина;
		
		пвхСвойство.Записать();
		Возврат пвхСвойство.Ссылка;
	КонецЕсли;
КонецФункции //НайтиСоздатьКатегорию
Показать
+
Оставьте свое сообщение