Готовые типовые возможности программной работы с конфигурацией Бухгалтерия 3.0. Часть 1

31.01.23

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

В предлагаемой новой статье решил собрать некоторые типовые программные возможности программной работы в 1С:Бухгалтерии 3.0.

Введение

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

Данное практическое руководство поможет вам, как всегда, сэкономить время - найти и применить описанные готовые функции.

Материал довольно известный, но, я думаю, будет полезен для всех как обновленная "шпаргалка-мануал". Для работы примеров я буду использовать самую последнюю (на конец января 2023) - 1С: Бухгалтерию предприятия 3.0 КОРП (3.0.129.19) и 1С:Платформу 8.3.22.1750.

Статью я разобью на две части, в первой - я опишу функции работы с контрагентами и организациями (точнее, получение информации о них), а во второй - посмотрим некоторые микро-функции для быстрой работы с примитивными типами - строками и датами в рамках конфигурации 1С:Бухгалтерия 3.0 (без библиотеки стандартных подсистем).

Перехожу к практическим примерам функций:

 

Примеры использования

1. Полезные функции работы с контрагентами и организациями.

1.1. Функция СведенияОЮрФизЛице(Компания, Период = '00010101', Знач БанковскийСчет = Неопределено, ПлатежВБюджет = Ложь, ГосКонтракт = Неопределено) Экспорт

Данная функция возвращает структуру - полные реквизиты компании (юридического лица или предпринимателя). Например:

СведенияОКонтрагенте = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Контрагент.ССылка, ТекущаяДата());

 

Структура выглядит вот так:

 

Рис.1 Результат применения функции СведенияОЮрФизЛице().

 

1.2. Функция ОписаниеОрганизации(СписокСведений, Список = "", СПрефиксом = Истина) Экспорт

Функция преобразовывает структуру данных, которую получили в предыдущем примере в строку. Применение функции:

СтрокаКонтрагент = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОКонтрагенте,"",);

 

Результат применения вот такой:

// ООО "Автотрейд", ИНН 7799555720, 142770, Москва г, МКАД 40-й (п Сосенское) км,
// владение № 1, строение 2, р/с 40702810100000000004, в банке ПАО СБЕРБАНК, БИК 044525225, 
// к/с 30101810400000000225

Вышеуказанные функции можно применять как для типа организация, так и для типа контрагент.

 

1.3. Функция СтруктураОрганизации(Организация) Экспорт

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

ОрганизацияСтуркт = БухгалтерскийУчетПереопределяемый.СтруктураОрганизации(Организация.Ссылка);

 

Результат вот такой:

 

Рис.2 Результат применения функции СтруктураОрганизации(). "ГО" - это головная организация.

 

1.4. Функция ПолучитьБанковскийСчетПоУмолчанию(ЮрФизЛицо, Валюта = Неопределено) Экспорт

Далее, рассмотрим "вспомогательную" функцию, позволяющую получить банковский счет по-умолчанию. Работает для контрагента и организации так же. Применяется эта функция вот так:

БанкСчетСсылка = БухгалтерскийУчетПереопределяемый.ПолучитьБанковскийСчетПоУмолчанию(Орг1.ССылка, );

 

Результат - структура основного банковского счета:

 

Рис.3 Основной банковский счет контрагента или организации.

 

Во второй части материала я перейду к рассмотрению функций общего программного интерфейса.

 

2. Полезные функции программного интерфейса конфигурации

Данные микро-функции я решил разместить здесь в статье, преследуя цель разобраться в логику их работы. Как например, первая из них - "СинонимИЗИмени" работает по строке, а не по метаданным.

 

2.1. Функция СинонимИзИмени(ИмяРеквизита) Экспорт

Данная функция возвращает синоним реквизита:

 
 Вернет синоним из имени реквизита
Функция СинонимИзИмени(ИмяРеквизита) Экспорт
	
	ДопустимыеАббревиатуры = Новый Массив;
	ДопустимыеАббревиатуры.Добавить("ИНН");
	ДопустимыеАббревиатуры.Добавить("КПП");
	ДопустимыеАббревиатуры.Добавить("НДС");
	ДопустимыеАббревиатуры.Добавить("ОС");
	ДопустимыеАббревиатуры.Добавить("НМА");
	
	СловаСинонима = Новый Массив;
	
	УровниИмени = СтрРазделить(ИмяРеквизита, ".", Истина);
	Для каждого УровеньИмени Из УровниИмени Цикл
		
		ЧастьСинонима = СтрокаСПробеламиИзСтиляТРегБезПробелов(УровеньИмени, ДопустимыеАббревиатуры); 
		
		СловаСинонима.Добавить(КапитализироватьСтроку(ЧастьСинонима));
		
	КонецЦикла;
	
	Возврат СтрСоединить(СловаСинонима, ".");
	
КонецФункции

 

 

2.2. Функция СтрокаСПробеламиИзСтиляТРегБезПробелов(СтрокаВСтилеТРегБезПробелов, МассивАббревиатур, ДекапитализироватьПервоеСлово = Ложь)

Данная функция вернет строку с пробелами, используя заглавные буквы. МассивАббревиатур - это массив исключений:

 
 Разложит строку без пробелов по заглавным буквам
Функция СтрокаСПробеламиИзСтиляТРегБезПробелов(СтрокаВСтилеТРегБезПробелов, МассивАббревиатур, ДекапитализироватьПервоеСлово = Ложь)
	
	ПервоеСлово = "";
	ОстатокСлова = СтрокаВСтилеТРегБезПробелов;
	Результат = Новый Массив;
	ДекапитализироватьСлово = ДекапитализироватьПервоеСлово;
	
	Пока ЗначениеЗаполнено(ОстатокСлова) Цикл
		ПервоеСлово = ПолучитьПервоеСловоИзСтрокиВСтилеТРегБезПробелов(ОстатокСлова, МассивАббревиатур, ДекапитализироватьСлово);
		Если СтрДлина(ПервоеСлово) <= СтрДлина(ОстатокСлова) Тогда
			ОстатокСлова = Сред(ОстатокСлова, СтрДлина(ПервоеСлово) + 1);
		Иначе
			ОстатокСлова = "";
		КонецЕсли;
		Результат.Добавить(ПервоеСлово);
		ДекапитализироватьСлово = Истина;
		
	КонецЦикла;
	
	Возврат СтрСоединить(Результат, " ");
	
КонецФункции

 

 

 

2.3. Функция ДобавитьПериод(Дата, Периодичность, КоличествоПериодов = 1) Экспорт

Данная функция добавляет период к дате в формате перечисления - "периодичности":

 
 Добавление периода
Функция ДобавитьПериод(Дата, Периодичность, КоличествоПериодов = 1) Экспорт
	
	День = 24 * 60 * 60; // Количество секунд в дне
	
	Если Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Год") Тогда
		
		Возврат ДобавитьМесяц(Дата, 12 * КоличествоПериодов);
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Полугодие") Тогда
		
		Возврат ДобавитьМесяц(Дата, 6 * КоличествоПериодов);
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Квартал") Тогда
		
		Возврат ДобавитьМесяц(Дата, 3 * КоличествоПериодов);
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Месяц") Тогда
		
		Возврат ДобавитьМесяц(Дата, 1 * КоличествоПериодов);
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Неделя") Тогда
		
		Возврат Дата + 7 * День * КоличествоПериодов;
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Декада") Тогда
		
		Возврат Дата + 10 * День * КоличествоПериодов;
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.День") Тогда
		
		Возврат Дата + 1 * День * КоличествоПериодов;
		
	Иначе
		
		Возврат Дата;
		
	КонецЕсли;
	
КонецФункции

 

 

2.4. Функция РазностьДат(ДатаНачала, ДатаОкончания, Периодичность) Экспорт

Данная функция возвращает разность дат по перечислению периодичности:

 
 Разность дат в заданной периодичности

 

Функция РазностьДат(ДатаНачала, ДатаОкончания, Периодичность) Экспорт
	
	Разность = 0;
	
	День = 24 * 60 * 60; // Количество секунд в дне
	
	Если Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Год") Тогда
		Разность = Год(ДатаОкончания) - Год(ДатаНачала);
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Полугодие") Тогда
		Разность =
			?(Месяц(ДатаОкончания) > 6, 2, 1) - ?(Месяц(ДатаНачала) > 6, 2, 1) + 2 * (Год(ДатаОкончания) - Год(ДатаНачала));
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Квартал") Тогда
		Разность = Цел(Месяц(НачалоКвартала(ДатаОкончания)) / 3) - Цел(Месяц(НачалоКвартала(ДатаНачала)) / 3)
			+ 4 * (Год(ДатаОкончания) - Год(ДатаНачала));
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Месяц") Тогда
		Разность = Месяц(ДатаОкончания) - Месяц(ДатаНачала) + 12 * (Год(ДатаОкончания) - Год(ДатаНачала));
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Декада") Тогда
		Разность = Цел((ДатаОкончания - ДатаНачала) / (10 * День));
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.Неделя") Тогда
		Разность =
			Цел((НачалоНедели(ДатаОкончания) - НачалоНедели(ДатаНачала)) / (7 * День));
		
	ИначеЕсли Периодичность = ПредопределенноеЗначение("Перечисление.Периодичность.День") Тогда
		Разность = (ДатаОкончания - ДатаНачала) / День;
		
	КонецЕсли;
	
	Возврат Разность;
	
КонецФункции

 

2.5. Функция КоличествоЦелыхЛет(ДатаНачала, ДатаОкончания) Экспорт

Определяет количество целых лет в выбранном периоде:

 
 Количество целых лет

 

Функция КоличествоЦелыхЛет(ДатаНачала, ДатаОкончания) Экспорт

	Если НЕ ЗначениеЗаполнено(ДатаНачала)
		ИЛИ НЕ ЗначениеЗаполнено(ДатаОкончания)
		ИЛИ ДатаОкончания <= ДатаНачала Тогда
		Возврат 0;
	КонецЕсли;
	
	Результат = Год(ДатаОкончания) - Год(ДатаНачала);
	
	Месяц1 = Месяц(ДатаНачала);
	Месяц2 = Месяц(ДатаОкончания);
	
	Если Месяц1 > Месяц2 Тогда
		Результат = Результат - 1;
	ИначеЕсли Месяц1 = Месяц2 
		И День(ДатаНачала) > День(ДатаОкончания) Тогда
		Результат = Результат - 1;
	КонецЕсли;

	Возврат Результат;

КонецФункции

 

2.6. Функция КоличествоЦелыхМесяцев(ДатаНачала, ДатаОкончания) Экспорт

Вернет количество целых месяцев между двумя датами:

 
 Определить количество целых месяцев

 

Функция КоличествоЦелыхМесяцев(ДатаНачала, ДатаОкончания) Экспорт

	Если НЕ ЗначениеЗаполнено(ДатаНачала)
		ИЛИ НЕ ЗначениеЗаполнено(ДатаОкончания)
		ИЛИ ДатаОкончания <= ДатаНачала Тогда
		Возврат 0;
	КонецЕсли;

	Результат = (Год(ДатаОкончания) - Год(ДатаНачала)) * 12 + (Месяц(ДатаОкончания) - Месяц(ДатаНачала));

	Если День(ДатаНачала) > День(ДатаОкончания) Тогда
		Результат = Результат - 1;
	КонецЕсли;
	
	Возврат Результат;

КонецФункции

 

2.7. Функция НомерКвартала(Дата) Экспорт

Функция вернет номер квартала, к которому принадлежит аргумент - дата:

 
 Номер квартала

 

Функция НомерКвартала(Дата) Экспорт
	
	Возврат Месяц(КонецКвартала(Дата)) / 3;
	
КонецФункции

 

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

Перейдем к заключению и сделаем выводы:

 

Заключение и выводы статьи

В материале я разобрал (обновил) информацию о типовых программных возможностях - функциях и процедурах, которые уже встроены в типовую 1С:Бухгалтерию 3.0. Данный функционал - готов к применению, он не имеет отношения к Библиотеке стандартных подсистем.

Хотя я и использовать КОРП версию (3.0.129.19) эти возможности так же справедливы для базовой и проф версии данной конфигурации.  При написании данной статьи, я использовал так же одну из последний платформ - 8.3.22.1750.

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

Всем кому интересно - можете так же ознакомиться с другими моими материалами:

 

Система контроля ведения учета [БСП]

Базовые принципы работы с регламентными заданиями подсистем БСП

Стандартные подсистемы БСП - параметры работы клиента и возможности диалогов

Основные возможности работы с файлами в типовой конфигурации на БСП

 

В заключение статьи напишу:

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

Спасибо за изучение статьи и оценку материала. Всем привет - пока и до новых встреч!

бухгалтерия типовые возможности организация контрагенты 3.0 КОРП функции процедуры

См. также

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

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

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

07.02.2024    2354    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    1021    6    2ncom    3    

8

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

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

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

28.12.2023    4836    mrXoxot    11    

99

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

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

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

08.11.2023    7070    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    1930    ICL-Soft    3    

12

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

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

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

18.07.2023    2158    it_box    1    

7

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

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

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

05.06.2023    6960    biimmap    4    

41
Отзывы
8. quazare 3587 03.02.23 10:06 Сейчас в теме
Всем спасибо за комментарии, вторая часть статьи использует функционал общего модуля БП 3.0 - ОбщегоНазначенияБПКлиентСервер


Все анонсы на новые публикации вы можете прочитать у меня на телеграм канале quazareline
shu_vol; Cmapnep; +2 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. sapervodichka 6754 31.01.23 22:42 Сейчас в теме
Где ты вчера был? =)))
quazare; vld1973; erutan; +3 Ответить
2. vld1973 85 01.02.23 10:13 Сейчас в теме
Как всегда спасибо за статью, положу в базу знаний
3. babys 90 01.02.23 10:32 Сейчас в теме
Вот реально что должно быть в ЖКК для поддержки программистов.
klaus38; quazare; user840914; +3 Ответить
4. kser87 2438 01.02.23 11:11 Сейчас в теме
Крутейшая подборка! Спасибо!
5. RustIG 1382 01.02.23 13:39 Сейчас в теме
(0)
Пункт 2.3
я бы написал так - более элегантно что ли:
Перем СоответствиеМесяцев;
Перем СоответствиеДней;

Функция ДобавитьПериод(Дата, Периодичность, КоличествоПериодов = 1) Экспорт
	
	КолвоМесяцев = СоответствиеМесяцев.Получить(Периодичность);
	Если КолвоМесяцев <> Неопределено Тогда
		Возврат ДобавитьМесяц(Дата, КолвоМесяцев * КоличествоПериодов); 
	Иначе
		КолвоДней = СоответствиеДней.Получить(Периодичность);
		Если КолвоДней <> Неопределено Тогда
			Возврат Дата + КолвоДней * 86400 * КоличествоПериодов;
		Иначе
			Возврат Дата;
		КонецЕсли;
	КонецЕсли;		 	
	
КонецФункции 

СоответствиеМесяцев = Новый Соответствие;
СоответствиеМесяцев.Вставить(ПредопределенноеЗначение("Перечисление.Периодичность.Год"), 12); 
СоответствиеМесяцев.Вставить(ПредопределенноеЗначение("Перечисление.Периодичность.Полугодие"), 6);
СоответствиеМесяцев.Вставить(ПредопределенноеЗначение("Перечисление.Периодичность.Квартал"), 3);
СоответствиеМесяцев.Вставить(ПредопределенноеЗначение("Перечисление.Периодичность.Месяц"), 1);

СоответствиеДней = Новый Соответствие;
СоответствиеДней.Вставить(ПредопределенноеЗначение("Перечисление.Периодичность.Неделя"), 7);
СоответствиеДней.Вставить(ПредопределенноеЗначение("Перечисление.Периодичность.Декада"), 10); 
СоответствиеДней.Вставить(ПредопределенноеЗначение("Перечисление.Периодичность.День"), 1);
Показать


https://infostart.ru/1c/articles/1768304/
6. Cmapnep 18 01.02.23 13:53 Сейчас в теме
Спасибо, полезно!
Просьба добавить для функций раздела 2 указание на модуль, в котором они находятся или строку их вызова, как в разделе 1
7. rutadmeen 80 01.02.23 15:37 Сейчас в теме
Хорошая статья. еще бы везде были примеры вызова и получаемого результата
8. quazare 3587 03.02.23 10:06 Сейчас в теме
Всем спасибо за комментарии, вторая часть статьи использует функционал общего модуля БП 3.0 - ОбщегоНазначенияБПКлиентСервер


Все анонсы на новые публикации вы можете прочитать у меня на телеграм канале quazareline
shu_vol; Cmapnep; +2 Ответить
9. triviumfan 93 07.02.23 10:05 Сейчас в теме
Почему типовое описание функций не указываете?
Оставьте свое сообщение