Работа с дополнительными реквизитами в 1С: Бухгалтерия 2.0

16.07.12

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

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

Сразу оговорюь, что всё сказаное в статье справедливо для всех конфигураций 1С, где применяются дополнительные реквизиты (т.е. конфигураций, где в основе лежат "стандартные подсистемы"). Однако, я использовал дополнительные реквизиты только в 1С: Бухгалтерия 2.0.

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

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

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

  • Возможность добавления информации к документу без изменения самого документа;
  • Возможность добавления дополнительной информации к документу без изменения конфигурации.

(Дополнительные реквизиты - это регистр сведений в котором хранится ссылка на документ и наименование дополнительного реквизита, который связан с документом. Само значение хранится в ПланеВидовХаррактеристик.)

И так, первое что нужно сделать - это добавить дополнительный реквизит, кнопка добавления располагается в командной панели журнала документов или в самом документе (в режиме предприятия):

Кнопка редактирования доп. реквизитов

 

Чтобы не модифицировать существующий журнал, я создал новый журнал документов, в котором сделал кнопку на командной панели "Проверен". Эта кнопка инвертирует статус документа "Проверено".

Код для получения статуса документа (чтения дополнительного реквизита):


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

 

Код для изменения (записи) реквизита:

 

Процедура ДействияФормыПроверен(Кнопка)

	НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
	
	СвойстваИЗначения = ПолучитьСтатус(ЭлементыФормы.ЖурналДокументовСписок.ТекущиеДанные.Ссылка);
	
	Для каждого Строка Из СвойстваИЗначения Цикл 

		Если Строка.СвойстваОбъектовНаименование = "Проверено" И Строка.Проверен <> Истина Тогда 
			Запись = НаборЗаписейЗначенияСвойств.Добавить();
			
			Запись.Объект   = ЭлементыФормы.ЖурналДокументовСписок.ТекущиеДанные.Ссылка;
			Запись.Свойство = Строка.Свойство;
			Запись.Значение = Не Строка.Проверен;
		КонецЕсли;
		
		Если ЗначениеЗаполнено(Строка.Значение) И Строка.Значение <> Ложь И Строка.СвойстваОбъектовНаименование <> "Проверено" Тогда 
			Запись = НаборЗаписейЗначенияСвойств.Добавить();
			
			Запись.Объект   = ЭлементыФормы.ЖурналДокументовСписок.ТекущиеДанные.Ссылка;
			Запись.Свойство = Строка.Свойство;
			Запись.Значение = Строка.Значение;
		КонецЕсли;
	КонецЦикла;
	
	НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(ЭлементыФормы.ЖурналДокументовСписок.ТекущиеДанные.Ссылка);
	
	Попытка 
		НаборЗаписейЗначенияСвойств.Записать();
	Исключение 
	КонецПопытки;
	
	ЖурналДокументовСписок.Обновить();
	
КонецПроцедуры 

 

Я привёл пример кода только для записи одного дополнительного реквизита "Проверен", у меня есть ещё реквизит причина заметы, но с ним всё аналогично.

 

С отчетами тоже всё просто: в универсальном отчете по документу появяться дополнительный реквизиты в группе "ссылка".

 

Права на изменение/чтение реквизита:

У меня права на изменение дополнительных реквизитов были у всех. Но их легко ограничить программно, добавив в начало процедуры чтения/записи код:

Если Не РольДоступна("ПолныеПрава") Тогда 
	Возврат;
КонецЕсли; 

или

Если Не (ИмяПользователя() = "Вася" Или Найти(ИмяПользователя(), "Петя") > 0) Тогда 
	Возврат;
КонецЕсли; 

 

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

 

UPD 16.07.2012

 

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

См. также

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

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

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

1 стартмани

11.04.2024    481    tango    0    

3

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

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

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

10 стартмани

11.04.2024    370    tango    5    

3

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

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

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

08.04.2024    570    tango    0    

2

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

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

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

06.04.2024    442    tango    1    

1

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

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

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

1 стартмани

05.04.2024    523    tango    12    

2

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

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

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

07.02.2024    2578    YA_418728146    11    

42

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

8

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

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

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

28.12.2023    4953    mrXoxot    11    

100
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Necytij 08.02.12 22:35 Сейчас в теме
Такое ощущения что статья очень старая... или может отличия конфигураций. БП Для Казахстана 2.0+. Уже давно привязано к документам "свойства" и "категории". НО тут возникает вопрос - а кто будет следить, чтобы эти реквизиты, как и документы закрытого периода, в какой-то момент переставали менятся??
Ограничения прав тогда уж лучше вписать в регистр сведений, чтобы не менять в конфигурации каждую пришедшую, ушедшую, заболевшую Машу на Катю.
+
2. ASUAndy 82 09.02.12 06:43 Сейчас в теме
(1) Necytij, писалось это, конечно, не для последней конфигурации, но не очень давно... Сейчас посмотрел в текущей конфигурации - нет "свойств" и "категорий"...
Опять же, про проверку имени пользователя я написал для расширения кругозора. Регистр сведений добавить конечно можно, я привёл возможные варианты ограничения, но можно и своё придумать: проверять период, имя сервера, день недели или свой новый регистр. Я думаю более удачный вариант проверять принадлежность к какой-либо роли.
+
3. Little-ann 15 30.06.12 16:26 Сейчас в теме
Помогло очень-очень! Работаю с Управлением небольшой фирмой, а так как лезть в конфигурацию и ломать ее под нужды заказчика не люблю, стараюсь использовать дополнительные реквизиты и сведения для хранения дополнительной информации. Из дополнительных обработок и отчетов читаю и записываю эти реквизиты. И волки сыты, и овцы целы... Спасибо.
+
4. ASUAndy 82 30.06.12 20:23 Сейчас в теме
Да, я тоже всегда стараюсь выполнить пожелания заказчика с минимальными изменениями конфигурации, я думаю, как и большенство 1Сников. Правда дополнительные реквизиты я использовал для других целей - мне нужно было чтобы пользователи не могли менять документ (может повлиять на баланс и т.д.), но могли ставить отметки на документе без ограничения по времени.
Рад что пригодилось! :)
+
5. viktorija-d 12.07.12 18:20 Сейчас в теме
Может сможете мне помочь. Делаю внешнюю печатную форму. Необходимо вытянуть на печать реквизит доп.справочника "Наименование на ин.яз." из справочника "организации", "контрагенты", "номенклатура", "банк". Ничего не выходит.
+
6. ASUAndy 82 13.07.12 12:31 Сейчас в теме
(5) viktorija-d, В смысле "Наименование на ин.яз." храниться в дополнительных реквизитах?
Тогда его можно процедуркой из статьи получить: СвойстваОбъектовНаименование = "Наименование на ин.яз.".
Я, если честно, не очень понял что такое доп. справочник...
+
7. bankir1982 13 13.07.12 15:33 Сейчас в теме
Хорошая статейка - я как раз сейчас заморачиваюсь Свойствами объектов. Жаль в статье не приведена функция ПолучитьСтатус() - так бы полностью готовое решение было бы. Сейчас что-то голова плохо соображает, надо придумать как получить текущее свойство :)
Еще раз спасибо за статью.
+
8. ASUAndy 82 16.07.12 06:57 Сейчас в теме
(7) bankir1982, А что такое ПолучитьСтатус()? Если есть доп.реквизит статус, то готовая функция есть в статье, только там этот реквизит не статусом называется, а "проверено"...
+
9. bankir1982 13 16.07.12 12:41 Сейчас в теме
(8) В процедуре изменения реквизита вторая строка
СвойстваИЗначения = ПолучитьСтатус(ЭлементыФормы.ЖурналДокументовСписок.ТекущиеДанные.Ссылка);
функция ПолучитьСтатус() похоже получает значение. Что-то я в предыдущем вопросе тупанул, похоже запрос на получение свойств можно вынести в отдельную функцию и возвращать Выборку. Потому как судя по всему функция ПолучитьСтатус() это просто запрос и возвращает он выборку.
+
10. ASUAndy 82 16.07.12 14:04 Сейчас в теме
(9) bankir1982, я тоже маленько тупанул, не понял про какую функцию Вы спросили...
Да, эта функция возвращает выборку дополнительных реквизитов для объекта... Я добавил её код в публикацию.
+
11. bankir1982 13 17.07.12 12:30 Сейчас в теме
(10) спасибо, значит я правильно подумал, что Ваша функция возвращает именно выборку :)
Еще раз огромное спасибо за статью, Вы очень меня выручили и направили меня в нужную сторону по решению своей задачи.
+
12. alika 21.12.12 10:50 Сейчас в теме
А в Бухгалтерии 3.0 еще нельзя прикрепить дополнительные реквизиты к документу? Еще не сделали? Регистр Значения дополнительных реквизитов помечены как неиспользованные...
+
13. ASUAndy 82 21.12.12 22:43 Сейчас в теме
(12) alika, К сожалению Бухгалтерию 3.0 ещё не видел...
+
14. Super-Mike 25.01.21 16:06 Сейчас в теме
Подскажите пожалуйста как посмотреть дополнительные реквизиты в Бухгалтерия 3.0
В Бухгалтерия 2.0 прям в счете были дополнительные реквизиты
А 3 не могу найти.
Прикрепленные файлы:
+
15. ASUAndy 82 26.01.21 10:08 Сейчас в теме
Теперь здесь
Прикрепленные файлы:
+
Внимание! Тема сдана в архив