|
Выгрузка данных в справочник 1С из Excel | ☑ | ||
---|---|---|---|---|
0
zelik503
08.11.13
✎
12:18
|
Уважаемые форумчане, помогите!
Связались с компанией, занимающейся "разработкой" в 1С, поручили им обработку - они запросили огромные деньги, в итоге не заработало как положено Конфигурация 1С 8.2 Учет Управление в ЖКХ Любой мозговой штурм приветствуется, ибо горит работа ((((( Текст обработки вот такой: [quote] Перем МетаданныеОписание Экспорт; Перем СсылочныеТипы Экспорт; Перем СоответствиеОбъектовМетаданныхИСсылочныхТипов; Перем ОкноИсполнения Экспорт; Перем ОбработанныхКонстант Экспорт; Перем ОбработанныхНаборовЗаписей Экспорт; Перем мСоответствиеКолонокДвижений; // массив строк дерева метаданных, имеющих признак Выгружать Перем СоставПолнойВыгрузки Экспорт; // массив строк дерева метаданных, имеющих признак выгрузки по ссылке Перем СоставВспомогательнойВыгрузки; // массив регистров, использующих итоги Перем ИспользующиеИтоги; Перем мТипРезультатЗапроса; Перем мТипДанныхУдаления; Перем мВыгруженныеОбъекты; Перем мКоличествоСохраненныхПоследнихВыгрузок; Перем мНаличиеВыгрузкиПодчиненныхОбъектов; // Процедура производит начальную инициализацию - заполнение дерева описания // классов объектов метаданных, дерево метаданных, список ссылочных типов // // Параметры // Процедура Инициализация() Экспорт ВключитьВозможностьРедактированияИспользованияИтогов = Ложь; // Создаем объект, описывающий процессы построения дерева и выгрузку ЗаполнитьОписаниеМетаданных(); МетаданныеОписание = МетаданныеОписание.Строки[0]; СсылочныеТипы = Новый Соответствие; СоответствиеОбъектовМетаданныхИСсылочныхТипов = Новый Соответствие; ДеревоМетаданных.Колонки.Очистить(); // создание необходимых колонок ДеревоМетаданных.Колонки.Добавить("Выгружать", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный))); ДеревоМетаданных.Колонки.Добавить("ВыгружатьПриНеобходимости", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный)), "При необходимости"); ДеревоМетаданных.Колонки.Добавить("Метаданные"); ДеревоМетаданных.Колонки.Добавить("ЭлементОписания"); ДеревоМетаданных.Колонки.Добавить("ОбъектМД"); ДеревоМетаданных.Колонки.Добавить("ПолноеИмяМетаданных"); ДеревоМетаданных.Колонки.Добавить("НастройкиПостроителя"); ДеревоМетаданных.Колонки.Добавить("ИспользоватьОтбор"); ОкноИсполнения = ПолучитьФорму("ОкноИсполнения"); #Если Клиент Тогда Состояние("Выполняется анализ метаданных конфигурации..."); #КонецЕсли ИспользующиеИтоги = Новый Массив; Корень = ДеревоМетаданных.Строки.Добавить(); ПостроениеПоддереваОбъекта(Метаданные, Корень, МетаданныеОписание); СверткаПоддереваОбъекта(Корень); Для Каждого Эл Из СсылочныеТипы Цикл СоответствиеОбъектовМетаданныхИСсылочныхТипов.Вставить(Эл.Значение, Эл.Ключ); КонецЦикла; КонецПроцедуры // Процедура разбирает файл выгрузки и осуществляет запись в ИБ сохраненных // там объектов // // Параметры // ИмяФайла - имя файла выгрузки // Процедура ВыполнитьЗагрузку(ИмяФайла) Экспорт Если СтрДлина(ИмяФайла) = 0 Тогда #Если Клиент Тогда Предупреждение("Не задано имя файла выгрузки"); #КонецЕсли Возврат; КонецЕсли; Файл = Новый Файл(ИмяФайла); Если Не Файл.Существует() Тогда #Если Клиент Тогда Предупреждение("Не найден файл для загрузки данных: " + ИмяФайла); #КонецЕсли Возврат; КонецЕсли; ФайлВФорматеFastInfoSet = (Файл.Расширение = ".fi"); Если ФайлВФорматеFastInfoSet Тогда // распаковка файла правил ЧтениеXML = Новый ЧтениеFastInfoset; Иначе ЧтениеXML = Новый ЧтениеXML; КонецЕсли; ЧтениеXML.ОткрытьФайл(ИмяФайла); // проверка формата файла обмена Если Не ЧтениеXML.Прочитать() Или ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента Или ЧтениеXML.ЛокальноеИмя <> "_1CV8DtUD" Или ЧтениеXML.URIПространстваИмен <> "http://www.1c.ru/V8/1CV8DtUD/" Тогда #Если Клиент Тогда Предупреждение("Неверный формат файла выгрузки", 10, "Ошибка загрузки!!!"); #КонецЕсли Возврат; КонецЕсли; Если Не ЧтениеXML.Прочитать() Или ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента Или ЧтениеXML.ЛокальноеИмя <> "Data" Или ЧтениеXML.URIПространстваИмен <> "http://www.1c.ru/V8/1CV8DtUD/" Тогда #Если Клиент Тогда Предупреждение("Неверный формат файла выгрузки", 10, "Ошибка загрузки!!!"); #КонецЕсли Возврат; КонецЕсли; // чтение и запись в ИБ записанных в выгрузке объектов Если Не ЧтениеXML.Прочитать() Тогда #Если Клиент Тогда Предупреждение("Неверный формат файла выгрузки", 10, "Ошибка загрузки!!!"); #КонецЕсли Возврат; КонецЕсли; Загружено = 0; УбратьИспользованиеИтогов(); #Если Клиент Тогда Сообщить("Начало загрузки: " + ТекущаяДата()); #КонецЕсли Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл Попытка ЗаписанноеЗначение = ПрочитатьXML(ЧтениеXML); Исключение ВосстановитьИспользованиеИтогов(); ВызватьИсключение; КонецПопытки; Если ПриЗагрузкеИспользоватьРежимОбменаДанными Тогда Попытка // Планы обмена свойства ОбменДанными не имеют ЗаписанноеЗначение.ОбменДанными.Загрузка = Истина; Исключение КонецПопытки; КонецЕсли; Попытка ЗаписанноеЗначение.Записать(); Исключение ТекстОшибки = ОписаниеОшибки(); Если НЕ ПродолжитьЗагрузкуВСлучаеВозникновенияОшибки Тогда #Если Клиент Тогда Если Вопрос("При записи произошла ошибка:" + Символы.ПС + ТекстОшибки + " |Продолжит загрузку?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда ВосстановитьИспользованиеИтогов(); ВызватьИсключение; КонецЕсли; #Иначе ВосстановитьИспользованиеИтогов(); ВызватьИсключение; #КонецЕсли Иначе Попытка Сообщить("Ошибка при загрузке данных. Объект: " + ЗаписанноеЗначение + ", Тип: " + ТипЗнч(ЗаписанноеЗначение) + " |Ошибка : " + ТекстОшибки, СтатусСообщения.Важное); Исключение Сообщить("Ошибка при загрузке данных. |Ошибка : " + ТекстОшибки, СтатусСообщения.Важное); КонецПопытки; КонецЕсли; Загружено = Загружено - 1; КонецПопытки; Загружено = Загружено + 1; #Если Клиент Тогда Если Загружено % 100 = 0 Тогда Состояние("Загружено объектов - " + Загружено); ОбработкаПрерыванияПользователя(); КонецЕсли; #КонецЕсли КонецЦикла; ВосстановитьИспользованиеИтогов(); #Если Клиент Тогда Состояние(); #КонецЕсли // проверка формата файла обмена Если ЧтениеXML.ТипУзла <> ТипУзлаXML.КонецЭлемента Или ЧтениеXML.ЛокальноеИмя <> "Data" Или ЧтениеXML.URIПространстваИмен <> "http://www.1c.ru/V8/1CV8DtUD/" Тогда #Если Клиент Тогда Предупреждение("Неверный формат файла выгрузки", 10, "Ошибка загрузки!!!"); #КонецЕсли Возврат; КонецЕсли; Если Не ЧтениеXML.Прочитать() Или ЧтениеXML.ТипУзла <> ТипУзлаXML.КонецЭлемента Или ЧтениеXML.ЛокальноеИмя <> "_1CV8DtUD" Или ЧтениеXML.URIПространстваИмен <> "http://www.1c.ru/V8/1CV8DtUD/" Тогда #Если Клиент Тогда Предупреждение("Неверный формат файла выгрузки", 10, "Ошибка загрузки!!!"); #КонецЕсли Возврат; КонецЕсли; ЧтениеXML.Закрыть(); #Если Клиент Тогда Сообщить("Загружено объектов: " + Загружено); Сообщить("Окончание загрузки: " + ТекущаяДата()); Предупреждение("Загрузка данных успешно завершена", 10); #КонецЕсли КонецПроцедуры Функция СоздатьОбъектЗаписиXMLДляПроверки() ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку("UTF-16"); ЗаписьXML.ЗаписатьНачалоЭлемента("Проверка"); Возврат ЗаписьXML; КонецФункции Процедура ВыполнитьПроверкуДляВыгрузкиОбъектовИзПланаОбмена(СсылкаНаУзел) Экспорт ОбъектыВыгруженныеСОшибками = Новый Соответствие; ВсегоОбработаноОбъектов = 0; КоличествоОшибок = 0; ЗаписьXML = СоздатьОбъектЗаписиXMLДляПроверки(); СоставВыгрузки(); МассивМетаданныхДляВыгрузки = Новый Массив(); Для Каждого СтрокаТаблицыВыгрузки Из СоставПолнойВыгрузки Цикл СтрокаДереваМетаданных = СтрокаТаблицыВыгрузки.СтрокаДерева; МассивМетаданныхДляВыгрузки.Добавить(СтрокаДереваМетаданных.ОбъектМД); КонецЦикла; Если МассивМетаданныхДляВыгрузки.Количество() = 0 Тогда МассивМетаданныхДляВыгрузки = Неопределено; КонецЕсли; ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(СсылкаНаУзел, СсылкаНаУзел.НомерОтправленного + 1, МассивМетаданныхДляВыгрузки); Пока ВыборкаИзменений.Следующий() Цикл // имененный элемент Данные = ВыборкаИзменений.Получить(); // данные должны быть Если Данные = Неопределено Тогда Продолжить; КонецЕсли; ЭтоУдаление = (мТипДанныхУдаления = ТипЗнч(Данные)); Если ЭтоУдаление Тогда Продолжить; КонецЕсли; ВсегоОбработаноОбъектов = ВсегоОбработаноОбъектов + 1; МетаданныеОбъекта = Данные.Метаданные(); Попытка ВыполнитьВспомогательныеДействияДляЗаписиXML(ВсегоОбработаноОбъектов, ЗаписьXML, Истина); ЗаписатьXML(ЗаписьXML, Данные); Исключение КоличествоОшибок = КоличествоОшибок + 1; СтрокаОписанияОшибки = ОписаниеОшибки(); // для ссылочных добавляем ссылку, а для не ссылочных сам объект ЭтоНеСсылка = Метаданные.РегистрыСведений.Содержит(МетаданныеОбъекта) ИЛИ Метаданные.РегистрыНакопления.Содержит(МетаданныеОбъекта) ИЛИ Метаданные.РегистрыБухгалтерии.Содержит(МетаданныеОбъекта) ИЛИ Метаданные.Константы.Содержит(МетаданныеОбъекта); Если ЭтоНеСсылка Тогда ОбъектыВыгруженныеСОшибками.Вставить(Данные, СтрокаОписанияОшибки); Иначе Если ОбъектыВыгруженныеСОшибками.Получить(Данные.Ссылка) = Неопределено Тогда ОбъектыВыгруженныеСОшибками.Вставить(Данные.Ссылка, СтрокаОписанияОшибки); КонецЕсли; КонецЕсли; КонецПопытки; #Если Клиент Тогда Если ВсегоОбработаноОбъектов % 100 = 0 Тогда Состояние("Выгруженных объектов - " + ВсегоОбработаноОбъектов + ", ошибок при выгрузке - " + КоличествоОшибок); КонецЕсли; #КонецЕсли КонецЦикла; #Если Клиент Тогда Сообщить("Отобразать результат"); ОтобразитьОбъектыСОшибкамиВыгрузки(ОбъектыВыгруженныеСОшибками); #КонецЕсли КонецПроцедуры #Если Клиент тогда Процедура ОтобразитьОбъектыСОшибкамиВыгрузки(ОбъектыВыгруженныеСОшибками) Если ОбъектыВыгруженныеСОшибками.Количество() = 0 Тогда Предупреждение("Проверка объектов на наличие недопустимых символов завершена. Ошибок не обнаружено."); Иначе СтрокаПоискаОшибки = "ЗаписатьXML):"; ДлинаСтрокиПоиска = СтрДлина(СтрокаПоискаОшибки); // ФормаОтображения = ПолучитьФорму("ОшибкиПриВыгрузке"); ТаблицаДанных = ФормаОтображения.ТаблицаОбъектов; ТаблицаДанных.Колонки.Добавить("СлужебныйОбъект"); Для Каждого СтрокаСоответствия Из ОбъектыВыгруженныеСОшибками Цикл СтрокаТаблицы = ТаблицаДанных.Добавить(); СтрокаТаблицы.СлужебныйОбъект = СтрокаСоответствия.Ключ; СтрокаТаблицы.Объект = Строка(СтрокаСоответствия.Ключ); // служебные символы удалим из ошибки ТекстСообщения = СформироватьТекстСообщенияБезСлужебныхСимволов(СтрокаСоответствия.Значение); ПозицияНачалаОшибки = Найти(ТекстСообщения, "ЗаписатьXML):"); Если ПозицияНачалаОшибки > 0 Тогда ТекстСообщения = Сред(ТекстСообщения, ПозицияНачалаОшибки + ДлинаСтрокиПоиска); КонецЕсли; СтрокаТаблицы.ТекстОшибки = СокрЛП(ТекстСообщения); МетаданныеЗначения = СтрокаТаблицы.СлужебныйОбъект.Метаданные(); Если Метаданные.РегистрыСведений.Содержит(МетаданныеЗначения) ИЛИ Метаданные.РегистрыНакопления.Содержит(МетаданныеЗначения) ИЛИ Метаданные.РегистрыБухгалтерии.Содержит(МетаданныеЗначения) ИЛИ Метаданные.РегистрыБухгалтерии.Содержит(МетаданныеЗначения) Тогда СтрокаТаблицы.НомерТипаОбъекта = 0; ИначеЕсли Метаданные.Константы.Содержит(МетаданныеЗначения) Тогда СтрокаТаблицы.НомерТипаОбъекта = 1; ИначеЕсли Метаданные.Справочники.Содержит(МетаданныеЗначения) Тогда СтрокаТаблицы.НомерТипаОбъекта = 2; ИначеЕсли Метаданные.Документы.Содержит(МетаданныеЗначения) Тогда СтрокаТаблицы.НомерТипаОбъекта = 3; ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(МетаданныеЗначения) Тогда СтрокаТаблицы.НомерТипаОбъекта = 4; Иначе СтрокаТаблицы.НомерТипаОбъекта = 100; КонецЕсли; КонецЦикла; ФормаОтображения.Открыть(); КонецЕсли; КонецПроцедуры #КонецЕсли // Процедура создает файл выгрузки // // Параметры // ИмяФайла - имя файла выгрузки // Процедура ВыполнитьВыгрузку(ИмяФайла, ТолькоПроверкаНедопустимыхСимволов = Ложь) Экспорт ОбъектыВыгруженныеСОшибками = Новый Соответствие; Если НЕ ТолькоПроверкаНедопустимыхСимволов И СтрДлина(ИмяФайла) = 0 Тогда #Если Клиент Тогда Предупреждение("Не задано имя файла выгрузки"); #КонецЕсли Возврат; КонецЕсли; СоставВыгрузки(); Если СоставПолнойВыгрузки.Количество() = 0 И ДополнительныеОбъектыДляВыгрузки.Количество() = 0 Тогда #Если Клиент Тогда Предупреждение("Не задан состав выгрузки"); #КонецЕсли Возврат; КонецЕсли; Если ТолькоПроверкаНедопустимыхСимволов Тогда ЗаписьXML = СоздатьОбъектЗаписиXMLДляПроверки(); ВыгрузкаДанных(ЗаписьXML, ТолькоПроверкаНедопустимыхСимволов, ОбъектыВыгруженныеСОшибками); Иначе Если Не ИспользоватьФорматFastInfoSet Тогда ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайла, "UTF-8"); Иначе ЗаписьXML = Новый ЗаписьFastInfoset; ЗаписьXML.ОткрытьФайл(ИмяФайла); КонецЕсли; ЗаписьXML.ЗаписатьОбъявлениеXML(); ЗаписьXML.ЗаписатьНачалоЭлемента("_1CV8DtUD", "http://www.1c.ru/V8/1CV8DtUD/"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("V8Exch", "http://www.1c.ru/V8/1CV8DtUD/"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data"); ЗаписьXML.ЗаписатьНачалоЭлемента("V8Exch:Data"); #Если Клиент Тогда Если НЕ ТолькоПроверкаНедопустимыхСимволов Тогда Сообщить("Начало выгрузки: " + ТекущаяДата()); Иначе Сообщить("Начало проверки: " + ТекущаяДата()); КонецЕсли; #КонецЕсли ВыгрузкаДанных(ЗаписьXML); ЗаписьXML.ЗаписатьКонецЭлемента(); //V8Exc:Data ЗаписьXML.ЗаписатьКонецЭлемента(); //V8Exc:_1CV8DtUD КонецЕсли; #Если Клиент Тогда Если НЕ ТолькоПроверкаНедопустимыхСимволов Тогда Сообщить("Выгружено объектов: " + ВсегоОбработанныхЗаписей()); Сообщить("Окончание выгрузки: " + ТекущаяДата()); Предупреждение("Выгрузка данных успешно завершена", 10); Иначе Сообщить("Проверено объектов: " + ВсегоОбработанныхЗаписей()); Сообщить("Окончание проверки: " + ТекущаяДата()); ОтобразитьОбъектыСОшибкамиВыгрузки(ОбъектыВыгруженныеСОшибками); КонецЕсли; #КонецЕсли КонецПроцедуры Функция СформироватьТекстСообщенияБезСлужебныхСимволов(Знач ТекстСообщения) НачалоСлужебногоСообщения = Найти(ТекстСообщения, "{"); ОкончаниеСлужебногоСообщения = Найти(ТекстСообщения, "}:"); Если ОкончаниеСлужебногоСообщения > 0 И НачалоСлужебногоСообщения > 0 И НачалоСлужебногоСообщения < ОкончаниеСлужебногоСообщения Тогда ТекстСообщения = Лев(ТекстСообщения, (НачалоСлужебногоСообщения - 1)) + Сред(ТекстСообщения, (ОкончаниеСлужебногоСообщения + 2)); КонецЕсли; Возврат СокрЛП(ТекстСообщения); КонецФункции // () // Процедура рекурсивно обрабатывает дерево метаданных, образуя списки полной и вспомогательной выгрузки // // Параметры // Процедура СоставВыгрузки() Экспорт СоставПолнойВыгрузки = Новый ТаблицаЗначений; СоставПолнойВыгрузки.Колонки.Добавить("ОбъектМД"); СоставПолнойВыгрузки.Колонки.Добавить("СтрокаДерева"); СоставПолнойВыгрузки.Индексы.Добавить("ОбъектМД"); СоставВспомогательнойВыгрузки = Новый ТаблицаЗначений; СоставВспомогательнойВыгрузки.Колонки.Добавить("ОбъектМД"); СоставВспомогательнойВыгрузки.Колонки.Добавить("СтрокаДерева"); СоставВспомогательнойВыгрузки.Индексы.Добавить("ОбъектМД"); Для Каждого СтрокаДЗ Из ДеревоМетаданных.Строки Цикл ДобавитьВыгружаемыеОбъекты(СоставПолнойВыгрузки, СоставВспомогательнойВыгрузки, СтрокаДЗ); КонецЦикла; мНаличиеВыгрузкиПодчиненныхОбъектов = СоставВспомогательнойВыгрузки.Количество() > 0; КонецПроцедуры Процедура ВыгрузитьДанныеМассиваСсылок(МассивСсылок, СтрокаИмяДляЗапроса, ЗаписьXML, ТолькоПроверкаНедопустимыхСимволов = Ложь, ОбъектыВыгруженныеСОшибками = Неопределено) Если МассивСсылок.Количество() = 0 ИЛИ НЕ ЗначениеЗаполнено(СтрокаИмяДляЗапроса) Тогда Возврат; КонецЕсли; Запрос = Новый Запрос(); Запрос.Текст = "ВЫБРАТЬ разрешенные _.* | |ИЗ | " + СтрокаИмяДляЗапроса + " КАК _ |ГДЕ | _.Ссылка В(&МассивСсылок)"; Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок); РезультатЗапроса = Запрос.Выполнить(); ЗапросИЗапись(РезультатЗапроса, ЗаписьXML, Истина, ОбъектыВыгруженныеСОшибками, ТолькоПроверкаНедопустимыхСимволов); КонецПроцедуры // Процедура записывает наборы записей регистра (накопления, бухгалтерии...) // // Параметры // ЗаписьXML - объект, через которых происходит запись объектов ИБ // Процедура ВыгрузкаДанных(ЗаписьXML, ТолькоПроверкаНедопустимыхСимволов = Ложь, ОбъектыВыгруженныеСОшибками = Неопределено) мВыгруженныеОбъекты = Новый ТаблицаЗначений; мВыгруженныеОбъекты.Колонки.Добавить("Ссылка"); мВыгруженныеОбъекты.Индексы.Добавить("Ссылка"); Если ОбъектыВыгруженныеСОшибками = Неопределено Тогда ОбъектыВыгруженныеСОшибками = Новый Соответствие; КонецЕсли; ОкноИсполнения = ПолучитьФорму("ОкноИсполнения"); ОкноИсполненияОбщееКоличество = 1; ОкноИсполненияОбработано = 0; ОкноИсполнения.Открыть(); Попытка Для Каждого СтрокаТаблицыВыгрузки Из СоставПолнойВыгрузки Цикл СтрокаДереваМетаданных = СтрокаТаблицыВыгрузки.СтрокаДерева; Если СтрокаДереваМетаданных.ЭлементОписания.Менеджер = Неопределено Тогда ВызватьИсключение("Выгрузка данных. Внутренняя ошибка"); КонецЕсли; Если Метаданные.Константы.Содержит(СтрокаДереваМетаданных.ОбъектМД) Тогда ЗаписьКонстанты(ЗаписьXML, СтрокаДереваМетаданных.ОбъектМД, ОбъектыВыгруженныеСОшибками, ТолькоПроверкаНедопустимыхСимволов); ИначеЕсли Метаданные.РегистрыСведений.Содержит(СтрокаДереваМетаданных.ОбъектМД) Или Метаданные.РегистрыНакопления.Содержит(СтрокаДереваМетаданных.ОбъектМД) Или Метаданные.РегистрыРасчета.Содержит(СтрокаДереваМетаданных.ОбъектМД) Тогда ЗаписьРегистра(ЗаписьXML, СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками, ТолькоПроверкаНедопустимыхСимволов); ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(СтрокаДереваМетаданных.ОбъектМД) Тогда ЗаписьРегистра(ЗаписьXML, СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками, ТолькоПроверкаНедопустимыхСимволов, Истина); ИначеЕсли ТипЗнч(СтрокаДереваМетаданных.ЭлементОписания.Менеджер) = Тип("Строка") Тогда // специальный случай для перерасчетов ЗаписьПерерасчета(ЗаписьXML, СтрокаДереваМетаданных, ОбъектыВыгруженныеСОшибками, ТолькоПроверкаНедопустимыхСимволов); ИначеЕсли Метаданные.Последовательности.Содержит(СтрокаДереваМетаданных.ОбъектМД) Тогда ЗаписьПоследовательности(ЗаписьXML, СтрокаДереваМетаданных, |
|||
1
Cube
08.11.13
✎
12:19
|
Вопрос-то задай...
|
|||
2
Wobland
08.11.13
✎
12:20
|
приступаем к штурму. сколько? мне 50000 хватит
|
|||
3
dk
08.11.13
✎
12:20
|
думаешь кто-то эту портянку читать будет? ))
|
|||
4
Пенза58
08.11.13
✎
12:21
|
В чем вопрос то?
|
|||
5
Cube
08.11.13
✎
12:21
|
(3) +1
|
|||
6
Cube
08.11.13
✎
12:21
|
(3) забесплатно)
|
|||
7
Bigbro
08.11.13
✎
12:21
|
ТС готов заплатить любые деньги, но не более стоимости тарелки супа?)
|
|||
8
Галахад
гуру
08.11.13
✎
12:22
|
"они запросили огромные деньги" - интересно это сколько?
|
|||
9
Bigbro
08.11.13
✎
12:22
|
всего 2 вопроса - что делает код реально. и что он должен был делать по замыслу?)
|
|||
10
ам794123
08.11.13
✎
12:23
|
тут братву на помощь звать надо а неодинэсников
|
|||
11
Cube
08.11.13
✎
12:23
|
(8) Главное - заплатил ли ТС им эти деньги или кинул?)))
|
|||
12
arsik
гуру
08.11.13
✎
12:24
|
похоже на вброс
|
|||
13
Пенза58
08.11.13
✎
12:25
|
Во-первых Не из Excel, а из XML
Во-вторых тут написана какая-то универсальная обработка, имхо все же лучше писать под каждый конкретный справочник свою обработку. |
|||
14
manyak
08.11.13
✎
12:26
|
у тебя они просто код скопировали в конфу с инета с форума:
[quote] убери теги - 1с не будет ругаться :) |
|||
15
zelik503
08.11.13
✎
12:26
|
Сори ) недописал пост
соль в чем - недовыгружаются все строки - только 10% дальше ошибка: запись с такими полями существует! : УПЖКХ_СведенияДляВзаимоРасчетовПоЛС: 01.01.2013, л/с №100000652(Регистр Сведений: Сведения для Взаиморасчетов по лицевым счетам: Номер строки: 2) и 2 кнопки ОК и ПОДРОБНО |
|||
16
zelik503
08.11.13
✎
12:27
|
Если интересна финансовая сторона вопроса - 12 часов по 1700р/час
нет, quote - я сам дописал - думал под кат уберется фотки нельзя на форум ложить как я понял? |
|||
17
Cube
08.11.13
✎
12:28
|
(16) Фотки на хостинг, а сюда ссылку. Вот, например: itmages.ru
|
|||
18
zelik503
08.11.13
✎
12:29
|
Код должен был список адресов абонентов с адресами и лицевами счетами (около 6000 позиций) перетащить их XLS (!) файла в справочник
кстати по деньгам - это много или мало? |
|||
19
Пенза58
08.11.13
✎
12:29
|
(16) > фотки нельзя на форум ложить как я понял?
http://ipicture.ru/ |
|||
20
Wobland
08.11.13
✎
12:29
|
(16) берусь. к понедельнику сделаю, ТЗ на бочку
|
|||
21
Cube
08.11.13
✎
12:29
|
(16) Не хилый ценник. И что, эти бабки улачены, а работа не доделана?
|
|||
22
Пенза58
08.11.13
✎
12:29
|
(15)
Спасет только: Попытка Исключение Сообщить(""+ОписаниеОшибки()); КонецПопытки; |
|||
23
Ork
08.11.13
✎
12:30
|
(16)
1. Разработчику о проблеме сообщили? 2. Выгрузку делал тот же разработчик? 3. Причину возникновения "задвоенных" записей выявили? |
|||
24
Cube
08.11.13
✎
12:30
|
(18) "кстати по деньгам - это много или мало?"
Для мухосранска - много, для неризиновска нормально... |
|||
25
Пенза58
08.11.13
✎
12:31
|
(18) Ты серьезно что ли?
Давай еще раз: есть справочник абонентов, есть справочник лецевых счетов с владелецем из абонентьа и у абонента есть адерса, это на выгрузить в эксель. Так? |
|||
26
Fedot200
08.11.13
✎
12:31
|
(22) ну вот, всю мазу обламал
|
|||
27
Ненавижу 1С
гуру
08.11.13
✎
12:33
|
"огромную сумму" это сколько?
|
|||
28
Ненавижу 1С
гуру
08.11.13
✎
12:34
|
вижу (16) сделаю за 15000
|
|||
29
Ork
08.11.13
✎
12:35
|
+ (23)
Для "задвоенных" записей допустимо учитывать только одну? И вот это вот : "Выгрузка данных в справочник" и "Регистр Сведений: Сведения для Взаиморасчетов" не складываются в одно. Заполнение справочника - один подход и ввод остатков - совсем другой. |
|||
30
Галахад
гуру
08.11.13
✎
12:35
|
(24) Чо это много?
(0) Похоже нельзя в один и тот же день несколько раз платить. |
|||
31
Cube
08.11.13
✎
12:37
|
(30) "Чо это много?"
Есть мухосрански со ставкой 500 р/час... :) Знаешь, это закадье такое загадочное и неизведанное... :)) |
|||
32
Cube
08.11.13
✎
12:37
|
(31) "закадье" = "замкадье"
|
|||
33
Галахад
гуру
08.11.13
✎
12:41
|
(31) Палить-то не надо.
|
|||
34
kosts
08.11.13
✎
12:45
|
(18) >Код должен был список адресов абонентов с адресами и лицевами счетами (около 6000 позиций) перетащить их XLS (!) файла в справочник
Если обработка разовая, то нет смысла заморачиваться с XML. Самый простой способ это скопировать таблицу EXCEL в таблицу 1C. Таблицу 1С уже обработать. |
|||
35
zelik503
08.11.13
✎
12:46
|
С разработчиками долгая история была - в итоге они уверяют что у них все работает и просят ещё денег на уточнение ТЗ или чтото типа того
В итоге компания отказалась от их услуг по финансовым причинам и осталась эта обработка, которую нужно допилить, но я сам в этом новичек да, замкадье, но не сильно далекое - всего то 30 км до столицы |
|||
36
Ненавижу 1С
гуру
08.11.13
✎
12:47
|
(35) типа Подольска что ли? так сколько готовы оплатить?
|
|||
37
el7cartel
08.11.13
✎
12:47
|
(2) а че так дешево? 100000
|
|||
38
Пенза58
08.11.13
✎
12:48
|
(35) Откуда загружать все же надо из Exel или из XML?
|
|||
39
zelik503
08.11.13
✎
12:55
|
Данные загружаются из Excel-файла
тупо заполнение справочника да я хотел сам разобраться, инфа конфеденциальная все таки |
|||
40
kosts
08.11.13
✎
12:58
|
(39) Если сам по сути проггер, то сможешь и сам сделать.
Но этот код выкинь и начни с начала... |
|||
41
zelik503
08.11.13
✎
12:59
|
(40) реально код плохой? это же профессиональная компания с многолетним опытом разработки (как они сами писали
) |
|||
42
Галахад
гуру
08.11.13
✎
13:00
|
(39) Обманываете вы нас. Или обработка не та или что-то не то делаете.
|
|||
43
Пенза58
08.11.13
✎
13:00
|
(39)
Вот обработка загрузки в базу контрагентов, адресов и догововоров. Вместо догововров сделай лицевые счета. http://yadi.sk/d/xoJM8j6ACLe9x |
|||
44
kosts
08.11.13
✎
13:01
|
(41) Может код и не плохой сам по себе. Но он явно что-то другое грузит, а не EXCEL...
|
|||
45
zelik503
08.11.13
✎
13:06
|
Ох уж эта пятница
простите все!!! это реально не тот код ( это выгрузки из XML файла |
|||
46
Cube
08.11.13
✎
13:07
|
(45) Закусывать надо))
|
|||
47
zelik503
08.11.13
✎
13:08
|
Спасибо большое всем за ответы
ща пересоздам тему А эта обработка с этого сайта скачана и была ( |
|||
48
Базис
naïve
08.11.13
✎
13:12
|
Напиши или позвони мне, я буду в городе вечером.
|
|||
49
Кирпич
08.11.13
✎
13:16
|
(0) ступайте на какой нибудь фрилансру, там вам за 500 рублей всё сделают. но не менее чем 500, а то начнете там торговаться.
|
|||
50
Михаил Козлов
08.11.13
✎
13:37
|
(0) Штатная ЗагрузкаДанныхИзТабличногоДокумента не подходит?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |