Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Каждое поле в табличной части

Каждое поле в табличной части
Я
   vasiliyegorov
 
23.05.18 - 06:08
Привет дамы и господа! У меня поля - Дисциплины, в которых не заполнено(выбрано) что-либо из указанного, сообщения выходят на каждое незаполненное поле, мне нужно чтобы пользователю показывало в какой по нумерации поля Дисциплины  не заполнено, например:
Не заполнено в поле дисциплины - 1 или 6
Я новичок поэтому могу неправильно выражаться

вот скриншот https://drive.google.com/open?id=14i-h_MLwwyGul_BS-SP6yDUbB1coUDK-   ,

я хочу спросить у вас как мне вытащить этот номер в табличной части чтобы его потом куда-нибудь привязать в условие

Вот мой проект   https://drive.google.com/open?id=1q2XIWnjtaRA3W5KjJ7o_WLpRzmJ4_AVb
 
 
   vasiliyegorov
 
1 - 23.05.18 - 06:24
Что выбирать СтрокаТЧ.Дисциплины.Код это нумерация?
   vasiliyegorov
 
2 - 23.05.18 - 06:52
Первый скриншот не открывается потому что вы должны (-) дефис тоже захватить с ссылкой, сайт почему-то режит ссылки
   МимохожийОднако
 
3 - 23.05.18 - 07:00
(2) Используй другие сайты для картинок. На форуме есть примеры удачного размещения картинок. Полезно использовать Ctrl-F1 для изучения методов и свойств используемых объектов.
   vasiliyegorov
 
4 - 23.05.18 - 07:01
(3) Просто первую ссылку надо вставить в своё поле скопировать её с дефисом
   МимохожийОднако
 
5 - 23.05.18 - 07:04
(4) Я не собираюсь смотреть кривые ссылки. Не хочешь учиться- твоя проблема.
   vasiliyegorov
 
6 - 23.05.18 - 07:08
(5) Я хочу учиться, в синтаксис помощнике не нашел ответа
   фросия
 
7 - 23.05.18 - 07:12
(4) т.е. тебе должны помочь, но тебе лень даже ссылку ровную запостить?
   ПегийЛунь
 
8 - 23.05.18 - 07:14
E-mail скрыт... Ну, ладно.
Сразу пишу код снизу сделан не "кошерно", но смотри суть:
&НаСервере
Функция ПолучитьКурс(Семестр)
    // Вставить содержимое обработчика.

    КурсСеместра = Неопределено;
    Если (Семестр = Перечисления.Семестры.Семестр1) ИЛИ (Семестр =Перечисления.Семестры.Семестр2) Тогда
        КурсСеместра = Перечисления.Курсы.Курс1
    ИначеЕсли (Семестр = Перечисления.Семестры.Семестр3) ИЛИ (Семестр =Перечисления.Семестры.Семестр4) Тогда
        КурсСеместра = Перечисления.Курсы.Курс2
    ИначеЕсли (Семестр = Перечисления.Семестры.Семестр5) ИЛИ (Семестр =Перечисления.Семестры.Семестр6) Тогда
         КурсСеместра = Перечисления.Курсы.Курс3
    //ИначеЕсли (Семестр = Перечисления.Семестры.Семестр7) ИЛИ (Семестр =Перечисления.Семестры.Семестр8) Тогда

    //     КурсСеместра = Перечисления.Курсы.Курс4

    КонецЕсли;
Возврат КурсСеместра;
КонецФункции

&НаКлиенте
Процедура ДисциплиныСеместрПриИзменении(Элемент)
    СеместрИКурс=Элементы.Дисциплины.ТекущиеДанные;
    ПолученКурс=ПолучитьКурс(СеместрИКурс.Семестр);
    Если ПолученКурс=Неопределено Тогда
        Сообщение  = Новый СообщениеПользователю;
        Сообщение.Текст = "Не найдено соответствие курса и семестра.";
        Сообщение.Поле="Объект.Дисциплины["+(СеместрИКурс.НомерСтроки-1)+"].Семестр";
        Сообщение.УстановитьДанные(Объект);
        Сообщение.Сообщить();
    Иначе
        СеместрИКурс.Курс=ПолученКурс;
    КонецЕсли;
КонецПроцедуры
   vasiliyegorov
 
9 - 23.05.18 - 07:16
Вот мой код рабочий, теперь осталось только прикрепить чтобы по нумерации поля выдавал сообщение мол в 3 поле у вас не заполнено, как реализовать еще не знаю, мне бы хотя бы структуру, а дальше я сам бы копался
&НаСервере
Процедура РасчетНаСервере()
    Для Каждого СтрокаТЧ из Объект.Дисциплины Цикл
        
    Если СтрокаТЧ.Семестр = Перечисления.Семестры.ПервыйСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ВторойСеместр Тогда
        СтрокаТЧ.Курс   = Перечисления.Курсы.ПервыйКурс
    ИначеЕсли СтрокаТЧ.Семестр = Перечисления.Семестры.ТретийСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ЧетвертыйСеместр Тогда
        СтрокаТЧ.Курс   = Перечисления.Курсы.ВторойКурс
    ИначеЕсли СтрокаТЧ.Семестр = Перечисления.Семестры.ПятыйСеместр ИЛИ СтрокаТЧ.Семестр =  Перечисления.Семестры.ШестойСеместр Тогда
         СтрокаТЧ.Курс  = Перечисления.Курсы.ТретийКурс
    ИначеЕсли СтрокаТЧ.Семестр =  Перечисления.Семестры.СедьмойСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ВосьмойСеместр Тогда
         СтрокаТЧ.Курс  = Перечисления.Курсы.ЧетвертыйКурс
    ИначеЕсли СтрокаТЧ.Семестр = Перечисления.Семестры.ДевятыйСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ДесятыйСеместр Тогда
        СтрокаТЧ.Курс  = Перечисления.Курсы.ПятыйКурс
    ИначеЕсли СтрокаТЧ.Семестр =  Перечисления.Семестры.ОдиннадцатыйСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ДвенадцатыйСеместр Тогда
        СтрокаТЧ.Курс  = Перечисления.Курсы.ШестойКурс
    ИначеЕсли СтрокаТЧ.Семестр =  Перечисления.Семестры.ТринадцатыйСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ЧетырнадцатыйСеместр Тогда
        СтрокаТЧ.Курс  = Перечисления.Курсы.СедьмойКурс;
                    
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Дисциплины) Тогда
        Сообщить("Поле дисциплины не заполнено");
    КонецЕсли;
        
        
        
 КонецЦикла;
 
 
 
 
 КонецПроцедуры
&НаКлиенте
Процедура Расчет(Команда)
    РасчетНаСервере();
КонецПроцедуры
   vasiliyegorov
 
10 - 23.05.18 - 07:17
(7) фросия я поменял с mail На гугл диск, чтобы Mail не блокировал, теперь когда я закидываю сюда ссылку от гугла  дефисы и нижние подчеркивания если они в конце почему-то выделяются черным и портят ссылку
 
 Рекламное место пустует
   vasiliyegorov
 
11 - 23.05.18 - 07:18
(7) Я выше написал, что нужно выделить с дефисом (-) он в конце черный, а ссылка синяя почему-то у сайта такая политика
   фросия
 
12 - 23.05.18 - 07:23
добавь в сообщение номер строки
 в строке такой-то не заполнено поле такое-то
   catena
 
13 - 23.05.18 - 07:24
Шел третий день, отладчик так и не освоен.
   МимохожийОднако
 
14 - 23.05.18 - 07:26
(11) Использую ДРУГИЕ сайты для картинок.
   МимохожийОднако
 
15 - 23.05.18 - 07:26
*используй
   vasiliyegorov
 
16 - 23.05.18 - 07:28
(13) Освоен, я же выше написал СтрокаТЧ.Дисциплины.Код это оно или нет?
   МимохожийОднако
 
17 - 23.05.18 - 07:28
(6) Посмотри  для метода Сообщить и около него нужные параметры. Там есть ответ. "Ищи.. должон быть"© Дед
   МимохожийОднако
 
18 - 23.05.18 - 07:28
(16) Нет
   catena
 
19 - 23.05.18 - 07:33
(16)А оно меняется в зависимости от того, в какой строке эта дисциплина? А чему оно равно у незаполненной Дисциплины?
   igorPetrov
 
20 - 23.05.18 - 07:34
Он не хочет учится. Совсем. Тупит и опять попрошайничает готовый код. Так миста ему и напишет проект.
   vasiliyegorov
 
21 - 23.05.18 - 07:35
Можете посмотреть на скриншотах У меня документ - УчебныйПлан  ТабличнаяЧасть - Дисциплины и поле Дисциплины, получается Объект.Дисциплины.Дисциплины
   vasiliyegorov
 
22 - 23.05.18 - 07:36
(19) не очень понял вас
   фросия
 
23 - 23.05.18 - 07:41
(13)  отладчик это читерство
   vasiliyegorov
 
24 - 23.05.18 - 07:43
(23) Вот в моём коде, что я посмотрю отладчиком, чтобы понять как мне сделать это задание? Я знаю как им пользоваться
   craxx
 
25 - 23.05.18 - 07:49
(24) Дисциплина у тебя какого типа? или это слишком сложный вопрос?
   vasiliyegorov
 
26 - 23.05.18 - 07:51
(25) Дисциплины это название моей табличной части, и еще есть дисциплины это поле на скринах можно посмотреть
   vasiliyegorov
 
27 - 23.05.18 - 07:51
(25) Правильно же?
   фросия
 
28 - 23.05.18 - 07:53
(24) посмотрите все
   МимохожийОднако
 
29 - 23.05.18 - 07:55
(27) нет
   vasiliyegorov
 
30 - 23.05.18 - 07:55
Еще есть справочники - Дисциплины (28)
   vasiliyegorov
 
31 - 23.05.18 - 07:55
(29) А почему неправильно?
   МимохожийОднако
 
32 - 23.05.18 - 08:01
(31) Потому что не работает
   vasiliyegorov
 
33 - 23.05.18 - 08:26
(32) Я понял это, я не знаю как начать и из чего брать, потому что до этого не встречал это
 
 
   ПегийЛунь
 
34 - 23.05.18 - 08:34
Так. e-mail до сих пор не открыт. Сообщение в (8) НЕ прочитано.
Тогда перехожу к иным действиям.
Тебе нужно найти книжку:
"Радченко. Практическое пособие разработчика." Найти там страницу 849 и прочитать код написанной там процедуры.
P.S.: Терпи и учись. Тебе осталось совсем не много, чтобы переплюнуть в знаниях меня. Я тут самый "тупой" из участников.
   фросия
 
35 - 23.05.18 - 08:35
(33) посмотри отладчиком все свои переменные- что где хранится и получишь ответы на половину вопросов своих
   МимохожийОднако
 
36 - 23.05.18 - 08:37
(33) Начни с изучения документации. Как минимум тех методов и объектов, которые начал использовать. Оттуда и бери. Мы все решаем задачи, которые не встречали раньше. Это нормальное положение вещей. Но за тебя искать и кодировать никто не будет. Возможно, тебе лучше быть начальником. Там за тебя будут думать, искать, изучать.
..
Пока я вижу, что ты научился писать. Т.е. писатель. Но не читатель это точно.
   vasiliyegorov
 
37 - 23.05.18 - 08:37
(34) Topteraru@mail.ru у меня, но зачем тебе оно?:), я прочитал сообщение и посмотрел твой код, терплю и учусь :), сейчас посмотрю
   vasiliyegorov
 
38 - 23.05.18 - 08:58
(35) Проверил переменные и везде практически пишет:
Объект не является знанием объектного типа
   фросия
 
39 - 23.05.18 - 09:01
(38) непонятно
при этом программа работает?
   vasiliyegorov
 
40 - 23.05.18 - 09:02
Да
   vasiliyegorov
 
41 - 23.05.18 - 09:02
Посмотрите 2 ссылки выше и там с кодом и общий скрин (39)
   vasiliyegorov
 
42 - 23.05.18 - 09:04
Мне нужно найти свойство строки в которой номер по-моему, где его взять?
   фросия
 
43 - 23.05.18 - 09:07
Мне нужно найти свойство строки в которой номер по-моему, где его взять?

отладчик- посмотрите что у вас есть в тч дисциплины
   фросия
 
44 - 23.05.18 - 09:07
вопрос: какой у вас курс?
   vasiliyegorov
 
45 - 23.05.18 - 09:09
(44) на каком курсе учусь?
   vasiliyegorov
 
46 - 23.05.18 - 09:10
Я неправильно юзал отладчик, вот нашел СтрокаТЧ.НомерСтроки, теперь мне надо чтобы когда поле не было заполнено, он выдавал мне сообщение поле не заполнено и номер строки, Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Дисциплины) Тогда
        Сообщить("Поле дисциплины не заполнено");
        
    КонецЕсли;
 вот выдает сообщение, а номер тееперь как сделать не додумываю
   FIXXXL
 
47 - 23.05.18 - 09:11
(43) нет там НомерСтроки
а ТСу, что б не страдать, советую ПередЗаписью НаКлиенте обойти циклом ТЧ и сообщить где чего не хватает
не надо это делать НаСервере на каждый чих
пока документ не пытаются записать или даже провести незаполненные данные не важны
   FIXXXL
 
48 - 23.05.18 - 09:12
(46)
Сообщить("Поле дисциплины не заполнено в строке: "+СтрокаТЧ.НомерСтроки);
   FIXXXL
 
49 - 23.05.18 - 09:14
(47) сорри, ТЧ и ТЗ попутал :)
 
 Рекламное место пустует
   vasiliyegorov
 
50 - 23.05.18 - 09:15
Я сделал, Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Дисциплины) Тогда
        Сообщить("В строке номер: " + СтрокаТЧ.НомерСтроки + " Не заполнено поле: Дисциплина!");
        
    КонецЕсли;

Господи как это легко, я так по невнимательности пролетел, спасибо ребят за помощь, обожаю вас!
   vasiliyegorov
 
51 - 23.05.18 - 09:16
(49) Вот когда я реально додумал, я открываю форум и ты написал правильный вариант пхахахахахаххах, как говориться вовремя!
   МимохожийОднако
 
52 - 23.05.18 - 09:17
Стриптизы мысли...
   фросия
 
53 - 23.05.18 - 09:18
(51) вовремя- это значит спасибо не надо говорить?
   dezss
 
54 - 23.05.18 - 09:18
ТС в (8) тебе дали очень дельный совет.
Пиши не "Сообщить", а то, что написано в (8), т.е. используй СообщениеПользователю. И когда пользователь тыкнет мышкой на ошибку, ему сразу выделится нужное поле и он сможет его заполнить, а не будет искать вручную во всем документе.
   vasiliyegorov
 
55 - 23.05.18 - 09:25
(53) Так я тут, я же написал спасибо ребят за помощь, обожаю вас! К вам тоже относится :)
   vasiliyegorov
 
56 - 23.05.18 - 09:28
(54) Я как в (8) не стал писать потому что мне сказали строго как у меня делать и поэтому я и делал
   ПегийЛунь
 
57 - 23.05.18 - 09:29
Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Дисциплины) Тогда
        Сообщить("Поле дисциплины не заполнено");
 КонецЕсли;

Заменить на

Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Дисциплина) Тогда
            Сообщение  = Новый СообщениеПользователю;
            Сообщение.Текст = "Не заполнена дисциплина";
            Сообщение.Поле="Объект.Дисциплины["+(СтрокаТЧ.НомерСтроки-1)+"].Дисциплина";
            Сообщение.УстановитьДанные(Объект);
            Сообщение.Сообщить();
        КонецЕсли;
   igorPetrov
 
58 - 23.05.18 - 09:40
(56) балбес.
   vasiliyegorov
 
59 - 23.05.18 - 09:40
(57) спасибо большое, но мне надо мой вариант оставить, так сказали, наверное потому что еще зеленый, у меня другое задание, Если не записан семестр и вид испытаний(поля в табличной части), то тогда выводить предупреждение, что не записано поле дисциплины иначе выводить это предупреждение что не заполнен реквизит учебный год, что посоветуете абстрактно как начать правильно это делать
   vasiliyegorov
 
60 - 23.05.18 - 09:40
Вот что у меня получилось (57) 
    Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Семестр И СтрокаТЧ.ВидИспытаний) Тогда
        Предупреждение("Поле дисциплины не записано");
    ИначеЕсли НЕ ЗначениеЗаполнено(Документ.Реквизиты.Учебныйгод) Тогда
        Предупреждение("Не заполнен реквизит учебныйгод");
   vasiliyegorov
 
61 - 23.05.18 - 09:41
Я написал Документ.Реквизиты.УчебныйГод просто не знаю как с документа выпилить реквизит
   vasiliyegorov
 
62 - 23.05.18 - 09:41
Вот правильный вроде вариант, проверьте Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Семестр И СтрокаТЧ.ВидИспытаний) Тогда
        Предупреждение("Поле дисциплины не записано");
    ИначеЕсли НЕ ЗначениеЗаполнено(Документы.УчебныйПлан.УчебныйГод) Тогда
        Предупреждение("Не заполнен реквизит учебныйгод");
   фросия
 
63 - 23.05.18 - 09:43
(60) неправильно Если СваритьВОднойКастрюле(суп И компот) Тогда
хреновая хозяйка
   фросия
 
64 - 23.05.18 - 09:44
так какой курс у вас?
   vasiliyegorov
 
65 - 23.05.18 - 09:45
(63) Я учусь на первом курсе, значит это по отдельности надо сделать?
   vasiliyegorov
 
66 - 23.05.18 - 09:47
(63) Подскажите пожалуйста, как правильно разбить или что мне сделать?
   vasiliyegorov
 
67 - 23.05.18 - 09:48
(63) Кстати с начала работы на форуме, я заметил что у вас самый топовые примеры, они реально очень понятны, я их записываю себе в тетрадь :)
   hhhh
 
68 - 23.05.18 - 09:48
Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Семестр) И НЕ ЗначениеЗаполнено(СтрокаТЧ.ВидИспытаний) Тогда
   vasiliyegorov
 
69 - 23.05.18 - 09:50
(68) Сделал как вы сказали, вышли такие ошибки {Документ.УчебныйПлан.Форма.ФормаДокумента.Форма(67,3)}: Процедура или функция с указанным именем не определена (Предупреждение)
        <<?>>Предупреждение("Поле дисциплины не записано"); (Проверка: Сервер)
{Документ.УчебныйПлан.Форма.ФормаДокумента.Форма(69,3)}: Процедура или функция с указанным именем не определена (Предупреждение)
        <<?>>Предупреждение("Не заполнен реквизит учебныйгод"); (Проверка: Сервер)
   vasiliyegorov
 
70 - 23.05.18 - 09:58
Просто заменил предупреждение на сообщить и все заработало, но выдало ошибку: Поле Объекта не обнаружено, хотя Документ называется УчебныйПлан и в нем есть реквизит УчебныйГод с чем это может быть связано?
   vasiliyegorov
 
71 - 23.05.18 - 10:00
Вот работает, спасибо еще раз всем, может быть кому-нибудь пригодиться Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Семестр) И НЕ ЗначениеЗаполнено(СтрокаТЧ.ВидыИспытаний) Тогда
        Сообщить("Поле дисциплины не записано");
    ИначеЕсли НЕ ЗначениеЗаполнено(Объект.УчебныйГод) Тогда
        Сообщить("Не заполнен реквизит Учебный год");
   hhhh
 
72 - 23.05.18 - 10:22
(70) ну по факту документов Учебный план может быть миллионы в базе. Поэтому она просто не разобралась, какой из них. Ей нужно конкртно ткнуть, а не в общем.
   vasiliyegorov
 
73 - 23.05.18 - 11:12
У меня новое задание, правда я запутался
Получается если не заполнен семестр и вид испытаний, то тогда выводить сообщение что: не записана дисциплина, если она действительно не заполнена. Или же выводить сообщение такое же сообщение если не заполнен реквизит УчебныйГод в документе.
   vasiliyegorov
 
74 - 23.05.18 - 11:12
Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Семестр) И НЕ ЗначениеЗаполнено(СтрокаТЧ.ВидыИспытаний) Тогда
        Сообщить("Поле дисциплины не заполнено");
    ИначеЕсли НЕ ЗначениеЗаполнено(Объект.УчебныйГод) Тогда
        Сообщить("Поле дисциплины не заполнено");

Вот что я сделал, но у меня неправильно работает, запутался
   vasiliyegorov
 
75 - 23.05.18 - 11:19
Получается если семестр и вид испытания не заполнены выводить "Поле дисциплины не заполнено" если оно реально не записано и если реквизит УчебныйГод не заполнен тоже выводить "Поле дисциплины не заполнено"получается если оно реально не заполнено тоже я правильно понял? я просто запутался ппц
   hhhh
 
76 - 23.05.18 - 11:20
(74) а почему ты пишешь, что поле дисциплины? если на самом деле Семестр? Так прикольнее, что ли?
   фросия
 
77 - 23.05.18 - 11:25
(75) распутывайся.
   vasiliyegorov
 
78 - 23.05.18 - 11:49
(76) Я сделал, спасибо (77) , у меня 4 поля курс, семестр, дисциплины и виды испытаний, вот так заработало может быть кому-нибудь пригодиться

Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Семестр) И НЕ ЗначениеЗаполнено(СтрокаТЧ.ВидыИспытаний)И НЕ ЗначениеЗаполнено(СтрокаТЧ.Дисциплины) Тогда
        Сообщить("Поле дисциплины не заполнено");
    ИначеЕсли НЕ ЗначениеЗаполнено(Объект.УчебныйГод) Тогда
        Сообщить("Поле дисциплины не заполнено");

        
    КонецЕсли;
   vasiliyegorov
 
79 - 23.05.18 - 11:49
(77) Прям вселили мотивацию Алина)))
   hhhh
 
80 - 23.05.18 - 12:02
(78) ну так сделай
Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Семестр) Тогда
       Сообщить("Поле дисциплины ""Семестр"" не заполнено");
КонецЕсли;

Если НЕ ЗначениеЗаполнено(СтрокаТЧ.ВидыИспытаний) Тогда
      Сообщить("Поле дисциплины ""Виды испытаний"" не заполнено");
КонецЕсли;

Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Дисциплины) Тогда
        Сообщить("Поле дисциплины ""Дисциплины"" не заполнено");
КонецЕСли;


Если НЕ ЗначениеЗаполнено(Объект.УчебныйГод) Тогда
        Сообщить("Поле Учебный год не заполнено");


    КонецЕсли;


чего ты жмешься? Сильно экономный, буквы экономишь? или строчки?
   user-ok
 
81 - 23.05.18 - 14:13
(80) А сам? кавычки на Учебном годе зажал
Жадина :D


Список тем форума
Рекламное место пустует  Рекламное место пустует
Основная теорема систематики: Новые системы плодят новые проблемы.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует