|   |   | 
| 
 | Внешняя обработка, созданная для 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)Думаю за деньги сделают - бесплатно врядли кто будет ковырять чужой код.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |