|
Импорт в 1С УТ | ☑ | ||
---|---|---|---|---|
0
Elfidor
16.01.20
✎
13:08
|
Товарищи, спасайте! Я просто не знаю куда уже кидаться, поэтому прошу не решения моей задачи, а просто сказать что почитать, куда залезть и т.д., чтобы хоть что-то понять.
Задача такова: в каком-то магазине на входе стоят датчики, которые считывают сколько людей зашло в магазин. Есть обработка для Розницы, которая эти данные с сервера считывает и отправляет в 1С. Но дело в том, что у нас УТ. Такой же обработки для УТ не существует, поэтому моё дело - переработать обработку для Розницы так, чтобы она работала на УТ. Как я поняла в Рознице (не знаю типовые или нет) есть РегистрНакопления.Посетители и Справочник.СчетчикиПодсчетаПосетителей, в УТ разумеется их нет. Для начала вопрос, есть ли что-то похожее в типовой УТ или надо это самому сделать(а если сделать, то каким, интересно знать, образом данные с датчиков будут лететь в справочники?)? И почему не работает ДанныеФормыВзначение? Вся УТ стоит на обычных формах, поэтому использовать РеквизитФормыВЗначение не выйдет. Но я откровенно запуталась, что именно надо ставить в ДанныеФормыВзначение. В обработке по Рознице написано: ХранилищеОбщихНастроек.Сохранить("RstatI","RstatI", Настройки,,""); Рек = РеквизитФормыВЗначение("Объект"); Рек. ВыполнитьКоманду("", ""); В настройки залетает сервер, порт, логин и пароль Но команд то в обычной форме нет(в том понятии в котором они есть в управляемых формах)! "ЭтотОбъект" не работает... И что с этой штукой вообще делать я не знаю. Читала уже и про РеквизитФормыВЗначение/ДанныеФормыВзначение и про Локальное/FTPСоединение, и вообще как проходит импорт с сервера на 1с. Осенения, увы, не произошло... |
|||
1
shuhard
16.01.20
✎
13:20
|
(0) [И что с этой штукой вообще делать я не знаю]
сидя в рознице добраться до импорта данных, управляемые формы на отладку ни как не влияют |
|||
2
Elfidor
16.01.20
✎
13:23
|
(1) Это была моя изначальная мысль, но Розницы просто нет. Обработка не наша, у нас нет доступа
|
|||
3
catena
16.01.20
✎
13:24
|
Надо смотреть, что там в команде происходит. Линейно переписать подменив операторы не получится.
|
|||
4
shuhard
16.01.20
✎
13:26
|
(2)[Розницы просто нет. Обработка не наша, у нас нет доступа]
что за бред, скачать и поставить розницу руки отваляться ? |
|||
5
maxkras26
16.01.20
✎
13:27
|
Код обработки из Розницы можно посмотреть или нет?
|
|||
6
D_E_S_131
16.01.20
✎
14:08
|
"Обработка для Розницы" это какая-то внешняя обработка?
|
|||
7
SadrArt
16.01.20
✎
14:13
|
(0) Вы там кто?
|
|||
8
ДенисЧ
16.01.20
✎
14:15
|
А зачем в Управлении Торговлей (!!!!) данные по проходной?
|
|||
9
sqr4
16.01.20
✎
14:17
|
(0) Без фото не взлетит
|
|||
10
JeHer
16.01.20
✎
14:51
|
(9) аж олдскулы свело )))
|
|||
11
Elfidor
16.01.20
✎
17:46
|
(5) (6) Это внешняя обработка. Весь модуль объекта прилагаю (из Розницы)
&НаКлиенте Процедура КаталогНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Режим = РежимДиалогаВыбораФайла.ВыборКаталога; Диалог = Новый ДиалогВыбораФайла(режим); Диалог.Каталог = ""; Диалог.МножественныйВыбор = Ложь; Если Диалог.Выбрать() Тогда Объект.Каталог = Диалог.Каталог; КонецЕсли КонецПроцедуры &НаКлиенте Процедура Загрузить(Команда) ЗагрузитьНаСервере() ; КонецПроцедуры &НаСервере Процедура ЗагрузитьНаСервере() Массив = ПолучитьФайлы1С(); ДатаДокСтарая = Неопределено; Документ = Неопределено; СчетчикПодсчетаПосетителей = Неопределено; Магазин = Неопределено; ПоменялсяСчетчик = Ложь; ЗапросПосетители = Новый Запрос; ЗапросПосетители.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Посетители.Период, | Посетители.Регистратор, | Посетители.СчетчикПодсчетаПосетителей, | Посетители.Активность, | Посетители.ДеньНедели, | Посетители.Час, | Посетители.Количество |ИЗ | РегистрНакопления.Посетители КАК Посетители |ГДЕ | Посетители.Активность = Истина И | Посетители.СчетчикПодсчетаПосетителей = &ВыбСчетчик И | Посетители.Период = &ВыбПериод"; Для Каждого Путь из Массив Цикл Чтение = New XMLReader; Чтение.ОткрытьФайл(Путь); СоздаватьДокументы = Ложь; Пока Чтение.Прочитать() Цикл Если Чтение.Имя = "statistics" Тогда Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда СоздаватьДокументы = Истина; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда СоздаватьДокументы = Ложь; КонецЕсли; КонецЕсли; Если Не СоздаватьДокументы Тогда Продолжить; КонецЕсли; Если Чтение.Имя = "sensor" Тогда Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда //Документ = Документы.РегистрацияПодсчетаПосетителей.СоздатьДокумент(); ТехКод = Чтение.ПолучитьАтрибут("GUID"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СчетчикиПодсчетаПосетителей.Ссылка КАК Ссыль, | СчетчикиПодсчетаПосетителей.Магазин.Ссылка КАК Мсыль |ИЗ | Справочник.СчетчикиПодсчетаПосетителей КАК СчетчикиПодсчетаПосетителей |ГДЕ | СчетчикиПодсчетаПосетителей.ТехническийКод = &Тех" ; Запрос.УстановитьПараметр("Тех", ТехКод); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда СчетчикПодсчетаПосетителей = Выборка.Ссыль; Магазин = Выборка.Мсыль; ПоменялсяСчетчик = Истина; //Документ.СчетчикПодсчетаПосетителей = Выборка.Ссыль; //Документ.Магазин = Выборка.Мсыль; Иначе СчетчикПодсчетаПосетителей = Неопределено; Сообщить("Сенсор с Техническим кодом:""" +ТехКод +""" ,не найден!" ); КонецЕсли; Иначе Если Документ <> Неопределено и Документ.ДанныеПодсчета.Количество() > 0 Тогда Документ.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; КонецЕсли; ИначеЕсли ТипЗнч(СчетчикПодсчетаПосетителей) = Тип("СправочникСсылка.СчетчикиПодсчетаПосетителей") и Чтение.Имя = "stat" Тогда Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Стр = СокрЛП(Чтение.ПолучитьАтрибут("datetime")); Стр = СтрЗаменить(Стр, " ", Символы.ПС); Стр = СтрЗаменить(Стр, ":", Символы.ПС); Стр = СтрЗаменить(Стр, "/", Символы.ПС); Стр = СтрЗаменить(Стр, ".", Символы.ПС); Год = Число(СокрЛП(СтрПолучитьСтроку(Стр,1))); Месяц = Число(СокрЛП(СтрПолучитьСтроку(Стр,2))); День = Число(СокрЛП(СтрПолучитьСтроку(Стр,3))); Час = Число(СокрЛП(СтрПолучитьСтроку(Стр,4))); Минута = Число(СокрЛП(СтрПолучитьСтроку(Стр,5))); Секунда = Число(СокрЛП(СтрПолучитьСтроку(Стр,6))); ДатаДокТекущая = Дата(Год,Месяц,День, 0, 0, 0); Если ПоменялсяСчетчик или (ДатаДокСтарая = Неопределено) или (ДатаДокТекущая <> ДатаДокСтарая) Тогда Если Документ <> Неопределено и Документ.ДанныеПодсчета.Количество() > 0 Тогда Документ.Записать(РежимЗаписиДокумента.Проведение); КонецЕсли; Документ = Документы.РегистрацияПодсчетаПосетителей.СоздатьДокумент(); Документ.Дата = ДатаДокТекущая; Документ.СчетчикПодсчетаПосетителей = СчетчикПодсчетаПосетителей; Документ.Магазин = Магазин; ДатаДокСтарая = ДатаДокТекущая; ПоменялсяСчетчик = Ложь; КонецЕсли; Вход = Число(СокрЛП(Чтение.ПолучитьАтрибут("realin"))); Выход = Число(СокрЛП(Чтение.ПолучитьАтрибут("realout"))); //Документ.Дата = Дата(Год,Месяц,День, Час(ТекущаяДата()),Минута(ТекущаяДата()),Секунда(ТекущаяДата())); // Если уже есть такая запись, то не добавляем ЗапросПосетители.УстановитьПараметр("ВыбСчетчик", СчетчикПодсчетаПосетителей); ЗапросПосетители.УстановитьПараметр("ВыбПериод" , Дата(Год(Документ.Дата), Месяц(Документ.Дата), День((Документ.Дата)), Час, Минута, Секунда)); Если НЕ ЗапросПосетители.Выполнить().Пустой() Тогда Продолжить; КонецЕсли; Стр = Документ.ДанныеПодсчета.Добавить(); Стр.ВремяРегистрации = Дата(1,1,1,Час,Минута,Секунда); Стр.КоличествоВходящих = Вход; Стр.КоличествоВыходящих = Выход; КонецЕсли; КонецЕсли; КонецЦикла; Чтение.Закрыть(); КонецЦикла; Если Объект.Удалять Тогда УстановитьПривилегированныйРежим(Истина); УдалитьФайлы(Объект.Каталог,"*.rstatfr"); УстановитьПривилегированныйРежим(Ложь); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Вид() Если Объект.Вид = "Локально" Тогда Элементы.Ftp.Видимость = Ложь; Элементы.ГруппаКаталог.Видимость = Истина; ИначеЕсли Объект.Вид = "FTPСервер" Тогда Элементы.ГруппаКаталог.Видимость = Ложь; Элементы.Ftp.Видимость = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ВидСПриИзменении(Элемент) Если Объект.Вид = "Локально" Тогда Элементы.Ftp.Видимость = Ложь; Элементы.ГруппаКаталог.Видимость = Истина; ИначеЕсли Объект.Вид = "FTPСервер" Тогда Элементы.ГруппаКаталог.Видимость = Ложь; Элементы.Ftp.Видимость = Истина; КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьФайлы1С() Если Объект.Вид = "Локально" Тогда МассивФайлов = НайтиФайлы(Объект.Каталог,"*.rstatfr"); Массив = Новый Массив; Для Каждого Файл из МассивФайлов Цикл Массив.Добавить(Файл.ПолноеИмя); КонецЦикла; ИначеЕсли Объект.Вид = "FTPСервер" Тогда FTP = Новый FTPСоединение(Объект.Сервер,Объект.Порт,Объект.Логин,Объект.Пароль); Файлы = FTP.НайтиФайлы(Объект.КаталогFTP,"*.rstatfr"); Массив = Новый Массив; Для Каждого Файл Из Файлы Цикл Путь = КаталогВременныхФайлов() + Файл.Имя; FTP.Получить(Файл.ПолноеИмя, Путь); Массив.Добавить(Путь); КонецЦикла; Если Объект.Удалять Тогда FTP.Удалить(Объект.КаталогFTP,"*.rstatfr"); КонецЕсли; КонецЕсли; Возврат Массив; КонецФункции &НаКлиенте Процедура Проверить(Команда) //Рек = РеквизитФормыВЗначение("Объект"); //Рек.ВыполнитьКоманду("") ; ПроверитьНаСервере (); КонецПроцедуры &НаСервере Процедура ПроверитьНаСервере() Рек = РеквизитФормыВЗначение("Объект"); Рек.ВыполнитьКоманду("", Новый Структура) ; Возврат; КонецПроцедуры &НаСервере Процедура СохранитьНастройкиНаСервере() Настройки = Новый Соответствие; Настройки.Вставить("ВидСоединения", Объект.Вид); Настройки.Вставить("FTP",Объект.КаталогFTP); Настройки.Вставить("Сервер",Объект.Сервер); Настройки.Вставить("Порт", Объект.Порт); Настройки.Вставить("Логин", Объект.Логин); Настройки.Вставить("Пароль", Объект.Пароль ); Настройки.Вставить("Каталог", Объект.Каталог); Настройки.Вставить("Удалять",Объект.Удалять); ХранилищеОбщихНастроек.Сохранить("RstatI","RstatI", Настройки,,""); Рек = РеквизитФормыВЗначение("Объект"); Рек. ВыполнитьКоманду("", ""); КонецПроцедуры &НаСервере Процедура ПолучитьНастройкиНаСервере() УстановитьПривилегированныйРежим(Истина); Настройка = ХранилищеОбщихНастроек.Загрузить("RstatI", "RstatI",,""); Если Настройка = Неопределено Тогда Возврат; КонецЕсли; Объект.Вид = Настройка.Получить("ВидСоединения"); Объект.КаталогFTP = Настройка.Получить("FTP"); Объект.Сервер = Настройка.Получить("Сервер"); Объект.Порт = Настройка.Получить("Порт"); Объект.Сервер = Настройка.Получить("Сервер"); Объект.Порт = Настройка.Получить("Порт"); Объект.Логин = Настройка.Получить("Логин"); Объект.Пароль = Настройка.Получить("Пароль"); Объект.Каталог = Настройка.Получить("Каталог"); Объект.Удалять = Настройка.Получить("Удалять"); КонецПроцедуры &НаКлиенте Процедура СохранитьНастройки(Команда) СохранитьНастройкиНаСервере(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) Элементы.ВидС.СписокВыбора.Добавить("Локально"); Элементы.ВидС.СписокВыбора.Добавить("FTPСервер"); Если Найти(ПараметрЗапуска,"-exchange")>0 Тогда ПроверитьНаСервере (); ЗавершитьРаботуСистемы(Ложь); КонецЕсли; ПолучитьНастройкиНаСервере(); Если Объект.Вид = "" Тогда Элементы.Ftp.Видимость = Ложь; Элементы.ГруппаКаталог.Видимость = Ложь ; Иначе Вид(); КонецЕсли; КонецПроцедуры |
|||
12
Elfidor
16.01.20
✎
17:47
|
(8) Зачем оно - сама не знаю. Мне сказали делать я делаю. Точнее пытаюсь
|
|||
13
Злопчинский
16.01.20
✎
20:43
|
как-то в одном магазинчике меня попросили "не ходите туда-сюда.." - а потому что я выйду то на витрину посмотрю, то зайду внутрь повнимательнее - и так пару раз - а у них такой вот "датчик"
Не дай бог так оголодать магазинчику... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |