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

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

Задачи пользователя - Обработка документов

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

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

 

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

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

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

При создании расширения я использовал конфигурацию "Управление нашей фирмы 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
7
.cfe 36,83Kb 7 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1651 17.10.19 11:18 Сейчас в теме
(0) спасибо за такой формат изложения! поучительно!
3. aximo 1964 17.10.19 12:17 Сейчас в теме
2. mszsuz 293 17.10.19 11:50 Сейчас в теме
4. Светлый ум 281 28.10.19 10:58 Сейчас в теме
+1 Классный пример по допрасходам
5. alexcomp2 25.05.21 16:15 Сейчас в теме
Добрый день. У нас обработка не показывает Перемещения в выборе.
Прикрепленные файлы:
Документ Microsoft Word.docx
6. dendzu 71 08.02.22 09:38 Сейчас в теме
Все хорошо, но в итоге синхронизация с БП3 сломалась. Не выгружается файл с данными при синхронизации в УНФ. Это так я про последствия изменения типа реквизита в шаге 1. А так пользователи вроде норм работают.
Оставьте свое сообщение

См. также

ЗУП 3.1: Заполнение ответственного в документе "Согласие на обработку персональных данных"

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

Показываем порядок создания расширения, добавляющего заполнение ответственного в документе "Согласие на обработку персональных данных", в ЗУП 3.1

1 стартмани

10.10.2022    437    hottion    0    

1

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

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

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

1 стартмани

20.12.2019    7550    pvlunegov    6    

8

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

Адаптация типовых решений Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

10 стартмани

21.10.2019    12744    2    aximo    0    

9

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

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

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

17.10.2019    18297    aximo    35    

71

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

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

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

12.10.2019    34648    aximo    7    

28

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

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

Администрирование веб-серверов Платформа 1С v8.3 1С:CRM ПРОФ, КОРП Абонемент ($m)

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

1 стартмани

10.08.2019    43862    aximo    53    

143

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

Учет ТМЦ Механизмы платформы 1С Платформа 1С v8.3 Управленческий учет Абонемент ($m)

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

3 стартмани

24.06.2019    23899    informa1555    25    

76

Изменение реквизитов существующих объектов (документов) 1С без сохранения

Обработка документов Платформа 1С v8.3 Абонемент ($m)

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

1 стартмани

14.06.2019    10466    BraunAlex    9    

6

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

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

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

1 стартмани

17.04.2019    6587    MrChe    3    

6

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

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

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

1 стартмани

22.03.2019    11097    Mogilnikova    0    

2

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

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

Инструкции пользователю Учет ТМЦ Платформа 1С v8.3 Оперативный учет 1С:Управление нашей фирмой 1.6 Управленческий учет Абонемент ($m)

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

1 стартмани

20.03.2019    11613    akor77    1    

9

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

Обработка документов Обработка справочников Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

03.05.2018    91716    Mirage78    27    

86

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

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

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

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

1 стартмани

01.08.2016    56505    Artem-B    33    

45

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

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

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

5 стартмани

22.01.2016    53425    axxell    5    

11

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

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

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

5 стартмани

19.01.2016    83142    axxell    11    

22

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

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

Учет ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Абонемент ($m)

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

1 стартмани

29.04.2011    11536    kylux    2    

9