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

Загрузка и обработка xml в 1с

Автор Ваня, 14 мар 2018, 10:27

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

Ваня

Помогите прочитать код и его ошибки.


&НаСервере
Процедура ПрочитатьФайлНаСервере(Файл)

ПутьФайла = Файл;

//Определение файла начало
Покупатель = Ложь;
Текст = Новый ЧтениеТекста(ПутьФайла);
Стр = Текст.ПрочитатьСтроку();
Счетчик = 1;
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
Стр = Текст.ПрочитатьСтроку();

Если Найти(Стр,"<!--DocSale-->") <> 0  Тогда
Покупатель = Истина;
Прервать;
КонецЕсли;

Счетчик = Счетчик + 1;
Если Счетчик = 5 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
//Определение файла конец

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьФайла);

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.IDРесурс
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.IDРесурс <> 0";

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

СверткаРезультат = РезультатЗапроса.Скопировать();
СверткаРезультат.Свернуть("IDРесурс");

//Запрос на имеющихся контрагентов
ЗапросКонтр = Новый Запрос;
ЗапросКонтр.Текст =
"ВЫБРАТЬ
| Контрагенты.ИНН
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН <> """"";

РезультатЗапросаКонтр = ЗапросКонтр.Выполнить().Выгрузить();

СверткаРезультатКонтр = РезультатЗапросаКонтр.Скопировать();
СверткаРезультатКонтр.Свернуть("ИНН");

Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

//ВНИМАНИЕ ! ДОБАВИТЬ имя контрагента в таблицу. Выдать сообщение о количестве
//контрагентов без ИНН,
//предупреждение при загрузке доков и проверить на ошибки при незаполненном

//Новая  вставка
Если ЧтениеXML.Имя = "Contr" Тогда
Если ЧтениеXML.КоличествоАтрибутов()>0 Тогда

//ТаблицаКонтрагентов
НомерСтроки = ТаблицаКонтрагентов.Количество();
СтрокаТЗ = ТаблицаКонтрагентов.Добавить();

Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
Атрибут = ЧтениеXML.Значение;
Если Покупатель Тогда
СтрокаТЗ.ТипКонтрагента = "Покупатель";
Иначе
СтрокаТЗ.ТипКонтрагента = "Поставщик";
КонецЕсли;
Если ЧтениеXML.Имя = "ID" Тогда
СтрокаТЗ.ID = Атрибут;
ИначеЕсли ЧтениеXML.Имя = "NAME" Тогда
СтрокаТЗ.NAME = Атрибут;
ИначеЕсли ЧтениеXML.Имя = "SNAME" Тогда
СтрокаТЗ.SNAME = Атрибут;
ИначеЕсли ЧтениеXML.Имя = "INN" Тогда
Отбор = Новый Структура;
Отбор.Вставить("ИНН", Атрибут);
МассивСтрокКонтр = СверткаРезультатКонтр.НайтиСтроки(Отбор);
Если МассивСтрокКонтр.Количество()>0 Тогда
ТаблицаКонтрагентов.Удалить(НомерСтроки);
Прервать;
КонецЕсли;

СтрокаТЗ.ИНН = Атрибут;

КонецЕсли;
КонецЦикла;
КонецЕсли;

ИначеЕсли  ЧтениеXML.Имя = "Good" Тогда
Если ЧтениеXML.КоличествоАтрибутов()>0 Тогда

НомерСтроки = ТаблицаЗначений.Количество();
СтрокаТЗ = ТаблицаЗначений.Добавить();

Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
Атрибут = ЧтениеXML.Значение;

Если ЧтениеXML.Имя = "ID_EL" Тогда

Отбор = Новый Структура;
Отбор.Вставить("IDРесурс", Число(Атрибут));
МассивСтрок = СверткаРезультат.НайтиСтроки(Отбор);
Если МассивСтрок.Количество()>0 Тогда
ТаблицаЗначений.Удалить(НомерСтроки);
Прервать;
КонецЕсли;

СтрокаТЗ.ID = Атрибут;
ИначеЕсли ЧтениеXML.Имя = "SNAME" Тогда
СтрокаТЗ.SNAME = Атрибут;
ИначеЕсли ЧтениеXML.Имя = "NAME" Тогда
СтрокаТЗ.NAME = Атрибут;
ИначеЕсли ЧтениеXML.Имя = "IS_SERVICE" Тогда
Если Атрибут = "1" Тогда
СтрокаТЗ.Услуга = Истина;
КонецЕсли;
ИначеЕсли ЧтениеXML.Имя = "CLASS" Тогда
Каталог = Справочники.Номенклатура.НайтиПоНаименованию(Атрибут);
Если Каталог.ЭтоГруппа Тогда
СтрокаТЗ.Каталог = Каталог;
КонецЕсли;

КонецЕсли;
КонецЦикла;
КонецЕсли;

КонецЕсли;
//Новая  вставка конец
КонецЕсли;

Если ЧтениеXML.Имя = "Doc" Тогда
Прервать;
КонецЕсли;

//Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента и ЧтениеXML.Имя = "RegGood" Тогда
// Прервать;
//КонецЕсли;


КонецЦикла;

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

&НаКлиенте
Процедура ПутьКФайламНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

Режим = РежимДиалогаВыбораФайла.ВыборКаталога;
Диалог = Новый ДиалогВыбораФайла(Режим);

Если Диалог.Выбрать() Тогда
ПутьКФайлам = Диалог.Каталог;
КонецЕсли;

МассивНайденных = НайтиФайлы(ПутьКФайлам, "*.xml");

ТаблицаЗначений.Очистить();
ТаблицаКонтрагентов.Очистить();

Для Каждого Файл из МассивНайденных Цикл
Сообщить(Файл.Имя);
файл = Файл.полноеИмя;
ПрочитатьФайлНаСервере(Файл);
КонецЦикла;

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

&НаКлиенте
Процедура ЗаписатьСправочнки(Команда)
ЗаписатьСправочнкиНаСервере();
КонецПроцедуры

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

Если Справочники.Номенклатура.НайтиПоКоду("БД-00000000") = Справочники.Номенклатура.ПустаяСсылка() Тогда
СоздатьПапку = Справочники.Номенклатура.СоздатьГруппу();
СоздатьПапку.Наименование = "Папка для загрузки из БД-Ресурс";
СоздатьПапку.Код = "БД-00000000";
СоздатьПапку.Записать();
КонецЕсли;

ПапкаЗагрузки = Справочники.Номенклатура.НайтиПоКоду("БД-00000000");

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

////Записано соответствие
Иначе
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяНоменклатура.Наименование = СтрокаТЗ.Name +" "+СтрокаТЗ.SName;
НоваяНоменклатура.НаименованиеПолное = СтрокаТЗ.Name +" "+СтрокаТЗ.SName;
НоваяНоменклатура.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
НоваяНоменклатура.IDРесурс = СтрокаТЗ.ID;
Если СтрокаТЗ.Каталог = Справочники.Номенклатура.ПустаяСсылка() Тогда
НоваяНоменклатура.Родитель = ПапкаЗагрузки;
Иначе
НоваяНоменклатура.Родитель = СтрокаТЗ.Каталог;
КонецЕсли;
Если СтрокаТЗ.Услуга Тогда
НоваяНоменклатура.Услуга = Истина;
КонецЕсли;
НоваяНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
НоваяНоменклатура.Записать();

//Сообщить("Создана номенклатура: "+СтрокаТЗ.name +" "+ СтрокаТЗ.sname);
КонецЕсли;
КонецЦикла;

МассивНайденных = НайтиФайлы(ПутьКФайлам, "*.xml");
Для Каждого Файл из МассивНайденных Цикл
Сообщить(Файл.Имя);
ПутьКФайлам = Файл.полноеИмя;
ОпределитьФайл(ПутьКФайлам);
КонецЦикла;
ТаблицаЗначений.Очистить();

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

&НаСервере
Процедура ЗаписатьСчетПокупателю(ПутьКФайлам)

//Чтение документа и запись в таблицу значений  Начало

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлам);

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Имя");
Тз.Колонки.Добавить("Значение");

Читать= ложь;
Пока ЧтениеXML.Прочитать() Цикл
Если Читать Тогда
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.КоличествоАтрибутов()>0 Тогда
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;

Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;
КонецЦикла;
Иначе 
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;
КонецЕсли;
КонецЕсли;

ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента и ЧтениеXML.Имя = "RegGood" Тогда
Читать = Истина;
КонецЕсли;
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетНаОплатуПокупателю.IDРесурс,
| СчетНаОплатуПокупателю.Ссылка
|ИЗ
| Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
|ГДЕ
| СчетНаОплатуПокупателю.IDРесурс <> 0";

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

СверткаРезультат = РезультатЗапроса.Скопировать();

Для Каждого СтрокаТЗ Из ТЗ Цикл
Если СтрокаТЗ.Имя = "ID"  Тогда
Отбор = Новый Структура;
Отбор.Вставить("IDРесурс", Число(СтрокаТЗ.Значение));
МассивСтрок = СверткаРезультат.НайтиСтроки(Отбор);
Если МассивСтрок.Количество()=0 Тогда
СчетПокупателю = Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
СчетПокупателю.IDРесурс = СтрокаТЗ.Значение;
Иначе СчетПокупателю = МассивСтрок[0].Ссылка.ПолучитьОбъект();
СчетПокупателю.Товары.Очистить();
СчетПокупателю.Услуги.Очистить();
КонецЕсли;
ИначеЕсли СтрокаТЗ.Имя = "DOCDATE" Тогда
СчетПокупателю.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН","7805089195");  //УТОЧНИТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
СчетПокупателю.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("643");

ДатаДокумента = СтрЗаменить(СтрокаТЗ.значение,"-","");
//ДатаДокумента = СтрЗаменить(ДатаДокумента," ","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,"T","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,"Z","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,":","");
СчетПокупателю.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("00-000001");
СчетПокупателю.Дата = ДатаДокумента;
УчетДенежныхСредствБП.УстановитьБанковскийСчет(
СчетПокупателю.СтруктурнаяЕдиница, СчетПокупателю.Организация, СчетПокупателю.ВалютаДокумента, Истина);

ИначеЕсли СтрокаТЗ.Имя = "INN" Тогда
Попытка
СчетПокупателю.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",СокрЛП(СтрокаТЗ.Значение));
Если СокрЛП(СтрокаТЗ.Значение) = "" Тогда
СчетПокупателю.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;

Исключение
СчетПокупателю.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
//СчетПокупателю.Контрагент = Справочники.Контрагенты.НайтиПоКоду("00-000032");        //лишнее для тестирования Торговый дом комплексный!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
КонецПопытки;

//
//создаем новый договор по счету
//
Если НЕ СчетПокупателю.Контрагент = Справочники.Контрагенты.ПустаяСсылка() Тогда

НомерДоговора = СокрЛП(ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(СчетПокупателю.Номер, Истина, Истина));
СчетПокупателю.ДоговорКонтрагента = СоздатьНовыйДоговор(НомерДоговора, СчетПокупателю.Дата, СчетПокупателю.Контрагент, СчетПокупателю.Организация);
КонецЕсли;

НомерДоговора = СокрЛП(ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(СчетПокупателю.Номер, Истина, Истина));
СчетПокупателю.ДоговорКонтрагента = СоздатьНовыйДоговор(НомерДоговора, СчетПокупателю.Дата, СчетПокупателю.Контрагент, СчетПокупателю.Организация);
//заполняем дополнительную закладку
ОтветственныеЛицаБП.УстановитьОтветственныхЛиц(СчетПокупателю);

//Если НЕ ЗначениеЗаполнено(СчетПокупателю.Контрагент) Тогда
// Возврат;
//КонецЕсли;

Адреса = УправлениеКонтактнойИнформацией.ЗначенияКонтактнойИнформацииОбъекта(
СчетПокупателю.Контрагент, Перечисления.ТипыКонтактнойИнформации.Адрес);

Если Адреса.Количество() > 0 Тогда
СчетПокупателю.АдресДоставки = Адреса[0].Значение;
Иначе
СчетПокупателю.АдресДоставки = "";
КонецЕсли;


ИначеЕсли СтрокаТЗ.Имя = "String" Тогда
//СчетПокупателю.Товары.Очистить();
//СчетПокупателю.Услуги.Очистить();
СтрокаТЧ = СчетПокупателю.Товары.Добавить();
СтрокаУТЧ = СчетПокупателю.Услуги.Добавить();


//СтрокаТЧ = СчетПокупателю.Услуги.Добавить();
//ИначеЕсли СтрокаТЗ.Имя = "IS_SERVICE" Тогда
// Если СтрокаТЗ.Значение = "1" Тогда
// СтрокаТЧ = СчетПокупателю.Услуги.Добавить();
// Иначе
// СтрокаТЧ = СчетПокупателю.Товары.Добавить();
// КонецЕсли;
ИначеЕсли СтрокаТЗ.Имя = "IS_SERVICE" Тогда
Если СтрокаТЗ.Значение = "1" Тогда
СчетПокупателю.Товары.Удалить(СчетПокупателю.Товары.Количество()-1);
Иначе
СчетПокупателю.Услуги.Удалить(СчетПокупателю.Услуги.Количество()-1);

КонецЕсли;

ИначеЕсли СтрокаТЗ.Имя = "ID_EL" Тогда
СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("IDРесурс",Число(СтрокаТЗ.Значение));
СтрокаУТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("IDРесурс",Число(СтрокаТЗ.Значение));
СтрокаУТЧ.Содержание = СтрокаУТЧ.Номенклатура;
ИначеЕсли СтрокаТЗ.Имя = "QU" Тогда
СтрокаТЧ.Количество = СтрокаТЗ.Значение;
СтрокаУТЧ.Количество = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "MU" Тогда
ИначеЕсли СтрокаТЗ.Имя = "PRICE" Тогда
СтрокаТЧ.Цена = СтрокаТЗ.Значение;
СтрокаУТЧ.Цена = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "SUM" Тогда
СтрокаТЧ.Сумма = СтрокаТЗ.Значение;
СтрокаУТЧ.Сумма = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "SUMNDS" Тогда
СтрокаТЧ.СуммаНДС = СтрокаТЗ.Значение;
СтрокаУТЧ.СуммаНДС = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "SUMWITHNDS" Тогда
Если СтрокаТч.Сумма = Число(?(СтрокаТЗ.Значение="",СтрокаТЗ.Значение=0,СтрокаТЗ.Значение=СтрокаТЗ.Значение)) Тогда
СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
СтрокаУТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
Иначе
СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
СтрокаУТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
КонецЕсли;
ИначеЕсли СтрокаТЗ.Имя = "Doc" Тогда
Попытка СчетПокупателю.Записать();
Исключение
КонецПопытки;
КонецЕсли;

КонецЦикла;

Попытка СчетПокупателю.Записать();
Исключение
КонецПопытки;

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

&НаСервере
Процедура ЗаписатьСчетПоставщика(ПутьКФайлам)

//Чтение документа и запись в таблицу значений  Начало

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлам);

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Имя");
Тз.Колонки.Добавить("Значение");

Читать= ложь;
Пока ЧтениеXML.Прочитать() Цикл
Если Читать Тогда
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.КоличествоАтрибутов()>0 Тогда
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;

Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;
КонецЦикла;
Иначе 
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;
КонецЕсли;
КонецЕсли;

ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента и ЧтениеXML.Имя = "RegGood" Тогда
Читать = Истина;
КонецЕсли;
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетНаОплатуПоставщика.IDРесурс КАК IDРесурс,
| СчетНаОплатуПоставщика.Ссылка КАК Ссылка
|ИЗ
| Документ.СчетНаОплатуПоставщика КАК СчетНаОплатуПоставщика
|ГДЕ
| СчетНаОплатуПоставщика.IDРесурс <> 0";

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

СверткаРезультат = РезультатЗапроса.Скопировать();

Для Каждого СтрокаТЗ Из ТЗ Цикл
Если СтрокаТЗ.Имя = "ID"  Тогда
Отбор = Новый Структура;
Отбор.Вставить("IDРесурс", Число(СтрокаТЗ.Значение));
МассивСтрок = СверткаРезультат.НайтиСтроки(Отбор);
Если МассивСтрок.Количество()=0 Тогда
СчетПоставщика = Документы.СчетНаОплатуПоставщика.СоздатьДокумент();
СчетПоставщика.IDРесурс = СтрокаТЗ.Значение;
Иначе СчетПоставщика = МассивСтрок[0].Ссылка.ПолучитьОбъект();
СчетПоставщика.Товары.Очистить();
СчетПоставщика.Услуги.Очистить();
КонецЕсли;
ИначеЕсли
СтрокаТЗ.Имя = "SNAME" Тогда
НомВходящегоДокумента = СтрокаТЗ.Значение;
//СчетПоставщика.НомерВходящегоДокумента = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "DOCDATE" Тогда
СчетПоставщика.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН","7805089195");  //УТОЧНИТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
СчетПоставщика.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("643");
ДатаДокумента = СтрЗаменить(СтрокаТЗ.значение,"-","");
//ДатаДокумента = СтрЗаменить(ДатаДокумента," ","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,"T","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,"Z","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,":","");
СчетПоставщика.Дата = ДатаДокумента;
СчетПоставщика.ДатаВходящегоДокумента = ДатаДокумента;
СчетПоставщика.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("00-000002");
ИначеЕсли СтрокаТЗ.Имя = "INN" Тогда
СчетПоставщика.НомерВходящегоДокумента = НомВходящегоДокумента;
Попытка
СчетПоставщика.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",СокрЛП(СтрокаТЗ.Значение));
Если СокрЛП(СтрокаТЗ.Значение) = "" Тогда
СчетПоставщика.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;

Исключение
СчетПоставщика.Контрагент = Справочники.Контрагенты.ПустаяСсылка();        //лишнее для тестирования Торговый дом комплексный!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
КонецПопытки;

БухгалтерскийУчетПереопределяемый.УстановитьДоговорКонтрагента(
СчетПоставщика.ДоговорКонтрагента, СчетПоставщика.Контрагент, СчетПоставщика.Организация,
ПолучитьМассивВидовДоговоров());

Если НЕ СчетПоставщика.Контрагент = Справочники.Контрагенты.ПустаяСсылка() Тогда

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

ИначеЕсли СтрокаТЗ.Имя = "String" Тогда
//СчетПоставщика.Товары.Очистить();

СтрокаТЧ = СчетПоставщика.Товары.Добавить();
//СчетПоставщика.Услуги.Очистить();
СтрокаУТЧ = СчетПоставщика.Услуги.Добавить();
//СтрокаТЧ = СчетПоставщика.Товары.Добавить();
//ИначеЕсли СтрокаТЗ.Имя = "IS_SERVICE" Тогда
// Если СтрокаТЗ.Значение = "1" Тогда
// СтрокаТЧ = СчетПоставщика.Услуги.Добавить();
// Иначе
// СтрокаТЧ = СчетПоставщика.Товары.Добавить();
// КонецЕсли;
ИначеЕсли СтрокаТЗ.Имя = "IS_SERVICE" Тогда
Если СтрокаТЗ.Значение = "1" Тогда
СчетПоставщика.Товары.Удалить(СчетПоставщика.Товары.Количество()-1);
Иначе
СчетПоставщика.Услуги.Удалить(СчетПоставщика.Услуги.Количество()-1);

КонецЕсли;

ИначеЕсли СтрокаТЗ.Имя = "ID_EL" Тогда
СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("IDРесурс",Число(СтрокаТЗ.Значение));
СтрокаУТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("IDРесурс",Число(СтрокаТЗ.Значение));
СтрокаУТЧ.Содержание = СтрокаУТЧ.Номенклатура;
ИначеЕсли СтрокаТЗ.Имя = "QU" Тогда
СтрокаТЧ.Количество = СтрокаТЗ.Значение;
СтрокаУТЧ.Количество = СтрокаТЗ.Значение;

ИначеЕсли СтрокаТЗ.Имя = "MU" Тогда
ИначеЕсли СтрокаТЗ.Имя = "PRICE" Тогда
СтрокаТЧ.Цена = СтрокаТЗ.Значение;
СтрокаУТЧ.Цена = СтрокаТЗ.Значение;

ИначеЕсли СтрокаТЗ.Имя = "SUM" Тогда
СтрокаТЧ.Сумма = СтрокаТЗ.Значение;
СтрокаУТЧ.Сумма = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "SUMNDS" Тогда
СтрокаТЧ.СуммаНДС = СтрокаТЗ.Значение;
СтрокаУТЧ.СуммаНДС = СтрокаТЗ.Значение;

ИначеЕсли СтрокаТЗ.Имя = "SUMWITHNDS" Тогда
Если СтрокаТч.Сумма = Число(?(СтрокаТЗ.Значение="",СтрокаТЗ.Значение=0,СтрокаТЗ.Значение=СтрокаТЗ.Значение)) Тогда
СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
СтрокаУТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
Иначе
СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
СтрокаУТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;

КонецЕсли;
ИначеЕсли СтрокаТЗ.Имя = "Doc" Тогда
Попытка СчетПоставщика.Записать();
Исключение
КонецПопытки;
КонецЕсли;

КонецЦикла;

Попытка СчетПоставщика.Записать();
Исключение
КонецПопытки;

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

&НаСервере
Процедура ЗаписатьПоступление(ПутьКФайлам)

//Чтение документа и запись в таблицу значений  Начало

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлам);

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Имя");
Тз.Колонки.Добавить("Значение");

Читать= ложь;
Пока ЧтениеXML.Прочитать() Цикл
Если Читать Тогда
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.КоличествоАтрибутов()>0 Тогда
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;

Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;
КонецЦикла;
Иначе 
СтрокаТЗ = ТЗ.Добавить();
СтрокаТЗ.Имя = ЧтениеXML.Имя;
СтрокаТЗ.Значение = ЧтениеXML.Значение;
КонецЕсли;
КонецЕсли;

ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента и ЧтениеXML.Имя = "RegGood" Тогда
Читать = Истина;
КонецЕсли;
КонецЦикла;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
| ПоступлениеТоваровУслуг.IDРесурс КАК IDРесурс
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
| ПоступлениеТоваровУслуг.IDРесурс <> 0";

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

СверткаРезультат = РезультатЗапроса.Скопировать();

Для Каждого СтрокаТЗ Из ТЗ Цикл
Если СтрокаТЗ.Имя = "ID"  Тогда
Отбор = Новый Структура;
Отбор.Вставить("IDРесурс", Число(СтрокаТЗ.Значение));
МассивСтрок = СверткаРезультат.НайтиСтроки(Отбор);
Если МассивСтрок.Количество()=0 Тогда
ПоступлениеТоваровУслуг = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
//Если ПоступлениеТоваровУслуг.ВидОперации = Неопределено Тогда
ПоступлениеТоваровУслуг.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия");
//КонецЕсли;
ПоступлениеТоваровУслуг.IDРесурс = СтрокаТЗ.Значение;
Иначе ПоступлениеТоваровУслуг = МассивСтрок[0].Ссылка.ПолучитьОбъект();
ПоступлениеТоваровУслуг.Товары.Очистить();
ПоступлениеТоваровУслуг.Услуги.Очистить();
КонецЕсли;
ИначеЕсли
СтрокаТЗ.Имя = "SNAMEHO" Тогда
ПоступлениеТоваровУслуг.НомерВходящегоДокумента = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "DOCDATE" Тогда
ПоступлениеТоваровУслуг.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН","7805089195");  //УТОЧНИТЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ПоступлениеТоваровУслуг.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("643");

ДатаДокумента = СтрЗаменить(СтрокаТЗ.значение,"-","");
//ДатаДокумента = СтрЗаменить(ДатаДокумента," ","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,"T","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,"Z","");
ДатаДокумента = СтрЗаменить(ДатаДокумента,":","");
ПоступлениеТоваровУслуг.ТипЦен = Справочники.ТипыЦенНоменклатуры.НайтиПоКоду("00-000002");
ПоступлениеТоваровУслуг.Дата = ДатаДокумента;
ПоступлениеТоваровУслуг.ДатаВходящегоДокумента = ДатаДокумента;
ИначеЕсли СтрокаТЗ.Имя = "INN" Тогда
Попытка
ПоступлениеТоваровУслуг.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН",СокрЛП(СтрокаТЗ.Значение));
Если СокрЛП(СтрокаТЗ.Значение) = "" Тогда
ПоступлениеТоваровУслуг.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
//Если ПоступлениеТоваровУслуг.Контрагент = Справочники.Контрагенты.ПустаяСсылка()
// или ПоступлениеТоваровУслуг.Контрагент = "" Тогда
// ПоступлениеТоваровУслуг.Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН","1846786487");
//КонецЕсли;
Исключение
ПоступлениеТоваровУслуг.Контрагент = Справочники.Контрагенты.ПустаяСсылка();        //лишнее для тестирования Торговый дом комплексный!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
КонецПопытки;

//ПоступлениеТоваровУслугФормы.КонтрагентПриИзменении(Форма);
БухгалтерскийУчетПереопределяемый.УстановитьДоговорКонтрагента(
ПоступлениеТоваровУслуг.ДоговорКонтрагента, ПоступлениеТоваровУслуг.Контрагент, ПоступлениеТоваровУслуг.Организация,
ПолучитьМассивВидовДоговоров());

Если НЕ ПоступлениеТоваровУслуг.Контрагент = Справочники.Контрагенты.ПустаяСсылка() Тогда

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



//НомерДоговора = СокрЛП(ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать(ПоступлениеТоваровУслуг.Номер, Истина, Истина));
//ПоступлениеТоваровУслуг.ДоговорКонтрагента = СоздатьНовыйДоговорСпоставщиком(НомерДоговора, ПоступлениеТоваровУслуг.Дата, ПоступлениеТоваровУслуг.Контрагент, ПоступлениеТоваровУслуг.Организация);

ПоступлениеТоваровУслуг.Склад = Справочники.Склады.НайтиПоНаименованию("Материалы");

ПоступлениеТоваровУслуг.СпособЗачетаАвансов = ПредопределенноеЗначение("Перечисление.СпособыЗачетаАвансов.Автоматически");
ПоступлениеТоваровУслуг.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01");
ПоступлениеТоваровУслуг.СчетУчетаРасчетовПоАвансам  = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.02");

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

ИначеЕсли СтрокаТЗ.Имя = "String" Тогда

//ПоступлениеТоваровУслуг.Товары.Очистить();
СтрокаУТЧ = ПоступлениеТоваровУслуг.Услуги.Добавить();
//ПоступлениеТоваровУслуг.Услуги.удалить(0);
//ПоступлениеТоваровУслуг.Услуги.Очистить();
СтрокаТЧ = ПоступлениеТоваровУслуг.Товары.Добавить();

//СтрокаТЧ = ПоступлениеТоваровУслуг.Товары.Добавить();
ИначеЕсли СтрокаТЗ.Имя = "IS_SERVICE" Тогда
Если СтрокаТЗ.Значение = "1" Тогда
ПоступлениеТоваровУслуг.Товары.Удалить(ПоступлениеТоваровУслуг.Товары.Количество()-1);
Иначе
ПоступлениеТоваровУслуг.Услуги.Удалить(ПоступлениеТоваровУслуг.Услуги.Количество()-1);

КонецЕсли;
ИначеЕсли СтрокаТЗ.Имя = "ID_EL" Тогда
СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("IDРесурс",Число(СтрокаТЗ.Значение));
СтрокаТЧ.СчетУчета = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
СтрокаТЧ.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НайтиПоКоду("19.03");
СтрокаУТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("IDРесурс",Число(СтрокаТЗ.Значение));
СтрокаУТЧ.СчетЗатратНУ = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.01");
СтрокаУТЧ.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.01");
СтрокаУТЧ.СчетУчетаНДС = ПланыСчетов.Хозрасчетный.НайтиПоКоду("19.04");
СтрокаУТЧ.Содержание   = Строка(СтрокаТЧ.Номенклатура);
ИначеЕсли СтрокаТЗ.Имя = "QU" Тогда
СтрокаТЧ.Количество = СтрокаТЗ.Значение;
СтрокаУТЧ.Количество = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "MU" Тогда
ИначеЕсли СтрокаТЗ.Имя = "PRICE" Тогда
СтрокаТЧ.Цена = СтрокаТЗ.Значение;
СтрокаУТЧ.Цена = СтрокаТЗ.Значение;

ИначеЕсли СтрокаТЗ.Имя = "SUM" Тогда
СтрокаТЧ.Сумма = СтрокаТЗ.Значение;
СтрокаУТЧ.Сумма = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "SUMNDS" Тогда
СтрокаТЧ.СуммаНДС = СтрокаТЗ.Значение;
СтрокаУТЧ.СуммаНДС = СтрокаТЗ.Значение;
ИначеЕсли СтрокаТЗ.Имя = "SUMWITHNDS" Тогда
Если СтрокаТч.Сумма = Число(?(СтрокаТЗ.Значение="",СтрокаТЗ.Значение=0,СтрокаТЗ.Значение=СтрокаТЗ.Значение)) Тогда
СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
СтрокаУТЧ.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
Иначе
СтрокаТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
СтрокаУТЧ.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;

КонецЕсли;
ИначеЕсли СтрокаТЗ.Имя = "Doc" Тогда
Попытка ПоступлениеТоваровУслуг.Записать();
Исключение
КонецПопытки;
КонецЕсли;

КонецЦикла;

Попытка ПоступлениеТоваровУслуг.Записать();
Исключение
КонецПопытки;

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

&НаСервере
Процедура ОпределитьФайл(ПутьКФайлам)
Текст = Новый ЧтениеТекста(ПутьКФайлам);
Стр = Текст.ПрочитатьСтроку();
Счетчик = 1;
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
Стр = Текст.ПрочитатьСтроку();

Если Найти(Стр,"<!--DocPurchase-->") <> 0  Тогда
ЗаписатьСчетПоставщика(ПутьКФайлам);
Прервать;
ИначеЕсли Найти(Стр,"<!--DocDelivery-->") <> 0  Тогда
Прервать;
ИначеЕсли Найти(Стр,"<!--DocIncome-->") <> 0  Тогда
ЗаписатьПоступление(ПутьКФайлам);
Прервать;
ИначеЕсли Найти(Стр,"<!--DocSale-->") <> 0  Тогда
ЗаписатьСчетПокупателю(ПутьКФайлам);
Прервать;
КонецЕсли;

Счетчик = Счетчик + 1;
Если Счетчик = 5 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры

&НаСервереБезКонтекста
Функция СоздатьНовыйДоговор(НомерДоговора, ДатаДоговора, Контрагент, Организация)

НаименованиеДоговора = "Счет %1 от %2";
НаименованиеДоговора = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НаименованиеДоговора,
НомерДоговора,
Формат(ДатаДоговора, "ДЛФ=D"));

ОрганизацияДоговора = ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(Организация);
ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;

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

СуществующийДоговор = Выборка.Ссылка;

Если ЗначениеЗаполнено(СуществующийДоговор) Тогда

Возврат СуществующийДоговор;

Иначе

НовыйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
НовыйДоговор.Наименование = НаименованиеДоговора;
НовыйДоговор.Организация = ОрганизацияДоговора;
НовыйДоговор.Владелец = Контрагент;
НовыйДоговор.ВидДоговора = ВидДоговора;
НовыйДоговор.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;

НовыйДоговор.Записать();

Возврат НовыйДоговор.Ссылка;

КонецЕсли;


КонецФункции

&НаСервереБезКонтекста
Функция СоздатьНовыйДоговорСпоставщиком(НомерДоговора, ДатаДоговора, Контрагент, Организация)
НаименованиеДоговора = "Счет %1 от %2";
НаименованиеДоговора = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НаименованиеДоговора,
НомерДоговора,
Формат(ДатаДоговора, "ДЛФ=D"));

//НаименованиеДоговора = "Основной договор с поставщиком";

ОрганизацияДоговора = ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(Организация);
ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;

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

СуществующийДоговор = Выборка.Ссылка;

Если ЗначениеЗаполнено(СуществующийДоговор) Тогда

Возврат СуществующийДоговор;

Иначе

НовыйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
НовыйДоговор.Наименование = НаименованиеДоговора;
НовыйДоговор.Организация = ОрганизацияДоговора;
НовыйДоговор.Владелец = Контрагент;
НовыйДоговор.ВидДоговора = ВидДоговора;
НовыйДоговор.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;

НовыйДоговор.Записать();

Возврат НовыйДоговор.Ссылка;

КонецЕсли;


КонецФункции

&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьМассивВидовДоговоров()

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

Возврат СписокВидовДоговоров;

КонецФункции


////////////////////////////////////
Функция ПодготовитьПараметрыОбработкиТоварыНоменклатураПриИзменении(Форма, СтрокаТабличнойЧасти) Экспорт

Объект = Форма.Объект;

РассчитыватьСуммаВРознице = ПоступлениеТоваровУслугФормыКлиентСервер.ПолучитьРеквизитФормы(Форма, "РассчитыватьСуммаВРознице");
НТТ = ПоступлениеТоваровУслугФормыКлиентСервер.ПолучитьРеквизитФормы(Форма, "НТТ");
УчетВПродажныхЦенах = ПоступлениеТоваровУслугФормыКлиентСервер.ПолучитьРеквизитФормы(Форма, "УчетВПродажныхЦенах");
РазделениеПоСтавкамВРознице = ПоступлениеТоваровУслугФормыКлиентСервер.ПолучитьРеквизитФормы(Форма, "РазделениеПоСтавкамВРознице");
ЭтоКомиссия = ПоступлениеТоваровУслугФормыКлиентСервер.ПолучитьРеквизитФормы(Форма, "ЭтоКомиссия");

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

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

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

ПараметрыОбработки = Новый Структура();
ПараметрыОбработки.Вставить("ДанныеСтрокиТаблицы", ДанныеСтрокиТаблицы);
ПараметрыОбработки.Вставить("ДанныеОбъекта", ДанныеОбъекта);

Возврат ПараметрыОбработки;

КонецФункции

//&НаКлиенте
//Процедура ПриОткрытии(Отказ)
// ПутьКФайлам = "\\server\Distrib\Resurs\Obmen" ;
//КонецПроцедуры


//&НаКлиенте
//Процедура Загрузить(Команда)
// Режим = РежимДиалогаВыбораФайла.Открытие;
// Диалог = Новый ДиалогВыбораФайла(Режим);
//
// Диалог.Фильтр = "xml|*.xml" ;
// Если Диалог.Выбрать() Тогда
// Файл = Диалог.ВыбранныеФайлы;
// ПрочитатьФайлНаСервере(Файл);
// КонецЕсли;
//
//КонецПроцедуры



выводит следующие ошибки:

Ошибка инициализации модуля: Обработка.ЗагрузкаИзБД_Ресурс.Форма.Форма.Форма
по причине:
{Обработка.ЗагрузкаИзБД_Ресурс.Форма.Форма.Форма(807,25)}: Переменная не определена (СтроковыеФункцииКлиентСервер)
   НаименованиеДоговора = <<?>>СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НаименованиеДоговора,
{Обработка.ЗагрузкаИзБД_Ресурс.Форма.Форма.Форма(862,25)}: Переменная не определена (СтроковыеФункцииКлиентСервер)
   НаименованиеДоговора = <<?>>СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НаименованиеДоговора,
{Обработка.ЗагрузкаИзБД_Ресурс.Форма.Форма.Форма(811,24)}: Переменная не определена (ОбщегоНазначенияБПВызовСервераПовтИсп)
   ОрганизацияДоговора = <<?>>ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(Организация);
{Обработка.ЗагрузкаИзБД_Ресурс.Форма.Форма.Форма(868,24)}: Переменная не определена (ОбщегоНазначенияБПВызовСервераПовтИсп)
   ОрганизацияДоговора = <<?>>ОбщегоНазначенияБПВызовСервераПовтИсп.ГоловнаяОрганизация(Организация);

Теги: XML запись xml 

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

Рейтинг@Mail.ru

Поиск