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

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 Конфигурации 1cv8 Бесплатно (free)

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

07.02.2024    2351    YA_418728146    11    

40

Регистры накопления в 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    1015    6    2ncom    3    

8

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

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

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

28.12.2023    4831    mrXoxot    11    

99

Ключи аналитик учета в ЕРП, КА, УТ

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

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    7047    ids79    25    

74

Распределение по базе среднего в ЗИКГУ 3.1

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

Результат расчета начислений (отпуск, БЛ и т.д.) может распределятся по базе среднего заработка. У таких начислений на вкладке "Налоги, взносы, бухучет" стоит галка "По базе среднего заработка". Но бывают случаи, что данное распределение необходимо скорректировать.

1 стартмани

14.09.2023    445    2    Vlx    0    

1

Расширение типового механизма настройки заполнения бухгалтерской отчетности (на примере конфигурации 1С:ERP. Управление холдингом 3.1.8.15)

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

В статье приведен алгоритм доработок типового механизма настройки заполнения бухгалтерской отчетности на примере конфигурации 1С:ERP. Управление холдингом (3.1.8.15). Цель доработок - сделать процесс настроек более гибким и удобным для пользователей

11.09.2023    1928    ICL-Soft    3    

12

Разбор механизма "Настройки полей формы" в 1С:ERP. Управление холдингом

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

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

18.07.2023    2156    it_box    1    

7

Работа с контактной информацией. Часть 2

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

Во второй части статьи рассмотрим вопрос преобразования адреса из старого формата в новый. Рассмотрим реальные задачи, связанные с контактной информацией.

05.06.2023    6951    biimmap    4    

41
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 И ТекЗнКат Тогда // Категория отсутствует, надо создать
		НовЗапись=КатОбъ.Добавить();
		НовЗапись.Объект=текОбъект.Ссылка;
		НовЗапись.Свойство=ТекСвойство;
		НовЗапись.Значение=Истина;
		КатОбъ.Записать();
	Иначе// Категория актуальна
		//Ничего не меняем
	КонецЕсли;
КонецПроцедуры// Установка Категории

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

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