Имя: Пароль:
1C
1С v8
Каждое поле в табличной части
0 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
1 vasiliyegorov
 
23.05.18
06:24
Что выбирать СтрокаТЧ.Дисциплины.Код это нумерация?
2 vasiliyegorov
 
23.05.18
06:52
Первый скриншот не открывается потому что вы должны (-) дефис тоже захватить с ссылкой, сайт почему-то режит ссылки
3 Мимохожий Однако
 
23.05.18
07:00
(2) Используй другие сайты для картинок. На форуме есть примеры удачного размещения картинок. Полезно использовать Ctrl-F1 для изучения методов и свойств используемых объектов.
4 vasiliyegorov
 
23.05.18
07:01
(3) Просто первую ссылку надо вставить в своё поле скопировать её с дефисом
5 Мимохожий Однако
 
23.05.18
07:04
(4) Я не собираюсь смотреть кривые ссылки. Не хочешь учиться- твоя проблема.
6 vasiliyegorov
 
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)+"].Семестр";
        Сообщение.УстановитьДанные(Объект);
        Сообщение.Сообщить();
    Иначе
        СеместрИКурс.Курс=ПолученКурс;
    КонецЕсли;
КонецПроцедуры
9 vasiliyegorov
 
23.05.18
07:16
Вот мой код рабочий, теперь осталось только прикрепить чтобы по нумерации поля выдавал сообщение мол в 3 поле у вас не заполнено, как реализовать еще не знаю, мне бы хотя бы структуру, а дальше я сам бы копался
&НаСервере
Процедура РасчетНаСервере()
    Для Каждого СтрокаТЧ из Объект.Дисциплины Цикл
        
    Если СтрокаТЧ.Семестр = Перечисления.Семестры.ПервыйСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ВторойСеместр Тогда
        СтрокаТЧ.Курс   = Перечисления.Курсы.ПервыйКурс
    ИначеЕсли СтрокаТЧ.Семестр = Перечисления.Семестры.ТретийСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ЧетвертыйСеместр Тогда
        СтрокаТЧ.Курс   = Перечисления.Курсы.ВторойКурс
    ИначеЕсли СтрокаТЧ.Семестр = Перечисления.Семестры.ПятыйСеместр ИЛИ СтрокаТЧ.Семестр =  Перечисления.Семестры.ШестойСеместр Тогда
         СтрокаТЧ.Курс  = Перечисления.Курсы.ТретийКурс
    ИначеЕсли СтрокаТЧ.Семестр =  Перечисления.Семестры.СедьмойСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ВосьмойСеместр Тогда
         СтрокаТЧ.Курс  = Перечисления.Курсы.ЧетвертыйКурс
    ИначеЕсли СтрокаТЧ.Семестр = Перечисления.Семестры.ДевятыйСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ДесятыйСеместр Тогда
        СтрокаТЧ.Курс  = Перечисления.Курсы.ПятыйКурс
    ИначеЕсли СтрокаТЧ.Семестр =  Перечисления.Семестры.ОдиннадцатыйСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ДвенадцатыйСеместр Тогда
        СтрокаТЧ.Курс  = Перечисления.Курсы.ШестойКурс
    ИначеЕсли СтрокаТЧ.Семестр =  Перечисления.Семестры.ТринадцатыйСеместр ИЛИ СтрокаТЧ.Семестр = Перечисления.Семестры.ЧетырнадцатыйСеместр Тогда
        СтрокаТЧ.Курс  = Перечисления.Курсы.СедьмойКурс;
                    
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(СтрокаТЧ.Дисциплины) Тогда
        Сообщить("Поле дисциплины не заполнено");
    КонецЕсли;
        
        
        
КонецЦикла;




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

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

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

Заменить на

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

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

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

        
    КонецЕсли;
79 vasiliyegorov
 
23.05.18
11:49
(77) Прям вселили мотивацию Алина)))
80 hhhh
 
23.05.18
12:02
(78) ну так сделай

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

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

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


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


    КонецЕсли;


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