• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

работа с нетиповым оборудованием

  • Автор темы xopek160183
  • Дата начала
X

xopek160183

Смысл в том, что изначально на территорию въезжает пустая машина. Ее прогоняют через весы и заносят в справочник транспорта, взвешивая. Потом, когда эта машина уже загрузилась, ее опять прогоняют через весы. Она может заехать утром, а выехать вечером. Поэтому данные о машине надо брать из справочника. Выбирая машину из справочника, сразу получаем вес тары(ранее взвешенное значение пустой машины). И в поле накладной "количество" заносится уже чистый вес груза с учетом данной тары.
В идеале, я хотел бы видеть диалог выбора такой же, как например выбор склада или фирмы.
Но в списке у меня отображается
<>
<>
<>
хотя данные в справочнике транспорта есть (как раз 3 шт. записи).
К примеру в поле выбора фирмы при нажатии на кнопке списка появляется список доступных названий, также в поле выбора склада
Странно!
А, понял. Открыт форму списка для справочника. В ней откуда-то взялся первый столбец без названия, а потом уже те, которые я назначал - код, марка, госномер и тара. Соответственно данные в первый столбец не заполяются и отбор выбор скорее всего идет именно по этому столбцу.
подскажите, как определить выбор например по стобцу марка или госномер
Идеальным вариантом было бы отображение в поле ввода после выбора сразу марки, номера и тары.
Где обрабатывается вот это заполнение данного поля при выборе?


Добавлено: Сделал еще одну форму списка, добавил поле наименование
Опять первый столбец пустой и без названия
С чем это едят? ;)
Поставил в справочнике основное представление в виде кода. Теперь список отбирается по коду. Но все же это не то!
 
T

TimeDontWait

Для выбора нужных значений:
Процедура Подбор()// определяеш ету процедуру на кнопке на форме документа
Конт = 0;
ОткрытьПодбор("Справочники.ТвойСправочник","НазваниеФормыСписка",Конт,1);
КонецПроцедуры
////////////////////
Процедура ОбработкаПодбора(ВыбрТрансп,КонтФормы)
Найден = 0;
ВыбратьСтроки ();
Пока ПолучитьСтроку () = 1 цикл
Если ТвойРеквизит= ВыбрТрансп тогда
Найден = 1;
КонецЕсли;
КонецЦикла;

Если Найден = 0 тогда
НоваяСтрока ();
ТвойРеквизит = ВыбрТрансп;
ТвойРеквизит2 =ТвойРеквизит .ТекущийЭлемент().НужныйРеквизит;
Иначе
Сообщить("уже в списке!");
...
КонецЕсли;
КонецПроцедуры
 
X

xopek160183

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

TimeDontWait

Вопрос 1:
Смотриш в свойствах етой кнопки на закладке "Формула" название процедуры и ищещь в модуле, если там нету значит ищещь в глобальном модуле и редактируеш
Вопрос 2:
В свойствах реквизита на закладке "дополнительно" убираеш галочку с "Быстрый выбор",
и только если ето реквизит , а не список значений.
 
X

xopek160183

Спасибо по поводу "Быстрого выбора"
А по поводу назначенной процедуры.
Я говорю не про обычное поле (естественно, что ее обрабатывает назначенная ему процедура), а про поле с типом "Справочник". Ведь его обрабатывает что-то предопределенное (ему ничего не назначено, а оно работает).

Кстати еще вопросик по поводу полей ввода. При создании справочника создается форма элемента. Так вот при вставке обычного поля ввода ему назначается идентификатор, а в форме элемента идентификаторы некоторых полей (создаются автоматически)- это уникальные идентификаторы полей справочника, причем они в свойствах не доступны для редактирования. При попытке любому другому полю присвоить значение уникального идентификатора справочника система ругается на его неверное значение. Можно ли вручную как-нить это сделать?

И еще сразу вопрос! Я нигде в документации и книжках не могу найти!
В форме документа, например, реализация внизу есть кнопки типа Записать, Провести и др.
На слоях формы этих кнопок вроде нет.
Нигде не могу найти описания процесса передачи данных в печатную форму, т.е. как происходит процесс формирования печатной формы.
Я хочу прикрутить внешнюю печатную форму, которой нет в стандартной комплектации и выводить данные через нее. Но я добавлял во первых новые справочники, а во вторых новые переменные. И эти данные мне надо печатать.
Можете либо в картце описать как это делается, либо подсказать, где это можно почерпнуть!
Спасибо!
 
P

puh14

Я говорю не про обычное поле (естественно, что ее обрабатывает назначенная ему процедура), а про поле с типом "Справочник". Ведь его обрабатывает что-то предопределенное (ему ничего не назначено, а оно работает).

Это функционал платформы - там ничего программировать не надоть.
Кстати еще вопросик по поводу полей ввода. При создании справочника создается форма элемента. Так вот при вставке обычного поля ввода ему назначается идентификатор, а в форме элемента идентификаторы некоторых полей (создаются автоматически)- это уникальные идентификаторы полей справочника, причем они в свойствах не доступны для редактирования. При попытке любому другому полю присвоить значение уникального идентификатора справочника система ругается на его неверное значение. Можно ли вручную как-нить это сделать?

Никак - иначе система не поймет к какому полю ты обращаешся. Обычно на форме выводят например Наименование (предопределено, менять низя) и поле ввода Наименование_

И еще сразу вопрос! Я нигде в документации и книжках не могу найти!
В форме документа, например, реализация внизу есть кнопки типа Записать, Провести и др.
На слоях формы этих кнопок вроде нет.
Нигде не могу найти описания процесса передачи данных в печатную форму, т.е. как происходит процесс формирования печатной формы.
Я хочу прикрутить внешнюю печатную форму, которой нет в стандартной комплектации и выводить данные через нее. Но я добавлял во первых новые справочники, а во вторых новые переменные. И эти данные мне надо печатать.
Можете либо в картце описать как это делается, либо подсказать, где это можно почерпну



а насчет кнопок - ты не прав. если они отображаются, то точно на одном из слоев есть.
 
X

xopek160183

Не совсем въехал по поводу печатных форм, но все еще впереди. Пойдем путем научного тыка.
Только появился вопрос.
конфа Торговля+Склад 9.2. Зарегистрирована внешняя печатная форма ТТН по форме 1-Т (собственно мне она и надо).
А в общих таблицах есть только отчетпозакрытиюмесяцы и ТОРГ12.
Ей богу, уже голова кипит. Не посчитайте за тупость, можно мне в двух словах последовательность действий для организации верного вывода в ТТН.
Кстати, при заполнении документа реализация (если в качестве печатной формы выбрана ТТН) при нажатии кнопки печать появляется дополнительная форма (окно ввода), в которой необходимо ввести водителя, транспорт и прочее. Но эти данные у меня уже есть в справочнике и хотелось бы, чтобы они заполнялись автоматически. Я не знаю где искать эту форму, чтобы отредактировать автоматическое заполнение.
Меня начинает клинить!
:) :please:
 
P

puh14

Кстати, при заполнении документа реализация (если в качестве печатной формы выбрана ТТН) при нажатии кнопки печать появляется дополнительная форма (окно ввода), в которой необходимо ввести водителя, транспорт и прочее. Но эти данные у меня уже есть в справочнике и хотелось бы, чтобы они заполнялись автоматически. Я не знаю где искать эту форму, чтобы отредактировать автоматическое заполнение.


Ну ты же сам сказал - внешня печатная форма. Лежит эта обработочка в каталоге базы, папка Extforms\prnform\

открываешь её в конфигураторе, ищешь процедуру приоткрытии и правишь как тебе надо!
 
V

vbs

Кстати, при заполнении документа реализация (если в качестве печатной формы выбрана ТТН) при нажатии кнопки печать появляется дополнительная форма (окно ввода), в которой необходимо ввести водителя, транспорт и прочее. Но эти данные у меня уже есть в справочнике и хотелось бы, чтобы они заполнялись автоматически. Я не знаю где искать эту форму, чтобы отредактировать автоматическое заполнение.
В форме ТТН обеспечить вывод панели инструментов и использовать автосохранение
 
X

xopek160183

Правильно ли я понимаю?
Открываю внешний отчет. В диалоге есть поля ввода Водитель, АмМарка, АМГосНомер и другие. Но как будут заполняться другие, меня пока не интересует.
Открываю модуль и в процедуре
Процедура ПриОткрытии()
Если ПустоеЗначение(Форма.Параметр)=1 Тогда
Предупреждение ("....",60);
Статусвозврата(0);
Возврат;
КонецЕсли;

Конт=Форма.Параметр.Получить("Контекст");
СчитатьДокумент(Конт);
Форма.Заказчик.ВыборГруппы(0);
КонецПроцедуры

где процедура СчитатьДокумент(Конт) производит присваивания типа Фирма=Конт.Фирма; и другие, а также
Конт.ВыгрузитьТабличнуюЧасть(табличнаячасть);
Количествострок=ТабличнаяЧасть.КоличествоСтрок();

добавить процедурку, например ЗаполнитьФорму(Конт), в которой будет выполняться присваивание
Водитель=Конт.Транспорт.Водитель;
АмМарка=Конт.Транспорт.Марка;
АМГосНомер=Конт.Транспорт.ГосНомер;

Где Транспорт - это поле документа, которое заполняется выбором из справочника

И при этом при запуске печати ТТН при появлении формы заполнения данных поля Водитель, АмМарка и АмГосномер должны будут заполняться выбранными значениями из справочника.

А потом уже процедурой при печати эти данные будут передаваться в печатную форму.
Правильно я понимаю?
Заранее спасибо!
 
E

evgenyatam

в общем да. только тут могут быть тонкости.
 
P

puh14

Все правильно - типы только проверь. А то например реквизит водитель справочника транспорт у тебя элемент другого справочника а в обработке ттн - строка. Тут надо присваивать полю водитель в ттн конт.транспорт.водитель.наименование.
 
X

xopek160183

Уже разные варианты перепробовал, ничего не выходит. Тема такая.
В форме документа создан список Параметры
и есть ОткрытьФорму("Отчет",Параметры, глКаталогПечФорм+ТаблицаПечФорм.ПолучитьЗначение(номерТекущейФормы,"Файл"))

Я для передачи моих данных добавляю в список перед вызовом формы следующее:
Параметры.ДобавитьЗначение(Траспорт.Марка,"АмМарка");
Параметры.ДобавитьЗначение(Траспорт.ГосНомер,"АмГосНоме");
Параметры.ДобавитьЗначение(Траспорт.Водитель,"Водитель");
Параметры.ДобавитьЗначение(Траспорт.Тара,"Тара");

Изначально в справочнике эти поля - текстовые.
А в обработке в процедуре ЗаполнитьФорму(контекст):
Водитель=Конт.Водитель;
АмМарка=Конт.АММарка
АМГосНомер=Конт.АмГосНомер;

В процедуре обработки ПриОткрытии() после строки Конт=Форма.Параметр.Получить("Контектст")
вызываю ЗаполнитьФорму(Конт); и следом для проверки и остановки
Предупреждение (Водитель+АмМарка+АмГосномер,60);

Самое интересное, что значения не только не присваиваются, но также не выводится предупреждение, ни пустое, ни заполненное. Хотя если выдать предупреждение перед вызовом данной формы, т.е.
перед ОткрытьФорму(....), оно выводится. Такое ощущение, что не выполняется процедура ПриОткрытии()
В чем может быть дело? Уже перепробовал разные варианты - никак!!!!!
:) :):RTFM:

Добавлено: В книге Михайлова С_Е Программирование как 2х2 есть такое описание передачи набора значений.
Если из одной формы в другую требуется передать набор значений, то можно
использовать список значений:
// Открывающая форма
Процедура Сформировать()
список = СоздатьОбъект("СписокЗначений");
список.ДобавитьЗначение(зн1);
список.ДобавитьЗначение(зн2);
список.ДобавитьЗначение(знЗ);
список.ДобавитьЗначение(3HN);
ОткрытьФорму("Отчет.ОченьНужный", список);
КонецПроцедуры
// Открываемая форма
Процедура ПриОткрытии()
список = форма.Параметр;
Если ПустоеЗначение(список) = 1 Тогда
Возврат;
конецЕсли;
Если ТипЗначенияСтр(список) = "СписокЗначений" Тогда
nl = список.ПолучитьЗначение(1);
п2 = список.ПолучитьЗначение(2);
пЗ = список.ПолучитьЗначение(3);
nN = список.ПолучитьЗначение(N);
иначе
КонецЕсли;
КонецПроцедуры

Я сделал вроде по аналогии, но нифига не получается! Складывается впечатление, что процедура "ПриОткрытии()" не выполняется!
 
V

vbs

Конт=Форма.Параметр.Получить("Контектст")
Ты передаешь список значений, а не контекст. Так что нужные данные надо получать, перебирая список :
Марка = список.ПолучитьЗначение(1);
ГосНомер = список.ПолучитьЗначение(2); и т.д.
 
P

puh14

А в обработке в процедуре ЗаполнитьФорму(конт):// Контекст не пользуй - будет искать в глобальнике
Водитель=Конт.Транспорт.Водитель;
АмМарка=Конт.Транспорт.АММарка
АМГосНомер=Конт.Транспорт.АмГосНомер;


вот этой строчкой Конт=Форма.Параметр.Получить("Контектст")
ты вытаскиваешь обращение непосредственно к своему документу. А как ты писал ранее, чтобы докопаться до нужных данных надо писать
Траспорт.Марка
Траспорт.ГосНомер
Траспорт.Водитель

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

Добавлено:
Цитата(puh14 @ 15:01:2010 - 01:31) link removedКонт=Форма.Параметр.Получить("Контектст")
Ты передаешь список значений, а не контекст. Так что нужные данные надо получать, перебирая список :
Марка = список.ПолучитьЗначение(1);
ГосНомер = список.ПолучитьЗначение(2); и т.д.


классно форум глючит. Да передает он контекст стопудово - там гора всякого добра, у которого список с эверест. Более чем уверен, что строчка Параметры.ДобавитьЗначение(ТекущийДокумент(),"Контекст") в наличии имеется. Так что добавлять в параметры разворот транспорта смысла нету.
 
V

vitfil

Параметры.ДобавитьЗначение(ТекущийДокумент(),"Контекст") в наличии имеется
А что будет передано, если документ еще не записан?
Как думаете, с какого перепугу в ТиС есть глобальная глВернутьКонтекст или глПолучитьКонтекст (точное название не помню уже)?
 
X

xopek160183

На сколько я понял, мне не надо заносить развертку транспорта в "Параметры", а процедуре ЗаполнитьФорму()
контекст не использовать, и сделать присваивание типа
Водитель=Конт.Транспорт.Водитель;
......
АМГосНомер=Конт.Транспорт.ГосНомер;

Но форма заполнения данных по прежнему не реагирует на эти изменения.
Я в процедуре ПриОткрытии();
поставил строку Предупреждение(Водитель+АММарка+АмГосНомер,60);
По идее дойдя до этой строки должно вывестись предупреждение, но --- пусто. Ничего не выводится.
Такое ощущение, что данная процедура не выполняется.
Кто с таким сталкивался? Почему это может быть?
 
P

puh14

А что будет передано, если документ еще не записан?
Как думаете, с какого перепугу в ТиС есть глобальная глВернутьКонтекст или глПолучитьКонтекст (точное название не помню уже)?

А для этих целей кнопка печати ТТН пока документ не записан неактивна :)

Насчет слова "контекст"- Стараюсь это дело использовать только в глобальных процедурах (ибо застолблено системой), в остальных что-то другое.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!