#Если НЕ МобильныйАвтономныйСервер Тогда
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
БлокируемыеРеквизиты = Новый Массив;
БлокируемыеРеквизиты.Добавить("КодТНВЭД");
БлокируемыеРеквизиты.Добавить("ЦеноваяГруппа");
БлокируемыеРеквизиты.Добавить("ИспользоватьУпаковки");
БлокируемыеРеквизиты.Добавить("НаборУпаковок");
БлокируемыеРеквизиты.Добавить("Качество");
БлокируемыеРеквизиты.Добавить("СтавкаНДС");
БлокируемыеРеквизиты.Добавить("ЕдиницаИзмерения");
БлокируемыеРеквизиты.Добавить("Принципал");
БлокируемыеРеквизиты.Добавить("Контрагент");
БлокируемыеРеквизиты.Добавить("ГруппаФинансовогоУчета");
НоменклатураЛокализация.ПолучитьБлокируемыеРеквизитыОбъекта(БлокируемыеРеквизиты);
Возврат БлокируемыеРеквизиты;
КонецФункции
Функция ХарактеристикаИУпаковкаПринадлежатВладельцу(Номенклатура, Характеристика, Упаковка) Экспорт
СтруктураВозврата = Новый Структура("Характеристика, Упаковка, ХарактеристикиИспользуются");
СтруктураВозврата.Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
СтруктураВозврата.Упаковка = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
СтруктураВозврата.ХарактеристикиИспользуются = Ложь;
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
Возврат СтруктураВозврата;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры") Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ЕСТЬNULL(СпрХарактеристики.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика,
| ВЫБОР
| КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
| ИЛИ СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
| ИЛИ СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ХарактеристикиИспользуются
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
| ПО (ВЫБОР
| КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
| ТОГДА СпрНоменклатура.ВидНоменклатуры
| КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
| ТОГДА СпрНоменклатура.Ссылка
| КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
| ТОГДА СпрНоменклатура.ВладелецХарактеристик
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ = СпрХарактеристики.Владелец)
| И (СпрХарактеристики.Ссылка = &Характеристика)
|ГДЕ
| СпрНоменклатура.Ссылка = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Характеристика", Характеристика);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(СтруктураВозврата, Выборка);
КонецЕсли;
ПараметрыВыбораУпаковки = Новый Структура();
ПараметрыВыбораУпаковки.Вставить("Номенклатура", Номенклатура);
ДанныеВыбораУпаковок = Справочники.УпаковкиЕдиницыИзмерения.ПолучитьДанныеВыбора(ПараметрыВыбораУпаковки);
Для Каждого ЭлементСпискаЗначений Из ДанныеВыбораУпаковок Цикл
Если (ТипЗнч(ЭлементСпискаЗначений.Значение) = Тип("Структура")
И ЭлементСпискаЗначений.Значение.Значение = Упаковка)
Или ЭлементСпискаЗначений.Значение = Упаковка Тогда
СтруктураВозврата.Упаковка = Упаковка;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат СтруктураВозврата;
КонецФункции
Функция ХарактеристикиИспользуются(Номенклатура) Экспорт
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
| ИЛИ СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
| ИЛИ СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ХарактеристикиИспользуются
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
|ГДЕ
| СпрНоменклатура.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Номенклатура);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Возврат Выборка.ХарактеристикиИспользуются;
КонецФункции
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
НеРедактируемыеРеквизиты = Новый Массив;
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовНоменклатуры") Тогда
НеРедактируемыеРеквизиты.Добавить("ВидНоменклатуры");
КонецЕсли;
НеРедактируемыеРеквизиты.Добавить("ЕстьТоварыДругогоКачества");
НеРедактируемыеРеквизиты.Добавить("ИспользованиеХарактеристик");
НеРедактируемыеРеквизиты.Добавить("КодДляПоиска");
НеРедактируемыеРеквизиты.Добавить("НаименованиеПолное");
НеРедактируемыеРеквизиты.Добавить("ПоставляетсяВМногооборотнойТаре");
НеРедактируемыеРеквизиты.Добавить("НоменклатураМногооборотнаяТара");
НеРедактируемыеРеквизиты.Добавить("ХарактеристикаМногооборотнаяТара");
НеРедактируемыеРеквизиты.Добавить("Описание");
НеРедактируемыеРеквизиты.Добавить("ТипНоменклатуры");
НеРедактируемыеРеквизиты.Добавить("ВладелецХарактеристик");
НеРедактируемыеРеквизиты.Добавить("ВладелецСерий");
НеРедактируемыеРеквизиты.Добавить("ВладелецТоварныхКатегорий");
НеРедактируемыеРеквизиты.Добавить("ФайлКартинки");
НеРедактируемыеРеквизиты.Добавить("ФайлОписанияДляСайта");
НеРедактируемыеРеквизиты.Добавить("ОсобенностьУчета");
НеРедактируемыеРеквизиты.Добавить("СтавкаНДС");
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(НеРедактируемыеРеквизиты, РеквизитыПризнаковОсобенностейУчета(Метаданные.Справочники.Номенклатура));
НоменклатураЛокализация.РеквизитыНеРедактируемыеВГрупповойОбработкеНоменклатура(НеРедактируемыеРеквизиты);
Возврат НеРедактируемыеРеквизиты;
КонецФункции
Функция ПроверитьИспользованиеХарактеристикИПолучитьВладельцаДляВыбора(Номенклатура, ВладелецХарактеристики) Экспорт
СтруктураРеквизитов = Новый Структура;
СтруктураРеквизитов.Вставить("ВидНоменклатуры" , "ВидНоменклатуры");
СтруктураРеквизитов.Вставить("ИспользованиеХарактеристик", "ИспользованиеХарактеристик");
СтруктураРеквизитов.Вставить("ВладелецХарактеристик" , "ВладелецХарактеристик");
ЗначенияРеквизитовВИБ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, СтруктураРеквизитов);
Если ЗначенияРеквизитовВИБ.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать Тогда
ИспользованиеХарактеристик = Ложь;
Иначе
ИспользованиеХарактеристик = Истина;
Если ЗначенияРеквизитовВИБ.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры Тогда
ВладелецХарактеристики = ЗначенияРеквизитовВИБ.ВидНоменклатуры;
ИначеЕсли ЗначенияРеквизитовВИБ.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры Тогда
ВладелецХарактеристики = ЗначенияРеквизитовВИБ.ВладелецХарактеристик;
Иначе
ВладелецХарактеристики = Номенклатура;
КонецЕсли;
КонецЕсли;
Возврат ИспользованиеХарактеристик;
КонецФункции
Процедура ЗаполнитьРеквизитыПоВидуНоменклатуры(Номенклатура,
ПрерыватьЗаполнениеПриОшибкеПроверки = Ложь,
Отказ = Ложь,
СтарыйВидНоменклатуры = Неопределено,
ЗаполнениеПоИсточникуКопирования = Ложь) Экспорт
Если Номенклатура.ЭтоГруппа Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Номенклатура.ВидНоменклатуры) Тогда
Возврат;
КонецЕсли;
Если СтарыйВидНоменклатуры = Неопределено Тогда
Если ЗначениеЗаполнено(Номенклатура.Ссылка) Тогда
СтарыйВидНоменклатуры = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.Ссылка, "ВидНоменклатуры");
Если ЗначениеЗаполнено(СтарыйВидНоменклатуры) Тогда
ПроверитьКорректностьСменыВидаНоменклатурыЗаполнитьПоНовомуВиду(Номенклатура, СтарыйВидНоменклатуры, Отказ);
КонецЕсли;
Если Отказ
И ПрерыватьЗаполнениеПриОшибкеПроверки Тогда
Возврат;
КонецЕсли;
Иначе
СтарыйВидНоменклатуры = Справочники.ВидыНоменклатуры.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
СтрогоБерутсяИзВида = РеквизитыПризнаковОсобенностейУчета(Метаданные.Справочники.Номенклатура);
СтрогоБерутсяИзВида.Добавить("ТипНоменклатуры");
СтрогоБерутсяИзВида.Добавить("ВариантОформленияПродажи");
СтрогоБерутсяИзВида.Добавить("ГруппаДоступа");
СтрогоБерутсяИзВида.Добавить("ИспользованиеХарактеристик");
СтрогоБерутсяИзВида.Добавить("ВладелецСерий");
СтрогоБерутсяИзВида.Добавить("ВладелецХарактеристик");
СтрогоБерутсяИзВида.Добавить("ВладелецТоварныхКатегорий");
СтрогоБерутсяИзВида.Добавить("ОсобенностьУчета");
СтрогоБерутсяИзВида.Добавить("ЕдиницаИзмеренияСрокаГодности");
ЗаполняютсяТолькоПриСозданииНоменклатуры = Новый Массив;
ЗаполняютсяТолькоПриСозданииНоменклатуры.Добавить("ЕдиницаИзмерения");
ЗаполняютсяТолькоПриСозданииНоменклатуры.Добавить("ЕдиницаДляОтчетов");
ЗаполняютсяТолькоПриСозданииНоменклатуры.Добавить("КоэффициентЕдиницыДляОтчетов");
ЗаполняютсяТолькоПриСозданииНоменклатуры.Добавить("ОбособленнаяЗакупкаПродажа");
ЗаполняютсяТолькоПриСозданииНоменклатуры.Добавить("СтавкаНДС");
ЗаполняютсяТолькоПриСозданииНоменклатуры.Добавить("ЦеноваяГруппа");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию = Новый Массив;
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("СкладскаяГруппа");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("СезоннаяГруппа");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("ГруппаАналитическогоУчета");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("ГруппаФинансовогоУчета");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("ШаблонЦенника");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("ШаблонЭтикетки");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("СхемаОбеспечения");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("СпособОбеспеченияПотребностей");
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию.Добавить("КодТНВЭД");
ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены = Новый Массив;
ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены.Добавить("ИспользоватьУпаковки");
ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены.Добавить("НаборУпаковок");
ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены.Добавить("ПоставляетсяВМногооборотнойТаре");
ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены.Добавить("НоменклатураМногооборотнаяТара");
ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены.Добавить("ХарактеристикаМногооборотнаяТара");
ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены.Добавить("ВестиУчетСертификатовНоменклатуры");
ЗначенияПоУмолчанию = Новый Структура;
ЗначенияПоУмолчанию.Вставить("ГруппаФинансовогоУчета", Справочники.ГруппыФинансовогоУчетаНоменклатуры.ПолучитьГруппуФинансовогоУчетаПоУмолчанию());
ЗначенияПоУмолчанию.Вставить("СкладскаяГруппа", ЗначениеНастроекПовтИсп.СкладскаяГруппаНоменклатурыПоУмолчанию());
ЗначенияПоУмолчанию.Вставить("ГруппаАналитическогоУчета", Справочники.ГруппыАналитическогоУчетаНоменклатуры.ПолучитьГруппуАналитическогоУчетаПоУмолчанию());
ЗначенияПоУмолчанию.Вставить("Качество", Перечисления.ГрадацииКачества.Новый);
ЗначенияПоУмолчанию.Вставить("СтавкаНДС", УчетНДСУП.СтавкаНДСОсновнойСтраны());
НоменклатураЛокализация.ЗаполнитьРеквизитыПоВидуНоменклатуры(СтрогоБерутсяИзВида,
ЗаполняютсяТолькоПриСозданииНоменклатуры,
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию,
ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены,
ЗначенияПоУмолчанию);
ОбщегоНазначенияУТКлиентСервер.ОчиститьЗначенияСвойств(Номенклатура, СтрогоБерутсяИзВида);
ПолучаемыеРеквизиты = Новый Массив;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ПолучаемыеРеквизиты, СтрогоБерутсяИзВида);
ЗаполнитьРеквизитыЗаполняемыеПриСоздании = Не ЗаполнениеПоИсточникуКопирования
И Не ЗначениеЗаполнено(Номенклатура.Ссылка);
Если ЗаполнитьРеквизитыЗаполняемыеПриСоздании Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ПолучаемыеРеквизиты, ЗаполняютсяТолькоПриСозданииНоменклатуры);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ПолучаемыеРеквизиты, ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ПолучаемыеРеквизиты, ПерезаполняютсяЕслиРаньшеБылиНеЗаполнены);
РеквизитыНовогоВида = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура.ВидНоменклатуры, ПолучаемыеРеквизиты);
Если ЗаполнитьРеквизитыЗаполняемыеПриСоздании Тогда
Для Каждого ИмяРеквизита Из ЗаполняютсяТолькоПриСозданииНоменклатуры Цикл
Если ЗначениеЗаполнено(РеквизитыНовогоВида[ИмяРеквизита]) Тогда
Номенклатура[ИмяРеквизита] = Неопределено;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КодТНВЭДДоИзменения = Номенклатура.КодТНВЭД;
Если ЗначениеЗаполнено(СтарыйВидНоменклатуры) Тогда
РеквизитыСтарогоВида = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтарыйВидНоменклатуры,
ПерезаполняютсяЕслиИхЗначенияБылиРавныЗначениямПоУмолчанию);
Для Каждого КлючЗначение Из РеквизитыСтарогоВида Цикл
Если Номенклатура[КлючЗначение.Ключ] = КлючЗначение.Значение
И ЗначениеЗаполнено(РеквизитыНовогоВида[КлючЗначение.Ключ]) Тогда
Номенклатура[КлючЗначение.Ключ] = Неопределено;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.ЗаполнитьЗначенияПустыхСвойств(Номенклатура, РеквизитыНовогоВида);
ОбщегоНазначенияУТКлиентСервер.ЗаполнитьЗначенияПустыхСвойств(Номенклатура, ЗначенияПоУмолчанию);
ОтработатьЛогикуСвязиРеквизитов(Номенклатура);
Если ЗаполнитьРеквизитыЗаполняемыеПриСоздании
Или КодТНВЭДДоИзменения <> Номенклатура.КодТНВЭД Тогда
ЗаполнитьРеквизитыИмпортаИПрослеживаемости(Номенклатура);
КонецЕсли;
КонецПроцедуры
Процедура ОтработатьЛогикуСвязиРеквизитов(Номенклатура) Экспорт
РеквизитыПризнаковОсобенностейУчета = РеквизитыПризнаковОсобенностейУчета(Метаданные.Справочники.Номенклатура);
Для Каждого ИмяРеквизита Из РеквизитыПризнаковОсобенностейУчета Цикл
Номенклатура[ИмяРеквизита] =
Номенклатура.ОсобенностьУчета = ПредопределенноеЗначение("Перечисление.ОсобенностиУчетаНоменклатуры." + ИмяРеквизита);
КонецЦикла;
ОтключитьОчисткуРеквизитов = Ложь;
Если ТипЗнч(Номенклатура) <> Тип("СправочникОбъект.Номенклатура")
Или Не Номенклатура.ДополнительныеСвойства.Свойство("ОтключитьОчисткуРеквизитов", ОтключитьОчисткуРеквизитов)
Или ОтключитьОчисткуРеквизитов <> Истина Тогда
ИспользованиеРеквизитов = ИспользованиеЭлементов(Номенклатура, Ложь, Истина);
МетаданныеОбъекта = Метаданные.Справочники.Номенклатура;
Для каждого КлючЗначение Из ИспользованиеРеквизитов Цикл
Если Не КлючЗначение.Значение Тогда
Если МетаданныеОбъекта.Реквизиты.Найти(КлючЗначение.Ключ) <> Неопределено Тогда
Номенклатура[КлючЗначение.Ключ] = Неопределено;
ИначеЕсли МетаданныеОбъекта.ТабличныеЧасти.Найти(КлючЗначение.Ключ) <> Неопределено Тогда
Номенклатура[КлючЗначение.Ключ].Очистить();
Иначе
ТекстИсключения = НСтр("ru = 'При очистке неиспользуемых реквизитов номенклатуры не найден реквизит %ИмяРеквизита%'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРеквизита%", КлючЗначение.Ключ);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ОтключитьОчисткуРеквизитов = Истина Тогда
Номенклатура.ДополнительныеСвойства.ОтключитьОчисткуРеквизитов = Ложь;
КонецЕсли;
Если Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа
Или Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга Тогда
Если ЗначениеЗаполнено(Номенклатура.Принципал) Тогда
Если ТипЗнч(Номенклатура.Принципал) = Тип("СправочникСсылка.Организации") Тогда
Номенклатура.Контрагент = Номенклатура.Принципал;
ИначеЕсли Не ЗначениеЗаполнено(Номенклатура.Контрагент) Тогда
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Номенклатура.Принципал, Номенклатура.Контрагент);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Номенклатура.КодТНВЭД) Тогда
Номенклатура.ЕдиницаИзмеренияТНВЭД = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.КодТНВЭД,
"ЕдиницаИзмерения");
Иначе
Номенклатура.ЕдиницаИзмеренияТНВЭД = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
КонецЕсли;
Если ЗначениеЗаполнено(Номенклатура.НаборУпаковок)
И Номенклатура.НаборУпаковок <> Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры Тогда
Номенклатура.ЕдиницаИзмерения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.НаборУпаковок, "ЕдиницаИзмерения");
КонецЕсли;
ИспользоватьТоварныеКатегории = ПолучитьФункциональнуюОпцию("ИспользоватьТоварныеКатегории");
Если ИспользоватьТоварныеКатегории
И ЗначениеЗаполнено(Номенклатура.ТоварнаяКатегория) Тогда
ВладелецКатегории = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура.ТоварнаяКатегория, "Владелец");
Если ВладелецКатегории <> Номенклатура.ВидНоменклатуры
И ВладелецКатегории <> Номенклатура.ВладелецТоварныхКатегорий Тогда
Номенклатура.ТоварнаяКатегория = Справочники.ТоварныеКатегории.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(Номенклатура.ЕдиницаДляОтчетов) Тогда
Номенклатура.ЕдиницаДляОтчетов = Номенклатура.ЕдиницаИзмерения;
КонецЕсли;
Если Не ЗначениеЗаполнено(Номенклатура.КоэффициентЕдиницыДляОтчетов)
Или Номенклатура.ЕдиницаДляОтчетов = Номенклатура.ЕдиницаИзмерения Тогда
Номенклатура.КоэффициентЕдиницыДляОтчетов = 1;
КонецЕсли;
ТипЕдиницы = "";
МернаяЕдиницаХранения = Справочники.УпаковкиЕдиницыИзмерения.ЭтоМернаяЕдиница(Номенклатура.ЕдиницаИзмерения, ТипЕдиницы);
ОтработатьЛогикуЗаполненияМеры(Номенклатура, МернаяЕдиницаХранения, ТипЕдиницы, "Вес");
ОтработатьЛогикуЗаполненияМеры(Номенклатура, МернаяЕдиницаХранения, ТипЕдиницы, "Объем");
ОтработатьЛогикуЗаполненияМеры(Номенклатура, МернаяЕдиницаХранения, ТипЕдиницы, "Площадь");
ОтработатьЛогикуЗаполненияМеры(Номенклатура, МернаяЕдиницаХранения, ТипЕдиницы, "Длина");
НоменклатураЛокализация.ОтработатьЛогикуСвязиРеквизитов(Номенклатура);
КонецПроцедуры
Процедура ЗаполнитьРеквизитыИмпортаИПрослеживаемости(Номенклатура) Экспорт
РеквизитыПрослеживаемости = РеквизитыПрослеживаемости(Номенклатура.КодТНВЭД);
Номенклатура.ЕдиницаИзмеренияТНВЭД = РеквизитыПрослеживаемости.ЕдиницаИзмерения;
НоменклатураЛокализация.ЗаполнитьРеквизитыИмпортаИПрослеживаемости(Номенклатура, РеквизитыПрослеживаемости);
КонецПроцедуры
Функция РеквизитыПрослеживаемости(КодТНВЭД) Экспорт
РеквизитыПрослеживаемости = НоменклатураКлиентСервер.РеквизитыПрослеживаемостиПоУмолчанию();
Если ЗначениеЗаполнено(КодТНВЭД) Тогда
ИменаРеквизитов = Новый Массив;
Для Каждого КлючИЗначение Из РеквизитыПрослеживаемости Цикл
ИменаРеквизитов.Добавить(КлючИЗначение.Ключ);
КонецЦикла;
ЗаполнитьЗначенияСвойств(РеквизитыПрослеживаемости, ОбщегоНазначения.ЗначенияРеквизитовОбъекта(КодТНВЭД, ИменаРеквизитов));
КонецЕсли;
Возврат РеквизитыПрослеживаемости;
КонецФункции
Процедура ПроверитьКорректностьСменыВидаНоменклатурыЗаполнитьПоНовомуВиду(Номенклатура, СтарыйВидНоменклатуры, Отказ) Экспорт
УсловияВыбораНовогоВидаНоменклатуры = УсловияВыбораНовогоВидаНоменклатуры();
ТекстПолейВыборки = "";
Для Каждого КлючЗначение Из УсловияВыбораНовогоВидаНоменклатуры Цикл
ТекстПолейВыборки = ТекстПолейВыборки + КлючЗначение.Значение + " КАК " + КлючЗначение.Ключ + ", ";
КонецЦикла;
ТекстЗапроса = "
|ВЫБРАТЬ
| &ПоляВыборки,
| НовыйВидНоменклатуры.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВидыНоменклатуры КАК НовыйВидНоменклатуры ";
Если Не ПустаяСтрока(ТекстПолейВыборки) Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПоляВыборки,", ТекстПолейВыборки);
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
ПараметрыЗапроса = Запрос.НайтиПараметры();
ИменаРеквизитов = Новый Массив;
Для Каждого Параметр Из ПараметрыЗапроса Цикл
ИменаРеквизитов.Добавить(Параметр.Имя);
КонецЦикла;
СтарыеРеквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтарыйВидНоменклатуры, ИменаРеквизитов);
Для Каждого Параметр Из ПараметрыЗапроса Цикл
Запрос.УстановитьПараметр(Параметр.Имя, СтарыеРеквизиты[Параметр.Имя]);
КонецЦикла;
Запрос.Текст = Запрос.Текст + "
|ГДЕ
| НовыйВидНоменклатуры.Ссылка = &НовыйВидНоменклатуры";
Запрос.УстановитьПараметр("НовыйВидНоменклатуры", Номенклатура.ВидНоменклатуры);
Результат = Запрос.Выполнить().Выгрузить();
ЗначениеОшибки = Результат[0];
Для Каждого Ошибка Из Результат.Колонки Цикл
Если Ошибка.Имя = "Ссылка"
Или Не ЗначениеОшибки[Ошибка.Имя] Тогда
Продолжить;
КонецЕсли;
Если Ошибка.Имя = "ЕстьПроблемаТипНоменклатуры" Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru = 'Проблема при изменении вида номенклатуры: у нового вида другой тип номенклатуры.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
ИначеЕсли Ошибка.Имя = "ЕстьПроблемаОсобенностьУчета" Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru = 'Проблема при изменении вида номенклатуры: у нового вида другая особенность учета.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
ИначеЕсли Ошибка.Имя = "ЕстьПроблемаИспользоватьСерии" Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru = 'Проблема при изменении вида номенклатуры: у нового вида несовместимые настройки ведения серий.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
ИначеЕсли Ошибка.Имя = "ЕстьПроблемаИспользованиеХарактеристик" Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru = 'Проблема при изменении вида номенклатуры: у нового вида несовместимые настройки ведения характеристик.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Иначе
ТекстИсключения = НСтр("ru = 'Неизвестный код ошибки.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция УсловияВыбораНовогоВидаНоменклатуры() Экспорт
УсловияВыбораНовогоВидаНоменклатуры = Новый Структура;
ЕстьПроблемаТипНоменклатуры = "
| ВЫБОР
| КОГДА &Ссылка = НовыйВидНоменклатуры.Ссылка
| ТОГДА ЛОЖЬ
| КОГДА &ТипНоменклатуры <> НовыйВидНоменклатуры.ТипНоменклатуры
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ ";
УсловияВыбораНовогоВидаНоменклатуры.Вставить("ЕстьПроблемаТипНоменклатуры", ЕстьПроблемаТипНоменклатуры);
ЕстьПроблемаОсобенностьУчета = "
| ВЫБОР
| КОГДА &Ссылка = НовыйВидНоменклатуры.Ссылка
| ТОГДА ЛОЖЬ
| КОГДА &ОсобенностьУчета <> НовыйВидНоменклатуры.ОсобенностьУчета
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ ";
УсловияВыбораНовогоВидаНоменклатуры.Вставить("ЕстьПроблемаОсобенностьУчета", ЕстьПроблемаОсобенностьУчета);
ЕстьПроблемаИспользоватьСерии = "
| ВЫБОР
| КОГДА &Ссылка = НовыйВидНоменклатуры.Ссылка
| ТОГДА ЛОЖЬ
| КОГДА НЕ(НЕ &ИспользоватьСерии
| И НЕ НовыйВидНоменклатуры.ИспользоватьСерии
| ИЛИ &ИспользоватьСерии
| И НовыйВидНоменклатуры.ИспользоватьСерии
| И (&ВладелецСерий = НовыйВидНоменклатуры.ВладелецСерий
| И &ВладелецСерий <> ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)
| И НовыйВидНоменклатуры.ВладелецСерий <> ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)
| ИЛИ &ВладелецСерий = НовыйВидНоменклатуры.Ссылка
| ИЛИ НовыйВидНоменклатуры.ВладелецСерий = &Ссылка))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ ";
УсловияВыбораНовогоВидаНоменклатуры.Вставить("ЕстьПроблемаИспользоватьСерии", ЕстьПроблемаИспользоватьСерии);
ЕстьПроблемаИспользованиеХарактеристик = "
| ВЫБОР
| КОГДА &Ссылка = НовыйВидНоменклатуры.Ссылка
| ТОГДА ЛОЖЬ
| КОГДА НЕ(&ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
| И НовыйВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
| ИЛИ &ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
| И НовыйВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
| ИЛИ &ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
| И НовыйВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
| И НовыйВидНоменклатуры.ВладелецХарактеристик = &Ссылка
| ИЛИ НовыйВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
| И &ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
| И &ВладелецХарактеристик = НовыйВидНоменклатуры.Ссылка
| ИЛИ НовыйВидНоменклатуры.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
| И &ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
| И &ВладелецХарактеристик = НовыйВидНоменклатуры.ВладелецХарактеристик)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ ";
УсловияВыбораНовогоВидаНоменклатуры.Вставить("ЕстьПроблемаИспользованиеХарактеристик", ЕстьПроблемаИспользованиеХарактеристик);
Возврат УсловияВыбораНовогоВидаНоменклатуры;
КонецФункции
Функция НастройкиВидимостиИЗаголовков(Объект, РежимВидимостиПоказатьТолькоВажные = Ложь) Экспорт
НастройкиВидимостиИЗаголовков = Новый Структура;
ВидимостьЭлементов = ИспользованиеЭлементов(Объект, РежимВидимостиПоказатьТолькоВажные, Ложь);
ЗаголовкиЭлементов = ЗаголовкиЭлементов(Объект, ВидимостьЭлементов);
НастройкиВидимостиИЗаголовков.Вставить("ВидимостьЭлементов", ВидимостьЭлементов);
НастройкиВидимостиИЗаголовков.Вставить("ЗаголовкиЭлементов", ЗаголовкиЭлементов);
Возврат НастройкиВидимостиИЗаголовков;
КонецФункции
Функция РеквизитыМеры(Мера) Экспорт
РеквизитыМеры = Новый Структура;
РеквизитыМеры.Вставить("Использовать");
РеквизитыМеры.Вставить("ЕдиницаИзмерения");
РеквизитыМеры.Вставить("Числитель");
РеквизитыМеры.Вставить("Знаменатель");
РеквизитыМеры.Вставить("МожноУказыватьВДокументах");
Если Мера = "Объем" Тогда
РеквизитыМеры.Использовать = "ОбъемИспользовать";
РеквизитыМеры.ЕдиницаИзмерения = "ОбъемЕдиницаИзмерения";
РеквизитыМеры.Числитель = "ОбъемЧислитель";
РеквизитыМеры.Знаменатель = "ОбъемЗнаменатель";
РеквизитыМеры.МожноУказыватьВДокументах = "ОбъемМожноУказыватьВДокументах";
ИначеЕсли Мера = "Длина" Тогда
РеквизитыМеры.Использовать = "ДлинаИспользовать";
РеквизитыМеры.ЕдиницаИзмерения = "ДлинаЕдиницаИзмерения";
РеквизитыМеры.Числитель = "ДлинаЧислитель";
РеквизитыМеры.Знаменатель = "ДлинаЗнаменатель";
РеквизитыМеры.МожноУказыватьВДокументах = "ДлинаМожноУказыватьВДокументах";
ИначеЕсли Мера = "Ширина" Тогда
РеквизитыМеры.Использовать = "ШиринаИспользовать";
РеквизитыМеры.ЕдиницаИзмерения = "ШиринаЕдиницаИзмерения";
РеквизитыМеры.Числитель = "ШиринаЧислитель";
РеквизитыМеры.Знаменатель = "ШиринаЗнаменатель";
РеквизитыМеры.МожноУказыватьВДокументах = "ШиринаМожноУказыватьВДокументах";
ИначеЕсли Мера = "Вес" Тогда
РеквизитыМеры.Использовать = "ВесИспользовать";
РеквизитыМеры.ЕдиницаИзмерения = "ВесЕдиницаИзмерения";
РеквизитыМеры.Числитель = "ВесЧислитель";
РеквизитыМеры.Знаменатель = "ВесЗнаменатель";
РеквизитыМеры.МожноУказыватьВДокументах = "ВесМожноУказыватьВДокументах";
ИначеЕсли Мера = "Площадь" Тогда
РеквизитыМеры.Использовать = "ПлощадьИспользовать";
РеквизитыМеры.ЕдиницаИзмерения = "ПлощадьЕдиницаИзмерения";
РеквизитыМеры.Числитель = "ПлощадьЧислитель";
РеквизитыМеры.Знаменатель = "ПлощадьЗнаменатель";
РеквизитыМеры.МожноУказыватьВДокументах = "ПлощадьМожноУказыватьВДокументах";
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Не определены реквизиты меры %1'"), Мера);
КонецЕсли;
Возврат РеквизитыМеры;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ОпределитьПараметрыЗагрузкиДанныхИзФайла(Параметры) Экспорт
Параметры.Заголовок = НСтр("ru = 'Номенклатура'");
Параметры.ТипДанныхКолонки.Вставить("Наименование", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(100)));
Параметры.ТипДанныхКолонки.Вставить("Родитель", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Параметры.ТипДанныхКолонки.Вставить("ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Параметры.ТипДанныхКолонки.Вставить("ВариантОформленияПродажи", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыОформленияПродажи"));
Параметры.ТипДанныхКолонки.Вставить("ВесЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Параметры.ТипДанныхКолонки.Вставить("ВидНоменклатуры", Новый ОписаниеТипов("СправочникСсылка.ВидыНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("ГруппаДоступа", Новый ОписаниеТипов("СправочникСсылка.ГруппыДоступаНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("ЕдиницаИзмеренияСрокаГодности", Новый ОписаниеТипов("ПеречислениеСсылка.ЕдиницыИзмеренияВремени"));
Параметры.ТипДанныхКолонки.Вставить("ДлинаЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Параметры.ТипДанныхКолонки.Вставить("ИспользованиеХарактеристик", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыИспользованияХарактеристикНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("Качество", Новый ОписаниеТипов("ПеречислениеСсылка.ГрадацииКачества"));
Параметры.ТипДанныхКолонки.Вставить("Марка", Новый ОписаниеТипов("СправочникСсылка.Марки"));
Параметры.ТипДанныхКолонки.Вставить("НаборУпаковок", Новый ОписаниеТипов("СправочникСсылка.НаборыУпаковок"));
Параметры.ТипДанныхКолонки.Вставить("ГруппаФинансовогоУчета", Новый ОписаниеТипов("СправочникСсылка.ГруппыФинансовогоУчетаНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("НоменклатураМногооборотнаяТара", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Параметры.ТипДанныхКолонки.Вставить("Производитель", Новый ОписаниеТипов("СправочникСсылка.Производители"));
Параметры.ТипДанныхКолонки.Вставить("ПроизводительИмпортерКонтрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Параметры.ТипДанныхКолонки.Вставить("СкладскаяГруппа", Новый ОписаниеТипов("СправочникСсылка.СкладскиеГруппыНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("СтавкаНДС", Новый ОписаниеТипов("СправочникСсылка.СтавкиНДС"));
Параметры.ТипДанныхКолонки.Вставить("ТипНоменклатуры", Новый ОписаниеТипов("ПеречислениеСсылка.ТипыНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("ТоварнаяКатегория", Новый ОписаниеТипов("СправочникСсылка.ТоварныеКатегории"));
Параметры.ТипДанныхКолонки.Вставить("ОбъемЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Параметры.ТипДанныхКолонки.Вставить("ХарактеристикаМногооборотнаяТара", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("ПлощадьЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Параметры.ТипДанныхКолонки.Вставить("СхемаОбеспечения", Новый ОписаниеТипов("СправочникСсылка.СхемыОбеспечения"));
Параметры.ТипДанныхКолонки.Вставить("СпособыОбеспеченияПотребностей", Новый ОписаниеТипов("СправочникСсылка.СпособыОбеспеченияПотребностей"));
Параметры.ТипДанныхКолонки.Вставить("ЦеноваяГруппа", Новый ОписаниеТипов("СправочникСсылка.ЦеновыеГруппы"));
Параметры.ТипДанныхКолонки.Вставить("ШаблонЦенника", Новый ОписаниеТипов("СправочникСсылка.ШаблоныЭтикетокИЦенников"));
Параметры.ТипДанныхКолонки.Вставить("СезоннаяГруппа", Новый ОписаниеТипов("СправочникСсылка.СезонныеГруппы"));
Параметры.ТипДанныхКолонки.Вставить("КоллекцияНоменклатуры", Новый ОписаниеТипов("СправочникСсылка.КоллекцииНоменклатуры"));
МассивТипов = Новый Массив;
МассивТипов.Добавить(Новый ОписаниеТипов("СправочникСсылка.Организации"));
МассивТипов.Добавить(Новый ОписаниеТипов("СправочникСсылка.Партнеры"));
Параметры.ТипДанныхКолонки.Вставить("Принципал", Новый ОписаниеТипов(МассивТипов));
МассивТипов = Новый Массив;
МассивТипов.Добавить(Новый ОписаниеТипов("СправочникСсылка.Организации"));
МассивТипов.Добавить(Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Параметры.ТипДанныхКолонки.Вставить("Контрагент", Новый ОписаниеТипов(МассивТипов));
Параметры.ТипДанныхКолонки.Вставить("РейтингПродаж", Новый ОписаниеТипов("СправочникСсылка.РейтингиПродажНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("ГруппаАналитическогоУчета", Новый ОписаниеТипов("СправочникСсылка.ГруппыАналитическогоУчетаНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("КодТНВЭД", Новый ОписаниеТипов("СправочникСсылка.КлассификаторТНВЭД"));
Параметры.ТипДанныхКолонки.Вставить("ОсобенностьУчета", Новый ОписаниеТипов("ПеречислениеСсылка.ОсобенностиУчетаНоменклатуры"));
Параметры.ТипДанныхКолонки.Вставить("ЕдиницаИзмеренияТНВЭД", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Параметры.ТипДанныхКолонки.Вставить("СтранаПроисхождения", Новый ОписаниеТипов("СправочникСсылка.СтраныМира"));
ТипБулево = Новый ОписаниеТипов("Булево");
Параметры.ТипДанныхКолонки.Вставить("ВесИспользовать", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ВесМожноУказыватьВДокументах", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ВестиУчетПоГТД", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ВестиУчетСертификатовНоменклатуры", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("АлкогольнаяПродукция", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ЕстьТоварыДругогоКачества", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ИмпортнаяАлкогольнаяПродукция", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ДлинаИспользовать", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ДлинаМожноУказыватьВДокументах", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ИспользоватьИндивидуальныйШаблонЦенника", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ИспользоватьИндивидуальныйШаблонЭтикетки", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ИспользоватьУпаковки", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ПодакцизныйТовар", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ПродаетсяПоРазрешению", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ПоставляетсяВМногооборотнойТаре", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ОбъемИспользовать", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ОбъемМожноУказыватьВДокументах", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ПлощадьИспользовать", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ПлощадьМожноУказыватьВДокументах", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ОбособленнаяЗакупкаПродажа", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ОблагаетсяНДПИПоПроцентнойСтавке", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ПродукцияМаркируемаяДляГИСМ", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("КиЗГИСМ", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ПодконтрольнаяПродукцияВЕТИС", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("АлкогольнаяПродукцияВоВскрытойТаре", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ОблагаетсяНДСУПокупателя", ТипБулево);
Параметры.ТипДанныхКолонки.Вставить("ПрослеживаемыйТовар", ТипБулево);
НеотрицательноеЧисло15_3 = Новый КвалификаторыЧисла(15, 3, ДопустимыйЗнак.Неотрицательный);
НеотрицательноеЧисло15_0 = Новый КвалификаторыЧисла(15, 0, ДопустимыйЗнак.Неотрицательный);
НеотрицательноеЧисло18_6 = Новый КвалификаторыЧисла(18, 6, ДопустимыйЗнак.Неотрицательный);
Параметры.ТипДанныхКолонки.Вставить("ВесЗнаменатель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("ВесЧислитель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("ДлинаЗнаменатель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("ДлинаЧислитель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("ОбъемДАЛ", Новый ОписаниеТипов("Число", НеотрицательноеЧисло18_6));
Параметры.ТипДанныхКолонки.Вставить("СрокГодности", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_0));
Параметры.ТипДанныхКолонки.Вставить("ОбъемЗнаменатель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("ОбъемЧислитель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("ПлощадьЗнаменатель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("ПлощадьЧислитель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("КоэффициентЕдиницыДляОтчетов", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
Параметры.ТипДанныхКолонки.Вставить("Крепость", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
МассивОбязательныхКолонок = Новый Массив;
МассивОбязательныхКолонок.Добавить("Наименование");
МассивОбязательныхКолонок.Добавить("ЕдиницаИзмерения");
МассивОбязательныхКолонок.Добавить("ВариантОформленияПродажи");
МассивОбязательныхКолонок.Добавить("ВидНоменклатуры");
МассивОбязательныхКолонок.Добавить("ИспользованиеХарактеристик");
МассивОбязательныхКолонок.Добавить("Качество");
МассивОбязательныхКолонок.Добавить("СтавкаНДС");
МассивОбязательныхКолонок.Добавить("ТипНоменклатуры");
Если Справочники.ГруппыДоступаНоменклатуры.ИспользуютсяГруппыДоступа() Тогда
МассивОбязательныхКолонок.Добавить("ГруппаДоступа");
КонецЕсли;
Параметры.ОбязательныеКолонки = МассивОбязательныхКолонок;
НоменклатураЛокализация.ОпределитьПараметрыЗагрузкиДанныхИзФайла(Параметры);
КонецПроцедуры
Процедура СопоставитьЗагружаемыеДанныеИзФайла(ЗагружаемыеДанные) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДляСопоставления.Наименование КАК Наименование,
| ДанныеДляСопоставления.Идентификатор КАК Идентификатор
|ПОМЕСТИТЬ ДанныеДляСопоставления
|ИЗ
| &ДанныеДляСопоставления КАК ДанныеДляСопоставления
|
|ИНДЕКСИРОВАТЬ ПО
| ДанныеДляСопоставления.Наименование,
| ДанныеДляСопоставления.Идентификатор
|;
|
|
|ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура,
| ДанныеДляСопоставления.Идентификатор КАК Идентификатор
|ИЗ
| ДанныеДляСопоставления КАК ДанныеДляСопоставления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
| ПО (Номенклатура.Наименование = ДанныеДляСопоставления.Наименование)
| И (Номенклатура.ПометкаУдаления = ЛОЖЬ)
|";
Запрос.УстановитьПараметр("ДанныеДляСопоставления", ЗагружаемыеДанные);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
Фильтр = Новый Структура("Идентификатор", РезультатЗапроса.Идентификатор);
Строки = ЗагружаемыеДанные.НайтиСтроки(Фильтр);
Для Каждого Строка Из Строки Цикл
Строка.ОбъектСопоставления = РезультатЗапроса.Номенклатура;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ЗагрузитьИзФайла(ЗагружаемыеДанные, ПараметрыЗагрузки, Отказ) Экспорт
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
Свойства = Новый Соответствие;
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
ПустаяСсылкаНаОбъект = Справочники.Номенклатура.ПустаяСсылка();
Если МодульУправлениеСвойствами.ИспользоватьДопРеквизиты(ПустаяСсылкаНаОбъект)
ИЛИ МодульУправлениеСвойствами.ИспользоватьДопСведения(ПустаяСсылкаНаОбъект) Тогда
СписокСвойств = МодульУправлениеСвойствами.СвойстваОбъекта(ПустаяСсылкаНаОбъект);
Для каждого Свойство Из СписокСвойств Цикл
Свойства.Вставить(Строка(Свойство), Свойство);
КонецЦикла;
КонецЕсли;
КонецЕсли;
ТаблицаСвойств = Новый ТаблицаЗначений;
ТаблицаСвойств.Колонки.Добавить("Свойство");
ТаблицаСвойств.Колонки.Добавить("Значение");
НеИспользуетсяКачествоТоваров = Не ПолучитьФункциональнуюОпцию("ИспользоватьКачествоТоваров");
Для каждого СтрокаТаблицы Из ЗагружаемыеДанные Цикл
ОбъектСопоставленияЗаполнен = ЗначениеЗаполнено(СтрокаТаблицы.ОбъектСопоставления);
Если (ОбъектСопоставленияЗаполнен
И ПараметрыЗагрузки.ОбновлятьСуществующие = 0)
ИЛИ (НЕ ОбъектСопоставленияЗаполнен
И ПараметрыЗагрузки.СоздаватьНовые = 0) Тогда
СтрокаТаблицы.РезультатСопоставленияСтроки = "Пропущен";
Продолжить;
КонецЕсли;
УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Истина);
НачатьТранзакцию();
Попытка
Если ОбъектСопоставленияЗаполнен Тогда
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("Справочник.Номенклатура");
ЭлементБлокировки.УстановитьЗначение("Ссылка", СтрокаТаблицы.ОбъектСопоставления);
Блокировка.Заблокировать();
ЭлементСправочника = СтрокаТаблицы.ОбъектСопоставления.ПолучитьОбъект();
Если ЭлементСправочника = Неопределено Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Номенклатура с наименованием %1 была сопоставлена, но больше не существует.'"), СтрокаТаблицы.Наименование);
КонецЕсли;
СтрокаТаблицы.РезультатСопоставленияСтроки = "Обновлен";
Иначе
ЭлементСправочника = СоздатьЭлемент();
СтрокаТаблицы.РезультатСопоставленияСтроки = "Создан";
КонецЕсли;
ЭлементСправочника.Наименование = СтрокаТаблицы.Наименование;
ТаблицаСвойств.Очистить();
Для Каждого Колонка Из ЗагружаемыеДанные.Колонки Цикл
ИмяРеквизита = Колонка.Имя;
Если ИмяРеквизита = "Идентификатор"
Или ИмяРеквизита = "ОбъектСопоставления"
Или ИмяРеквизита = "РезультатСопоставленияСтроки"
Или ИмяРеквизита = "СписокНеоднозначностей"
Или ИмяРеквизита = "ОписаниеОшибки"Тогда
Продолжить;
КонецЕсли;
Если СтрНачинаетсяС(ИмяРеквизита, "ДополнительныйРеквизит_") Тогда
ДобавитьЗначениеСвойства(ТаблицаСвойств, Свойства, "ДополнительныйРеквизит_", ИмяРеквизита, СтрокаТаблицы[ИмяРеквизита]);
ИначеЕсли СтрНачинаетсяС(ИмяРеквизита, "Свойство_") Тогда
ДобавитьЗначениеСвойства(ТаблицаСвойств, Свойства, "Свойство_", ИмяРеквизита, СтрокаТаблицы[ИмяРеквизита]);
Иначе
ЗначениеЯчейки = СтрокаТаблицы[ИмяРеквизита];
Если ЗначениеЗаполнено(ЗначениеЯчейки) Тогда
ЭлементСправочника[ИмяРеквизита] = ЗначениеЯчейки;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если НеИспользуетсяКачествоТоваров Тогда
ЭлементСправочника.Качество = ПредопределенноеЗначение("Перечисление.ГрадацииКачества.Новый");
КонецЕсли;
МультиязычностьСервер.ПередЗаписьюНаСервере(ЭлементСправочника);
ПараметрыСеанса.ИнтерактивнаяПроверкаЗаполненияСвойств = Истина;
Если НЕ ЭлементСправочника.ПроверитьЗаполнение() Тогда
СтрокаТаблицы.РезультатСопоставленияСтроки = "Пропущен";
СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
Если СообщенияПользователю.Количество()>0 Тогда
ТекстСообщений = "";
Для каждого СообщениеПользователю Из СообщенияПользователю Цикл
ТекстСообщений = ТекстСообщений + СообщениеПользователю.Текст + Символы.ПС;
КонецЦикла;
СтрокаТаблицы.ОписаниеОшибки = ТекстСообщений;
КонецЕсли;
ОтменитьТранзакцию();
Иначе
ЭлементСправочника.Записать();
Если ТаблицаСвойств.Количество() > 0 И ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда
МодульУправлениеСвойствами = ОбщегоНазначения.ОбщийМодуль("УправлениеСвойствами");
МодульУправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ЭлементСправочника.Ссылка, ТаблицаСвойств);
КонецЕсли;
СтрокаТаблицы.ОбъектСопоставления = ЭлементСправочника.Ссылка;
УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Ложь);
ПараметрыСеанса.ИнтерактивнаяПроверкаЗаполненияСвойств = Ложь;
ЗафиксироватьТранзакцию();
КонецЕсли;
Исключение
ОтменитьТранзакцию();
УправлениеДоступом.ОтключитьОбновлениеКлючейДоступа(Ложь, Ложь);
ПараметрыСеанса.ИнтерактивнаяПроверкаЗаполненияСвойств = Ложь;
Причина = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
СтрокаТаблицы.РезультатСопоставленияСтроки = "Пропущен";
СтрокаТаблицы.ОписаниеОшибки = НСтр("ru = 'Невозможна запись данных по причине:'") + Символы.ПС + Причина;
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтение
|ГДЕ ИСТИНА
|;
|РазрешитьИзменениеЕслиРазрешеноЧтение
|ГДЕ
| ЭтоГруппа ИЛИ
| ЗначениеРазрешено(Ссылка)";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ВидФормы = "ФормаОбъекта" Тогда
Если Параметры.Свойство("ЗначениеКопирования") Тогда
ОбъектКопирования = Параметры.ЗначениеКопирования;
Если Не ОбъектКопирования.ЭтоГруппа Тогда
СтандартнаяОбработка = Ложь;
Параметры = Новый Структура("ЗначениеКопирования", ОбъектКопирования);
ВыбраннаяФорма = "ФормаЭлемента";
КонецЕсли;
ИначеЕсли Параметры.Свойство("РежимВыбора") Тогда
Если Параметры.РежимВыбора
И (Не Параметры.Свойство("ЭтоГруппа")
Или Не Параметры.ЭтоГруппа) Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаЭлемента";
КонецЕсли;
КонецЕсли;
ИначеЕсли ВидФормы = "ФормаВыбора" Тогда
ВыборГруппИЭлементов = Неопределено;
Если Параметры.Свойство("ВыборГруппИЭлементов",ВыборГруппИЭлементов) Тогда
Если ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.ГруппыИЭлементы Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаВыбораГруппИЭлементов";
КонецЕсли;
Иначе
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаВыбораГруппИЭлементов";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
НоменклатураВызовСервера.НоменклатураОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка);
КонецПроцедуры
#КонецЕсли
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
МультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка);
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
МультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "КарточкаНоменклатуры";
КомандаПечати.Представление = НСтр("ru = 'Печать'");
КомандаПечати.ЗаголовокФормы = НСтр("ru = 'Карточка номенклатуры'");
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КарточкаНоменклатуры") Тогда
КоличествоОбъектов = МассивОбъектов.Количество();
Для Индекс = 0 По КоличествоОбъектов - 1 Цикл
ТекущийИндекс = КоличествоОбъектов - Индекс - 1;
ТекущийОбъект = МассивОбъектов[ТекущийИндекс];
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийОбъект, "ЭтоГруппа") Тогда
МассивОбъектов.Удалить(ТекущийИндекс);
КонецЕсли;
КонецЦикла;
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"КарточкаНоменклатуры",
?(МассивОбъектов.Количество() = 1, МассивОбъектов[0], НСтр("ru = 'Список номенклатуры'")),
СформироватьПечатнуюФормуКарточкиНоменклатуры(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФормуКарточкиНоменклатуры(МассивОбъектов, ОбъектыПечати, ПараметрыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КАРТОЧКАНОМЕНКЛАТУРЫ";
ПерваяКарточка = Истина;
Для Каждого Номенклатура Из МассивОбъектов Цикл
Если ПерваяКарточка Тогда
ПерваяКарточка = Ложь;
Иначе
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабличныйДокумент.Вывести(
ТабличныйДокументКарточкиНоменклатуры(Номенклатура, Неопределено, Истина));
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
#Область КарточкаНоменклатуры
Функция ТабличныйДокументКарточкиНоменклатуры(Номенклатура, НастройкиВидимостиИЗаголовков, ДляПечати) Экспорт
Перем Заголовок;
Если НастройкиВидимостиИЗаголовков = Неопределено Тогда
НастройкиВидимостиИЗаголовков = НастройкиВидимостиИЗаголовков(Номенклатура);
КонецЕсли;
Объект = Неопределено;
Если ТипЗнч(Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда
Объект = Номенклатура.ПолучитьОбъект();
ИначеЕсли ТипЗнч(Номенклатура) = Тип("СправочникОбъект.Номенклатура")
Или ТипЗнч(Номенклатура) = Тип("ДанныеФормыСтруктура") Тогда
Объект = Номенклатура;
Иначе
Возврат Новый ТабличныйДокумент;
КонецЕсли;
ТабличныйДокументКарточка = Новый ТабличныйДокумент;
СтруктураВидимости = НастройкиВидимостиИЗаголовков.ВидимостьЭлементов;
СтруктураЗаголовков = НастройкиВидимостиИЗаголовков.ЗаголовкиЭлементов;
Макет = ПолучитьМакет("ПФ_MXL_КарточкаНоменклатуры");
#Область Шапка
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, Объект);
Если Не ЗначениеЗаполнено(Объект.Наименование) Тогда
ОбластьШапка.Параметры.Наименование = ТекстЗначенияНеЗаполнен("Наименование");
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьШапка.Параметры.РасшифровкаНаименование = "Наименование";
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.НаименованиеПолное) Тогда
ОбластьШапка.Параметры.НаименованиеПолное = ТекстЗначенияНеЗаполнен("НаименованиеПолное");
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьШапка.Параметры.РасшифровкаНаименованиеПолное = "НаименованиеПолное";
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Артикул) Тогда
ОбластьШапка.Параметры.Артикул = ТекстЗначенияНеЗаполнен("Артикул");
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьШапка.Параметры.РасшифровкаАртикул = "Артикул";
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Код) Тогда
ОбластьШапка.Параметры.Код = ТекстЗначенияНеЗаполнен("Код");
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьШапка.Параметры.РасшифровкаКод = "Код";
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами", СтруктураВидимости) Тогда
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами", Заголовок) Тогда
ОбластьШапка.Параметры.ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами = Строка(Заголовок);
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьШапка.Параметры.РасшифровкаГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами = "ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами";
КонецЕсли;
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиШтрихкодыНоменклатуры", СтруктураВидимости) Тогда
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиШтрихкодыНоменклатуры", Заголовок) Тогда
ОбластьШапка.Параметры.ГиперссылкаПерейтиШтрихкодыНоменклатуры = Строка(Заголовок);
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьШапка.Параметры.РасшифровкаГиперссылкаПерейтиШтрихкодыНоменклатуры = "ГиперссылкаПерейтиШтрихкодыНоменклатуры";
КонецЕсли;
КонецЕсли;
ТабличныйДокументКарточка.Присоединить(ОбластьШапка);
#КонецОбласти
ТабличныйДокументКолонки = Новый ТабличныйДокумент;
#Область ТабличныйДокументЛево
ТабличныйДокументЛево = Новый ТабличныйДокумент;
#Область Описание
Если ГлаваВидна("Описание", СтруктураВидимости) Тогда
ОбластьОписаниеЗаголовок = Макет.ПолучитьОбласть("ОписаниеЗаголовок");
ТабличныйДокументЛево.Вывести(ОбластьОписаниеЗаголовок);
Если ЗначениеЗаполнено(Объект.ФайлКартинки) Тогда
ОбластьОписаниеКартинка = Макет.ПолучитьОбласть("ОписаниеКартинка");
Попытка
УстановитьПривилегированныйРежим(Истина);
КартинкаНоменклатуры = РаботаСФайлами.ДвоичныеДанныеФайла(Объект.ФайлКартинки);
УстановитьПривилегированныйРежим(Ложь);
Исключение
КартинкаНоменклатуры = Неопределено;
КонецПопытки;
Если ЗначениеЗаполнено(КартинкаНоменклатуры) Тогда
ОбластьКартинка = ОбластьОписаниеКартинка.Области.АдресКартинки;
Если ТипЗнч(КартинкаНоменклатуры) = Тип("Картинка") Тогда
ОбластьКартинка.Картинка = КартинкаНоменклатуры;
ИначеЕсли ТипЗнч(КартинкаНоменклатуры) = Тип("ДвоичныеДанные") Тогда
КартинкаКарточки = Новый Картинка(КартинкаНоменклатуры);
ОбластьКартинка.Картинка = ?(КартинкаКарточки.Формат() = ФорматКартинки.НеизвестныйФормат,
Неопределено,
КартинкаКарточки);
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьОписаниеКартинка.Параметры.Расшифровка = "ФайлКартинки";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьОписаниеКартинка);
Иначе
ОписаниеКартинкиОшибка = Макет.ПолучитьОбласть("ФайлКартинкиСтрокаОшибка");
Если Не ДляПечати Тогда
ОписаниеКартинкиОшибка.Параметры.Расшифровка = "ФайлКартинки";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОписаниеКартинкиОшибка);
КонецЕсли;
Иначе
ОписаниеКартинкиНет = Макет.ПолучитьОбласть("ФайлКартинкиСтрока");
Если Не ДляПечати Тогда
ОписаниеКартинкиНет.Параметры.Расшифровка = "ФайлКартинки";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОписаниеКартинкиНет);
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Описание";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ОписаниеСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ОписаниеРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.Описание;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
Если РазделВиден("ФайлОписанияДляСайта", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ФайлОписанияДляСайта";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ФайлОписанияДляСайтаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ФайлОписанияДляСайтаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ФайлОписанияДляСайта;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиФайлы", СтруктураВидимости) Тогда
ОбластьОписаниеФайлыСтрока = Макет.ПолучитьОбласть("ФайлыСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиФайлы", Заголовок) Тогда
ОбластьОписаниеФайлыСтрока.Параметры.Файлы = Строка(Заголовок);
Если Не ДляПечати Тогда
ОбластьОписаниеФайлыСтрока.Параметры.Расшифровка = "ГиперссылкаПерейтиФайлы";
КонецЕсли;
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьОписаниеФайлыСтрока);
КонецЕсли;
Если РазделВиден("ВестиУчетСертификатовНоменклатуры", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ВестиУчетСертификатовНоменклатурыСтрока");
Картинка = КартинкаФлагаПоЗначению(Объект.ВестиУчетСертификатовНоменклатуры);
Область.Область("ВестиУчетСертификатовНоменклатурыФлаг").Картинка = Картинка;
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиСертификатыНоменклатуры", Заголовок) Тогда
Область.Параметры.ГиперссылкаПерейтиСертификатыНоменклатуры = Строка(Заголовок);
Если РазделВиден("ГиперссылкаПерейтиСертификатыНоменклатурыВнимание", СтруктураВидимости) Тогда
Область.Область("ГиперссылкаПерейтиСертификатыНоменклатурыВнимание").Картинка = БиблиотекаКартинок.Внимание16;
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.РасшифровкаГиперссылки = "ГиперссылкаПерейтиСертификатыНоменклатуры";
КонецЕсли;
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ВестиУчетСертификатовНоменклатуры";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
КонецЕсли;
#КонецОбласти
#Область ДополнительныеРеквизиты
ТекстЗапроса =
"ВЫБРАТЬ
| НаборыДопРеквизитов.НомерСтроки КАК НомерСтрокиДляСортировки,
| ЛОЖЬ КАК ОбщееСвойство,
| ВидыНоменклатуры.НаборСвойств КАК НаборСвойств,
| НаборыДопРеквизитов.Свойство КАК Свойство,
| НаборыДопРеквизитов.Свойство.Имя КАК ИмяРеквизита,
| НаборыДопРеквизитов.Свойство.Заголовок КАК ПредставлениеРеквизита,
| ДопРеквизитыНоменклатуры.Значение КАК Значение
|ПОМЕСТИТЬ ДопРеквизитыНоменклатуры
|ИЗ
| Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДопРеквизитов
| ПО ВидыНоменклатуры.НаборСвойств = НаборыДопРеквизитов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизитыНоменклатуры
| ПО ДопРеквизитыНоменклатуры.Ссылка = &Номенклатура
| И НаборыДопРеквизитов.Свойство = ДопРеквизитыНоменклатуры.Свойство
|ГДЕ
| ВидыНоменклатуры.Ссылка В(&ВидНоменклатуры)
| И НЕ НаборыДопРеквизитов.Свойство.ЭтоДополнительноеСведение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НаборыДопРеквизитов.НомерСтроки КАК НомерСтрокиДляСортировки,
| ИСТИНА КАК ОбщееСвойство,
| &ОбщийНабор КАК НаборСвойств,
| НаборыДопРеквизитов.Свойство КАК Свойство,
| НаборыДопРеквизитов.Свойство.Имя КАК ИмяРеквизита,
| НаборыДопРеквизитов.Свойство.Заголовок КАК ПредставлениеРеквизита,
| ДопРеквизитыНоменклатуры.Значение КАК Значение
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДопРеквизитов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизитыНоменклатуры
| ПО ДопРеквизитыНоменклатуры.Ссылка = &Номенклатура
| И НаборыДопРеквизитов.Свойство = ДопРеквизитыНоменклатуры.Свойство
|ГДЕ
| НаборыДопРеквизитов.Ссылка = &ОбщийНабор
| И НЕ НаборыДопРеквизитов.Свойство.ЭтоДополнительноеСведение
|
|ИНДЕКСИРОВАТЬ ПО
| Свойство
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗависимостиДопРеквизитов.Ссылка КАК Свойство,
| ЗависимостиДопРеквизитов.Реквизит КАК Реквизит,
| ЗависимостиДопРеквизитов.Условие КАК Условие,
| ЗависимостиДопРеквизитов.Значение КАК Значение
|ПОМЕСТИТЬ УсловияВидимостиДопРеквизтов
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ЗависимостиДопРеквизитов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДопРеквизитыНоменклатуры КАК ДопРеквизитыНоменклатуры
| ПО ЗависимостиДопРеквизитов.Ссылка = ДопРеквизитыНоменклатуры.Свойство
|
|ГДЕ
| ЗависимостиДопРеквизитов.НаборСвойств В(&НаборВида, &ОбщийНабор)
| И ЗависимостиДопРеквизитов.ЗависимоеСвойство ПОДОБНО ""Виден""";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&НаборВида",
"ВЫРАЗИТЬ(&ВидНоменклатуры КАК Справочник.ВидыНоменклатуры).НаборСвойств");
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ВидНоменклатуры", Объект.ВидНоменклатуры);
Запрос.УстановитьПараметр("Номенклатура", Объект.Ссылка);
Запрос.УстановитьПараметр("ОбщийНабор", УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура_Общие"));
РезультатЗапроса = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
ДополнительныеРеквизиты = РезультатЗапроса[0].Выгрузить();
УсловияВидимостиРеквизитов = РезультатЗапроса[1].Выгрузить();
Если ГлаваВидна("ДополнительныеРеквизиты", СтруктураВидимости, ДополнительныеРеквизиты.Количество()) Тогда
ОбластьЗаголовок = Макет.ПолучитьОбласть("ДополнительныеРеквизитыЗаголовок");
ТабличныйДокументЛево.Вывести(ОбластьЗаголовок);
ДополнительныеРеквизиты.Сортировать("ОбщееСвойство Убыв, НомерСтрокиДляСортировки Возр");
УсловияВидимостиРеквизитов.Индексы.Добавить("Свойство");
Для Каждого ДопРеквизит Из ДополнительныеРеквизиты Цикл
ЗначениеРеквизита = ДопРеквизит.Значение;
Если Не ЗначениеЗаполнено(ЗначениеРеквизита)
И ДопРеквизит.Свойство.ТипЗначения = Новый ОписаниеТипов("Булево") Тогда
ЗначениеРеквизита = Ложь;
КонецЕсли;
ИмяЭлементаДопРеквизита = "ДополнительныйРеквизитЗначение_"
+ СтрЗаменить(ВРег(Строка(ДопРеквизит.НаборСвойств.УникальныйИдентификатор())), "-", "x")
+ "_"
+ СтрЗаменить(ВРег(Строка(ДопРеквизит.Свойство.УникальныйИдентификатор())), "-", "x");
ВыводитьРеквизит = ВидимостьДополнительногоРеквизита(Объект,
ДопРеквизит,
ДополнительныеРеквизиты,
УсловияВидимостиРеквизитов)
И РазделВиден(ИмяЭлементаДопРеквизита, СтруктураВидимости);
Если ВыводитьРеквизит Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ДополнительныеРеквизиты";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ДополнительныеРеквизитыСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ДополнительныеРеквизитыРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = ЗначениеРеквизита;
ПараметрыВыводаРаздела.ТекстЗаголовкаРеквизита = ДопРеквизит.ПредставлениеРеквизита;
ПараметрыВыводаРаздела.НовоеИмяРаздела = ИмяЭлементаДопРеквизита;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
КонецЦикла;
КонецЕсли;
#КонецОбласти
#Область СведенияОПроизводителе
Если ГлаваВидна("СведенияОПроизводителе", СтруктураВидимости) Тогда
ОбластьОписаниеЗаголовок = Макет.ПолучитьОбласть("СведенияОПроизводителеЗаголовок");
ТабличныйДокументЛево.Вывести(ОбластьОписаниеЗаголовок);
Если РазделВиден("ПроизводительИмпортерКонтрагент", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ПроизводительИмпортерКонтрагент";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ПроизводительИмпортерКонтрагентСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ПроизводительИмпортерКонтрагентРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ПроизводительИмпортерКонтрагент;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Производитель", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Производитель";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ПроизводительСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ПроизводительРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.Производитель;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Марка", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Марка";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "МаркаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "МаркаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.Марка;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("СтранаПроисхождения", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "СтранаПроисхождения";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "СтранаПроисхожденияСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "СтранаПроисхожденияРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.СтранаПроисхождения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Принципал", СтруктураВидимости)
Или РазделВиден("Контрагент", СтруктураВидимости)
Или РазделВиден ("ГиперссылкаПерейтиСоглашения", СтруктураВидимости) Тогда
ОбластьРеализацияУслугиПоАгентскомуДоговору = Макет.ПолучитьОбласть("РеализацияУслугиПоАгентскомуДоговору");
Если СтруктураЗаголовков.Свойство("ГруппаАгентскиеУслуги", Заголовок) Тогда
ОбластьРеализацияУслугиПоАгентскомуДоговору.Параметры.РеализацияУслугиПоАгентскомуДоговору = Заголовок;
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьРеализацияУслугиПоАгентскомуДоговору.Параметры.Расшифровка = "ГруппаАгентскиеУслуги";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьРеализацияУслугиПоАгентскомуДоговору);
КонецЕсли;
Если РазделВиден("Принципал", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Принципал";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ПринципалСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ПринципалРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.Принципал;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Контрагент", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Контрагент";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "КонтрагентСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "КонтрагентРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.Контрагент;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСоглашения", СтруктураВидимости) Тогда
ОбластьГиперссылкаПерейтиСоглашения = Макет.ПолучитьОбласть("ГиперссылкаПерейтиСоглашенияСтрока");
ОбластьГиперссылкаПерейтиСоглашения.Параметры.ГиперссылкаПерейтиСоглашения = Строка(
СтруктураЗаголовков.ГиперссылкаПерейтиСоглашения.Заголовок);
Если Не ДляПечати Тогда
РасшифровкаСоглашения = Новый Структура;
РасшифровкаСоглашения.Вставить("ИмяЭлемента", "ГиперссылкаПерейтиСоглашения");
РасшифровкаСоглашения.Вставить("Гиперссылка", СтруктураЗаголовков.ГиперссылкаПерейтиСоглашения.Гиперссылка);
ОбластьГиперссылкаПерейтиСоглашения.Параметры.Расшифровка = РасшифровкаСоглашения;
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьГиперссылкаПерейтиСоглашения);
КонецЕсли;
КонецЕсли;
#КонецОбласти
#Область ПланированиеИМаркетинг
Если ГлаваВидна("ПланированиеИМаркетинг", СтруктураВидимости) Тогда
ОбластьОписаниеЗаголовок = Макет.ПолучитьОбласть("ПланированиеИМаркетингЗаголовок");
ТабличныйДокументЛево.Вывести(ОбластьОписаниеЗаголовок);
Если РазделВиден("ТоварнаяКатегория", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ТоварнаяКатегория";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ТоварнаяКатегорияСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ТоварнаяКатегорияРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ТоварнаяКатегория;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("КоллекцияНоменклатуры", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "КоллекцияНоменклатуры";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "КоллекцияНоменклатурыСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "КоллекцияНоменклатурыРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.КоллекцияНоменклатуры;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("СезоннаяГруппа", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "СезоннаяГруппа";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "СезоннаяГруппаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "СезоннаяГруппаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.СезоннаяГруппа;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("РейтингПродаж", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "РейтингПродаж";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "РейтингПродажСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "РейтингПродажРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.РейтингПродаж;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСовместныеПродажи", СтруктураВидимости) Тогда
ОбластьГиперссылкаПерейтиСовместныеПродажиСтрока = Макет.ПолучитьОбласть("ГиперссылкаПерейтиСовместныеПродажиСтрока");
Если Не ДляПечати Тогда
ОбластьГиперссылкаПерейтиСовместныеПродажиСтрока.Параметры.Расшифровка = "ГиперссылкаПерейтиСовместныеПродажи";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьГиперссылкаПерейтиСовместныеПродажиСтрока);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСегменты", СтруктураВидимости) Тогда
ОбластьГиперссылкаПерейтиСегменты = Макет.ПолучитьОбласть("ГиперссылкаПерейтиСегментыСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиСегменты", Заголовок) Тогда
ОбластьГиперссылкаПерейтиСегменты.Параметры.ГиперссылкаПерейтиСегменты = Строка(Заголовок);
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьГиперссылкаПерейтиСегменты.Параметры.Расшифровка = "ГиперссылкаПерейтиСегменты";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьГиперссылкаПерейтиСегменты);
КонецЕсли;
КонецЕсли;
#КонецОбласти
#Область ОбеспечениеИПроизводство
Если ГлаваВидна("ОбеспечениеИПроизводство", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ОбеспечениеИПроизводствоЗаголовок");
Если СтруктураЗаголовков.Свойство("ДекорацияЗаголовокОбеспечение", Заголовок) Тогда
Область.Параметры.ОбеспечениеПроизводство = Заголовок;
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
Если РазделВиден("ОбособленнаяЗакупкаПродажа", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ОбособленнаяЗакупкаПродажаСтрока");
Картинка = КартинкаФлагаПоЗначению(Объект.ОбособленнаяЗакупкаПродажа);
Область.Область("ОбособленнаяЗакупкаПродажаФлаг").Картинка = Картинка;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ОбособленнаяЗакупкаПродажа";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
Если РазделВиден("СпособОбеспеченияПотребностей", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "СпособОбеспеченияПотребностей";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "СпособОбеспеченияПотребностейСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "СпособОбеспеченияПотребностейРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.СпособОбеспеченияПотребностей;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("СхемаОбеспечения", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "СхемаОбеспечения";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "СхемаОбеспеченияСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "СхемаОбеспеченияРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.СхемаОбеспечения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиВариантыКомплектации", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиВариантыКомплектацииСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиВариантыКомплектации", Заголовок) Тогда
Область.Параметры.ГиперссылкаПерейтиВариантыКомплектации = Строка(Заголовок);
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиВариантыКомплектации";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиНастройкаПоддержанияЗапасов", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиНастройкаПоддержанияЗапасовСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиНастройкаПоддержанияЗапасов";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностейСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводство", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводствоСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводство";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиПроизводство", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиПроизводствоСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиПроизводство";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
КонецЕсли;
#КонецОбласти
#Область Цены
Если ГлаваВидна("Цены", СтруктураВидимости) Тогда
ОбластьОписаниеЗаголовок = Макет.ПолучитьОбласть("ЦеныЗаголовок");
ТабличныйДокументЛево.Вывести(ОбластьОписаниеЗаголовок);
Если РазделВиден("ЦеноваяГруппа", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ЦеноваяГруппа";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ЦеноваяГруппаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ЦеноваяГруппаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ЦеноваяГруппа;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиПрайсЛистКомпании", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ПрайсЛистКомпанииСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиПрайсЛистКомпании";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиПрайсЛистыПоставщиков", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ПрайсЛистыПоставщиковСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиПрайсЛистыПоставщиков";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиИсторияИзмененияЦенКомпании", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ИсторияИзмененияЦенКомпанииСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиИсторияИзмененияЦенКомпании";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиков", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ИсторияИзмененияЦенПоставщиковСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиков";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
КонецЕсли;
КонецЕсли;
#КонецОбласти
#Область ПечатьЭтикетокИЦенников
Если ГлаваВидна("ПечатьЭтикетокИЦенников", СтруктураВидимости) Тогда
ВидНоменклатурыШаблоны = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.ВидНоменклатуры, "ШаблонЦенника, ШаблонЭтикетки");
ОбластьОписаниеЗаголовок = Макет.ПолучитьОбласть("ПечатьЭтикетокИЦенниковЗаголовок");
ТабличныйДокументЛево.Вывести(ОбластьОписаниеЗаголовок);
Область = Макет.ПолучитьОбласть("ИспользоватьИндивидуальныйШаблонЭтикеткиСтрока");
Если Объект.ИспользоватьИндивидуальныйШаблонЭтикетки Тогда
Область.Параметры.ИспользоватьИндивидуальныйШаблонЭтикетки = НСтр("ru = 'Индивидуальный шаблон этикетки:'");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ИспользоватьИндивидуальныйШаблонЭтикетки";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
ОбластьЭтикетки = Макет.ПолучитьОбласть("ШаблонЭтикеткиСтрока");
ОбластьЭтикетки.Параметры.ШаблонЭтикетки = Объект.ШаблонЭтикетки;
Если Не ДляПечати Тогда
ОбластьЭтикетки.Параметры.Расшифровка = "ШаблонЭтикетки";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьЭтикетки);
Иначе
Область.Параметры.ИспользоватьИндивидуальныйШаблонЭтикетки = НСтр("ru = 'Используется общий для вида шаблон этикетки'");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ИспользоватьИндивидуальныйШаблонЭтикетки";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
ОбластьЭтикетки = Макет.ПолучитьОбласть("ШаблонЭтикеткиСтрока");
Если ЗначениеЗаполнено(ВидНоменклатурыШаблоны.ШаблонЭтикетки) Тогда
ОбластьЭтикетки.Параметры.ШаблонЭтикетки = ВидНоменклатурыШаблоны.ШаблонЭтикетки;
Иначе
ОбластьЭтикетки.Параметры.ШаблонЭтикетки = НСтр("ru = '<не указан>'");
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьЭтикетки.Параметры.Расшифровка = "ШаблонЭтикетки";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьЭтикетки);
КонецЕсли;
Область = Макет.ПолучитьОбласть("ИспользоватьИндивидуальныйШаблонЦенникаСтрока");
Если Объект.ИспользоватьИндивидуальныйШаблонЦенника Тогда
Область.Параметры.ИспользоватьИндивидуальныйШаблонЦенника = НСтр("ru = 'Индивидуальный шаблон ценника:'");
Область.Параметры.Расшифровка = "ИспользоватьИндивидуальныйШаблонЦенника";
ТабличныйДокументЛево.Вывести(Область);
ОбластьЦенника = Макет.ПолучитьОбласть("ШаблонЦенникаСтрока");
ОбластьЦенника.Параметры.ШаблонЦенника = Объект.ШаблонЦенника;
Если Не ДляПечати Тогда
ОбластьЦенника.Параметры.Расшифровка = "ШаблонЦенника";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьЦенника);
Иначе
Область.Параметры.ИспользоватьИндивидуальныйШаблонЦенника = НСтр("ru = 'Используется общий для вида шаблон ценника'");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ИспользоватьИндивидуальныйШаблонЦенника";
КонецЕсли;
ТабличныйДокументЛево.Вывести(Область);
ОбластьЦенника = Макет.ПолучитьОбласть("ШаблонЦенникаСтрока");
Если ЗначениеЗаполнено(ВидНоменклатурыШаблоны.ШаблонЦенника) Тогда
ОбластьЦенника.Параметры.ШаблонЦенника = ВидНоменклатурыШаблоны.ШаблонЦенника;
Иначе
ОбластьЦенника.Параметры.ШаблонЦенника = НСтр("ru = '<не указан>'");
КонецЕсли;
Если Не ДляПечати Тогда
ОбластьЦенника.Параметры.Расшифровка = "ШаблонЦенника";
КонецЕсли;
ТабличныйДокументЛево.Вывести(ОбластьЦенника);
КонецЕсли;
КонецЕсли;
#КонецОбласти
ТабличныйДокументКолонки.Присоединить(ТабличныйДокументЛево);
#КонецОбласти
#Область ТабличныйДокументПраво
ТабличныйДокументПраво = Новый ТабличныйДокумент;
#Область ОсновныеПараметрыУчета
Если ГлаваВидна("ОсновныеПараметрыУчета", СтруктураВидимости) Тогда
ОбластьЗаголовок = Макет.ПолучитьОбласть("ОсновныеПараметрыУчетаЗаголовок");
ТабличныйДокументПраво.Вывести(ОбластьЗаголовок);
Если РазделВиден("Родитель", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Родитель";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "РодительСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "РодительРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.Родитель;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГруппаДоступа", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ГруппаДоступа";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ГруппаДоступаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ГруппаДоступаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ГруппаДоступа;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ВидНоменклатуры", СтруктураВидимости) Или РазделВиден("ВидНоменклатурыПереключатель", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ВидНоменклатуры";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ВидНоменклатурыСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ВидНоменклатурыРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ВидНоменклатуры;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ТипНоменклатуры", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ТипНоменклатуры";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ТипНоменклатурыСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ТипНоменклатурыРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ТипНоменклатуры;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСоставНабора", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиСоставНабораСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиСоставНабора", Заголовок) Тогда
Область.Параметры.ГиперссылкаПерейтиСоставНабора = Строка(Заголовок);
Если РазделВиден("ГиперссылкаПерейтиСоставНабораВнимание", СтруктураВидимости) Тогда
Область.Область("ГиперссылкаПерейтиСоставНабораВнимание").Картинка = БиблиотекаКартинок.Внимание16;
КонецЕсли;
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиСоставНабора";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
Если РазделВиден("ИспользованиеХарактеристик", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ИспользованиеХарактеристик";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ИспользованиеХарактеристикСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ИспользованиеХарактеристикРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ИспользованиеХарактеристик;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиХарактеристикиНоменклатуры", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиХарактеристикиНоменклатурыСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиХарактеристикиНоменклатуры", Заголовок) Тогда
Область.Параметры.ГиперссылкаПерейтиХарактеристикиНоменклатуры = Строка(Заголовок);
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиХарактеристикиНоменклатуры";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
Если РазделВиден("НастройкаИспользованияСерий", СтруктураВидимости) Тогда
НастройкаИспользованияСерий = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ВидНоменклатуры, "НастройкаИспользованияСерий");
Если Не ЗначениеЗаполнено(НастройкаИспользованияСерий) Тогда
НастройкаИспользованияСерийСтрока = НСтр("ru = 'Не используются'");
Иначе
НастройкаИспользованияСерийСтрока = Строка(НастройкаИспользованияСерий);
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "НастройкаИспользованияСерий";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "НастройкаИспользованияСерийСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "НастройкаИспользованияСерийРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = НастройкаИспользованияСерийСтрока;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ВариантОформленияПродажи", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ВариантОформленияПродажи";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ВариантОформленияПродажиСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ВариантОформленияПродажиРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ВариантОформленияПродажи;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("СтавкаНДС", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "СтавкаНДС";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "СтавкаНДССтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "СтавкаНДСРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.СтавкаНДС;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСтавкиНДСНоменклатуры", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиСтавкиНДСНоменклатурыСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиСтавкиНДСНоменклатуры", Заголовок) Тогда
Область.Параметры.ГиперссылкаПерейтиСтавкиНДСНоменклатуры = Строка(Заголовок);
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиСтавкиНДСНоменклатуры";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
Если Справочники.Номенклатура.РазделВиден("КодТНВЭД", СтруктураВидимости) Тогда
СтрокаТНВЭД = "";
Если ЗначениеЗаполнено(Объект.КодТНВЭД) Тогда
Шаблон = НСтр("ru = '%Код% (%Наименование%)'");
Наименование = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КодТНВЭД, "Наименование");
СтрокаТНВЭД = СтрЗаменить(Шаблон, "%Код%", Объект.КодТНВЭД);
СтрокаТНВЭД = СтрЗаменить(СтрокаТНВЭД, "%Наименование%", Наименование);
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "КодТНВЭД";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "КодТНВЭДСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "КодТНВЭДРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаТНВЭД;
Справочники.Номенклатура.ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати,ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Качество", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Качество";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "КачествоСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "КачествоРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.Качество;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиТоварыДругогоКачества", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиТоварыДругогоКачестваСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиТоварыДругогоКачества", Заголовок) Тогда
Область.Параметры.ГиперссылкаПерейтиТоварыДругогоКачества = Строка(Заголовок);
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиТоварыДругогоКачества";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
КонецЕсли;
#КонецОбласти
#Область ЕдиницыИзмеренияИОбластьХранения
Если ГлаваВидна("ЕдиницыИзмеренияИОбластьХранения", СтруктураВидимости) Тогда
ОбластьЗаголовок = Макет.ПолучитьОбласть("ЕдиницыИзмеренияИОбластьХраненияЗаголовок");
ТабличныйДокументПраво.Вывести(ОбластьЗаголовок);
Если РазделВиден("ИспользоватьУпаковки", СтруктураВидимости) Тогда
Если Объект.ИспользоватьУпаковки Тогда
Если Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры Тогда
Набор = НСтр("ru = 'Индивидуальный набор'");
Иначе
Набор = Объект.НаборУпаковок;
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ИспользоватьУпаковки";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ИспользоватьУпаковкиСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ИспользоватьУпаковкиРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Набор;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
Иначе
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ИспользоватьУпаковки";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ИспользоватьУпаковкиСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ИспользоватьУпаковкиРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = НСтр("ru = 'не используются'");
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиУпаковкиНоменклатуры", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиУпаковкиНоменклатурыСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиУпаковкиНоменклатуры", Заголовок) Тогда
Область.Параметры.ГиперссылкаПерейтиУпаковкиНоменклатуры = Строка(Заголовок);
Если РазделВиден("ГиперссылкаПерейтиУпаковкиНоменклатурыВнимание", СтруктураВидимости) Тогда
Область.Область("ГиперссылкаПерейтиУпаковкиНоменклатурыВнимание").Картинка = БиблиотекаКартинок.Внимание16;
КонецЕсли;
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиУпаковкиНоменклатуры";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиУпаковкиНабора", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиУпаковкиНабораСтрока");
Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиУпаковкиНабора", Заголовок) Тогда
Область.Параметры.ГиперссылкаПерейтиУпаковкиНабора = Строка(Заголовок);
Если РазделВиден("ГиперссылкаПерейтиУпаковкиНабораВнимание", СтруктураВидимости) Тогда
Область.Область("ГиперссылкаПерейтиУпаковкиНабораВнимание").Картинка = БиблиотекаКартинок.Внимание16;
КонецЕсли;
КонецЕсли;
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиУпаковкиНабора";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиПрогнозыРасходаУпаковок", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиПрогнозыРасходаУпаковокСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиПрогнозыРасходаУпаковок";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
Если РазделВиден("ЕдиницаИзмерения", СтруктураВидимости) Тогда
СтрокаЗаполнения = НСтр("ru = '%ЕдиницаИзмерения%%Тара%'");
Если ЗначениеЗаполнено(Объект.ЕдиницаИзмерения) Тогда
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ЕдиницаИзмерения);
Иначе
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", НСтр("ru = '<не указана>'"));
КонецЕсли;
Если Объект.ПоставляетсяВМногооборотнойТаре Тогда
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Тара%", НСтр("ru = ', поставляется в таре'"));
Иначе
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Тара%", "");
КонецЕсли;
СтруктураЗаголовков.Свойство("ЕдиницаИзмерения", Заголовок);
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ЕдиницаИзмерения";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ЕдиницаИзмеренияСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ЕдиницаИзмеренияРеквизит";
ПараметрыВыводаРаздела.ТекстЗаголовкаРеквизита = Заголовок;
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("НоменклатураМногооборотнаяТара", СтруктураВидимости) Тогда
СтрокаЗаполнения = НоменклатураКлиентСервер.ПредставлениеНоменклатуры(
Объект.НоменклатураМногооборотнаяТара,
Объект.ХарактеристикаМногооборотнаяТара);
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "НоменклатураМногооборотнаяТара";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "НоменклатураМногооборотнаяТараСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "НоменклатураМногооборотнаяТараРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ЕдиницаДляОтчетов", СтруктураВидимости) Тогда
СтрокаЗаполнения = НСтр("ru = '<не указана>'");
Если ЗначениеЗаполнено(Объект.ЕдиницаДляОтчетов) Тогда
Если Объект.ЕдиницаДляОтчетов <> Объект.ЕдиницаИзмерения Тогда
СтрокаЗаполнения = НСтр("ru = '%ЕдиницаДляОтчетов%, содержит %Количество% %ЕдиницаИзмерения%'");
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество%", Объект.КоэффициентЕдиницыДляОтчетов);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ЕдиницаИзмерения);
Иначе
СтрокаЗаполнения = НСтр("ru = '%ЕдиницаДляОтчетов%'");
КонецЕсли;
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаДляОтчетов%", Объект.ЕдиницаДляОтчетов);
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ЕдиницаДляОтчетов";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ЕдиницаДляОтчетовСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ЕдиницаДляОтчетовРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Вес", СтруктураВидимости) Тогда
Если Объект.ВесИспользовать Тогда
СтрокаЗаполнения = НСтр("ru = '%Количество1% %ЕдиницаИзмерения% весит %Количество2% %Единица%, %МожноУказыватьВДокументах%'");
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество1%", Объект.ВесЗнаменатель);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество2%", Объект.ВесЧислитель);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ЕдиницаИзмерения);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Единица%", Объект.ВесЕдиницаИзмерения);
Если Объект.ВесМожноУказыватьВДокументах Тогда
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'можно указывать количество в %ЕдиницаИзмерения% в документах'"));
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ВесЕдиницаИзмерения);
Иначе
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'указан справочно'"));
КонецЕсли;
Иначе
СтрокаЗаполнения = НСтр("ru = '<не измеряется>'");
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Вес";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ВесСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ВесРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Объем", СтруктураВидимости) Тогда
Если Объект.ОбъемИспользовать Тогда
СтрокаЗаполнения = НСтр("ru = '%Количество1% %ЕдиницаИзмерения% занимает объем %Количество2% %Единица%, %МожноУказыватьВДокументах%'");
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество1%", Объект.ОбъемЗнаменатель);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество2%", Объект.ОбъемЧислитель);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ЕдиницаИзмерения);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Единица%", Объект.ОбъемЕдиницаИзмерения);
Если Объект.ОбъемМожноУказыватьВДокументах Тогда
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'можно указывать количество в %ЕдиницаИзмерения% в документах'"));
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ОбъемЕдиницаИзмерения);
Иначе
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'указан справочно'"));
КонецЕсли;
Иначе
СтрокаЗаполнения = НСтр("ru = '<не измеряется>'");
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Объем";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ОбъемСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ОбъемРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Длина", СтруктураВидимости) Тогда
Если Объект.ДлинаИспользовать Тогда
СтрокаЗаполнения = НСтр("ru = '%Количество1% %ЕдиницаИзмерения% имеет длину %Количество2% %Единица%, %МожноУказыватьВДокументах%'");
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество1%", Объект.ДлинаЗнаменатель);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество2%", Объект.ДлинаЧислитель);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ЕдиницаИзмерения);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Единица%", Объект.ДлинаЕдиницаИзмерения);
Если Объект.ДлинаМожноУказыватьВДокументах Тогда
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'можно указывать количество в %ЕдиницаИзмерения% в документах'"));
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ДлинаЕдиницаИзмерения);
Иначе
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'указана справочно'"));
КонецЕсли;
Иначе
СтрокаЗаполнения = НСтр("ru = '<не измеряется>'");
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Длина";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ДлинаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ДлинаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("Площадь", СтруктураВидимости) Тогда
Если Объект.ПлощадьИспользовать Тогда
СтрокаЗаполнения = НСтр("ru = '%Количество1% %ЕдиницаИзмерения% имеет площадь %Количество2% %Единица%, %МожноУказыватьВДокументах%'");
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество1%", Объект.ПлощадьЗнаменатель);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество2%", Объект.ПлощадьЧислитель);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ЕдиницаИзмерения);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Единица%", Объект.ПлощадьЕдиницаИзмерения);
Если Объект.ПлощадьМожноУказыватьВДокументах Тогда
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'можно указывать количество в %ЕдиницаИзмерения% в документах'"));
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ПлощадьЕдиницаИзмерения);
Иначе
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'указана справочно'"));
КонецЕсли;
Иначе
СтрокаЗаполнения = НСтр("ru = '<не измеряется>'");
КонецЕсли;
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "Площадь";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ПлощадьСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ПлощадьРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("СкладскаяГруппа", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "СкладскаяГруппа";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "СкладскаяГруппаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "СкладскаяГруппаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.СкладскаяГруппа;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиРазмещениеНоменклатуры", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиРазмещениеНоменклатурыСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиРазмещениеНоменклатуры";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
Если РазделВиден("СрокГодности", СтруктураВидимости) Тогда
СтрокаЗаполнения = НСтр("ru = '%СрокГодности% %ЕдиницаИзмеренияСрокаГодности%'");
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%СрокГодности%", Объект.СрокГодности);
СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмеренияСрокаГодности%", Объект.ЕдиницаИзмеренияСрокаГодности);
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "СрокГодности";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "СрокГодностиСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "СрокГодностиРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
КонецЕсли;
#КонецОбласти
#Область ФинансовыйУчет
Если ГлаваВидна("ФинансовыйУчет", СтруктураВидимости) Тогда
ОбластьЗаголовок = Макет.ПолучитьОбласть("ФинансовыйУчетЗаголовок");
ТабличныйДокументПраво.Вывести(ОбластьЗаголовок);
Если РазделВиден("ГруппаАналитическогоУчета", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ГруппаАналитическогоУчета";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ГруппаАналитическогоУчетаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ГруппаАналитическогоУчетаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ГруппаАналитическогоУчета;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГруппаФинансовогоУчета", СтруктураВидимости) Тогда
ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
ПараметрыВыводаРаздела.ИмяРаздела = "ГруппаФинансовогоУчета";
ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ГруппаФинансовогоУчетаСтрока";
ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ГруппаФинансовогоУчетаРеквизит";
ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = Объект.ГруппаФинансовогоУчета;
ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности", СтруктураВидимости) Тогда
Область = Макет.ПолучитьОбласть("ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельностиСтрока");
Если Не ДляПечати Тогда
Область.Параметры.Расшифровка = "ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности";
КонецЕсли;
ТабличныйДокументПраво.Вывести(Область);
КонецЕсли;
КонецЕсли;
#КонецОбласти
НоменклатураЛокализация.ВывестиГлавы(ТабличныйДокументПраво, Объект, НастройкиВидимостиИЗаголовков, ДляПечати);
ТабличныйДокументКолонки.Присоединить(ТабличныйДокументПраво);
#КонецОбласти
ТабличныйДокументКарточка.Вывести(ТабличныйДокументКолонки);
Возврат ТабличныйДокументКарточка;
КонецФункции
Функция ТекстЗначенияНеЗаполнен(ИмяРаздела)
Если ИмяРаздела = "Наименование" Тогда
Возврат НСтр("ru = '<не указано>'");
ИначеЕсли ИмяРаздела = "НаименованиеПолное" Тогда
Возврат НСтр("ru = '<не указано>'");
ИначеЕсли ИмяРаздела = "Артикул" Тогда
Возврат НСтр("ru = '<не указан>'");
ИначеЕсли ИмяРаздела = "Код" Тогда
Возврат НСтр("ru = '<не указан>'");
ИначеЕсли ИмяРаздела = "Описание" Тогда
Возврат НСтр("ru = '<не указано>'");
ИначеЕсли ИмяРаздела = "ФайлОписанияДляСайта" Тогда
Возврат НСтр("ru = '<не указан>'");
ИначеЕсли ИмяРаздела = "ДополнительныеРеквизиты" Тогда
Возврат НСтр("ru = '<значение не задано>'");
ИначеЕсли ИмяРаздела = "Производитель" Тогда
Возврат НСтр("ru = '<не указан>'");
ИначеЕсли ИмяРаздела = "СтранаПроисхождения" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "Марка" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "Контрагент" Тогда
Возврат НСтр("ru = '<не указан>'");
ИначеЕсли ИмяРаздела = "Принципал" Тогда
Возврат НСтр("ru = '<не указан>'");
ИначеЕсли ИмяРаздела = "ТоварнаяКатегория" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "КоллекцияНоменклатуры" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "СезоннаяГруппа" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "РейтингПродаж" Тогда
Возврат НСтр("ru = '<не указан>'");
ИначеЕсли ИмяРаздела = "СпособОбеспеченияПотребностей" Тогда
Возврат НСтр("ru = '<не указан>'");
ИначеЕсли ИмяРаздела = "СхемаОбеспечения" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "ЦеноваяГруппа" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "Родитель" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "ГруппаДоступа" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "СкладскаяГруппа" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "ГруппаАналитическогоУчета" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "ГруппаФинансовогоУчета" Тогда
Возврат НСтр("ru = '<не указана>'");
ИначеЕсли ИмяРаздела = "КодТНВЭД" Тогда
Возврат НСтр("ru = '<не указан>'");
Иначе
Возврат НоменклатураЛокализация.ТекстЗначенияНеЗаполнен(ИмяРаздела);
КонецЕсли;
КонецФункции
Функция ПараметрыВыводаРазделаСУчетомРазмераЗначений() Экспорт
ПараметрыВыводаРаздела = Новый Структура;
ПараметрыВыводаРаздела.Вставить("ИмяРаздела", "");
ПараметрыВыводаРаздела.Вставить("ИмяОбластиСтрока", "");
ПараметрыВыводаРаздела.Вставить("ИмяПараметраРеквизит", "");
ПараметрыВыводаРаздела.Вставить("ТекстЗначенияРеквизита");
ПараметрыВыводаРаздела.Вставить("ТекстЗаголовкаРеквизита");
ПараметрыВыводаРаздела.Вставить("НовоеИмяРаздела");
Возврат ПараметрыВыводаРаздела;
КонецФункции
Процедура ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокумент, Макет, ДляПечати, ПараметрыВывода) Экспорт
ОбластьСтрока = Макет.ПолучитьОбласть(ПараметрыВывода.ИмяОбластиСтрока);
Если ПараметрыВывода.ТекстЗаголовкаРеквизита <> Неопределено Тогда
ОбластьСтрока.Параметры[ПараметрыВывода.ИмяПараметраРеквизит] = Строка(ПараметрыВывода.ТекстЗаголовкаРеквизита) + ":";
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыВывода.ТекстЗначенияРеквизита) Тогда
ОбластьСтрока.Параметры[ПараметрыВывода.ИмяРаздела] = ПараметрыВывода.ТекстЗначенияРеквизита;
Иначе
ОбластьСтрока.Параметры[ПараметрыВывода.ИмяРаздела] = ТекстЗначенияНеЗаполнен(ПараметрыВывода.ИмяРаздела);
КонецЕсли;
Если Не ДляПечати Тогда
Если ПараметрыВывода.НовоеИмяРаздела = Неопределено Тогда
ОбластьСтрока.Параметры.Расшифровка = ПараметрыВывода.ИмяРаздела;
Иначе
ОбластьСтрока.Параметры.Расшифровка = ПараметрыВывода.НовоеИмяРаздела;
КонецЕсли;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьСтрока);
КоличествоДополнительныхСтрок = 0;
КоличествоДополнительныхСтрок = КоличествоДополнительныхСтрок(
ТабличныйДокумент,
ПараметрыВывода.ИмяРаздела,
ПараметрыВывода.ТекстЗначенияРеквизита,
ПараметрыВывода.ТекстЗаголовкаРеквизита);
Счетчик = КоличествоДополнительныхСтрок;
ОбластьДопСтрока = Макет.ПолучитьОбласть(ПолучитьИмяОбластиДопСтрокиПоИмениРаздела(ПараметрыВывода.ИмяРаздела));
Пока Счетчик > 0 Цикл
Счетчик = Счетчик - 1;
ТабличныйДокумент.Вывести(ОбластьДопСтрока);
КонецЦикла;
ОбъединитьРазделСоСтрокамиНиже(ТабличныйДокумент, ПараметрыВывода.ИмяОбластиСтрока, КоличествоДополнительныхСтрок);
КонецПроцедуры
Процедура ОбъединитьРазделСоСтрокамиНиже(ТабличныйДокумент, ИмяОбласти, КоличествоДопСтрок)
Если КоличествоДопСтрок = 0 Тогда
Возврат;
КонецЕсли;
Область = ТабличныйДокумент.Область(ИмяОбласти);
Область.Разъединить();
Область.Имя = Неопределено;
АдресОбласти = Область.Имя;
СтруктураАдреса = СтруктураАдреса(АдресОбласти);
АдресКолонкиЗаголовкаНачало = СтруктураАдреса.АдресКолонкиНачало + 1;
АдресКолонкиЗаголовкаКонец = АдресКолонкиЗаголовкаНачало + 7;
АдресКолонкиЗначенияНачало = АдресКолонкиЗаголовкаКонец + 1;
Если СтруктураАдреса.АдресКолонкиКонец - СтруктураАдреса.АдресКолонкиНачало = 20 Тогда
АдресКолонкиЗначенияКонец = СтруктураАдреса.АдресКолонкиКонец;
ИначеЕсли СтруктураАдреса.АдресКолонкиКонец - СтруктураАдреса.АдресКолонкиНачало = 21 Тогда
АдресКолонкиЗначенияКонец = СтруктураАдреса.АдресКолонкиКонец - 1;
КонецЕсли;
АдресСтрокиНачало = СтруктураАдреса.АдресСтрокиНачало;
АдресСтрокиКонец = СтруктураАдреса.АдресСтрокиКонец;
НовыйАдрес = "R" + АдресСтрокиНачало + "C" + АдресКолонкиЗаголовкаНачало + ":"
+ "R" + (АдресСтрокиКонец + КоличествоДопСтрок) + "C" + АдресКолонкиЗаголовкаКонец;
Область = ТабличныйДокумент.Область(НовыйАдрес);
Область.Объединить();
НовыйАдрес = "R" + АдресСтрокиНачало + "C" + АдресКолонкиЗначенияНачало + ":"
+ "R" + (АдресСтрокиКонец + КоличествоДопСтрок) + "C" + АдресКолонкиЗначенияКонец;
Область = ТабличныйДокумент.Область(НовыйАдрес);
Область.Объединить();
КонецПроцедуры
Функция СтруктураАдреса(Адрес)
МассивАдресОбласти = СтрРазделить(Адрес, ":");
Если МассивАдресОбласти.Количество() <> 2 Тогда
Возврат Неопределено;
КонецЕсли;
АдресНачало = МассивАдресОбласти[0];
МассивАдресНачало = СтрРазделить(АдресНачало, "C");
АдресСтрокиНачало = СтрЗаменить(МассивАдресНачало[0], "R", "");
АдресКолонкиНачало = МассивАдресНачало[1];
АдресКонец = МассивАдресОбласти[1];
МассивАдресКонец = СтрРазделить(АдресКонец, "C");
АдресСтрокиКонец = СтрЗаменить(МассивАдресКонец[0], "R", "");
АдресКолонкиКонец = МассивАдресКонец[1];
СтруктураАдреса = Новый Структура;
СтруктураАдреса.Вставить("АдресСтрокиНачало", Число(АдресСтрокиНачало));
СтруктураАдреса.Вставить("АдресКолонкиНачало", Число(АдресКолонкиНачало));
СтруктураАдреса.Вставить("АдресСтрокиКонец", Число(АдресСтрокиКонец));
СтруктураАдреса.Вставить("АдресКолонкиКонец", Число(АдресКолонкиКонец));
Возврат СтруктураАдреса;
КонецФункции
Функция ПолучитьИмяОбластиДопСтрокиПоИмениРаздела(ИмяРаздела)
Если ИмяРаздела = "ДополнительныеРеквизиты"
Или ИмяРаздела = "Описание"
Или ИмяРаздела = "Производитель"
Или ИмяРаздела = "ПроизводительИмпортерКонтрагент"
Или ИмяРаздела = "СтранаПроисхождения"
Или ИмяРаздела = "Марка"
Или ИмяРаздела = "Принципал"
Или ИмяРаздела = "Контрагент"
Или ИмяРаздела = "ФайлОписанияДляСайта"
Или ИмяРаздела = "ВестиУчетСертификатовНоменклатуры"
Или ИмяРаздела = "ТоварнаяКатегория"
Или ИмяРаздела = "КоллекцияНоменклатуры"
Или ИмяРаздела = "СезоннаяГруппа"
Или ИмяРаздела = "РейтингПродаж"
Или ИмяРаздела = "ГиперссылкаПерейтиСегменты"
Или ИмяРаздела = "ГиперссылкаПерейтиСовместныеПродажи"
Или ИмяРаздела = "ОбособленнаяЗакупкаПродажа"
Или ИмяРаздела = "СпособОбеспеченияПотребностей"
Или ИмяРаздела = "СхемаОбеспечения"
Или ИмяРаздела = "ГиперссылкаПерейтиВариантыКомплектации"
Или ИмяРаздела = "ГиперссылкаПерейтиНастройкаПоддержанияЗапасов"
Или ИмяРаздела = "ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей"
Или ИмяРаздела = "ГиперссылкаПерейтиПроизводство"
Или ИмяРаздела = "ЦеноваяГруппа"
Или ИмяРаздела = "ГиперссылкаПерейтиПрайсЛистКомпании"
Или ИмяРаздела = "ГиперссылкаПерейтиПрайсЛистыПоставщиков"
Или ИмяРаздела = "ШаблонЭтикетки"
Или ИмяРаздела = "ШаблонЦенника"
Или ИмяРаздела = "ГруппаАналитическогоУчета"
Или ИмяРаздела = "ГруппаФинансовогоУчета" Тогда
Возврат "ДопСтрокаЛево";
Иначе
Возврат "ДопСтрокаПраво";
КонецЕсли;
КонецФункции
Функция КоличествоДополнительныхСтрок(ТабличныйДокумент, ИмяРаздела, ТекстЗаполненияЗначения, ТекстЗаполненияРеквизита)
ШиринаКолонки = 2.38;
КоличествоКолонокВЗначенииРеквизита = 12;
ШиринаЗначенияРеквизита = КоличествоКолонокВЗначенииРеквизита * ШиринаКолонки;
ЧислоСтрокЗначения = КоличествоСтрок(ШиринаЗначенияРеквизита, ТекстЗаполненияЗначения);
ЧислоСтрокСвойства = 0;
Если ЗначениеЗаполнено(ТекстЗаполненияРеквизита) Тогда
КоличествоКолонокВЗаголовкеРеквизита = 8;
ШиринаЗаголовкаРеквизита = ШиринаКолонки * КоличествоКолонокВЗаголовкеРеквизита;
ЧислоСтрокСвойства = КоличествоСтрок(ШиринаЗаголовкаРеквизита, ТекстЗаполненияРеквизита);
КонецЕсли;
ЧислоСтрок = Макс(ЧислоСтрокЗначения, ЧислоСтрокСвойства);
Если ЧислоСтрок = 0 Тогда
Возврат 0;
КонецЕсли;
Возврат ЧислоСтрок - 1;
КонецФункции
Функция КоличествоСтрок(ШиринаОбласти, Строка)
Если Не ЗначениеЗаполнено(Строка) Тогда
Возврат 0;
КонецЕсли;
СредняяШиринаСимвола = 0.75;
МассивСлов = СтрРазделить(Строка, " ");
КоличествоСтрок = 1;
ТекущаяСтрока = "";
Для Каждого Слово Из МассивСлов Цикл
ТекущаяСтрока = ТекущаяСтрока + Слово + " ";
Если СтрДлина(ТекущаяСтрока) * СредняяШиринаСимвола > ШиринаОбласти Тогда
КоличествоСтрок = КоличествоСтрок + 1;
ТекущаяСтрока = Слово + " ";
КонецЕсли;
КонецЦикла;
Возврат КоличествоСтрок;
КонецФункции
Функция КартинкаФлагаПоЗначению(ЗначениеФлага) Экспорт
Если ЗначениеФлага Тогда
Возврат БиблиотекаКартинок.ФлагУстановлен;
Иначе
Возврат БиблиотекаКартинок.ФлагНеУстановлен;
КонецЕсли;
КонецФункции
Функция РазделВиден(ИмяРаздела, СтруктураВидимости) Экспорт
Видимость = Истина;
Если СтруктураВидимости.Свойство(ИмяРаздела) Тогда
Видимость = СтруктураВидимости[ИмяРаздела];
КонецЕсли;
Возврат Видимость;
КонецФункции
Функция ГлаваВидна(ИмяГлавы, СтруктураВидимости, КоличествоДопРеквизитов = 0)
Если ИмяГлавы = "Описание" Тогда
Возврат Истина;
КонецЕсли;
Если ИмяГлавы = "ДополнительныеРеквизиты" Тогда
Возврат КоличествоДопРеквизитов > 0 И ПолучитьФункциональнуюОпцию("ИспользоватьДополнительныеРеквизитыИСведения");
КонецЕсли;
Если ИмяГлавы = "СведенияОПроизводителе" Тогда
Возврат РазделВиден("Производитель", СтруктураВидимости)
Или РазделВиден("Марка", СтруктураВидимости)
Или РазделВиден("ПроизводительИмпортерКонтрагент", СтруктураВидимости)
Или РазделВиден("Принципал", СтруктураВидимости)
Или РазделВиден("Контрагент", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиСоглашения", СтруктураВидимости);
КонецЕсли;
Если ИмяГлавы = "ПланированиеИМаркетинг" Тогда
Возврат РазделВиден("ТоварнаяКатегория", СтруктураВидимости)
Или РазделВиден("КоллекцияНоменклатуры", СтруктураВидимости)
Или РазделВиден("СезоннаяГруппа", СтруктураВидимости)
Или РазделВиден("РейтингПродаж", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиСегменты", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиСовместныеПродажи", СтруктураВидимости);
КонецЕсли;
Если ИмяГлавы = "ОбеспечениеИПроизводство" Тогда
Возврат РазделВиден("ОбособленнаяЗакупкаПродажа", СтруктураВидимости)
Или РазделВиден("СпособОбеспеченияПотребностей", СтруктураВидимости)
Или РазделВиден("СхемаОбеспечения", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиВариантыКомплектации", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиНастройкаПоддержанияЗапасов", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводство", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиПроизводство", СтруктураВидимости);
КонецЕсли;
Если ИмяГлавы = "Цены" Тогда
Возврат РазделВиден("ЦеноваяГруппа", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиПрайсЛистКомпании", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиПрайсЛистыПоставщиков", СтруктураВидимости);
КонецЕсли;
Если ИмяГлавы = "ПечатьЭтикетокИЦенников" Тогда
Возврат РазделВиден("ШаблонЭтикетки", СтруктураВидимости)
Или РазделВиден("ШаблонЦенника", СтруктураВидимости);
КонецЕсли;
Если ИмяГлавы = "ОсновныеПараметрыУчета" Тогда
Возврат Истина;
КонецЕсли;
Если ИмяГлавы = "ЕдиницыИзмеренияИОбластьХранения" Тогда
Возврат Истина;
КонецЕсли;
Если ИмяГлавы = "ФинансовыйУчет" Тогда
Возврат РазделВиден("ГруппаАналитическогоУчета", СтруктураВидимости)
Или РазделВиден("ГруппаФинансовогоУчета", СтруктураВидимости)
Или РазделВиден("ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности", СтруктураВидимости);
КонецЕсли;
Возврат Ложь;
КонецФункции
Функция ПравоДоступаНаОбъектМетаданныхПоРеквизиту(Право, РеквизитОбъектМетаданных) Экспорт
Если Пользователи.ЭтоПолноправныйПользователь() Тогда
Возврат Истина;
КонецЕсли;
МассивтиповДляПроверки = РеквизитОбъектМетаданных.Тип.Типы();
Для Каждого Тип Из МассивтиповДляПроверки Цикл
Если ОбщегоНазначенияУТ.ЭтоПримитивныйТип(Тип) Тогда
Продолжить;
КонецЕсли;
ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип);
Если ОбъектМетаданных <> Неопределено
И Не ПравоДоступа(Право, ОбъектМетаданных) Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
Функция ВидимостьРеквизита(Реквизит, ИмяРеквизита, РежимВидимостиПоказатьТолькоВажные, СтрокаНастройки) Экспорт
Если Не ТипЗнч(Реквизит) = Тип("Строка") Тогда
Возврат ПравоДоступаНаОбъектМетаданныхПоРеквизиту("Просмотр", Реквизит)
И (Не РежимВидимостиПоказатьТолькоВажные
Или СтрокаНастройки.ОтображатьПриСоздании)
Иначе
Возврат ПравоДоступа("Просмотр", Метаданные.Справочники.Номенклатура.Реквизиты[ИмяРеквизита])
И ПравоДоступаНаОбъектМетаданныхПоРеквизиту("Просмотр", Метаданные.Справочники.Номенклатура.Реквизиты[ИмяРеквизита])
И (Не РежимВидимостиПоказатьТолькоВажные
Или СтрокаНастройки.ОтображатьПриСоздании)
КонецЕсли;
КонецФункции
Функция ВидимостьДополнительногоРеквизита(Объект, ОписаниеСвойства, ДопРеквизиты, УсловияВидимостиРеквизитов)
Видимость = Истина;
УсловияЗависимостей = Неопределено;
ЗначенияРеквизитов = Новый Структура;
ОтборСтрок = Новый Структура("Свойство", ОписаниеСвойства.Свойство);
СтрокиЗависимостей = УсловияВидимостиРеквизитов.НайтиСтроки(ОтборСтрок);
Для Каждого СтрокаЗависимости Из СтрокиЗависимостей Цикл
Если ТипЗнч(СтрокаЗависимости.Реквизит) = Тип("Строка") Тогда
ПутьКРеквизиту = "Параметры.ОписаниеОбъекта." + СтрокаЗависимости.Реквизит;
Иначе
ДанныеДопРеквизита = ДопРеквизиты.Найти(СтрокаЗависимости.Реквизит, "Свойство");
Если ДанныеДопРеквизита = Неопределено Тогда
Продолжить;
КонецЕсли;
ПутьКРеквизиту = "Параметры.Форма." + ДанныеДопРеквизита.ИмяРеквизита;
ЗначенияРеквизитов.Вставить(ДанныеДопРеквизита.ИмяРеквизита, ДанныеДопРеквизита.Значение);
КонецЕсли;
ЗаполнитьУсловияЗависимостей(УсловияЗависимостей, СтрокаЗависимости, ПутьКРеквизиту);
КонецЦикла;
Если УсловияЗависимостей <> Неопределено Тогда
Параметры = Новый Структура;
Параметры.Вставить("Форма", ЗначенияРеквизитов);
Параметры.Вставить("ЗначенияПараметров", УсловияЗависимостей.ЗначенияПараметров);
Параметры.Вставить("ОписаниеОбъекта", Объект);
Попытка
Видимость = ОбщегоНазначения.ВычислитьВБезопасномРежиме(УсловияЗависимостей.КодУсловия, Параметры);
Исключение
Видимость = Истина;
ИмяСобытия = НСтр("ru = 'Формирование карточки номеклатуры ""%1"".
|Не удалось вычислить условие видимости дополнительного реквизита ""%2""'",
ОбщегоНазначения.КодОсновногоЯзыка());
ИмяСобытия = СтрШаблон(ИмяСобытия, Строка(Объект.Ссылка), ОписаниеСвойства.ПредставлениеРеквизита);
ЗаписьЖурналаРегистрации(ИмяСобытия,
УровеньЖурналаРегистрации.Ошибка,
Метаданные.Справочники.Номенклатура,
Объект.Ссылка,
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
Возврат Видимость;
КонецФункции
Процедура ЗаполнитьУсловияЗависимостей(УсловияЗависимостей, ДанныеДопРеквизита, ПутьКРеквизиту)
НовоеУсловие = "";
УсловиеЧастями = СтрРазделить(ДанныеДопРеквизита.Условие, " ");
Если УсловиеЧастями.Количество() > 0 Тогда
Для Каждого ЧастьУсловия Из УсловиеЧастями Цикл
НовоеУсловие = НовоеУсловие + ВРег(Лев(ЧастьУсловия, 1)) + Сред(ЧастьУсловия, 2);
КонецЦикла;
КонецЕсли;
Если ЗначениеЗаполнено(НовоеУсловие) Тогда
ДанныеДопРеквизита.Условие = НовоеУсловие;
КонецЕсли;
ШаблонУсловия = "";
Если ДанныеДопРеквизита.Условие = "Равно" Тогда
ШаблонУсловия = "%1 = %2";
ИначеЕсли ДанныеДопРеквизита.Условие = "НеРавно" Тогда
ШаблонУсловия = "%1 <> %2";
КонецЕсли;
Если ДанныеДопРеквизита.Условие = "ВСписке" Тогда
ШаблонУсловия = "%2.НайтиПоЗначению(%1) <> Неопределено";
ИначеЕсли ДанныеДопРеквизита.Условие = "НеВСписке" Тогда
ШаблонУсловия = "%2.НайтиПоЗначению(%1) = Неопределено";
КонецЕсли;
ПравоеЗначение = "";
Если ЗначениеЗаполнено(ШаблонУсловия) Тогда
ПравоеЗначение = "Параметры.ЗначенияПараметров[""%1""]";
ПравоеЗначение = СтрШаблон(ПравоеЗначение, ПутьКРеквизиту);
КонецЕсли;
Если ДанныеДопРеквизита.Условие = "Заполнено" Тогда
ШаблонУсловия = "ЗначениеЗаполнено(%1)";
ИначеЕсли ДанныеДопРеквизита.Условие = "НеЗаполнено" Тогда
ШаблонУсловия = "Не ЗначениеЗаполнено(%1)";
КонецЕсли;
Если ЗначениеЗаполнено(ПравоеЗначение) Тогда
КодУсловия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУсловия,
ПутьКРеквизиту,
ПравоеЗначение);
Иначе
КодУсловия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУсловия, ПутьКРеквизиту);
КонецЕсли;
УстановитьУсловиеЗависимости(УсловияЗависимостей, ДанныеДопРеквизита, ПутьКРеквизиту, КодУсловия);
КонецПроцедуры
Процедура УстановитьУсловиеЗависимости(УсловияЗависимостей, ДанныеДопРеквизита, ПутьКРеквизиту, КодУсловия)
Условие = ДанныеДопРеквизита.Условие;
Если УсловияЗависимостей = Неопределено Тогда
ЗначенияПараметров = Новый Соответствие;
Если Условие = "ВСписке"
Или Условие = "НеВСписке" Тогда
Значение = Новый СписокЗначений;
Значение.Добавить(ДанныеДопРеквизита.Значение);
Иначе
Значение = ДанныеДопРеквизита.Значение;
КонецЕсли;
ЗначенияПараметров.Вставить(ПутьКРеквизиту, Значение);
УсловияЗависимостей = Новый Структура;
УсловияЗависимостей.Вставить("КодУсловия", КодУсловия);
УсловияЗависимостей.Вставить("ЗначенияПараметров", ЗначенияПараметров);
ИначеЕсли (Условие = "ВСписке"
Или Условие = "НеВСписке")
И ТипЗнч(УсловияЗависимостей.ЗначенияПараметров[ПутьКРеквизиту]) = Тип("СписокЗначений") Тогда
ЗначенияРеквизита = УсловияЗависимостей.ЗначенияПараметров[ПутьКРеквизиту];
ЗначенияРеквизита.Добавить(ДанныеДопРеквизита.Значение);
Иначе
УсловияЗависимостей.КодУсловия = УсловияЗависимостей.КодУсловия + " И " + КодУсловия;
Если Условие = "ВСписке"
Или Условие = "НеВСписке" Тогда
Значение = Новый СписокЗначений;
Значение.Добавить(ДанныеДопРеквизита.Значение);
Иначе
Значение = ДанныеДопРеквизита.Значение;
КонецЕсли;
УсловияЗависимостей.ЗначенияПараметров.Вставить(ПутьКРеквизиту, Значение);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ПодменюСоздатьНаОсновании
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
#КонецОбласти
#Область ПодменюОтчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = Отчеты.ОстаткиИДоступностьТоваров.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Важность = "Важное";
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.ТоварыВЯчейках.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Важность = "Важное";
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.ABCXYZАнализНоменклатуры.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.ВедомостьПоТоварамОрганизаций.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 2;
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.ВедомостьПоТоварамНаСкладах.ДобавитьКомандуДвиженияТовара(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 3;
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.ТоварыВЯчейках.ДобавитьКомандуОтчетаДвиженияТовара(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 4;
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.ВедомостьПоСериямНоменклатуры.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 5;
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.ТоварыНаСкладахПоСрокамГодности.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.ВыручкаИСебестоимостьПродаж.ДобавитьКомандуПродажиПоНоменклатуре(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Важность = "СмТакже";
КомандаОтчет.РежимЗаписи = "";
КонецЕсли;
КомандаОтчет = Отчеты.СостояниеАссортимента.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Важность = "СмТакже";
КомандаОтчет.РежимЗаписи = "";
КомандаОтчет.ФункциональныеОпции = "ИспользоватьАссортимент";
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область МеханизмыНастройкиРаботыСРеквизитамиВВидеНоменклатуры
Функция РеквизитыОтключенныеПоФО(ЭтоРеквизитыХарактеристик = Ложь) Экспорт
РеквизитыОтключенныеПоФО = Новый Массив;
ИспользоватьПродажуАгентскихУслуг = ПолучитьФункциональнуюОпцию("ИспользоватьПродажуАгентскихУслуг");
ИспользоватьПартнеровИКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов");
Если Не ИспользоватьПродажуАгентскихУслуг Тогда
РеквизитыОтключенныеПоФО.Добавить("Принципал");
РеквизитыОтключенныеПоФО.Добавить("Контрагент");
ИначеЕсли Не ИспользоватьПартнеровИКонтрагентов Тогда
РеквизитыОтключенныеПоФО.Добавить("Контрагент");
КонецЕсли;
Если ЭтоРеквизитыХарактеристик Тогда
Возврат РеквизитыОтключенныеПоФО;
КонецЕсли;
ВыводитьКачество = ПолучитьФункциональнуюОпцию("ИспользоватьКачествоТоваров");
ИспользоватьАдресноеХранение = ПолучитьФункциональнуюОпцию("ИспользоватьАдресноеХранение", Новый Структура);
ВыводитьЦеновуюГруппу = ПолучитьФункциональнуюОпцию("ИспользоватьЦеновыеГруппы");
ВыводитьГруппуФинУчета = ПолучитьФункциональнуюОпцию("ИспользоватьГруппыФинансовогоУчета");
ВыводитьАссортимент = ПолучитьФункциональнуюОпцию("ИспользоватьТоварныеКатегории");
ВыводитьМногооборотнуюТару = ПолучитьФункциональнуюОпцию("ИспользоватьМногооборотнуюТару");
ИспользоватьХарактеристики = ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры");
ИспользоватьЕдиницыДляОтчетов = ПолучитьФункциональнуюОпцию("ИспользоватьЕдиницыИзмеренияДляОтчетов");
ИспользоватьСезонныеКоэффициенты = ПолучитьФункциональнуюОпцию("ИспользоватьСезонныеКоэффициенты");
ИспользоватьУправлениеКоллекциями = ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеКоллекциями");
ИспользоватьРейтингиПродажНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьРейтингиПродажНоменклатуры");
ИспользоватьОбособленноеОбеспечениеЗаказов = ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов");
ИспользоватьСертификатыНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСертификатыНоменклатуры");
ИспользоватьСпособыОбеспечения = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенноеОбеспечениеПотребностей");
ИспользоватьУпаковкиНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
ИспользоватьГруппыАналитическогоУчетаНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьГруппыАналитическогоУчетаНоменклатуры");
ИспользоватьГруппыДоступаНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьГруппыДоступаНоменклатуры");
ИспользоватьУчетНДС = ПолучитьФункциональнуюОпцию("ИспользоватьУчетНДС");
ИспользоватьИмпортныеТовары = ПолучитьФункциональнуюОпцию("ИспользоватьИмпортныеТовары");
Если Не ВыводитьКачество Тогда
РеквизитыОтключенныеПоФО.Добавить("Качество");
КонецЕсли;
Если Не ИспользоватьАдресноеХранение Тогда
РеквизитыОтключенныеПоФО.Добавить("СкладскаяГруппа");
КонецЕсли;
Если Не ВыводитьЦеновуюГруппу Тогда
РеквизитыОтключенныеПоФО.Добавить("ЦеноваяГруппа");
КонецЕсли;
Если Не ВыводитьГруппуФинУчета Тогда
РеквизитыОтключенныеПоФО.Добавить("ГруппаФинансовогоУчета");
КонецЕсли;
Если Не ИспользоватьГруппыАналитическогоУчетаНоменклатуры Тогда
РеквизитыОтключенныеПоФО.Добавить("ГруппаАналитическогоУчета");
КонецЕсли;
Если Не ВыводитьАссортимент Тогда
РеквизитыОтключенныеПоФО.Добавить("ТоварнаяКатегория");
КонецЕсли;
Если Не ВыводитьМногооборотнуюТару Тогда
РеквизитыОтключенныеПоФО.Добавить("ПоставляетсяВМногооборотнойТаре");
РеквизитыОтключенныеПоФО.Добавить("НоменклатураМногооборотнаяТара");
РеквизитыОтключенныеПоФО.Добавить("ХарактеристикаМногооборотнаяТара");
ИначеЕсли Не ИспользоватьХарактеристики Тогда
РеквизитыОтключенныеПоФО.Добавить("ХарактеристикаМногооборотнаяТара");
КонецЕсли;
Если Не ИспользоватьХарактеристики Тогда
РеквизитыОтключенныеПоФО.Добавить("ИспользованиеХарактеристик");
КонецЕсли;
Если Не ИспользоватьЕдиницыДляОтчетов Тогда
РеквизитыОтключенныеПоФО.Добавить("ЕдиницаДляОтчетов");
КонецЕсли;
Если Не ИспользоватьСезонныеКоэффициенты Тогда
РеквизитыОтключенныеПоФО.Добавить("СезоннаяГруппа");
КонецЕсли;
Если Не ИспользоватьУправлениеКоллекциями Тогда
РеквизитыОтключенныеПоФО.Добавить("КоллекцияНоменклатуры");
КонецЕсли;
Если Не ИспользоватьРейтингиПродажНоменклатуры Тогда
РеквизитыОтключенныеПоФО.Добавить("РейтингПродаж");
КонецЕсли;
Если Не ИспользоватьОбособленноеОбеспечениеЗаказов Тогда
РеквизитыОтключенныеПоФО.Добавить("ОбособленнаяЗакупкаПродажа");
КонецЕсли;
Если Не ИспользоватьСертификатыНоменклатуры Тогда
РеквизитыОтключенныеПоФО.Добавить("ВестиУчетСертификатовНоменклатуры");
КонецЕсли;
Если Не ИспользоватьСпособыОбеспечения Тогда
РеквизитыОтключенныеПоФО.Добавить("СхемаОбеспечения");
РеквизитыОтключенныеПоФО.Добавить("СпособОбеспеченияПотребностей");
КонецЕсли;
Если Не ИспользоватьУпаковкиНоменклатуры Тогда
РеквизитыОтключенныеПоФО.Добавить("ИспользоватьУпаковки");
КонецЕсли;
Если Не ИспользоватьГруппыДоступаНоменклатуры Тогда
РеквизитыОтключенныеПоФО.Добавить("ГруппаДоступа");
КонецЕсли;
Если Не ИспользоватьУчетНДС Тогда
РеквизитыОтключенныеПоФО.Добавить("СтавкаНДС");
КонецЕсли;
НоменклатураЛокализация.РеквизитыОтключенныеПоФО(РеквизитыОтключенныеПоФО);
Возврат РеквизитыОтключенныеПоФО;
КонецФункции
Функция ОбязательноОтображаемыеПриСозданииРеквизиты(ТипНоменклатуры, ОсобенностьУчета)
ОбязательноОтображаемыеПриСозданииРеквизиты = Новый Массив;
ОбязательноОтображаемыеПриСозданииРеквизиты.Добавить("НаименованиеПолное");
ОбязательноОтображаемыеПриСозданииРеквизиты.Добавить("СтранаПроисхождения");
ОбязательноОтображаемыеПриСозданииРеквизиты.Добавить("СтавкаНДС");
ОбязательноОтображаемыеПриСозданииРеквизиты.Добавить("КодТНВЭД");
Если ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга
И ОсобенностьУчета <> Перечисления.ОсобенностиУчетаНоменклатуры.ОрганизациейПродавцом Тогда
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(ОбязательноОтображаемыеПриСозданииРеквизиты, РеквизитыАгентскихУслуг());
КонецЕсли;
НоменклатураЛокализация.ОбязательноОтображаемыеПриСозданииРеквизиты(ОбязательноОтображаемыеПриСозданииРеквизиты,
ТипНоменклатуры,
ОсобенностьУчета);
Возврат ОбязательноОтображаемыеПриСозданииРеквизиты;
КонецФункции
Функция НеотображаемыеВТаблицеНастроекРеквизиты() Экспорт
НеотображаемыеВТаблицеНастроекРеквизиты = Новый Массив;
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(НеотображаемыеВТаблицеНастроекРеквизиты, РеквизитыПризнаковОсобенностейУчета(Метаданные.Справочники.Номенклатура));
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("КодДляПоиска");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ИспользоватьИндивидуальныйШаблонЦенника");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ИспользоватьИндивидуальныйШаблонЭтикетки");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ИспользоватьУпаковки");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("НаборУпаковок");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ТипНоменклатуры");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ЕстьТоварыДругогоКачества");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ИспользованиеХарактеристик");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("НоменклатураМногооборотнаяТара");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ХарактеристикаМногооборотнаяТара");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ОсобенностьУчета");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ЕдиницаИзмеренияТНВЭД");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ЕдиницаИзмеренияСрокаГодности");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("КоэффициентЕдиницыДляОтчетов");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ВладелецХарактеристик");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ВладелецСерий");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ВладелецТоварныхКатегорий");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ГруппаДоступа");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ВариантОформленияПродажи");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ВесЕдиницаИзмерения");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ВесЗнаменатель");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ВесМожноУказыватьВДокументах");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ВесЧислитель");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ОбъемЕдиницаИзмерения");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ОбъемЗнаменатель");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ОбъемМожноУказыватьВДокументах");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ОбъемЧислитель");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ДлинаЕдиницаИзмерения");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ДлинаЗнаменатель");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ДлинаМожноУказыватьВДокументах");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ДлинаЧислитель");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ПлощадьЕдиницаИзмерения");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ПлощадьЗнаменатель");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ПлощадьМожноУказыватьВДокументах");
НеотображаемыеВТаблицеНастроекРеквизиты.Добавить("ПлощадьЧислитель");
НоменклатураЛокализация.НеотображаемыеВТаблицеНастроекРеквизиты(НеотображаемыеВТаблицеНастроекРеквизиты);
Возврат НеотображаемыеВТаблицеНастроекРеквизиты;
КонецФункции
Функция НеиспользуемыеДляКонтроляУникальностиРеквизиты() Экспорт
НеиспользуемыеДляКонтроляУникальностиРеквизиты = Новый Массив;
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("НаименованиеПолное");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("Описание");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ФайлКартинки");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ШаблонЦенника");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ШаблонЭтикетки");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ФайлОписанияДляСайта");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ИспользоватьИндивидуальныйШаблонЦенника");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ИспользоватьИндивидуальныйШаблонЭтикетки");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("СрокГодности");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ОбособленнаяЗакупкаПродажа");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ВесИспользовать");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ОбъемИспользовать");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ПлощадьИспользовать");
НеиспользуемыеДляКонтроляУникальностиРеквизиты.Добавить("ДлинаИспользовать");
НоменклатураЛокализация.НеиспользуемыеДляКонтроляУникальностиРеквизиты(НеиспользуемыеДляКонтроляУникальностиРеквизиты);
Возврат НеиспользуемыеДляКонтроляУникальностиРеквизиты;
КонецФункции
Функция НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы() Экспорт
НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы = Новый Массив;
НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы.Добавить(Новый ОписаниеТипов("СправочникСсылка.НоменклатураПрисоединенныеФайлы"));
НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы.Добавить(Новый ОписаниеТипов("СправочникСсылка.Файлы"));
НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы.Добавить(Новый ОписаниеТипов("ХранилищеЗначения"));
НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы.Добавить(Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(0)));
НоменклатураЛокализация.НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы(НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы);
Возврат НеиспользуемыеДляКонтроляЗаполненияИОтборовТипы;
КонецФункции
Функция ЗависимостьРеквизитовОтТипаНоменклатуры(ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
ИспользоватьСрокГодностиСерии,
ЭтоРеквизитыХарактеристик) Экспорт
Если ТипЗнч(ИспользованиеХарактеристик) = Тип("ПеречислениеСсылка.ВариантыИспользованияХарактеристикНоменклатуры") Тогда
ИспользоватьХарактеристики = ИспользованиеХарактеристик <> Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать;
Иначе
ИспользоватьХарактеристики = ИспользованиеХарактеристик;
КонецЕсли;
ЭтоТовар = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар);
ЭтоНабор = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Набор);
ЭтоУслуга = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга);
ЭтоРабота = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа);
ЭтоМногооборотнаяТара = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
КиЗГИСМ = НоменклатураЛокализация.ТоварКиЗГИСМ(ОсобенностьУчета);
ТаблицаРеквизитов = Новый ТаблицаЗначений;
ТаблицаРеквизитов.Колонки.Добавить("Реквизит");
ТаблицаРеквизитов.Колонки.Добавить("Использование");
Если ЭтоРеквизитыХарактеристик Тогда
Реквизиты = Метаданные.Справочники.ХарактеристикиНоменклатуры.Реквизиты;
Иначе
Реквизиты = Метаданные.Справочники.Номенклатура.Реквизиты;
КонецЕсли;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.Принципал;
НоваяСтрока.Использование = (ЭтоУслуга
Или ЭтоРабота)
И (ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.ОрганизациейПоАгентскойСхеме
Или ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.Партнером)
И (Не ИспользоватьХарактеристики
Или ЭтоРеквизитыХарактеристик);
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.Контрагент;
НоваяСтрока.Использование = (ЭтоУслуга
Или ЭтоРабота)
И ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.Партнером
И (Не ИспользоватьХарактеристики
Или ЭтоРеквизитыХарактеристик);
Если ЭтоРеквизитыХарактеристик Тогда
НоменклатураЛокализация.ЗависимостьРеквизитовОтТипаНоменклатуры(ТаблицаРеквизитов,
ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
Истина);
ТаблицаРеквизитов.Индексы.Добавить("Реквизит");
Возврат ТаблицаРеквизитов;
КонецЕсли;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ВариантОформленияПродажи;
НоваяСтрока.Использование = (ПолучитьФункциональнуюОпцию("ИспользоватьАктыНаПередачуПрав")
И ЭтоТовар)
Или ЭтоРабота
Или ЭтоУслуга;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.СкладскаяГруппа;
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.Качество;
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
ЗависимостьРеквизитаМерыОтТипаНоменклатуры(ТаблицаРеквизитов, Реквизиты, ТипНоменклатуры, "Вес");
ЗависимостьРеквизитаМерыОтТипаНоменклатуры(ТаблицаРеквизитов, Реквизиты, ТипНоменклатуры, "Объем");
ЗависимостьРеквизитаМерыОтТипаНоменклатуры(ТаблицаРеквизитов, Реквизиты, ТипНоменклатуры, "Площадь");
ЗависимостьРеквизитаМерыОтТипаНоменклатуры(ТаблицаРеквизитов, Реквизиты, ТипНоменклатуры, "Длина");
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ИспользоватьУпаковки;
НоваяСтрока.Использование = ЭтоТовар;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.НаборУпаковок;
НоваяСтрока.Использование = ЭтоТовар;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ОбособленнаяЗакупкаПродажа;
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоРабота;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ПоставляетсяВМногооборотнойТаре;
НоваяСтрока.Использование = ЭтоТовар;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.НоменклатураМногооборотнаяТара;
НоваяСтрока.Использование = ЭтоТовар;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ХарактеристикаМногооборотнаяТара;
НоваяСтрока.Использование = ЭтоТовар;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ЕдиницаИзмерения;
НоваяСтрока.Использование = Истина;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.СрокГодности;
НоваяСтрока.Использование = (ЭтоТовар
Или ЭтоМногооборотнаяТара)
И ИспользоватьСрокГодностиСерии;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ЕдиницаИзмеренияСрокаГодности;
НоваяСтрока.Использование = (ЭтоТовар
Или ЭтоМногооборотнаяТара)
И ИспользоватьСрокГодностиСерии;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ГруппаФинансовогоУчета;
НоваяСтрока.Использование = Не ЭтоНабор;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.ВестиУчетСертификатовНоменклатуры;
НоваяСтрока.Использование = ЭтоТовар;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.СхемаОбеспечения;
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.СпособОбеспеченияПотребностей;
НоваяСтрока.Использование = ЭтоРабота;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.КодТНВЭД;
НоваяСтрока.Использование = Не (ЭтоРабота
Или ЭтоУслуга
Или КиЗГИСМ);
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты.СтранаПроисхождения;
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
НоменклатураЛокализация.ЗависимостьРеквизитовОтТипаНоменклатуры(ТаблицаРеквизитов,
ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
Ложь);
ТаблицаРеквизитов.Индексы.Добавить("Реквизит");
Возврат ТаблицаРеквизитов;
КонецФункции
Функция ЗначениеСвойствРеквизита() Экспорт
Результат = Новый Структура;
Результат.Вставить("Имя");
Результат.Вставить("Представление");
Результат.Вставить("Тип");
Результат.Вставить("Использование");
Результат.Вставить("ОбязательныйДляЗаполнения");
Результат.Вставить("ОбязательныйДляОтображенияПриСоздании", Ложь);
Результат.Вставить("РекомендуемыйДляКонтроляУникальности", Ложь);
Возврат Результат;
КонецФункции
Функция ВсеРеквизиты(ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
ИспользоватьСрокГодностиСерии) Экспорт
ЭтоТовар = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар);
ЭтоМногооборотнаяТара = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОбязательноОтображаемыеПриСозданииРеквизиты = ОбязательноОтображаемыеПриСозданииРеквизиты(ТипНоменклатуры,
ОсобенностьУчета);
РекомендуемыеДляКонтроляУникальностиРеквизиты = РекомендуемыеДляКонтроляУникальностиРеквизиты(ТипНоменклатуры, ОсобенностьУчета);
НастройкиРеквизитовПоТипу = ЗависимостьРеквизитовОтТипаНоменклатуры(ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
ИспользоватьСрокГодностиСерии,
Ложь);
РеквизитыОтключенныеПоФО = РеквизитыОтключенныеПоФО();
РеквизитыСПереопределеннойОбязательностьюЗаполнения = РеквизитыСПереопределеннойОбязательностьюЗаполнения(ТипНоменклатуры, ОсобенностьУчета, Неопределено);
ВсеРеквизиты = Новый Структура;
Для Каждого Реквизит Из Метаданные.Справочники.Номенклатура.Реквизиты Цикл
ЗначениеСвойств = ЗначениеСвойствРеквизита();
ЗначениеСвойств.Имя = Реквизит.Имя;
ПредставлениеРеквизита = "";
СтрокаНастройки = НастройкиРеквизитовПоТипу.Найти(Реквизит, "Реквизит");
Если СтрокаНастройки = Неопределено Тогда
ЗначениеСвойств.Использование = РеквизитыОтключенныеПоФО.Найти(Реквизит.Имя) = Неопределено;
Иначе
ЗначениеСвойств.Использование = СтрокаНастройки.Использование
И РеквизитыОтключенныеПоФО.Найти(Реквизит.Имя) = Неопределено;
КонецЕсли;
Если Реквизит.Имя = "ЕдиницаИзмерения" Тогда
Если ЭтоТовар
Или ЭтоМногооборотнаяТара Тогда
ПредставлениеРеквизита = НСтр("ru = 'Единица хранения'");
Иначе
ПредставлениеРеквизита = НСтр("ru = 'Единица измерения'");
КонецЕсли;
Иначе
ПредставлениеРеквизита = Реквизит.Синоним;
Если Не ЗначениеЗаполнено(ПредставлениеРеквизита) Тогда
ПредставлениеРеквизита = Реквизит.Имя;
КонецЕсли;
КонецЕсли;
ЗначениеСвойств.Представление = ПредставлениеРеквизита;
ОбязательныйДляЗаполнения = РеквизитыСПереопределеннойОбязательностьюЗаполнения.Получить(Реквизит.Имя);
Если ОбязательныйДляЗаполнения = Неопределено Тогда
ОбязательныйДляЗаполнения = (Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку);
КонецЕсли;
ЗначениеСвойств.ОбязательныйДляЗаполнения = ЗначениеСвойств.Использование
И ОбязательныйДляЗаполнения;
ЗначениеСвойств.Тип = Реквизит.Тип;
ЗначениеСвойств.ОбязательныйДляОтображенияПриСоздании = ЗначениеСвойств.Использование
И (ОбязательноОтображаемыеПриСозданииРеквизиты.Найти(Реквизит.Имя) <> Неопределено
Или ЗначениеСвойств.ОбязательныйДляЗаполнения);
ЗначениеСвойств.РекомендуемыйДляКонтроляУникальности = ЗначениеСвойств.Использование
И РекомендуемыеДляКонтроляУникальностиРеквизиты.Найти(Реквизит.Имя) <> Неопределено;
ВсеРеквизиты.Вставить(Реквизит.Имя, Новый ФиксированнаяСтруктура(ЗначениеСвойств));
КонецЦикла;
Возврат Новый ФиксированнаяСтруктура(ВсеРеквизиты);
КонецФункции
Процедура НастроитьФормуПоТаблицеНастроек(Форма) Экспорт
СтруктураПоиска = Новый Структура("Свойство");
Для Каждого СтрокаТаблицыРеквизитов Из Форма.ТаблицаНастроекРеквизитов Цикл
Если СтрокаТаблицыРеквизитов.ЭтоДопРеквизит Тогда
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьДополнительныеРеквизитыИСведения") Тогда
Продолжить;
КонецЕсли;
СтруктураПоиска.Свойство = СтрокаТаблицыРеквизитов.Свойство;
НайденныеСтроки = Форма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ИмяЭлементаФормы = НайденныеСтроки[0].ИмяРеквизитаЗначение;
Иначе
ИмяЭлементаФормы = СтрокаТаблицыРеквизитов.ИмяРеквизита;
КонецЕсли;
Если Форма.Элементы.Найти(ИмяЭлементаФормы) = Неопределено Тогда
Продолжить;
КонецЕсли;
СтрокаТаблицыРеквизитов.ПутьКДанным = ИмяЭлементаФормы;
Элемент = Форма.Элементы[ИмяЭлементаФормы];
Если Элемент.Вид = ВидПоляФормы.ПолеВвода Тогда
Форма.Элементы[ИмяЭлементаФормы].АвтоОтметкаНезаполненного = СтрокаТаблицыРеквизитов.ЗаполнятьОбязательно;
Если Не СтрокаТаблицыРеквизитов.ЗаполнятьОбязательно
И Форма.Элементы[ИмяЭлементаФормы].ОтметкаНезаполненного Тогда
Форма.Элементы[ИмяЭлементаФормы].ОтметкаНезаполненного = Ложь;
КонецЕсли;
КонецЕсли;
Если СтрокаТаблицыРеквизитов.Уникален Тогда
Элемент.ЦветФона = ЦветаСтиля.ЦветФонаВыделения;
ИначеЕсли Элемент.Вид = ВидПоляФормы.ПолеВвода Тогда
Элемент.ЦветФона = Новый Цвет;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция РеквизитыСПереопределеннойОбязательностьюЗаполнения(ТипНоменклатуры, ОсобенностьУчета, Объект) Экспорт
РеквизитыСПереопределеннойОбязательностьюЗаполнения = Новый Соответствие;
ЗапрашиваемыеРеквизитыВидаНоменклатуры = "ШаблонРабочегоНаименованияНоменклатуры, ИспользоватьСрокГодностиСерии,
|ИспользованиеХарактеристик";
Если Объект = Неопределено Тогда
РеквизитыВидаНоменклатуры = ОбщегоНазначенияУТ.ЗначенияРеквизитовОбъектаПоУмолчанию(Справочники.ВидыНоменклатуры.ПустаяСсылка(),
ЗапрашиваемыеРеквизитыВидаНоменклатуры);
Иначе
РеквизитыВидаНоменклатуры = ОбщегоНазначенияУТ.ЗначенияРеквизитовОбъектаПоУмолчанию(Объект.ВидНоменклатуры,
ЗапрашиваемыеРеквизитыВидаНоменклатуры);
КонецЕсли;
Если Объект = Неопределено Тогда
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("Наименование", Истина);
Иначе
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("Наименование", Не ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонРабочегоНаименованияНоменклатуры));
КонецЕсли;
Если Объект = Неопределено Тогда
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ШаблонЦенника", Ложь);
Иначе
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ШаблонЦенника", Объект.ИспользоватьИндивидуальныйШаблонЦенника);
КонецЕсли;
Если Объект = Неопределено Тогда
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ШаблонЭтикетки", Ложь);
Иначе
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ШаблонЭтикетки", Объект.ИспользоватьИндивидуальныйШаблонЭтикетки);
КонецЕсли;
Если Объект = Неопределено Тогда
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("НаборУпаковок", Ложь);
Иначе
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("НаборУпаковок", Объект.ИспользоватьУпаковки);
КонецЕсли;
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ГруппаДоступа", Справочники.ГруппыДоступаНоменклатуры.ИспользуютсяГруппыДоступа());
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ЕдиницаИзмерения", ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
Или ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара
Или ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Набор);
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("Принципал", ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.ОрганизациейПоАгентскойСхеме
Или ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.Партнером);
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("Контрагент", ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.Партнером);
Если Объект = Неопределено Тогда
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("НоменклатураМногооборотнаяТара", Ложь);
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ХарактеристикаМногооборотнаяТара", Ложь);
Иначе
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("НоменклатураМногооборотнаяТара", Объект.ПоставляетсяВМногооборотнойТаре);
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ХарактеристикаМногооборотнаяТара",
Объект.ПоставляетсяВМногооборотнойТаре
И Справочники.Номенклатура.ХарактеристикиИспользуются(Объект.НоменклатураМногооборотнаяТара));
КонецЕсли;
Если Объект = Неопределено Тогда
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ЕдиницаИзмеренияСрокаГодности", Ложь);
Иначе
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить("ЕдиницаИзмеренияСрокаГодности", РеквизитыВидаНоменклатуры.ИспользоватьСрокГодностиСерии);
КонецЕсли;
ПереопределитьОбязательностьЗаполненияРеквизитовМеры(Объект, РеквизитыСПереопределеннойОбязательностьюЗаполнения, "Вес");
ПереопределитьОбязательностьЗаполненияРеквизитовМеры(Объект, РеквизитыСПереопределеннойОбязательностьюЗаполнения, "Объем");
ПереопределитьОбязательностьЗаполненияРеквизитовМеры(Объект, РеквизитыСПереопределеннойОбязательностьюЗаполнения, "Площадь");
ПереопределитьОбязательностьЗаполненияРеквизитовМеры(Объект, РеквизитыСПереопределеннойОбязательностьюЗаполнения, "Длина");
НоменклатураЛокализация.РеквизитыСПереопределеннойОбязательностьюЗаполнения(РеквизитыСПереопределеннойОбязательностьюЗаполнения, ТипНоменклатуры, ОсобенностьУчета, Объект);
Если Объект <> Неопределено Тогда
ИзменяемыеРеквизиты = Новый Массив;
ТаблицаНастроекРеквизитов = ЗависимостьРеквизитовОтТипаНоменклатуры(ТипНоменклатуры,
ОсобенностьУчета,
РеквизитыВидаНоменклатуры.ИспользованиеХарактеристик,
РеквизитыВидаНоменклатуры.ИспользоватьСрокГодностиСерии,
Ложь);
Для Каждого Реквизит из РеквизитыСПереопределеннойОбязательностьюЗаполнения Цикл
Если Реквизит.Значение Тогда
Если Реквизит.Ключ = "Наименование" Тогда
Продолжить;
КонецЕсли;
МетаданныеРеквизита = Метаданные.Справочники.Номенклатура.Реквизиты.Найти(Реквизит.Ключ);
НастройкаРеквизита = ТаблицаНастроекРеквизитов.Найти(МетаданныеРеквизита);
Если ЗначениеЗаполнено(НастройкаРеквизита)
И Не НастройкаРеквизита.Использование Тогда
ИзменяемыеРеквизиты.Добавить(Реквизит.Ключ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для Каждого ИмяРеквизита Из ИзменяемыеРеквизиты Цикл
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить(ИмяРеквизита, Ложь);
КонецЦикла;
КонецЕсли;
Возврат РеквизитыСПереопределеннойОбязательностьюЗаполнения;
КонецФункции
Функция РекомендуемыеДляКонтроляУникальностиРеквизиты(ТипНоменклатуры, ОсобенностьУчета)
РекомендуемыеДляКонтроляУникальностиРеквизиты = Новый Массив;
НоменклатураЛокализация.РекомендуемыеДляКонтроляУникальностиРеквизиты(РекомендуемыеДляКонтроляУникальностиРеквизиты, ТипНоменклатуры, ОсобенностьУчета);
Возврат РекомендуемыеДляКонтроляУникальностиРеквизиты;
КонецФункции
Процедура ПроверитьУникальностьЭлементаПоРеквизитам(Форма) Экспорт
Форма.ТаблицаНайдено.Очистить();
РеквизитыКонтроляУникальности = Форма.ТаблицаНастроекРеквизитов.НайтиСтроки(Новый Структура("Уникален", Истина));
Если РеквизитыКонтроляУникальности.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ЭтоНоменклатура = ТипЗнч(Форма.Объект.Ссылка) = Тип("СправочникСсылка.Номенклатура");
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПроверяемыйСправочник.Ссылка КАК Ссылка,
| ИСТИНА КАК НайденоПоДопРеквизитам
|ИЗ
| Справочник.ИмяПроверяемогоСправочника КАК ПроверяемыйСправочник
| ,&ТекстЗапросаСоединенияСТЧДопРеквизитов
|ГДЕ
| &ТекстЗапросаУсловияПоРеквизитам";
ШаблонУсловияПоРеквизиту =
"
| ПроверяемыйСправочник.ИмяРеквизита = &ИмяРеквизита";
ШаблонУсловияПоДопРеквизиту =
"
| (УсловиеПоДопРеквизиту_СчетчикУсловий.Значение ЕСТЬ NULL
| И &ЗначениеПустое_СчетчикУсловий
| ИЛИ УсловиеПоДопРеквизиту_СчетчикУсловий.Свойство = &Свойство_СчетчикУсловий
| И УсловиеПоДопРеквизиту_СчетчикУсловий.Значение = &Значение_СчетчикУсловий)";
ШаблонТекстаСоединения =
"
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ИмяПроверяемогоСправочника.ДополнительныеРеквизиты КАК УсловиеПоДопРеквизиту_СчетчикУсловий
| ПО ПроверяемыйСправочник.Ссылка = УсловиеПоДопРеквизиту_СчетчикУсловий.Ссылка
| И УсловиеПоДопРеквизиту_СчетчикУсловий.Свойство = &Свойство_СчетчикУсловий";
СчетчикУсловий = 1;
ТекстыУсловий = Новый Массив;
Если ЭтоНоменклатура Тогда
ТекстУсловия =
"
| НЕ ПроверяемыйСправочник.ЭтоГруппа
| И ПроверяемыйСправочник.ВидНоменклатуры В(&ВидыНоменклатуры)";
ТекстыУсловий.Добавить(ТекстУсловия);
Запрос.УстановитьПараметр("ВидыНоменклатуры", ВидыНоменклатурыИдентичныеПоНастройкамКонтроляУникальности(Форма.Объект));
Иначе
ТекстУсловия =
"
| ПроверяемыйСправочник.Владелец = &Владелец";
ТекстыУсловий.Добавить(ТекстУсловия);
Запрос.УстановитьПараметр("Владелец", Форма.Объект.Владелец);
КонецЕсли;
ТекстыСоединения = Новый Массив;
Для Каждого СтрокаУсловия Из РеквизитыКонтроляУникальности Цикл
Если Не СтрокаУсловия.ЭтоДопРеквизит Тогда
ТекстУсловия = СтрЗаменить(ШаблонУсловияПоРеквизиту, "ИмяРеквизита", СтрокаУсловия.ИмяРеквизита);
ТекстыУсловий.Добавить(ТекстУсловия);
Запрос.УстановитьПараметр(СтрокаУсловия.ИмяРеквизита, Форма.Объект[СтрокаУсловия.ПутьКДанным]);
Иначе
СчетчикУсловийСтрока = Формат(СчетчикУсловий,"ЧГ=");
ТекстУсловия = ШаблонУсловияПоДопРеквизиту;
ТекстУсловия = СтрЗаменить(ТекстУсловия, "&Свойство_СчетчикУсловий", "&Свойство_" + СчетчикУсловийСтрока);
ТекстУсловия = СтрЗаменить(ТекстУсловия, "&Значение_СчетчикУсловий", "&Значение_" + СчетчикУсловийСтрока);
ТекстУсловия = СтрЗаменить(ТекстУсловия, "&ЗначениеПустое_СчетчикУсловий", "&ЗначениеПустое_" + СчетчикУсловийСтрока);
ТекстУсловия = СтрЗаменить(ТекстУсловия, "СчетчикУсловий", СчетчикУсловийСтрока);
ТекстыУсловий.Добавить(ТекстУсловия);
Запрос.УстановитьПараметр("Свойство_" + СчетчикУсловий, СтрокаУсловия.Свойство);
Запрос.УстановитьПараметр("Значение_" + СчетчикУсловий, Форма[СтрокаУсловия.ПутьКДанным]);
Запрос.УстановитьПараметр("ЗначениеПустое_" + СчетчикУсловий, ?(ТипЗнч(Форма[СтрокаУсловия.ПутьКДанным]) = Тип("Булево")
И Не Форма[СтрокаУсловия.ПутьКДанным],
Истина,
Не ЗначениеЗаполнено(Форма[СтрокаУсловия.ПутьКДанным])));
ТекстСоединения = СтрЗаменить(ШаблонТекстаСоединения, "СчетчикУсловий", Формат(СчетчикУсловий,"ЧГ="));
ТекстыСоединения.Добавить(ТекстСоединения);
СчетчикУсловий = СчетчикУсловий + 1;
КонецЕсли;
КонецЦикла;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ТекстЗапросаСоединенияСТЧДопРеквизитов", СтрСоединить(ТекстыСоединения));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаУсловияПоРеквизитам", СтрСоединить(ТекстыУсловий, Символы.ПС + "И" + Символы.НПП));
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяПроверяемогоСправочника", ?(ЭтоНоменклатура, "Номенклатура", "ХарактеристикиНоменклатуры"));
Запрос.Текст = ТекстЗапроса;
Форма.ТаблицаНайдено.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
Функция ВидыНоменклатурыИдентичныеПоНастройкамКонтроляУникальности(Объект)
ИдентичныеВидыНоменклатуры = Новый Массив;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеквизитыДляКонтроля.ИмяРеквизита,
| РеквизитыДляКонтроля.ЭтоДопРеквизит,
| РеквизитыДляКонтроля.Свойство
|ИЗ
| Справочник.ВидыНоменклатуры.РеквизитыДляКонтроляНоменклатуры КАК РеквизитыДляКонтроля
|ГДЕ
| РеквизитыДляКонтроля.Уникален
| И РеквизитыДляКонтроля.Ссылка = &ВидНоменклатуры
| И НЕ (НЕ РеквизитыДляКонтроля.ЭтоДопРеквизит
| И РеквизитыДляКонтроля.ИмяРеквизита = &ИмяВидаНоменклатуры)
|;
|
|
|ВЫБРАТЬ
| РеквизитыДляКонтроля.Ссылка КАК ВидНоменклатуры,
| РеквизитыДляКонтроля.ИмяРеквизита КАК ИмяРеквизита,
| РеквизитыДляКонтроля.ЭтоДопРеквизит КАК ЭтоДопРеквизит,
| РеквизитыДляКонтроля.Свойство КАК Свойство
|ИЗ
| Справочник.ВидыНоменклатуры.РеквизитыДляКонтроляНоменклатуры КАК РеквизитыДляКонтроля
|ГДЕ
| РеквизитыДляКонтроля.Уникален
| И РеквизитыДляКонтроля.Ссылка.ТипНоменклатуры = &ТипНоменклатуры
| И НЕ (НЕ РеквизитыДляКонтроля.ЭтоДопРеквизит
| И РеквизитыДляКонтроля.ИмяРеквизита = &ИмяВидаНоменклатуры)
|
|УПОРЯДОЧИТЬ ПО
| ВидНоменклатуры,
| ИмяРеквизита,
| ЭтоДопРеквизит,
| Свойство
|
|ИТОГИ ПО
| ВидНоменклатуры";
Запрос.УстановитьПараметр("ВидНоменклатуры", Объект.ВидНоменклатуры);
Запрос.УстановитьПараметр("ТипНоменклатуры", Объект.ТипНоменклатуры);
Запрос.УстановитьПараметр("ИмяВидаНоменклатуры", "ВидНоменклатуры");
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ТаблицаРеквизитовТекВидаНоменклатуры = РезультатыЗапроса[0].Выгрузить();
КолРеквизитовДляКонтроля = ТаблицаРеквизитовТекВидаНоменклатуры.Количество();
РеквизитыВидовНоменклатуры = РезультатыЗапроса[1];
Отбор = Новый Структура("ИмяРеквизита, ЭтоДопРеквизит, Свойство");
ВыборкаПоВиду = РеквизитыВидовНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоВиду.Следующий() Цикл
СоответствуетУсловиям = Истина;
ВыборкаПоРеквизитам = ВыборкаПоВиду.Выбрать();
КолРеквизитовВида = ВыборкаПоРеквизитам.Количество();
Если КолРеквизитовВида = 0 Тогда
Продолжить;
КонецЕсли;
Если КолРеквизитовВида <> КолРеквизитовДляКонтроля Тогда
Продолжить;
КонецЕсли;
Пока ВыборкаПоРеквизитам.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Отбор, ВыборкаПоРеквизитам);
Если ТаблицаРеквизитовТекВидаНоменклатуры.НайтиСтроки(Отбор).Количество() = 0 Тогда
СоответствуетУсловиям = Ложь;
КонецЕсли;
Если Не СоответствуетУсловиям Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если Не СоответствуетУсловиям Тогда
Продолжить;
КонецЕсли;
ИдентичныеВидыНоменклатуры.Добавить(ВыборкаПоВиду.ВидНоменклатуры);
КонецЦикла;
Возврат ИдентичныеВидыНоменклатуры;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ДоступенВводБезКонтроля() Экспорт
Возврат ПраваПользователяПовтИсп.ВводИнформацииПоНоменклатуреБезКонтроля();
КонецФункции
Функция РабочееНаименованиеУникально(Объект) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Ссылка КАК Номенклатура
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка <> &Ссылка
| И Номенклатура.Наименование = &Наименование
| И НЕ Номенклатура.ЭтоГруппа";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("Наименование", Объект.Наименование);
Возврат Запрос.Выполнить().Пустой();
КонецФункции
Процедура ОтработатьЛогикуЗаполненияМеры(Номенклатура, МернаяЕдиницаХранения, ТипЕдиницы, Мера) Экспорт
Если Мера <> "Вес"
И Мера <> "Длина"
И Мера <> "Площадь"
И Мера <> "Объем" Тогда
Возврат;
КонецЕсли;
РеквизитыМеры = РеквизитыМеры(Мера);
Если МернаяЕдиницаХранения
И ТипЕдиницы = Мера
И (Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
Или Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара) Тогда
Номенклатура[РеквизитыМеры.Использовать] = Истина;
Номенклатура[РеквизитыМеры.Знаменатель] = 1;
Номенклатура[РеквизитыМеры.Числитель] = 1;
Номенклатура[РеквизитыМеры.МожноУказыватьВДокументах] = Истина;
Номенклатура[РеквизитыМеры.ЕдиницаИзмерения] = Номенклатура.ЕдиницаИзмерения;
КонецЕсли;
Если Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа
Или Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга
Или Номенклатура.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Набор
Или Номенклатура[РеквизитыМеры.Знаменатель] = 0
Или Номенклатура[РеквизитыМеры.Числитель] = 0
Или Не Номенклатура[РеквизитыМеры.Использовать] Тогда
Номенклатура[РеквизитыМеры.ЕдиницаИзмерения] = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
Номенклатура[РеквизитыМеры.Знаменатель] = 0;
Номенклатура[РеквизитыМеры.Числитель] = 0;
Номенклатура[РеквизитыМеры.МожноУказыватьВДокументах] = Ложь;
Номенклатура[РеквизитыМеры.Использовать] = Ложь;
Иначе
Если Не ЗначениеЗаполнено(Номенклатура[РеквизитыМеры.ЕдиницаИзмерения]) Тогда
Номенклатура[РеквизитыМеры.ЕдиницаИзмерения] = НоменклатураСервер.ЕдиницаИзмеренияПоУмолчанию(Мера);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ТаблицаНастроекРеквизитов(ВидНоменклатуры,
ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
ИспользоватьСрокГодностиСерии,
ВладелецРеквизитов) Экспорт
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| ВсеРеквизитыНоменклатурыТаблица.Имя КАК Имя,
| ВсеРеквизитыНоменклатурыТаблица.Представление КАК Представление,
| ВсеРеквизитыНоменклатурыТаблица.ОбязательныйДляЗаполнения КАК ОбязательныйДляЗаполнения,
| ВсеРеквизитыНоменклатурыТаблица.ОбязательныйДляОтображенияПриСоздании КАК ОбязательныйДляОтображенияПриСоздании,
| ВсеРеквизитыНоменклатурыТаблица.Использование КАК Использование
|ПОМЕСТИТЬ ВсеРеквизитыНоменклатурыТаблица
|ИЗ
| &ВсеРеквизитыНоменклатурыТаблица КАК ВсеРеквизитыНоменклатурыТаблица
|
|ИНДЕКСИРОВАТЬ ПО
| Имя
|;
|
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА РеквизитыДляКонтроля.ЭтоДопРеквизит
| ТОГДА РеквизитыДляКонтроля.Свойство.Представление
| ИНАЧЕ РеквизитыДляКонтроля.ПредставлениеРеквизита
| КОНЕЦ КАК Представление,
| РеквизитыДляКонтроля.ЭтоДопРеквизит КАК ЭтоДопРеквизит,
| ВЫБОР
| КОГДА РеквизитыДляКонтроля.ЭтоДопРеквизит
| ТОГДА РеквизитыДляКонтроля.Свойство.Наименование
| ИНАЧЕ РеквизитыДляКонтроля.ИмяРеквизита
| КОНЕЦ КАК ИмяРеквизита,
| РеквизитыДляКонтроля.Свойство КАК Свойство,
| ВЫБОР
| КОГДА РеквизитыДляКонтроля.ЭтоДопРеквизит
| ТОГДА ЕСТЬNULL(ВТВсеДополнительныеРеквизиты.ЗаполнятьОбязательно, ЛОЖЬ)
| ИНАЧЕ РеквизитыДляКонтроля.ЗаполнятьОбязательно
| КОНЕЦ КАК ЗаполнятьОбязательно,
| РеквизитыДляКонтроля.Уникален КАК Уникален,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВТВсеДополнительныеРеквизиты.ЗаполнятьОбязательно, ЛОЖЬ)
| ТОГДА ИСТИНА
| ИНАЧЕ РеквизитыДляКонтроля.ОтображатьПриСоздании
| КОНЕЦ КАК ОтображатьПриСоздании,
| РеквизитыДляКонтроля.ЭтоДопРеквизит КАК Использование,
| ЛОЖЬ КАК ЕстьРеквизитВМетаданных
|ПОМЕСТИТЬ РеквизитыДляКонтроляТаблица
|ИЗ
| #ИсточникРеквизитыДляКонтроля КАК РеквизитыДляКонтроля
| ЛЕВОЕ СОЕДИНЕНИЕ ВТВсеДополнительныеРеквизиты КАК ВТВсеДополнительныеРеквизиты
| ПО РеквизитыДляКонтроля.Свойство = ВТВсеДополнительныеРеквизиты.Свойство
|ГДЕ
| РеквизитыДляКонтроля.Ссылка = &ВидНоменклатуры
| И (РеквизитыДляКонтроля.ЭтоДопРеквизит
| И НЕ ВТВсеДополнительныеРеквизиты.Свойство ЕСТЬ NULL
| ИЛИ НЕ РеквизитыДляКонтроля.ЭтоДопРеквизит)
|
|ИНДЕКСИРОВАТЬ ПО
| ИмяРеквизита
|;
|
|
|ВЫБРАТЬ
| ВложенныйЗапрос.ЭтоДопРеквизит КАК ЭтоДопРеквизит,
| ВложенныйЗапрос.ИмяРеквизита КАК ИмяРеквизита,
| ВложенныйЗапрос.Свойство КАК Свойство,
| МАКСИМУМ(ВложенныйЗапрос.ЗаполнятьОбязательно) КАК ЗаполнятьОбязательно,
| МАКСИМУМ(ВложенныйЗапрос.Уникален) КАК Уникален,
| МАКСИМУМ(ВложенныйЗапрос.ОтображатьПриСоздании) КАК ОтображатьПриСоздании,
| МАКСИМУМ(ВложенныйЗапрос.Использование) КАК Использование,
| МАКСИМУМ(ВложенныйЗапрос.ЕстьРеквизитВМетаданных) КАК ЕстьРеквизитВМетаданных
|ПОМЕСТИТЬ ВТДляЗапроса
|ИЗ
| (ВЫБРАТЬ
| РеквизитыДляКонтроля.ЭтоДопРеквизит КАК ЭтоДопРеквизит,
| РеквизитыДляКонтроля.ИмяРеквизита КАК ИмяРеквизита,
| РеквизитыДляКонтроля.Свойство КАК Свойство,
| РеквизитыДляКонтроля.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
| РеквизитыДляКонтроля.Уникален КАК Уникален,
| РеквизитыДляКонтроля.ОтображатьПриСоздании КАК ОтображатьПриСоздании,
| РеквизитыДляКонтроля.Использование КАК Использование,
| ЛОЖЬ КАК ЕстьРеквизитВМетаданных
| ИЗ
| РеквизитыДляКонтроляТаблица КАК РеквизитыДляКонтроля
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЛОЖЬ,
| ВсеРеквизитыНоменклатурыТаблица.Имя,
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка),
| ВсеРеквизитыНоменклатурыТаблица.ОбязательныйДляЗаполнения,
| ЛОЖЬ,
| ВсеРеквизитыНоменклатурыТаблица.ОбязательныйДляОтображенияПриСоздании,
| ВсеРеквизитыНоменклатурыТаблица.Использование,
| ИСТИНА
| ИЗ
| ВсеРеквизитыНоменклатурыТаблица КАК ВсеРеквизитыНоменклатурыТаблица) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.ЭтоДопРеквизит,
| ВложенныйЗапрос.ИмяРеквизита,
| ВложенныйЗапрос.Свойство
|
|ИНДЕКСИРОВАТЬ ПО
| Свойство,
| ИмяРеквизита
|;
|
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ВТДляЗапроса.ЕстьРеквизитВМетаданных
| ТОГДА ЕСТЬNULL(ВсеРеквизитыНоменклатурыТаблица.Представление, """")
| ИНАЧЕ ЕСТЬNULL(РеквизитыДляКонтроляТаблица.Представление, """")
| КОНЕЦ КАК Представление,
| ВТДляЗапроса.ЭтоДопРеквизит КАК ЭтоДопРеквизит,
| ВТДляЗапроса.ИмяРеквизита КАК ИмяРеквизита,
| ВТДляЗапроса.Свойство КАК Свойство,
| ВТДляЗапроса.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
| ВТДляЗапроса.Уникален КАК Уникален,
| ВТДляЗапроса.ОтображатьПриСоздании КАК ОтображатьПриСоздании,
| ВТДляЗапроса.Использование КАК Использование,
| ВТДляЗапроса.Свойство.ТипЗначения КАК Тип,
| ЕСТЬNULL(ВТВсеДополнительныеРеквизиты.Набор, ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)) КАК Набор,
| ЕСТЬNULL(ВТВсеДополнительныеРеквизиты.ЭтоОбщийРеквизит, ЛОЖЬ) КАК ЭтоОбщийРеквизит,
| ЕСТЬNULL(ВТВсеДополнительныеРеквизиты.НаборСвойств, ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка)) КАК НаборСвойств
|ИЗ
| ВТДляЗапроса КАК ВТДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ ВТВсеДополнительныеРеквизиты КАК ВТВсеДополнительныеРеквизиты
| ПО ВТДляЗапроса.Свойство = ВТВсеДополнительныеРеквизиты.Свойство
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВсеРеквизитыНоменклатурыТаблица КАК ВсеРеквизитыНоменклатурыТаблица
| ПО ВТДляЗапроса.ИмяРеквизита = ВсеРеквизитыНоменклатурыТаблица.Имя
| И ВТДляЗапроса.ЕстьРеквизитВМетаданных = ИСТИНА
|
| ЛЕВОЕ СОЕДИНЕНИЕ РеквизитыДляКонтроляТаблица КАК РеквизитыДляКонтроляТаблица
| ПО ВТДляЗапроса.ИмяРеквизита = РеквизитыДляКонтроляТаблица.ИмяРеквизита
| И ВТДляЗапроса.ЕстьРеквизитВМетаданных = ЛОЖЬ
|ГДЕ
| (ВТДляЗапроса.ЭтоДопРеквизит
| ИЛИ ВТДляЗапроса.ЕстьРеквизитВМетаданных)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВТВсеДополнительныеРеквизиты.Свойство.Представление КАК Представление,
| ИСТИНА КАК ЭтоДопРеквизит,
| ВТДляЗапроса.ИмяРеквизита КАК ИмяРеквизита,
| ВТВсеДополнительныеРеквизиты.Свойство КАК Свойство,
| ВТВсеДополнительныеРеквизиты.ЗаполнятьОбязательно КАК ЗаполнятьОбязательно,
| ЛОЖЬ КАК Уникален,
| ВТВсеДополнительныеРеквизиты.ЗаполнятьОбязательно КАК ОтображатьПриСоздании,
| ИСТИНА КАК Использование,
| ВТВсеДополнительныеРеквизиты.Тип КАК Тип,
| ВТВсеДополнительныеРеквизиты.Набор КАК Набор,
| ИСТИНА КАК ЭтоОбщийРеквизит,
| ВТВсеДополнительныеРеквизиты.НаборСвойств КАК НаборСвойств
|ИЗ
| ВТВсеДополнительныеРеквизиты КАК ВТВсеДополнительныеРеквизиты
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДляЗапроса КАК ВТДляЗапроса
| ПО ВТДляЗапроса.Свойство = ВТВсеДополнительныеРеквизиты.Свойство
|
|ГДЕ
| ВТДляЗапроса.ЭтоДопРеквизит ЕСТЬ NULL";
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ВсеДополнительныеРеквизиты(ВидНоменклатуры, ВладелецРеквизитов, МенеджерВременныхТаблиц);
Если ВладелецРеквизитов = "Номенклатура" Тогда
ВсеРеквизитыНоменклатурыТаблица = ЗначениеНастроекПовтИсп.ВсеРеквизитыНоменклатурыТаблица(ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
ИспользоватьСрокГодностиСерии);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ИсточникРеквизитыДляКонтроля", "Справочник.ВидыНоменклатуры.РеквизитыДляКонтроляНоменклатуры");
Иначе
ВсеРеквизитыНоменклатурыТаблица = ЗначениеНастроекПовтИсп.ВсеРеквизитыХарактеристикНоменклатурыТаблица(ТипНоменклатуры,
ОсобенностьУчета);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "#ИсточникРеквизитыДляКонтроля", "Справочник.ВидыНоменклатуры.РеквизитыДляКонтроляХарактеристик");
КонецЕсли;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);
Запрос.УстановитьПараметр("ВсеРеквизитыНоменклатурыТаблица", ВсеРеквизитыНоменклатурыТаблица);
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Таблица = Запрос.Выполнить().Выгрузить();
Для Каждого СтрТабл Из Таблица Цикл
Если Не СтрТабл.ЭтоДопРеквизит Тогда
Если ВладелецРеквизитов = "Номенклатура" Тогда
ОписаниеРеквизита = РеквизитОписание(СтрТабл.ИмяРеквизита,
ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
ИспользоватьСрокГодностиСерии);
Иначе
ОписаниеРеквизита = Справочники.ХарактеристикиНоменклатуры.РеквизитОписание(СтрТабл.ИмяРеквизита,
ТипНоменклатуры,
ОсобенностьУчета);
КонецЕсли;
СтрТабл.Тип = ОписаниеРеквизита.Тип;
СтрТабл.Представление = ОписаниеРеквизита.Представление;
СтрТабл.Использование = ОписаниеРеквизита.Использование;
СтрТабл.ЗаполнятьОбязательно = СтрТабл.Использование
И (ОписаниеРеквизита.ОбязательныйДляЗаполнения
Или СтрТабл.ЗаполнятьОбязательно);
СтрТабл.ОтображатьПриСоздании = СтрТабл.Использование
И (СтрТабл.ОтображатьПриСоздании
Или ОписаниеРеквизита.ОбязательныйДляОтображенияПриСоздании
Или СтрТабл.ЗаполнятьОбязательно
Или СтрТабл.Уникален);
Иначе
СтрТабл.ОтображатьПриСоздании = СтрТабл.ОтображатьПриСоздании
Или СтрТабл.ЗаполнятьОбязательно
Или СтрТабл.Уникален;
КонецЕсли;
КонецЦикла;
Возврат Таблица;
КонецФункции
Функция ВсеДополнительныеРеквизиты(ВидНоменклатуры, НазначениеДопРеквизитов, МенеджерВременныхТаблиц = Неопределено) Экспорт
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьДополнительныеРеквизитыИСведения") Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) КАК Набор,
| """" КАК ИмяРеквизита,
| """" КАК ПредставлениеРеквизита,
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка) КАК Свойство,
| ИСТИНА КАК ЭтоДопРеквизит,
| ЛОЖЬ КАК ЭтоОбщийРеквизит,
| ЛОЖЬ КАК ЗаполнятьОбязательно,
| ЛОЖЬ КАК ЗаполнятьОбязательноСУсловием,
| ЛОЖЬ КАК ВиденСУсловием,
| ЛОЖЬ КАК ДоступенСУсловием,
| ЗНАЧЕНИЕ(Справочник.НаборыДополнительныхРеквизитовИСведений.ПустаяСсылка) КАК НаборСвойств,
| ТИПЗНАЧЕНИЯ("""") КАК Тип
|ПОМЕСТИТЬ ВТВсеДополнительныеРеквизиты
|
|ГДЕ
| ЛОЖЬ";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка КАК Свойство
|ПОМЕСТИТЬ ЗаполнятьОбязательно
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов
|
|ГДЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Значение = &ВидНоменклатуры
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Реквизит = ""ВидНоменклатуры""
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.ЗависимоеСвойство ПОДОБНО ""ЗаполнятьОбязательно""
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.НаборСвойств = &НаборВида
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Условие = ""Равно""
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка.ЗаполнятьОбязательно
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов
|
|ГДЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Значение = &ВидНоменклатуры
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Реквизит = ""ВидНоменклатуры""
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.ЗависимоеСвойство ПОДОБНО ""ЗаполнятьОбязательно""
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.НаборСвойств = &ОбщийНабор
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Условие = ""ВСписке""
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка.ЗаполнятьОбязательно
|
|ИНДЕКСИРОВАТЬ ПО
| Свойство
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка КАК Свойство
|ПОМЕСТИТЬ ЗаполнятьОбязательноСУсловием
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов
|
|ГДЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.НаборСвойств В (&НаборВида, &ОбщийНабор)
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Реквизит <> ""ВидНоменклатуры""
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.ЗависимоеСвойство ПОДОБНО ""ЗаполнятьОбязательно""
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка.ЗаполнятьОбязательно
|
|ИНДЕКСИРОВАТЬ ПО
| Свойство
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка КАК Свойство
|ПОМЕСТИТЬ Виден
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов
|
|ГДЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.НаборСвойств В (&НаборВида, &ОбщийНабор)
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.ЗависимоеСвойство ПОДОБНО ""Виден""
|
|ИНДЕКСИРОВАТЬ ПО
| Свойство
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.Ссылка КАК Свойство
|ПОМЕСТИТЬ Доступен
|ИЗ
| ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов
|
|ГДЕ
| ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.НаборСвойств В (&НаборВида, &ОбщийНабор)
| И ДополнительныеРеквизитыИСведенияЗависимостиДополнительныхРеквизитов.ЗависимоеСвойство ПОДОБНО ""Доступен""
|
|ИНДЕКСИРОВАТЬ ПО
| Свойство
|;
|
|
|ВЫБРАТЬ
| ДополнительныеРеквизиты.Ссылка КАК Набор,
| ДополнительныеРеквизиты.Свойство.Наименование КАК ИмяРеквизита,
| ДополнительныеРеквизиты.Свойство.Заголовок КАК ПредставлениеРеквизита,
| ДополнительныеРеквизиты.Свойство КАК Свойство,
| ИСТИНА КАК ЭтоДопРеквизит,
| ВЫБОР
| КОГДА ДополнительныеРеквизиты.Ссылка = &ОбщийНабор
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоОбщийРеквизит,
| НЕ ЗаполнятьОбязательно.Свойство ЕСТЬ NULL КАК ЗаполнятьОбязательно,
| НЕ ЗаполнятьОбязательноСУсловием.Свойство ЕСТЬ NULL КАК ЗаполнятьОбязательноСУсловием,
| НЕ Виден.Свойство ЕСТЬ NULL КАК ВиденСУсловием,
| НЕ Доступен.Свойство ЕСТЬ NULL КАК ДоступенСУсловием,
| ДополнительныеРеквизиты.Свойство.НаборСвойств КАК НаборСвойств,
| ДополнительныеРеквизиты.Свойство.ТипЗначения КАК Тип
|ПОМЕСТИТЬ ВТВсеДополнительныеРеквизиты
|ИЗ
| Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
| ЛЕВОЕ СОЕДИНЕНИЕ ЗаполнятьОбязательно КАК ЗаполнятьОбязательно
| ПО ДополнительныеРеквизиты.Свойство = ЗаполнятьОбязательно.Свойство
| ЛЕВОЕ СОЕДИНЕНИЕ Доступен КАК Доступен
| ПО ДополнительныеРеквизиты.Свойство = Доступен.Свойство
| ЛЕВОЕ СОЕДИНЕНИЕ Виден КАК Виден
| ПО ДополнительныеРеквизиты.Свойство = Виден.Свойство
| ЛЕВОЕ СОЕДИНЕНИЕ ЗаполнятьОбязательноСУсловием КАК ЗаполнятьОбязательноСУсловием
| ПО ДополнительныеРеквизиты.Свойство = ЗаполнятьОбязательноСУсловием.Свойство
|
|ГДЕ
| НЕ ДополнительныеРеквизиты.ПометкаУдаления
| И (ДополнительныеРеквизиты.Ссылка = &ОбщийНабор
| ИЛИ ДополнительныеРеквизиты.Ссылка = &НаборВида)";
Если НазначениеДопРеквизитов = "Номенклатура" Тогда
ОбщийНабор = "&Набор_Справочник_Номенклатура_Общие";
НаборВида = "ВЫРАЗИТЬ(&ВидНоменклатуры КАК Справочник.ВидыНоменклатуры).НаборСвойств";
ИначеЕсли НазначениеДопРеквизитов = "ХарактеристикиНоменклатуры" Тогда
ОбщийНабор = "&Набор_Справочник_ХарактеристикиНоменклатуры_Общие";
НаборВида = "ВЫРАЗИТЬ(&ВидНоменклатуры КАК Справочник.ВидыНоменклатуры).НаборСвойствХарактеристик";
ИначеЕсли НазначениеДопРеквизитов = "СерииНоменклатуры" Тогда
ОбщийНабор = "&Набор_Справочник_СерииНоменклатуры_Общие";
НаборВида = "ВЫРАЗИТЬ(&ВидНоменклатуры КАК Справочник.ВидыНоменклатуры).НаборСвойствСерий";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОбщийНабор", ОбщийНабор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&НаборВида", НаборВида);
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);
Запрос.УстановитьПараметр("Набор_Справочник_Номенклатура_Общие", УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура_Общие"));
Запрос.УстановитьПараметр("Набор_Справочник_ХарактеристикиНоменклатуры_Общие", УправлениеСвойствами.НаборСвойствПоИмени("Справочник_ХарактеристикиНоменклатуры_Общие"));
Запрос.УстановитьПараметр("Набор_Справочник_СерииНоменклатуры_Общие", УправлениеСвойствами.НаборСвойствПоИмени("Справочник_СерииНоменклатуры_Общие"));
Если МенеджерВременныхТаблиц = Неопределено Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПОМЕСТИТЬ ВТВсеДополнительныеРеквизиты", "");
Запрос.Текст = ТекстЗапроса;
Возврат Запрос.Выполнить().Выгрузить();
Иначе
ТекстЗапроса = ТекстЗапроса + "
|
|ИНДЕКСИРОВАТЬ ПО
| Свойство";
Запрос.Текст = ТекстЗапроса;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Выполнить();
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция РеквизитОписание(Реквизит,
ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
ИспользоватьСрокГодностиСерии) Экспорт
Если ТипЗнч(Реквизит) = Тип("Строка")
Или ТипЗнч(Реквизит) = Тип("ОбъектМетаданных") Тогда
ВсеРеквизитыНоменклатуры = ЗначениеНастроекПовтИсп.ВсеРеквизитыНоменклатуры(ТипНоменклатуры,
ОсобенностьУчета,
ИспользованиеХарактеристик,
ИспользоватьСрокГодностиСерии);
Если ТипЗнч(Реквизит) = Тип("Строка") Тогда
ИмяРеквизита = Реквизит;
Иначе
ИмяРеквизита = Реквизит.Имя;
КонецЕсли;
Возврат ВсеРеквизитыНоменклатуры[ИмяРеквизита];
ИначеЕсли ТипЗнч(Реквизит) = Тип("ФиксированнаяСтруктура") Тогда
Возврат Реквизит;
Иначе
ТекстИсключения = НСтр("ru = 'Неожиданный тип параметра Реквизит.'");
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецФункции
Функция СтруктураОписанияРеквизитовВТаблицу(СтруктураОписаний) Экспорт
Таблица = Новый ТаблицаЗначений;
ПерваяСтрока = Истина;
Для Каждого ОписаниеРеквизита Из СтруктураОписаний Цикл
Если ПерваяСтрока Тогда
Для Каждого Свойство Из ОписаниеРеквизита.Значение Цикл
Если ТипЗнч(Свойство.Значение) = Тип("Строка") Тогда
Таблица.Колонки.Добавить(Свойство.Ключ,
Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(255, ДопустимаяДлина.Переменная)));
Иначе
МассивТипов = Новый Массив;
МассивТипов.Добавить(ТипЗнч(Свойство.Значение));
Таблица.Колонки.Добавить(Свойство.Ключ,Новый ОписаниеТипов(МассивТипов));
КонецЕсли;
КонецЦикла;
ПерваяСтрока = Ложь;
КонецЕсли;
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Имя = ОписаниеРеквизита.Ключ;
ЗаполнитьЗначенияСвойств(НоваяСтрока, ОписаниеРеквизита.Значение);
КонецЦикла;
Возврат Таблица;
КонецФункции
Функция НепроверяемыеРеквизиты(Объект) Экспорт
МассивНепроверяемыхРеквизитов = Новый Массив;
РеквизитыСПереопределеннойОбязательностьюЗаполнения = РеквизитыСПереопределеннойОбязательностьюЗаполнения(
Объект.ТипНоменклатуры,
Объект.ОсобенностьУчета,
Объект);
Для Каждого КлючЗначение Из РеквизитыСПереопределеннойОбязательностьюЗаполнения Цикл
Если Не КлючЗначение.Значение Тогда
МассивНепроверяемыхРеквизитов.Добавить(КлючЗначение.Ключ);
КонецЕсли;
КонецЦикла;
Возврат МассивНепроверяемыхРеквизитов;
КонецФункции
Функция РеквизитыАгентскихУслуг()
МассивАгентскихРеквизитов = Новый Массив;
МассивАгентскихРеквизитов.Добавить("Принципал");
МассивАгентскихРеквизитов.Добавить("Контрагент");
Возврат МассивАгентскихРеквизитов;
КонецФункции
Функция РеквизитыПризнаковОсобенностейУчета(МетаданныеОбъекта) Экспорт
РеквизитыПризнаковОсобенностейУчета = Новый Массив;
Для Каждого ЗначениеПеречисления Из Перечисления.ОсобенностиУчетаНоменклатуры Цикл
ИмяЗначенияПеречисления = ОбщегоНазначения.ИмяЗначенияПеречисления(ЗначениеПеречисления);
Если МетаданныеОбъекта.Реквизиты.Найти(ИмяЗначенияПеречисления) <> Неопределено Тогда
РеквизитыПризнаковОсобенностейУчета.Добавить(ИмяЗначенияПеречисления);
КонецЕсли;
КонецЦикла;
Возврат РеквизитыПризнаковОсобенностейУчета;
КонецФункции
Функция ИспользованиеЭлементов(ПереданныйОбъект, РежимВидимостиПоказатьТолькоВажные, РежимПроверкиИспользованияРеквизитов) Экспорт
ИменаРеквизитовВидаНоменклатуры = "ИспользоватьСерии, НастройкаИспользованияСерий, ИспользоватьСрокГодностиСерии,"
+ "ШаблонЭтикетки, ШаблонЦенника";
Если ТипЗнч(ПереданныйОбъект.Ссылка) = Тип("СправочникСсылка.ВидыНоменклатуры") Тогда
Объект = ОбщегоНазначенияУТ.СтруктураСоСвойствамиОбъектаМетаданных(Метаданные.Справочники.Номенклатура);
ЗаполнитьЗначенияСвойств(Объект, ПереданныйОбъект);
РеквизитыВидаНоменклатуры = Новый Структура(ИменаРеквизитовВидаНоменклатуры);
ЗаполнитьЗначенияСвойств(РеквизитыВидаНоменклатуры, ПереданныйОбъект);
Объект.ВидНоменклатуры = ПереданныйОбъект.Ссылка;
Иначе
Объект = ПереданныйОбъект;
РеквизитыВидаНоменклатуры = ОбщегоНазначенияУТ.ЗначенияРеквизитовОбъектаПоУмолчанию(Объект.ВидНоменклатуры,
ИменаРеквизитовВидаНоменклатуры);
КонецЕсли;
ИспользованиеЭлементов = Новый Структура;
АвторизованВнешнийПользователь = ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь();
#Область ФункциональныеОпции
ИспользоватьМногооборотнуюТару = ПолучитьФункциональнуюОпцию("ИспользоватьМногооборотнуюТару");
ИспользоватьХарактеристикиНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры");
ИспользоватьНесколькоВидовНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовНоменклатуры");
ИспользоватьСерииНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатуры");
ИспользоватьСборкуРазборку = ПолучитьФункциональнуюОпцию("ИспользоватьСборкуРазборку");
ИспользоватьСертификатыНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСертификатыНоменклатуры");
ИспользоватьСегментыНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСегментыНоменклатуры");
ИспользоватьПроизводство = ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство");
ИспользоватьАдресноеХранение = ПолучитьФункциональнуюОпцию("ИспользоватьАдресноеХранение");
ИспользоватьДополнительныеРеквизитыИСведения = ПолучитьФункциональнуюОпцию("ИспользоватьДополнительныеРеквизитыИСведения");
ИспользоватьАдресноеХранениеСправочно = ПолучитьФункциональнуюОпцию("ИспользоватьАдресноеХранениеСправочно");
ИспользоватьКомиссиюПриЗакупках = ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриЗакупках");
ИспользоватьНесколькоОрганизаций = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
ИспользоватьНоменклатуруПродаваемуюСовместно = ПолучитьФункциональнуюОпцию("ИспользоватьНоменклатуруПродаваемуюСовместно");
ИспользоватьПрогнозРасходаУпаковок = ПолучитьФункциональнуюОпцию("ИспользоватьПрогнозРасходаУпаковок");
ФормироватьФинансовыйРезультат = ПолучитьФункциональнуюОпцию("ФормироватьФинансовыйРезультат");
ИспользоватьРасширенноеОбеспечениеПотребностей = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенноеОбеспечениеПотребностей");
ИспользоватьСоглашенияСПоставщиками = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСПоставщиками");
ИспользоватьУчетНДС = ПолучитьФункциональнуюОпцию("ИспользоватьУчетНДС");
#КонецОбласти
#Область ПризнакиТипаНоменклатуры
ЭтоТовар = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар);
ЭтоМногооборотнаяТара = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ЭтоРабота = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа);
ЭтоУслуга = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга);
ЭтоНабор = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Набор);
#КонецОбласти
#Область НастройкаПоВидуНоменклатуры
НастройкиРеквизитовПоВидуНоменклатуры = ТаблицаНастроекРеквизитов(Объект.ВидНоменклатуры,
Объект.ТипНоменклатуры,
Объект.ОсобенностьУчета,
Объект.ИспользованиеХарактеристик,
РеквизитыВидаНоменклатуры.ИспользоватьСрокГодностиСерии,
"Номенклатура");
Для Каждого СтрТабл Из НастройкиРеквизитовПоВидуНоменклатуры Цикл
ИмяРеквизита = СтрТабл.ИмяРеквизита;
Если СтрТабл.ЭтоДопРеквизит Тогда
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ИмяЭлементаФормы = "ДополнительныйРеквизитЗначение_"
+ СтрЗаменить(?(СтрТабл.ЭтоОбщийРеквизит,
ВРег(Строка(СтрТабл.Набор.УникальныйИдентификатор())),
ВРег(Строка(СтрТабл.НаборСвойств.УникальныйИдентификатор()))),
"-",
"x")
+ "_"
+ СтрЗаменить(ВРег(Строка(СтрТабл.Свойство.УникальныйИдентификатор())), "-", "x");
ИспользованиеЭлементов.Вставить(ИмяЭлементаФормы, СтрТабл.Использование
И ВидимостьРеквизита(СтрТабл,
ИмяРеквизита,
РежимВидимостиПоказатьТолькоВажные,
СтрТабл));
КонецЕсли;
Иначе
Если (ИмяРеквизита = "ВариантОформленияПродажи"
Или ИмяРеквизита = "Качество"
Или ИмяРеквизита = "ИспользованиеХарактеристик")
И РежимПроверкиИспользованияРеквизитов Тогда
ИспользованиеЭлементов.Вставить(ИмяРеквизита, Истина);
Иначе
ИспользованиеЭлементов.Вставить(ИмяРеквизита, СтрТабл.Использование
И (РежимПроверкиИспользованияРеквизитов
Или ВидимостьРеквизита(ИмяРеквизита,
ИмяРеквизита,
РежимВидимостиПоказатьТолькоВажные,
СтрТабл)));
КонецЕсли;
КонецЕсли;
КонецЦикла;
#КонецОбласти
#Область ШапкаФормы
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ИспользованиеЭлементов.Вставить("ЗаполнитьРабочееНаименованиеПоШаблону", ЗначениеЗаполнено(Объект.ВидНоменклатуры));
ИспользованиеЭлементов.Вставить("ЗаполнитьНаименованиеДляПечатиПоШаблону", ЗначениеЗаполнено(Объект.ВидНоменклатуры));
ГиперссылкаПерейтиШтрихкодыНоменклатурыВидимость = ПравоДоступа("Просмотр",
Метаданные.РегистрыСведений.ШтрихкодыНоменклатуры)
И Не РежимВидимостиПоказатьТолькоВажные
И ЗначениеЗаполнено(Объект.Ссылка);
ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствамиВидимость = ПравоДоступа("Просмотр",
Метаданные.РегистрыСведений.НоменклатураСегмента)
И Не ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь()
И Не РежимВидимостиПоказатьТолькоВажные;
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиШтрихкодыНоменклатуры",
ГиперссылкаПерейтиШтрихкодыНоменклатурыВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами",
ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствамиВидимость);
КонецЕсли;
#КонецОбласти
#Область Описание
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ГиперссылкаПерейтиФайлыВидимость = ПравоДоступа("Просмотр", Метаданные.Справочники.НоменклатураПрисоединенныеФайлы)
И Не РежимВидимостиПоказатьТолькоВажные;
ВидимостьКомандФайлаКартинки = ИспользованиеЭлементов.ФайлКартинки;
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиФайлы", ГиперссылкаПерейтиФайлыВидимость);
ИспользованиеЭлементов.Вставить("ДобавитьИзображение", ВидимостьКомандФайлаКартинки);
ИспользованиеЭлементов.Вставить("ОчиститьИзображение", ВидимостьКомандФайлаКартинки);
ИспользованиеЭлементов.Вставить("ИзменитьИзображение", ЗначениеЗаполнено(Объект.Ссылка));
ИспользованиеЭлементов.Вставить("ПросмотретьИзображение", ЗначениеЗаполнено(Объект.Ссылка));
ИспользованиеЭлементов.Вставить("ВыбратьКартинкуИзПрисоединенныхФайлов", ЗначениеЗаполнено(Объект.Ссылка));
ГиперссылкаПерейтиСертификатыНоменклатурыВидимость = ИспользоватьСертификатыНоменклатуры
И Объект.ВестиУчетСертификатовНоменклатуры
И Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.ОбластиДействияСертификатовНоменклатуры);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиСертификатыНоменклатуры",
ГиперссылкаПерейтиСертификатыНоменклатурыВидимость);
КонецЕсли;
#КонецОбласти
#Область СведенияОПроизводителе
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ГиперссылкаПерейтиСоглашенияВидимость =
Не РежимВидимостиПоказатьТолькоВажные
И Объект.ОсобенностьУчета = Перечисления.ОсобенностиУчетаНоменклатуры.Партнером
И ПравоДоступа("Просмотр", Метаданные.Справочники.СоглашенияСПоставщиками)
И ИспользоватьСоглашенияСПоставщиками;
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиСоглашения", ГиперссылкаПерейтиСоглашенияВидимость);
КонецЕсли;
#КонецОбласти
#Область ПланированиеИМаркетинг
ИспользованиеЭлементов.Вставить("ТоварнаяКатегория", ЗначениеЗаполнено(Объект.ВидНоменклатуры)
И Не РежимВидимостиПоказатьТолькоВажные
Или РежимПроверкиИспользованияРеквизитов);
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ГиперссылкаПерейтиСовместныеПродажиВидимость = ИспользоватьНоменклатуруПродаваемуюСовместно
И Не ЭтоНабор
И Не ЭтоМногооборотнаяТара
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.НоменклатураПродаваемаяСовместно)
И Не РежимВидимостиПоказатьТолькоВажные;
ГиперссылкаПерейтиСегментыВидимость = ИспользоватьСегментыНоменклатуры
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.НоменклатураСегмента)
И Не РежимВидимостиПоказатьТолькоВажные
И Не АвторизованВнешнийПользователь;
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиСовместныеПродажи", ГиперссылкаПерейтиСовместныеПродажиВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиСегменты", ГиперссылкаПерейтиСегментыВидимость);
КонецЕсли;
#КонецОбласти
#Область ОбеспечениеИПроизводство
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ГиперссылкаПерейтиВариантыКомплектацииВидимость = ИспользоватьСборкуРазборку
И Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
И ПравоДоступа("Просмотр", Метаданные.Справочники.ВариантыКомплектацииНоменклатуры)
И Не РежимВидимостиПоказатьТолькоВажные;
ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностейВидимость =
ИспользоватьРасширенноеОбеспечениеПотребностей
И (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
Или Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара)
И Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.Обработки.НастройкаСпособовОбеспеченияПотребностей);
ГиперссылкаПерейтиНастройкаПоддержанияЗапасовВидимость = ИспользоватьРасширенноеОбеспечениеПотребностей
И (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
Или Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара)
И Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.Обработки.НастройкаПоддержанияЗапасов);
ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводствоВидимость = Ложь;
ГиперссылкаПерейтиПроизводствоВидимость = Ложь;
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиВариантыКомплектации", ГиперссылкаПерейтиВариантыКомплектацииВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиНастройкаПоддержанияЗапасов",
ГиперссылкаПерейтиНастройкаПоддержанияЗапасовВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностей",
ГиперссылкаПерейтиНастройкаСпособовОбеспеченияПотребностейВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводство",
ГиперссылкаПерейтиНастройкаПередачиМатериаловВПроизводствоВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиПроизводство", ГиперссылкаПерейтиПроизводствоВидимость);
КонецЕсли;
#КонецОбласти
#Область Цены
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ГиперссылкаПерейтиПрайсЛистКомпанииВидимость = Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.Обработки.ПрайсЛист);
ГиперссылкаПерейтиПрайсЛистыПоставщиковВидимость = Не ЭтоНабор
И Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.Обработки.ПрайсЛистПоставщика);
ГиперссылкаПерейтиИсторияИзмененияЦенКомпанииВидимость = Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.ЦеныНоменклатуры)
И Не АвторизованВнешнийПользователь;
ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиковВидимость = Не ЭтоНабор
И Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.ЦеныНоменклатурыПоставщиков);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиПрайсЛистКомпании", ГиперссылкаПерейтиПрайсЛистКомпанииВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиПрайсЛистыПоставщиков",
ГиперссылкаПерейтиПрайсЛистыПоставщиковВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиИсторияИзмененияЦенКомпании",
ГиперссылкаПерейтиИсторияИзмененияЦенКомпанииВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиков",
ГиперссылкаПерейтиИсторияИзмененияЦенПоставщиковВидимость);
КонецЕсли;
#КонецОбласти
#Область ПечатьЭтикетокИЦенников
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ВидимостьШаблонЭтикетки = ИспользованиеЭлементов.ШаблонЭтикетки;
ВидимостьШаблонЦенника = ИспользованиеЭлементов.ШаблонЦенника;
ИспользованиеЭлементов.Вставить("ИспользоватьОбщийШаблонЭтикетки", ВидимостьШаблонЭтикетки);
ИспользованиеЭлементов.Вставить("ИспользоватьИндивидуальныйШаблонЭтикетки", ВидимостьШаблонЭтикетки);
ИспользованиеЭлементов.Вставить("ШаблонЭтикетки", ВидимостьШаблонЭтикетки);
ИспользованиеЭлементов.Вставить("ВидНоменклатурыШаблонЭтикетки", ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонЭтикетки)
И ВидимостьШаблонЭтикетки
И Не Объект.ИспользоватьИндивидуальныйШаблонЭтикетки);
ИспользованиеЭлементов.Вставить("ВидНоменклатурыШаблонЭтикеткиНеУказан", Не ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонЭтикетки)
И ВидимостьШаблонЭтикетки
И Не Объект.ИспользоватьИндивидуальныйШаблонЭтикетки);
ИспользованиеЭлементов.Вставить("ИспользоватьОбщийШаблонЦенника", ВидимостьШаблонЦенника);
ИспользованиеЭлементов.Вставить("ИспользоватьИндивидуальныйШаблонЦенника", ВидимостьШаблонЦенника);
ИспользованиеЭлементов.Вставить("ШаблонЦенника", ВидимостьШаблонЦенника);
ИспользованиеЭлементов.Вставить("ВидНоменклатурыШаблонЦенника", ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонЦенника)
И ВидимостьШаблонЦенника
И Не Объект.ИспользоватьИндивидуальныйШаблонЦенника);
ИспользованиеЭлементов.Вставить("ВидНоменклатурыШаблонЦенникаНеУказан", Не ЗначениеЗаполнено(РеквизитыВидаНоменклатуры.ШаблонЦенника)
И ВидимостьШаблонЦенника
И Не Объект.ИспользоватьИндивидуальныйШаблонЦенника);
КонецЕсли;
#КонецОбласти
#Область ОсновныеПараметрыУчета
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ВидНоменклатурыВидимость = ИспользоватьНесколькоВидовНоменклатуры И Не РежимВидимостиПоказатьТолькоВажные;
ВидНоменклатурыПереключательВидимость = Не ИспользоватьНесколькоВидовНоменклатуры И Не РежимВидимостиПоказатьТолькоВажные;
ВидНоменклатурыОбязательныеПоляВидимость = ИспользоватьНесколькоВидовНоменклатуры И РежимВидимостиПоказатьТолькоВажные;
ВидНоменклатурыПереключательОбязательныеПоляВидимость = Не ИспользоватьНесколькоВидовНоменклатуры И РежимВидимостиПоказатьТолькоВажные;
ТипНоменклатурыВидимость = ИспользоватьНесколькоВидовНоменклатуры И Не РежимВидимостиПоказатьТолькоВажные;
ИспользованиеЭлементов.Вставить("ВидНоменклатуры", ВидНоменклатурыВидимость);
ИспользованиеЭлементов.Вставить("ВидНоменклатурыПереключатель", ВидНоменклатурыПереключательВидимость);
ИспользованиеЭлементов.Вставить("ВидНоменклатурыОбязательныеПоля", ВидНоменклатурыОбязательныеПоляВидимость);
ИспользованиеЭлементов.Вставить("ВидНоменклатурыПереключательОбязательныеПоля", ВидНоменклатурыПереключательОбязательныеПоляВидимость);
ИспользованиеЭлементов.Вставить("ТипНоменклатуры", ТипНоменклатурыВидимость);
ИспользованиеХарактеристикВидимость = ИспользованиеЭлементов.ИспользованиеХарактеристик
И Не РежимВидимостиПоказатьТолькоВажные;
ИспользованиеЭлементов.Вставить("ИспользованиеХарактеристик", ИспользованиеХарактеристикВидимость);
ГиперссылкаПерейтиХарактеристикиНоменклатурыВидимость = ИспользованиеХарактеристикВидимость
И ПравоДоступа("Просмотр", Метаданные.Справочники.ХарактеристикиНоменклатуры)
И Объект.ИспользованиеХарактеристик <> Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать;
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиХарактеристикиНоменклатуры",
ГиперссылкаПерейтиХарактеристикиНоменклатурыВидимость);
НастройкаИспользованияСерийВидимость = ИспользоватьСерииНоменклатуры
И (ЭтоТовар
Или ЭтоМногооборотнаяТара)
И Не РежимВидимостиПоказатьТолькоВажные;
ГиперссылкаПерейтиТоварыДругогоКачестваВидимость = ИспользованиеЭлементов.Качество
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.ТоварыДругогоКачества)
И Не РежимВидимостиПоказатьТолькоВажные;
ГиперссылкаПерейтиСтавкиНДСНоменклатуры = ИспользоватьУчетНДС
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.СтавкиНДСНоменклатуры)
И Не РежимВидимостиПоказатьТолькоВажные;
ИспользованиеЭлементов.Вставить("НастройкаИспользованияСерий", НастройкаИспользованияСерийВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиСоставНабора",
ПравоДоступа("Просмотр", Метаданные.Справочники.ВариантыКомплектацииНоменклатуры)
И Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Набор
И Не РежимВидимостиПоказатьТолькоВажные);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиТоварыДругогоКачества",
ГиперссылкаПерейтиТоварыДругогоКачестваВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиСтавкиНДСНоменклатуры",
ГиперссылкаПерейтиСтавкиНДСНоменклатуры);
ИспользованиеЭлементов.Вставить("НаименованиеТНВЭД", ИспользованиеЭлементов.КодТНВЭД);
КонецЕсли;
#КонецОбласти
#Область ЕдиницыИзмеренияИУсловияХранения
ВидимостьНастроекУпаковок = ИспользованиеЭлементов.ИспользоватьУпаковки
И Объект.ИспользоватьУпаковки
И (Не РежимВидимостиПоказатьТолькоВажные
Или РежимПроверкиИспользованияРеквизитов);
ЕдиницаДляОтчетовВидимость = ИспользованиеЭлементов.ЕдиницаДляОтчетов
И (РежимПроверкиИспользованияРеквизитов
Или Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.Справочники.Номенклатура.Реквизиты.ЕдиницаДляОтчетов)
И ПравоДоступаНаОбъектМетаданныхПоРеквизиту("Просмотр",
Метаданные.Справочники.Номенклатура.Реквизиты.ЕдиницаДляОтчетов));
КоэффициентЕдиницыДляОтчетовВидимость = ЕдиницаДляОтчетовВидимость
И ЗначениеЗаполнено(Объект.ЕдиницаДляОтчетов)
И Объект.ЕдиницаДляОтчетов <> Объект.ЕдиницаИзмерения
И (Не РежимВидимостиПоказатьТолькоВажные
Или РежимПроверкиИспользованияРеквизитов);
ИспользованиеЭлементов.Вставить("ЕдиницаДляОтчетов", ЕдиницаДляОтчетовВидимость);
ИспользованиеЭлементов.Вставить("КоэффициентЕдиницыДляОтчетов", КоэффициентЕдиницыДляОтчетовВидимость);
ИспользованиеЭлементов.Вставить("ЕдиницаИзмеренияСрокаГодности", ИспользованиеЭлементов.СрокГодности);
ИспользованиеЭлементов.Вставить("НаборУпаковок", ВидимостьНастроекУпаковок
И (Объект.НаборУпаковок <> Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры
Или РежимПроверкиИспользованияРеквизитов));
ПоставляетсяВМногооборотнойТареВидимость = ИспользоватьМногооборотнуюТару
И ЭтоТовар
И ЗначениеЗаполнено(Объект.ЕдиницаИзмерения)
И Не Объект.ИспользоватьУпаковки
И Не Справочники.УпаковкиЕдиницыИзмерения.ЭтоМернаяЕдиница(Объект.ЕдиницаИзмерения)
И (РежимПроверкиИспользованияРеквизитов
Или Не РежимВидимостиПоказатьТолькоВажные
И ПравоДоступа("Просмотр", Метаданные.Справочники.Номенклатура.Реквизиты.ПоставляетсяВМногооборотнойТаре));
НоменклатураМногооборотнаяТараВидимость = ПоставляетсяВМногооборотнойТареВидимость
И Объект.ПоставляетсяВМногооборотнойТаре;
ХарактеристикаМногооборотнаяТараВидимость = НоменклатураМногооборотнаяТараВидимость
И ЗначениеЗаполнено(Объект.НоменклатураМногооборотнаяТара)
И ХарактеристикиИспользуются(Объект.НоменклатураМногооборотнаяТара);
ИспользованиеЭлементов.Вставить("ПоставляетсяВМногооборотнойТаре", ПоставляетсяВМногооборотнойТареВидимость);
ИспользованиеЭлементов.Вставить("НоменклатураМногооборотнаяТара", НоменклатураМногооборотнаяТараВидимость);
ИспользованиеЭлементов.Вставить("ХарактеристикаМногооборотнаяТара", ХарактеристикаМногооборотнаяТараВидимость);
Если Не РежимПроверкиИспользованияРеквизитов Тогда
НастройкиОбщегоНабораУпаковокВидимость = ВидимостьНастроекУпаковок
И Объект.НаборУпаковок <> Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры;
ИспользованиеЭлементов.Вставить("НаборУпаковокОбщий", НастройкиОбщегоНабораУпаковокВидимость
И ПравоДоступа("Просмотр", Метаданные.Справочники.Номенклатура.Реквизиты.НаборУпаковок)
И ПравоДоступаНаОбъектМетаданныхПоРеквизиту("Просмотр", Метаданные.Справочники.Номенклатура.Реквизиты.НаборУпаковок));
ЕдиницаДляОтчетовЕдиницаИзмеренияНадписьВидимость = КоэффициентЕдиницыДляОтчетовВидимость
И Объект.ЕдиницаДляОтчетов <> Объект.ЕдиницаИзмерения
И Не РежимВидимостиПоказатьТолькоВажные;
ИспользованиеЭлементов.Вставить("ЕдиницаДляОтчетовЕдиницаИзмеренияНадпись", ЕдиницаДляОтчетовЕдиницаИзмеренияНадписьВидимость);
ТараОтступВидимость = ПоставляетсяВМногооборотнойТареВидимость
И Объект.ПоставляетсяВМногооборотнойТаре;
ИспользованиеЭлементов.Вставить("ТараОтступ", ТараОтступВидимость);
ГиперссылкаПерейтиРазмещениеНоменклатурыВидимость =
(ЭтоТовар
Или ЭтоМногооборотнаяТара)
И Не РежимВидимостиПоказатьТолькоВажные
И ИспользоватьАдресноеХранениеСправочно
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиРазмещениеНоменклатуры",
ГиперссылкаПерейтиРазмещениеНоменклатурыВидимость);
ГиперссылкаПерейтиУпаковкиНоменклатурыВидимость = ВидимостьНастроекУпаковок
И Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры
И ПравоДоступа("Просмотр", Метаданные.Справочники.УпаковкиЕдиницыИзмерения);
ГиперссылкаПерейтиПрогнозыРасходаУпаковокВидимость = ВидимостьНастроекУпаковок
И ИспользоватьПрогнозРасходаУпаковок
И ПравоДоступа("Просмотр", Метаданные.Справочники.УпаковкиЕдиницыИзмерения)
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.ПрогнозыРасходаУпаковок)
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.НастройкиАдресныхСкладов);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНабора", НастройкиОбщегоНабораУпаковокВидимость
И ПравоДоступа("Просмотр", Метаданные.Справочники.УпаковкиЕдиницыИзмерения));
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНоменклатуры", ГиперссылкаПерейтиУпаковкиНоменклатурыВидимость);
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиПрогнозыРасходаУпаковок",
ГиперссылкаПерейтиПрогнозыРасходаУпаковокВидимость);
ИспользованиеЭлементов.Вставить("НаборУпаковокОтступ", ВидимостьНастроекУпаковок);
ИспользованиеЭлементов.Вставить("ИспользованиеУпаковокИндивидуальныйНабор", ВидимостьНастроекУпаковок);
ИспользованиеЭлементов.Вставить("ИспользованиеУпаковокОбщийНабор", ВидимостьНастроекУпаковок);
КонецЕсли;
#КонецОбласти
#Область ФинансовыйУчет
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности =
(ЭтоТовар
Или ЭтоМногооборотнаяТара
Или ЭтоУслуга
Или ЭтоРабота)
И ФормироватьФинансовыйРезультат
И ПравоДоступа("Просмотр", Метаданные.РегистрыСведений.НастройкаРаспределенияПоНаправлениямДеятельности)
И Не РежимВидимостиПоказатьТолькоВажные;
ИспользованиеЭлементов.Вставить("ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности",
ГиперссылкаПерейтиРаспределениеПродажПоНаправлениямДеятельности);
КонецЕсли;
#КонецОбласти
#Область ПрочиеЭлементы
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ИспользованиеЭлементов.Вставить("ПроверитьУникальность",
РежимВидимостиПоказатьТолькоВажные
И Константы.КонтролироватьУникальностьНоменклатурыПоСочетаниюЗначенийРеквизитов.Получить()
И Не ЗначениеЗаполнено(Объект.Ссылка));
КонецЕсли;
#КонецОбласти
#Область Отчеты
Если Не РежимПроверкиИспользованияРеквизитов Тогда
ИспользованиеЭлементов.Вставить("ВедомостьПоТоварамОрганизаций", (ЭтоТовар
Или ЭтоМногооборотнаяТара
Или ЭтоРабота)
И (ИспользоватьНесколькоОрганизаций
Или ИспользоватьКомиссиюПриЗакупках)
И ПравоДоступа("Просмотр", Метаданные.Отчеты.ВедомостьПоТоварамОрганизаций));
ИспользованиеЭлементов.Вставить("ВедомостьПоСериямНоменклатуры", (ЭтоТовар
Или ЭтоМногооборотнаяТара)
И РеквизитыВидаНоменклатуры.ИспользоватьСерии
И ПравоДоступа("Просмотр", Метаданные.Отчеты.ВедомостьПоСериямНоменклатуры));
ИспользованиеЭлементов.Вставить("ВедомостьПоТоварамНаСкладах", (ЭтоТовар
Или ЭтоМногооборотнаяТара)
И ПравоДоступа("Просмотр", Метаданные.Отчеты.ВедомостьПоТоварамНаСкладах));
ИспользованиеЭлементов.Вставить("ТоварыВЯчейках", (ЭтоТовар
Или ЭтоМногооборотнаяТара)
И ИспользоватьАдресноеХранение
И ПравоДоступа("Просмотр", Метаданные.Отчеты.ВедомостьПоТоварамНаСкладах));
ИспользованиеЭлементов.Вставить("ОстаткиИДоступностьТоваров", (ЭтоТовар
Или ЭтоМногооборотнаяТара)
И ПравоДоступа("Просмотр", Метаданные.Отчеты.ОстаткиИДоступностьТоваров));
ИспользованиеЭлементов.Вставить("ТоварыНаСкладахПоСрокамГодности", (ЭтоТовар
Или ЭтоМногооборотнаяТара)
И РеквизитыВидаНоменклатуры.ИспользоватьСерии
И РеквизитыВидаНоменклатуры.ИспользоватьСрокГодностиСерии
И ПравоДоступа("Просмотр", Метаданные.Отчеты.ТоварыНаСкладахПоСрокамГодности));
ИспользованиеЭлементов.Вставить("ВыручкаИСебестоимостьПродаж",
ПравоДоступа("Просмотр", Метаданные.Отчеты.ВыручкаИСебестоимостьПродаж));
ИспользованиеЭлементов.Вставить("СостояниеАссортимента",
ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеАссортимента));
КонецЕсли;
#КонецОбласти
НоменклатураЛокализация.ИспользованиеЭлементов(ИспользованиеЭлементов, Объект, РежимВидимостиПоказатьТолькоВажные, РежимПроверкиИспользованияРеквизитов);
Возврат ИспользованиеЭлементов;
КонецФункции
Функция ЗаголовкиЭлементов(Объект, ВидимостьЭлементов)
ЗаголовкиЭлементов = Новый Структура;
#Область ПризнакиТипаНоменклатуры
ЭтоТовар = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар);
ЭтоМногооборотнаяТара = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ЭтоРабота = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа);
ЭтоУслуга = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Услуга);
ЭтоНабор = (Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Набор);
#КонецОбласти
ИспользуютсяХарактеристики = Объект.ИспользованиеХарактеристик <> Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать;
ЗаголовкиЭлементов.Вставить("ЕдиницаИзмерения", ?(ЭтоТовар Или ЭтоМногооборотнаяТара,
НСтр("ru = 'Единица хранения'"),
НСтр("ru = 'Единица измерения'")));
Если ЭтоРабота Тогда
ЗаголовкиЭлементов.Вставить("ГруппаАгентскиеУслуги", НСтр("ru='Работа выполняется по агентскому договору'"));
Иначе
ЗаголовкиЭлементов.Вставить("ГруппаАгентскиеУслуги", НСтр("ru='Услуга реализуется по агентскому договору'"));
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство") Тогда
ЗаголовкиЭлементов.Вставить("ДекорацияЗаголовокОбеспечение", НСтр("ru='Обеспечение'"));
Иначе
ЗаголовкиЭлементов.Вставить("ДекорацияЗаголовокОбеспечение", НСтр("ru='Обеспечение и производство'"));
КонецЕсли;
#Область ЗаголовкиГиперссылок
КартинкаПредупреждение = БиблиотекаКартинок.ПредупреждениеСНачалаСтроки;
ТекстыЗапроса = Новый СписокЗначений;
Если РазделВиден("ГиперссылкаПерейтиТоварыДругогоКачества", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ТоварыДругогоКачества.Номенклатура КАК Номенклатура,
| ТоварыДругогоКачества.НоменклатураБрак КАК НоменклатураБрак,
| ТоварыДругогоКачества.ГрадацияКачества КАК ГрадацияКачества
|ИЗ
| РегистрСведений.ТоварыДругогоКачества КАК ТоварыДругогоКачества
|ГДЕ
| ТоварыДругогоКачества.Номенклатура = &Номенклатура";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиТоварыДругогоКачества");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиШтрихкодыНоменклатуры", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
| ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,
| ШтрихкодыНоменклатуры.Характеристика КАК Характеристика,
| ШтрихкодыНоменклатуры.Упаковка КАК Упаковка
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиШтрихкодыНоменклатуры");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСоставНабора", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ВариантыКомплектацииНоменклатурыТовары.НомерСтроки КАК НомерСтроки
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
|ГДЕ
| НЕ &ИспользуютсяХарактеристики
| И ВариантыКомплектацииНоменклатурыТовары.Ссылка = &ВариантКомплектацииНоменклатуры
| И НЕ ВариантыКомплектацииНоменклатурыТовары.Ссылка.ПометкаУдаления
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВариантыКомплектацииНоменклатуры.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
|ГДЕ
| &ИспользуютсяХарактеристики
| И ВариантыКомплектацииНоменклатуры.Владелец = &Номенклатура
| И НЕ ВариантыКомплектацииНоменклатуры.Ссылка.ПометкаУдаления";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиСоставНабора");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиВариантыКомплектации", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ВариантыКомплектацииНоменклатуры.Ссылка КАК Ссылка
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
|ГДЕ
| ВариантыКомплектацииНоменклатуры.Владелец = &Номенклатура
| И НЕ ВариантыКомплектацииНоменклатуры.ПометкаУдаления";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиВариантыКомплектации");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиХарактеристикиНоменклатуры", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ХарактеристикиНоменклатуры.Ссылка КАК Ссылка
|ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|ГДЕ
| ХарактеристикиНоменклатуры.Владелец = &ВладелецХарактеристики
| И НЕ ХарактеристикиНоменклатуры.ПометкаУдаления";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиХарактеристикиНоменклатуры");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиУпаковкиНоменклатуры", ВидимостьЭлементов)
Или РазделВиден("ГиперссылкаПерейтиУпаковкиНабора", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| УпаковкиЕдиницыИзмерения.Ссылка КАК Ссылка
|ИЗ
| Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиЕдиницыИзмерения
|ГДЕ
| УпаковкиЕдиницыИзмерения.Владелец = &ВладелецУпаковки
| И НЕ УпаковкиЕдиницыИзмерения.ПометкаУдаления";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиУпаковкиНоменклатурыИЛИГиперссылкаПерейтиУпаковкиНабора");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСертификатыНоменклатуры", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ОбластиДействияСертификатовНоменклатуры.СертификатНоменклатуры КАК СертификатНоменклатуры
|ИЗ
| РегистрСведений.ОбластиДействияСертификатовНоменклатуры КАК ОбластиДействияСертификатовНоменклатуры
|ГДЕ
| ОбластиДействияСертификатовНоменклатуры.ВидНоменклатуры = &ВидНоменклатуры
| И (ОбластиДействияСертификатовНоменклатуры.Номенклатура = &Номенклатура
| ИЛИ ОбластиДействияСертификатовНоменклатуры.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
| И НЕ ОбластиДействияСертификатовНоменклатуры.СертификатНоменклатуры.ПометкаУдаления
| И ОбластиДействияСертификатовНоменклатуры.СертификатНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСертификатовНоменклатуры.Действующий)";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиСертификатыНоменклатуры");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиФайлы", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| НоменклатураПрисоединенныеФайлы.Ссылка КАК Ссылка
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
|ГДЕ
| НоменклатураПрисоединенныеФайлы.ВладелецФайла = &Номенклатура
| И НЕ НоменклатураПрисоединенныеФайлы.ПометкаУдаления";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиФайлы");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСегменты", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| НоменклатураСегмента.Сегмент КАК Сегмент
|ИЗ
| РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
|ГДЕ
| НоменклатураСегмента.Номенклатура = &Номенклатура";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиСегменты");
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СегментыНоменклатуры.Ссылка КАК Сегмент,
| СегментыНоменклатуры.Ответственный КАК Ответственный,
| СегментыНоменклатуры.СпособФормирования КАК СпособФормирования
|ИЗ
| Справочник.СегментыНоменклатуры КАК СегментыНоменклатуры
|ГДЕ
| НЕ СегментыНоменклатуры.ЭтоГруппа
| И НЕ СегментыНоменклатуры.ПометкаУдаления
| И СегментыНоменклатуры.СпособФормирования = ЗНАЧЕНИЕ(Перечисление.СпособыФормированияСегментов.ФормироватьДинамически)";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиСегментыФормироватьДинамически");
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСоглашения", ВидимостьЭлементов) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СоглашенияСПоставщиками.Ссылка) КАК КоличествоСоглашений
|ПОМЕСТИТЬ КоличествоСоглашенийУслуги
|ИЗ
| Справочник.СоглашенияСПоставщиками КАК СоглашенияСПоставщиками
|ГДЕ
| НЕ &ИспользуютсяХарактеристики
| И СоглашенияСПоставщиками.Партнер = &Партнер
| И (СоглашенияСПоставщиками.Контрагент = &Контрагент
| ИЛИ (НЕ &ИспользуютсяКонтрагенты
| ИЛИ СоглашенияСПоставщиками.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)))
| И СоглашенияСПоставщиками.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Действует)
| И СоглашенияСПоставщиками.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг)
| И (СоглашенияСПоставщиками.ДатаНачалаДействия = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ СоглашенияСПоставщиками.ДатаНачалаДействия <= &ТекущаяДата)
| И (СоглашенияСПоставщиками.ДатаОкончанияДействия = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ СоглашенияСПоставщиками.ДатаОкончанияДействия >= &ТекущаяДата)
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СоглашенияСПоставщиками.Ссылка) > 0";
ТекстыЗапроса.Добавить(ТекстЗапроса, "КоличествоСоглашенийУслуги");
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СоглашенияСПоставщиками.Ссылка) КАК КоличествоСоглашений,
| МАКСИМУМ(НЕ ТЧАгентскиеУслуги.Ссылка ЕСТЬ NULL
| ИЛИ НЕ СоглашенияСПоставщиками.ИспользоватьУказанныеАгентскиеУслуги) КАК ЕстьСоглашенияПоНоменклатуре
|ПОМЕСТИТЬ СоглашенияУслуги
|ИЗ
| Справочник.СоглашенияСПоставщиками КАК СоглашенияСПоставщиками
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСПоставщиками.АгентскиеУслуги КАК ТЧАгентскиеУслуги
| ПО СоглашенияСПоставщиками.Ссылка = ТЧАгентскиеУслуги.Ссылка
| И ТЧАгентскиеУслуги.Номенклатура = &Номенклатура
|ГДЕ
| НЕ &ИспользуютсяХарактеристики
| И СоглашенияСПоставщиками.Партнер = &Партнер
| И (СоглашенияСПоставщиками.Контрагент = &Контрагент
| ИЛИ (НЕ &ИспользуютсяКонтрагенты
| ИЛИ СоглашенияСПоставщиками.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)))
| И СоглашенияСПоставщиками.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Действует)
| И СоглашенияСПоставщиками.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг)
| И (СоглашенияСПоставщиками.ДатаНачалаДействия = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ СоглашенияСПоставщиками.ДатаНачалаДействия <= &ТекущаяДата)
| И (СоглашенияСПоставщиками.ДатаОкончанияДействия = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ СоглашенияСПоставщиками.ДатаОкончанияДействия >= &ТекущаяДата)
| И (НЕ ТЧАгентскиеУслуги.Ссылка ЕСТЬ NULL
| ИЛИ НЕ СоглашенияСПоставщиками.ИспользоватьУказанныеАгентскиеУслуги)
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СоглашенияСПоставщиками.Ссылка) > 0";
ТекстыЗапроса.Добавить(ТекстЗапроса, "СоглашенияУслуги");
ТекстЗапроса =
"ВЫБРАТЬ
| ЕСТЬNULL(СоглашенияУслуги.КоличествоСоглашений, КоличествоСоглашенийУслуги.КоличествоСоглашений) КАК КоличествоСоглашений,
| ЕСТЬNULL(СоглашенияУслуги.ЕстьСоглашенияПоНоменклатуре, ЛОЖЬ) КАК ЕстьСоглашенияПоНоменклатуре
|ИЗ
| КоличествоСоглашенийУслуги КАК КоличествоСоглашенийУслуги
| ПОЛНОЕ СОЕДИНЕНИЕ СоглашенияУслуги КАК СоглашенияУслуги
| ПО ИСТИНА";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиСоглашенияНеИспользуютсяХарактеристики");
ТекстЗапроса =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СоглашенияСПоставщиками.Ссылка) КАК КоличествоСоглашений,
| ЕСТЬNULL(МАКСИМУМ(НЕ ТЧАгентскиеУслуги.Ссылка ЕСТЬ NULL
| ИЛИ НЕ СоглашенияСПоставщиками.ИспользоватьУказанныеАгентскиеУслуги),
| ЛОЖЬ) КАК ЕстьСоглашенияПоНоменклатуре
|ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСПоставщиками КАК СоглашенияСПоставщиками
| ПО ХарактеристикиНоменклатуры.Принципал = СоглашенияСПоставщиками.Партнер
| И (ХарактеристикиНоменклатуры.Контрагент = СоглашенияСПоставщиками.Контрагент
| ИЛИ СоглашенияСПоставщиками.Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСПоставщиками.АгентскиеУслуги КАК ТЧАгентскиеУслуги
| ПО СоглашенияСПоставщиками.Ссылка = ТЧАгентскиеУслуги.Ссылка
| И ТЧАгентскиеУслуги.Номенклатура = &Номенклатура
| И ТЧАгентскиеУслуги.Характеристика = ХарактеристикиНоменклатуры.Ссылка
|ГДЕ
| &ИспользуютсяХарактеристики
| И ЕСТЬNULL(ХарактеристикиНоменклатуры.Владелец, НЕОПРЕДЕЛЕНО) = &ВладелецХарактеристики
| И НЕ ЕСТЬNULL(ХарактеристикиНоменклатуры.ПометкаУдаления, ЛОЖЬ)
| И СоглашенияСПоставщиками.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Действует)
| И СоглашенияСПоставщиками.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг)
| И (СоглашенияСПоставщиками.ДатаНачалаДействия = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ СоглашенияСПоставщиками.ДатаНачалаДействия <= &ТекущаяДата)
| И (СоглашенияСПоставщиками.ДатаОкончанияДействия = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ СоглашенияСПоставщиками.ДатаОкончанияДействия >= &ТекущаяДата)
| И (НЕ ТЧАгентскиеУслуги.Ссылка ЕСТЬ NULL
| ИЛИ НЕ СоглашенияСПоставщиками.ИспользоватьУказанныеАгентскиеУслуги)";
ТекстыЗапроса.Добавить(ТекстЗапроса, "ГиперссылкаПерейтиСоглашенияИспользуютсяХарактеристики");
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Номенклатура", Объект.Ссылка);
Запрос.УстановитьПараметр("Партнер", Объект.Принципал);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос.УстановитьПараметр("ИспользуютсяКонтрагенты", ЗначениеЗаполнено(Объект.Контрагент));
Запрос.УстановитьПараметр("ВидНоменклатуры", Объект.ВидНоменклатуры);
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("ИспользуютсяХарактеристики", ИспользуютсяХарактеристики);
Если РазделВиден("ГиперссылкаПерейтиСоставНабора", ВидимостьЭлементов) Тогда
ВариантКомплектацииНоменклатуры = НаборыВызовСервера.ВариантКомплектацииНоменклатурыПоУмолчанию(
Объект.Ссылка,
Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
Запрос.УстановитьПараметр("ВариантКомплектацииНоменклатуры", ВариантКомплектацииНоменклатуры);
Иначе
Запрос.УстановитьПараметр("ВариантКомплектацииНоменклатуры", Справочники.ВариантыКомплектацииНоменклатуры.ПустаяСсылка());
КонецЕсли;
Запрос.УстановитьПараметр("ВариантКомплектацииНоменклатуры", ВариантКомплектацииНоменклатуры);
Если Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры Тогда
ВладелецХарактеристики = Объект.Ссылка;
ИначеЕсли Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры Тогда
ВладелецХарактеристики = Объект.ВидНоменклатуры;
ИначеЕсли Объект.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры Тогда
ВладелецХарактеристики = Объект.ВладелецХарактеристик;
КонецЕсли;
Запрос.УстановитьПараметр("ВладелецХарактеристики", ВладелецХарактеристики);
Если Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры Тогда
ВладелецУпаковки = Объект.Ссылка;
Иначе
ВладелецУпаковки = Объект.НаборУпаковок;
КонецЕсли;
Запрос.УстановитьПараметр("ВладелецУпаковки", ВладелецУпаковки);
УстановитьПривилегированныйРежим(Истина);
Таблицы = ОбщегоНазначенияУТ.ВыгрузитьРезультатыЗапроса(Запрос, ТекстыЗапроса,,Истина);
УстановитьПривилегированныйРежим(Ложь);
Если РазделВиден("ГиперссылкаПерейтиТоварыДругогоКачества", ВидимостьЭлементов) Тогда
Количество = Таблицы.ГиперссылкаПерейтиТоварыДругогоКачества.Количество();
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Товары другого качества'")
+ " (" + Количество + ")",,,,"ТоварыДругогоКачестваКоличество");
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиТоварыДругогоКачества", ЗаголовокГиперссылки);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами", ВидимостьЭлементов) Тогда
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Номенклатура с аналогичными свойствами'"),
,
,
,
"НоменклатураСАналогичнымиСвойствами");
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами", ЗаголовокГиперссылки);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиШтрихкодыНоменклатуры", ВидимостьЭлементов) Тогда
Количество = Таблицы.ГиперссылкаПерейтиШтрихкодыНоменклатуры.Количество();
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Штрихкоды'") + " (" + Количество + ")",,,,"ШтрихкодыНоменклатурыКоличество");
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиШтрихкодыНоменклатуры", ЗаголовокГиперссылки);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСоставНабора", ВидимостьЭлементов) Тогда
Количество = Таблицы.ГиперссылкаПерейтиСоставНабора.Количество();
Если Количество <> 0 Тогда
ИмяГиперссылки = ?(ИспользуютсяХарактеристики, "НастроитьНабор", "СоставНабора");
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Состав набора'") + " (" + Количество + ")",,,,ИмяГиперссылки);
Иначе
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(Новый ФорматированнаяСтрока(НСтр("ru = 'Настроить набор'"),,,,"НастроитьНабор"),
Новый ФорматированнаяСтрока(" ", КартинкаПредупреждение));
КонецЕсли;
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиСоставНабора", ЗаголовокГиперссылки);
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиСоставНабораВнимание", Количество = 0);
ИначеЕсли РазделВиден("ГиперссылкаПерейтиВариантыКомплектации", ВидимостьЭлементов) Тогда
Количество = Таблицы.ГиперссылкаПерейтиВариантыКомплектации.Количество();
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Варианты комплектации'") + " (" + Количество + ")",,,,"ВариантыКомплектации");
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиВариантыКомплектации", ЗаголовокГиперссылки);
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиСоставНабораВнимание", Ложь);
Иначе
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиСоставНабораВнимание", Ложь);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиХарактеристикиНоменклатуры", ВидимостьЭлементов) Тогда
КоличествоХарактеристик = Таблицы.ГиперссылкаПерейтиХарактеристикиНоменклатуры.Количество();
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Список'") + " (" + КоличествоХарактеристик + ")",,,,"ХарактеристикиНоменклатуры");
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиХарактеристикиНоменклатуры", ЗаголовокГиперссылки);
Иначе
КоличествоХарактеристик = 0;
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиУпаковкиНоменклатуры", ВидимостьЭлементов)
Или РазделВиден("ГиперссылкаПерейтиУпаковкиНабора", ВидимостьЭлементов) Тогда
Количество = Таблицы.ГиперссылкаПерейтиУпаковкиНоменклатурыИЛИГиперссылкаПерейтиУпаковкиНабора.Количество();
Если Количество <> 0 Тогда
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Список'") + " (" + Количество + ")",,,,"УпаковкиНоменклатуры");
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНоменклатурыВнимание", Ложь);
Иначе
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(
Новый ФорматированнаяСтрока(НСтр("ru = 'Список'") + " (" + Количество + ")",,,,"УпаковкиНоменклатуры"));
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНоменклатурыВнимание",
Объект.НаборУпаковок = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры);
КонецЕсли;
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНоменклатуры", ЗаголовокГиперссылки);
Если Количество <> 0 Тогда
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Список'") + " (" + Количество + ")",,,,"УпаковкиНабора");
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНабораВнимание", Ложь);
Иначе
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(
Новый ФорматированнаяСтрока(НСтр("ru = 'Список'") + " (" + Количество + ")",,,,"УпаковкиНабора"));
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНабораВнимание",
Объект.НаборУпаковок <> Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры);
КонецЕсли;
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНабора", ЗаголовокГиперссылки);
Иначе
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНоменклатурыВнимание", Ложь);
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиУпаковкиНабораВнимание", Ложь);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСертификатыНоменклатуры", ВидимостьЭлементов) Тогда
Количество = Таблицы.ГиперссылкаПерейтиСертификатыНоменклатуры.Количество();
Если Количество <> 0 Тогда
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Список'") + " (" + Количество + ")",,,,"СертификатыНоменклатуры");
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиСертификатыНоменклатурыВнимание", Ложь);
Иначе
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(
Новый ФорматированнаяСтрока(НСтр("ru = 'Список'") + " (" + Количество + ")",,,,"СертификатыНоменклатуры"));
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиСертификатыНоменклатурыВнимание", Истина);
КонецЕсли;
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиСертификатыНоменклатуры", ЗаголовокГиперссылки);
Иначе
ВидимостьЭлементов.Вставить("ГиперссылкаПерейтиСертификатыНоменклатурыВнимание", Ложь);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиДрагоценныеМатериалы", ВидимостьЭлементов) Тогда
Количество = Объект.ДрагоценныеМатериалы.Количество();
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Содержание драгоценных материалов'")
+ " (" + Количество + ")",,,,"ДрагоценныеМатериалы");
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиДрагоценныеМатериалы", ЗаголовокГиперссылки);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиФайлы", ВидимостьЭлементов) Тогда
Количество = Таблицы.ГиперссылкаПерейтиФайлы.Количество();
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Файлы'") + " (" + Количество + ")",,,,"Файлы");
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиФайлы", ЗаголовокГиперссылки);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСегменты", ВидимостьЭлементов) Тогда
Сегменты = Таблицы.ГиперссылкаПерейтиСегменты.ВыгрузитьКолонку("Сегмент");
ЕстьДинамическиеСегменты = Таблицы.ГиперссылкаПерейтиСегментыФормироватьДинамически.Количество() > 0;
ТекстДинамическиеСегменты = ?(ЕстьДинамическиеСегменты, НСтр("ru = ', без учета формируемых динамически'"), "");
Количество = Сегменты.Количество();
Если Количество = 1 Тогда
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Сегмент'") + " " + Сегменты[0] + ТекстДинамическиеСегменты,,,,"Сегменты");
Иначе
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(НСтр("ru = 'Сегменты'") + " (" + Количество + ТекстДинамическиеСегменты + ")",,,,"Сегменты");
КонецЕсли;
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиСегменты", ЗаголовокГиперссылки);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСоглашения", ВидимостьЭлементов) Тогда
ТаблицаПоСоглашениям = ?(ИспользуютсяХарактеристики,
Таблицы.ГиперссылкаПерейтиСоглашенияИспользуютсяХарактеристики,
Таблицы.ГиперссылкаПерейтиСоглашенияНеИспользуютсяХарактеристики);
КоличествоСоглашений = ?(ТаблицаПоСоглашениям.Количество() > 0,
ТаблицаПоСоглашениям[0].КоличествоСоглашений,
0);
ЕстьСоглашенияПоНоменклатуре = ?(ТаблицаПоСоглашениям.Количество() > 0,
ТаблицаПоСоглашениям[0].ЕстьСоглашенияПоНоменклатуре,
Ложь);
Если ПравоДоступа("Добавление", Метаданные.Справочники.СоглашенияСПоставщиками) Тогда
Если КоличествоСоглашений = 0
И Не ЕстьСоглашенияПоНоменклатуре Тогда
Если ИспользуютсяХарактеристики Тогда
СтрокаЗаголовкаГиперссылки = НСтр("ru = 'Характеристики не выбраны в соглашениях'");
ГиперссылкаСоглашения = "СписокСоглашенийПоХарактеристикам";
Иначе
СтрокаЗаголовкаГиперссылки = НСтр("ru = 'Создать соглашение'");
ГиперссылкаСоглашения = "СоглашенияСоздать";
КонецЕсли;
Иначе
Если ЕстьСоглашенияПоНоменклатуре Тогда
СтрокаСоглашений = СтрокаСЧислом(";%1 соглашении;;%1 соглашениях;%1 соглашениях;%1 соглашениях",
КоличествоСоглашений,
ВидЧисловогоЗначения.Количественное,
"L=ru");
СтрокаЗаголовкаГиперссылки = НСтр("ru = 'Выбрана в %КоличествоСоглашений%'");
СтрокаЗаголовкаГиперссылки = СтрЗаменить(СтрокаЗаголовкаГиперссылки, "%КоличествоСоглашений%", СтрокаСоглашений);
Иначе
СтрокаЗаголовкаГиперссылки = НСтр("ru = 'Выбрать в существующем соглашении'");
КонецЕсли;
Если ИспользуютсяХарактеристики Тогда
ГиперссылкаСоглашения = "СписокСоглашенийПоХарактеристикам";
Иначе
ГиперссылкаСоглашения = ?(ЕстьСоглашенияПоНоменклатуре, "СписокСоглашенийПоНоменклатуре", "СоглашенияВыбрать");
КонецЕсли;
КонецЕсли;
Иначе
Если КоличествоСоглашений = 0 Тогда
Если ИспользуютсяХарактеристики Тогда
СтрокаЗаголовкаГиперссылки = НСтр("ru = 'Характеристики не выбраны в соглашениях'");
Иначе
СтрокаЗаголовкаГиперссылки = НСтр("ru = 'Не выбрана в соглашениях'");
КонецЕсли;
Иначе
СтрокаСоглашений = СтрокаСЧислом(";%1 соглашении;;%1 соглашениях;%1 соглашениях;%1 соглашениях",
КоличествоСоглашений,
ВидЧисловогоЗначения.Количественное,
"L=ru");
СтрокаЗаголовкаГиперссылки = НСтр("ru = 'Выбрана в %КоличествоСоглашений%'");
СтрокаЗаголовкаГиперссылки = СтрЗаменить(СтрокаЗаголовкаГиперссылки, "%КоличествоСоглашений%", СтрокаСоглашений);
КонецЕсли;
Если ИспользуютсяХарактеристики Тогда
ГиперссылкаСоглашения = "СписокСоглашенийПоХарактеристикам";
Иначе
ГиперссылкаСоглашения = "СписокСоглашенийПоНоменклатуре";
КонецЕсли;
КонецЕсли;
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(СтрокаЗаголовкаГиперссылки, , , , ГиперссылкаСоглашения);
ЗаголовокСоглашения = Новый Структура;
ЗаголовокСоглашения.Вставить("Заголовок", ЗаголовокГиперссылки);
ЗаголовокСоглашения.Вставить("Гиперссылка", ГиперссылкаСоглашения);
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиСоглашения", ЗаголовокСоглашения);
КонецЕсли;
Если РазделВиден("ГиперссылкаПерейтиСтавкиНДСНоменклатуры", ВидимостьЭлементов) Тогда
Количество = 0;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ТаблицаСтавокНДС = РегистрыСведений.СтавкиНДСНоменклатуры.ТаблицаСтавокНДСНоменклатуры(Объект.Ссылка);
Количество = ТаблицаСтавокНДС.Количество();
КонецЕсли;
ТекстЗаголовка = НСтр("ru='Все ставки (%1)'");
ТекстЗаголовка = СтрЗаменить(ТекстЗаголовка, "%1", Количество);
ЗаголовокГиперссылки = Новый ФорматированнаяСтрока(ТекстЗаголовка, , , , "СтавкиНДСНоменклатуры");
ЗаголовкиЭлементов.Вставить("ГиперссылкаПерейтиСтавкиНДСНоменклатуры", ЗаголовокГиперссылки);
КонецЕсли;
#КонецОбласти
НоменклатураЛокализация.ЗаголовкиЭлементов(ЗаголовкиЭлементов, Объект, ВидимостьЭлементов);
Возврат ЗаголовкиЭлементов;
КонецФункции
Функция ЗаголовокГиперссылки(ЭлементЗаголовок) Экспорт
Если ТипЗнч(ЭлементЗаголовок.Значение) = Тип("Строка")
Или ТипЗнч(ЭлементЗаголовок.Значение) = Тип("ФорматированнаяСтрока") Тогда
Возврат ЭлементЗаголовок.Значение;
Иначе
Возврат ЭлементЗаголовок.Значение.Заголовок;
КонецЕсли;
КонецФункции
Процедура ПереопределитьОбязательностьЗаполненияРеквизитовМеры(Объект, РеквизитыСПереопределеннойОбязательностьюЗаполнения, Мера)
РеквизитыМеры = РеквизитыМеры(Мера);
Если Объект = Неопределено Тогда
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить(РеквизитыМеры.Числитель, Ложь);
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить(РеквизитыМеры.Знаменатель, Ложь);
Иначе
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить(РеквизитыМеры.Числитель, Объект[РеквизитыМеры.Использовать]);
РеквизитыСПереопределеннойОбязательностьюЗаполнения.Вставить(РеквизитыМеры.Знаменатель, Объект[РеквизитыМеры.Использовать]);
КонецЕсли;
КонецПроцедуры
Процедура ЗависимостьРеквизитаМерыОтТипаНоменклатуры(ТаблицаРеквизитов, Реквизиты, ТипНоменклатуры, Мера)
ЭтоТовар = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар);
ЭтоМногооборотнаяТара = (ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
РеквизитыМеры = РеквизитыМеры(Мера);
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты[РеквизитыМеры.ЕдиницаИзмерения];
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты[РеквизитыМеры.Знаменатель];
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты[РеквизитыМеры.МожноУказыватьВДокументах];
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты[РеквизитыМеры.Числитель];
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
НоваяСтрока = ТаблицаРеквизитов.Добавить();
НоваяСтрока.Реквизит = Реквизиты[РеквизитыМеры.Использовать];
НоваяСтрока.Использование = ЭтоТовар
Или ЭтоМногооборотнаяТара;
КонецПроцедуры
Процедура ДобавитьЗначениеСвойства(ТаблицаСвойств, Свойства, Префикс, ИмяКолонки, Значение)
ИмяСвойства = СокрЛП(СтандартныеПодсистемыСервер.ПреобразоватьАдаптированноеНаименованиеКолонкиВСтроку(Сред(ИмяКолонки, СтрДлина(Префикс) + 1)));
Свойство = Свойства.Получить(ИмяСвойства);
Если Свойство <> Неопределено Тогда
НоваяСтрокаСвойств = ТаблицаСвойств.Добавить();
НоваяСтрокаСвойств.Свойство = Свойство.Ссылка;
НоваяСтрокаСвойств.Значение = Значение;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбновлениеИнформационнойБазы
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.Процедура = "Справочники.Номенклатура.ОбработатьДанныеДляПереходаНаНовуюВерсию";
Обработчик.Версия = "11.5.23.28";
Обработчик.РежимВыполнения = "Отложенно";
Обработчик.Идентификатор = Новый УникальныйИдентификатор("51119c20-5762-4c2b-bdf7-2f9a8da27bec");
Обработчик.Многопоточный = Истина;
Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.Номенклатура.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
СписокОписаний = Новый Массив;
СписокОписаний.Добавить(НСтр("ru = 'Обновление справочника ""Номенклатура"":'"));
СписокОписаний.Добавить(НСтр("ru = '- замена код ОКВЭД2 с типом справочник Классификатор ОКВЭД2 на строка';"));
Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Обычный;
Читаемые = Новый Массив;
Читаемые.Добавить(Метаданные.Справочники.Номенклатура.ПолноеИмя());
Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
Изменяемые = Новый Массив;
Изменяемые.Добавить(Метаданные.Справочники.Номенклатура.ПолноеИмя());
Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
Блокируемые = Новый Массив;
Блокируемые.Добавить(Метаданные.Справочники.Номенклатура.ПолноеИмя());
Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");
КонецПроцедуры
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
ПараметрыВыборки = Параметры.ПараметрыВыборки;
ПараметрыВыборки.ПолныеИменаОбъектов = ПустаяСсылка().Метаданные().ПолноеИмя();
ПараметрыВыборки.СпособВыборки = ОбновлениеИнформационнойБазы.СпособВыборкиСсылки();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.УдалитьКодОКВЭД2 = ЗНАЧЕНИЕ(Справочник.КлассификаторОКВЭД2.ПустаяСсылка)
| И НЕ Номенклатура.ЭтоГруппа
| И Номенклатура.КодОКВЭД2 = """"";
ОбновлениеИнформационнойБазы.ОтметитьКОбработке(Параметры, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецПроцедуры
Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
Параметры.ОбработкаЗавершена = Ложь;
ПолноеИмяОбъекта = ПустаяСсылка().Метаданные().ПолноеИмя();
ОбновляемыеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры);
Если ОбновляемыеДанные.Количество() = 0 Тогда
Параметры.ОбработкаЗавершена =
ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
Возврат;
КонецЕсли;
ОбъектовОбработано = 0;
ПроблемныхОбъектов = 0;
ИсключенияПриОбновлении = Новый Массив;
СписокОписаний = Новый Массив;
СписокОписаний.Добавить(НСтр("ru = 'Не удалось обработать справочник ""Номенклатура"" по обработчику:'"));
СписокОписаний.Добавить(НСтр("ru = '- замена код ОКВЭД2 с типом справочник Классификатор ОКВЭД2 на строка';"));
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДляОбновления.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ТаблицаЭлементов
|ИЗ
| &ДанныеДляОбновления КАК ДанныеДляОбновления
|;
|
|
|ВЫБРАТЬ
| ТаблицаЭлементов.Ссылка КАК Ссылка,
| ДанныеСправочника.УдалитьКодОКВЭД2.Код КАК КодОКВЭД2,
| ДанныеСправочника.ВерсияДанных КАК ВерсияДанных
|ИЗ
| ТаблицаЭлементов КАК ТаблицаЭлементов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеСправочника
| ПО ТаблицаЭлементов.Ссылка = ДанныеСправочника.Ссылка
|";
Запрос.УстановитьПараметр("ДанныеДляОбновления", ОбновляемыеДанные);
Справочник = Запрос.Выполнить().Выбрать();
Пока Справочник.Следующий() Цикл
ПричинаИсключения = 0;
Рекомендация = "";
НачатьТранзакцию();
Попытка
ПричинаИсключения = 1;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(ПолноеИмяОбъекта);
ЭлементБлокировки.УстановитьЗначение("Ссылка", Справочник.Ссылка);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
СправочникОбъект = ОбновлениеИнформационнойБазыУТ.ПроверитьПолучитьОбъект(
Справочник.Ссылка, Справочник.ВерсияДанных, Параметры.Очередь);
ПричинаИсключения = 2;
Рекомендация = НСтр("ru = 'Проверьте данные справочника вручную.'");
ОбъектИзменен = Ложь;
Если СправочникОбъект <> Неопределено Тогда
СправочникОбъект.КодОКВЭД2 = Справочник.КодОКВЭД2;
ОбъектИзменен = Истина;
КонецЕсли;
ПричинаИсключения = 3;
Если ОбъектИзменен Тогда
ОбновлениеИнформационнойБазы.ЗаписатьДанные(СправочникОбъект);
Иначе
ОбновлениеИнформационнойБазы.ОтметитьВыполнениеОбработки(Справочник.Ссылка);
КонецЕсли;
ОбъектовОбработано = ОбъектовОбработано + 1;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ПроблемныхОбъектов = ПроблемныхОбъектов + 1;
ОбновлениеИнформационнойБазыУТ.СообщитьОНеудачнойОбработке(ИнформацияОбОшибке(), Справочник.Ссылка);
Если ПричинаИсключения = 2 Тогда
ОписаниеПроблемы = ОбновлениеИнформационнойБазыУТ.ПроблемаСДанными(
Справочник.Ссылка, Рекомендация, ИнформацияОбОшибке());
ИсключенияПриОбновлении.Добавить(ОписаниеПроблемы);
ИначеЕсли ПричинаИсключения = 3 Тогда
ОбновлениеИнформационнойБазыУТ.ЗаписатьПлохиеДанные(
ИсключенияПриОбновлении, ОбъектовОбработано, Параметры);
ВызватьИсключение СтрСоединить(СписокОписаний, Символы.ПС);
КонецЕсли;
КонецПопытки;
КонецЦикла;
Параметры.ОбработкаЗавершена =
ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Иначе
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Наименование");
КонецПроцедуры
#КонецЕсли