![]() |
![]() |
![]() |
|
как сделать что-бы выполнялась суммирование при загрузки в 1с предприятие 8.3 | ☑ | ||
---|---|---|---|---|
0
сергей789
01.02.19
✎
14:42
|
как сделать что-бы выполнялась суммирование при загрузки в 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); СтруктураПолейТЧ.Вставить("ВидЦены"); СтруктураПолейТЧ.Вставить("СтавкаНДС"); КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьРеквизитыПоНоменклатуре") Тогда СтруктураПолейТЧ.Вставить("Номенклатура"); СтруктураПолейТЧ.Вставить("ВестиУчетПоГТД"); СтруктураПолейТЧ.Вставить("ЭтоУслуга"); КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьПризнакТипНоменклатуры", СтруктураПараметровДействия) И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда Для Каждого Поле Из СтруктураПараметровДействия Цикл СтруктураПолейТЧ.Вставить(Поле.Ключ); СтруктураПолейТЧ.Вставить(Поле.Значение); КонецЦикла; КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьПризнакХарактеристикиИспользуются", СтруктураПараметровДействия) И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда Для Каждого Поле Из СтруктураПараметровДействия Цикл СтруктураПолейТЧ.Вставить(Поле.Ключ); СтруктураПолейТЧ.Вставить(Поле.Значение); КонецЦикла; КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьПризнакАналитикаРасходовОбязательна", СтруктураПараметровДействия) Тогда Если Не СтруктураПараметровДействия = Неопределено И СтруктураПараметровДействия.Свойство ("ИмяРеквизита") Тогда СтруктураПолейТЧ.Вставить(СтруктураПараметровДействия["ИмяРеквизита"]); Иначе СтруктураПолейТЧ.Вставить("СтатьяРасходов"); КонецЕсли; СтруктураПолейТЧ.Вставить("АналитикаРасходовОбязательна"); КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьПризнакВедетсяУчетПоГТД", СтруктураПараметровДействия) И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда Для Каждого Поле Из СтруктураПараметровДействия Цикл СтруктураПолейТЧ.Вставить(Поле.Ключ); СтруктураПолейТЧ.Вставить(Поле.Значение); КонецЦикла; КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьПризнакЭтоУслуга", СтруктураПараметровДействия) И ЗначениеЗаполнено(СтруктураПараметровДействия) Тогда Для Каждого Поле Из СтруктураПараметровДействия Цикл СтруктураПолейТЧ.Вставить(Поле.Ключ); СтруктураПолейТЧ.Вставить(Поле.Значение); КонецЦикла; КонецЕсли; Если СтруктураДействий.Свойство("УстановитьАктивность") Тогда СтруктураПолейТЧ.Вставить("Активность"); СтруктураПолейТЧ.Вставить("ИндексКартинки"); КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьХарактеристикуНекачественногоТовара") ИЛИ СтруктураДействий.Свойство("ЗаполнитьУпаковкуНекачественногоТовара") Тогда СтруктураПолейТЧ.Вставить("НоменклатураИсходногоКачества"); СтруктураПолейТЧ.Вставить("ХарактеристикиИспользуются"); КонецЕсли; Если СтруктураДействий.Свойство("ПроверитьЗаполнитьВариантКомплектацииПоВладельцу") Тогда СтруктураПолейТЧ.Вставить("Номенклатура"); СтруктураПолейТЧ.Вставить("Характеристика"); СтруктураПолейТЧ.Вставить("ВариантКомплектации"); СтруктураПолейТЧ.Вставить("ХарактеристикиИспользуются"); КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьФлагРасхождение") Тогда СтруктураПолейТЧ.Вставить("Расхождение"); СтруктураПолейТЧ.Вставить("КоличествоУпаковок"); СтруктураПолейТЧ.Вставить("КоличествоУпаковокФакт"); КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьФлагИзлишекПорча") Тогда СтруктураПолейТЧ.Вставить("ИзлишекПорча"); КонецЕсли; Если СтруктураДействий.Свойство("ЗаполнитьФлагИзлишекПорча") Тогда СтруктураПолейТЧ.Вставить("ИзлишекПорча"); КонецЕсли; Если СтруктураДействий.Свойство("ОчиститьСуммуВзаиморасчетов") Тогда СтруктураПолейТЧ.Вставить("СуммаВзаиморасчетов"); КонецЕсли; |
|||
1
ДенисЧ
01.02.19
✎
14:43
|
Так может, перед добавлением строки поискать существующую?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |