Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Дополнительная нестандартная форма, как открыть          
bizisoft Подменю пользователя
сообщение 04.10.17, 19:12
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Здравствуйте.

1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)
обычные формы.

Поставлена задача сделать отдельный интерфейс для ТерминалаСбораДанных (подключение через RDP).
Разработана стартовая форма 240*238, убрано все лишнее, запуск в режиме рабочего стола, навигация кнопками переключения по закладкам (страницам).
На каждой закладке сокращенный список на определенный вид документа.

Задумано, что при клике по строке нужного документа должна открываться форма документа, но не штатная, а особым образом построенная под размер экрана 240*238.
Я создал дополнительную форму для документа ПриходныйСкладскойОрдер и пытаюсь в процедуре списка
Процедура тпСписокПСОВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
открыть форму но вываливается ошибка
{ОбщийМодуль.зфЗащищенныеФункции.Модуль(1535)}: Ошибка при вызове метода контекста


Пробовал открывать свою форму "ФормаТСД" несколькими способами, но ничего не вышло.
ТекСсылка = ВыбраннаяСтрока.Ссылка;    
ТекСсылка.ПолучитьФорму("ФормаТСД",,).Открыть();

и так
парам = новый Структура;
парам.вставить("Ключ",ТекСсылка);
ОткрытьФорму("Документ.ПриходныйСкладскойОрдер.Форма.ФормаТСД",парам);


Если в коде изменить "ФормаТСД" на "ФормаДокумента", все нормально открывается (стандартная форма документа).
Подскажите пожалуйста, что я делаю не так?


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

salton Подменю пользователя
сообщение 05.10.17, 11:45
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

bizisoft @ Вчера, 20:12 * ,
Попробуйте:
СтандартнаяОбработка=Ложь;


потом

парам = новый Структура;
парам.вставить("Ключ",ТекСсылка);
ОткрытьФорму("Документ.ПриходныйСкладскойОрдер.Форма.ФормаТСД",парам);


Petre Подменю пользователя
сообщение 05.10.17, 11:59
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

bizisoft @ Вчера, 20:12 * ,
Какое значение имеет свойство "Данные" формы "ФормаТСД"?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

bizisoft Подменю пользователя
сообщение 05.10.17, 12:41
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

salton @ Сегодня, 12:45 * ,
К сожалению так не работает, такая же ошибка.

Цитата(Petre @ 05.10.17, 12:59) *
Какое значение имеет свойство "Данные" формы "ФормаТСД"?

Простите, но я не совсем понял, что за "Данные"?
Если имеется ввиду если открыть в конфигураторе этот документ и на закладке "Данные", то:
8 реквизитов документа и табличная часть.
Для создания этой формы я ФормуДокумента скопировал и просто перестроил расположение элементов под маленький экран, ничего не добавлял и не выбрасывал.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

bizisoft Подменю пользователя
сообщение 09.10.17, 7:56
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Попробовал в свойствах документа, в разделе Форма, на закладке Дополнительные, указать в качестве дополнительной формы документа свою форму ФормаТСД, но и это не помогло.
А собственно для чего нужно это Дополнительные, для каких целей используется?

P.S. Вопрос собственно решить еще не получилось.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Petre Подменю пользователя
сообщение 09.10.17, 8:40
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

Если вы не собираетесь пока использовать стандартную форму, переименуйте ее, а свою назовите стандартно и сделайте основной. Кто его знает, что там творится в защищенных модулях.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

bizisoft Подменю пользователя
сообщение 09.10.17, 10:18
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Petre @ Сегодня, 9:40 * ,
Стандартная форма используется так сказать в обычном режиме, а эта форма будет использователся на экране ТерминалаСбораДанных Motorola MC909x.
Помнится где-то у меня была "открывашка" для закрытых модулей, попробую поискать и вскрыть.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

pablo Подменю пользователя
сообщение 09.10.17, 13:03
Сообщение #8

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Цитата
А собственно для чего нужно это Дополнительные, для каких целей используется?

Для конфигураций, использующих тонкий и толстый интерфейсы одновременно. Так можно назначить основную форму для каждого вида интерфейса без дополнительного кода.


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: bizisoft,

bizisoft Подменю пользователя
сообщение 09.10.17, 22:54
Сообщение #9

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Нашел "открывашку" для закрытых модулей.
Если она правильно разблокировала и расставила по строкам, то на строке 1535 закрытого модуля содержится следующая строка

    Рез = ОбработкаЗащиты.Компонента.дкФормаПередОткрытием(пЭтаФорма, пОтказ, пСтандартнаяОбработка);


а сама функция
Функция зфФормаПередОткрытием(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт
    ОбработкаЗащиты = "";

    Если Не зфПроверкаЗащиты(ОбработкаЗащиты) Тогда
        Возврат Ложь;
    КонецЕсли;

    пЭтаФорма = ЭтаФорма;
    пОтказ = Отказ;
    пСтандартнаяОбработка = СтандартнаяОбработка;
    Рез = ОбработкаЗащиты.Компонента.дкФормаПередОткрытием(пЭтаФорма, пОтказ, пСтандартнаяОбработка);
    Отказ = пОтказ;
    СтандартнаяОбработка = пСтандартнаяОбработка;
    Возврат Рез;
КонецФункции


Что-то я не совсем понял, для чего вообще данная функция, в которой просто перепресваиваются параметры?
Чисто ради того, чтобы все основные операции проходили через закрытый модуль, который просто проверяет есть ли ключик и если нет то блочит работу.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Petre Подменю пользователя
сообщение 10.10.17, 8:21
Сообщение #10

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

bizisoft @ Вчера, 23:54 * ,
Из функции идет обращение к внешней компоненте. Что там в ней делается - неясно.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

bizisoft Подменю пользователя
сообщение 11.10.17, 10:35
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Petre @ Вчера, 9:21 * ,
Пытаюсь дальше размотать клубок.
Ниточка привела меня к заключению, что эта внешняя компонента есть ни что иное, как динамически подключаемая библиотека V8AutoServiceUkr.dll.
Попробовал посмотреть что внутри при помощи OLLYDBG, но ничего там не увидел, искал по строковым значениям. Пробовал получить список экспортируемых функций при помощи IMPDEF - не смогла получить список ф-й.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

bizisoft Подменю пользователя
сообщение 13.10.17, 20:36
Сообщение #12

Завсегдатай
****
Группа: Пользователи
Сообщений: 242
Из: Донецк
Спасибо сказали: 19 раз
Рейтинг: 0

Спасибо всем за комментарии и помощь в поиске решения проблемы.

Я так и не нашел решения и решил переделать форму 32000000.gif , повторно скопировав ФормуДокумента и заработало.
Почему оно ранее не работало так и осталось для меня загадкой, ну да ладно. crazy.gif

Пока искал решение проблему, придумал другую реализацию функционала для работы из терминала сбора данных.
Форму из обработки решил оставить, только убрал списки из которых думал ранее открывать документы.
Вместо этого добавил табличное поле с тремя столбцами (Артикул, Номенклатура, Количество) и ПолеВвода.

Сканер будет считывать штрих-код в ПолеВвода и завершать ввод эмуляцией нажатия клавишей Ввод.
В процедуре ПриИзменении происходит разбор строки на составляющие Артикул и Количество и после поиска по табличному полю добавляется в него или изменяет количество.

Процедура ПолеВвода1ПриИзменении(Элемент)
    Если ПустаяСтрока(пвАртикул) Тогда
        Предупреждение("Введите Штрих-код/Артикул");
                Возврат;
    КонецЕсли;
    
    Предупреждение("Ввод"+Строка(пвАртикул));
    Разделитель = " ";
    Строки = СтрЗаменить(СокрЛП(пвАртикул), Разделитель, Символы.ПС);
    
    БылРазделитель = Ложь;
    АртикулПолучен = Ложь;
    Кол = 0;
    Артикул = "";
    Для Индекс=1 По СтрЧислоСтрок(Строки) Цикл
        ТекСтр = СтрПолучитьСтроку(Строки, Индекс);
        Если ПустаяСтрока(ТекСтр) Тогда
        //    БылРазделитель = Истина;
        Иначе
            Если АртикулПолучен = Ложь Тогда
                Артикул = ТекСтр;
                АртикулПолучен=Истина;
            Иначе
                Кол = Число(ТекСтр);
            КонецЕсли;            
        КонецЕсли;
        
    КонецЦикла;
    Кол = ?(Кол=0, 1,Кол);
    Если ПустаяСтрока(Артикул) Тогда
        Предупреждение("Введите Артикул/Штрих-код");
    Иначе    
        НайденнаяСтрока = тпТовары.Найти(Артикул, "Артикул");
        Если НайденнаяСтрока = Неопределено Тогда
            НомСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
            Если НомСсылка.Пустая() Тогда
                Предупреждение("Товар не найден: "+Строка(Артикул));
            Иначе
                ЭлементыФормы.тпТовары.ДобавитьСтроку();
                НовСТР = ЭлементыФормы.тпТовары.ТекущаяСтрока;
                НовСТР.Артикул = Артикул;
                НовСТР.Номенклатура = НомСсылка;
                НовСТР.Кол = Кол;
            КонецЕсли;            
        Иначе
            НайденнаяСтрока.Кол = НайденнаяСтрока.Кол+Кол;
        КонецЕсли;            
    КонецЕсли;
КонецПроцедуры


После окончания наполнения табличного поля, его содержимое будет выгружаться в табличную часть нужного документа или нового или уже имеющегося в базе.
Вид документа может быть выбран любой (Реализация, Поступление, Перемещение, Возврат, СкладскиеОрдера и т.п.).
Думаю, что такой вариант сделает работу из ТСД более универсальной (можно выгружать в любой товарный документ) и не нужно делать для каждого документа дополнительную форму.

Позже отпишусь, чем все закончилось.


Signature
1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.20.01)
обычные формы.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 11:35
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!