Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 16:32

Процедура НаименованиеПриИзменении(Элемент)

Автор saha85, 24 июн 2015, 19:06

0 Пользователей и 1 гость просматривают эту тему.

saha85

Есть "СправочникПациентов" созданы "реквизиты" Фамилия,Имя,Отчества. и общий реквизит "Наименование"
Вот хочу чтобы когда провисают Ф.И.О они делились на Фамилия,Имя,Отчества.

Процедура НаименованиеПриИзменении(Элемент)
   Наименование = СокрЛП(Наименование);   
   Пока Не Найти(Наименование, "  ") = 0 Цикл
      Наименование = СтрЗаменить(Наименование, "  ", " ");
   КонецЦикла;

   ФИО = Наименование;
   
   Если ПустаяСтрока(ЭтаФорма.Фамилия) Или ЭтаФорма.ЭтоНовый() Тогда
      МассивФИО = ОбщегоНазначения.ПолучитьМассивФИО(ФИО);
      ЭтаФорма.Фамилия  = МассивФИО[0];
      ЭтаФорма.Имя      = МассивФИО[1];
      ЭтаФорма.Отчество = МассивФИО[2];      
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура НаименованиеПриИзменении1(Элемент)
   // Вставить содержимое обработчика.<Что тут указать
КонецПроцедуры

Выдает ошибку:
{Справочник.СправочникПациентов.Форма.ФормаЭлемента.Форма(10,15)}: Переменная не определена (ОбщегоНазначения)
      МассивФИО = <<?>>ОбщегоНазначения.ПолучитьМассивФИО(ФИО); (Проверка: Сервер)
{Справочник.СправочникПациентов.Форма.ФормаЭлемента.Форма(10,15)}: Переменная не определена (ОбщегоНазначения)
      МассивФИО = <<?>>ОбщегоНазначения.ПолучитьМассивФИО(ФИО); (Проверка: Мобильное приложение-сервер)

Версия 1с 8.3

cska-fanat-kz

Код откуда-то передрали, теперь надо ссылку на общий модуль убрать.
В первоисточнике идете в общий модуль ОбщегоНазначения и находите метод ПолучитьМассивФИО().
Копируете его или сюда же в модуль формы или в такой же общий модуль только уже у себя в конфиге.
После этого соответственно корректируете вызов этого метода.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

saha85

Цитата: cska-fanat-kz от 25 июн 2015, 06:44
Код откуда-то передрали, теперь надо ссылку на общий модуль убрать.
В первоисточнике идете в общий модуль ОбщегоНазначения и находите метод ПолучитьМассивФИО().
Копируете его или сюда же в модуль формы или в такой же общий модуль только уже у себя в конфиге.
После этого соответственно корректируете вызов этого метода.
Не понел Если можно то намоем процидере привести пример

vitasw

Навашем процидере сложно привести пример

cska-fanat-kz

потому что мы не знаем:
а. откуда передрали
б. у себя будете в общем модуле размещать или прямо тут в модуле формы

да и задача на самом деле....
блин, ну должны же быть хоть какие-то примитивные вещи, для решения которых надо просто чуток пошевелить мозгами!
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

saha85

Цитата: cska-fanat-kz от 25 июн 2015, 09:21
надо просто чуток пошевелить мозгами!
Блин хорошо когда тебе обучали а я сам обучаюсь 1с как говорят инет и книги в помаш Спасибо.
Вот Скрины

Конструкторе:

Внешний вид:

cska-fanat-kz

а. почти прослезился. никто особо не обучал. те же книги и инет (ща опять шапками закидают за якобы самолюбование :trhregerhg: )
б. скрины форм - нафиг не нужны. дело в коде.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

saha85


cska-fanat-kz

МассивФИО = ОбщегоНазначения.ПолучитьМассивФИО(ФИО);

в вашей конфиге есть общий модуль ОбщегоНазначения?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

saha85

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

// Функция раскладывает Наименование в массив из трех элементов
//
// Параметры
//  ФИО  - строка - наименование
//
// Возвращаемое значение:
//   Массив   - массив из трех элементов, Фамилия, Имя, Отчество
//
Функция ПолучитьМассивФИО(ФИО) Экспорт

   МассивФИО = Новый Массив;
   МассивФИО.Добавить("");
   МассивФИО.Добавить("");
   МассивФИО.Добавить("");
   
   МассивПодсток = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ФИО, " ");
   Для Индекс = 0 По МассивПодсток.ВГраница() Цикл
      Если Индекс < 3 Тогда
         МассивФИО[Индекс] = МассивПодсток[Индекс];
      Иначе
         МассивФИО[2] = МассивФИО[2] + " " + МассивПодсток[Индекс];
      КонецЕсли;
   КонецЦикла;

   Возврат МассивФИО;
   
КонецФункции // ПолучитьМассивФИО()

вот только понять бы где Переменная не определена (ОбщегоНазначения)
   МассивПодсток = <<?>>ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ФИО, " "); (Проверка: Сервер)

где нужно ПРИСВОИТЬ ПЕРЕМЕННУЮ КОТОРУЮ Я УКАЗАЛ В цитате
Добавлено: 25 июн 2015, 20:45


УРА-А-А-А-А-А-А-А-А-А-А-А
РАБОТАЕТ:zebzdr::zebzdr::zebzdr:
Проблема не было процедуры для тонкого клиента а в толстам клиенте работала а как оказывается 8.3 автоматом тонкий клиент

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск