Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
20 Окт 2018, 03:01
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Получение значения текущей ячейки  (Прочитано 343 раз)

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

Оффлайн FanFani

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-10
  • Сайт: 
  • Профессия: Программист 1С
Предприятие 8.2. Обычное приложение
Уже устал, 2 дня бьюсь над парой строчек кода.
Есть документ табличная часть которого состоит
НомерСтроки, СсылкаСправочникСотрудник, Булево1, Булево2, ..... Булево 20, Итого.
Идея в том чтобы при нажатии на галочку, определенно значение закрепленное за  "булево1-20" прибавлялось к Итогу, а при снятии уменьшалось.
Использую я процедуру ПриИзмененииФлажка(Элемент, Колонка). А она отрабатывает как при снятии галки так и при снятии.
Логично сделать проверка на значение = Истина, и вот тут проблема, я не могу получить значение ячейки.
Самый логичный вариант который я пробовал:

СтрокаТЧ = ЭлементыФормы.ТабличнаяЧасть.ТекущиеДанные;  // Этим мы получает строку ТЧ, где есть нужное нам значение. Явно указак СтрокаТЧ."ИмяКолонки" можно получить нужное мне значение, но у меня около 20 колонок, поэтому нужно что-то другое.
ИмяКол = ЭлементыФормы.ТабличнаяЧасть.ТекущаяКолонка.Имя;  //Так я получая имя нужной мне колонки
СтрокаТЧ.ИмяКол   // Не работает, "Поле Объекта не обнаружено".
Нужна помощь, каким образов получить значение ячейки что я выбрал. Может использовать что-то другое, а не ПриИзмененииФлажка



Оффлайн alex0402

  • *****
  • Сообщений: 1675
  • РЕПУТАЦИЯ: 296
  • КПД: 18%
  • Регистрация: 2010-09-10
  • Сайт: 
  • Профессия: Программист 1С
СтрокаТЧ.ИмяКол   // Не работает

СтрокаТЧ[ИмяКол]

СтрокаТЧ.ИмяКол - так будет работать, если колонка называется ИмяКол.
Спасибо за Сказать спасибо

Оффлайн LexaK

  • *****
  • Сообщений: 1454
  • РЕПУТАЦИЯ: 411
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
попробуйте, для вашей задачи такой вариант
при любом изменении строки, событие окончание редактирования, простой пересчет в цикле ваших булевых значений,
это только как пример, для более сложных задач - нужны доработки
Процедура ТабличнаяЧасть1ПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
СтрокаТЧ = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
Если СтрокаТЧ = Неопределено Тогда
Возврат;
КонецЕсли;

СтрокаТЧ.Итог = 0;
Для каждого лкПоле Из СтрокаТЧ Цикл
Если ТипЗнч(лкПоле) = Тип("Булево") Тогда
СтрокаТЧ.Итог = СтрокаТЧ.Итог + ?(лкПоле,1,0);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн Alex232

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-10
  • Сайт: 
  • Профессия: Бухгалтер
Здравствуйте, если у вас возникают серьёзные проблемы, то не лучше бы обратиться к специалисту? Так как в таком случае решение будет найдено гораздо быстрее, если возникают похожие проблемы, то,по моему мнению, лучше уж немного доплатить и не тратить уйму личного времени. Лично я постоянно сотрудничая с данным спецом https://www.prog-msk.ru/, пока что не подводил.

Оффлайн FanFani

  • *
  • Сообщений: 5
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2018-08-10
  • Сайт: 
  • Профессия: Программист 1С
LexaK, спасибо. Твой вариант подошел идеально. Я чуть доработал под конкретную задачу, смысла выкладывать не вижу.

Оффлайн AIFrame

  • *****
  • Сообщений: 1136
  • РЕПУТАЦИЯ: 139
  • КПД: 12%
  • Регистрация: 2015-07-22
  • Сайт: 
И каждый раз перебирать строку в цикле, чтобы сделать +1 или -1?
Meh...
Consider this:
Процедура КнопкаВыполнитьНажатие(Кнопка)
РасчитатьСуммуСтрок();
КонецПроцедуры


Процедура ПриОткрытии()
ИмитацияЗаполнения();
РасчитатьСуммуСтрок();
КонецПроцедуры

Процедура ИмитацияЗаполнения()
СтрокаТЧ = ТабличнаяЧасть1.Добавить();
СтрокаТЧ.Бул1 = Истина;
СтрокаТЧ.Бул2 = Истина;

СтрокаТЧ = ТабличнаяЧасть1.Добавить();
СтрокаТЧ.Бул2 = Истина;

СтрокаТЧ = ТабличнаяЧасть1.Добавить();
СтрокаТЧ.Бул1 = Истина;
СтрокаТЧ.Бул3 = Истина;

СтрокаТЧ = ТабличнаяЧасть1.Добавить();
СтрокаТЧ.Бул1 = Истина;
СтрокаТЧ.Бул2 = Истина;
СтрокаТЧ.Бул3 = Истина;

СтрокаТЧ = ТабличнаяЧасть1.Добавить();

СтрокаТЧ = ТабличнаяЧасть1.Добавить();
СтрокаТЧ.Бул1 = Истина;
КонецПроцедуры

Процедура РасчитатьСуммуСтрок()
ТЧ = ТабличнаяЧасть1.ВыгрузитьКолонки();
МассивКолонок = Новый Массив;
ОписаниеКолонки = Новый Массив;
ОписаниеКолонки.Добавить(Тип("Булево"));
ТипБулево = Новый ОписаниеТипов(ОписаниеКолонки);
Для Каждого Колонка ИЗ ТЧ.Колонки Цикл
Если Колонка.ТипЗначения = ТипБулево Тогда
МассивКолонок.Добавить(Колонка.Имя);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаТЧ ИЗ ТабличнаяЧасть1 Цикл
СтрокаТЧ.Итог = 0;
Для Каждого ИмяКолонки ИЗ МассивКолонок Цикл
СтрокаТЧ.Итог = СтрокаТЧ.Итог + ?(СтрокаТЧ[ИмяКолонки], 1, 0);
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Процедура ТабличнаяЧасть1ПриИзмененииФлажка(Элемент, Колонка)
СтрокаТЧ = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
ИмяКолонки = ЭлементыФормы.ТабличнаяЧасть1.ТекущаяКолонка.Имя;
СтрокаТЧ.Итог = СтрокаТЧ.Итог + ?(СтрокаТЧ[ИмяКолонки], 1, -1);
КонецПроцедуры



Оффлайн LexaK

  • *****
  • Сообщений: 1454
  • РЕПУТАЦИЯ: 411
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
не-е-е, так хорошо начали, насчет пустого перебора в цикле всех полей строки
(идея была что при окончании редактировании строки это событие один раз возникнет)
и в друг выкладываете такой код
Процедура ТабличнаяЧасть1ПриИзмененииФлажка(Элемент, Колонка)
    СтрокаТЧ = ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные;
    ИмяКолонки = ЭлементыФормы.ТабличнаяЧасть1.ТекущаяКолонка.Имя;
    СтрокаТЧ.Итог = СтрокаТЧ.Итог + ?(СтрокаТЧ[ИмяКолонки], 1, -1);
КонецПроцедуры

нет уж, экономить, так экономить, такой код тоже работает :xfbnsdfb: (вообще одна команда осталась)
Процедура ТабличнаяЧасть1ПриИзмененииФлажка(Элемент, Колонка)
Элемент.ТекущиеДанные.Итог = Элемент.ТекущиеДанные.Итог + ?(Элемент.ТекущиеДанные[Колонка.Имя],1,-1);
КонецПроцедуры


Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн AIFrame

  • *****
  • Сообщений: 1136
  • РЕПУТАЦИЯ: 139
  • КПД: 12%
  • Регистрация: 2015-07-22
  • Сайт: 
LexaK,
1 + 1 + 1 = 3
3 = 3
Все равно не то. Итог в данном случае не должен являться реквизитом ТЧ, а высчитываться при получении данных из ОформленияСтроки.
Добавлено: 13 Авг 2018, 18:27

вообще одна команда осталась
А при открытии как считать будешь?

Оффлайн LexaK

  • *****
  • Сообщений: 1454
  • РЕПУТАЦИЯ: 411
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
э-э-э, вообще речь шла про ТЧ документа, колонка Итог в составе ТЧ, соответственно что при записи рассчитали, то при открытии и получили (при открытии ни чего пересчитывать не надо),
при добавлении новой строки Итог всегда = 0, как и все булевые поля = Ложь

если же документ в какой-то обработке изменяется, поменяли колонки булево без пересчета Итога, это на совести этой обработки т.е. того программиста будет)
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн AIFrame

  • *****
  • Сообщений: 1136
  • РЕПУТАЦИЯ: 139
  • КПД: 12%
  • Регистрация: 2015-07-22
  • Сайт: 
LexaK,
Без экспортного метода пересчета объекта - будет плохая разработка.


Теги:
 

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

Автор acces969Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 577
Последний ответ 26 Июн 2017, 14:32
от AsadRoman
Что быстрее: Загрузить табличную часть в запрос и там добавить колонки, или пробежаться циклом по ТЧ и добавить значения в колонки

Автор ZeedРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1385
Последний ответ 11 Июл 2016, 09:00
от vitasw
Как сложить значения Столбца "Объем"

Автор anton.kislovРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 19
Просмотров: 16213
Последний ответ 04 Май 2017, 10:48
от ospov11789
Ошибка "Итератор для значения не определён"

Автор КараулРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1218
Последний ответ 17 Авг 2016, 11:25
от Караул
Нужна помощь в формировании отчета "Преобразование значения к типу Дата не может быть выполнено"

Автор STLuka1337Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2639
Последний ответ 14 Ноя 2014, 13:24
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

AIFrame AIFrame
86 Сообщений
alexandr_ll
64 Сообщений
MuI_I_Ika MuI_I_Ika
53 Сообщений
LexaK
40 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
38 Сообщений
wise wise
37 Сообщений
byte777
34 Сообщений
alex0402
28 Сообщений
АлександрВладимирович
23 Сообщений
BuhRust
21 Сообщений

* Кто онлайн

  • Точка Гостей: 109
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal