Как вывести в Поле формы документа Дату Реализации товаров и услуг?

Версия для печатиPDF-версия

Имеется форма документа (ЗаказПокупателя) В нее необходимо вывести Номер и дату реализации ( в поле ПолеРеализацияТоваровУслуг и ПолеДатаРеализации соответственно). Не нашел реквизитов Номер и Дата у документа реализация, поэтому решил выводить запросом. Например запрос Номера:



Процедура ОтборРеализация()

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслуг.Номер
		|ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|ГДЕ
		|	РеализацияТоваровУслуг.Номер = &Номер";
	
	Запрос.УстановитьПараметр("Номер", Номер);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
		
		ЭлементыФормы.ПолеРеализацияТоваровУслуг.Значение = ВыборкаДетальныеЗаписи.Номер
		
	КонецЦикла;

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

И тут столкнулся с проблемой. Если в запросе фигурирует и – или Дата – то в поле ничего не отражается. Что я делаю не так? Научите, пожалуйста.

Во-первых, не понял, что значит строка:

Если в запросе фигурирует и – или Дата – то в поле ничего не отражается.

Во-вторых, непонятен смысл использования запроса. Получить номер документа с нужным номером? Тафтология какая-то.

В-третьих, реквизиты Номер и Дата являются стандартными для всех документов. Несмотря на то, что их нет в списке реквизитов, к ним можно обращаться так же, как и к другим реквизитам.

Номер и дату какого документа реализации хотите вывести? Какая связь между заказом и документом реализации?

ПС.

ЭлементыФормы.ПолеРеализацияТоваровУслуг.Значение = ВыборкаДетальныеЗаписи.Номер

- это вообще дурной тон. Будьте проще:

ПолеРеализацияТоваровУслуг = ВыборкаДетальныеЗаписи.Номер

(Если, конечно, реквизит формы, связанный с полем формы ПолеРеализацияТоваровУслуг, называется ПолеРеализацияТоваровУслуг.)

 

В форму Заказа покупателя (специально разработанную для логистов) установлена возможность распечатывать ТОРГ12.

Вроде вопросов нет, только от них требуют перед распечаткой менять дату документа РеализацияТоваровУслуг на текущую.

Если они открывают свою форму заказа, в котором необходимо провести массу операций, затем перейти в список РеализацияТоваровУслуг, найти нужную, открыть, поменять дату и распечатать ТОРГ12…

Вот и выходит, что на все эти операции уходит много времени, плюс множество ошибок.

 

Задумка такая:

В логистической форме ЗаказПокупателя вывести поля Номер и Дата документа реализация товаров и услуг, со следующими возможностями:

ПолеРеализацияТоваровУслуг – с кнопочкой открыть – при нажатии можно перейти сразу в документ РеализацияТоваровУслуг.

ПолеДатаРеализации – с кнопкой изменения даты.

Чтобы не открывая документа РеализацияТоваровУслуг можно было поменять дату.

Запросом – который представил выше – получаю номер.

Просто текст.

А вот все попытки открыть РеализацияТоваровУслуг из этого поля безуспешны.

Максимум – попадаю в Список РеализацияТоваровУслуг.

А Дата – вообще не отражается.

Как ни пробовал.

 

 

1. А откуда берётся Номер, который передаётся в запрос в качестве параметра?

2. Зачем менеджеру искать реализацию в списке? Почему не воспользоваться Структурой подчинённости?

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

4. А как сейчас реализована печать ТОРГ12 из Заказа?

1. Номер берется из запроса. Учитывая мой нулевой уровень, я не могу точно объяснить откуда.

((( Я вызвал конструктор запроса с обработкой. В нем выбрал документ РеализацияТоваровУслуг в котором есть реквизиты Номер, Дата, Ссылка и т.д….

2. Менеджерам и не нужно. Речь идет об упаковщиках и грузчиках (они у нас последнее звено логистики).

Они народ суровый, интеллектом и образованием похвастаться не могут.

Кроме того, у них трудная утомительная и монотонная работа. Хотя они и душевные, хорошие люди. От чего большой процент ошибок.

Хочется сделать для них простой и эффективный продукт, требующий минимального количества операций и времени. Т.к. остальное ведет к снижение производительности, набору еще сотрудников, что снижает из заработок…

3. Учитывая мой нулевой уровень, я мало чего понял…

Можно более развернутый ответ, желательно с примером? Уверен, это очень пригодиться…

 

4. Знакомые поделились конфигурацией CRM. Немного поизучал, для опыта и понимания 1С.

Обнаружил, что у них реализована печать из Заказа покупателя. Поковырялся, в Модуле объекта ЗаказПокупателя нашел

Функция ПечатьТОРГ12(БезУслуг = Ложь)

Тупо ее скопировал, подставил свой макет, немного отредактировал, вписал функцию в

Процедура Печать

И

Функция ПолучитьСтруктуруПечатныхФорм() Экспорт

После чего все отлично заработало.

( Если необходимо, то могу сюда написать содержание Функция ПечатьТОРГ12(БезУслуг = Ложь) )

Все отлично работает, только один нюанс у данного метода.

Дело в том, что по требованию руководства, логисты должны печатать ТОРГ12 с текущей датой и вносить текущую дату в РеализацияТоваровУслуг.

И тут начинаются «пляски», учитывая характеристику сотрудников, приведенную выше и куча ошибок.

Поэтому, буквально вчера реализовал задачу автоматизации их процессов так: В специальной форме логистов (на базе элемента ЗаказПокупателя) вывел соответствующие поля: ПолеДатаРеализации ПолеРеализацияТоваровУслуг (и реквизит формы РеквизитПолеРеализацияТоваровУслуг с типом ДокументСсылка.РеализацияТоваровУслуг. Полю назначил кнопку Открыть)

Разместил элемент Кнопка1 (с надписью Печать) В модуле формы:


Процедура ОтборРеализация()	

	
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РеализацияТоваровУслуг.Номер
        |ИЗ
        |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |    РеализацияТоваровУслуг.Номер = &Номер";
    
    Запрос.УстановитьПараметр("Номер", Номер);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл               
        НомерДок = ВыборкаДетальныеЗаписи.Номер 		        
    КонецЦикла;	
	
	     ДатаРеализ = Дата;	    	   
	 
	РеализацияОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, ДатаРеализ); 
	РеквизитПолеРеализацияТоваровУслуг = РеализацияОбъект;
	ЭлементыФормы.ПолеДатаРеализации.Значение = РеализацияОбъект.Дата;

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




Процедура Кнопка1Нажатие(Элемент)
	
	     ДатаРеализ = Дата;
		
	  РеализацияОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, ДатаРеализ); 
	 	    Если НЕ РеализацияОбъект.Пустая() Тогда 
     РеализацияОбъект.ПолучитьОбъект().ПолучитьФорму("ФормаДокумента_AnytosЛогистикаПечать").Открыть();

 КонецЕсли;
	
КонецПроцедуры

Создал специальную, облегченную формы РеализацияТоваровУслуг ФормаДокумента_AnytosЛогистикаПечать. в процедуре ПриОткрытии добавил:


	Дата = ТекущаяДата();
	Записать();
	УниверсальныеМеханизмы.ОткрытьФормуВыбораПечатныхФормОбъекта(ЭтотОбъект, ЭтаФорма);
	Закрыть();

Т.е. меняется Дата реализации на текущую и Выводится форма выбора печатных форм. Посмотрите, пожалуйста, где я, как всегда усложнил? Ваши советы, всегда, необычайно ВАЖНЫ и ПОЛЕЗНЫ.

Во-первых, процедура ОтборРеализация мне совсем непонятна. У вас номера и даты заказа и реализации совпадают? Судя по коду, должно быть именно так.

По идее подчинённые реализации нужно искать таким запросом (в форме Заказа покупателя):

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РеализацияТоваровУслуг.Ссылка,
		|	РеализацияТоваровУслуг.Номер,
		|	РеализацияТоваровУслуг.Дата
		|ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|ГДЕ
		|	РеализацияТоваровУслуг.Сделка = &Сделка
		|	И РеализацияТоваровУслуг.Проведен";
	
	Запрос.УстановитьПараметр("Сделка", Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
	КонецЦикла;

Так сразу получите и Ссылку, и Номер, и Дату реализации.

Только нужно иметь в виду, что в общем случае по одному заказу покупателя может быть несколько реализаций. Думали, как такие ситуации обрабатывать?

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

По-моему, так будет оптимальней всего. Не нужно никаких дополнительных форм и прочих приблуд.