РК_ЗагрузкаЦен 1.3.1.99: загрузка актуальных цен из исходной ИБ (#18)
Обработка в crm3-26.rhana вызывает Transfer API исходной базы, сопоставляет виды цен и номенклатуру и создаёт УстановкаЦенНоменклатуры. Канон: rhana/crm3-migration#20. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,584 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Загрузка актуальных цен продаж из исходной ИБ через Transfer API.
|
||||
// https://git.p7net.ru/1c/crm3_26.rhana/issues/18
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
Процедура ЗаполнитьВидыЦенИзОтветаAPI(Ответ, Очищать = Истина) Экспорт
|
||||
|
||||
Если Очищать Тогда
|
||||
ВидыЦенИсточника.Очистить();
|
||||
КонецЕсли;
|
||||
|
||||
Строки = ЗначениеСвойства(Ответ, "rows", Неопределено);
|
||||
Если ТипЗнч(Строки) <> Тип("Массив") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого СтрокаAPI Из Строки Цикл
|
||||
НовСтр = ВидыЦенИсточника.Добавить();
|
||||
НовСтр.Отметка = Истина;
|
||||
НовСтр.Идентификатор = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "guid", "")));
|
||||
НовСтр.Наименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "name", "")));
|
||||
НовСтр.ВалютаКод = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "currency_code", "")));
|
||||
НовСтр.ЦенаВключаетНДС = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "vat_included", Ложь));
|
||||
НовСтр.СпособЗаданияЦены = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "method", "")));
|
||||
НовСтр.БазовыйВидЦеныНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "base_type_name", "")));
|
||||
НовСтр.Наценка = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "markup", 0), 0);
|
||||
НовСтр.ИспользоватьПриПродаже = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "use_for_sale", Истина));
|
||||
НовСтр.ПометкаУдаления = БулевоИзЗначения(ЗначениеСвойства(СтрокаAPI, "deletion_mark", Ложь));
|
||||
НовСтр.СтатусСопоставления = "";
|
||||
НовСтр.Комментарий = "";
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СопоставитьВидыЦен(РежимТест) Экспорт
|
||||
|
||||
Найдено = 0;
|
||||
Создано = 0;
|
||||
НеНайдено = 0;
|
||||
|
||||
Для Каждого СтрТ Из ВидыЦенИсточника Цикл
|
||||
ВЦ = НайтиВидЦеныСтроки(СтрТ);
|
||||
Если ЗначениеЗаполнено(ВЦ) Тогда
|
||||
СтрТ.ВидЦены = ВЦ;
|
||||
СтрТ.СтатусСопоставления = "Найден";
|
||||
СтрТ.Комментарий = "";
|
||||
Найдено = Найдено + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если СоздаватьОтсутствующиеВидыЦен И СтрТ.Отметка Тогда
|
||||
Если РежимТест Тогда
|
||||
СтрТ.СтатусСопоставления = "К созданию";
|
||||
СтрТ.Комментарий = "Будет создан вид цен «" + СтрТ.Наименование + "»";
|
||||
Создано = Создано + 1;
|
||||
Иначе
|
||||
ВЦ = СоздатьВидЦеныСтроки(СтрТ);
|
||||
Если ЗначениеЗаполнено(ВЦ) Тогда
|
||||
СтрТ.ВидЦены = ВЦ;
|
||||
СтрТ.СтатусСопоставления = "Создан";
|
||||
СтрТ.Комментарий = "";
|
||||
Создано = Создано + 1;
|
||||
Иначе
|
||||
СтрТ.СтатусСопоставления = "Ошибка создания";
|
||||
НеНайдено = НеНайдено + 1;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
СтрТ.ВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
|
||||
СтрТ.СтатусСопоставления = "Не найден";
|
||||
СтрТ.Комментарий = "Нет вида цен с наименованием «" + СтрТ.Наименование + "»";
|
||||
НеНайдено = НеНайдено + 1;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат "Видов цен: найдено " + Формат(Найдено, "ЧН=0; ЧГ=0")
|
||||
+ ", создано/к созданию " + Формат(Создано, "ЧН=0; ЧГ=0")
|
||||
+ ", не найдено " + Формат(НеНайдено, "ЧН=0; ЧГ=0");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьВходящиеЦеныИзОтветаAPI(Ответ, Очищать = Истина) Экспорт
|
||||
|
||||
Если Очищать Тогда
|
||||
ВходящиеЦены.Очистить();
|
||||
КонецЕсли;
|
||||
|
||||
Строки = ЗначениеСвойства(Ответ, "rows", Неопределено);
|
||||
Если ТипЗнч(Строки) <> Тип("Массив") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого СтрокаAPI Из Строки Цикл
|
||||
НовСтр = ВходящиеЦены.Добавить();
|
||||
ПериодТекст = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "period", "")));
|
||||
Если ЗначениеЗаполнено(ПериодТекст) Тогда
|
||||
Попытка
|
||||
НовСтр.Период = XMLЗначение(Тип("Дата"), ПериодТекст);
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
НовСтр.НоменклатураИдентификатор = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "nomenclature_guid", "")));
|
||||
НовСтр.Артикул = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "nomenclature_article", "")));
|
||||
НовСтр.НоменклатураКод = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "nomenclature_code", "")));
|
||||
НовСтр.НоменклатураНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "nomenclature_name", "")));
|
||||
НовСтр.ХарактеристикаИдентификатор = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "characteristic_guid", "")));
|
||||
НовСтр.ХарактеристикаНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "characteristic_name", "")));
|
||||
НовСтр.ВидЦеныИдентификатор = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "price_type_guid", "")));
|
||||
НовСтр.ВидЦеныНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "price_type_name", "")));
|
||||
НовСтр.Цена = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "price", 0), 0);
|
||||
НовСтр.ВалютаКод = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "currency_code", "")));
|
||||
НовСтр.УпаковкаНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "package_name", "")));
|
||||
НовСтр.Сопоставлено = Ложь;
|
||||
НовСтр.ЗагруженоВДокумент = Ложь;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СопоставитьВходящиеЦены() Экспорт
|
||||
|
||||
Сопоставлено = 0;
|
||||
Пропущено = 0;
|
||||
СРазрывом = 0;
|
||||
КартаВидов = КартаВидовЦенИсточника();
|
||||
|
||||
Для Каждого СтрТ Из ВходящиеЦены Цикл
|
||||
СтрТ.КомментарийСопоставления = "";
|
||||
СтрТ.РазрывДетализации = "";
|
||||
СтрТ.ИспользоватьСерииСклад = "";
|
||||
СтрТ.КлючЦенПоСерии = "";
|
||||
СтрТ.ТекущаяЦенаЦель = 0;
|
||||
|
||||
Ном = НайтиНоменклатуруСтроки(СтрТ);
|
||||
СтрТ.Номенклатура = Ном;
|
||||
Если Не ЗначениеЗаполнено(Ном) Тогда
|
||||
СтрТ.Сопоставлено = Ложь;
|
||||
Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Тогда
|
||||
СтрТ.КомментарийСопоставления = "Номенклатура не найдена";
|
||||
КонецЕсли;
|
||||
Пропущено = Пропущено + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ВЦ = Неопределено;
|
||||
КлючВЦ = НРег(СокрЛП(СтрТ.ВидЦеныИдентификатор));
|
||||
Если ЗначениеЗаполнено(КлючВЦ) Тогда
|
||||
ВЦ = КартаВидов.Получить(КлючВЦ);
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(ВЦ) Тогда
|
||||
ВЦ = Справочники.ВидыЦен.НайтиПоНаименованию(СокрЛП(СтрТ.ВидЦеныНаименование), Истина);
|
||||
КонецЕсли;
|
||||
СтрТ.ВидЦены = ВЦ;
|
||||
Если Не ЗначениеЗаполнено(ВЦ) Тогда
|
||||
СтрТ.Сопоставлено = Ложь;
|
||||
СтрТ.КомментарийСопоставления = "Вид цены не найден: " + СтрТ.ВидЦеныНаименование;
|
||||
Пропущено = Пропущено + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ЗаполнитьПолитикуСерийСтроки(СтрТ, Ном);
|
||||
СтрТ.ТекущаяЦенаЦель = ТекущаяЦенаЦелевойИБ(Ном, ВЦ);
|
||||
СтрТ.Сопоставлено = Истина;
|
||||
Сопоставлено = Сопоставлено + 1;
|
||||
Если ЗначениеЗаполнено(СтрТ.РазрывДетализации) Тогда
|
||||
СРазрывом = СРазрывом + 1;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат "Сопоставлено " + Формат(Сопоставлено, "ЧН=0; ЧГ=0")
|
||||
+ ", пропущено " + Формат(Пропущено, "ЧН=0; ЧГ=0")
|
||||
+ ", с разрывом серий/ключа цен " + Формат(СРазрывом, "ЧН=0; ЧГ=0");
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьДокументыУстановкиЦен(РежимТест) Экспорт
|
||||
|
||||
ИспЦО25 = Ложь;
|
||||
Попытка
|
||||
ИспЦО25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
|
||||
Исключение
|
||||
ИспЦО25 = Ложь;
|
||||
КонецПопытки;
|
||||
|
||||
ДатаУстановки = ДатаДокументов;
|
||||
Если Не ЗначениеЗаполнено(ДатаУстановки) Тогда
|
||||
ДатаУстановки = ТекущаяДатаСеанса();
|
||||
КонецЕсли;
|
||||
КомментарийБаза = СокрЛП(КомментарийДокументов);
|
||||
Если ПустаяСтрока(КомментарийБаза) Тогда
|
||||
КомментарийБаза = "Перенос цен из crm3-dev";
|
||||
КонецЕсли;
|
||||
|
||||
Группы = Новый Соответствие;
|
||||
ПорядокГрупп = Новый Массив;
|
||||
Для Каждого СтрТ Из ВходящиеЦены Цикл
|
||||
Если Не СтрТ.Сопоставлено Или СтрТ.ЗагруженоВДокумент Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(СтрТ.Номенклатура) Или Не ЗначениеЗаполнено(СтрТ.ВидЦены) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
КлючГр = Строка(СтрТ.ВидЦены);
|
||||
Список = Группы.Получить(КлючГр);
|
||||
Если Список = Неопределено Тогда
|
||||
Список = Новый Массив;
|
||||
Группы.Вставить(КлючГр, Список);
|
||||
ПорядокГрупп.Добавить(СтрТ.ВидЦены);
|
||||
КонецЕсли;
|
||||
Список.Добавить(СтрТ);
|
||||
КонецЦикла;
|
||||
|
||||
СозданоДок = 0;
|
||||
ПропущеноСтрок = 0;
|
||||
Ошибок = 0;
|
||||
МаксСтрок = 500;
|
||||
|
||||
Если Не РежимТест Тогда
|
||||
СозданныеДокументы.Очистить();
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого ВидЦеныГр Из ПорядокГрупп Цикл
|
||||
СтрокиГр = Группы.Получить(Строка(ВидЦеныГр));
|
||||
Если СтрокиГр = Неопределено Или СтрокиГр.Количество() = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Индекс = 0;
|
||||
НомерПакета = 0;
|
||||
Пока Индекс < СтрокиГр.Количество() Цикл
|
||||
НомерПакета = НомерПакета + 1;
|
||||
КонецПакета = Мин(Индекс + МаксСтрок, СтрокиГр.Количество());
|
||||
Пакет = Новый Массив;
|
||||
Для Инд = Индекс По КонецПакета - 1 Цикл
|
||||
Пакет.Добавить(СтрокиГр[Инд]);
|
||||
КонецЦикла;
|
||||
Индекс = КонецПакета;
|
||||
|
||||
Если РежимТест Тогда
|
||||
СозданоДок = СозданоДок + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
|
||||
Док.Дата = ДатаУстановки + (НомерПакета - 1);
|
||||
Док.Комментарий = КомментарийБаза + " / " + Строка(ВидЦеныГр);
|
||||
Док.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
|
||||
Док.Согласован = Истина;
|
||||
Док.Ответственный = Пользователи.ТекущийПользователь();
|
||||
СтрВЦ = Док.ВидыЦен.Добавить();
|
||||
СтрВЦ.ВидЦены = ВидЦеныГр;
|
||||
|
||||
КлючиВДок = Новый Соответствие;
|
||||
Для Каждого СтрТ Из Пакет Цикл
|
||||
КлючСтр = НРег(XMLСтрока(СтрТ.Номенклатура.УникальныйИдентификатор())) + "|"
|
||||
+ НРег(СокрЛП(СтрТ.ХарактеристикаНаименование)) + "|"
|
||||
+ НРег(XMLСтрока(СтрТ.ВидЦены.УникальныйИдентификатор()));
|
||||
Если КлючиВДок.Получить(КлючСтр) <> Неопределено Тогда
|
||||
ПропущеноСтрок = ПропущеноСтрок + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
КлючиВДок.Вставить(КлючСтр, Истина);
|
||||
|
||||
ВалютаСсылка = Справочники.Валюты.ПустаяСсылка();
|
||||
Если ЗначениеЗаполнено(СтрТ.ВалютаКод) Тогда
|
||||
ВалютаСсылка = Справочники.Валюты.НайтиПоКоду(СокрЛП(СтрТ.ВалютаКод));
|
||||
КонецЕсли;
|
||||
Упак = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
|
||||
Если ЗначениеЗаполнено(СтрТ.УпаковкаНаименование) Тогда
|
||||
Упак = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(СокрЛП(СтрТ.УпаковкаНаименование), Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Если ИспЦО25 Тогда
|
||||
НовСтр = Док.Товары2_5.Добавить();
|
||||
НовСтр.Номенклатура = СтрТ.Номенклатура;
|
||||
НовСтр.ХарактеристикаЦО = Справочники.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка();
|
||||
НовСтр.СерияЦО = Справочники.СерииНоменклатурыДляЦенообразования.ПустаяСсылка();
|
||||
НовСтр.УпаковкаЦО = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
|
||||
НовСтр.Упаковка = Упак;
|
||||
НовСтр.ВидЦены = СтрТ.ВидЦены;
|
||||
НовСтр.Цена = СтрТ.Цена;
|
||||
НовСтр.Валюта = ВалютаСсылка;
|
||||
НовСтр.ЦенаИзмененаВручную = Истина;
|
||||
Иначе
|
||||
НовСтр = Док.Товары.Добавить();
|
||||
НовСтр.Номенклатура = СтрТ.Номенклатура;
|
||||
НовСтр.Упаковка = Упак;
|
||||
НовСтр.ВидЦены = СтрТ.ВидЦены;
|
||||
НовСтр.Цена = СтрТ.Цена;
|
||||
НовСтр.Валюта = ВалютаСсылка;
|
||||
НовСтр.ЦенаИзмененаВручную = Истина;
|
||||
Если ЗначениеЗаполнено(СтрТ.ХарактеристикаНаименование) Тогда
|
||||
Хар = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(
|
||||
СокрЛП(СтрТ.ХарактеристикаНаименование), Истина, , СтрТ.Номенклатура);
|
||||
Если ЗначениеЗаполнено(Хар) Тогда
|
||||
НовСтр.Характеристика = Хар;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
СтрТ.ЗагруженоВДокумент = Истина;
|
||||
КонецЦикла;
|
||||
|
||||
Если (Док.Товары.Количество() + Док.Товары2_5.Количество()) = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Док.Записать(РежимЗаписиДокумента.Проведение);
|
||||
СозданоДок = СозданоДок + 1;
|
||||
СтрДок = СозданныеДокументы.Добавить();
|
||||
СтрДок.ДокументПредставление = Строка(Док);
|
||||
СтрДок.ВидЦены = ВидЦеныГр;
|
||||
СтрДок.КоличествоСтрок = Док.Товары.Количество() + Док.Товары2_5.Количество();
|
||||
СтрДок.Комментарий = Док.Комментарий;
|
||||
Для Каждого СтрТ Из Пакет Цикл
|
||||
Если СтрТ.ЗагруженоВДокумент Тогда
|
||||
СтрТ.ДокументПредставление = Строка(Док);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Исключение
|
||||
Ошибок = Ошибок + 1;
|
||||
ТекстОш = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
Для Каждого СтрТ Из Пакет Цикл
|
||||
СтрТ.ЗагруженоВДокумент = Ложь;
|
||||
СтрТ.КомментарийСопоставления = СокрЛП(СтрТ.КомментарийСопоставления + " " + ТекстОш);
|
||||
КонецЦикла;
|
||||
КонецПопытки;
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат "Документов=" + Формат(СозданоДок, "ЧН=0; ЧГ=0")
|
||||
+ ", пропущено строк=" + Формат(ПропущеноСтрок, "ЧН=0; ЧГ=0")
|
||||
+ ", ошибок=" + Формат(Ошибок, "ЧН=0; ЧГ=0")
|
||||
+ ", ЦО 2.5=" + ?(ИспЦО25, "Да", "Нет")
|
||||
+ ?(РежимТест, " (тест)", "");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция КартаВидовЦенИсточника()
|
||||
|
||||
Карта = Новый Соответствие;
|
||||
Для Каждого СтрТ Из ВидыЦенИсточника Цикл
|
||||
Если ЗначениеЗаполнено(СтрТ.ВидЦены) И ЗначениеЗаполнено(СтрТ.Идентификатор) Тогда
|
||||
Карта.Вставить(НРег(СокрЛП(СтрТ.Идентификатор)), СтрТ.ВидЦены);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
Возврат Карта;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НайтиВидЦеныСтроки(СтрТ)
|
||||
|
||||
Имя = СокрЛП(СтрТ.Наименование);
|
||||
Если Не ЗначениеЗаполнено(Имя) Тогда
|
||||
Возврат Справочники.ВидыЦен.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
ВЦ = Справочники.ВидыЦен.НайтиПоНаименованию(Имя, Истина);
|
||||
Если ЗначениеЗаполнено(ВЦ) Тогда
|
||||
Возврат ВЦ;
|
||||
КонецЕсли;
|
||||
Возврат Справочники.ВидыЦен.ПустаяСсылка();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьВидЦеныСтроки(СтрТ)
|
||||
|
||||
Попытка
|
||||
ОбъектВЦ = Справочники.ВидыЦен.СоздатьЭлемент();
|
||||
ОбъектВЦ.Наименование = СокрЛП(СтрТ.Наименование);
|
||||
Если ЗначениеЗаполнено(СтрТ.ВалютаКод) Тогда
|
||||
ВалютаСсылка = Справочники.Валюты.НайтиПоКоду(СокрЛП(СтрТ.ВалютаКод));
|
||||
Если ЗначениеЗаполнено(ВалютаСсылка) Тогда
|
||||
ОбъектВЦ.ВалютаЦены = ВалютаСсылка;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(СтрТ.СпособЗаданияЦены) Тогда
|
||||
Попытка
|
||||
ОбъектВЦ.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен[СтрТ.СпособЗаданияЦены];
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(ОбъектВЦ.СпособЗаданияЦены) Тогда
|
||||
Попытка
|
||||
ОбъектВЦ.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.РучноеНазначение;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(СтрТ.БазовыйВидЦеныНаименование) Тогда
|
||||
Базовый = Справочники.ВидыЦен.НайтиПоНаименованию(СокрЛП(СтрТ.БазовыйВидЦеныНаименование), Истина);
|
||||
Если ЗначениеЗаполнено(Базовый) Тогда
|
||||
ОбъектВЦ.БазовыйВидЦены = Базовый;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ОбъектВЦ.Наценка = СтрТ.Наценка;
|
||||
ОбъектВЦ.ЦенаВключаетНДС = СтрТ.ЦенаВключаетНДС;
|
||||
ОбъектВЦ.ИспользоватьПриПродаже = СтрТ.ИспользоватьПриПродаже;
|
||||
Попытка
|
||||
ОбъектВЦ.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
ОбъектВЦ.Записать();
|
||||
Возврат ОбъектВЦ.Ссылка;
|
||||
Исключение
|
||||
СтрТ.Комментарий = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
Возврат Справочники.ВидыЦен.ПустаяСсылка();
|
||||
КонецПопытки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НайтиНоменклатуруСтроки(СтрТ)
|
||||
|
||||
Ном = Справочники.Номенклатура.ПустаяСсылка();
|
||||
Арт = СокрЛП(СтрТ.Артикул);
|
||||
ИмяНом = СокрЛП(СтрТ.НоменклатураНаименование);
|
||||
КодНом = СокрЛП(СтрТ.НоменклатураКод);
|
||||
|
||||
Если ЗначениеЗаполнено(Арт) Тогда
|
||||
Ном = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Арт);
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Ном) И ЗначениеЗаполнено(СтрТ.НоменклатураИдентификатор) Тогда
|
||||
Попытка
|
||||
СсылкаПоГуид = Справочники.Номенклатура.ПолучитьСсылку(
|
||||
Новый УникальныйИдентификатор(СтрТ.НоменклатураИдентификатор));
|
||||
Если ОбщегоНазначения.СсылкаСуществует(СсылкаПоГуид) Тогда
|
||||
Ном = СсылкаПоГуид;
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Ном) И ЗначениеЗаполнено(КодНом) Тогда
|
||||
Ном = Справочники.Номенклатура.НайтиПоКоду(КодНом);
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Ном) И ЗначениеЗаполнено(ИмяНом) Тогда
|
||||
Ном = Справочники.Номенклатура.НайтиПоНаименованию(ИмяНом, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ном;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьПолитикуСерийСтроки(СтрТ, Ном)
|
||||
|
||||
ВидНом = Неопределено;
|
||||
Попытка
|
||||
ВидНом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры");
|
||||
Исключение
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
Если Не ЗначениеЗаполнено(ВидНом) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ИспСерии = Ложь;
|
||||
Попытка
|
||||
ИспСерии = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидНом, "ИспользоватьСерии") = Истина;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
СтрТ.ИспользоватьСерииСклад = ?(ИспСерии, "Да", "Нет");
|
||||
|
||||
КлючСерии = "";
|
||||
Попытка
|
||||
ЗначениеКлюча = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидНом, "НастройкиКлючаЦенПоСерии");
|
||||
Если ЗначениеЗаполнено(ЗначениеКлюча) Тогда
|
||||
КлючСерии = Строка(ЗначениеКлюча);
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
СтрТ.КлючЦенПоСерии = КлючСерии;
|
||||
|
||||
Части = Новый Массив;
|
||||
Если ИспСерии Тогда
|
||||
Части.Добавить("в цели посерийный складской учёт, в источнике цена без серии");
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(КлючСерии) И НРег(КлючСерии) <> "не использовать" Тогда
|
||||
Части.Добавить("ключ цен по серии=" + КлючСерии + "; цена будет общей (СерияЦО пустая)");
|
||||
КонецЕсли;
|
||||
СтрТ.РазрывДетализации = СтрСоединить(Части, "; ");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ТекущаяЦенаЦелевойИБ(Ном, ВидЦены)
|
||||
|
||||
ДатаСреза = ДатаЦен;
|
||||
Если Не ЗначениеЗаполнено(ДатаСреза) Тогда
|
||||
ДатаСреза = ТекущаяДатаСеанса();
|
||||
КонецЕсли;
|
||||
|
||||
ИспЦО25 = Ложь;
|
||||
Попытка
|
||||
ИспЦО25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
|
||||
Исключение
|
||||
ИспЦО25 = Ложь;
|
||||
КонецПопытки;
|
||||
|
||||
Запрос = Новый Запрос;
|
||||
Если ИспЦО25 Тогда
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| Цены.Цена КАК Цена
|
||||
|ИЗ
|
||||
| РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(
|
||||
| &Дата,
|
||||
| Номенклатура = &Номенклатура
|
||||
| И ВидЦены = &ВидЦены) КАК Цены
|
||||
|
|
||||
|УПОРЯДОЧИТЬ ПО
|
||||
| Цены.Период УБЫВ";
|
||||
Иначе
|
||||
Запрос.Текст =
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| Цены.Цена КАК Цена
|
||||
|ИЗ
|
||||
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
|
||||
| &Дата,
|
||||
| Номенклатура = &Номенклатура
|
||||
| И ВидЦены = &ВидЦены) КАК Цены";
|
||||
КонецЕсли;
|
||||
Запрос.УстановитьПараметр("Дата", ДатаСреза);
|
||||
Запрос.УстановитьПараметр("Номенклатура", Ном);
|
||||
Запрос.УстановитьПараметр("ВидЦены", ВидЦены);
|
||||
Выборка = Запрос.Выполнить().Выбрать();
|
||||
Если Выборка.Следующий() И ТипЗнч(Выборка.Цена) = Тип("Число") Тогда
|
||||
Возврат Выборка.Цена;
|
||||
КонецЕсли;
|
||||
Возврат 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЗначениеСвойства(Источник, Имя, ПоУмолчанию)
|
||||
|
||||
Если Источник = Неопределено Тогда
|
||||
Возврат ПоУмолчанию;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(Источник) = Тип("Структура") Или ТипЗнч(Источник) = Тип("ФиксированнаяСтруктура") Тогда
|
||||
Если Источник.Свойство(Имя) Тогда
|
||||
Возврат Источник[Имя];
|
||||
КонецЕсли;
|
||||
Возврат ПоУмолчанию;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(Источник) = Тип("Соответствие") Или ТипЗнч(Источник) = Тип("ФиксированноеСоответствие") Тогда
|
||||
Значение = Источник.Получить(Имя);
|
||||
Если Значение = Неопределено Тогда
|
||||
Возврат ПоУмолчанию;
|
||||
КонецЕсли;
|
||||
Возврат Значение;
|
||||
КонецЕсли;
|
||||
Возврат ПоУмолчанию;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ЧислоИзЗначения(Значение, ПоУмолчанию)
|
||||
|
||||
Если Значение = Неопределено Или Значение = Null Тогда
|
||||
Возврат ПоУмолчанию;
|
||||
КонецЕсли;
|
||||
Попытка
|
||||
Возврат Число(Значение);
|
||||
Исключение
|
||||
Возврат ПоУмолчанию;
|
||||
КонецПопытки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция БулевоИзЗначения(Значение)
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("Булево") Тогда
|
||||
Возврат Значение;
|
||||
КонецЕсли;
|
||||
Если Значение = Неопределено Или Значение = Null Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
Стр = НРег(СокрЛП(Строка(Значение)));
|
||||
Возврат Стр = "true" Или Стр = "1" Или Стр = "да" Или Стр = "истина";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20" >
|
||||
<Form uuid="a18e1801-18e0-4000-8000-000000000002">
|
||||
<Properties>
|
||||
<Name>Форма</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Форма</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<FormType>Managed</FormType>
|
||||
<IncludeHelpInContents>false</IncludeHelpInContents>
|
||||
<UsePurposes>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
|
||||
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
|
||||
</UsePurposes>
|
||||
<ExtendedPresentation/>
|
||||
</Properties>
|
||||
</Form>
|
||||
</MetaDataObject>
|
||||
@@ -0,0 +1,539 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcssch="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.20">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Загрузка актуальных цен из исходной базы</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<AutoSaveDataInSettings>Use</AutoSaveDataInSettings>
|
||||
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
|
||||
<Events>
|
||||
<Event name="OnCreateAtServer">ПриСозданииНаСервере</Event>
|
||||
</Events>
|
||||
<ChildItems>
|
||||
<UsualGroup name="ГруппаШапка" id="1">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Параметры</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Group>AlwaysHorizontal</Group>
|
||||
<Representation>None</Representation>
|
||||
<ShowTitle>false</ShowTitle>
|
||||
<ExtendedTooltip name="ГруппаШапкаРасширеннаяПодсказка" id="2"/>
|
||||
<ChildItems>
|
||||
<InputField name="ПодключениеКСтороннейБазе" id="3">
|
||||
<DataPath>Объект.ПодключениеКСтороннейБазе</DataPath>
|
||||
<ContextMenu name="ПодключениеКСтороннейБазеКонтекстноеМеню" id="4"/>
|
||||
<ExtendedTooltip name="ПодключениеКСтороннейБазеРасширеннаяПодсказка" id="5"/>
|
||||
</InputField>
|
||||
<InputField name="ДатаЦен" id="6">
|
||||
<DataPath>Объект.ДатаЦен</DataPath>
|
||||
<ContextMenu name="ДатаЦенКонтекстноеМеню" id="7"/>
|
||||
<ExtendedTooltip name="ДатаЦенРасширеннаяПодсказка" id="8"/>
|
||||
</InputField>
|
||||
<InputField name="ДатаДокументов" id="9">
|
||||
<DataPath>Объект.ДатаДокументов</DataPath>
|
||||
<ContextMenu name="ДатаДокументовКонтекстноеМеню" id="10"/>
|
||||
<ExtendedTooltip name="ДатаДокументовРасширеннаяПодсказка" id="11"/>
|
||||
</InputField>
|
||||
<CheckBoxField name="СоздаватьОтсутствующиеВидыЦен" id="12">
|
||||
<DataPath>Объект.СоздаватьОтсутствующиеВидыЦен</DataPath>
|
||||
<TitleLocation>Right</TitleLocation>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
<ContextMenu name="СоздаватьОтсутствующиеВидыЦенКонтекстноеМеню" id="13"/>
|
||||
<ExtendedTooltip name="СоздаватьОтсутствующиеВидыЦенРасширеннаяПодсказка" id="14"/>
|
||||
</CheckBoxField>
|
||||
<InputField name="КомментарийДокументов" id="15">
|
||||
<DataPath>Объект.КомментарийДокументов</DataPath>
|
||||
<ContextMenu name="КомментарийДокументовКонтекстноеМеню" id="16"/>
|
||||
<ExtendedTooltip name="КомментарийДокументовРасширеннаяПодсказка" id="17"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
</UsualGroup>
|
||||
<Pages name="ГруппаСтраницы" id="20">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Страницы</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<PagesRepresentation>TabsOnTop</PagesRepresentation>
|
||||
<ExtendedTooltip name="ГруппаСтраницыРасширеннаяПодсказка" id="21"/>
|
||||
<ChildItems>
|
||||
<Page name="ГруппаВидыЦен" id="22">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Виды цен</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ExtendedTooltip name="ГруппаВидыЦенРасширеннаяПодсказка" id="23"/>
|
||||
<ChildItems>
|
||||
<Table name="ВидыЦенИсточника" id="200">
|
||||
<Representation>List</Representation>
|
||||
<DataPath>Объект.ВидыЦенИсточника</DataPath>
|
||||
<RowFilter xsi:nil="true"/>
|
||||
<ContextMenu name="ВидыЦенИсточникаКонтекстноеМеню" id="201"/>
|
||||
<AutoCommandBar name="ВидыЦенИсточникаКоманднаяПанель" id="202">
|
||||
<ChildItems>
|
||||
<Button name="ВидыЦенИсточникаЗагрузитьВидыЦен" id="250">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.ЗагрузитьВидыЦен</CommandName>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаЗагрузитьВидыЦенРасширеннаяПодсказка" id="251"/>
|
||||
</Button>
|
||||
<Button name="ВидыЦенИсточникаОтметитьВидыЦен" id="252">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.ОтметитьВидыЦен</CommandName>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаОтметитьВидыЦенРасширеннаяПодсказка" id="253"/>
|
||||
</Button>
|
||||
<Button name="ВидыЦенИсточникаСнятьОтметкуВидовЦен" id="254">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.СнятьОтметкуВидовЦен</CommandName>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаСнятьОтметкуВидовЦенРасширеннаяПодсказка" id="255"/>
|
||||
</Button>
|
||||
<Button name="ВидыЦенИсточникаСоздатьОтсутствующиеВидыЦен" id="256">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.СоздатьОтсутствующиеВидыЦен</CommandName>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаСоздатьОтсутствующиеВидыЦенРасширеннаяПодсказка" id="257"/>
|
||||
</Button>
|
||||
</ChildItems>
|
||||
</AutoCommandBar>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаРасширеннаяПодсказка" id="203"/>
|
||||
<SearchStringAddition name="ВидыЦенИсточникаСтрокаПоиска" id="204">
|
||||
<AdditionSource>
|
||||
<Item>ВидыЦенИсточника</Item>
|
||||
<Type>SearchStringRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВидыЦенИсточникаСтрокаПоискаКонтекстноеМеню" id="205"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаСтрокаПоискаРасширеннаяПодсказка" id="206"/>
|
||||
</SearchStringAddition>
|
||||
<ViewStatusAddition name="ВидыЦенИсточникаСостояниеПросмотра" id="207">
|
||||
<AdditionSource>
|
||||
<Item>ВидыЦенИсточника</Item>
|
||||
<Type>ViewStatusRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВидыЦенИсточникаСостояниеПросмотраКонтекстноеМеню" id="208"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаСостояниеПросмотраРасширеннаяПодсказка" id="209"/>
|
||||
</ViewStatusAddition>
|
||||
<SearchControlAddition name="ВидыЦенИсточникаУправлениеПоиском" id="210">
|
||||
<AdditionSource>
|
||||
<Item>ВидыЦенИсточника</Item>
|
||||
<Type>SearchControl</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВидыЦенИсточникаУправлениеПоискомКонтекстноеМеню" id="211"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаУправлениеПоискомРасширеннаяПодсказка" id="212"/>
|
||||
</SearchControlAddition>
|
||||
<ChildItems>
|
||||
<CheckBoxField name="ВидыЦенИсточникаОтметка" id="201">
|
||||
<DataPath>Объект.ВидыЦенИсточника.Отметка</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>8</Width>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
<ContextMenu name="ВидыЦенИсточникаОтметкаКонтекстноеМеню" id="202"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаОтметкаРасширеннаяПодсказка" id="203"/>
|
||||
</CheckBoxField>
|
||||
<InputField name="ВидыЦенИсточникаНаименование" id="204">
|
||||
<DataPath>Объект.ВидыЦенИсточника.Наименование</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>20</Width>
|
||||
<ContextMenu name="ВидыЦенИсточникаНаименованиеКонтекстноеМеню" id="205"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаНаименованиеРасширеннаяПодсказка" id="206"/>
|
||||
</InputField>
|
||||
<InputField name="ВидыЦенИсточникаВалютаКод" id="207">
|
||||
<DataPath>Объект.ВидыЦенИсточника.ВалютаКод</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>8</Width>
|
||||
<ContextMenu name="ВидыЦенИсточникаВалютаКодКонтекстноеМеню" id="208"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаВалютаКодРасширеннаяПодсказка" id="209"/>
|
||||
</InputField>
|
||||
<CheckBoxField name="ВидыЦенИсточникаЦенаВключаетНДС" id="210">
|
||||
<DataPath>Объект.ВидыЦенИсточника.ЦенаВключаетНДС</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>10</Width>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
<ContextMenu name="ВидыЦенИсточникаЦенаВключаетНДСКонтекстноеМеню" id="211"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаЦенаВключаетНДСРасширеннаяПодсказка" id="212"/>
|
||||
</CheckBoxField>
|
||||
<InputField name="ВидыЦенИсточникаСпособЗаданияЦены" id="213">
|
||||
<DataPath>Объект.ВидыЦенИсточника.СпособЗаданияЦены</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>16</Width>
|
||||
<ContextMenu name="ВидыЦенИсточникаСпособЗаданияЦеныКонтекстноеМеню" id="214"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаСпособЗаданияЦеныРасширеннаяПодсказка" id="215"/>
|
||||
</InputField>
|
||||
<InputField name="ВидыЦенИсточникаВидЦены" id="216">
|
||||
<DataPath>Объект.ВидыЦенИсточника.ВидЦены</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>20</Width>
|
||||
<ContextMenu name="ВидыЦенИсточникаВидЦеныКонтекстноеМеню" id="217"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаВидЦеныРасширеннаяПодсказка" id="218"/>
|
||||
</InputField>
|
||||
<InputField name="ВидыЦенИсточникаСтатусСопоставления" id="219">
|
||||
<DataPath>Объект.ВидыЦенИсточника.СтатусСопоставления</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>14</Width>
|
||||
<ContextMenu name="ВидыЦенИсточникаСтатусСопоставленияКонтекстноеМеню" id="220"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаСтатусСопоставленияРасширеннаяПодсказка" id="221"/>
|
||||
</InputField>
|
||||
<InputField name="ВидыЦенИсточникаКомментарий" id="222">
|
||||
<DataPath>Объект.ВидыЦенИсточника.Комментарий</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>24</Width>
|
||||
<ContextMenu name="ВидыЦенИсточникаКомментарийКонтекстноеМеню" id="223"/>
|
||||
<ExtendedTooltip name="ВидыЦенИсточникаКомментарийРасширеннаяПодсказка" id="224"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
</Table>
|
||||
</ChildItems>
|
||||
</Page>
|
||||
<Page name="ГруппаВходящиеЦены" id="24">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Входящие цены</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ExtendedTooltip name="ГруппаВходящиеЦеныРасширеннаяПодсказка" id="25"/>
|
||||
<ChildItems>
|
||||
<Table name="ВходящиеЦены" id="300">
|
||||
<Representation>List</Representation>
|
||||
<DataPath>Объект.ВходящиеЦены</DataPath>
|
||||
<RowFilter xsi:nil="true"/>
|
||||
<ContextMenu name="ВходящиеЦеныКонтекстноеМеню" id="301"/>
|
||||
<AutoCommandBar name="ВходящиеЦеныКоманднаяПанель" id="302">
|
||||
<ChildItems>
|
||||
<Button name="ВходящиеЦеныЗагрузитьЦены" id="350">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.ЗагрузитьЦены</CommandName>
|
||||
<ExtendedTooltip name="ВходящиеЦеныЗагрузитьЦеныРасширеннаяПодсказка" id="351"/>
|
||||
</Button>
|
||||
<Button name="ВходящиеЦеныСопоставитьДанные" id="352">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.СопоставитьДанные</CommandName>
|
||||
<ExtendedTooltip name="ВходящиеЦеныСопоставитьДанныеРасширеннаяПодсказка" id="353"/>
|
||||
</Button>
|
||||
<Button name="ВходящиеЦеныСоздатьДокументы" id="354">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.СоздатьДокументы</CommandName>
|
||||
<ExtendedTooltip name="ВходящиеЦеныСоздатьДокументыРасширеннаяПодсказка" id="355"/>
|
||||
</Button>
|
||||
</ChildItems>
|
||||
</AutoCommandBar>
|
||||
<ExtendedTooltip name="ВходящиеЦеныРасширеннаяПодсказка" id="303"/>
|
||||
<SearchStringAddition name="ВходящиеЦеныСтрокаПоиска" id="304">
|
||||
<AdditionSource>
|
||||
<Item>ВходящиеЦены</Item>
|
||||
<Type>SearchStringRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВходящиеЦеныСтрокаПоискаКонтекстноеМеню" id="305"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныСтрокаПоискаРасширеннаяПодсказка" id="306"/>
|
||||
</SearchStringAddition>
|
||||
<ViewStatusAddition name="ВходящиеЦеныСостояниеПросмотра" id="307">
|
||||
<AdditionSource>
|
||||
<Item>ВходящиеЦены</Item>
|
||||
<Type>ViewStatusRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВходящиеЦеныСостояниеПросмотраКонтекстноеМеню" id="308"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныСостояниеПросмотраРасширеннаяПодсказка" id="309"/>
|
||||
</ViewStatusAddition>
|
||||
<SearchControlAddition name="ВходящиеЦеныУправлениеПоиском" id="310">
|
||||
<AdditionSource>
|
||||
<Item>ВходящиеЦены</Item>
|
||||
<Type>SearchControl</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="ВходящиеЦеныУправлениеПоискомКонтекстноеМеню" id="311"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныУправлениеПоискомРасширеннаяПодсказка" id="312"/>
|
||||
</SearchControlAddition>
|
||||
<ChildItems>
|
||||
<CheckBoxField name="ВходящиеЦеныСопоставлено" id="301">
|
||||
<DataPath>Объект.ВходящиеЦены.Сопоставлено</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>8</Width>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
<ContextMenu name="ВходящиеЦеныСопоставленоКонтекстноеМеню" id="302"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныСопоставленоРасширеннаяПодсказка" id="303"/>
|
||||
</CheckBoxField>
|
||||
<InputField name="ВходящиеЦеныАртикул" id="304">
|
||||
<DataPath>Объект.ВходящиеЦены.Артикул</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>12</Width>
|
||||
<ContextMenu name="ВходящиеЦеныАртикулКонтекстноеМеню" id="305"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныАртикулРасширеннаяПодсказка" id="306"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныНоменклатураНаименование" id="307">
|
||||
<DataPath>Объект.ВходящиеЦены.НоменклатураНаименование</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>22</Width>
|
||||
<ContextMenu name="ВходящиеЦеныНоменклатураНаименованиеКонтекстноеМеню" id="308"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныНоменклатураНаименованиеРасширеннаяПодсказка" id="309"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныНоменклатура" id="310">
|
||||
<DataPath>Объект.ВходящиеЦены.Номенклатура</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>20</Width>
|
||||
<ContextMenu name="ВходящиеЦеныНоменклатураКонтекстноеМеню" id="311"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныНоменклатураРасширеннаяПодсказка" id="312"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныХарактеристикаНаименование" id="313">
|
||||
<DataPath>Объект.ВходящиеЦены.ХарактеристикаНаименование</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>14</Width>
|
||||
<ContextMenu name="ВходящиеЦеныХарактеристикаНаименованиеКонтекстноеМеню" id="314"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныХарактеристикаНаименованиеРасширеннаяПодсказка" id="315"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныВидЦеныНаименование" id="316">
|
||||
<DataPath>Объект.ВходящиеЦены.ВидЦеныНаименование</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>16</Width>
|
||||
<ContextMenu name="ВходящиеЦеныВидЦеныНаименованиеКонтекстноеМеню" id="317"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныВидЦеныНаименованиеРасширеннаяПодсказка" id="318"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныВидЦены" id="319">
|
||||
<DataPath>Объект.ВходящиеЦены.ВидЦены</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>16</Width>
|
||||
<ContextMenu name="ВходящиеЦеныВидЦеныКонтекстноеМеню" id="320"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныВидЦеныРасширеннаяПодсказка" id="321"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныЦена" id="322">
|
||||
<DataPath>Объект.ВходящиеЦены.Цена</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>10</Width>
|
||||
<ContextMenu name="ВходящиеЦеныЦенаКонтекстноеМеню" id="323"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныЦенаРасширеннаяПодсказка" id="324"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныТекущаяЦенаЦель" id="325">
|
||||
<DataPath>Объект.ВходящиеЦены.ТекущаяЦенаЦель</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>10</Width>
|
||||
<ContextMenu name="ВходящиеЦеныТекущаяЦенаЦельКонтекстноеМеню" id="326"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныТекущаяЦенаЦельРасширеннаяПодсказка" id="327"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныВалютаКод" id="328">
|
||||
<DataPath>Объект.ВходящиеЦены.ВалютаКод</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>8</Width>
|
||||
<ContextMenu name="ВходящиеЦеныВалютаКодКонтекстноеМеню" id="329"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныВалютаКодРасширеннаяПодсказка" id="330"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныИспользоватьСерииСклад" id="331">
|
||||
<DataPath>Объект.ВходящиеЦены.ИспользоватьСерииСклад</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>12</Width>
|
||||
<ContextMenu name="ВходящиеЦеныИспользоватьСерииСкладКонтекстноеМеню" id="332"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныИспользоватьСерииСкладРасширеннаяПодсказка" id="333"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныКлючЦенПоСерии" id="334">
|
||||
<DataPath>Объект.ВходящиеЦены.КлючЦенПоСерии</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>14</Width>
|
||||
<ContextMenu name="ВходящиеЦеныКлючЦенПоСерииКонтекстноеМеню" id="335"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныКлючЦенПоСерииРасширеннаяПодсказка" id="336"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныРазрывДетализации" id="337">
|
||||
<DataPath>Объект.ВходящиеЦены.РазрывДетализации</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>24</Width>
|
||||
<ContextMenu name="ВходящиеЦеныРазрывДетализацииКонтекстноеМеню" id="338"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныРазрывДетализацииРасширеннаяПодсказка" id="339"/>
|
||||
</InputField>
|
||||
<InputField name="ВходящиеЦеныКомментарийСопоставления" id="340">
|
||||
<DataPath>Объект.ВходящиеЦены.КомментарийСопоставления</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>24</Width>
|
||||
<ContextMenu name="ВходящиеЦеныКомментарийСопоставленияКонтекстноеМеню" id="341"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныКомментарийСопоставленияРасширеннаяПодсказка" id="342"/>
|
||||
</InputField>
|
||||
<CheckBoxField name="ВходящиеЦеныЗагруженоВДокумент" id="343">
|
||||
<DataPath>Объект.ВходящиеЦены.ЗагруженоВДокумент</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>8</Width>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
<ContextMenu name="ВходящиеЦеныЗагруженоВДокументКонтекстноеМеню" id="344"/>
|
||||
<ExtendedTooltip name="ВходящиеЦеныЗагруженоВДокументРасширеннаяПодсказка" id="345"/>
|
||||
</CheckBoxField>
|
||||
</ChildItems>
|
||||
</Table>
|
||||
</ChildItems>
|
||||
</Page>
|
||||
<Page name="ГруппаСозданныеДокументы" id="26">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Документы установки</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ExtendedTooltip name="ГруппаСозданныеДокументыРасширеннаяПодсказка" id="27"/>
|
||||
<ChildItems>
|
||||
<Table name="СозданныеДокументы" id="400">
|
||||
<Representation>List</Representation>
|
||||
<DataPath>Объект.СозданныеДокументы</DataPath>
|
||||
<RowFilter xsi:nil="true"/>
|
||||
<ContextMenu name="СозданныеДокументыКонтекстноеМеню" id="401"/>
|
||||
<AutoCommandBar name="СозданныеДокументыКоманднаяПанель" id="402">
|
||||
<ChildItems>
|
||||
</ChildItems>
|
||||
</AutoCommandBar>
|
||||
<ExtendedTooltip name="СозданныеДокументыРасширеннаяПодсказка" id="403"/>
|
||||
<SearchStringAddition name="СозданныеДокументыСтрокаПоиска" id="404">
|
||||
<AdditionSource>
|
||||
<Item>СозданныеДокументы</Item>
|
||||
<Type>SearchStringRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СозданныеДокументыСтрокаПоискаКонтекстноеМеню" id="405"/>
|
||||
<ExtendedTooltip name="СозданныеДокументыСтрокаПоискаРасширеннаяПодсказка" id="406"/>
|
||||
</SearchStringAddition>
|
||||
<ViewStatusAddition name="СозданныеДокументыСостояниеПросмотра" id="407">
|
||||
<AdditionSource>
|
||||
<Item>СозданныеДокументы</Item>
|
||||
<Type>ViewStatusRepresentation</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СозданныеДокументыСостояниеПросмотраКонтекстноеМеню" id="408"/>
|
||||
<ExtendedTooltip name="СозданныеДокументыСостояниеПросмотраРасширеннаяПодсказка" id="409"/>
|
||||
</ViewStatusAddition>
|
||||
<SearchControlAddition name="СозданныеДокументыУправлениеПоиском" id="410">
|
||||
<AdditionSource>
|
||||
<Item>СозданныеДокументы</Item>
|
||||
<Type>SearchControl</Type>
|
||||
</AdditionSource>
|
||||
<ContextMenu name="СозданныеДокументыУправлениеПоискомКонтекстноеМеню" id="411"/>
|
||||
<ExtendedTooltip name="СозданныеДокументыУправлениеПоискомРасширеннаяПодсказка" id="412"/>
|
||||
</SearchControlAddition>
|
||||
<ChildItems>
|
||||
<InputField name="СозданныеДокументыДокументПредставление" id="401">
|
||||
<DataPath>Объект.СозданныеДокументы.ДокументПредставление</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>30</Width>
|
||||
<ContextMenu name="СозданныеДокументыДокументПредставлениеКонтекстноеМеню" id="402"/>
|
||||
<ExtendedTooltip name="СозданныеДокументыДокументПредставлениеРасширеннаяПодсказка" id="403"/>
|
||||
</InputField>
|
||||
<InputField name="СозданныеДокументыВидЦены" id="404">
|
||||
<DataPath>Объект.СозданныеДокументы.ВидЦены</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>20</Width>
|
||||
<ContextMenu name="СозданныеДокументыВидЦеныКонтекстноеМеню" id="405"/>
|
||||
<ExtendedTooltip name="СозданныеДокументыВидЦеныРасширеннаяПодсказка" id="406"/>
|
||||
</InputField>
|
||||
<InputField name="СозданныеДокументыКоличествоСтрок" id="407">
|
||||
<DataPath>Объект.СозданныеДокументы.КоличествоСтрок</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>10</Width>
|
||||
<ContextMenu name="СозданныеДокументыКоличествоСтрокКонтекстноеМеню" id="408"/>
|
||||
<ExtendedTooltip name="СозданныеДокументыКоличествоСтрокРасширеннаяПодсказка" id="409"/>
|
||||
</InputField>
|
||||
<InputField name="СозданныеДокументыКомментарий" id="410">
|
||||
<DataPath>Объект.СозданныеДокументы.Комментарий</DataPath>
|
||||
<EditMode>EnterOnInput</EditMode>
|
||||
<Width>30</Width>
|
||||
<ContextMenu name="СозданныеДокументыКомментарийКонтекстноеМеню" id="411"/>
|
||||
<ExtendedTooltip name="СозданныеДокументыКомментарийРасширеннаяПодсказка" id="412"/>
|
||||
</InputField>
|
||||
</ChildItems>
|
||||
</Table>
|
||||
</ChildItems>
|
||||
</Page>
|
||||
</ChildItems>
|
||||
</Pages>
|
||||
</ChildItems>
|
||||
<Attributes>
|
||||
<Attribute name="Объект" id="100001">
|
||||
<Type>
|
||||
<v8:Type>cfg:DataProcessorObject.РК_ЗагрузкаЦен</v8:Type>
|
||||
</Type>
|
||||
<MainAttribute>true</MainAttribute>
|
||||
</Attribute>
|
||||
<Attribute name="ПодключениеКСтороннейБазеПредыдущее" id="100002">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Подключение предыдущее</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<Type>
|
||||
<v8:Type>cfg:CatalogRef.РК_НастройкиПодключенияКВнешнейБазе</v8:Type>
|
||||
</Type>
|
||||
</Attribute>
|
||||
</Attributes>
|
||||
<Commands>
|
||||
<Command name="ЗагрузитьВидыЦен" id="501">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Загрузить виды цен</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip/>
|
||||
<Action>ЗагрузитьВидыЦен</Action>
|
||||
<CurrentRowUse>Auto</CurrentRowUse>
|
||||
</Command>
|
||||
<Command name="ОтметитьВидыЦен" id="502">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Отметить</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip/>
|
||||
<Action>ОтметитьВидыЦен</Action>
|
||||
<CurrentRowUse>Auto</CurrentRowUse>
|
||||
</Command>
|
||||
<Command name="СнятьОтметкуВидовЦен" id="503">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Снять отметку</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip/>
|
||||
<Action>СнятьОтметкуВидовЦен</Action>
|
||||
<CurrentRowUse>Auto</CurrentRowUse>
|
||||
</Command>
|
||||
<Command name="СоздатьОтсутствующиеВидыЦен" id="504">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Создать отсутствующие виды цен</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip/>
|
||||
<Action>СоздатьОтсутствующиеВидыЦен</Action>
|
||||
<CurrentRowUse>Auto</CurrentRowUse>
|
||||
</Command>
|
||||
<Command name="ЗагрузитьЦены" id="505">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Загрузить цены</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip/>
|
||||
<Action>ЗагрузитьЦены</Action>
|
||||
<CurrentRowUse>Auto</CurrentRowUse>
|
||||
</Command>
|
||||
<Command name="СопоставитьДанные" id="506">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Сопоставить</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip/>
|
||||
<Action>СопоставитьДанные</Action>
|
||||
<CurrentRowUse>Auto</CurrentRowUse>
|
||||
</Command>
|
||||
<Command name="СоздатьДокументы" id="507">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Создать документы установки</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip/>
|
||||
<Action>СоздатьДокументы</Action>
|
||||
<CurrentRowUse>Auto</CurrentRowUse>
|
||||
</Command>
|
||||
</Commands>
|
||||
</Form>
|
||||
@@ -0,0 +1,327 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Форма обработки РК_ЗагрузкаЦен.
|
||||
// https://git.p7net.ru/1c/crm3_26.rhana/issues/18
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Область ОбработчикиСобытийФормы
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда
|
||||
Попытка
|
||||
Объект.ПодключениеКСтороннейБазе = Константы.РК_РабочееПодключениеЧерезАПИ.Получить();
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
ПодключениеКСтороннейБазеПредыдущее = Объект.ПодключениеКСтороннейБазе;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Объект.ДатаЦен) Тогда
|
||||
Объект.ДатаЦен = ТекущаяДатаСеанса();
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Объект.ДатаДокументов) Тогда
|
||||
Объект.ДатаДокументов = Объект.ДатаЦен;
|
||||
КонецЕсли;
|
||||
Если ПустаяСтрока(Объект.КомментарийДокументов) Тогда
|
||||
Объект.КомментарийДокументов = "Перенос цен из crm3-dev";
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиКомандФормы
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗагрузитьВидыЦен(Команда)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда
|
||||
ПоказатьПредупреждение(, "Укажите подключение к сторонней базе");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Текст = ЗагрузитьВидыЦенНаСервере();
|
||||
Исключение
|
||||
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаВидыЦен;
|
||||
ПоказатьОповещениеПользователя("Виды цен", , Текст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОтметитьВидыЦен(Команда)
|
||||
УстановитьОтметкуВыделенныхСтрок("ВидыЦенИсточника", Истина);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура СнятьОтметкуВидовЦен(Команда)
|
||||
УстановитьОтметкуВыделенныхСтрок("ВидыЦенИсточника", Ложь);
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура СоздатьОтсутствующиеВидыЦен(Команда)
|
||||
|
||||
Если Объект.ВидыЦенИсточника.Количество() = 0 Тогда
|
||||
ПоказатьПредупреждение(, "Сначала загрузите виды цен");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Описание = Новый ОписаниеОповещения("СоздатьОтсутствующиеВидыЦенПослеВопроса", ЭтотОбъект);
|
||||
ПоказатьВопрос(Описание,
|
||||
"Сопоставить виды цен и создать отсутствующие в целевой ИБ?" + Символы.ПС
|
||||
+ "Да — запись; Нет — только проверка (тест); Отмена — прервать.",
|
||||
РежимДиалогаВопрос.ДаНетОтмена);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура СоздатьОтсутствующиеВидыЦенПослеВопроса(РезультатВопроса, ДопПараметры) Экспорт
|
||||
|
||||
Если РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
РежимТест = (РезультатВопроса <> КодВозвратаДиалога.Да);
|
||||
Попытка
|
||||
Текст = СопоставитьВидыЦенНаСервере(РежимТест);
|
||||
Исключение
|
||||
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
ПоказатьОповещениеПользователя("Виды цен", , Текст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗагрузитьЦены(Команда)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Объект.ПодключениеКСтороннейБазе) Тогда
|
||||
ПоказатьПредупреждение(, "Укажите подключение к сторонней базе");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Объект.ДатаЦен) Тогда
|
||||
ПоказатьПредупреждение(, "Укажите дату среза цен");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Текст = ЗагрузитьЦеныНаСервере();
|
||||
Исключение
|
||||
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаВходящиеЦены;
|
||||
ПоказатьОповещениеПользователя("Входящие цены", , Текст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура СопоставитьДанные(Команда)
|
||||
|
||||
Если Объект.ВходящиеЦены.Количество() = 0 Тогда
|
||||
ПоказатьПредупреждение(, "Сначала загрузите цены");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Текст = СопоставитьЦеныНаСервере();
|
||||
Исключение
|
||||
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
ПоказатьОповещениеПользователя("Сопоставление", , Текст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура СоздатьДокументы(Команда)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Объект.ДатаДокументов) Тогда
|
||||
ПоказатьПредупреждение(, "Укажите дату документов установки");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Описание = Новый ОписаниеОповещения("СоздатьДокументыПослеВопроса", ЭтотОбъект);
|
||||
ПоказатьВопрос(Описание,
|
||||
"Создать и провести документы «Установка цен номенклатуры»?" + Символы.ПС
|
||||
+ "Да — запись; Нет — только подсчёт (тест); Отмена — прервать.",
|
||||
РежимДиалогаВопрос.ДаНетОтмена);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура СоздатьДокументыПослеВопроса(РезультатВопроса, ДопПараметры) Экспорт
|
||||
|
||||
Если РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
РежимТест = (РезультатВопроса <> КодВозвратаДиалога.Да);
|
||||
Попытка
|
||||
Текст = СоздатьДокументыНаСервере(РежимТест);
|
||||
Исключение
|
||||
ПоказатьПредупреждение(, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
Возврат;
|
||||
КонецПопытки;
|
||||
Если Не РежимТест Тогда
|
||||
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаСозданныеДокументы;
|
||||
КонецЕсли;
|
||||
ПоказатьОповещениеПользователя("Документы установки", , Текст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура УстановитьОтметкуВыделенныхСтрок(ИмяТаблицы, Отметка)
|
||||
|
||||
ТаблицаФормы = Элементы[ИмяТаблицы];
|
||||
ДанныеТаблицы = Объект[ИмяТаблицы];
|
||||
Выделенные = ТаблицаФормы.ВыделенныеСтроки;
|
||||
Если Выделенные.Количество() = 0 Тогда
|
||||
ПоказатьПредупреждение(, "Выделите строки в таблице");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого ИдентификаторСтроки Из Выделенные Цикл
|
||||
СтрокаТЗ = ДанныеТаблицы.НайтиПоИдентификатору(ИдентификаторСтроки);
|
||||
Если СтрокаТЗ <> Неопределено Тогда
|
||||
СтрокаТЗ.Отметка = Отметка;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Функция ЗагрузитьВидыЦенНаСервере()
|
||||
|
||||
Ответ = РК_ОбменСВнешнейБазой.ВидыЦенВнешнейБазы(Объект.ПодключениеКСтороннейБазе);
|
||||
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
|
||||
ОбъектОбработки.ЗаполнитьВидыЦенИзОтветаAPI(Ответ, Истина);
|
||||
ТекстСопоставления = ОбъектОбработки.СопоставитьВидыЦен(Истина);
|
||||
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
|
||||
Возврат "Загружено " + Формат(Объект.ВидыЦенИсточника.Количество(), "ЧН=0; ЧГ=0")
|
||||
+ ". " + ТекстСопоставления;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция СопоставитьВидыЦенНаСервере(РежимТест)
|
||||
|
||||
Объект.СоздаватьОтсутствующиеВидыЦен = Не РежимТест;
|
||||
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
|
||||
Текст = ОбъектОбработки.СопоставитьВидыЦен(РежимТест);
|
||||
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
|
||||
Возврат Текст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ЗагрузитьЦеныНаСервере()
|
||||
|
||||
ВидыGUID = Новый Массив;
|
||||
Для Каждого Стр Из Объект.ВидыЦенИсточника Цикл
|
||||
Если Стр.Отметка И ЗначениеЗаполнено(Стр.Идентификатор) Тогда
|
||||
ВидыGUID.Добавить(СокрЛП(Стр.Идентификатор));
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Фильтры = Новый Структура;
|
||||
Фильтры.Вставить("only_nonzero", Истина);
|
||||
ПолныйОбход = Истина;
|
||||
Если ВидыGUID.Количество() > 0 Тогда
|
||||
Фильтры.Вставить("price_types", ВидыGUID);
|
||||
ПолныйОбход = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
ВсеСтроки = Новый Массив;
|
||||
Курсор = "";
|
||||
Лимит = 2000;
|
||||
МаксСтраниц = 200;
|
||||
|
||||
Для НомерСтраницы = 1 По МаксСтраниц Цикл
|
||||
ПараметрыЗапроса = Новый Структура;
|
||||
ПараметрыЗапроса.Вставить("as_of", Формат(Объект.ДатаЦен, "ДФ=yyyy-MM-ddTHH:mm:ss"));
|
||||
ПараметрыЗапроса.Вставить("limit", Лимит);
|
||||
ПараметрыЗапроса.Вставить("filters", Фильтры);
|
||||
Если ПолныйОбход Тогда
|
||||
ПараметрыЗапроса.Вставить("allow_full_scan", Истина);
|
||||
КонецЕсли;
|
||||
Если Не ПустаяСтрока(Курсор) Тогда
|
||||
ПараметрыЗапроса.Вставить("cursor", Курсор);
|
||||
КонецЕсли;
|
||||
|
||||
Ответ = РК_ОбменСВнешнейБазой.ЦеныВнешнейБазы(Объект.ПодключениеКСтороннейБазе, ПараметрыЗапроса);
|
||||
Строки = ЗначениеСвойстваОтвета(Ответ, "rows");
|
||||
Если ТипЗнч(Строки) <> Тип("Массив") Тогда
|
||||
ВызватьИсключение "Некорректный ответ /v1/prices/slice";
|
||||
КонецЕсли;
|
||||
Для Каждого СтрAPI Из Строки Цикл
|
||||
ВсеСтроки.Добавить(СтрAPI);
|
||||
КонецЦикла;
|
||||
|
||||
Мета = ЗначениеСвойстваОтвета(Ответ, "meta");
|
||||
ЕстьЕще = Ложь;
|
||||
Если ТипЗнч(Мета) = Тип("Структура") Или ТипЗнч(Мета) = Тип("Соответствие") Тогда
|
||||
ЗначениеЕстьЕще = ЗначениеСвойстваОтвета(Мета, "has_more");
|
||||
Если ТипЗнч(ЗначениеЕстьЕще) = Тип("Булево") Тогда
|
||||
ЕстьЕще = ЗначениеЕстьЕще;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Курсор = СокрЛП(Строка(ЗначениеСвойстваОтвета(Ответ, "cursor")));
|
||||
Если Не ЕстьЕще Или ПустаяСтрока(Курсор) Или Строки.Количество() = 0 Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
|
||||
ОбъектОбработки.ЗаполнитьВходящиеЦеныИзОтветаAPI(Новый Структура("rows", ВсеСтроки), Истина);
|
||||
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
|
||||
Возврат "Загружено строк: " + Формат(Объект.ВходящиеЦены.Количество(), "ЧН=0; ЧГ=0");
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция СопоставитьЦеныНаСервере()
|
||||
|
||||
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
|
||||
Текст = ОбъектОбработки.СопоставитьВходящиеЦены();
|
||||
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
|
||||
Возврат Текст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция СоздатьДокументыНаСервере(РежимТест)
|
||||
|
||||
ОбъектОбработки = РеквизитФормыВЗначение("Объект");
|
||||
Текст = ОбъектОбработки.СоздатьДокументыУстановкиЦен(РежимТест);
|
||||
ЗначениеВРеквизитФормы(ОбъектОбработки, "Объект");
|
||||
Возврат Текст;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервере
|
||||
Функция ЗначениеСвойстваОтвета(Источник, Имя)
|
||||
|
||||
Если Источник = Неопределено Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(Источник) = Тип("Структура") Или ТипЗнч(Источник) = Тип("ФиксированнаяСтруктура") Тогда
|
||||
Значение = Неопределено;
|
||||
Если Источник.Свойство(Имя, Значение) Тогда
|
||||
Возврат Значение;
|
||||
КонецЕсли;
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(Источник) = Тип("Соответствие") Или ТипЗнч(Источник) = Тип("ФиксированноеСоответствие") Тогда
|
||||
Возврат Источник.Получить(Имя);
|
||||
КонецЕсли;
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
Reference in New Issue
Block a user