УНФ 1.5.3 Создание документов Перемещение запасов на основании данных Авансового отчета

18.04.15

Учетные задачи - Логистика, склад и ТМЦ

Позволяет оперативно "раскидывать" запасы по складам на основании источника запасов - вкладки Запасы документа Авансовый отчет с учетом резервов. Внешняя обработка, являющаяся модификацией обработки заполнения табличной части документа, легко встраивается в типовую конфигурацию УНФ 1.5.3 (работоспособна и на УНФ 1.4 со слов заказчика), добавляя свою команду в документ.
Код обработки открыт. Также объясняется методика отладки внешних обработок на "специфической" конфигурации УНФ 1.5.3

Файлы

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

Наименование Скачано Купить файл
Заполнение запасов - Доб. заказ покупателя и резерв по нему если есть. 1.1.0
.epf 8,79Kb ver:1.1.0
6 2 500 руб. Купить
Заполнение запасов 1.0.2
.epf 8,61Kb ver:1.0.2
5 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вначале рассмотрим исходные данные задачи. На рисунках 1 и 2 данные документа Авансовый отчет в конфигураторе и в режиме предприятия с тестовыми данными из типовой демобазы УНФ 1.5.3:

  

Рисунок 1. Документ Авансовый отчет конфигурации Управление небольшой фирмой 1.5.3

 

 Рисунок 2. Документ Авансовый отчет в конфигуработоре

Теперь на рисунках 3 и 4 посмотрим структуру приемника - документа Перемещение запасов:

 Рисунок 3. Документ Перемещение запасов конфигурации Управление небольшой фирмой 1.5.3

Рисунок 4. Документ Перемещение запасов в конфигураторе. 

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

Для отладки данной обработки, а также ее возможных модификаций можно воспользоваться одним из отладчиков внешних печатных форм, которые поддерживают управляемых формы по технологии БСП. Здесь может ожидать "подводный камешек" отсутствия в типовой конфигурации УНФ 1.5.3 режима модальности. Можно, конечно поправить данные обработки отладки или все-таки найти нужную, но можно воспользоваться приемом временного снятия корня конфигурации с поддержки и изменением данного признака на "использовать с предупреждением" как показано на рисунке 5.

 

Рисунок 5. Изменение свойств конфигурации УНФ 1.5.3 для облегчения отладки.

Также конфигуарация УНФ имеет свои "особенности" и из-за них многие стандартные внешние обработки не регистрируются в системе или не запускаются. Для решения подобных проблем приходится лезть в конфигурацию и править обработку под особенности данной конфигурации. Тут нужно смотреть код общего модуля "Дополнительные отчеты и обработки" и сопуствующие объекты метаданных еще на входе (см. рисунок 6):

 

Рисунок 6. Виды внешних обработок. 

  

Также основная отработка исполняемого кода начинается с нижеприведенного участка кода стандартного общего модуля УНФ "Дополнительные отчеты и обработки" и код модуля управляемой формы, реализующий всю логику решения:

// Выполняет команду обработки и возвращает результат ее выполнения.
//
// Параметры:
// ПараметрыКоманды - Структура - Параметры, с которыми выполняется команда.
// * ДополнительнаяОбработкаСсылка - СправочникСсылка.ДополнительныеОтчетыИОбработки - Элемент справочника.
// * ИдентификаторКоманды - Строка - Имя выполняемой команды.
// * ОбъектыНазначения - Массив - Ссылки объектов, для которых выполняется обработка. Обязательный для
// назначаемых обработок.
// * РезультатВыполнения - Структура - Необязательный. Дополняет возвращаемое значение.
// См. СтандартныеПодсистемыКлиентСервер.НовыйРезультатВыполнения().
// АдресРезультата - Строка - Необязательный. Адрес временного хранилища по которому будет размещен результат
// выполнения.
//
// Возвращаемое значение:
// * Структура - Результат выполнения, который далее передается на клиент.
// * Неопределено - Если был передан АдресРезультата.
//
// Важно:
// Проверка функциональной опции "ИспользоватьДополнительныеОтчетыИОбработки"
// должна выполняться вызывающим кодом.
//
Функция ВыполнитьКоманду(ПараметрыКоманды, АдресРезультата = Неопределено) Экспорт

Если ТипЗнч(ПараметрыКоманды.ДополнительнаяОбработкаСсылка) <> Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки")
Или ПараметрыКоманды.ДополнительнаяОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки.ПустаяСсылка() Тогда
Возврат Неопределено;
КонецЕсли;

ВнешнийОбъект = ПолучитьОбъектВнешнейОбработки(ПараметрыКоманды.ДополнительнаяОбработкаСсылка);

ИдентификаторКоманды = ПараметрыКоманды.ИдентификаторКоманды;

РезультатВыполнения = ВыполнитьКомандуВнешнегоОбъекта(ВнешнийОбъект, ИдентификаторКоманды, ПараметрыКоманды, АдресРезультата);

Возврат РезультатВыполнения;

КонецФункции
 
//////////////////////////////////// Код управляемой формы обработки ////////////////////////////////////////////
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	Если ИдентификаторКоманды = "Создать Перемещение запасов" Тогда		
				
		Для каждого Элемент из ОбъектыНазначенияМассив Цикл
			КлючПоиска = Новый Структура("Ключ", Элемент);					
			Окна = ПолучитьОкна();
			Для каждого Окно из Окна Цикл				
				Рез =  Найти(Окно.Заголовок, СокрЛП(КлючПоиска.Ключ) );				
				Если Рез > 0 Тогда
					ФормаИст = ПолучитьФорму("Документ.АвансовыйОтчет.Форма.ФормаДокумента", КлючПоиска ,,,Окно); // Уже открытую форму.					
					ФормаДок = ПолучитьФорму("Документ.ПеремещениеЗапасов.Форма.ФормаДокумента");									
					ДанныеФормыИст = ФормаИст.Объект;								
					ДанныеФормыДок = ФормаДок.Объект;
					////// проверки ////////////////////
					Отказ1 = Ложь;
					ЗапасыИст     =       ДанныеФормыИст.Запасы;
					Если ЗапасыИст.Количество() = 0 Тогда
						СказатьПользователю("Табличная часть Заказы у документа-основания ПУСТА!");
						Возврат;
					КонецЕсли;
					СкладИст      =       ЗапасыИст[0].СтруктурнаяЕдиница;
					
					Если НЕ ЗначениеЗаполнено(СкладИст) Тогда
						СказатьПользователю("Склад источник пуст!");
						Отказ1 = Истина;
					КонецЕсли;
					
					// Ячейка может быть не задана и быть пустой, а вот склад нет!
					//////ЯчейкаИст     =       ЗапасыИст[0].Ячейка;
					//////
					//////Если НЕ ЗначениеЗаполнено(ЯчейкаИст) Тогда
					//////	СказатьПользователю("Ячейка источника пуста!");
					//////	Отказ1 = Истина;
					//////КонецЕсли;
					
					Если Отказ1 Тогда
						Возврат;               
					КонецЕсли;
															
					//////// Конец проверки ///////////
					ЗаполнитьФормуНаСервере(ДанныеФормыДок, ДанныеФормыИст);
					КопироватьДанныеФормы(ДанныеФормыДок, ФормаДок.Объект);
					ФормаДок.Открыть();
				КонецЕсли;	
			КонецЦикла;
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры



&НаСервереБезКонтекста
Процедура ЗаполнитьФормуНаСервере(ДанныеФормыДок, ДанныеФормыИст)
	ЗапасыИст     =       ДанныеФормыИст.Запасы;
	СкладИст      =       ЗапасыИст[0].СтруктурнаяЕдиница;
	ЯчейкаИст     =       ЗапасыИст[0].Ячейка;	
	ДанныеФормыДок.Комментарий          =   "# Заполнение по основанию Авансовый отчет № "+ДанныеФормыИст.Номер+ " от "+ДанныеФормыДок.Дата;
	ДанныеФормыДок.Организация          =   ДанныеФормыИст.Организация;
	ДанныеФормыДок.СтруктурнаяЕдиница   =   СкладИст; 
	ДанныеФормыДок.СтруктурнаяЕдиницаПолучатель = ""; // Подставлялся по настройкам пользователя для организации что по умолчанию. По ТЗ пуст - сами принимаем решение.
	ДанныеФормыДок.Ячейка               =   ЯчейкаИст;
	
	//... Свойства Авансового отчета (если еще что-то надо)
	
	Запасы = ДанныеФормыДок.Запасы;
	
	Для Каждого СтрИст Из ЗапасыИст Цикл
		Стр = Запасы.Добавить();
		Стр.Номенклатура      =  СтрИст.Номенклатура;
		Стр.Характеристика    =  СтрИст.Характеристика; // Если Есть!
		Стр.Количество        =  СтрИст.Количество;
		Стр.ЕдиницаИзмерения  =  СтрИст.ЕдиницаИзмерения;
		// Есть ли Заказ покупателя. Если есть в таб. части перемещение запасов заполняется колонка РЕЗЕРВ 
		// по данным авансового отчета (если вдруг будут расхождния по количеству авансового и заказа)
		Если ЗначениеЗаполнено(СтрИст.ЗаказПокупателя) Тогда			
			Стр.Резерв = Стр.Количество;
			Стр.ЗаказПокупателя = СтрИст.ЗаказПокупателя;
		КонецЕсли;	
	КонецЦикла;		
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура СказатьПользователю(текст1)
	СП = Новый СообщениеПользователю;
	СП.Текст = текст1;
	СП.Сообщить();
КонецПроцедуры	
 

Вступайте в нашу телеграмм-группу Инфостарт

Авансовый отчет запасы Перемещение запасов заполнение перемещения запасов обработка заполнения учет ТМЦ распределение по складам логистика АРМ Управление небольшой фирмой 1.5 УНФ Внешняя обработка.

См. также

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

12444 руб.

29.10.2014    230235    739    530    

493

Логистика, склад и ТМЦ Бухгалтер Пользователь 1С:Предприятие 8 Сельское хозяйство и рыболовство Строительство Горнодобывающая промышленность Розничная и сетевая торговля (FMCG) Транспорт, автопарки, такси Оптовая торговля, дистрибуция, логистика Лесное и деревообрабатывающее хозяйство Управленческий учет Платные (руб)

Позволяет автоматизировать процесс взвешивания ТМЦ в организациях, осуществляющих приемку и отгрузку различным транспортом, для ведения складского учета и контроля остатков на складах. Конфигурация позволяет фиксировать вес вручную, напрямую с весов, а также управлять дополнительным оборудованием и контролировать движение транспорта.

40000 руб.

24.03.2015    135538    334    116    

143

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

Полнофункциональное расширение для формирования и ведения учета перевозочных документов всех видов (ТН, ТТН, ЭТрН). Печать документов или отправка через ЭПД (Электронный перевозочный документооборот). Поддержка регистрации нескольких перевозок на одну финансовую реализацию (в виде УПД, например), а также одной перевозки на основании нескольких финансовых реализаций. Формирование всех сопроводительных документов из одной отгрузки. Формирование реестра грузосопроводительных документов, доверенности менеджеров для указания ответственных лиц (руководитель, главный бухгалтер, кладовщик) организации для пользователей ИБ. Гибкая настройка функциональности под потребности организации.

3150 руб.

18.04.2017    53463    287    43    

98

Обмен с ГосИС Логистика, склад и ТМЦ Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Внешняя обработка для инвентаризации кодов маркировки в системе "Честный знак". Позволяет быстро определить и списать коды маркировки проданного, испорченного, утраченного (полный перечень причин списания указан ниже)  товара, которые всё ещё числятся за организацией. Привести в соответствие остатки маркированного товара программы 1С и системы "Честного знака".

6649 руб.

09.01.2024    14874    158    30    

149

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    206878    172    250    

295
Для отправки сообщения требуется регистрация/авторизация