Текст расширения для версии : Управление торговлей, редакция 11.4.10.89
Расширение позволяет в документе "Приобретение товаров" в подборе отобразить цену не поставщика, а организации.
Код формы поступления товаров:
&НаКлиенте
&Вместо("ПодобратьТовары")
Процедура Расш_ПодобратьТовары(Команда)
// &ЗамерПроизводительности
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ПоступлениеТоваровНаСклад.ФормаДокумента.Команда.ПодобратьТовары");
Отказ = Ложь;
ОперацияБезЦен = Ложь;
Если Не ОперацияБезЦен
И Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ОтборПоТипуНоменклатуры = Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Склад", Объект.Склад); //Дмитрий
ПараметрыФормы.Вставить("Видцены", ПолучитьВидЦены()); //Дмитрий
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
Если Не ОперацияБезЦен Тогда
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
КонецЕсли;
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", ОтборПоТипуНоменклатуры);
ПараметрыФормы.Вставить("СкрыватьКолонкуВидЦены", ОперацияБезЦен);
ПараметрыФормы.Вставить("СкрыватьКомандуЦеныНоменклатуры", ОперацияБезЦен);
ПараметрыФормы.Вставить("РежимПодбораБезСоглашенийСКлиентами", Истина); //Дмитрий
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", ОперацияБезЦен);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Ложь);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Функция ПолучитьВидЦены() //Дмитрий
Возврат Справочники.ВидыЦен.НайтиПоНаименованию("Закупочные",Истина); // Название цены в вашей базе
КонецФункции
&НаКлиенте
&Перед("ОбработкаВыбора")
Процедура Расш_ОбработкаВыбора(РезультатВыбора, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.ЖурналДокументовЗакупки.Форма.ФормаПодбораТоваровИзЗаказа" Тогда
ПолучитьТоварыИзХранилища(РезультатВыбора.АдресТоваровВХранилище);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументЗакупки.Форма.Форма"
ИЛИ ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда //Дмитрий
ОбработкаВыбораПодборНаСервере(РезультатВыбора);
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.РедактированиеВзаиморасчетов" Тогда
ПолучитьРасшифровкуПлатежаИзХранилища(РезультатВыбора.АдресПлатежейВХранилище);
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(РезультатВыбора, ИсточникВыбора) Тогда
ОбновитьТекстСчетаФактурыПолученные();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(РезультатВыбора.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма" Тогда
ПолучитьЗагруженныеТоварыИзХранилища(РезультатВыбора);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, РезультатВыбора);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.СтруктураПредприятия.Форма.ФормаВыбора" Тогда
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Для Каждого Строка Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.Товары.НайтиПоИдентификатору(Строка);
Если ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") Или
ДанныеСтроки.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара") Тогда
Продолжить;
КонецЕсли;
ДанныеСтроки.Подразделение = РезультатВыбора;
КонецЦикла;
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.РеквизитыПечатиАвансовогоОтчета" Тогда
Если РезультатВыбора <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Объект, РезультатВыбора);
КонецЕсли;
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаСервере
&Вместо("ОбработкаВыбораПодборНаСервере")
Процедура Расш_ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, "Номенклатура, Характеристика, Упаковка, Склад, Цена, Сумма, КоличествоУпаковок, ПроцентРучнойСкидки, СуммаРучнойСкидки");
Если Объект.ПоступлениеПоЗаказам Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", Новый Структура("НалогообложениеНДС, Дата", Объект.НалогообложениеНДС, Объект.Дата));
СтруктураДействий.Вставить("ЗаполнитьПризнакАналитикаРасходовОбязательна");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",Новый Структура("Склад,СкладГруппа",Объект.Склад,Ложь)); //Дмитрий
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу, ТребуетсяЗалогЗаТару",
Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЦикла;
СтруктураНаименованийТабличныхЧастей = Новый Структура("Товары");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(СтруктураНаименованийТабличныхЧастей);
ЗаполнитьПризнакСписанияНаРасходыДляУслуг();
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
СформироватьНадписьВалюты(ЭтаФорма);
ЗаполнитьСтатусыУказанияСерийСервер();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
В этом модуле в процедуре "ПолучитьВидЦены()" введите имя цены из вашей базы.
При подборе вместо цен поставщика будет цена, которую вы укажете указали в этой процедуре (в данном примере "закупочная").
Код остальных модулей (и этого) находится в файле расширения.