#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("ЦеныИСкидки");
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.РегистрацияЦенНоменклатурыПоставщика") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
ТекстЗапросаЦеныНоменклатурыПоставщиков(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаУсловияПоставки(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.РегистрацияЦенНоменклатурыПоставщика) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.РегистрацияЦенНоменклатурыПоставщика.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.РегистрацияЦенНоменклатурыПоставщика);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ЗаполнитьРегистрациюЦенПоДокументуЗакупки(Основание, ДокументОбъект) Экспорт
ИмяТаблицы = Основание.Метаданные().Имя;
ТекстЗапроса =
"ВЫБРАТЬ
| ДокументЗакупки.Дата КАК Дата,
| ДокументЗакупки.Валюта КАК Валюта,
| ДокументЗакупки.Партнер КАК Партнер,
| ДокументЗакупки.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДокументЗакупки.Ссылка КАК ДокументОснование,
| НЕ ДокументЗакупки.Проведен КАК ЕстьОшибкиПроведен,
| ДокументЗакупки.РегистрироватьЦеныПоставщика КАК РегистрироватьЦеныПоставщика
|ИЗ
| Документ.ПриобретениеТоваровУслуг КАК ДокументЗакупки
|ГДЕ
| ДокументЗакупки.Ссылка = &Ссылка
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Документ.ПриобретениеТоваровУслуг", "Документ." + ИмяТаблицы);
Если ТипЗнч(Основание) = Тип("ДокументСсылка.ПриемкаТоваровНаХранение") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ДокументЗакупки.ЦенаВключаетНДС", "НЕОПРЕДЕЛЕНО");
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", Основание);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаШапка = РезультатЗапроса.Выбрать();
ВыборкаШапка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.ДокументОснование,
,
ВыборкаШапка.ЕстьОшибкиПроведен,);
СообщитьОбОшибкахРегистрацииЦенОснованием(ВыборкаШапка.РегистрироватьЦеныПоставщика, ВыборкаШапка.ДокументОснование);
ЗаполнитьЗначенияСвойств(ДокументОбъект, ВыборкаШапка);
ТекстЗапроса =
"ВЫБРАТЬ
| КурсыВалютСрезПоследних.Валюта КАК Валюта,
| КурсыВалютСрезПоследних.КурсЧислитель КАК КурсЧислитель,
| КурсыВалютСрезПоследних.КурсЗнаменатель КАК КурсЗнаменатель
|ПОМЕСТИТЬ
| ВременнаяТаблицаКурсыВалют
|ИЗ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(
| &Дата,
| Валюта=&Валюта
| ИЛИ Валюта В (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЕСТЬNULL(Товары.ВидЦеныПоставщика.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка))
| ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК Товары
| ГДЕ Товары.Ссылка = &Ссылка)
| И БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалютСрезПоследних
|
|ИНДЕКСИРОВАТЬ ПО
| Валюта
|;
|ВЫБРАТЬ
| Товары.НоменклатураПартнера КАК НоменклатураПартнера,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| Товары.Упаковка КАК Упаковка,
| ВЫРАЗИТЬ(Товары.Цена
| * ВЫБОР
| КОГДА &ЦенаВключаетНДС = НЕОПРЕДЕЛЕНО
| ТОГДА 1
| КОГДА
| &ЦенаВключаетНДС
| И НЕ ЕСТЬNULL(Товары.ВидЦеныПоставщика.ЦенаВключаетНДС, ЛОЖЬ)
| ТОГДА
| ВЫБОР
| КОГДА Товары.СтавкаНДС = ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)
| ТОГДА 1
| ИНАЧЕ 100 / (100 + Товары.СтавкаНДС.Ставка)
| КОНЕЦ
| КОГДА
| НЕ &ЦенаВключаетНДС
| И ЕСТЬNULL(Товары.ВидЦеныПоставщика.ЦенаВключаетНДС, ЛОЖЬ)
| ТОГДА (Товары.СтавкаНДС.Ставка + 100) / 100
| ИНАЧЕ
| 1
| КОНЕЦ
| * ВЫБОР
| КОГДА
| &Валюта <> ЕСТЬNULL(Товары.ВидЦеныПоставщика.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка))
| ТОГДА
| ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыСоглашения.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютыСоглашения.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЧислитель, 0) > 0
| ТОГДА
| (КурсыВалюты.КурсЧислитель * КурсыВалютыСоглашения.КурсЗнаменатель)
| / (КурсыВалютыСоглашения.КурсЧислитель * КурсыВалюты.КурсЗнаменатель)
| ИНАЧЕ
| 0
| КОНЕЦ
| ИНАЧЕ
| 1
| КОНЕЦ КАК ЧИСЛО(31,2))
| КАК Цена
|ПОМЕСТИТЬ
| Товары
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК Товары
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВременнаяТаблицаКурсыВалют КАК КурсыВалюты
|ПО
| КурсыВалюты.Валюта = &Валюта
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВременнаяТаблицаКурсыВалют КАК КурсыВалютыСоглашения
|ПО
| КурсыВалютыСоглашения.Валюта = ЕСТЬNULL(Товары.ВидЦеныПоставщика.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка))
|ГДЕ
| Товары.Ссылка = &Ссылка
| И Товары.ВидЦеныПоставщика <> ЗНАЧЕНИЕ(Справочник.ВидыЦенПоставщиков.ПустаяСсылка)
|;
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| СРЕДНЕЕ(
| Товары.Цена / ВЫБОР
| КОГДА
| Товары.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| &ТекстЗапросаКоэффициентУпаковки
| ИНАЧЕ
| 1
| КОНЕЦ
| ) КАК ЦенаЗаБазовуюЕдиницу,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товары.Упаковка) КАК КоличествоРазличныхУпаковок
|ПОМЕСТИТЬ
| ТоварыСРазличнымиУпаковкамиЦенами
|ИЗ
| Товары КАК Товары
|СГРУППИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| ВидЦеныПоставщика
|;
|ВЫБРАТЬ
| МАКСИМУМ(Товары.НоменклатураПартнера) КАК НоменклатураПартнера,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| МИНИМУМ(ВЫБОР
| КОГДА
| ТоварыСРазличнымиУпаковкамиЦенами.КоличествоРазличныхУпаковок > 1
| ТОГДА
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ИНАЧЕ
| Товары.Упаковка
| КОНЕЦ
| ) КАК Упаковка,
| СРЕДНЕЕ(ВЫБОР
| КОГДА
| ТоварыСРазличнымиУпаковкамиЦенами.КоличествоРазличныхУпаковок > 1
| ТОГДА
| ТоварыСРазличнымиУпаковкамиЦенами.ЦенаЗаБазовуюЕдиницу
| ИНАЧЕ
| Товары.Цена
| КОНЕЦ
| ) КАК Цена
|ИЗ
| Товары КАК Товары
|ЛЕВОЕ СОЕДИНЕНИЕ
| ТоварыСРазличнымиУпаковкамиЦенами КАК ТоварыСРазличнымиУпаковкамиЦенами
|ПО
| Товары.Номенклатура = ТоварыСРазличнымиУпаковкамиЦенами.Номенклатура
| И Товары.Характеристика = ТоварыСРазличнымиУпаковкамиЦенами.Характеристика
| И Товары.ВидЦеныПоставщика = ТоварыСРазличнымиУпаковкамиЦенами.ВидЦеныПоставщика
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.ВидЦеныПоставщика
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Документ.ПриобретениеТоваровУслуг", "Документ." + ИмяТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос = Новый Запрос;
Если ТипЗнч(Основание) = Тип("ДокументСсылка.ПриемкаТоваровНаХранение") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Товары.ВидЦеныПоставщика.Валюта", "&ВалютаВидаЦен");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Товары.ВидЦеныПоставщика.ЦенаВключаетНДС", "NULL");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Товары.ВидЦеныПоставщика", "&ВидЦеныПоставщика");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Товары.СтавкаНДС", "ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)");
ВидЦеныПоставщика = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Основание, "ВидЦеныПоставщика");
Если Не ЗначениеЗаполнено(ВидЦеныПоставщика) Тогда
Валюта = Справочники.Валюты.ПустаяСсылка();
Иначе
РеквизитыВидаЦеныПоставщика = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВидЦеныПоставщика, "Валюта");
Валюта = РеквизитыВидаЦеныПоставщика.Валюта;
КонецЕсли;
Запрос.УстановитьПараметр("ВалютаВидаЦен", Валюта);
Запрос.УстановитьПараметр("ВидЦеныПоставщика", ВидЦеныПоставщика);
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", Основание);
Запрос.УстановитьПараметр("Дата", ВыборкаШапка.Дата);
Запрос.УстановитьПараметр("Валюта", ВыборкаШапка.Валюта);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", ВыборкаШапка.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("БазоваяВалюта", ЗначениеНастроекПовтИсп.БазоваяВалютаПоУмолчанию());
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДокументОбъект.Товары.Загрузить(РезультатЗапроса[3].Выгрузить());
КонецПроцедуры
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КонецПроцедуры
Процедура ЗаполнитьПоПоступлениюТоваров(Основание, ДокументОбъект) Экспорт
ИмяТаблицы = Основание.Метаданные().Имя;
ТекстЗапроса =
"ВЫБРАТЬ
| ДокументПоступления.Дата КАК Дата,
| ДокументПоступления.Валюта КАК Валюта,
| ДокументПоступления.Партнер КАК Партнер,
| ДокументПоступления.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДокументПоступления.Ссылка КАК ДокументОснование,
| НЕ ДокументПоступления.Проведен КАК ЕстьОшибкиПроведен,
| ДокументПоступления.РегистрироватьЦеныПоставщика КАК РегистрироватьЦеныПоставщика
|ИЗ
| Документ.ПоступлениеТоваровНаСклад КАК ДокументПоступления
|ГДЕ
| ДокументПоступления.Ссылка = &Ссылка";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", Основание);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаШапка = РезультатЗапроса.Выбрать();
ВыборкаШапка.Следующий();
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ВыборкаШапка.ДокументОснование,
,
ВыборкаШапка.ЕстьОшибкиПроведен,);
СообщитьОбОшибкахРегистрацииЦенОснованием(ВыборкаШапка.РегистрироватьЦеныПоставщика, ВыборкаШапка.ДокументОснование);
ЗаполнитьЗначенияСвойств(ДокументОбъект, ВыборкаШапка);
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПоступлениеТоваровНаСклад.ВидЦеныПоставщика.Валюта КАК Валюта
|ПОМЕСТИТЬ Валюты
|ИЗ
| Документ.ПоступлениеТоваровНаСклад КАК ПоступлениеТоваровНаСклад
|ГДЕ
| ПоступлениеТоваровНаСклад.Ссылка = &Ссылка
| И НЕ ПоступлениеТоваровНаСклад.ВидЦеныПоставщика = ЗНАЧЕНИЕ(Справочник.ВидыЦенПоставщиков.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Валюта
|
|ИНДЕКСИРОВАТЬ ПО
| Валюта
|;
|
|
|ВЫБРАТЬ
| КурсыВалютСрезПоследних.Валюта КАК Валюта,
| КурсыВалютСрезПоследних.КурсЧислитель КАК КурсЧислитель,
| КурсыВалютСрезПоследних.КурсЗнаменатель КАК КурсЗнаменатель
|ПОМЕСТИТЬ ВременнаяТаблицаКурсыВалют
|ИЗ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&Дата, Валюта В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Валюты.Валюта
| ИЗ
| Валюты)
| И БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалютСрезПоследних
|
|ИНДЕКСИРОВАТЬ ПО
| Валюта
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ДокументПоступления.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ВЫРАЗИТЬ(ТаблицаТовары.Цена * ВЫБОР
| КОГДА &ЦенаВключаетНДС
| И НЕ ДокументПоступления.ВидЦеныПоставщика.ЦенаВключаетНДС
| ТОГДА ВЫБОР
| КОГДА ТаблицаТовары.СтавкаНДС = ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)
| ТОГДА 1
| ИНАЧЕ 100 / (100 + ТаблицаТовары.СтавкаНДС.Ставка)
| КОНЕЦ
| КОГДА НЕ &ЦенаВключаетНДС
| И ДокументПоступления.ВидЦеныПоставщика.ЦенаВключаетНДС
| ТОГДА (ТаблицаТовары.СтавкаНДС.Ставка + 100) / 100
| ИНАЧЕ 1
| КОНЕЦ * ВЫБОР
| КОГДА &Валюта <> ДокументПоступления.ВидЦеныПоставщика.Валюта
| ТОГДА ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыСоглашения.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютыСоглашения.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЧислитель, 0) > 0
| ТОГДА КурсыВалюты.КурсЧислитель * КурсыВалютыСоглашения.КурсЗнаменатель / (КурсыВалютыСоглашения.КурсЧислитель *
| КурсыВалюты.КурсЗнаменатель)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 1
| КОНЕЦ КАК ЧИСЛО(31, 2)) КАК Цена
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ПоступлениеТоваровНаСклад.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровНаСклад КАК ДокументПоступления
| ПО (ДокументПоступления.Ссылка = ТаблицаТовары.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаКурсыВалют КАК КурсыВалюты
| ПО (КурсыВалюты.Валюта = &Валюта)
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаКурсыВалют КАК КурсыВалютыСоглашения
| ПО (КурсыВалютыСоглашения.Валюта = ДокументПоступления.ВидЦеныПоставщика.Валюта)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ДокументПоступления.ВидЦеныПоставщика <> ЗНАЧЕНИЕ(Справочник.ВидыЦенПоставщиков.ПустаяСсылка)
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| СРЕДНЕЕ(ТаблицаТовары.Цена / ВЫБОР
| КОГДА ТаблицаТовары.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА &ТекстЗапросаКоэффициентУпаковки
| ИНАЧЕ 1
| КОНЕЦ) КАК ЦенаЗаБазовуюЕдиницу,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаТовары.Упаковка) КАК КоличествоРазличныхУпаковок
|ПОМЕСТИТЬ ТоварыСРазличнымиУпаковкамиЦенами
|ИЗ
| Товары КАК ТаблицаТовары
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.ВидЦеныПоставщика
|;
|
|
|ВЫБРАТЬ
| МАКСИМУМ(ТаблицаТовары.НоменклатураПартнера) КАК НоменклатураПартнера,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| МИНИМУМ(ВЫБОР
| КОГДА ТоварыСРазличнымиУпаковкамиЦенами.КоличествоРазличныхУпаковок > 1
| ТОГДА ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ИНАЧЕ ТаблицаТовары.Упаковка
| КОНЕЦ) КАК Упаковка,
| СРЕДНЕЕ(ВЫБОР
| КОГДА ТоварыСРазличнымиУпаковкамиЦенами.КоличествоРазличныхУпаковок > 1
| ТОГДА ТоварыСРазличнымиУпаковкамиЦенами.ЦенаЗаБазовуюЕдиницу
| ИНАЧЕ ТаблицаТовары.Цена
| КОНЕЦ) КАК Цена
|ИЗ
| Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыСРазличнымиУпаковкамиЦенами КАК ТоварыСРазличнымиУпаковкамиЦенами
| ПО ТаблицаТовары.Номенклатура = ТоварыСРазличнымиУпаковкамиЦенами.Номенклатура
| И ТаблицаТовары.Характеристика = ТоварыСРазличнымиУпаковкамиЦенами.Характеристика
| И ТаблицаТовары.ВидЦеныПоставщика = ТоварыСРазличнымиУпаковкамиЦенами.ВидЦеныПоставщика
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.ВидЦеныПоставщика";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Документ.ПриобретениеТоваровУслуг", "Документ." + ИмяТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТаблицаТовары.Упаковка",
"ТаблицаТовары.Номенклатура"));
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", Основание);
Запрос.УстановитьПараметр("Дата", ВыборкаШапка.Дата);
Запрос.УстановитьПараметр("Валюта", ВыборкаШапка.Валюта);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", ВыборкаШапка.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("БазоваяВалюта", ЗначениеНастроекПовтИсп.БазоваяВалютаПоУмолчанию());
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДокументОбъект.Товары.Загрузить(РезультатЗапроса[3].Выгрузить());
КонецПроцедуры
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Партнер)";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КонецПроцедуры
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Функция ТекстЗапросаЦеныНоменклатурыПоставщиков(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЦеныНоменклатурыПоставщиков";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ТаблицаТовары.Цена КАК Цена,
| ТаблицаТовары.ВидЦеныПоставщика.Валюта КАК Валюта,
| ТаблицаТовары.Ссылка.Партнер КАК Партнер,
| ТаблицаТовары.Ссылка.Дата КАК ПЕРИОД,
| ТаблицаТовары.УпаковкаЗаказа КАК УпаковкаЗаказа,
| ТаблицаТовары.МинимальнаяПартияПоставки КАК МинимальнаяПартияПоставки,
| ТаблицаТовары.УстановкаУсловий КАК УстановкаУсловий
|ИЗ
| Документ.РегистрацияЦенНоменклатурыПоставщика.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаУсловияПоставки(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "УсловияЗакупок";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка.Дата КАК ПЕРИОД,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| ТаблицаТовары.УпаковкаЗаказа КАК УпаковкаЗаказа,
| ТаблицаТовары.МинимальнаяПартияПоставки КАК МинимальнаяПартияПоставки
|ИЗ
| Документ.РегистрацияЦенНоменклатурыПоставщика.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ТаблицаТовары.УстановкаУсловий = ИСТИНА
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура СообщитьОбОшибкахРегистрацииЦенОснованием(РегистрироватьЦеныПоставщикаОснованием, ДокументРегистрацииЦенПоставщика) Экспорт
Если РегистрироватьЦеныПоставщикаОснованием Тогда
ТекстОшибки = НСтр("ru='Цены уже зарегистрированы документом %Документ%. Ввод на основании не требуется.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ДокументРегистрацииЦенПоставщика);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли