Дополнительные расходы на основе перемещения запасов в УНФ (пошаговая разработка расширения конфигурации)

17.10.19

Учетные задачи - Учет доходов и расходов

Доброго времени! Предлагаю небольшое расширение для конфигурации "Управление нашей фирмой", позволяющее включать документ "Перемещение запасов" в таблицу оснований документа "Дополнительные расходы".

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Дополнительные расходы на основе перемещения запасов в УНФ (по-шаговая разработка расширения конфигурации):
.cfe 36,83Kb
8
8 Скачать (1 SM) Купить за 1 850 руб.

 

Вместо введения

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

Опишем процесс расчета себестоимости для документа "Перемещение запасов". Проверим изменение себестоимости товара с помощью стандартного отчета себестоимость товаров в "УНФ".

При создании расширения я использовал конфигурацию "Управление нашей фирмы 1.6  (1.6.18.88)" и Платформу 8.3.15.1700.

 

Цель задачи. Основной подход

Цель задачи -  это учет дополнительных расходов при использовании документа "Перемещение запасов". Мы делаем перемещение запасов - несем дополнительные расходы (например, транспортные). Поэтому, на складе, куда будет перемещена продукция, ее себестоимость должна быть выше, чем на складе откуда отправлена.

Привяжем дополнительные расходы к документы "Перемещение товаров". Типовой функционал УНФ такую привязку не предусматривает.

Основной подход - это доработка документа "Дополнительные расходы" в два шага. 

 

Первый шаг.

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

Второй шаг.

Создадим расширение, перенесем необходимые объекты в расширение и доработаем существующие процедуры.

 

Шаг №1. Доработка типов реквизитов в основной конфигурации

Как я написал ранее, механизм расширений не позволяет изменять тип реквизитов. А это нам понадобится. Делаем следующее: В документе "Дополнительные расходы" в табличной части запасы, добавляем в реквизит "ДокументПоступления" дополнительный тип "Документ  - ПеремещениеЗапасов" (см рис.1)

 

Рис.1 Изменение типа реквизита "ДокументПоступления" в документе "Дополнительные расходы".

 

Так же, нам потребуется изменить типы на форме "ФормаПодбораПоДокументам". Изменения такие - ТаблицаЗначений "ОтобранныеДокументы" - реквизит "ДокументПоступления", добавляем тип "ПеремещениеЗапасов" (см. рис.2)

 

Рис.2. Изменение типа реквизита на форме подбора по документам - ОтобранныеДокументы - ДокументПоступления.

 

и здесь - ТаблицаЗначений - "ОтобранныеЗапасы" - так же реквизит "ДокументПоступления" - добавляем тип "ПеремещениеЗапасов" (см. рис.3):

 

Рис.3. Изменение типа реквизита на форме подбора по документам - ОтобранныеЗапасы - ДокументПоступления.

 

На этом изменения основной конфигурации больше не потребуется, сохраняем конфигурацию.

 

Шаг №2. Создание и запуск расширения

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

 

Рис.4. Добавление в расширение

 

Что мы добавляем:

Документ "ДополнительныеРасходы", его реквизиты и табличную часть "Запасы". Так же "перекинем" форму документа "ФормаПодбораПоДокументов". Все связанные объекты "перенесутся сами" по типам реквизитов. Исключения составят реквизиты, у которых несколько типов - как раз те, куда мы добавляли дополнительный тип.

Переназначим на этих реквизитах типы соответствующие типа реквизитов основной конфигурации.

В итоге переноса должно получиться примерно так (см. рис.5):

 

Рис.5. Пример состава расширения.

 

Переходим к основным доработкам кода. Нам потребуется доработать несколько процедур в модуле формы "ФормаПодбораПоДокументам". Мы перенесли эту форму и дорабатывать будем в перенесенной конечно.

 

МножественныйПодборДокументов:

&НаКлиенте
&Вместо("МножественныйПодборДокументов")
Процедура Расш1_МножественныйПодборДокументов(Команда)
	
	СписокТиповДокументов = Новый СписокЗначений();
	СписокТиповДокументов.Добавить("АвансовыйОтчет", "Авансовый отчет");
	СписокТиповДокументов.Добавить("ПриходнаяНакладная", "Приходная накладная");
	СписокТиповДокументов.Добавить("ПеремещениеЗапасов", "Перемещение запасов");
	Оповещение = Новый ОписаниеОповещения("МножественныйПодборДокументовЗавершение", ЭтаФорма);
	СписокТиповДокументов.ПоказатьВыборЭлемента(Оповещение, "Выберите тип документа для добавления");
	
	Отказ = Истина;
	
КонецПроцедуры

 

СписокДокументовПередаНачаломДобавления:

&НаКлиенте
&Вместо("СписокДокументовПередНачаломДобавления")
Процедура Расш1_СписокДокументовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
	
	СписокТиповДокументов = Новый СписокЗначений();
	СписокТиповДокументов.Добавить("АвансовыйОтчет", "Авансовый отчет");
	СписокТиповДокументов.Добавить("ПриходнаяНакладная", "Приходная накладная");
	СписокТиповДокументов.Добавить("ПеремещениеЗапасов", "Перемещение запасов");	
	
	Оповещение = Новый ОписаниеОповещения("СписокДокументовПередНачаломДобавленияЗавершение",ЭтаФорма);
	СписокТиповДокументов.ПоказатьВыборЭлемента(Оповещение,"Выберите тип документа для добавления");
	
	Отказ = Истина;

КонецПроцедуры

 

ОтобранныеЗапасыВыбор:

&НаКлиенте
&Вместо("ОтобранныеЗапасыВыбор")
Процедура Расш1_ОтобранныеЗапасыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ТекущаяСтрокаТабличнойЧасти = Элементы.ОтобранныеЗапасы.ТекущиеДанные;
	
	Если НЕ ТекущаяСтрокаТабличнойЧасти = Неопределено Тогда
		
		Если ТипЗнч(ТекущаяСтрокаТабличнойЧасти.ДокументПоступления) = Тип("ДокументСсылка.ПриходнаяНакладная") Тогда
			
			ОткрытьФорму("Документ.ПриходнаяНакладная.ФормаОбъекта", Новый Структура("Ключ", ТекущаяСтрокаТабличнойЧасти.ДокументПоступления));
			
		ИначеЕсли ТипЗнч(ТекущаяСтрокаТабличнойЧасти.ДокументПоступления) = Тип("ДокументСсылка.АвансовыйОтчет") Тогда
			
			ОткрытьФорму("Документ.АвансовыйОтчет.ФормаОбъекта", Новый Структура("Ключ", ТекущаяСтрокаТабличнойЧасти.ДокументПоступления));
			
		ИначеЕсли ТипЗнч(ТекущаяСтрокаТабличнойЧасти.ДокументПоступления) = Тип("ДокументСсылка.ПеремещениеЗапасов") Тогда
			
			ОткрытьФорму("Документ.ПеремещениеЗапасов.ФормаОбъекта", Новый Структура("Ключ", ТекущаяСтрокаТабличнойЧасти.ДокументПоступления));
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

Так же, переносим серверную процедуру ЗаполнитьСписокНоменклатуры и дорабатываем в ней "запрос" - дополняем документом "ПеремещениеЗапасов", а так же проводим расчет себестоимости в этом документе. Не ставил задачу доработать код процедуры максимально красиво, показываю, что данная серверная процедура будет выполняться и замещать типовую.

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

Код процедуры вот такой:

&НаСервере
&Вместо("ЗаполнитьСписокНоменклатуры")
Процедура Расш1_ЗаполнитьСписокНоменклатуры(МассивДокументов)
	
	Запрос	= Новый Запрос;
	Запрос.Текст	= 
	"ВЫБРАТЬ
	|	ИСТИНА КАК Отметка,
	|	АвансовыйОтчетЗапасы.Ссылка КАК ДокументПоступления,
	|	АвансовыйОтчетЗапасы.Номенклатура КАК Номенклатура,
	|	АвансовыйОтчетЗапасы.Характеристика КАК Характеристика,
	|	АвансовыйОтчетЗапасы.Партия КАК Партия,
	|	АвансовыйОтчетЗапасы.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	|	АвансовыйОтчетЗапасы.Количество КАК Количество,
	|	АвансовыйОтчетЗапасы.Цена КАК Цена,
	|	АвансовыйОтчетЗапасы.Сумма КАК Сумма,
	|	АвансовыйОтчетЗапасы.СтавкаНДС КАК СтавкаНДС,
	|	АвансовыйОтчетЗапасы.СуммаНДС КАК СуммаНДС,
	|	АвансовыйОтчетЗапасы.Всего КАК Всего,
	|	АвансовыйОтчетЗапасы.ЗаказПокупателя КАК ЗаказПокупателя,
	|	1 КАК Коэффициент,
	|	АвансовыйОтчетЗапасы.Ссылка.НалогообложениеНДС КАК НалогообложениеНДС,
	|	АвансовыйОтчетЗапасы.Ссылка.СуммаВключаетНДС КАК СуммаВключаетНДС,
	|	NULL КАК Поле1,
	|	NULL КАК НоменклатураВидСтавкиНДС,
	|	NULL КАК Сумма1,
	|	NULL КАК Поле2,
	|	NULL КАК Поле3
	|ИЗ
	|	Документ.АвансовыйОтчет.Запасы КАК АвансовыйОтчетЗапасы
	|ГДЕ
	|	АвансовыйОтчетЗапасы.Ссылка В(&МассивДокументов)
	|	И &УсловиеОтбораНоменклатурыДляАвансовогоОтчета
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ИСТИНА,
	|	ПриходнаяНакладнаяЗапасы.Ссылка,
	|	ПриходнаяНакладнаяЗапасы.Номенклатура,
	|	ПриходнаяНакладнаяЗапасы.Характеристика,
	|	ПриходнаяНакладнаяЗапасы.Партия,
	|	ПриходнаяНакладнаяЗапасы.ЕдиницаИзмерения,
	|	ПриходнаяНакладнаяЗапасы.Количество,
	|	ПриходнаяНакладнаяЗапасы.Цена,
	|	ПриходнаяНакладнаяЗапасы.Сумма,
	|	ПриходнаяНакладнаяЗапасы.СтавкаНДС,
	|	ПриходнаяНакладнаяЗапасы.СуммаНДС,
	|	ПриходнаяНакладнаяЗапасы.Всего,
	|	ВЫБОР
	|		КОГДА ПриходнаяНакладнаяЗапасы.Заказ ССЫЛКА Документ.ЗаказПоставщику
	|			ТОГДА ПриходнаяНакладнаяЗапасы.Заказ.ЗаказПокупателя
	|		ИНАЧЕ ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
	|	КОНЕЦ,
	|	1,
	|	ПриходнаяНакладнаяЗапасы.Ссылка.НалогообложениеНДС,
	|	ПриходнаяНакладнаяЗапасы.Ссылка.СуммаВключаетНДС,
	|	NULL,
	|	NULL,
	|	NULL,
	|	NULL,
	|	NULL
	|ИЗ
	|	Документ.ПриходнаяНакладная.Запасы КАК ПриходнаяНакладнаяЗапасы
	|ГДЕ
	|	ПриходнаяНакладнаяЗапасы.Ссылка В(&МассивДокументов)
	|	И &УсловиеОтбораНоменклатурыДляПриходнойНакладной
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ИСТИНА,
	|	ПеремещениеЗапасовЗапасы.Ссылка,
	|	ПеремещениеЗапасовЗапасы.Номенклатура,
	|	ПеремещениеЗапасовЗапасы.Характеристика,
	|	ПеремещениеЗапасовЗапасы.Партия,
	|	ПеремещениеЗапасовЗапасы.ЕдиницаИзмерения,
	|	ПеремещениеЗапасовЗапасы.Количество,
	|	ПеремещениеЗапасовЗапасы.Сумма / ПеремещениеЗапасовЗапасы.Количество,
	|	ПеремещениеЗапасовЗапасы.Сумма,
	|	&СтавкаНДССправочник,
	|	NULL,
	|	ПеремещениеЗапасовЗапасы.Сумма,
	|	ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка),
	|	1,
	|	ИСТИНА,
	|	ИСТИНА,
	|	NULL,
	|	NULL,
	|	NULL,
	|	NULL,
	|	NULL
	|ИЗ
	|	Документ.ПеремещениеЗапасов.Запасы КАК ПеремещениеЗапасовЗапасы
	|ГДЕ
	|	ПеремещениеЗапасовЗапасы.Ссылка В(&МассивДокументов)
	|	И &УсловиеОтбораНоменклатурыДляПеремещениеЗапасов"; 
	
	Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
	Запрос.УстановитьПараметр("СтавкаНДССправочник", Справочники.СтавкиНДС.НайтиПоНаименованию("Без НДС"));
	
	Если ЗаполнятьТолькоПоУказаннойНоменклатуре Тогда
		
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтбораНоменклатурыДляАвансовогоОтчета",	"АвансовыйОтчетЗапасы.Номенклатура В(&МассивНоменклатуры)");
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтбораНоменклатурыДляПриходнойНакладной",	"ПриходнаяНакладнаяЗапасы.Номенклатура В(&МассивНоменклатуры)");
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтбораНоменклатурыДляПеремещениеЗапасов",	"ПеремещениеЗапасовЗапасы.Номенклатура В(&МассивНоменклатуры)");
		Запрос.УстановитьПараметр("МассивНоменклатуры", ОтобраннаяНоменклатура.Выгрузить());
		
	Иначе
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтбораНоменклатурыДляАвансовогоОтчета",	"Истина");
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтбораНоменклатурыДляПриходнойНакладной",	"Истина");
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеОтбораНоменклатурыДляПеремещениеЗапасов",	"Истина");
	КонецЕсли;
	
	ВыборкаЗапроса = Запрос.Выполнить().Выбрать();
	Пока ВыборкаЗапроса.Следующий() Цикл
		
		Если ДобавлятьНовыеПозицииВПодвалТаблицы Тогда 
			ЗаполнитьЗначенияСвойств(ОтобранныеЗапасы.Добавить(), ВыборкаЗапроса);
		Иначе
			Цена = ВыборкаЗапроса.Цена;
			Если ВыборкаЗапроса.СуммаВключаетНДС <> СуммаВключаетНДС Тогда
				Цена = Окр(УправлениеНебольшойФирмойСервер.ПересчитатьСуммуПриИзмененииФлаговНДС(Цена, СуммаВключаетНДС, ВыборкаЗапроса.СтавкаНДС), 2);
			КонецЕсли;
			
			СтруктураПоиска = Новый Структура("ДокументПоступления, Номенклатура, Характеристика, Партия, ЕдиницаИзмерения, СтавкаНДС, Цена",
				ВыборкаЗапроса.ДокументПоступления,
				ВыборкаЗапроса.Номенклатура,
				ВыборкаЗапроса.Характеристика,
				ВыборкаЗапроса.Партия,
				ВыборкаЗапроса.ЕдиницаИзмерения,
				ВыборкаЗапроса.СтавкаНДС,
				Цена); //Цена должна совпадать, иначе две строки и пусть определяют нужную цену для долей распределения
				
			СтрокаДубликата	= ОтобранныеЗапасы.НайтиСтроки(СтруктураПоиска);
			
			Если СтрокаДубликата.Количество() > 0 Тогда 
				
				СтрокаДубликата[0].Количество = СтрокаДубликата[0].Количество + ВыборкаЗапроса.Количество;
				
				Если ВыборкаЗапроса.СуммаВключаетНДС = СуммаВключаетНДС Тогда
					
					СтрокаДубликата[0].Сумма = СтрокаДубликата[0].Количество * СтрокаДубликата[0].Цена;
					
				ИначеЕсли ВыборкаЗапроса.СуммаВключаетНДС И НЕ СуммаВключаетНДС Тогда
					
					СтрокаДубликата[0].Сумма = СтрокаДубликата[0].Сумма + Окр((ВыборкаЗапроса.Сумма / ((ВыборкаЗапроса.СтавкаНДС.Ставка + 100) / 100)), 2);
					
				ИначеЕсли ВыборкаЗапроса.СуммаВключаетНДС И НЕ СуммаВключаетНДС Тогда
					
					СтрокаДубликата[0].Сумма = СтрокаДубликата[0].Сумма + Окр((ВыборкаЗапроса.Сумма - ВыборкаЗапроса.Сумма / ((ВыборкаЗапроса.СтавкаНДС.Ставка + 100) / 100)), 2);
					
				КонецЕсли;
				
				СтрокаДубликата[0].СуммаНДС = СтрокаДубликата[0].СуммаНДС + ВыборкаЗапроса.СуммаНДС;
				СтрокаДубликата[0].Всего = СтрокаДубликата[0].Всего + ВыборкаЗапроса.Всего;
				
			Иначе
				
				НоваяСтрока = ОтобранныеЗапасы.Добавить();
				ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаЗапроса, "ДокументПоступления, Номенклатура, Характеристика, Партия, ЕдиницаИзмерения, Количество, СтавкаНДС");
				
				НоваяСтрока.Отметка = Истина;
				Если ВыборкаЗапроса.СуммаВключаетНДС = СуммаВключаетНДС Тогда
					
					НоваяСтрока.Цена	= Цена;
					НоваяСтрока.Сумма	= ВыборкаЗапроса.Сумма;
					НоваяСтрока.СуммаНДС	= ВыборкаЗапроса.СуммаНДС;
					НоваяСтрока.Всего	= ВыборкаЗапроса.Всего;
					
				ИначеЕсли ВыборкаЗапроса.СуммаВключаетНДС И НЕ СуммаВключаетНДС Тогда
					
					НоваяСтрока.Цена	= Цена;
					НоваяСтрока.Сумма	= Окр(ВыборкаЗапроса.Сумма / ((ВыборкаЗапроса.СтавкаНДС.Ставка + 100) / 100), 2);
					НоваяСтрока.СуммаНДС	= ВыборкаЗапроса.СуммаНДС;
					НоваяСтрока.Всего	= ВыборкаЗапроса.Всего;
					
				ИначеЕсли НЕ ВыборкаЗапроса.СуммаВключаетНДС И СуммаВключаетНДС Тогда
					СтавкаНДС = Справочники.СтавкиНДС.СтавкаНДС(ВыборкаЗапроса.Номенклатура.ВидСтавкиНДС);
					НоваяСтрока.Цена	= Цена;
					НоваяСтрока.Сумма	= Окр(ВыборкаЗапроса.Сумма + (ВыборкаЗапроса.Сумма * ?(ЗначениеЗаполнено(СтавкаНДС), СтавкаНДС.Ставка, 0) / 100), 2);
					НоваяСтрока.СуммаНДС	= ВыборкаЗапроса.СуммаНДС;
					НоваяСтрока.Всего	= ВыборкаЗапроса.Всего;
					
				КонецЕсли;
				
				Если ТипЗнч(ВыборкаЗапроса.ДокументПоступления) = Тип("ДокументСсылка.ПеремещениеЗапасов") Тогда
					
					ПоискСебестоимостиНоменклатуры = Новый Запрос("ВЫБРАТЬ
					                   |	ЗапасыОстатки.СуммаОстаток / ЗапасыОстатки.КоличествоОстаток КАК Себестоимость
					                   |ИЗ
					                   |	РегистрНакопления.Запасы.Остатки(
					                   |			&Дата,
					                   |			Организация = &Организация
					                   |				И СтруктурнаяЕдиница = &СтруктурнаяЕдиница
					                   |				И Номенклатура = &Номенклатура) КАК ЗапасыОстатки
					                   |ГДЕ
					                   |	ЗапасыОстатки.КоличествоОстаток > 0");
																				
					ПоискСебестоимостиНоменклатуры.УстановитьПараметр("Дата", ВыборкаЗапроса.ДокументПоступления.Дата);
					ПоискСебестоимостиНоменклатуры.УстановитьПараметр("Организация", ВыборкаЗапроса.ДокументПоступления.Организация);
					ПоискСебестоимостиНоменклатуры.УстановитьПараметр("СтруктурнаяЕдиница", ВыборкаЗапроса.ДокументПоступления.СтруктурнаяЕдиница);
					ПоискСебестоимостиНоменклатуры.УстановитьПараметр("Номенклатура", ВыборкаЗапроса.Номенклатура);
					
					НашлиСебестоимость = ПоискСебестоимостиНоменклатуры.Выполнить().Выгрузить();
					
					Если НашлиСебестоимость[0].Себестоимость > 0 Тогда
						Цена11 	= НашлиСебестоимость[0].Себестоимость;
						Сумма11 = Цена11*ВыборкаЗапроса.Количество;
					КонецЕсли;	
					
					НоваяСтрока.Цена	= Цена11;
					НоваяСтрока.Сумма	= Сумма11;
					НоваяСтрока.СуммаНДС	= 0;
					НоваяСтрока.Всего	= Сумма11;
					
				КонецЕсли;	
				
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

 

Мы доработали все, что нужно. Перейдем к тестированию результата.

 

 

Тестирование результата. Себестоимость

Запускаем конфигурацию с активным расширением. Идем в документ "ДополнительныеЗатраты" Нажимаем кнопку "Подобрать - по документам". В окне отбора "Подобор по документам" - "Добавить" у нас появился тип документа "Перемещение запасов" (Рис.6).

 

Рис.6. Возможность отбора типов.

 

Выбираем документ "Перемещение запасов". Заполняем по выбранному документу раздел 3 "Отобранная номенклатура" и переносим эту табличную часть в документ "Дополнительные расходы" (рис.7).

 

Рис.7. Перенесен в табличную часть документ "Перемещение запасов".

 

Заполняем документ "Дополнительные расходы" и делаем распределение либо по сумме/количеству. Сумма дополнительных расходов на перемещение у нас составляет 250 руб (Рис.8).

 

Рис.8. Распределение услуг.

 

Заходим в типовой отчет "Себестоимость товаров на складах" в УНФ. Видим, что себестоимость товара на складе, куда сделано перемещение - увеличилась на сумма дополнительных расходов на 250 руб (Рис.9).

 

Рис.9. Увеличение себестоимости на складе, куда переместили.

 

Все работает. Расширение пригодилось. Теперь, напишем заключение.

 

Заключение

Вообще, по собственному опыту использования, механизм расширений очень прост и удобен. 

А именно,  "накидал" объекты в расширение, затем "накидал" нужные функции и процедуры, изменил их под себя и заставил работать вместо тех, что прописаны в модулях.

Но все-таки, расширение - это конечно не универсальная таблетка по названием "все и сразу", а скорее какая-то "припарка". Например, в данной статье, мы столкнулись с тем, что в расширении НЕЛЬЗЯ менять тип реквизита, установленного ранее, поэтому пришлось дорабатывать конфигурацию, но весь измененный код был перенесен в расширение конфигурации.

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

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

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

 

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

Созданное расширение можно скачать внизу статьи. Всем спасибо, всем привет.

 

Ранее опубликованные материалы

Так же, прошу посмотреть мои предыдущие статьи:

Работа с механизмом отладки 1С. Базовые настройки

1С + IIS + SSL: Перевод опубликованной базы на защищенное соединение https с сертификатом от Let's encrypt

Методика независимой системы "Подписки на события"

Дополнительные расходы на основе перемещения запасов в УНФ (пошаговая разработка расширения конфигурации)

 

унф себестоимость дополнительные расходы перемещение товаров

См. также

SALE! 20%

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

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

15000 12000 руб.

30.11.2021    24215    141    56    

98

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

Данный отчет показывает себестоимость выпущенной продукции с разузлованием полуфабрикатов любых уровней, входящих в ее состав, до статей затрат и материалов. Отчет работает независимо от метода оценки стоимости товаров и подходит для любых производственных компаний с многопередельным производством. Отчет можно использовать как в типовой 1С:ERP, так и в отраслевых решениях на ее базе (например, 1С:ERP Управление птицеводческим предприятием и т.д.). Отчет подходит для анализа затрат на гособоронзаказы ГОЗ.

70000 руб.

08.12.2021    26816    25    73    

34

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

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

25000 руб.

16.12.2019    36736    79    70    

46

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

Данный отчет показывает себестоимость реализованной продукции в разузлованном виде, как с выделением входящих в нее полуфабрикатов любых уровней, так и свернутый до статей затрат и материалов, видов работ. Отчет работает независимо от метода оценки стоимости товаров и подходит для любых производственных компаний с многопередельным производством. Отчет можно использовать как в типовой 1С:ERP, так и в отраслевых решениях на ее базе (например, 1С:ERP Управление птицеводческим предприятием, Молокозавод и т.д.).Отчет подходит для анализа затрат на гособоронзаказы ГОЗ.

70000 руб.

30.11.2022    14411    21    25    

26

Учет доходов и расходов Бухгалтер Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет НДС Платные (руб)

Убрали НДС из всех операций, где налог влияет на прибыль. Учли это во всех нужных регистрах и отчётах, сделали нужные проводки. Так как расширение влияет на расчёт прибыли, мы особенно внимательно отнеслись к его тестированию. Проверили всё на фреймворке Vanessa Automation. Это позволяет избежать ошибок и защищает учёт.

12000 руб.

28.03.2022    13533    32    26    

37

SALE! 20%

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

Узнайте, сколько вы зарабатываете на каждом проекте! Комплект внешних управленческих отчетов для учета в разрезе проектов в БП 3.0. Отчеты показывают доходы и расходы, продажи и валовую прибыль, движение денежных средств и товарно-материальных ценностей по каждому проекту.

9000 7200 руб.

08.02.2024    2173    15    16    

9

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

Мы доработали типовой платежный календарь, добавив в него планируемые постоянные расходы. Теперь можно видеть картину денежных средств в совокупности с текущей динамикой ожидаемых поступлений и расходов. Отчет позволяет увидеть остатки денежных средств в кассе и банке, их движение в разрезе статей ДДС с возможностью выбрать любой период (день, неделя, месяц). Данный отчет подходит для всех основных конфигураций линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289): 1С:Бухгалтерия предприятия, редакция 3.0 (3.0.77.95), 1С:Управление торговлей, 1С:Комплексная автоматизация 2 (2.4.11.67), Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2 (2.4.13.111). Также есть возможность адаптации отчета под другие конфигурации. Мобильное приложение работает как на Android, так и на IOS.

2880 руб.

16.03.2021    22123    13    13    

29

SALE! 20%

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

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

4200 3360 руб.

06.04.2022    14223    46    12    

48
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1747 17.10.19 11:18 Сейчас в теме
(0) спасибо за такой формат изложения! поучительно!
3. aximo 2100 17.10.19 12:17 Сейчас в теме
2. mszsuz 335 17.10.19 11:50 Сейчас в теме
4. Светлый ум 415 28.10.19 10:58 Сейчас в теме
+1 Классный пример по допрасходам
5. alexcomp2 25.05.21 16:15 Сейчас в теме
Добрый день. У нас обработка не показывает Перемещения в выборе.
Прикрепленные файлы:
Документ Microsoft Word.docx
6. bossikd 94 08.02.22 09:38 Сейчас в теме
Все хорошо, но в итоге синхронизация с БП3 сломалась. Не выгружается файл с данными при синхронизации в УНФ. Это так я про последствия изменения типа реквизита в шаге 1. А так пользователи вроде норм работают.
7. Borisych 503 16.05.23 08:50 Сейчас в теме
Мы дорабатывали (получилось практически одинаково) доп. расходы на реализации и на отчеты о продажах маркетплейсов.

Плюс интеркампани - добавили создание на один документ передачи товаров два документа - зеркальные счета-фактуры выданный + полученный.

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

Единственный минус - мы создаем доп.расходы на несколько документов - и документы у нас могут быть от разных юр.лиц. При типовом обмене эти организации уходят в бухгалтерии (у нас для каждого юр.лица отдельная база) несмотря на фильтры по организации. Частично решили этот момент доработками на стороне бухгалтерии.
8. jo0506 20 25.05.24 08:04 Сейчас в теме
(7) Тоже хочу дописать, чтобы в Доп расходы можно было прикреплять Поступление товара от другого нашего юрлица.
Скажите какие проблемы могут вылезти?
Движения идут по 4-м регистрам:
Регистр накопления "Закупки"
Регистр накопления "Запасы и затраты"
Регистр накопления "Оплата документов"
Регистр бухгалтерии "Управленческий"
Получается нужно будет делать движения по разным юрлицам, плюс не понятно какой гемор будет, при выгрузки в бух 3.0.
Поделитесь опытом, кто делал.
PS: Учет по юрлицам раздельный, включена передача товара между компаниями.
Оставьте свое сообщение