Имя: Пароль:
1C
1С v8
Условие по наличию аналога
0 GruNow
 
21.11.11
13:28
Здравствуйте, 1с 8.2, альфа-авто.
Нужно добавить колонку с галочкой, если аналог есть.
Подскажите условие по наличию аналога.

Чтобы было что то типа
Если ЭлементыФормы.СписокНоменклатура.Колонки.ПризнакАналога.Видимость Тогда
       ОформлениеСтроки.Ячейки.ПризнакАналога.ОтображатьФлажок = Истина;
       Если //"здесь уловие - если есть аналог"//
       ОформлениеСтроки.Ячейки.ПризнакАналога.Флажок = истина;
       Иначе
       ОформлениеСтроки.Ячейки.ПризнакАналога.Флажок = ложь;
КонецЕсли;
1 PVV65
 
21.11.11
13:38
Как то так:

Если ЭлементыФормы.СписокНоменклатура.Колонки.ПризнакАналога.Видимость Тогда
       ОформлениеСтроки.Ячейки.ПризнакАналога.ОтображатьФлажок = Истина;
   Запрос=Новый Запрос;
   Запрос.Текст="ВЫБРАТЬ ПЕРВЫЕ 1
                |    ГруппыАналогов.ИдентификаторГруппы КАК ИдентификаторГруппы
                |ИЗ
                |    РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
                |ГДЕ
                |    ГруппыАналогов.Артикул=&Артикул";
   Запрос.УстановитьПараметр("Артикул",СписокНоменклатура.ТекущаяСтрока.Артикул);
   Выборка=Запрос.Выполнить().Выбрать();

   Если Выборка.Следующий() Тогда
       ОформлениеСтроки.Ячейки.ПризнакАналога.Флажок = истина;
       Иначе
               ОформлениеСтроки.Ячейки.ПризнакАналога.Флажок = ложь;
   КонецЕсли;
КонецЕсли;
2 GruNow
 
21.11.11
14:04
(1)
Выдет такую ошибку
[CODE]{Обработка.АРМПродавец.Форма.ИнтерфейсПродавец(2261)}: Поле объекта не обнаружено (ТекущаяСтрока)
       Запрос.УстановитьПараметр(/"Артикул/",СписокНоменклатура.ТекущаяСтрока.Артикул); [/CODE]
Может другую ссылку на артикул?

И еще вопрос, получение данных в 1с всегда через Запрос.текст делается? И как мне понять форму запроса, чтобы самому состовлять?
3 PVV65
 
21.11.11
14:17
Если этот текст в процедуре ПриВыводеСтроки, тогда вместо "СписокНоменклатура.ТекущаяСтрока.Артикул" напиши "ДанныеСтроки.Артикул".
А по поводу запросов - читай книжки. А как научишься по другому?
4 GruNow
 
21.11.11
14:34
(3)
Текст при выводе строки, если быть точным /"СписокНоменклатураПриВыводеСтроки/".
Заменил на ДанныеСтроки, все одно ругается, только теперь говорит что

[CODE]{Обработка.АРМПродавец.Форма.ИнтерфейсПродавец(2261)}: Поле объекта не обнаружено (Артикул)
       Запрос.УстановитьПараметр(/"Артикул/",ДанныеСтроки.Артикул);[/CODE]


Книжки читаю, просто за 1с очень недавно взялся, книга у меня запутанная, не все там понятно на первых парах.

Тут, как я понял, я выполняю запрос, чтобы сохранить значение в /"Артикул/", затем сравниваем артикул из регистра с артикулом номенклатуры, если они совпадают, то флажек есть, иначе - пусто.
Так вот, тут не получить то, с чем сравнивать артикул из запроса, то есть артикул определенной строки. Правильный ход мысли?
5 GruNow
 
21.11.11
15:18
PVV65, помогите разобраться, почему не может обнаружить поле объекта?
Гуглил, не нашел того что может идти после точки в /"ДанныеСтроки./"
Как быть?
6 GruNow
 
21.11.11
15:22
ОформлениеСтроки.ячейки.артикул.текст вместо ДанныеСтроки.Артикул, все равно не работет(
7 PVV65
 
21.11.11
15:49
Напиши ДанныеСтроки.Ссылка.Артикул.
А в условии проверяется - существуют ли записи в РС ГруппыАналогов по данному артикулу?
8 GruNow
 
21.11.11
16:02
(7)Спасибо!!! Теперь все работает без ошибок. Интересно, почему 1с не умеет предлагать варианты когда точку ставишь? Вернее умеет, но не всегда когда хочется, но это уже понты)
Осталось уяснить как скажется на производительности.
Но суть не в этом, а главное что я сталь чуть больше понимать 1с, благодаря хорошим, отзывчивым людям, спасибо!
Закон Брукера: Даже маленькая практика стоит большой теории.