Имя: Пароль:
1C
1С v8
Установка флажков
,
0 KoalaJustKoala
 
05.04.21
11:50
В общем ситуация такая:
http://pics.rsh.ru/img/_620c1kcg.png
Имеется некая таблица, внутри которой надо ставить флажки при истине, но как бы программно это не пробовал не получается
Грешу на то, что таблица тесно плетётся с данными и вся шляпа из-за этого :(
1 Cthulhu
 
05.04.21
12:04
шляпа не из-за "этого" а из-за того. что неправильно "грешишь". но ничо, "греши" дальше.
2 KoalaJustKoala
 
05.04.21
12:11
(1) Понимаю, но пока не знаю куда смотреть и шо искать :(
3 Fish
 
05.04.21
12:39
(2) Для начала неплохо бы выложить сюда код.
4 Chameleon1980
 
05.04.21
12:43
(3) и запомнить, что всегда нужно показывать что делаешь и что не
Получается
5 KoalaJustKoala
 
05.04.21
12:49
Я опущу запрос, он слишком здоровый, вот здесь основная часть
ВыборкаПоСвойству = ЗапросПоКонтрагентамПрайсов.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Свойство");
    //ВыборкаПоКонтрагентам = ЗапросПоКонтрагентамПрайсов.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Контрагент");
    //НачатьТранзакцию();
    Пока ВыборкаПоСвойству.Следующий()Цикл
        ВыборкаПоКонтрагентам = ВыборкаПоСвойству.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Контрагент");
    Пока ВыборкаПоКонтрагентам.Следующий()Цикл
        ВыборкаПоABCКатегориям = ВыборкаПоКонтрагентам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ABCКлассификация");
        Пока ВыборкаПоABCКатегориям.Следующий() Цикл
            ДокументЗаказ = Документы.ЗаказПоставщику.СоздатьДокумент();
            ДокументЗаказ.Дата = ТекущаяДата();
            ДокументЗаказ.Контрагент = ВыборкаПоКонтрагентам.Контрагент;
            ДокументЗаказ.Склад=ОсновнойСклад;
            ДокументЗаказ.Валюта=Валюта;
            
            
            // <ESA> <20.02.2012> <--
            ДокументЗаказ.Ответственный     = ПараметрыСеанса.ТекущийПользователь;
            // <ESA> <20.02.2012> -->
            
            ВыборкаПоНоменклатуре =  ВыборкаПоABCКатегориям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Номенклатура");

            Пока ВыборкаПоНоменклатуре.Следующий()Цикл
                //Список = Новый СписокЗначений;
                ////ДатаКон = ДобавитьМесяц(ТекущаяДата(), 8);
                //ДатаКон = ТекущаяДата();
                //Пока ДатаКон <= ДобавитьМесяц(ТекущаяДата(), 8) Цикл
                //    Список.Вставить(ДатаКон);
                //    ДатаКон = НАчалоДня(ДатаКон + 1*3600*24);
                //КонецЦикла;
                
                ВыборкаПоДетали = ВыборкаПоНоменклатуре.Выбрать();
                Пока ВыборкаПоДетали.Следующий() Цикл
                    ПараметрыОтбора = Новый Структура;
                    ПараметрыОтбора.Вставить("Номенклатура", ВыборкаПоДетали.Номенклатура);
                    НайденныеСтроки = ДокументЗаказ.Товары.НайтиСтроки(ПараметрыОтбора);
                    
                    Если НайденныеСтроки.Количество() > 0 Тогда                                
                        Продолжить;
                    КонецЕсли;
                    
                    НоваяСтрока = ДокументЗаказ.Товары.Добавить();
                    НоваяСтрока.Номенклатура = ВыборкаПоДетали.Номенклатура;
                    НоваяСтрока.Наименование = ВыборкаПоДетали.НоменклатураВпрайсе;
                    НоваяСтрока.ЕдиницаИзмерения = НоваяСтрока.Номенклатура.ЕдиницаХраненияОстатков;
                    НоваяСтрока.Количество = ВыборкаПоДетали.Потребность;
                    НоваяСтрока.КоличествоPC = ВыборкаПоДетали.Потребность;
                    НоваяСтрока.Цена = ВыборкаПоДетали.Цена;
                    НоваяСтрока.ЦенаСоСкидкой = ВыборкаПоДетали.Цена;
                    НоваяСтрока.Коэффициент = 1;
                    НоваяСтрока.СтавкаНДС = НоваяСтрока.Номенклатура.СтавкаНДС;
                    НоваяСтрока.ABCКлассификация = ВыборкаПоДетали.ABCКлассификация;
                    НоваяСтрока.XYZКлассификация = ВыборкаПоДетали.XYZКлассификация;
                    НоваяСтрока.Производитель = ВыборкаПоДетали.Производитель;
                    НоваяСтрока.ПроизводительНаименование = ВыборкаПоДетали.Производитель;
                    НоваяСтрока.СрокГодности = ВыборкаПоДетали.СрокГодности;
                    НоваяСтрока.СрокГодностиНаименование = ВыборкаПоДетали.СрокГодности;
                    
                    //Григорий
                    Если ВыборкаПоДетали.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Доп.скидка от мед.представителя") Тогда
                        НоваяСтрока.ДопСкидкаОтМедПредов = Истина;
                    Иначе
                        НоваяСтрока.ДопСкидкаОтМедПредов = Ложь;
                    КонецЕсли;
                    //Григорий                              
                    
                    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(НоваяСтрока, ДокументЗаказ);
                    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(НоваяСтрока, ДокументЗаказ);
                    
                    Если ВыборкаПоДетали.ПредельнаяЦена <> 0 И ВыборкаПоДетали.Цена > ВыборкаПоДетали.ПредельнаяЦена Тогда
                        Сообщить("Для номенклатуры "+ВыборкаПоДетали.Номенклатура+" цена поставщика "+сокрлп(ВыборкаПоКонтрагентам.Контрагент)+" превышает предельную!", СтатусСообщения.Важное);
                    КонецЕсли;
                КонецЦикла;
            КонецЦикла;
            
            УстановитьОсновногоПроизводителя(ДокументЗаказ.Товары);
            ДокументЗаказ.Записать(РежимЗаписиДокумента.Запись);
            
        КонецЦикла;
    КонецЦикла;
6 KoalaJustKoala
 
05.04.21
12:51
между коментами Григорий
Можно заметить небольшое условие которое, записывает есть ли свойство для этого препарата или нет
7 KoalaJustKoala
 
05.04.21
12:52
При включенных данных строки прописывал вот такое
ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.ОтображатьТекст = Ложь;
    ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.ОтображатьФлажок = Истина;
    ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.Флажок = ДанныеСтроки.ДопСкидкаОтМедПредов;
Не помогло
8 KoalaJustKoala
 
05.04.21
12:53
Дальше юзал соответсвия в выводе строки, но увы код не сохранился
9 Fish
 
05.04.21
12:57
(6) В отладчике смотрел, что условие выполняется?
10 KoalaJustKoala
 
05.04.21
13:07
(9) Да, самое странное что выполняется, проверял еще через запрос, вообще вписывается ли истина или ложь
Все записывается
11 KoalaJustKoala
 
05.04.21
13:08
Он вот просто не выводит ни флажок, ни да, ни нет
Просто пустые ячейки
12 KoalaJustKoala
 
05.04.21
13:10
Я вот думаю, если он записывался в документ
Не может быть такой момент, что он присваивал именно да или нет?
13 3achem
 
05.04.21
13:30
(11) Тип какой у НоваяСтрока.ДопСкидкаОтМедПредов?
14 KoalaJustKoala
 
05.04.21
13:43
(13) булевое
15 3achem
 
05.04.21
14:06
(14) Убери условие, поставь всем строкам Истина
16 KoalaJustKoala
 
05.04.21
14:19
(15) Процедура ЗаказыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.ОтображатьФлажок = Истина;
        
    //Если ДопСкидкаМедПредов[ДанныеСтроки] = Неопределено Тогда
      ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.Флажок = Истина;
    //Иначе
     ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.Флажок = Истина;
    //КонецЕсли;
КонецПроцедуры
Закоментил, флажки вылетели, хм, значит уже с утра завтра буду копаться в условии и проверять условие в "большой" процедуре
17 Cthulhu
 
05.04.21
14:42
18 Cthulhu
 
05.04.21
14:42
19 KoalaJustKoala
 
08.04.21
08:41
Такс, немного полежал с ОРВИ, вот пришел в себя и делюсь тем, как у меня заработало:

Процедура ЗаказыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.ОтображатьТекст = Ложь;
    ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.ОтображатьФлажок = Истина;
    ОформлениеСтроки.Ячейки.ДопСкидкаОтМедПредов.Флажок = ДанныеСтроки.ДопСкидкаОтМедПредов;
КонецПроцедуры

Все оказалось проще, чем представлялось...
20 KoalaJustKoala
 
08.04.21
08:42
Хоть, раньше я представлял подобный конструкт, но там была ошибка в самом условии

Если ВыборкаПоДетали.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Доп.скидка от мед.представителя") Тогда
        ДокументЗаказ.ДопСкидкаОтМедПредов = ИСТИНА;
        НоваяСтрока.ДопСкидкаОтМедПредов = ИСТИНА;
                        
    Иначе
        ДокументЗаказ.ДопСкидкаОтМедПредов = ЛОЖЬ;
        НоваяСтрока.ДопСкидкаОтМедПредов = ЛОЖЬ;
КонецЕсли;

В данном месте, привязка шла, не к документу, а только к товару
Из-за этого и не получалось что-либо сделать
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.