|
Внешняя обработка, созданная для 8.1, не работает на 8.2 после конвертирования | ☑ | ||
---|---|---|---|---|
0
Russkiy
18.10.12
✎
10:23
|
Привет, ребята!
Сейчас у меня 1С Предприятие, версия 8.2.12.75, конфигурация "Управление торговым предприятием для Украины", ред. 1.1. До этого была 1С Предприятие, версия 8.1.15.14, с той же конфигурацией. Она просто сконвертирована для новой платформы. Моя проблема состоит в следующем. Когда я работал на прежней платформе, по моему заказу программист 1С сделал для меня внешнюю обработку, с помощью которой я создавал различные документы (Поступление товаров и услуг, Реализация товаров и услуг) с заполнением их табличной части из файла Excel, созданного по определённой форме. Кроме этого, обработка создавала карточки новой Номенклатуры, если не находила в БД ту или иную позицию. Идентификация позиций производилась по штрихкоду. Эта обработка меня вполне устраивала до определённого момента, пока я не обнаружил один существенный недостаток в работе программы. Этот недостаток описан в моей теме, обсуждённой не так давно на этом форуме, вот ссылка на неё: v8: Неправильная работа при подборе номенклатуры в документ Кроме проблемы, отчётливо вскрытой в вышеуказанной теме, оказалось, что эта обработка не запускается на платформе 8.2 даже после её конвертирования, выдаётся сообщение: Ошибка исполнения внешней обработки табличной части документа. {ОбщийМодуль.УниверсальныеМеханизмы(388)}: Ошибка при вызове метода контекста (Создать): Ошибка подключения внешних метаданных: Ошибка загрузки документа. Внешняя обработка не может быть прочитана текущей версией программы К сожалению, у меня нет возможности найти того программиста, который делал эту обработку. Итак, передо мной две задачи: заставить эту обработку работать на платформе 8.2 и устранить неверное формирование данных, приводящих к проблеме, описанной мной в предыдущей теме (см. вышеуказанную ссылку). Вполне возможно, что для этого нужны мелкие, пустяковые исправления кода обработки. Если это так, то я прошу помочь мне их внести. Для этого я готов выложить здесь весь код обработки. Кстати, если кого-нибудь из вас заинтересует такая обработка в принципе - можете воспользоваться этой в качестве заготовки, немного подправив её для устранения вышеизложенных проблем. Жду ваших отзывов. Буду очень признателен за помощь. |
|||
1
shamannk
18.10.12
✎
10:25
|
5000т.р.
|
|||
2
Asmody
18.10.12
✎
10:27
|
одинесники такие одинесники: вываливают ценник даже не глядя за что
|
|||
3
Морозов Александр
18.10.12
✎
10:27
|
и кто так что подскажет, не видя кода? а?
|
|||
4
Russkiy
18.10.12
✎
10:29
|
Да, ребята, я пока смотрю, есть ли у кого-нибудь из вас хоть небольшой интерес к теме и готовность хотя бы посмотреть на этот код...
|
|||
5
Asmody
18.10.12
✎
10:29
|
для затравки: после конвертирования обработку в базе заменили?
|
|||
6
shamannk
18.10.12
✎
10:30
|
(4) Тебя нужно упрашивать показать код? Тогда 10000т.р.
|
|||
7
Russkiy
18.10.12
✎
10:32
|
Asmody, интересный вопрос... Я эту обработку только лишь сконвертировал, когда открывал в конфигураторе на новой платформе.
|
|||
8
ptiz
18.10.12
✎
10:35
|
(0) Встань отладчиком на эту строку и посмотри, что там делается.
|
|||
9
ptiz
18.10.12
✎
10:35
|
И проблема не в обработке.
|
|||
10
Dimel
18.10.12
✎
10:48
|
(0) Мне кажется, вы просто не сконвертировали внешние обработки и обработки заполнения табличных частей, которые хранятся в хранилище.
|
|||
11
Asmody
18.10.12
✎
11:06
|
(7) а в 1Ске она как открывается?
|
|||
12
Russkiy
18.10.12
✎
11:51
|
Ребята, для более полного понимания привожу инструкцию по вставке обработки в тот или иной документ, составленной мной для себя же по рекомендации разработчика:
Вставить в документ закладку для запуска процедуры заполнения табличной части данными из документа в формате Excel Документ должен иметь такую же табличную часть, как и документ "РН" и т.п. Для того, чтобы вставить в документ закладку для запуска процедуры заполнения табличной части данными из документа в формате Excel, следует выполнить следующие действия в 1С: Сервис - Внешние печатные формы и обработки - Внешние обработки заполнения табличных частей. Щёлкнуть дважды на строке "XLS". В открывшемся окне "Регистрация внешней обработки заполнения табличных частей: XLS" нажать кнопку добавления новой позиции.В открывшемся окне "Принадлежность печатной формы" выбрать нужный документ, в котором реализуется процедура, нажать кнопку "ОК", и когда в первом окне появится эта новая позиция, опять уже в нём нажать кнопку "ОК". В результате в экранной форме документа должна появиться вторая кнопка "Заполнить" (правая), при нажатии которой в выпадающем списке значится всего один пункт - "XLS". Щелчком по нему открывается окно выбора исходного документа в формате Excel, и далее после указания последнего (его выделения) нажатием кнопки "Открыть" запускается процедура заполнения табличной части создаваемого документа. При необходимости параллельно будет отрабатываться и процедура создания новых карточек в Справочнике "Номенклатура". |
|||
13
Russkiy
18.10.12
✎
12:05
|
Dimel, а как получить доступ к этим внешним обработкам и обработкам заполнения табличных частей, которые хранятся в хранилище? Чтобы их сконвертировать...
|
|||
14
ptiz
18.10.12
✎
12:10
|
(13) Там есть иконки "дискетка" и "папка", если нажать F2 на нужной обработке.
|
|||
15
Dimel
18.10.12
✎
12:17
|
||||
16
Russkiy
18.10.12
✎
12:28
|
Любопытно... Сейчас попробую поконвертировать... :)
|
|||
17
Russkiy
18.10.12
✎
12:47
|
Ребята, а как в режиме "1С:Предприятие" запустить приложенную обработку "КонвертацияВнешнихОбработок.epf"? Чой-то я в Универсальных обработках таковой не нахожу...
|
|||
18
Dimel
18.10.12
✎
13:08
|
Это внешняя обработка, идет на ИТС. Если лень поисковиком пользоватся http://www.northsoft.ru/download.php
|
|||
19
Russkiy
18.10.12
✎
13:13
|
А, в моей конфигурации её может и не быть? Понятно, Dimel... Нет, мне, конечно, не лень, просто я ведь пока не знаю, где она содержится... Точнее - теперь знаю... :) Спасибо Вам за подсказку!
|
|||
20
Russkiy
18.10.12
✎
13:31
|
Dimel, у меня, похоже, получилось... Во всяком случае, та обработка, которая не запускалась на платформе 8.2, запустилась и отработала нормально. Вот только, как я подозреваю, она и далее будет портить мне номенклатуру, если не подправить должным образом её код... Я очень признателен Вам за Вашу ценную подсказку - благодаря ей первый этап моей проблемы пройден. Спасибо Вам!
|
|||
21
echo77
18.10.12
✎
13:35
|
херню свою которая не работает выложи
|
|||
22
Russkiy
18.10.12
✎
13:37
|
Ребята, а как же со второй частью моей проблемы - с кодом обработки? Есть ли среди вас кто-нибудь, кому интересна в принципе эта обработка и кто мог бы и себе её...
Не успел дописать - уже товарищ echo77 поинтересовался... Спасибо, echo77, ща выкладываю... |
|||
23
Russkiy
18.10.12
✎
13:41
|
Вот, милости прошу:
Процедура Инициализировать (Объект,ТабличнаЧасть,ТабличноеПолеОбъекта) Экспорт Товары = Объект[ТабличнаЧасть]; Если Товары.Количество() > 0 Тогда В = Вопрос("Очистить табличную часть перед загрузкой?", РежимДиалогаВопрос.ДаНет); Если В = КодВозвратаДиалога.Да Тогда Товары.Очистить(); КонецЕсли; КонецЕсли; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл для загрузки"; Диалог.ПолноеИмяФайла = ""; Диалог.ПредварительныйПросмотр = Истина; Диалог.Фильтр = "Файлы XLS(*.xls)|*.xls"; Если Диалог.Выбрать() Тогда ФайлОбмена = Диалог.ПолноеИмяФайла; Иначе Возврат; КонецЕсли; xl = Новый COMОбъект("Excel.Application"); Книга = xl.Application.Workbooks.Open(ФайлОбмена); ТекЛист = Книга.WorkSheets(1); Для ИндСтр = 2 По 30000 Цикл // строки ОбработкаПрерыванияПользователя(); ШтрихКод = СокрЛП(ТекЛист.Cells(ИндСтр, 2).Value); ШтрихКод = СтрЗаменить(ШтрихКод," ",""); Если ШтрихКод = "" Тогда Прервать; Иначе Запрос = Новый Запрос( "ВЫБРАТЬ ПЕРВЫЕ 1 | РегШК.Владелец КАК Владелец |ИЗ | РегистрСведений.Штрихкоды КАК РегШК |ГДЕ | РегШК.Штрихкод = &Штрихкод"); Запрос.УстановитьПараметр("Штрихкод", ШтрихКод); РезультатЗапроса = Запрос.Выполнить(); Если Не РезультатЗапроса.Пустой() Тогда РезультатЗапроса = РезультатЗапроса.Выбрать(); РезультатЗапроса.Следующий(); Попытка Количество = Число(СокрЛП(ТекЛист.Cells(ИндСтр, 11).Value)); Исключение Количество = 0; КонецПопытки; Попытка Цена = Число(СокрЛП(ТекЛист.Cells(ИндСтр, 10).Value)); Исключение Цена = 0; КонецПопытки; НовСтр = Товары.Добавить(); НовСтр.Номенклатура = РезультатЗапроса.Владелец; НовСтр.Цена = Цена; НовСтр.Количество = Количество; Если ТипЗнч (Объект.Ссылка) <> Тип("ДокументСсылка.ОприходованиеТоваров") Тогда НовСтр.СтавкаНДС = РезультатЗапроса.Владелец.СтавкаНДС; КонецЕсли; НовСтр.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НовСтр.Коэффициент = 1; Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(НовСтр, "Товары", Объект.ОтражатьВБухгалтерскомУчете, Объект.ОтражатьВНалоговомУчете); ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НовСтр, Объект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(НовСтр, Объект); Иначе Сообщить("Не найден товар по штрих-коду " + ШтрихКод); НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); НоваяНоменклатура.Наименование = СокрЛП(ТекЛист.Cells(ИндСтр, 3).Value); НоваяНоменклатура.НаименованиеПолное = СокрЛП(ТекЛист.Cells(ИндСтр, 3).Value); НоваяНоменклатура.ГодИздания = СокрЛП(ТекЛист.Cells(ИндСтр, 6).Value); НоваяНоменклатура.КолСтраниц = СокрЛП(ТекЛист.Cells(ИндСтр, 7).Value); НоваяНоменклатура.ДругиеАвторы = СокрЛП(ТекЛист.Cells(ИндСтр, 4).Value); Издательство = СокрЛП(ТекЛист.Cells(ИндСтр, 5).Value); Переплёт = СокрЛП(ТекЛист.Cells(ИндСтр, 9).Value); ФорматКниги = СокрЛП(ТекЛист.Cells(ИндСтр, 8).Value); НоваяНоменклатура.Комментарий = "Издательство:" + Издательство + " Формат: " + ФорматКниги + " Переплёт: " + Переплёт; НоваяНоменклатура.БазоваяЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"); НоваяНоменклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар"); НоваяНоменклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0; НоваяНоменклатура.Записать(); //Заполняем Единицы измерения для новой номенклатуры НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); НайденнаяЕдиницаОбъект.Наименование = СокрЛП(НоваяНоменклатура.БазоваяЕдиницаИзмерения); НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = НоваяНоменклатура.БазоваяЕдиницаИзмерения; НайденнаяЕдиницаОбъект.Коэффициент = 1; НайденнаяЕдиницаОбъект.Владелец = НоваяНоменклатура.Ссылка; НайденнаяЕдиницаОбъект.Записать(); НоваяНоменклатура.ЕдиницаХраненияОстатков = НайденнаяЕдиницаОбъект.Ссылка; НоваяНоменклатура.ЕдиницаИзмеренияМест = НайденнаяЕдиницаОбъект.Ссылка; НоваяНоменклатура.ЕдиницаДляОтчетов = НайденнаяЕдиницаОбъект.Ссылка; НоваяНоменклатура.Записать(); ТекЗапись = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи(); ТекЗапись.Владелец = НоваяНоменклатура.Ссылка; ТекЗапись.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");; ТекЗапись.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13; ТекЗапись.Качество = Справочники.Качество.Новый; ТекЗапись.Штрихкод = ШтрихКод; Попытка ТекЗапись.Записать(); Исключение КонецПопытки; Попытка Количество = Число(СокрЛП(ТекЛист.Cells(ИндСтр, 11).Value)); Исключение Количество = 0; КонецПопытки; Попытка Цена = Число(СокрЛП(ТекЛист.Cells(ИндСтр, 10).Value)); Исключение Цена = 0; КонецПопытки; НовСтр = Товары.Добавить(); НовСтр.Номенклатура = НоваяНоменклатура.Ссылка; НовСтр.Цена = Цена; НовСтр.Количество = Количество; Если ТипЗнч (Объект.Ссылка) <> Тип("ДокументСсылка.ОприходованиеТоваров") Тогда НовСтр.СтавкаНДС = НоваяНоменклатура.СтавкаНДС; КонецЕсли; НовСтр.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт"); НовСтр.Коэффициент = 1; Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(НовСтр, "Товары", Объект.ОтражатьВБухгалтерскомУчете, Объект.ОтражатьВНалоговомУчете); ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НовСтр, Объект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(НовСтр, Объект); КонецЕсли; КонецЕсли; КонецЦикла; Книга.Close(0); xl.Application.Quit(); xl = 0; КонецПроцедуры |
|||
24
echo77
18.10.12
✎
13:44
|
Вы файл на файлообменник(например files.mail.ru) выложить можете?
|
|||
25
Russkiy
18.10.12
✎
14:01
|
Могу, конечно, только мне пока этого не приходилось делать... Как это делается?
|
|||
26
kimarle
18.10.12
✎
14:05
|
Лучше найдите программиста. и укажите на проблемное место в обработке, а именно часть с присвоением единиц измерения по наименованию.
|
|||
27
Russkiy
18.10.12
✎
14:06
|
Да, kimarle, похоже, так и придётся сделать...
|
|||
28
Russkiy
18.10.12
✎
15:08
|
Ещё разок:
Ребята, а как же со второй частью моей проблемы - с кодом обработки? Есть ли среди вас кто-нибудь, кому интересна в принципе эта обработка и кто мог бы и себе её приспособить? Но главное для меня - кто мог бы мне подсказать, как нужно изменить код обработки, чтобы она не портила мне номенклатуру? Если это, конечно, не сложно... |
|||
29
ukolabrother
18.10.12
✎
15:14
|
(1)(6) не много просишь?
|
|||
30
Advan
19.10.12
✎
14:34
|
(28)Думаю за деньги сделают - бесплатно врядли кто будет ковырять чужой код.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |