//****************************************************************************** // ЗаписатьЕдиницу(ВидЕдиницы) // // Параметры: // ВидЕдиницы - определяет вид записываемой единицы - основная или базовая. // // Возвращаемое значение: //}}MRG[ <-- ] // 0 - произошла ошибка // 1 - единица успешно записана // // Описание: // //{{MRG[ <-> ] //Функция ЗаписатьБазовуюЕдиницу() //}}MRG[ <-> ] //{{MRG[ <-> ] Функция ЗаписатьЕдиницу(ВидЕдиницы = "Базовая") //}}MRG[ <-> ] ЗаписатьЕдиницу = 1; СпрЕдиницы = СоздатьОбъект("Справочник.Единицы"); //{{MRG[ <-> ] // Если ПустоеЗначение(БазоваяЕдиница) = 0 Тогда //}}MRG[ <-> ] //{{MRG[ <-> ] Если ВидЕдиницы = "Базовая" Тогда Единица = БазоваяЕдиница; РеквЕдиница = РеквБазоваяЕдиница; РеквШтрихкод = РеквШтрихкодБазовой; РеквВес = РеквВесБазовой; РеквКоэффициент = 1; Описатель = "базовой"; Иначе Если (ОсновнаяЕдиница = БазоваяЕдиница) и (ФлагОсновнойЕдиницы = 0) Тогда // очищаем основную единицу ОсновнаяЕдиница = ""; КонецЕсли; Единица = ОсновнаяЕдиница; Если Единица.Выбран() = 0 Тогда // Пытаемся найти единицу измерения с такими же параметрами СпрЕдиницы.ИспользоватьВладельца(ТекущийЭлемент()); СпрЕдиницы.ВыбратьЭлементы(); Пока (СпрЕдиницы.ПолучитьЭлемент() = 1) и (Единица.Выбран() = 0) Цикл Если (СпрЕдиницы.ТекущийЭлемент() <> БазоваяЕдиница) Тогда Если (СпрЕдиницы.ОКЕИ = РеквОсновнаяЕдиница) и (СпрЕдиницы.Вес = РеквВесОсновной) и (СпрЕдиницы.Коэффициент = РеквКоэффициентОсновной) и (СпрЕдиницы.ШтрихКод = РеквШтрихкодОсновной) Тогда // Если в справочнике нашли единицу с идентичными параметрами // то создавать новую единицу измерения не будем а используем // существующую в качестве основной ОсновнаяЕдиница = СпрЕдиницы.ТекущийЭлемент(); Единица = ОсновнаяЕдиница; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; РеквЕдиница = РеквОсновнаяЕдиница; РеквШтрихкод = РеквШтрихкодОсновной; РеквВес = РеквВесОсновной; РеквКоэффициент = РеквКоэффициентОсновной; Описатель = "основной"; КонецЕсли; //}}MRG[ <-> ] //{{MRG[ <-- ] Если ПустоеЗначение(Единица) = 0 Тогда //}}MRG[ <-- ] // проверить, изменил ли пользователь реквизиты единицы //{{MRG[ <-> ] // Если (БазоваяЕдиница.ОКЕИ = РеквБазоваяЕдиница) И // (БазоваяЕдиница.Вес = РеквВесБазовой) И // (БазоваяЕдиница.ШтрихКод = РеквШтрихкодБазовой) Тогда //}}MRG[ <-> ] //{{MRG[ <-> ] Если (Единица.ОКЕИ = РеквЕдиница) И (Единица.Вес = РеквВес) И (Единица.Коэффициент = РеквКоэффициент) И (Единица.ШтрихКод = РеквШтрихкод) Тогда //}}MRG[ <-> ] ЗаписатьЕдиницу = 0; // ничего не изменилось Иначе // проверим, а не изменили ли единицу из вне. //{{MRG[ <-> ] // СпрЕдиницы.НайтиЭлемент(БазоваяЕдиница); //}}MRG[ <-> ] //{{MRG[ <-> ] СпрЕдиницы.НайтиЭлемент(Единица); //}}MRG[ <-> ] //{{MRG[ <-> ] // Если глСравнитьЭлементыСправочника(СпрЕдиницы.ТекущийЭлемент(), БазоваяЕдиница) = 1 Тогда //}}MRG[ <-> ] //{{MRG[ <-> ] Если глСравнитьЭлементыСправочника(СпрЕдиницы.ТекущийЭлемент(), Единица) = 1 Тогда //}}MRG[ <-> ] // единица измерения изменена извне. Спросим, нужно ли накатить изменения //{{MRG[ <-> ] // Ответ = Вопрос("Реквизиты базовой единицы измерения """ + // СокрЛП(БазоваяЕдиница.Наименование) + """" + //}}MRG[ <-> ] //{{MRG[ <-> ] Ответ = Вопрос("Реквизиты " + Описатель + " единицы измерения """ + СокрЛП(Единица.Наименование) + """" + //}}MRG[ <-> ] " изменились за время редактирования позиции номенклатуры """ + СокрЛП(Наименование) + //{{MRG[ <-> ] // """. Сохранить изменения реквизитов базовой единицы измерения """ + // СокрЛП(БазоваяЕдиница.Наименование)+"""?","Да+Нет", 60); //}}MRG[ <-> ] //{{MRG[ <-> ] """. Сохранить изменения реквизитов для " + Описатель + " единицы:""" + СокрЛП(Единица.Наименование)+"""?","Да+Нет", 60); //}}MRG[ <-> ] Если Ответ = "Нет" Тогда ЗаписатьЕдиницу = 0; ИначеЕсли Ответ = "Таймаут" Тогда // вышел таймаут. ничего не записываем Возврат 0; КонецЕсли; КонецЕсли; //{{MRG[ --> ] // //}}MRG[ --> ] КонецЕсли; //{{MRG[ <-- ] //}}MRG[ <-- ] КонецЕсли; Если ЗаписатьЕдиницу = 1 Тогда // проверить заполнение обязательных полей //{{MRG[ <-> ] // // Если (ПустоеЗначение(РеквШтрихкодБазовой) = 0) И (Весовой = 0) Тогда // //}}MRG[ <-> ] //{{MRG[ <-> ] Если ПустоеЗначение(РеквШтрихкод) = 0 Тогда //}}MRG[ <-> ] // проверяем уникальность только для невесового товара //{{MRG[ <-- ] ШКУникален = 1; //}}MRG[ <-- ] СпрПоискЕдиницы = СоздатьОбъект("Справочник.Единицы"); //{{MRG[ <-> ] // ШКУникален = 1; // Если СпрПоискЕдиницы.НайтиПоРеквизиту("Штрихкод", РеквШтрихкодБазовой, 1) <> 0 Тогда // Если ПустоеЗначение(БазоваяЕдиница) = 1 Тогда //}}MRG[ <-> ] //{{MRG[ <-> ] Если СпрПоискЕдиницы.НайтиПоРеквизиту("Штрихкод", РеквШтрихкод, 1) <> 0 Тогда Если ПустоеЗначение(Единица) = 1 Тогда //}}MRG[ <-> ] ШКУникален = 0; Иначе //{{MRG[ <-> ] // Если БазоваяЕдиница <> СпрПоискЕдиницы.ТекущийЭлемент() Тогда //}}MRG[ <-> ] //{{MRG[ <-> ] Если Единица <> СпрПоискЕдиницы.ТекущийЭлемент() Тогда //}}MRG[ <-> ] ШКУникален = 0; КонецЕсли; КонецЕсли; КонецЕсли; Если ШКУникален = 0 Тогда //{{MRG[ <-> ] // Предупреждение("Штрихкод базовой единицы не уникален!", 60); //}}MRG[ <-> ] //{{MRG[ <-> ] Предупреждение("Штрихкод " + Описатель + " единицы не уникален!", 60); //}}MRG[ <-> ] Возврат 0; КонецЕсли; //{{MRG[ <-- ] //}}MRG[ <-- ] КонецЕсли; //{{MRG[ <-> ] // // Если новый элемент номенклатуры, то его необходимо записать перед записью базовой единицы //}}MRG[ <-> ] //{{MRG[ <-> ] // Если новый элемент номенклатуры, то его необходимо записать перед записью единицы //}}MRG[ <-> ] Если Выбран() = 0 Тогда Записать(); КонецЕсли; //{{MRG[ <-> ] // Если ПустоеЗначение(БазоваяЕдиница) = 1 Тогда //}}MRG[ <-> ] //{{MRG[ <-> ] Если ПустоеЗначение(Единица) = 1 Тогда //}}MRG[ <-> ] СпрЕдиницы.ИспользоватьВладельца(ТекущийЭлемент()); СпрЕдиницы.Новый(); Иначе //{{MRG[ <-> ] // СпрЕдиницы.НайтиЭлемент(БазоваяЕдиница); //}}MRG[ <-> ] //{{MRG[ <-> ] СпрЕдиницы.НайтиЭлемент(Единица); //}}MRG[ <-> ] КонецЕсли; //{{MRG[ <-> ] // // СпрЕдиницы.Наименование = РеквБазоваяЕдиница.Наименование; // СпрЕдиницы.Вес = РеквВесБазовой; // СпрЕдиницы.Коэффициент = 1; // СпрЕдиницы.ОКЕИ = РеквБазоваяЕдиница; // СпрЕдиницы.ШтрихКод = РеквШтрихкодБазовой; //}}MRG[ <-> ] //{{MRG[ <-> ] СпрЕдиницы.Наименование = РеквЕдиница.Наименование; СпрЕдиницы.Вес = РеквВес; СпрЕдиницы.Коэффициент = РеквКоэффициент; СпрЕдиницы.ОКЕИ = РеквЕдиница; СпрЕдиницы.ШтрихКод = РеквШтрихкод; //}}MRG[ <-> ] Попытка СпрЕдиницы.Записать(); Исключение //{{MRG[ <-> ] // Предупреждение( "Не удалось сохранить ""базовую единицу"": " + ОписаниеОшибки() + //}}MRG[ <-> ] //{{MRG[ <-> ] Предупреждение( "Не выполнено сохранение " + Описатель + " единицы: " + ОписаниеОшибки() + //}}MRG[ <-> ] РазделительСтрок + "Элемент не сохранен!", 60); Возврат 0; КонецПопытки; //{{MRG[ <-- ] Если ВидЕдиницы = "Базовая" Тогда //}}MRG[ <-- ] УстановитьАтрибут("БазоваяЕдиница", ""); ПолучитьАтрибут("БазоваяЕдиница"); УстановитьАтрибут("БазоваяЕдиница", СпрЕдиницы.ТекущийЭлемент()); //{{MRG[ <-- ] Иначе УстановитьАтрибут("ОсновнаяЕдиница", ""); ПолучитьАтрибут("ОсновнаяЕдиница"); УстановитьАтрибут("ОсновнаяЕдиница", СпрЕдиницы.ТекущийЭлемент()); КонецЕсли; //}}MRG[ <-- ] КонецЕсли; //{{MRG[ <-> ] // Если (ПустоеЗначение(ОсновнаяЕдиница) = 1) ИЛИ (ОсновнаяЕдиница = БазоваяЕдиница) Тогда // // обновим основную единицу //}}MRG[ <-> ] //{{MRG[ <-> ] Возврат 1; КонецФункции // ЗаписатьЕдиницу()
Если НайденнаяСтрока.Количество > Разница и Разница <> 0 И Разница > 0 Тогда // Какой-то код ... ИначеЕсли Разница <> 0 И Разница > 0 И НайденнаяСтрока.Количество <> 0 Тогда // Какой-то код ... КонецЕсли