&НаКлиенте Перем СтрокаТоваровДляРедактирования; &НаКлиенте Перем БлокироватьОткрытиеПанелиКоличества; &НаКлиенте Перем РежимВыделенияТоваров; &НаКлиенте Перем БлокироватьПереключениеВыдТов; &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) ////ПослеЗаписиНаСервере(); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере() тзиб=новый таблицазначений; тзиб.Колонки.Добавить("иб",новый ОписаниеТипов("СправочникСсылка.ИБ")); Для каждого стр из Объект.Товары цикл эл=тзиб.Добавить(); эл.иб=стр.номенклатура.ИБ; КонецЦикла; тзиб.Свернуть("иб"); Для каждого стр из тзиб цикл Подключение=ОмСлужебный.ПодключениеУТ(стр.иб); Док=Подключение.Документы.ЗаказКлиента.НайтиПоНомеру("МГ"+Объект.Номер,Объект.Дата); Если Подключение.ЗначениеЗаполнено(Док) тогда Док=Док.ПолучитьОбъект(); Иначе Док=Подключение.Документы.ЗаказКлиента.СоздатьДокумент(); КонецЕСли; Док.Товары.Очистить(); Для каждого стр из Объект.Товары цикл тов=Док.Товары.Добавить(); уид=Подключение.NewObject("УникальныйИдентификатор",Строка(стр.номенклатура.УникальныйИдентификатор())); тов.Номенклатура=Подключение.Справочники.Номенклатура.ПолучитьСсылку(уид); тов.Количество=стр.Количество; тов.КоличествоУпаковок=тов.Количество; КонецЦикла; Док.Дата=Объект.Дата; Док.Номер="МГ-"+Объект.Номер; Док.ОбменДанными.Загрузка = Истина; Док.записать(); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура Подобрать(Команда) Записать(); // После копирования ТЧ есть в документе, а в регистре Корзина для новой ссылки — пусто. // Без синхронизации ЗаполнитьТЗ() после подбора затрёт скопированные строки. СинхронизироватьКорзинуИзТоваровНаСервере(); Параметр = Новый Структура("Заказ",Объект.Ссылка); ФормаВыбора = ПолучитьФорму("Справочник.Номенклатура.Форма.ФормаПодбора",Параметр); ФормаВыбора.Открыть(); КонецПроцедуры &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Если ИмяСобытия="ЗакрытиеПодбора" Тогда ЗаполнитьТЗ(); КонецЕСли; КонецПроцедуры &НаКлиенте Процедура ЗаполнитьТЗ() ЗаполнитьТЗНаСервере(); ОбновитьОтображениеТоваров(); СкрытьРежимВыделенияТоваров(); ЗаполнитьСписокТоваровИзТЧ(); КонецПроцедуры &НаКлиенте Процедура ОбновитьОтображениеТоваров() ОбновитьИндексыКартинкиВыдТов(); ОбновитьКоличествоТоваровВДокументе(); // ОбновитьПометкиДублейТоваров(); КонецПроцедуры &НаКлиенте Процедура ЗаполнитьСписокТоваровИзТЧ() ЗаполнитьСписокТоваровИзТЧНаСервере(СтрокаПоискаТоваров); КонецПроцедуры &НаСервере Процедура ЗаполнитьСписокТоваровИзТЧНаСервере(СтрокаПоиска = "") СинхронизироватьКорзинуИзТоваровНаСервере(); СписокТоваров.Очистить(); СловаПоиска = Новый Массив; Для Каждого Часть Из СтрРазделить(СокрЛП(СтрокаПоиска), " ", Ложь) Цикл Если Не ПустаяСтрока(Часть) Тогда СловаПоиска.Добавить(ВРег(СокрЛП(Часть))); КонецЕсли; КонецЦикла; Для Каждого СтрокаТоваров Из Объект.Товары Цикл Если Не ЗначениеЗаполнено(СтрокаТоваров.Номенклатура) Тогда Продолжить; КонецЕсли; Наименование = СтрокаТоваров.Номенклатура.Наименование; КодOffline = СтрокаТоваров.Номенклатура.КодOffline; Если СловаПоиска.Количество() > 0 Тогда ТекстПоиска = ВРег(Наименование + " " + Формат(КодOffline, "ЧГ=")); Подходит = Истина; Для Каждого Слово Из СловаПоиска Цикл Если СтрНайти(ТекстПоиска, Слово) = 0 Тогда Подходит = Ложь; Прервать; КонецЕсли; КонецЦикла; Если Не Подходит Тогда Продолжить; КонецЕсли; КонецЕсли; СтрокаСписка = СписокТоваров.Добавить(); СтрокаСписка.НомерСтроки = СтрокаТоваров.НомерСтроки; СтрокаСписка.Номенклатура = СтрокаТоваров.Номенклатура; СтрокаСписка.Наименование = Наименование; СтрокаСписка.КодOffline = КодOffline; СтрокаСписка.Количество = СтрокаТоваров.Количество; СтрокаСписка.КоличествоПредставление = "× " + Формат(СтрокаТоваров.Количество, "ЧДЦ=0; ЧН=0; ЧГ="); Если ЗначениеЗаполнено(КодOffline) Тогда СтрокаСписка.КодOfflineПредставление = "код offline: " + Формат(КодOffline, "ЧДЦ=0; ЧН=0; ЧГ="); Иначе СтрокаСписка.КодOfflineПредставление = ""; КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Процедура НастроитьСписокТоваровНаСервере() ЗаполнитьСписокТоваровИзТЧНаСервере(""); КонецПроцедуры &НаКлиенте Процедура СтрокаПоискаТоваровПриИзменении(Элемент) ЗаполнитьСписокТоваровИзТЧ(); КонецПроцедуры &НаКлиенте Процедура СтрокаПоискаТоваровИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) СтрокаПоискаТоваров = Текст; ЗаполнитьСписокТоваровИзТЧ(); КонецПроцедуры &НаКлиенте Процедура ОбновитьПометкиДублейТоваров() СчетчикНоменклатуры = Новый Соответствие; Для Каждого СтрокаТоваров Из Объект.Товары Цикл СтрокаТоваров.ДубльТов = Ложь; Если Не ЗначениеЗаполнено(СтрокаТоваров.Номенклатура) Тогда Продолжить; КонецЕсли; КлючНоменклатуры = Строка(СтрокаТоваров.Номенклатура.УникальныйИдентификатор()); Количество = СчетчикНоменклатуры.Получить(КлючНоменклатуры); Если Количество = Неопределено Тогда СчетчикНоменклатуры.Вставить(КлючНоменклатуры, 1); Иначе СчетчикНоменклатуры.Вставить(КлючНоменклатуры, Количество + 1); КонецЕсли; КонецЦикла; Для Каждого СтрокаТоваров Из Объект.Товары Цикл Если Не ЗначениеЗаполнено(СтрокаТоваров.Номенклатура) Тогда Продолжить; КонецЕсли; КлючНоменклатуры = Строка(СтрокаТоваров.Номенклатура.УникальныйИдентификатор()); КоличествоВхождений = СчетчикНоменклатуры.Получить(КлючНоменклатуры); Если КоличествоВхождений = Неопределено Тогда КоличествоВхождений = 0; КонецЕсли; СтрокаТоваров.ДубльТов = КоличествоВхождений > 1; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ОбновитьКоличествоТоваровВДокументе() // Убираем количество товаров, выводим количество строк //Итого = 0; // //Для Каждого СтрокаТоваров Из Объект.Товары Цикл // Итого = Итого + СтрокаТоваров.Количество; //КонецЦикла; КоличествоТоваровВДокументе = Объект.Товары.Количество(); КонецПроцедуры &НаСервере Процедура ЗаполнитьТЗНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Корзина.Номенклатура КАК Номенклатура, | СУММА(Корзина.Количество) КАК Количество |ИЗ | РегистрСведений.Корзина КАК Корзина |ГДЕ | Корзина.Заказ = &Заказ | |СГРУППИРОВАТЬ ПО | Корзина.Номенклатура | |УПОРЯДОЧИТЬ ПО | МИНИМУМ(Корзина.ДатаДобавления)"; Запрос.УстановитьПараметр("Заказ", Объект.Ссылка); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Объект.Товары.Загрузить(РезультатЗапроса); Модифицированность = Истина; КонецПроцедуры &НаСервере Процедура НастроитьОформлениеСпискаТоваров() // Жирный, размер 34 Элементы.СписокТоваровНоменклатура.Шрифт = Новый Шрифт(, 34, Истина); // Цвета тоже можно задать программно Элементы.СписокТоваровКоличество.ЦветТекста = Новый Цвет(46, 125, 50); // #2E7D32 Элементы.СписокТоваровКоличество.ЦветФона = Новый Цвет(232, 245, 233); // #E8F5E9 // Увеличить относительно текущего шрифта элемента (масштаб в %) // Элементы.СписокТоваровКоличество.Шрифт = // Новый Шрифт(Элементы.СписокТоваровКоличество.Шрифт,,,,,,, 150); КонецПроцедуры &НаСервере Процедура СинхронизироватьКорзинуИзТоваровНаСервере() Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда Возврат; КонецЕсли; НаборЗаписей = РегистрыСведений.Корзина.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Заказ.Установить(Объект.Ссылка); ДатаДобавления = ТекущаяДата(); НомерСтроки = 0; Для Каждого СтрокаТоваров Из Объект.Товары Цикл Если Не ЗначениеЗаполнено(СтрокаТоваров.Номенклатура) Или СтрокаТоваров.Количество <= 0 Тогда Продолжить; КонецЕсли; НомерСтроки = НомерСтроки + 1; Запись = НаборЗаписей.Добавить(); Запись.Заказ = Объект.Ссылка; Запись.Номенклатура = СтрокаТоваров.Номенклатура; Запись.Количество = СтрокаТоваров.Количество; Запись.ДатаДобавления = ДатаДобавления + НомерСтроки; КонецЦикла; НаборЗаписей.Записать(); КонецПроцедуры &НаКлиенте Процедура ТоварыПередУдалением(Элемент, Отказ) УдалитьИзКорзиныНаСервере(Элементы.Товары.ТекущиеДанные.Номенклатура); КонецПроцедуры &НаКлиенте Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если РежимВыделенияТоваровАктивен() Тогда Если СтандартнаяОбработка <> Неопределено Тогда СтандартнаяОбработка = Ложь; КонецЕсли; Возврат; КонецЕсли; ОткрытьРедактированиеКоличестваПоСтроке(ВыбраннаяСтрока, СтандартнаяОбработка, Ложь); КонецПроцедуры &НаКлиенте Процедура ТоварыПриАктивизацииСтроки(Элемент) ОбработатьАктивизациюСтрокиТоваров(Элементы.Товары.ТекущаяСтрока, Ложь); КонецПроцедуры &НаКлиенте Процедура СписокТоваровВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если РежимВыделенияТоваровАктивен() Тогда // На мобильном тап приходит в Выбор, а не в активизацию. // В режиме выделения переключаем пометку строки ТЧ. Если СтандартнаяОбработка <> Неопределено Тогда СтандартнаяОбработка = Ложь; КонецЕсли; ПереключитьВыдТовСтроки(ВыбраннаяСтрока, Истина); Возврат; КонецЕсли; ОткрытьРедактированиеКоличестваПоСтроке(ВыбраннаяСтрока, СтандартнаяОбработка, Истина); КонецПроцедуры &НаКлиенте Процедура СписокТоваровПриАктивизацииСтроки(Элемент) // В режиме выделения переключение делается в СписокТоваровВыбор (мобильный клиент). Если РежимВыделенияТоваровАктивен() Тогда Возврат; КонецЕсли; ОбработатьАктивизациюСтрокиТоваров(Элементы.СписокТоваров.ТекущаяСтрока, Истина); КонецПроцедуры &НаКлиенте Процедура ОбработатьАктивизациюСтрокиТоваров(ИдентификаторСтроки, ИзСписка) Если РежимВыделенияТоваровАктивен() Тогда // Для скрытой ТЧ (если вдруг видна) — по активизации. Если Не ИзСписка И Не БлокироватьПереключениеВыдТов Тогда ПереключитьВыдТовСтроки(ИдентификаторСтроки, ИзСписка); КонецЕсли; Возврат; КонецЕсли; Если БлокироватьОткрытиеПанелиКоличества Тогда Возврат; КонецЕсли; ОткрытьРедактированиеКоличестваПоСтроке(ИдентификаторСтроки, Неопределено, ИзСписка); КонецПроцедуры &НаКлиенте Процедура ПереключитьВыдТовСтроки(ИдентификаторСтроки, ИзСписка = Ложь) ДанныеСтроки = ПолучитьДанныеСтрокиТоваров(ИдентификаторСтроки, ИзСписка); Если ДанныеСтроки = Неопределено Тогда Возврат; КонецЕсли; ДанныеСтроки.ВыдТов = Не ДанныеСтроки.ВыдТов; УстановитьИндексКартинкиВыдТов(ДанныеСтроки); КонецПроцедуры &НаКлиенте Процедура УстановитьИндексКартинкиВыдТов(СтрокаТоваров) // 0 — левая половина (выбрано), 1 — правая (не выбрано) Если СтрокаТоваров.ВыдТов Тогда СтрокаТоваров.ИндексКартинкиВыдТов = 0; Иначе СтрокаТоваров.ИндексКартинкиВыдТов = 1; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОбновитьИндексыКартинкиВыдТов() Для Каждого СтрокаТоваров Из Объект.Товары Цикл УстановитьИндексКартинкиВыдТов(СтрокаТоваров); КонецЦикла; КонецПроцедуры &НаКлиенте Функция РежимВыделенияТоваровАктивен() Возврат РежимВыделенияТоваров = Истина; КонецФункции &НаКлиенте Процедура ВыделитьТовары(Команда) Если РежимВыделенияТоваровАктивен() Тогда СкрытьРежимВыделенияТоваров(); Иначе ПоказатьРежимВыделенияТоваров(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПоказатьРежимВыделенияТоваров() // На мобильном динсписок не даёт нормального множественного выделения с галочками. // В режиме выделения показываем ТЧ Товары с колонкой ВыдТов (как раньше). РежимВыделенияТоваров = Истина; Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаТовары; Элементы.ПанельПоискаТоваров.Видимость = Ложь; Элементы.СписокТоваров.Видимость = Ложь; Элементы.Товары.Видимость = Истина; Элементы.ТоварыВыдТов.Видимость = Истина; Элементы.ТоварыВыделить.Пометка = Истина; Элементы.СписокТоваровВыделить.Пометка = Истина; ОбновитьВидимостьКнопкиУдаленияВыделенных(Истина); БлокироватьПереключениеВыдТов = Истина; ПодключитьОбработчикОжидания("РазблокироватьПереключениеВыдТов", 0.3, Истина); КонецПроцедуры &НаКлиенте Процедура СкрытьРежимВыделенияТоваров() БлокироватьОткрытиеПанелиКоличества = Истина; РежимВыделенияТоваров = Ложь; Элементы.ТоварыВыдТов.Видимость = Ложь; Элементы.ТоварыВыделить.Пометка = Ложь; Элементы.СписокТоваровВыделить.Пометка = Ложь; ОбновитьВидимостьКнопкиУдаленияВыделенных(Ложь); СброситьВыдТов(); Если Не Элементы.ПанельКоличества.Видимость Тогда Элементы.Товары.Видимость = Ложь; Элементы.СписокТоваров.Видимость = Истина; Элементы.ПанельПоискаТоваров.Видимость = Ложь; КонецЕсли; ОтключитьОбработчикОжидания("РазблокироватьОткрытиеПанелиКоличества"); ПодключитьОбработчикОжидания("РазблокироватьОткрытиеПанелиКоличества", 0.5, Истина); КонецПроцедуры &НаКлиенте Процедура ОбновитьВидимостьКнопкиУдаленияВыделенных(ВидимостьКнопки) Элементы.ТоварыУдалитьВыделенные.Видимость = ВидимостьКнопки; Элементы.СписокТоваровУдалитьВыделенные.Видимость = ВидимостьКнопки; КонецПроцедуры &НаКлиенте Процедура СброситьВыдТов() Для Каждого СтрокаТоваров Из Объект.Товары Цикл СтрокаТоваров.ВыдТов = Ложь; УстановитьИндексКартинкиВыдТов(СтрокаТоваров); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура УдалитьВыделенныеТовары(Команда) СтрокиКУдалению = Новый Массив; Для Каждого СтрокаТоваров Из Объект.Товары Цикл Если СтрокаТоваров.ВыдТов Тогда СтрокиКУдалению.Добавить(СтрокаТоваров); КонецЕсли; КонецЦикла; Если СтрокиКУдалению.Количество() = 0 Тогда Возврат; КонецЕсли; Для Каждого СтрокаТоваров Из СтрокиКУдалению Цикл УдалитьИзКорзиныНаСервере(СтрокаТоваров.Номенклатура); Объект.Товары.Удалить(СтрокаТоваров); КонецЦикла; Модифицированность = Истина; ОбновитьОтображениеТоваров(); СкрытьРежимВыделенияТоваров(); ЗаполнитьСписокТоваровИзТЧ(); КонецПроцедуры &НаКлиенте Процедура ОткрытьРедактированиеКоличестваПоСтроке(ИдентификаторСтроки, СтандартнаяОбработка, ИзСписка = Ложь) Если ЭтаФорма.ТолькоПросмотр Или Элементы.ПанельКоличества.Видимость Или БлокироватьОткрытиеПанелиКоличества Или РежимВыделенияТоваровАктивен() Тогда Возврат; КонецЕсли; ДанныеСтроки = ПолучитьДанныеСтрокиТоваров(ИдентификаторСтроки, ИзСписка); Если ДанныеСтроки = Неопределено Или Не ЗначениеЗаполнено(ДанныеСтроки.Номенклатура) Тогда Возврат; КонецЕсли; Если СтандартнаяОбработка <> Неопределено Тогда СтандартнаяОбработка = Ложь; КонецЕсли; ПоказатьПанельКоличества(ДанныеСтроки); КонецПроцедуры &НаСервере Процедура УдалитьИзКорзиныНаСервере(ном) НаборЗаписей = РегистрыСведений.Корзина.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ном); НаборЗаписей.Отбор.Заказ.Установить(Объект.Ссылка); НаборЗаписей.Записать(); КонецПроцедуры &НаСервере Процедура ЗаписатьНаСервере(ном,кол) Если Не ЗначениеЗаполнено(ном) Тогда Возврат; КонецЕсли; Если кол <= 0 Тогда УдалитьИзКорзиныНаСервере(ном); Возврат; КонецЕсли; Запись=РегистрыСведений.Корзина.СоздатьМенеджерЗаписи(); Запись.Номенклатура=ном; Запись.Заказ=Объект.Ссылка; Запись.Количество=кол; Запись.ДатаДобавления=ТекущаяДата(); Запись.Записать(); КонецПроцедуры &НаКлиенте Процедура ТоварыКоличествоПриИзменении(Элемент) ЗаписатьНаСервере(Элементы.Товары.ТекущиеДанные.Номенклатура,Элементы.Товары.ТекущиеДанные.Количество); КонецПроцедуры &НаКлиенте Процедура ТоварыПередНачаломИзменения(Элемент, Отказ) Если РежимВыделенияТоваровАктивен() Тогда Возврат; КонецЕсли; Отказ = Истина; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если не значениеЗаполнено(ПараметрыСеанса.ТекущийМагазин) Тогда Сообщить("Не выбран ТекущийМагазин!"); Отказ=Истина; КонецЕсли; Если Параметры.Ключ.Пустая() Тогда Объект.Магазин=ПараметрыСеанса.ТекущийМагазин; Объект.Статус=Перечисления.Статусы.Вработе; Объект.Автор=ОмСлужебный.ТекущийПользователь(); КонецЕсли; НастроитьСписокТоваровНаСервере(); // НастроитьОформлениеСпискаТоваров(); // УстановитьУсловноеОформлениеДублейТоваров(); КонецПроцедуры &НаСервере Процедура УстановитьУсловноеОформлениеДублейТоваров() ЭлементУО = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = ЭлементУО.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Объект.Товары"); ОтборЭлемента = ЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ДубльТов"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Истина; ОтборЭлемента.Использование = Истина; ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 235, 238)); ЭлементУО.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(183, 28, 28)); КонецПроцедуры &НаКлиенте Процедура ТоварыПриИзменении(Элемент) Если РежимВыделенияТоваровАктивен() Тогда Возврат; КонецЕсли; Если ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные) Тогда ЗаписатьНаСервере(Элементы.Товары.ТекущиеДанные.Номенклатура, Элементы.Товары.ТекущиеДанные.Количество); КонецЕсли; ОбновитьОтображениеТоваров(); ЗаполнитьСписокТоваровИзТЧ(); КонецПроцедуры &НаКлиенте Функция ПолучитьДанныеСтрокиТоваров(ИдентификаторСтроки, ИзСписка = Ложь) Если ИзСписка Тогда НоменклатураПоиска = Неопределено; Если ИдентификаторСтроки <> Неопределено Тогда СтрокаСписка = СписокТоваров.НайтиПоИдентификатору(ИдентификаторСтроки); Если СтрокаСписка <> Неопределено Тогда НоменклатураПоиска = СтрокаСписка.Номенклатура; КонецЕсли; КонецЕсли; Если Не ЗначениеЗаполнено(НоменклатураПоиска) Тогда ТекущиеДанныеСписка = Элементы.СписокТоваров.ТекущиеДанные; Если ТекущиеДанныеСписка <> Неопределено Тогда НоменклатураПоиска = ТекущиеДанныеСписка.Номенклатура; КонецЕсли; КонецЕсли; Если Не ЗначениеЗаполнено(НоменклатураПоиска) Тогда Возврат Неопределено; КонецЕсли; Для Каждого СтрокаДокумента Из Объект.Товары Цикл Если СтрокаДокумента.Номенклатура = НоменклатураПоиска Тогда Возврат СтрокаДокумента; КонецЕсли; КонецЦикла; Возврат Неопределено; КонецЕсли; Если ИдентификаторСтроки <> Неопределено Тогда СтрокаТоваров = Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки); Если СтрокаТоваров <> Неопределено Тогда Возврат СтрокаТоваров; КонецЕсли; КонецЕсли; ТекущиеДанные = Элементы.Товары.ТекущиеДанные; Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда Возврат ТекущиеДанные; КонецЕсли; Возврат Неопределено; КонецФункции &НаКлиенте Процедура ПоказатьПанельКоличества(ДанныеСтроки) СтрокаТоваровДляРедактирования = ДанныеСтроки; ВыбраннаяНоменклатураНаименование = ПолучитьНаименованиеНоменклатурыНаСервере(ДанныеСтроки.Номенклатура); КоличествоРедактирования = ДанныеСтроки.Количество; Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаТовары; Элементы.СтраницаРеквизиты.Видимость = Ложь; Элементы.ПанельПоискаТоваров.Видимость = Ложь; Элементы.Товары.Видимость = Ложь; Элементы.СписокТоваров.Видимость = Ложь; Элементы.ПанельКоличества.Видимость = Истина; КонецПроцедуры &НаКлиенте Процедура СкрытьПанельКоличества() БлокироватьОткрытиеПанелиКоличества = Истина; Элементы.ПанельКоличества.Видимость = Ложь; Элементы.СтраницаРеквизиты.Видимость = Истина; Элементы.Товары.Видимость = Ложь; Элементы.СписокТоваров.Видимость = Истина; Элементы.ПанельПоискаТоваров.Видимость = Ложь; Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаТовары; СтрокаТоваровДляРедактирования = Неопределено; ВыбраннаяНоменклатураНаименование = ""; КоличествоРедактирования = 0; СкрытьРежимВыделенияТоваров(); ПодключитьОбработчикОжидания("РазблокироватьОткрытиеПанелиКоличества", 0.3, Истина); КонецПроцедуры &НаКлиенте Процедура РазблокироватьОткрытиеПанелиКоличества() БлокироватьОткрытиеПанелиКоличества = Ложь; КонецПроцедуры &НаКлиенте Процедура РазблокироватьПереключениеВыдТов() БлокироватьПереключениеВыдТов = Ложь; КонецПроцедуры &НаКлиенте Процедура ПодтвердитьКоличество(Команда) Если СтрокаТоваровДляРедактирования = Неопределено Тогда Возврат; КонецЕсли; СтрокаТоваровДляРедактирования.Количество = КоличествоРедактирования; ЗаписатьНаСервере(СтрокаТоваровДляРедактирования.Номенклатура, КоличествоРедактирования); Если КоличествоРедактирования <= 0 Тогда Объект.Товары.Удалить(СтрокаТоваровДляРедактирования); КонецЕсли; ОбновитьОтображениеТоваров(); СкрытьПанельКоличества(); ЗаполнитьСписокТоваровИзТЧ(); КонецПроцедуры &НаКлиенте Процедура ОтменитьКоличество(Команда) СкрытьПанельКоличества(); КонецПроцедуры &НаКлиенте Процедура УвеличитьКоличество(Команда) КоличествоРедактирования = КоличествоРедактирования + 1; КонецПроцедуры &НаКлиенте Процедура УменьшитьКоличество(Команда) Если КоличествоРедактирования > 0 Тогда КоличествоРедактирования = КоличествоРедактирования - 1; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьНаименованиеНоменклатурыНаСервере(Номенклатура) Возврат Номенклатура.Наименование; КонецФункции &НаКлиенте Процедура ПриОткрытии(Отказ) СтрокаТоваровДляРедактирования = Неопределено; РежимВыделенияТоваров = Ложь; БлокироватьОткрытиеПанелиКоличества = Истина; Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаТовары; Элементы.СтраницаРеквизиты.Видимость = Истина; Элементы.Товары.Видимость = Ложь; Элементы.СписокТоваров.Видимость = Истина; Элементы.ПанельПоискаТоваров.Видимость = Ложь; Элементы.ТоварыВыдТов.Видимость = Ложь; Элементы.ТоварыВыделить.Пометка = Ложь; Элементы.СписокТоваровВыделить.Пометка = Ложь; ОбновитьВидимостьКнопкиУдаленияВыделенных(Ложь); ОбновитьОтображениеТоваров(); ЗаполнитьСписокТоваровИзТЧ(); ПодключитьОбработчикОжидания("РазблокироватьОткрытиеПанелиКоличества", 0.5, Истина); Если Объект.Статус=ПредопределенноеЗначение("Перечисление.Статусы.Отправлен") Тогда ЭтаФорма.ТолькоПросмотр=Истина; КонецЕСли; КонецПроцедуры &НаКлиенте Процедура ПриЗакрытии(ЗавершениеРаботы) ОтключитьОбработчикОжидания("РазблокироватьОткрытиеПанелиКоличества"); ОтключитьОбработчикОжидания("РазблокироватьПереключениеВыдТов"); КонецПроцедуры