Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 мая 2024, 00:00

как сделать что-бы выполнялась суммирование при загрузки в 1с предприятие 8.3 ?

Автор сергей123, 01 фев 2019, 14:58

0 Пользователей и 1 гость просматривают эту тему.

сергей123

как сделать что-бы выполнялась суммирование при загрузки в 1с предприятие 8.3  ?

Данная обработка работает некорректно, при вводе нового товара из excel файла в 1с предприятие 8.3 создаётся новый товар с тем же название.

В базе был товар onyх с артикулом 5-1
загружаем еще одну позицию onyх с артикулом 5-1
получаем два товара раздельно с одним артикулом

как сделать что-бы выполнялось суммирование?
что-бы после загрузки было два товара вместе с ценой последнего товара а не раздельно.

полный текст обработки
https://yadi.sk/i/ElPTXFFlA05M-g

https://yadi.sk/d/DCoitpQO-bw_jg



&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   
   ПодключитьРасширениеРаботыСФайлами();   
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "";
    Фильтр = "Файл Excel(*.xls)|*.xls";
    ДиалогОткрытияФайла.Фильтр                = Фильтр;
    ДиалогОткрытияФайла.МножественныйВыбор    = Ложь;
    ДиалогОткрытияФайла.Заголовок             = "Выберите файл";
   
    Если ДиалогОткрытияФайла.Выбрать() Тогда
        ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;
    Иначе
        Возврат;
    КонецЕсли;
   
КонецПроцедуры

&НаКлиенте
Процедура ПрочитатьФайл(Команда)
   
   ТектовыеДанные.Очистить();
   
   Если Не ЗначениеЗаполнено(ПутьКФайлу) тогда
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = "Не указан путь к файлу!";
      Сообщение.Поле = "ПутьКФайлу";
      Сообщение.УстановитьДанные(ЭтаФорма);
      Сообщение.Сообщить();
      Возврат;
   КонецЕсли;   
   
   Попытка
        Excel = Новый COMОбъект("Excel.Application");
        Excel.WorkBooks.Open(ПутьКФайлу);
        ExcelЛист = Excel.Sheets(1);
    Исключение
        Сообщить("Не удалось запустить приложение MS Excel!");
        Возврат;
    КонецПопытки;
   
    ТекущаяСтрока = 2;
   
   ТекущееЗначение = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 2).Value);
   
   Пока ЗначениеЗаполнено(ТекущееЗначение) Цикл
      
      Состояние("Обработка строки: " + Строка(ТекущаяСтрока-1));
            
      Элементы.ТектовыеДанные.ДобавитьСтроку();
      Элементы.ТектовыеДанные.ТекущиеДанные.НомерСТрокиДокумента       = ТекущаяСтрока;
      Элементы.ТектовыеДанные.ТекущиеДанные.Артикул                = СокрЛП

(ExcelЛист.Cells(ТекущаяСтрока, 2).Value);
      Элементы.ТектовыеДанные.ТекущиеДанные.Наименование             = СокрЛП

(ExcelЛист.Cells(ТекущаяСтрока, 1).Value);
      Элементы.ТектовыеДанные.ТекущиеДанные.Производитель             = СокрЛП

(ExcelЛист.Cells(ТекущаяСтрока, 3).Value);
      Элементы.ТектовыеДанные.ТекущиеДанные.Количество             = СокрЛП

(ExcelЛист.Cells(ТекущаяСтрока, 5).Value);
      Элементы.ТектовыеДанные.ТекущиеДанные.Цена                   = СокрЛП

(ExcelЛист.Cells(ТекущаяСтрока, 4).Value);
      Элементы.ТектовыеДанные.ТекущиеДанные.Сумма                   = СокрЛП

(ExcelЛист.Cells(ТекущаяСтрока, 6).Value);
      
        ТекущееЗначение = СокрЛП(ExcelЛист.Cells(ТекущаяСтрока, 2).Value);
      ТекущаяСтрока    = ТекущаяСтрока + 1;
       
    КонецЦикла;
   
   Excel.Quit();
   
КонецПроцедуры

&НаКлиенте
Процедура ЗагрузитьДанные(Команда)
   
   Отказ = Ложь;
   ПроверитьЗаполнениеНастроек(Отказ);
   
   Если Отказ тогда
      Возврат;
   КонецЕсли;   
   
   ПроверитьЗаполнениеТЧ();
   
   Ссылка = ЗагрузитьНаСервере();
   
   Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") тогда
      ПараметрыФормы = Новый Структура("Ключ", Ссылка);
      ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.ФормаОбъекта", ПараметрыФормы);
   КонецЕсли;   
   
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьЗаполнениеНастроек(Отказ)
   
   Если ТектовыеДанные.Количество() = 0 тогда
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = "Нет данных для загрузки!";
      Сообщение.Поле = "ТекстовыеДанные";
      Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ТектовыеДанные);
      Сообщение.Сообщить();
      Отказ = Истина;
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(ХарактеристикаПроизводитель) Тогда
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = "Не указано свойство производитель!";
      Сообщение.Поле = "ХарактеристикаПроизводитель";
      Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ХарактеристикаПроизводитель);
      Сообщение.Сообщить();
      Отказ = Истина;
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(ВидНоменклатуры) Тогда
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = "Не указан вид номенклатуры!";
      Сообщение.Поле = "ВидНоменклатуры";
      Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ВидНоменклатуры);
      Сообщение.Сообщить();
      Отказ = Истина;
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(ГруппаДоступаКонтрагентов) Тогда
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = "Не указана группа доступа контрагентов!";
      Сообщение.Поле = "ГруппаДоступаКонтрагентов";
      Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ГруппаДоступаКонтрагентов);
      Сообщение.Сообщить();
      Отказ = Истина;
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(Склад) Тогда
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = "Не указан склад!";
      Сообщение.Поле = "Склад";
      Сообщение.УстановитьДанные(ЭтаФорма.Элементы.Склад);
      Сообщение.Сообщить();
      Отказ = Истина;
   КонецЕсли;
   
   Если Не ЗначениеЗаполнено(ГруппаНоменклатуры) Тогда
      Сообщение = Новый СообщениеПользователю;
      Сообщение.Текст = "Не указана группа номенклатуры!";
      Сообщение.Поле = "ГруппаНоменклатуры";
      Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ГруппаНоменклатуры);
      Сообщение.Сообщить();
      Отказ = Истина;
   КонецЕсли;
   
КонецПроцедуры   

&НаКлиенте
Процедура ПроверитьЗаполнениеТЧ()
   
   Ин = 0;
   
   Для Каждого СтрокаТЧ Из ТектовыеДанные Цикл
      
      НачалоСообщенияПоля = "ТектовыеДанные[" + Строка(Ин) + "].";
      
      Если Не ЗначениеЗаполнено(СтрокаТЧ.Артикул) Тогда
         Сообщение = Новый СообщениеПользователю;
         Сообщение.Текст = "В строке " + Строка(СтрокаТЧ.НомерСТрокиДокумента) + " не указан

артикул!";
         Сообщение.Поле = НачалоСообщенияПоля + "Артикул";
         Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ТектовыеДанные);
         Сообщение.Сообщить();
         СтрокаТЧ.Ошибка = Истина;
      КонецЕсли;
      
      Если Не ЗначениеЗаполнено(СтрокаТЧ.Наименование) Тогда
         Сообщение = Новый СообщениеПользователю;
         Сообщение.Текст = "В строке " + Строка(СтрокаТЧ.НомерСТрокиДокумента) + " не указано

наименование!";
         Сообщение.Поле = НачалоСообщенияПоля + "Наименование";
         Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ТектовыеДанные);
         Сообщение.Сообщить();
         СтрокаТЧ.Ошибка = Истина;
      КонецЕсли;
      
      Если Не ЗначениеЗаполнено(СтрокаТЧ.Количество) Тогда
         Сообщение = Новый СообщениеПользователю;
         Сообщение.Текст = "В строке " + Строка(СтрокаТЧ.НомерСТрокиДокумента) + " не указано

Количество!";
         Сообщение.Поле = НачалоСообщенияПоля + "Количество";
         Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ТектовыеДанные);
         Сообщение.Сообщить();
         СтрокаТЧ.Ошибка = Истина;
      КонецЕсли;
      
      Если Не ЗначениеЗаполнено(СтрокаТЧ.Цена) Тогда
         Сообщение = Новый СообщениеПользователю;
         Сообщение.Текст = "В строке " + Строка(СтрокаТЧ.НомерСТрокиДокумента) + " не указана

цена!";
         Сообщение.Поле = НачалоСообщенияПоля + "Цена";
         Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ТектовыеДанные);
         Сообщение.Сообщить();
         СтрокаТЧ.Ошибка = Истина;
      КонецЕсли;

      Если Не ЗначениеЗаполнено(СтрокаТЧ.Сумма) Тогда
         Сообщение = Новый СообщениеПользователю;
         Сообщение.Текст = "В строке " + Строка(СтрокаТЧ.НомерСТрокиДокумента) + " не указана

сумма!";
         Сообщение.Поле = НачалоСообщенияПоля + "Сумма";
         Сообщение.УстановитьДанные(ЭтаФорма.Элементы.ТектовыеДанные);
         Сообщение.Сообщить();
         СтрокаТЧ.Ошибка = Истина;
      КонецЕсли;
      
      
      Ин = Ин + 1;
      
   КонецЦикла;   
   
КонецПроцедуры   

&НаСервере
Функция ЗагрузитьНаСервере()
   
   Перем СтруктураЗаполненияШапки;
   Перем ТаблицаЗагрузки;
   
   Отказ = Ложь;
   
   ПодготовитьСтруктуруЗаполненияШапки(Отказ, СтруктураЗаполненияШапки);
   Если Отказ Тогда
      Возврат Неопределено;
   КонецЕсли;
   
   ПодготовитьТаблицуЗагрузки(ТаблицаЗагрузки);
   
   НовыйПоступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
   НовыйПоступление.Дата = ТекущаяДата();
   
   НовыйПоступление.Заполнить(Неопределено);
   ЗаполнитьЗначенияСвойств(НовыйПоступление, СтруктураЗаполненияШапки);
   
   НовыйПоступление.Товары.Загрузить(ТаблицаЗагрузки);
   
   КэшированныеЗначения = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
   
   СтруктураДействий = Новый Структура;
   ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, НовыйПоступление);
   
   Для каждого СтрокаДокмуента из НовыйПоступление.Товары Цикл
   
      ТекущаяСтрокаСтруктура = ПолучитьТекущуюСтрокуСтруктурой(СтрокаДокмуента, СтруктураДействий);
      
      ОбработкаТабличнойЧастиВызовСервера.ОбработатьСтрокуТЧ(ТекущаяСтрокаСтруктура, СтруктураДействий,

КэшированныеЗначения);
      
      ЗаполнитьЗначенияСвойств(СтрокаДокмуента, ТекущаяСтрокаСтруктура);
      
   КонецЦикла;
   
   НовыйПоступление.Записать(РежимЗаписиДокумента.Запись);
   
   Возврат НовыйПоступление.Ссылка;
   
КонецФункции

&НаСервере
ПРоцедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект)
   
   СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ

(Объект);
   СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
   СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
   СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
   СтруктураДействий.Вставить("ПересчитатьСумму");
   СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
   //СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
   СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
   СтруктураДействий.Вставить("ПересчитатьСуммуСверхЗаказа", Новый Структура("РеализацияПоступлениеПоЗаказу,

ТребуетсяЗалогЗаТару",
      Объект.ПоступлениеПоЗаказам, Объект.ТребуетсяЗалогЗаТару));
   
КонецПроцедуры   

&НаСервере
Функция ПолучитьНоменклатуру(СтрокаТекст)
   
   Запрос = Новый Запрос;
   Артикул = СтрокаТекст.Артикул;
   Наименование = СтрокаТекст.Наименование;
   

      
      РодительСсылка = ГруппаНоменклатуры;
      
      // Производитель
      ТекстПроизводитель = СокрЛП(СтрокаТекст.Производитель);
      Если ЗначениеЗаполнено(ТекстПроизводитель) тогда
         Запрос = Новый Запрос;
         Запрос.УстановитьПараметр("Наименование",   ТекстПроизводитель);
         Запрос.УстановитьПараметр("Владелец",       ХарактеристикаПроизводитель);
         Запрос.Текст = "ВЫБРАТЬ
                        |   ЗначенияСвойствОбъектов.Ссылка
                        |ИЗ
                        |   Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                        |ГДЕ
                        |   ЗначенияСвойствОбъектов.Наименование = &Наименование
                        |   И ЗначенияСвойствОбъектов.Владелец = &Владелец";
         
         ВыборкаПроизводитель = Запрос.Выполнить().Выбрать();
         Если ВыборкаПроизводитель.Следующий() тогда
            ПроизводительСсылка = ВыборкаПроизводитель.Ссылка;
         Иначе
            ПроизводительОбъект = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
            ПроизводительОбъект.Владелец = ХарактеристикаПроизводитель;
            ПроизводительОбъект.Наименование = ТекстПроизводитель;
            Попытка
               ПроизводительОбъект.Записать();
            Исключение
               Сообщить(ОписаниеОшибки());
            КонецПопытки;   
            ПроизводительСсылка = ПроизводительОбъект.Ссылка;
         КонецЕсли;
      Иначе
         ПроизводительСсылка = Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка();
      КонецЕсли;   
         
      НоменклатураОбъект = Справочники.Номенклатура.СоздатьЭлемент();
      НоменклатураОбъект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
      НоменклатураОбъект.ВидНоменклатуры = ВидНоменклатуры;
      НоменклатураОбъект.Качество = Перечисления.ГрадацииКачества.Новый;
      НоменклатураОбъект.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
      
      ЗаполнитьЗначенияСвойств(НоменклатураОбъект, ВидНоменклатуры, , "Ссылка, Владелец,

ПометкаУдаления, ВерсияДанных, Предопределенный, ЭтоГруппа, Родитель, Описание, Наименование, Код,

ИмяПредопределенныхДанных");
      
      Если ИспользоватьУпаковки тогда
         НоменклатураОбъект.ИспользоватьУпаковки = ИспользоватьУпаковки;
         НоменклатураОбъект.НаборУпаковок = НаборУпаковок;
         НоменклатураОбъект.ЕдиницаИзмерения = НаборУпаковок.ЕдиницаИзмерения;
      КонецЕсли;   
      
      ГруппаДоступаНоменклатурыДляКонтроля      = ВидНоменклатуры.ГруппаДоступа;
      ШаблонНаименованияДляПечати               =

ВидНоменклатуры.ШаблонНаименованияДляПечатиНоменклатуры;
      ШаблонРабочегоНаименования                =

ВидНоменклатуры.ШаблонРабочегоНаименованияНоменклатуры;
      ЗапретРедактированияНаименованияДляПечати =

ВидНоменклатуры.ЗапретРедактированияНаименованияНоменклатурыДляПечати;
      ЗапретРедактированияРабочегоНаименования  =

ВидНоменклатуры.ЗапретРедактированияРабочегоНаименованияНоменклатуры;
      НаборСвойств                              = ВидНоменклатуры.НаборСвойств;
      ИспользоватьХарактеристики                = ВидНоменклатуры.ИспользоватьХарактеристики;
      ЭтоНабор                                  = Ложь;
      ВидСодержитДрагоценныеМатериалы           = Ложь;
      
      НоменклатураОбъект.Наименование = Наименование;
      НоменклатураОбъект.НаименованиеПолное = Наименование;
      НоменклатураОбъект.Артикул = Артикул;
      НоменклатураОбъект.Родитель = РодительСсылка;
      
      ЗаписьПроизводитель = НоменклатураОбъект.ДополнительныеРеквизиты.Добавить();
      ЗаписьПроизводитель.Значение = ПроизводительСсылка;
      ЗаписьПроизводитель.Свойство = ХарактеристикаПроизводитель;
      
      Попытка
         НоменклатураОбъект.Записать();
      Исключение
         Сообщить(ОписаниеОшибки());
      КонецПопытки;   
               
   КонецЕсли;   
   
   Возврат НоменклатураСсылка;
   
КонецФункции

&НаСервере
Процедура ПодготовитьТаблицуЗагрузки(ТаблицаЗагрузки)
   
   ТаблицаЗагрузки = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка().Товары.ВыгрузитьКолонки();
   
   ТаблицаСвойств = Новый ТаблицаЗначений;
   ТаблицаСвойств.Колонки.Добавить("Свойство", Новый ОписаниеТипов

("ПланвидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
   ТаблицаСвойств.Колонки.Добавить("Значение");//, Новый ОписаниеТипов

("СправочникСсылка.ЗначенияСвойствОбъектов"));
   
   Ин = 0;
   
   Для Каждого СтрокаТекст из ТектовыеДанные Цикл
      
      Если СтрокаТекст.Ошибка тогда
         Продолжить;
      КонецЕсли;   
      
      Номенклатура    = ПолучитьНоменклатуру(СтрокаТекст);
      
      Если НЕ ЗначениеЗаполнено(Номенклатура) Тогда
         Продолжить;
      КонецЕсли;   
      
      СтрокаТаблицы = ТаблицаЗагрузки.Добавить();
      СтрокаТаблицы.Номенклатура = Номенклатура;
      СтрокаТаблицы.Цена = СтрокаТекст.Цена;
      СтрокаТаблицы.КоличествоУпаковок = СтрокаТекст.Количество;
      СтрокаТаблицы.Сумма = СтрокаТекст.Сумма;
      СтрокаТаблицы.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
      СтрокаТаблицы.СуммаНДС = 0;
      СтрокаТаблицы.НомерСтрокиДокументаПоставщика = СтрокаТекст.НомерСтрокиДокумента;
      СтрокаТаблицы.Склад = Склад;
      
   КонецЦикла;   
   
КонецПроцедуры   

&НаСервере
Процедура ПодготовитьСтруктуруЗаполненияШапки(Отказ, СтруктураЗаполненияШапки)
   
   СтруктураЗаполненияШапки = Новый Структура;
   
   СтруктураЗаполненияШапки.Вставить("Партнер", Партнер);
   СтруктураЗаполненияШапки.Вставить("Контрагент", Контрагент);
   СтруктураЗаполненияШапки.Вставить("Соглашение", Соглашение);
   
   СтруктураЗаполненияШапки.Вставить("Склад", Склад);
   
КонецПроцедуры   

&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
   
   СохранитьНастройки();
   
КонецПроцедуры

&НаСервере
Процедура СохранитьНастройки()

   КлючНастроек = "Обработка.ЗагрузкаИзEXCEL";
   Настройки = Новый Соответствие;
   
   Настройки.Вставить("ВидНоменклатуры", ВидНоменклатуры);
   Настройки.Вставить("Контрагент", Контрагент);
   Настройки.Вставить("Партнер", Партнер);
   Настройки.Вставить("Соглашение", Соглашение);
   Настройки.Вставить("ХарактеристикаПроизводитель", ХарактеристикаПроизводитель);
   Настройки.Вставить("ГруппаДоступаКонтрагентов", ГруппаДоступаКонтрагентов);
   Настройки.Вставить("Склад", Склад);
   Настройки.Вставить("ИспользоватьУпаковки", ИспользоватьУпаковки);
   Настройки.Вставить("НаборУпаковок", НаборУпаковок);
   
   ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("Обработка.ЗагрузкаИзEXCEL", КлючНастроек, Настройки);

КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   
   ВосстановитьНастройки();
   
КонецПроцедуры

&НаСервере
Процедура ВосстановитьНастройки()
   
   КлючНастроек = "Обработка.ЗагрузкаИзEXCEL";
   
   ЗначениеНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("Обработка.ЗагрузкаИзEXCEL",

КлючНастроек);
   
   Если ТипЗнч(ЗначениеНастроек) = Тип("Соответствие") Тогда
      
      ВидНоменклатуры          = ЗначениеНастроек.Получить("ВидНоменклатуры");
      Попытка
         Партнер   = ЗначениеНастроек.Получить("Партнер");
         Контрагент = ЗначениеНастроек.Получить("Контрагент");
         Соглашение = ЗначениеНастроек.Получить("Соглашение");
      Исключение КонецПопытки;   
      ХарактеристикаПроизводитель   = ЗначениеНастроек.Получить("ХарактеристикаПроизводитель");
      ГруппаДоступаКонтрагентов   = ЗначениеНастроек.Получить("ГруппаДоступаКонтрагентов");
      Склад                  = ЗначениеНастроек.Получить("Склад");
      ИспользоватьУпаковки      = ЗначениеНастроек.Получить("ИспользоватьУпаковки");
      НаборУпаковок            = ЗначениеНастроек.Получить("НаборУпаковок");
      
   КонецЕсли;   
   
КонецПроцедуры

&НаСервере
Функция ПолучитьТекущуюСтрокуСтруктурой(ТекущаяСтрока, СтруктураДействий)
   Перем СтруктураПараметровДействия;

   СтруктураПолейТЧ = Новый Структура;

   Если СтруктураДействий.Свойство("ПроверитьХарактеристикуПоВладельцу") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("ХарактеристикиИспользуются");
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПроверитьЗаполнитьУпаковкуПоВладельцу") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Упаковка");
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПроверитьСтатьюАналитикуРасходов") Тогда
      СтруктураПолейТЧ.Вставить("ТипНоменклатуры");
      СтруктураПолейТЧ.Вставить("СтатьяРасходов");
      СтруктураПолейТЧ.Вставить("АналитикаРасходов");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьКоличествоЕдиниц")
      Или СтруктураДействий.Свойство("ПересчитатьКоличествоУпаковок") Тогда
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковок", 0);
      СтруктураПолейТЧ.Вставить("Количество", 0);
   КонецЕсли;

   Суффикс = Неопределено;
   
   Если СтруктураДействий.Свойство("ПересчитатьКоличествоЕдиницСуффикс",Суффикс)
      Или СтруктураДействий.Свойство("ПересчитатьКоличествоУпаковокСуффикс",Суффикс) Тогда
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковок"+Суффикс, 0);
      СтруктураПолейТЧ.Вставить("Количество"+Суффикс    , 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьЦенуПродажи") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("ВидЦены");
      СтруктураПолейТЧ.Вставить("Цена", 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьЦенуПродажиПоАссортименту") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("ВидЦены");
      СтруктураПолейТЧ.Вставить("Цена", 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьЦенуЗакупки") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("УсловиеЦеныПоставщика");
      СтруктураПолейТЧ.Вставить("Цена", 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьНоменклатуруПоНоменклатуреПоставщика") Тогда
      СтруктураПолейТЧ.Вставить("НоменклатураПоставщика");
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("ХарактеристикиИспользуются");
   КонецЕсли;

   Если СтруктураДействий.Свойство("ЗаполнитьНоменклатуруПоставщикаПоНоменклатуре") Тогда
      СтруктураПолейТЧ.Вставить("НоменклатураПоставщика");
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("Упаковка");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПроверитьСопоставленнуюНоменклатуруПоставщика") Тогда
      СтруктураПолейТЧ.Вставить("НомерСтроки");
      СтруктураПолейТЧ.Вставить("НоменклатураПоставщика");
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("Упаковка");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьСтавкуНДС")
       ИЛИ СтруктураДействий.Свойство("ЗаполнитьСтавкуНДСПоНоменклатуре") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("СтавкаНДС");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьСтавкуНДСВозвратнойТары") Тогда
      СтруктураПолейТЧ.Вставить("ТипНоменклатуры");
      СтруктураПолейТЧ.Вставить("СтавкаНДС");
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПересчитатьСуммуНДС") Тогда
      СтруктураПолейТЧ.Вставить("Сумма"    , 0);
      СтруктураПолейТЧ.Вставить("СтавкаНДС", 0);
      СтруктураПолейТЧ.Вставить("СуммаНДС" , 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьСуммуСНДС") Тогда
      СтруктураПолейТЧ.Вставить("Сумма"    , 0);
      СтруктураПолейТЧ.Вставить("СуммаНДС" , 0);
      СтруктураПолейТЧ.Вставить("СуммаСНДС", 0);
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПересчитатьСуммуБезНДС") Тогда
      СтруктураПолейТЧ.Вставить("Сумма"    , 0);
      СтруктураПолейТЧ.Вставить("СуммаНДС" , 0);
      СтруктураПолейТЧ.Вставить("СуммаБезНДС", 0);
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПересчитатьСуммуРегл") Тогда
      СтруктураПолейТЧ.Вставить("СуммаРегл"    , 0);
      СтруктураПолейТЧ.Вставить("СуммаБезНДС", 0);
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПересчитатьНДСРегл") Тогда
      СтруктураПолейТЧ.Вставить("СуммаНДС" , 0);
      СтруктураПолейТЧ.Вставить("НДСРегл", 0);
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПересчитатьСумму") Тогда
      СтруктураПолейТЧ.Вставить("Сумма"             , 0);
      СтруктураПолейТЧ.Вставить("Цена"              , 0);
      СтруктураПолейТЧ.Вставить(?(ПустаяСтрока

(СтруктураДействий.ПересчитатьСумму),"КоличествоУпаковок",СтруктураДействий.ПересчитатьСумму), 0);
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПересчитатьСуммуСУчетомРучнойСкидки") Тогда
      СтруктураПолейТЧ.Вставить("Сумма"              , 0);
      СтруктураПолейТЧ.Вставить("Количество"         , 0);
      СтруктураПолейТЧ.Вставить("Цена      "         , 0);
      СтруктураПолейТЧ.Вставить("СуммаРучнойСкидки"  , 0);
      СтруктураПолейТЧ.Вставить("ПроцентРучнойСкидки", 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьСуммуСУчетомАвтоматическойСкидки") Тогда
      СтруктураПолейТЧ.Вставить("Сумма"                      , 0);
      СтруктураПолейТЧ.Вставить("СуммаАвтоматическойСкидки"  , 0);
      СтруктураПолейТЧ.Вставить("ПроцентАвтоматическойСкидки", 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами") Тогда
      СтруктураПолейТЧ.Вставить("Сумма"                      , 0);
      СтруктураПолейТЧ.Вставить("СуммаБонусныхБалловКСписаниюВВалюте"  , 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьЦенуЗаУпаковку") Тогда
      СтруктураПолейТЧ.Вставить("Цена"      , 0);
      СтруктураПолейТЧ.Вставить("Количество", 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьЦенуЗаказаЗаУпаковку") Тогда
      СтруктураПолейТЧ.Вставить("ЦенаЗаказа"      , 0);
      СтруктураПолейТЧ.Вставить("Количество", 0);
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПересчитатьСуммуСверхЗаказа") Тогда
      СтруктураПолейТЧ.Вставить("СуммаСНДС" , 0);
      СтруктураПолейТЧ.Вставить("СуммаСверхЗаказа", 0);
      СтруктураПолейТЧ.Вставить("КодСтроки", 1);
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПересчитатьЦенуСкидкуПоСуммеВПродажах") Тогда
      СтруктураПолейТЧ.Вставить("Цена"                       , 0);
      СтруктураПолейТЧ.Вставить("Сумма"                      , 0);
      СтруктураПолейТЧ.Вставить("СуммаАвтоматическойСкидки"  , 0);
      СтруктураПолейТЧ.Вставить("ПроцентАвтоматическойСкидки", 0);
      СтруктураПолейТЧ.Вставить("СуммаРучнойСкидки"          , 0);
      СтруктураПолейТЧ.Вставить("ПроцентРучнойСкидки"        , 0);
      СтруктураПолейТЧ.Вставить("КоличествоУпаковок "        , 0);
      СтруктураПолейТЧ.Вставить("Количество"              , 0);
      СтруктураПолейТЧ.Вставить("ВидЦены");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьЦенуСкидкуПоСуммеВЗакупках") Тогда
      СтруктураПолейТЧ.Вставить("Цена"                       , 0);
      СтруктураПолейТЧ.Вставить("Сумма"                      , 0);
      СтруктураПолейТЧ.Вставить("СуммаРучнойСкидки"          , 0);
      СтруктураПолейТЧ.Вставить("ПроцентРучнойСкидки"        , 0);
      СтруктураПолейТЧ.Вставить("КоличествоУпаковок "        , 0);
      СтруктураПолейТЧ.Вставить("Количество"                , 0);
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьКоличествоУпаковок") Тогда
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокПоДаннымУчета", 0);
      СтруктураПолейТЧ.Вставить("КоличествоПоДаннымУчета"        , 0);
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПроверитьЗаполнитьСклад") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Склад");
      СтруктураПолейТЧ.Вставить("ТипНоменклатуры");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьУсловияПродаж") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("Цена", 0);
      СтруктураПолейТЧ.Вставить("ВидЦены");
      СтруктураПолейТЧ.Вставить("СтавкаНДС");
      СтруктураПолейТЧ.Вставить("СрокПоставки");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьУсловияПродажУслуги") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("Цена", 0);
      СтруктураПолейТЧ.Вставить("ВидЦены");
      СтруктураПолейТЧ.Вставить("СтавкаНДС");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьРеквизитыПоНоменклатуре") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("ВестиУчетПоГТД");
      СтруктураПолейТЧ.Вставить("ЭтоУслуга");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакТипНоменклатуры", СтруктураПараметровДействия)
      И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда
      
      Для Каждого Поле Из СтруктураПараметровДействия Цикл
         СтруктураПолейТЧ.Вставить(Поле.Ключ);
         СтруктураПолейТЧ.Вставить(Поле.Значение);
      КонецЦикла;
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакХарактеристикиИспользуются", СтруктураПараметровДействия)
      И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда
      
      Для Каждого Поле Из СтруктураПараметровДействия Цикл
         СтруктураПолейТЧ.Вставить(Поле.Ключ);
         СтруктураПолейТЧ.Вставить(Поле.Значение);
      КонецЦикла;
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакАналитикаРасходовОбязательна",

СтруктураПараметровДействия) Тогда
      
      Если Не СтруктураПараметровДействия = Неопределено И СтруктураПараметровДействия.Свойство

("ИмяРеквизита") Тогда
         СтруктураПолейТЧ.Вставить(СтруктураПараметровДействия["ИмяРеквизита"]);
      Иначе
         СтруктураПолейТЧ.Вставить("СтатьяРасходов");
      КонецЕсли;
      СтруктураПолейТЧ.Вставить("АналитикаРасходовОбязательна");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакВедетсяУчетПоГТД", СтруктураПараметровДействия)
      И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда
      
      Для Каждого Поле Из СтруктураПараметровДействия Цикл
         СтруктураПолейТЧ.Вставить(Поле.Ключ);
         СтруктураПолейТЧ.Вставить(Поле.Значение);
      КонецЦикла;
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакЭтоУслуга", СтруктураПараметровДействия)
      И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда
      
      Для Каждого Поле Из СтруктураПараметровДействия Цикл
         СтруктураПолейТЧ.Вставить(Поле.Ключ);
         СтруктураПолейТЧ.Вставить(Поле.Значение);
      КонецЦикла;
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("УстановитьАктивность") Тогда
      СтруктураПолейТЧ.Вставить("Активность");
      СтруктураПолейТЧ.Вставить("ИндексКартинки");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьХарактеристикуНекачественногоТовара")
      ИЛИ СтруктураДействий.Свойство("ЗаполнитьУпаковкуНекачественногоТовара") Тогда
      СтруктураПолейТЧ.Вставить("НоменклатураИсходногоКачества");
      СтруктураПолейТЧ.Вставить("ХарактеристикиИспользуются");
   КонецЕсли;

   Если СтруктураДействий.Свойство("ПроверитьЗаполнитьВариантКомплектацииПоВладельцу") Тогда

      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("ВариантКомплектации");
      СтруктураПолейТЧ.Вставить("ХарактеристикиИспользуются");

   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьФлагРасхождение") Тогда

      СтруктураПолейТЧ.Вставить("Расхождение");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковок");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокФакт");
      
   КонецЕсли;

   Если СтруктураДействий.Свойство("ЗаполнитьФлагИзлишекПорча") Тогда

      СтруктураПолейТЧ.Вставить("ИзлишекПорча");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьФлагИзлишекПорча") Тогда

      СтруктураПолейТЧ.Вставить("ИзлишекПорча");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ОчиститьСуммуВзаиморасчетов") Тогда
      
      СтруктураПолейТЧ.Вставить("СуммаВзаиморасчетов");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ОчиститьАвтоматическуюСкидку") Тогда
      
      СтруктураПолейТЧ.Вставить("ПроцентАвтоматическойСкидки");
      СтруктураПолейТЧ.Вставить("СуммаАвтоматическойСкидки");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьСодержание") Тогда
      СтруктураПолейТЧ.Вставить("Содержание");
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьДубликатыЗависимыхРеквизитов", СтруктураПараметровДействия)

Тогда
      Для Каждого ПолеСтруктуры Из СтруктураПараметровДействия Цикл
         СтруктураПолейТЧ.Вставить(ПолеСтруктуры.Ключ);
         ЗависимыеРеквизиты = Новый Структура(ПолеСтруктуры.Значение);
         Для Каждого Реквизит Из ЗависимыеРеквизиты Цикл
            СтруктураПолейТЧ.Вставить(Реквизит.Ключ+ПолеСтруктуры.Ключ, 0);
            СтруктураПолейТЧ.Вставить(Реквизит.Ключ, 0);
         КонецЦикла;
      КонецЦикла;
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ОчиститьСуммуВознаграждения") Тогда
      СтруктураПолейТЧ.Вставить("СуммаВознаграждения");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьСтатьюАналитикуРасходовПоУмолчанию") Тогда
      СтруктураПолейТЧ.Вставить("СтатьяРасходов");
      СтруктураПолейТЧ.Вставить("АналитикаРасходов");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакВариантОформленияПродажи") Тогда
      СтруктураПолейТЧ.Вставить("ВариантОформленияПродажи");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьФлагиНедоборНеотгружаемыеИзлишкиНедостачи") Тогда
      СтруктураПолейТЧ.Вставить("ЕстьНедобор");
      СтруктураПолейТЧ.Вставить("ЕстьНеотгружаемые");
      СтруктураПолейТЧ.Вставить("ЕстьИзлишки");
      СтруктураПолейТЧ.Вставить("ЕстьНедостачи");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковок");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокНеОтгружать");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокВДокументе");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокВДокументеНеотгружаемые");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакПодакцизныйТовар", СтруктураПараметровДействия)
      И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда
      
      Для Каждого Поле Из СтруктураПараметровДействия Цикл
         СтруктураПолейТЧ.Вставить(Поле.Ключ);
         СтруктураПолейТЧ.Вставить(Поле.Значение);
      КонецЦикла;
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьКоличествоНеОтгружать") Тогда
      СтруктураПолейТЧ.Вставить("КоличествоУпаковок");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокВДокументе");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокНеОтгружать");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокВДокументеНеотгружаемые");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьСуммуПродажи") Тогда
      СтруктураПолейТЧ.Вставить("ЦенаПродажи");
      СтруктураПолейТЧ.Вставить("СуммаПродажи");
      СтруктураПолейТЧ.Вставить("СуммаПродажиНДС");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПроверитьЗаполнитьОбеспечение") Тогда
      СтруктураПолейТЧ.Вставить("ВариантОбеспечения");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьУчетноеКоличествоНоменклатуры")
    ИЛИ СтруктураДействий.Свойство("ПересчитатьКоличествоУпаковокПоФакту") Тогда
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокФакт");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокУчет");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьУчетноеКоличествоНоменклатуры") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокФакт");
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокУчет");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакНаличияНоменклатурыПродаваемойСовместно") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("ИндексСовместноПродаваемыеТовары");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьОбъемВесУпаковки") Тогда
      СтруктураПолейТЧ.Вставить("Упаковка");
      СтруктураПолейТЧ.Вставить("ОбъемУпаковки");
      СтруктураПолейТЧ.Вставить("ВесУпаковки");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПроверитьАссортиментСтроки") Тогда
      СтруктураПолейТЧ.Вставить("НомерСтроки");
      СтруктураПолейТЧ.Вставить("Номенклатура");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакБезВозвратнойТары", СтруктураПараметровДействия)  Тогда
      
      СтруктураПолейТЧ.Вставить("ТипНоменклатуры");
      СтруктураПолейТЧ.Вставить("БезВозвратнойТары");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакОтмененоБезВозвратнойТары", СтруктураПараметровДействия) 

Тогда
      
      СтруктураПолейТЧ.Вставить("ТипНоменклатуры");
      СтруктураПолейТЧ.Вставить("ОтмененоБезВозвратнойТары");
      СтруктураПолейТЧ.Вставить("Отменено");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакАктивностьБезВозвратнойТары",

СтруктураПараметровДействия)  Тогда
      
      СтруктураПолейТЧ.Вставить("ТипНоменклатуры");
      СтруктураПолейТЧ.Вставить("АктивностьБезВозвратнойТары");
      СтруктураПолейТЧ.Вставить("Активность");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПризнакАртикул", СтруктураПараметровДействия)
      И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда
      
      Для Каждого Поле Из СтруктураПараметровДействия Цикл
         СтруктураПолейТЧ.Вставить(Поле.Ключ);
         СтруктураПолейТЧ.Вставить(Поле.Значение);
      КонецЦикла;
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПомещение", СтруктураПараметровДействия)  Тогда
      
      СтруктураПолейТЧ.Вставить("Помещение");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПродавца", СтруктураПараметровДействия)  Тогда
      
      СтруктураПолейТЧ.Вставить("Продавец");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПроверитьСериюРассчитатьСтатус",СтруктураПараметровДействия) Тогда
      
      Если СтруктураПараметровДействия.ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Количество()

= 0 Тогда
         СтруктураПолейТЧ.Вставить("Серия");
         СтруктураПолейТЧ.Вставить("Номенклатура");
         СтруктураПолейТЧ.Вставить("Характеристика");
      
         СтруктураПолейТЧ.Вставить("СтатусУказанияСерий");
      Иначе
         Для Каждого ИмяПоляСтатус из

СтруктураПараметровДействия.ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий Цикл
            Суффикс = НоменклатураКлиентСервер.СуффиксВИмениПоляСтатусУказанияСерий

(ИмяПоляСтатус);
            СтруктураПолейТЧ.Вставить(ИмяПоляСтатус);
            Если ТекущаяСтрока.Свойство("Серия" + Суффикс) Тогда
               СтруктураПолейТЧ.Вставить("Серия" + Суффикс);
               СтруктураПолейТЧ.Вставить("Номенклатура" + Суффикс);
               СтруктураПолейТЧ.Вставить("Характеристика" + Суффикс);
            КонецЕсли;
         КонецЦикла;
      КонецЕсли;
      
      Для Каждого СтрМас из СтруктураПараметровДействия.ПараметрыУказанияСерий.ПоляСвязи Цикл
         СтруктураПолейТЧ.Вставить(СтрМас);
      КонецЦикла;
      
      Если СтруктураПараметровДействия.ПараметрыУказанияСерий.ЭтоЗаказ Тогда
         СтруктураПолейТЧ.Вставить("Отменено");
         СтруктураПолейТЧ.Вставить("ВариантОбеспечения");
      КонецЕсли;
      
      СтруктураПолейТЧ.Вставить("Количество");
      
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ЗаполнитьПередачуВЭксплуатацию") Тогда
      СтруктураПолейТЧ.Вставить("Номенклатура");
      СтруктураПолейТЧ.Вставить("Характеристика");
      СтруктураПолейТЧ.Вставить("ФизическоеЛицо");
      СтруктураПолейТЧ.Вставить("ПередачаВЭксплуатацию");
   КонецЕсли;
   
   Если СтруктураДействий.Свойство("ПересчитатьРасхожденияПриемка") Тогда
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокРасхождения");
      СтруктураПолейТЧ.Вставить("СуммаРасхождения");
      СтруктураПолейТЧ.Вставить("СуммаНДСРасхождения");
      СтруктураПолейТЧ.Вставить("СуммаСНДСРасхождения");
      
      СтруктураПолейТЧ.Вставить("КоличествоУпаковокПоДокументу");
      СтруктураПолейТЧ.Вставить("КоличествоПоДокументу");
      СтруктураПолейТЧ.Вставить("СуммаПоДокументу");
      СтруктураПолейТЧ.Вставить("СуммаНДСПоДокументу");
      СтруктураПолейТЧ.Вставить("СуммаСНДСПоДокументу");
      СтруктураПолейТЧ.Вставить("ЕстьРасхождения");
      СтруктураПолейТЧ.Вставить("Действие");
   КонецЕсли;
   
   ЗаполнитьЗначенияСвойств(СтруктураПолейТЧ,ТекущаяСтрока);
   
   Возврат СтруктураПолейТЧ;
   
КонецФункции


&НаКлиенте
Процедура ИспользоватьУпаковкиПриИзменении(Элемент)
   
   УстановитьВидимость();
   
КонецПроцедуры

&НаКлиенте
Процедура УстановитьВидимость()
   
   Элементы.НаборУпаковок.Доступность = ИспользоватьУпаковки;
   
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   
   УстановитьВидимость();
   
КонецПроцедуры

antoneus

Запрос по номенклатуре надо было [bрас[/b]комментировать, т.е. убрать знаки "//" в начале строк.

&НаСервере
Функция ПолучитьНоменклатуру(СтрокаТекст)
   
    Запрос = Новый Запрос;
    Артикул = СтрокаТекст.Артикул;
    Наименование = СтрокаТекст.Наименование;
   
    Запрос.УстановитьПараметр("Артикул", Артикул);
    Запрос.Текст = "ВЫБРАТЬ
                   |    Номенклатура.Ссылка
                   |ИЗ
                   |    Справочник.Номенклатура КАК Номенклатура
                   |ГДЕ
                   |    Номенклатура.Артикул = &Артикул
                   |    И НЕ Номенклатура.ПометкаУдаления";
   
    Выборка = Запрос.Выполнить().Выбрать();
   
    Если Выборка.Следующий() тогда
       
        НоменклатураСсылка = Выборка.Ссылка;
       
   Иначе
РодительСсылка = ГруппаНоменклатуры;
       
        // Производитель
        ТекстПроизводитель = СокрЛП(СтрокаТекст.Производитель);
        Если ЗначениеЗаполнено(ТекстПроизводитель) тогда


и т.д.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск