&НаКлиенте Процедура ПутьКДаннымПриИзменении(Элемент) ПутьКФайлу = "C:\Users\slava\Documents\регистры\"; Сообщить(ПутьКФайлу); КонецПроцедуры &НаСервере Процедура ЗагрузитьДанныеНаСервере() ТабДок = Новый ТабличныйДокумент; //ПутьКФайлу = "C:\Users\slava\Documents\регистры\shipping_report_14.07.2023_TEST.xls"; Сообщение = Новый СообщениеПользователю; Попытка ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение); Сообщение.Текст = "Удалось прочитать указанный файл!"; Сообщение.Сообщить(); Исключение Сообщение.Текст = "Не удалось прочитать указанный файл " + ОписаниеОшибки(); Сообщение.Сообщить(); Возврат; КонецПопытки; КоличествоСтрок = ТабДок.ВысотаТаблицы; ДанныеФайла = Новый ТаблицаЗначений; ДанныеФайла.Колонки.Добавить("КлиентФирма"); ДанныеФайла.Колонки.Добавить("ДатаОбновления"); ДанныеФайла.Колонки.Добавить("ЗаявкаДатаОт"); ДанныеФайла.Колонки.Добавить("ЗаявкаНомер"); ДанныеФайла.Колонки.Добавить("КлиентИНН"); ДанныеФайла.Колонки.Добавить("КлиентКПП"); ДанныеФайла.Колонки.Добавить("ДатаОтгрузки"); ДанныеФайла.Колонки.Добавить("НоменклатураКод"); ДанныеФайла.Колонки.Добавить("НоменклатураНаименование"); ДанныеФайла.Колонки.Добавить("ДатаСкачатьФайлы"); ДанныеФайла.Колонки.Добавить("РегистрационныйНомер"); ДанныеФайла.Колонки.Добавить("ЗарегистрированЧерезЛогинКлиента"); ДанныеФайла.Колонки.Добавить("ЗарегистрированЧерезКодПатнера"); Для НомерСтроки = 4 По КоличествоСтрок Цикл // Поля из доуцмента РеквизитыПоляЗавка = ПолучитьРеквизитыПоляЗаявка(ТабДок, НомерСтроки, 1); РеквизитыПоляКлиент = ПолучитьРеквизитыПоляКлиент(ТабДок, НомерСтроки, 2); ДатаОтгрузки = ИзСтрокиДату( ТолькоЦифры(ПолучитьЗначениеИзЯчейки(ТабДок, НомерСтроки, 3)) ); РеквизитыПоляНоменклатура = ПолучитьРеквизитыПоляНоменклатура(ТабДок, НомерСтроки, 4); РегистрационныйНомер = ТолькоЦифры(ПолучитьЗначениеИзЯчейки(ТабДок, НомерСтроки, 5)); ДатаСкачатьФайлы = ИзСтрокиДату( ТолькоЦифры(ПолучитьЗначениеИзЯчейки(ТабДок, НомерСтроки, 6)) ); РеквизитыПоляЗарегистрирован = ПолучитьРеквизитыПоляЗарегистрирован(ТабДок, НомерСтроки, 7); // Задать значение в регистр сведений СтрокаДанных = ДанныеФайла.Добавить(); СтрокаДанных.КлиентФирма = РеквизитыПоляКлиент.Фирма; СтрокаДанных.ДатаОбновления = ТекущаяДата(); СтрокаДанных.ЗаявкаДатаОт = РеквизитыПоляЗавка.ЗаявкаДатаОт; СтрокаДанных.ЗаявкаНомер = РеквизитыПоляЗавка.ЗаявкаНомер; СтрокаДанных.КлиентИНН = РеквизитыПоляКлиент.ИНН; СтрокаДанных.КлиентКПП = РеквизитыПоляКлиент.КПП; СтрокаДанных.ДатаОтгрузки = ДатаОтгрузки; СтрокаДанных.НоменклатураКод = РеквизитыПоляНоменклатура.Код; СтрокаДанных.НоменклатураНаименование = РеквизитыПоляНоменклатура.Наименование; СтрокаДанных.ДатаСкачатьФайлы = ДатаСкачатьФайлы; СтрокаДанных.РегистрационныйНомер = РегистрационныйНомер; // дублируется в РеквизитыПоляЗарегистрирован.ЧерезКодПатнер СтрокаДанных.ЗарегистрированЧерезЛогинКлиента = РеквизитыПоляЗарегистрирован.ЧерезЛогинКлиента; СтрокаДанных.ЗарегистрированЧерезКодПатнера = РеквизитыПоляЗарегистрирован.ЧерезКодПатнера; // Задать значение в регистр сведений //Движения.Тест.Записывать = Истина; //Движение = Движения.Тест.Добавить(); //Движение.Период = Дата; //Движение.Измерение1 = Дата; //Движение.Ресурс1 = Номер; ЗаписьПолей = РегистрыСведений.СписокОтгруженныхЭлектронныхПоставок.СоздатьМенеджерЗаписи(); ЗаписьПолей.РегистрационныйНомер = РеквизитыПоляКлиент.Фирма; ЗаписьПолей.ДатаОбновления = ТекущаяДата(); ЗаписьПолей.РегистрационныйНомер = РегистрационныйНомер; // дублируется в РеквизитыПоляЗарегистрирован.ЧерезКодПатнер ЗаписьПолей.ЗаявкаНомер = РеквизитыПоляЗавка.ЗаявкаНомер; ЗаписьПолей.ЗаявкаДатаОт = РеквизитыПоляЗавка.ЗаявкаДатаОт; ЗаписьПолей.КлиентИНН = РеквизитыПоляКлиент.ИНН; ЗаписьПолей.КлиентКПП = РеквизитыПоляКлиент.КПП; ЗаписьПолей.ДатаОтгрузки = ДатаОтгрузки; ЗаписьПолей.НоменклатураКод = РеквизитыПоляНоменклатура.Код; ЗаписьПолей.НоменклатураНаименование = РеквизитыПоляНоменклатура.Наименование; ЗаписьПолей.ДатаСкачатьФайлы = ДатаСкачатьФайлы; ЗаписьПолей.ЗарегистрированЧерезЛогинКлиента = РеквизитыПоляЗарегистрирован.ЧерезЛогинКлиента; ЗаписьПолей.ЗарегистрированЧерезКодПатнера = РеквизитыПоляЗарегистрирован.ЧерезКодПатнера; ЗаписьПолей.Записать(); КонецЦикла; ЗагруженныеДанные.Загрузить(ДанныеФайла); КонецПроцедуры &НаКлиенте Процедура ЗагрузитьДанные(Команда) ЗагрузитьДанныеНаСервере(); //Структура1 = Новый Структура; //Структура1.Вставить("Ключ1",12.3); //Структура1.Вставить("Ключ2", 33.4); // Сообщить(Структура1.Ключ1 + // Структура1.Ключ2); КонецПроцедуры Функция ПолучитьРеквизитыПоляЗаявка(ТабДок, НомерСтроки, НомерСтолбца) ЗначенияРеквизитов = Новый Структура; ТекстПоляЗаявка = ПолучитьЗначениеИзЯчейки(ТабДок, НомерСтроки, НомерСтолбца); НомерИДата = ТолькоЦифры(ТекстПоляЗаявка); ЗаявкаНомер = "WZ" + Лев(НомерИДата, 8); // нужна ли сортирвока по этому номеру, WZ убрать в другую колонку реквизит? ЗаявкаДатаОт = Прав(НомерИДата, 8); ЗначенияРеквизитов.Вставить("ЗаявкаНомер", ЗаявкаНомер ); ЗначенияРеквизитов.Вставить("ЗаявкаДатаОт", изСтрокиДату(ЗаявкаДатаОт) ); Возврат ЗначенияРеквизитов; КонецФункции Функция ПолучитьРеквизитыПоляКлиент(ТабДок, НомерСтроки, НомерСтолбца) ЗначенияРеквизитов = Новый Структура; ТекстПоляКлиент = ПолучитьЗначениеИзЯчейки(ТабДок, НомерСтроки, НомерСтолбца); ФирмаИннКпп = СтрРазделить(ТекстПоляКлиент, Символы.ПС); Фирма = ФирмаИннКпп[0]; ИНН = ТолькоЦифры( ФирмаИннКпп[1] ); КПП = ТолькоЦифры( ФирмаИннКпп[2] ); ЗначенияРеквизитов.Вставить("Фирма", ФирмаИннКпп[0] ); ЗначенияРеквизитов.Вставить("ИНН", ТолькоЦифры(ФирмаИннКпп[1]) ); ЗначенияРеквизитов.Вставить("КПП", ТолькоЦифры(ФирмаИннКпп[2]) ); Возврат ЗначенияРеквизитов; КонецФункции Функция ПолучитьРеквизитыПоляНоменклатура(ТабДок, НомерСтроки, НомерСтолбца) ЗначенияРеквизитов = Новый Структура; ТекстПоляНоменклатура = ПолучитьЗначениеИзЯчейки(ТабДок, НомерСтроки, НомерСтолбца); КодНаименование = СтрРазделить(ТекстПоляНоменклатура, Символы.ПС); ЗначенияРеквизитов.Вставить("Код", КодНаименование[0] ); ЗначенияРеквизитов.Вставить("Наименование", КодНаименование[1] ); Возврат ЗначенияРеквизитов; КонецФункции Функция ПолучитьРеквизитыПоляЗарегистрирован(ТабДок, НомерСтроки, НомерСтолбца) ЗначенияРеквизитов = Новый Структура; ТекстПоляПоляЗарегистрирован= ПолучитьЗначениеИзЯчейки(ТабДок, НомерСтроки, НомерСтолбца); КодНаименование = СтрРазделить(ТекстПоляПоляЗарегистрирован, " "); ЗначенияРеквизитов.Вставить("ЧерезЛогинКлиента", КодНаименование[0] ); ЗначенияРеквизитов.Вставить("ЧерезКодПатнера", ТолькоЦифры(КодНаименование[1]) ); Возврат ЗначенияРеквизитов; КонецФункции Функция ТолькоЦифры(Строка, ИсключениеСимвол = "") ИсключениеКодСимвола = КодСимвола(ИсключениеСимвол); Длинна = СтрДлина(Строка); Итог = ""; Для Инд = 1 По Длинна Цикл Символ = Сред(Строка,Инд,1); КодСимвола = КодСимвола(Символ); Если (КодСимвола > 47 И КодСимвола < 58) ИЛИ (КодСимвола = ИсключениеКодСимвола) Тогда Итог = Итог + Символ; КонецЕсли; КонецЦикла; Возврат Строка( Итог ); КонецФункции Функция ПолучитьЗначениеИзЯчейки(ТабДок, НомерСтроки, НомерСтолбца) Возврат ТабДок.ПолучитьОбласть("R" + Формат(НомерСтроки, "ЧГ=0") + "C" + НомерСтолбца).ТекущаяОбласть.Текст; КонецФункции Функция изСтрокиДату(строкаДата) Число = Лев(строкаДата, 2); Месяц = Сред(строкаДата, 3, 2); Год = Прав(строкаДата, 4); строкаДата = СтрШаблон("%1%2%3", Год, Месяц, Число); Возврат Формат(строкаДата, "ДЛФ=Д") КонецФункции