|
УТ 11, перенос справочника цен из 7.7 в 8,3 ут | ☑ | ||
---|---|---|---|---|
0
lite700
11.05.15
✎
11:23
|
Фрагмент кода в ут 11, который переносит цены из 1с 7,7
в 8,3 почемуто не работает метод цена.ИспользоватьВладельца(спр.ТекущийЭлемент()); при отладке пишет метод объекта не обнаружен хоты метод ВыбратьЭлементы() работает v7 это ком объект директива на сервере Сообщить("Добавление Элементов"); спр = v7.CreateObject("Справочник.Номенклатура"); тип= v7.CreateObject("Справочник.ТипыЦен"); тип.НайтиПокоду("00003") ; //А типа=Тип.ТекущийЭлемент() ; цена= v7.CreateObject("Справочник.Цены"); вид=Справочники.ВидыЦен.НайтиПоНаименованию("А").Ссылка ; спр.ВыбратьЭлементы() ; Пока спр.ПолучитьЭлемент()=1 Цикл спр2=справочники.Номенклатура.НайтиПоРеквизиту("Артикул",СокрЛП(спр.Код)); Если спр2<>Справочники.Номенклатура.ПустаяСсылка() Тогда // нашли спр2 и спр цена.ИспользоватьВладельца(спр.ТекущийЭлемент()); цена.ВыбратьЭлементы(); |
|||
1
Рэйв
11.05.15
✎
11:28
|
проверь
вид=Справочники.ВидыЦен.НайтиПоНаименованию("А").Ссылка ; чтото мне кажется тип= неопределено |
|||
2
lite700
11.05.15
✎
11:32
|
вид нормально находит , проверил
|
|||
3
lite700
11.05.15
✎
11:33
|
Непонятно почему некоторые методы V7 работают а некоторые нет ?
|
|||
4
lite700
11.05.15
✎
11:34
|
Также не работает Метод НайтиПоКоду
|
|||
5
Бубка Гоп
11.05.15
✎
11:37
|
(0) выгрузить из 7.7 в файлик и загрузить в 8.3 не предлагать?
|
|||
6
lite700
11.05.15
✎
11:39
|
можно конечно попробовать ! Гораздо сложнее только, хотя я так целые документы переносил, в обычном режиме , а не в режиме управляемого приложения , может кто сталкивался ?
|
|||
7
Бубка Гоп
11.05.15
✎
11:41
|
(6) выгрузить цены в файлик сложнее, чем подключиться из 83 в 77 по COM и пытаться оттуда использовать методы 77? не соглашусь, одноко
|
|||
8
lite700
11.05.15
✎
11:44
|
ты предлагаешь через текстовые файлы ?
|
|||
9
Бубка Гоп
11.05.15
✎
11:45
|
(8) xml
|
|||
10
lite700
11.05.15
✎
11:45
|
как разделяешь данные там ? каким нить спец символом ?
|
|||
11
lite700
11.05.15
✎
11:47
|
Может кто то сталкивался все таки ? через файл писать обработку с двух сторон придется
|
|||
12
PRO100 NigGaZ
11.05.15
✎
12:47
|
Для 1С8 заполнение из таблицы
для 7.7 создание файла, за пару минут переделаешь под ole Процедура ВыгрузитьЦены() Файл = СоздатьОбъект("Текст"); ТЗ = СоздатьОбъект("ТаблицаЗначений"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Группировка Номенклатура;"; Запрос.Выполнить(ТекстЗапроса); Запрос.Выгрузить(ТЗ); КоличествоЭлементов = ТЗ.КоличествоСтрок(); Номенклатура = СоздатьОбъект("Справочник.Номенклатура"); Номенклатура.ВыбратьЭлементы(); ЦеныНоменклатуры = СоздатьОбъект("Справочник.Цены"); а = 0; Пока Номенклатура.ПолучитьЭлемент() = 1 Цикл а = а + 1; Если КоличествоЭлементов > 0 Тогда Зн = Цел(а/КоличествоЭлементов*100); КонецЕсли; Состояние(СтрЗаменить("%1%", "%1", Зн)); Если Номенклатура.ПометкаУдаления() = 1 Тогда Продолжить; КонецЕсли; Если Номенклатура.ЭтоГруппа() = 1 Тогда Продолжить; КонецЕсли; ЦеныНоменклатуры.ИспользоватьВладельца(Номенклатура.ТекущийЭлемент()); ЦеныНоменклатуры.ВыбратьЭлементы(); Пока ЦеныНоменклатуры.ПолучитьЭлемент() = 1 Цикл Если (СокрЛП(ЦеныНоменклатуры.ТипЦен) = "До 50") ИЛИ (СокрЛП(ЦеныНоменклатуры.ТипЦен) = "Закупочные") Тогда Если СокрЛП(ЦеныНоменклатуры.ТипЦен) = "Закупочные" Тогда ТипЦен = "Закупочная"; ИначеЕсли СокрЛП(ЦеныНоменклатуры.ТипЦен) = "До 50" Тогда ТипЦен = "Прайс-лист"; КонецЕсли; Стр = ""; Цена = ЦеныНоменклатуры.Цена.Получить(НачДата); Если Цена > 0 Тогда ДобавитьКСтрокеСРазделителем(Стр, "Дата;" + Формат(НачДата, "Д ГГГГММДД") + ";"); УКодН = СокрЛП(Номенклатура.УКодН); Если ПустоеЗначение(УкодН) = 1 Тогда Сообщить("ВНИМАНИЕ " + Номенклатура); КонецЕсли; ДобавитьКСтрокеСРазделителем(Стр, "Номенклатура;" + УКодН + ";"); ДобавитьКСтрокеСРазделителем(Стр, "ВидЦены;" + ТипЦен + ";"); ДобавитьКСтрокеСРазделителем(Стр, "Цена;" + Цена + ";"); Файл.ДобавитьСтроку(Стр); КонецЕсли; СтараяЦена = Цена; Цена = СоздатьОбъект("Периодический"); Цена.ИспользоватьОбъект("Цена", ЦеныНоменклатуры.ТекущийЭлемент()); Цена.ВыбратьЗначения(НачДата, КонДата); Пока Цена.ПолучитьЗначение() = 1 Цикл НоваяЦена = Цена.Значение; Если СтараяЦена = НоваяЦена Тогда Продолжить; КонецЕсли; Стр = ""; ДобавитьКСтрокеСРазделителем(Стр, "Дата;" + Формат(Цена.ДатаЗнач, "Д ГГГГММДД") + ";"); УКодН = СокрЛП(Номенклатура.УКодН); ДобавитьКСтрокеСРазделителем(Стр, "Номенклатура;" + УКодН + ";"); ДобавитьКСтрокеСРазделителем(Стр, "ВидЦены;" + ТипЦен + ";"); ДобавитьКСтрокеСРазделителем(Стр, "Цена;" + НоваяЦена + ";"); Файл.ДобавитьСтроку(Стр); СтараяЦена = НоваяЦена; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; Файл.Записать("C:\НоменклатураЦены.txt"); КонецПроцедуры // ВыгрузитьЦены |
|||
13
Maniac
11.05.15
✎
12:50
|
СОхрани из 77 в эксель отчет прайс-лист
Загрузки в восьмерке его обработкой |
|||
14
lite700
11.05.15
✎
14:20
|
ок
|
|||
15
lite700
11.05.15
✎
14:41
|
самое легкое наверно дйствительно прайс в иксекль и загрузить из икселы
|
|||
16
НП
11.05.15
✎
18:17
|
(0) Всё Вы правильно делаете, в принципе. И всё должно работать и с управляемым приложением. Тем более, что внешнему соединению формы безразличны. Проверьте метод, которым Вы коннектитесь. Там две возможности есть. Обе попробуйте. Часто в ОС comcntr.dll не зарегистрировано или что-тов этом роде.
Код для обращения к подчинённому справочнику правильный. Иногда полезно обе базы перенести на другой компьютер, если размер позволяет. |
|||
17
Maniac
11.05.15
✎
18:25
|
(15) естественно! тем более разовая работа!
|
|||
18
Maniac
11.05.15
✎
18:26
|
Да и в прочем постоянно нужно будет из экселя теперь загружать прайсы, всякие документы и прочие вещи. тоесть регулярно.
А писать разовую обработку перегрузки цен по ОЛЕ - этовсе равно что дом строить в котором жильцы 1 день проживут |
|||
19
НП
11.05.15
✎
18:28
|
(18) От 15 минут до часа занимает. Зачем тогда нужно программирование, если такие задачи делать сложно?
|
|||
20
НП
11.05.15
✎
18:30
|
(18) Но иногда есть смысл через файлы пересылать. Если базы в разных локальных сетях, например. В этом случае сейчас принzто пользоваться XML, а вовсе не устаревшим Excel.
|
|||
21
lite700
14.05.15
✎
13:59
|
В итого загрузил с икселя, а в 7,7 сформировал прайс лист
и сохранил его в иксель, токо вопрос , у кого нить работал метод ИспользоватьРодителя при подключении через оле, хотя другиет методы как выбрать элементы и Получить Элемент работают .С xML не пробовал программировать , токо дбф и иксель |
|||
22
lite700
14.05.15
✎
13:59
|
клиент доволен
|
|||
23
Torquader
14.05.15
✎
14:13
|
(21) ИспользоватьРодителя будет работать, если ему правильно родителя передать.
Просто, с учётом того, что семёрка работает через RPC-вызовы, подключаться нужно из семёрки в восьмёрку. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |