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

Публикация № 1136068

Администрирование - Администрирование данных 1С - Обработка документов

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

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

 

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

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

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

При создании расширения я использовал конфигурацию "Управление нашей фирмы 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

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

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

 

Скачать файлы

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

.cfe 36,83Kb
16.10.19
3
.cfe 36,83Kb 3 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Rustig 1608 17.10.19 11:18 Сейчас в теме
(0) спасибо за такой формат изложения! поучительно!
3. aximo 1642 17.10.19 12:17 Сейчас в теме
2. mszsuz 244 17.10.19 11:50 Сейчас в теме
4. Светлый ум 261 28.10.19 10:58 Сейчас в теме
+1 Классный пример по допрасходам
Оставьте свое сообщение

См. также

Превращение внутреннего отчета во внешний без снятия с поддержки конфигурации

Менеджеры внешних отчетов Расширения v8 v8::СКД 1cv8.cf Абонемент ($m)

В этой статье расскажу, как быстро и просто изменить или доработать типовой отчет не снимая конфигурацию с поддержки. (Протестировано на платформе 1С:Предприятие 8.3 (8.3.16.1148))

1 стартмани

22.06.2020    1777    user1118625    2    

Как автоматически заполнить обработкой табличную часть документа "Ввод начальных остатков" (Тип операции = "Расчеты с партнерами"). 1С: ERP

Обработка документов Дебиторская и кредиторская задолженность v8 ERP2 БУ УУ Абонемент ($m)

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

1 стартмани

20.12.2019    3627    pvlunegov    6    

Обсудим планы обмена. Способы регистрации объектов к обмену

Обмен данными 1С v8 1cv8.cf Бесплатно (free)

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

16.11.2019    23769    aximo    36    

Лайфхак работы с СКД. Собираем отчет.

Практика программирования v8::СКД 1cv8.cf Бесплатно (free)

В этой статье я опишу небольшой "лайфхак" по сборке отчетов в СКД. Думаю, этот подход будет интересен тем, кто хочет быстро оформить отчет.

25.10.2019    22261    aximo    38    

Подсистема "Подписки на события" (продолжение)

Адаптация типовых решений v8 1cv8.cf Абонемент ($m)

Представляю Вам практическая реализация методики подсистемы "Подписок на событие"

10 стартмани

21.10.2019    7787    1    aximo    0    

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

Практика программирования v8 УПП1 Бесплатно (free)

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

17.10.2019    12016    aximo    35    

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

Практика программирования v8 1cv8.cf Бесплатно (free)

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

12.10.2019    13663    aximo    5    

Многопоточная обработка данных на примере перепроведения документов

Обработка документов Практика программирования v8 ERP2 УТ11 КА2 Абонемент ($m)

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

1 стартмани

17.09.2019    9476    ids79    46    

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

Администрирование данных 1С v8 1С:CRM Абонемент ($m)

Всем Доброго времени! Предлагаю Вам небольшую базовую инструкцию, где я опишу, как быстро перевести опубликованную в веб базу 1С на защищенное https соединение, используя стандартный IIS сервер и бесплатный сертификат SSL от Let's encrypt.

1 стартмани

10.08.2019    22941    aximo    37    

"Убер на складе": динамический расчет маршрутов с учетом реальных расстояний

Учет ТМЦ Практика программирования Учет ТМЦ v8 УУ Абонемент ($m)

Представляю методику и инструмент для динамического расчета маршрутов отбора на высоконагруженных складах для максимального повышения эффективности склада, ускорения проходимости и, как следствие, экономии денег. Это методика и обработка для интеграции в WMS решения. Тестировалось на 1С 8.3.14.1565.

3 стартмани

24.06.2019    16332    informa1555    17    

EGAIS Scan - приложение для ТСД

Терминал сбора данных Мобильная разработка Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 УПП1 УТ11 КА2 Россия УУ Абонемент ($m)

Каждый, кто занимается торговлей алкогольной продукцией, сталкивался с проблемами сканирования акцизных марок и трудностями при взаимодействии с учетной системой 1С. Приложение EGAIS Scan - простое и оптимальное решение для выполнения быстрой приемки и отгрузки алкогольной продукции.

1 стартмани

17.04.2019    5427    MrChe    3    

Собственный алгоритм нумерации документов определенного вида

Практика программирования Обработка документов Разработка v8 БП3.0 Россия Абонемент ($m)

Создание собственного, отличного от платформенного алгоритма нумерации документов определенного вида.

1 стартмани

11.04.2019    3336    xan333    12    

Сторнирование документов отсутствия по невыясненной причине после переноса данных. Замена на больничный лист. ЗУП 3.1.8

Обработка документов Бухгалтерский учет Зарплата Учет рабочего времени Зарплата Учет рабочего времени v8 v8::СПР ЗУП3.x Россия БУ Абонемент ($m)

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

1 стартмани

22.03.2019    5425    Mogilnikova    0    

Шаги для запуска складского учёта запчастей в УНФ 2

Пользователю системы Учет ТМЦ Бухгалтерский учет Учет ТМЦ v8 v8::ОУ УНФ УУ Абонемент ($m)

Когда-то давно мне поставили задачу запустить складской учёт запчастей в УНФ. Для этого было необходимо написать инструкцию для пользователей, которые УНФ в глаза не видели. Да я и сам её тогда впервые увидел. Иллюстрации (за исключением скриншотов 1С) созданы мной. Вот, решил поделиться.

1 стартмани

20.03.2019    8231    akor77    0    

Альтернативный пересчет упаковок товаров в типовых конфигурациях

Практика программирования Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ v8 v8::ОУ УТ11 КА2 Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

Рассмотрен вариант пересчета упаковок, при котором исходное количество товара не изменяется, а происходит пересчет упаковок друг относительно друга.

1 стартмани

24.11.2018    10704    gzharkoj    10    

Создание подключаемой обработки табличной части с диалогом запроса параметров заполнения (управляемые формы)

Обработка документов Обработка справочников Практика программирования v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

03.05.2018    52049    Mirage78    18    

Автоматическое оповещение пользователей при проведении документа Поступление товаров, с возможностью дублировать сообщения другому сотруднику

Практика программирования Обработка документов Документооборот и делопроизводство Документооборот и делопроизводство v8 v8::ОУ УТ11 Россия Абонемент ($m)

Данная разработка автоматически оповещает пользователя о поступлении товара по заказу клиента. Схема работы : Заказ клиента > Заказ поставщику > Поступление товаров. Оповещается пользователь, который создавал заказ клиента (менеджер). Оповещение выводится на экран и ждет подтверждения о прочтении. После подтверждения - фиксируется время прочтения оповещения. Есть возможность просматривать все сообщения по пользователю за любой период. Есть возможность дублировать сообщение другим пользователям. Например, если менеджер в отпуске, и его заменяет другой менеджер, и оповещения будут отправляться второму (третьему и т.д.).

1 стартмани

26.02.2018    13015    Natali307192013    8    

“Заставим сканер пищать!” или Получаем обратную связь из 1С при сканировании штрихкодов

Сканер штрих-кода Учет ТМЦ Учет ТМЦ v8 1cv8.cf Абонемент ($m)

Получаем обратную связь из 1С при сканировании штрихкодов.

1 стартмани

10.01.2018    45896    vadnevzorov    71    

Печатная форма ИНВ-8а "Инвентаризационная опись драгоценных металлов, содержащихся..." и организация учета драгоценных металлов в ОС на предприятии для типовых конфигураций 1С, обычное приложение

Бухгалтерский учет Учет ОС и НМА Учет ТМЦ Учет ОС и НМА Учет ТМЦ v8 1cv8.cf Россия БУ Абонемент ($m)

Организация учета драг. металлов в ОС на предприятии с использованием свойств объектов конфигурации из Плана видов характеристик "Свойства объектов" без изменения конфигурации. Для обычных приложений типовых конфигураций 1С.

2 стартмани

06.09.2017    15485    vik2006    3    

Инвентаризация и корректировка остатков ЕГАИС в 1С: Управление небольшой фирмой (инструкция)

Бухгалтерский учет Розничная торговля Учет ТМЦ Розничная торговля Учет ТМЦ v8::ОУ УНФ Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

1С выпустило обновление конфигурации Управление небольшой фирмой(1.6.7.63), добавили удобный Помошник корректировки остатков ЕГАИС

1 стартмани

01.12.2016    16005    user635667    0    

Адресная система хранения на складе

Практика программирования Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ v8 УУ Абонемент ($m)

Решение тестового задания. Разбор ошибок.

1 стартмани

22.10.2016    11232    vasvl123    6    

Резервирование ТМЦ в "1С:Управление небольшой фирмой"

Управленческий учет (прочее) Бухгалтерский учет Производство готовой продукции (работ, услуг) Учет ТМЦ Производство готовой продукции (работ, услуг) Учет ТМЦ v8 УНФ Россия УУ Абонемент ($m)

В статье рассматривается механизм резервирования ТМЦ в программе 1С: Управление небольшой фирмой 1.6. Описываются способы формирования резервов с использованием основных документов позаказного производства. На сквозном примере рассматривается движение резервов от заказа покупателя до итоговой отгрузки продукции.

1 стартмани

01.08.2016    49124    Artem-B    29    

Торговля глазами ветврача. Оформление ветеринарно-сопроводительных документов в системе Меркурий (Часть 3)

Управление бизнес-процессами (BPM) Управленческий учет (прочее) Учет ТМЦ Учет ТМЦ v8 Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Пищевая промышленность Беларусь Россия Казахстан УУ Абонемент ($m)

Для торговой компании объясняется, как выполнять типовые операции в системе Меркурий. Зачем нужен Меркурий? C его помощью можно оформлять ветсвидетельства бесплатно. Уточните у руководства, сколько денег платите ветеринарам. Например, сеть Перекресток платит 400 млн. руб. в год.

5 стартмани

22.01.2016    52490    axxell    5    

Производство глазами ветврача. Оформление ветеринарно-сопроводительных документов в системе Меркурий (Часть 2)

Управление бизнес-процессами (BPM) Управленческий учет (прочее) Бухгалтерский учет Производство готовой продукции (работ, услуг) Учет ТМЦ Производство готовой продукции (работ, услуг) Учет ТМЦ v7.7 v8 1С7:Комплекс УПП1 1С7:ПУБ Сельское хозяйство и рыболовство Пищевая промышленность Беларусь Россия Казахстан УУ Абонемент ($m)

Для предприятия по производству пищевых продуктов объясняется, как выполнять типовые операции в системе Меркурий. Зачем нужен Меркурий? C его помощью можно оформлять ветсвидетельства бесплатно. Уточните у руководства, сколько денег платите ветеринарам. Например, сеть Перекресток платит 400 млн. руб. в год.

5 стартмани

19.01.2016    79365    axxell    9    

Проведение документа "Требование-накладная" в 1С: УПП РАУЗ

Практика программирования Производство готовой продукции (работ, услуг) Учет ТМЦ Производство готовой продукции (работ, услуг) Учет ТМЦ v8 УПП1 Россия БУ Абонемент ($m)

Рассмотрено проведение документа требование-накладная в 1с УПП РАУЗ на уровне процедурных решений Конфигуратора.

1 стартмани

16.04.2013    21493    DAA48    1    

Ограничение на проведение реализаций по группе доступности складов в УТ 10.3

Практика программирования Универсальные функции Учет ТМЦ Учет ТМЦ v8 УТ10 Абонемент ($m)

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

12.04.2012    12312    pusix    8    

Свойства Номенклатуры в узле свойств ХарактеристикиНоменклатуры универсального отчета

Практика программирования Учет ТМЦ Учет ТМЦ v8 УТ10 УПП1 Абонемент ($m)

Частный случай отчетов с группировкой по характеристике номенклатуры, когда в одну (!) строку отчета нужно вывести в виде дополнительных полей и свойства характеристики, и свойства владельца характеристики (номенклатуры) - в случае, когда номенклатура не указывается как группировка в отчете. Небольшая вставка в процедуру универсального отчета решает эту проблему. Плюс, естественно, работают отборы и группировки и по свойствам характеристики, и по свойствам номенклатуры. Естественно, свойство номенклатуры при настройке в данном случае нужно выбирать из узла Характеристика номенклатуры.

1 стартмани

29.04.2011    11104    kylux    2    

Отрицательные остатки для предпринимателя в Бухгалтерии предприятия 2.0

Практика программирования Учет ТМЦ Учет ТМЦ v8 БП2.0 Россия Абонемент ($m)

Интернет пестрит сообщениями: разрешил отрицательные остатки для предпринимателя, а расходная накладная не проводится и пишет "в налоговом учете не найдены остатки по партии". Далее идет классическое "Что делать?" и "Очень нужно!"

1 стартмани

02.04.2011    10537    philya    4